<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
            <title>王小木人个人技术文章记录</title>
            <link>https://www.wxmblog.com</link>
                <description>这是很长，很好的一生</description>
        <generator>Halo 1.5.3</generator>
        <lastBuildDate>Mon, 23 Mar 2026 10:45:35 CST</lastBuildDate>
                <item>
                    <title>
                        <![CDATA[java 读取本地文件内容]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/java-du-qu-ben-de-wen-jian-nei-rong</link>
                    <description>
                            <![CDATA[<pre><code class="language-">String data = StreamUtils.copyToString(new FileInputStream(&quot;/home/sc/桌面/entimport.csv&quot;), StandardCharsets.UTF_8);        String[] split = data.split(&quot;\n&quot;);        System.out.println(split.length);        StringBuilder sb = new StringBuilder();        String date = DateUtils.toStr(new Date(), &quot;yyyy-MM-dd HH:mm:ss&quot;);        for (String item : split) {            String[] split1 = item.split(&quot;,&quot;);            ///System.out.println(&quot;:&quot; + split1[5] + &quot; &quot; + getStringU(split1[5]));            //sb.append(&quot;INSERT INTO public.tb_user_related_company (user_id, nsrsbh, qymc, is_bund, created_ts, last_modified_ts, city_code, area_code, \&quot;location\&quot;, legal_name, legal_phone, legal_id, company_four_status, legal_three_status, province_code, scf_province, scf_city, scf_district, scf_platform, authority, certify_type, additional, approval_id, approval_status, remark, approval_ts, revenue, subject, park, department) VALUES((select tu.id from tb_user tu where tu.phone=&#39;&quot; + getStringU(split1[7]) + &quot;&#39;), &#39;&quot; + getStringU(split1[3]) + &quot;&#39;, &#39;&quot; + getStringU(split1[2]) + &quot;&#39;, true, &#39;&quot; + date + &quot;&#39;, &#39;&quot; + date + &quot;&#39;, &#39;500118&#39;, null, &#39;&quot; + getStringU(split1[8]) + &quot;&#39;, &#39;&quot; + getStringU(split1[4]) + &quot;&#39;, &#39;&quot; + ScAESUtil.encrypt(getStringU(split1[6])) + &quot;&#39;, &#39;&quot; + ScAESUtil.encrypt(getStringU(split1[5])) + &quot;&#39;, true, true, &#39;500000&#39;, &#39;500000&#39;, &#39;0&#39;, &#39;0&#39;, &#39;1001&#39;, NULL, &#39;FR&#39;, &#39;{}&#39;::jsonb::jsonb, NULL, &#39;PASSED&#39;, NULL, &#39;&quot; + date + &quot;&#39;, NULL, &#39;QY&#39;, NULL, NULL)&quot;).append(&quot;;\n&quot;);            sb.append(&quot;INSERT INTO public.tb_user (created_ts, last_modified_ts, \&quot;name\&quot;, phone, \&quot;password\&quot;, email, logo, role_id, organization_id, creator_id, editor_id, user_status, push_phone, city, district, \&quot;type\&quot;, tax_number, level_id, depart_id, qrcode_url, service_area, develop_user_id, creator_department_id, region_list, auth_status, company_name, is_test, xnw_uuid, \&quot;source\&quot;, user_no, mark_img, recommendation_code, scf_province, scf_city, scf_district, scf_platform, login_time, sex, birthday, background_url, area_code, detail_addr, person_lables, person_introduce, contract_phone, login_name) VALUES(now(), now(), &#39;&quot;+getStringU(split1[3])+&quot;&#39;, &#39;&quot;+getStringU(split1[3])+&quot;&#39;, &#39;&quot;+securityService.generateHashAndSalt(PasswordUtils.generateDefaultPassword(getStringU(split1[3])))+&quot;&#39;, &#39;&#39;, NULL, 4, NULL, NULL, NULL, &#39;ACTIVE&#39;, NULL, NULL, NULL, &#39;PHONE&#39;, NULL, NULL, NULL, NULL, &#39;{}&#39;, NULL, NULL, &#39;{}&#39;, &#39;UNAUTHORIZED&#39;, NULL, false, NULL, &#39;PC&#39;, NULL, NULL, NULL, &#39;500000&#39;, &#39;0&#39;, &#39;0&#39;, &#39;1001&#39;, now(), NULL, NULL, NULL, NULL, NULL, &#39;{}&#39;, NULL, NULL, &#39;&quot;+getStringU(split1[3])+&quot;&#39;)&quot;).append(&quot;;\n&quot;);        }        StreamUtils.copy(sb.toString().getBytes(), new FileOutputStream(&quot;/home/sc/桌面/entimport.sql&quot;));        System.out.println(&quot;完成&quot;);</code></pre>]]>
                    </description>
                    <pubDate>Sun, 09 Feb 2025 16:30:58 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[仿青藤之恋社交交友软件 即时通讯 聊天 微信小程序 App H5三端通用]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/fang-qing-teng-zhi-lian-she-jiao-jiao-you-ruan-jian-wei-xin-xiao-cheng-xu-apph5-san-duan-tong-yong</link>
                    <description>
                            <![CDATA[<h1 id="%E7%AE%80%E4%BB%8B" tabindex="-1">简介</h1><p>《欧几里》是一款一比一模仿《青藤之恋》的社交交友软件开源项目，主打高学历优质人群交友，功能上基本还原青藤之恋，以双向喜欢后解锁聊天，目前适配微信小程序，手机App，H5，三端通用，功能完整，盈利模式完善，高度配置化，功能模块化，高内聚，低耦合，一天快速上线，已对接支付接口，只需要简单的修改配置文件中相关信息，即可实现快速部署上线，减少开发的时间成本，金钱成本，技术成本，将更多的精力放在产品运营上。</p><h1 id="%E6%BC%94%E7%A4%BA%E5%9C%B0%E5%9D%80" tabindex="-1">演示地址</h1><h2 id="%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AB%AF%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%BC%94%E7%A4%BA" tabindex="-1">小程序端小程序演示</h2><p>微信扫描下方小程序码体验<br><br /><img src="https://www.wxmblog.com/upload/2024/11/gh_01e98cf10e5a_430.jpg" alt="gh_01e98cf10e5a_430" /></p><h2 id="h5%E6%BC%94%E7%A4%BA%E5%9C%B0%E5%9D%80" tabindex="-1">H5演示地址</h2><p><a href="http://oujili.crget.com" target="_blank">http://oujili.crget.com</a></p><h2 id="%E5%AE%89%E5%8D%93apk" tabindex="-1">安卓APK</h2><p>下载地址：<br /><a href="https://file.crget.com/oujiliapp.apk" target="_blank">https://file.crget.com/oujiliapp.apk</a></p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E6%BC%94%E7%A4%BA%E5%9C%B0%E5%9D%80" tabindex="-1">后台管理演示地址</h2><p><a href="https://oujiliadmin.crget.com" target="_blank">https://oujiliadmin.crget.com</a><br><br />账号：demo<br><br />密码：123456</p><h1 id="%E5%90%88%E4%BD%9C%E6%B4%BD%E8%B0%88" tabindex="-1">合作洽谈</h1><p>专业后端，资深UI，前端，运维，产品，测试，项目管理俱全，项目经验丰富，如果你有软件开发需求可与我联系，微信：MMRWXM（请注明来意）</p><h1 id="%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80" tabindex="-1">项目地址</h1><h2 id="github" tabindex="-1">github</h2><p><a href="https://github.com/378526425/oujili" target="_blank">https://github.com/378526425/oujili</a></p><h2 id="gitee" tabindex="-1">gitee</h2><p><a href="https://gitee.com/chuangchaokeji/oujili" target="_blank">https://gitee.com/chuangchaokeji/oujili</a></p><h1 id="%E5%85%B3%E4%BA%8E%E6%8E%88%E6%9D%83" tabindex="-1">关于授权</h1><p>✅允许</p><ul><li>允许用于个人学习、毕业设计、教学案例、公益事业、商业使用（商用建议使用旗舰版）</li><li>禁止将本项目的部分或全部代码以及基于此项目二次开发后的产品和资源进行任何形式的开源再发行（尤其上传GitHub,Gitee,插件市场等互联网公开场所）</li><li>禁止将本项目的代码和资源以及基于此项目二次开发后的产品和资源进行任何形式的二次出售，产生的一切任何后果责任由侵权者自负</li><li>推荐Watch、Star项目，获取项目第一时间更新，同时也是对项目最好的支持 <br></li></ul><h1 id="%E9%A1%B9%E7%9B%AE%E6%B8%85%E5%8D%95" tabindex="-1">项目清单</h1><p>完整项目清单包含如下<br><br />1 客户端(uni-client)<br><br />2 服务端(oujili-server)<br><br />3 后台管理端(oujili-manage)<br></p><h1 id="%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84" tabindex="-1">项目结构</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF" tabindex="-1">客户端</h2><pre><code class="language-">platform|--api api接口请求|--components 公共组件|--pages tab页面|--request restful接口请求封装|--static 静态资源|--subpackages 分包页面|--uni_modules 引用组件包|--utils 工具包|--......</code></pre><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF" tabindex="-1">服务端</h2><pre><code class="language-">platform|--authority 权限认证|--common 公共工具类|--controller 控制层|--dao 数据访问层 |--entity 实体类|--schedules 定时器|--service 业务层|--......</code></pre><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF" tabindex="-1">后台管理端</h2><pre><code class="language-">platform|--mock 公共相关js|--public 静态资源|--src 核心业务|--......</code></pre><h1 id="%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84" tabindex="-1">技术架构</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF-1" tabindex="-1">客户端</h2><p>开发框架 uniapp<br><br />客户端使用uniapp开发，一次开发可垮三端平台，目前支持发布到微信小程序,手机APP（安卓和IOS）,H5端等。</p><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-1" tabindex="-1">服务端</h2><p>开发语言： java<br><br />开发框架： springboot,spring cloud alibaba 两种版本，设计时按微服务设计开发，鉴于微服务的复杂性，为降低维护成本，改造了一个单体springboot版本，功能完全一样，可根据自己需求选择合适的版本<br><br />数据库：mysql<br><br />中间件：redis,nginx<br><br />文件存储:  minio<br><br />支付：微信支付<br><br />其他第三方sdk:高德定位，腾讯定位</p><h2 id="%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AFim" tabindex="-1">即时通讯IM</h2><p>项目中聊天im未使用第三方插件，由自己实现，减少预算成本和依赖，im系统通过netty+websocket+redis 实现，理论上单体可同时超过百万人数在线，可集群部署，连接稳定，消息通过心跳和应答机制，保证每条消息可达性，即时通讯系统已历经多个其他项目生产检验和迭代，已具备商用的稳定和条件。</p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-1" tabindex="-1">后台管理端</h2><p>开发框架： vue</p><h1 id="%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97" tabindex="-1">功能模块</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF-2" tabindex="-1">客户端</h2><ul><li>用户资料推荐</li><li>用户匹配</li><li>在线聊天IM</li><li>个人中心</li><li>好友列表</li><li>社区朋友圈</li><li>好友动态列表</li><li>评论点赞互动</li><li>消息通知</li><li>我喜欢和喜欢我列表</li><li>学历认证</li><li>实名认证</li><li>修改个人资料</li><li>金币充值</li><li>微信好友 朋友圈分享</li><li>注销账户</li><li>注册</li><li>…</li></ul><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-2" tabindex="-1">后台管理端</h2><ul><li>资料审核</li><li>学历审核</li><li>实名审核</li><li>前台用户管理</li><li>用户统计</li><li>…</li></ul><h1 id="%E9%A1%B5%E9%9D%A2%E5%B1%95%E7%A4%BA" tabindex="-1">页面展示</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF-3" tabindex="-1">客户端</h2><p><img src="https://www.wxmblog.com/upload/2025/08/image.png" alt="image" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704095985738.png" alt="image-1704095985738" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1720543710239.png" alt="image-1720543710239" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1720543768089.png" alt="image-1720543768089" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096286155.png" alt="image-1704096286155" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096379510.png" alt="image-1704096379510" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096488039.png" alt="image-1704096488039" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096557001.png" alt="image-1704096557001" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096901008.png" alt="image-1704096901008" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096851604.png" alt="image-1704096851604" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704096994556.png" alt="image-1704096994556" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704097048206.png" alt="image-1704097048206" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704097967350.png" alt="image-1704097967350" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1720543671736.png" alt="image-1720543671736" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704097243586.png" alt="image-1704097243586" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1704097666584.png" alt="image-1704097666584" /></p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-3" tabindex="-1">后台管理端</h2><p><img src="https://www.wxmblog.com/upload/2025/08/image-1703080008972.png" alt="image-1703080008972" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1703080026969.png" alt="image-1703080026969" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1703080054976.png" alt="image-1703080054976" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1703080104100.png" alt="image-1703080104100" /></p><p><img src="https://www.wxmblog.com/upload/2025/08/image-1703080089429.png" alt="image-1703080089429" /></p><h1 id="%E8%BD%AF%E8%91%97" tabindex="-1">软著</h1><p><img src="https://www.wxmblog.com/upload/2025/08/ruazhu3.jpg" alt="ruazhu3" /></p><h1 id="%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC" tabindex="-1">联系我们</h1><h2 id="%E4%BD%9C%E8%80%85%E5%BE%AE%E4%BF%A1" tabindex="-1">作者微信</h2><p>MMRWXM</p><h2 id="qq%E4%BA%A4%E6%B5%81%E7%BE%A4" tabindex="-1">QQ交流群</h2><p>546414613</p><h1 id="%E5%85%B6%E4%BB%96%E4%BC%98%E7%A7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90" tabindex="-1">其他优秀开源项目推荐</h1><p><a href="https://www.wxmblog.com/categories/open" target="_blank">https://www.wxmblog.com/categories/open</a></p>]]>
                    </description>
                    <pubDate>Wed, 20 Dec 2023 19:32:39 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[视频匹配交友社交APP]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/shi-pin-pi-pei-jiao-you-she-jiao-app</link>
                    <description>
                            <![CDATA[<h1 id="%E7%AE%80%E4%BB%8B" tabindex="-1">简介</h1><p>谈笑视频匹配app,一款以陌生人视频匹配为主的交友app,帮助用户匹配合适的人，主要有视频匹配 视频聊天 社交 交友软件等功能</p><h1 id="%E5%8E%9F%E6%96%87%E5%9C%B0%E5%9D%80" tabindex="-1">原文地址</h1><p><a href="https://www.wxmblog.com/archives/shi-pin-pi-pei-jiao-you-she-jiao-app" target="_blank">https://www.wxmblog.com/archives/shi-pin-pi-pei-jiao-you-she-jiao-app</a></p><h1 id="%E6%BC%94%E7%A4%BA%E5%9C%B0%E5%9D%80" tabindex="-1">演示地址</h1><h2 id="%E5%AE%89%E5%8D%93apk" tabindex="-1">安卓APK</h2><p>下载地址：<br><br /><a href="https://www.wxmblog.com/devminio/tanxiao/2023/11/23/f6c5d4f9-4951-47f2-a274-b7abefc1e1eb.apk" target="_blank">https://www.wxmblog.com/devminio/tanxiao/2023/11/23/f6c5d4f9-4951-47f2-a274-b7abefc1e1eb.apk</a> <br><br />测试账号：<br><br />用户名：15902393423 <br><br />密码：123456</p><h1 id="%E5%90%88%E4%BD%9C%E6%B4%BD%E8%B0%88" tabindex="-1">合作洽谈</h1><p>专业后端，资深UI，前端，运维，产品，测试，项目管理俱全，项目经验丰富，如果你有软件开发需求可与我联系，微信：MMRWXM（请注明来意）</p><h1 id="%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80" tabindex="-1">项目地址</h1><h2 id="github" tabindex="-1">github</h2><p><a href="https://github.com/378526425/tanxiao" target="_blank">https://github.com/378526425/tanxiao</a></p><h2 id="gitee" tabindex="-1">gitee</h2><p><a href="https://gitee.com/wxmr0/tanxiao" target="_blank">https://gitee.com/wxmr0/tanxiao</a></p><h1 id="%E5%85%B3%E4%BA%8E%E6%8E%88%E6%9D%83" tabindex="-1">关于授权</h1><p>✅允许</p><ul><li>允许用于个人学习、毕业设计、教学案例、公益事业、商业使用</li><li>禁止将本项目的代码和资源进行任何形式的出售，产生的一切任何后果责任由侵权者自负</li><li>推荐Watch、Star项目，获取项目第一时间更新，同时也是对项目最好的支持</li></ul><h1 id="%E9%A1%B9%E7%9B%AE%E6%B8%85%E5%8D%95" tabindex="-1">项目清单</h1><p>完整项目清单包含如下<br><br />1 APP端(uni-app)<br><br />2 服务端(tanxiao-server)<br></p><h1 id="%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84" tabindex="-1">项目结构</h1><h2 id="app%E7%AB%AF" tabindex="-1">APP端</h2><pre><code class="language-">platform|--api api接口请求|--components 公共组件|--pages tab页面|--request restful接口请求封装|--static 静态资源|--subpackages 分包页面|--uni_modules 引用组件包|--utils 工具包|--......</code></pre><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF" tabindex="-1">服务端</h2><pre><code class="language-">platform|--authority 权限认证|--common 公共工具类|--controller 控制层|--dao 数据访问层 |--entity 实体类|--schedules 定时器|--service 业务层|--......</code></pre><h1 id="%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84" tabindex="-1">技术架构</h1><h2 id="app%E7%AB%AF-1" tabindex="-1">APP端</h2><p>开发框架 uniapp<br><br />app端使用uniapp开发，一次开发可垮三端平台，目前暂未调试兼容小程序和h5,需要的话可能需要自己修改兼容下。</p><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-1" tabindex="-1">服务端</h2><p>开发语言： java<br><br />开发框架： springboot,spring cloud alibaba 两种版本，设计时按微服务设计开发，鉴于微服务的复杂性，降低维护成本，改造了一个单体springboot版本，功能完全一样<br><br />数据库：mysql redis<br><br />文件存储:  minio<br><br />短信通知：阿里云短信</p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF" tabindex="-1">后台管理端</h2><p>开发框架： vue</p><h1 id="%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97" tabindex="-1">功能模块</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF" tabindex="-1">客户端</h2><ul><li>在线用户浏览</li><li>用户视频匹配</li><li>用户视频聊天</li><li>个人中心</li><li>用户注册</li><li>找回密码</li><li>登录 注销登录</li><li>粉丝，关注列表</li><li>…</li></ul><h1 id="%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B" tabindex="-1">安装教程</h1><ol><li>从git上拉下来，一共包含服务端（tanxiao-server）和客户端(uni-app)两个项目文件</li><li>可直接运行客户端,此时客户端连接的是线上服务接口地址，如需要连接自己的服务端接口则需要本地启动服务端（tanxiao-server），然后修改客户端相关配置，<a href="http://xn--README-9v7il2f4wbi8g82b004d0chliygfjvx6d9na526ivb6h.md" target="_blank">具体修改细则查看对应项目中README.md</a></li></ol><h1 id="%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E" tabindex="-1">使用说明</h1><ol><li>项目演示apk中演示的功能就是目前开发的全部功能了</li><li>项目中涉及的第三方服务有 腾讯云im,阿里云短信需自行开通并修改相应配置</li><li>项目中部分功能还未开发完成，后续功能暂时没有开发计划，需要可自行开发完善，可联系作者索要ui设计图</li></ol><h1 id="%E9%A1%B5%E9%9D%A2%E5%B1%95%E7%A4%BA" tabindex="-1">页面展示</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF-1" tabindex="-1">客户端</h2><p><img src="https://www.wxmblog.com/upload/2023/11/image-1700813209046.png" alt="image-1700813209046" /><br /><img src="https://www.wxmblog.com/upload/2023/11/image-1700813256839.png" alt="image-1700813256839" /><br /><img src="https://www.wxmblog.com/upload/2023/11/image-1700813122639.png" alt="image-1700813122639" /><br /><img src="https://www.wxmblog.com/upload/2023/11/image-1700813332982.png" alt="image-1700813332982" /><br /><img src="https://www.wxmblog.com/upload/2023/11/image-1700814048054.png" alt="image-1700814048054" /><br /><img src="https://www.wxmblog.com/upload/2023/11/image-1700814101289.png" alt="image-1700814101289" /></p><h1 id="%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC" tabindex="-1">联系我们</h1><h2 id="%E4%BD%9C%E8%80%85%E5%BE%AE%E4%BF%A1" tabindex="-1">作者微信</h2><p>MMRWXM</p><h2 id="qq%E4%BA%A4%E6%B5%81%E7%BE%A4" tabindex="-1">QQ交流群</h2><p>665351147</p><h1 id="%E5%85%B6%E4%BB%96%E4%BC%98%E7%A7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90" tabindex="-1">其他优秀开源项目推荐</h1><p><a href="https://www.wxmblog.com/categories/open" target="_blank">https://www.wxmblog.com/categories/open</a></p>]]>
                    </description>
                    <pubDate>Fri, 24 Nov 2023 13:34:57 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[npm install 报错 npm ERR! Connection reset by 20.205.243.166 port 22]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/npminstall-bao-cuo-errcommandgit--no-replace-objectsls-remotesshgitgithubcomnhnraphaelgitconnectionresetby20205243166port22</link>
                    <description>
                            <![CDATA[<p>github 拉下的开源项目，执行 npm install 后报错如下<br /><img src="https://www.wxmblog.com/upload/2023/10/image.png" alt="image" /></p><pre><code class="language-">npm ERR! code 128npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/nhn/raphael.gitnpm ERR! Connection reset by 20.205.243.166 port 22npm ERR! fatal: Could not read from remote repository.npm ERR!npm ERR! Please make sure you have the correct access rightsnpm ERR! and the repository exists.</code></pre><p>按网上方法</p><ol><li>增加淘宝镜像 （失败）</li><li>重新生成ssh密钥，并在github 添加（失败）</li><li>替换git方式为https (失败）<br />最后通过修改ssh下config 文件得到解决<br />文件路径  C:\Users\Administrator.ssh 目录下的 config 文件<br />我的路径下没有这个文件，所以我手动新建了一个，后缀改为.config<br /><img src="https://www.wxmblog.com/upload/2023/10/image-1698646512186.png" alt="image-1698646512186" /><br />添加以下内容</li></ol><pre><code class="language-">Host github.com    User git    ProxyCommand connect -H 127.0.0.1:7890 %h %p</code></pre><p>重新npm install 之后就不会再报这个错误了</p>]]>
                    </description>
                    <pubDate>Mon, 30 Oct 2023 14:17:02 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[美容行业门店服务预约小程序]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/mei-rong-xing-ye-men-dian-fu-wu-yu-yue-xiao-cheng-xu</link>
                    <description>
                            <![CDATA[<h1 id="%E7%AE%80%E4%BB%8B" tabindex="-1">简介</h1><p>美容行业门店服务预约小程序，适用于线下个体户，有自己的品牌或者门店的商家，店主，做美容，美发，医美，按摩等服务性质行业的在线预约，管理，可实现客户在线查看，服务预约，到期提醒，商家在线管理服务项目，服务订单 ，处理服务 ，通知客户等，增强门店品牌效应，展示产品，提高服务产品营销传播途径，给客户带来信任感,降低销售阻力。</p><h1 id="%E5%90%88%E4%BD%9C%E6%B4%BD%E8%B0%88" tabindex="-1">合作洽谈</h1><p>专业后端，资深UI，前端，运维，产品，测试，项目管理俱全，项目经验丰富，如果你有软件开发需求可与我联系，微信：MMRWXM（请注明来意）</p><h1 id="%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80" tabindex="-1">项目地址</h1><h2 id="github" tabindex="-1">github</h2><p><a href="https://github.com/378526425/reservatioclient" target="_blank">https://github.com/378526425/reservatioclient</a></p><h2 id="gitee" tabindex="-1">gitee</h2><p><a href="https://gitee.com/chuangchaokeji/reservationapp" target="_blank">https://gitee.com/chuangchaokeji/reservationapp</a></p><h1 id="%E5%85%B3%E4%BA%8E%E6%8E%88%E6%9D%83" tabindex="-1">关于授权</h1><p>✅允许</p><ul><li>允许用于个人学习、毕业设计、教学案例、公益事业、商业使用</li><li>如果商用必须保留版权信息，即保留客户端个人中心-技术支持页面（作者信息），如需要删除该页，需联系作者取得作者授权，请自觉遵守使用协议</li><li>禁止将本项目的部分或全部代码以及基于此项目二次开发后的产品和资源进行任何形式的开源再发行（尤其上传GitHub,Gitee,插件市场等互联网公开场所）</li><li>禁止将本项目的代码和资源以及基于此项目二次开发后的产品和资源进行任何形式的出售，产生的一切任何后果责任由侵权者自负</li><li>推荐Watch、Star项目，获取项目第一时间更新，同时也是对项目最好的支持 <br></li></ul><h1 id="%E9%A1%B9%E7%9B%AE%E6%B8%85%E5%8D%95" tabindex="-1">项目清单</h1><p>完整项目清单包含如下<br><br />1 小程序端(uni-client)<br><br />2 服务端(reservation-server)<br><br />3 后台管理端(manage)<br></p><h1 id="%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84" tabindex="-1">项目结构</h1><h2 id="%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AB%AF" tabindex="-1">小程序端</h2><pre><code class="language-">platform|--api api接口请求|--components 公共组件|--pages tab页面|--request restful接口请求封装|--static 静态资源|--subpackages 分包页面|--uni_modules 引用组件包|--utils 工具包|--......</code></pre><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF" tabindex="-1">服务端</h2><pre><code class="language-">platform|--authority 权限认证|--common 公共工具类|--controller 控制层|--dao 数据访问层 |--entity 实体类|--schedules 定时器|--service 业务层|--......</code></pre><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF" tabindex="-1">后台管理端</h2><pre><code class="language-">platform|--mock 公共相关js|--public 静态资源|--src 核心业务|--......</code></pre><h1 id="%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84" tabindex="-1">技术架构</h1><h2 id="%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AB%AF-1" tabindex="-1">小程序端</h2><p>开发框架 uniapp<br><br />小程序端使用uniapp开发，一次开发可垮三端平台，支持发布到微信等小程序平台，H5,app端。</p><h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-1" tabindex="-1">服务端</h2><p>开发语言： java<br><br />开发框架： springboot,spring cloud alibaba 两种版本，设计时按微服务设计开发，鉴于微服务的复杂性，降低维护成本，改造了一个单体springboot版本，功能完全一样<br><br />数据库：mysql redis<br><br />文件存储:  minio<br><br />短信通知：阿里云短信</p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-1" tabindex="-1">后台管理端</h2><p>开发框架： vue</p><h1 id="%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97" tabindex="-1">功能模块</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF" tabindex="-1">客户端</h2><ul><li>服务项目浏览</li><li>服务项目预约</li><li>服务即将到期微信内 短信提醒</li><li>修改个人头像昵称</li><li>个人中心</li><li>服务订单列表，待服务，已服务，已过期等</li><li>取消服务</li><li>登录 注销登录</li><li>微信好友 朋友圈分享</li><li>…</li></ul><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-2" tabindex="-1">后台管理端</h2><ul><li>人员管理</li><li>分类管理</li><li>产品管理</li><li>订单管理</li><li>…</li></ul><h1 id="%E9%A1%B5%E9%9D%A2%E5%B1%95%E7%A4%BA" tabindex="-1">页面展示</h1><h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF-1" tabindex="-1">客户端</h2><p><img src="https://www.wxmblog.com/upload/2023/09/Snipaste_2023-09-28_15-29-50.png" alt="Snipaste_2023-09-28_15-29-50" /><br /><img src="https://www.wxmblog.com/upload/2023/09/Snipaste_2023-09-28_15-31-53.png" alt="Snipaste_2023-09-28_15-31-53" /><br /><img src="https://www.wxmblog.com/upload/2023/09/4-1695822647320.PNG" alt="4-1695822647320" /><br /><img src="https://www.wxmblog.com/upload/2023/09/5-1695822647224.PNG" alt="5-1695822647224" /><br /><img src="https://www.wxmblog.com/upload/2023/09/6-1695822647326.PNG" alt="6-1695822647326" /></p><h2 id="%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%AB%AF-3" tabindex="-1">后台管理端</h2><p><img src="https://www.wxmblog.com/upload/2023/09/1.PNG" alt="1" /><br /><img src="https://www.wxmblog.com/upload/2023/09/2.PNG" alt="2" /><br /><img src="https://www.wxmblog.com/upload/2023/09/3.PNG" alt="3" /><br /><img src="https://www.wxmblog.com/upload/2023/09/5.PNG" alt="5" /><br /><img src="https://www.wxmblog.com/upload/2023/09/3.png" alt="3" /><br /><img src="https://www.wxmblog.com/upload/2023/09/2.png" alt="2" /><br /><img src="https://www.wxmblog.com/upload/2023/09/1.png" alt="1" /><br /><img src="https://www.wxmblog.com/upload/2023/09/6.PNG" alt="6" /><br /><img src="https://www.wxmblog.com/upload/2023/09/4.PNG" alt="4" /><br /><img src="https://www.wxmblog.com/upload/2023/09/10.PNG" alt="10" /></p><h1 id="%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC" tabindex="-1">联系我们</h1><h2 id="%E4%BD%9C%E8%80%85%E5%BE%AE%E4%BF%A1" tabindex="-1">作者微信</h2><p>MMRWXM</p><h2 id="qq%E4%BA%A4%E6%B5%81%E7%BE%A4" tabindex="-1">QQ交流群</h2><p>651724227</p><h1 id="%E5%85%B6%E4%BB%96%E4%BC%98%E7%A7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90" tabindex="-1">其他优秀开源项目推荐</h1><p><a href="https://www.wxmblog.com/categories/open" target="_blank">https://www.wxmblog.com/categories/open</a></p>]]>
                    </description>
                    <pubDate>Mon, 25 Sep 2023 16:16:24 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[Docker 安装最新版 redis 并启用远程连接设置密码]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/docker-an-zhuang-zui-xin-ban-redis-bing-qi-yong-yuan-cheng-lian-jie-she-zhi-mi-ma</link>
                    <description>
                            <![CDATA[<h1 id="%E4%B8%80-%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6" tabindex="-1">一 前置条件</h1><p>已经安装好docker了</p><h1 id="%E4%BA%8C-%E5%88%9B%E5%BB%BA%E6%98%A0%E5%B0%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%B9%E5%92%8C%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6" tabindex="-1">二 创建映射数据文件夹和配置文件</h1><h2 id="%E5%88%9B%E5%BB%BA%E6%98%A0%E5%B0%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%B9" tabindex="-1">创建映射数据文件夹</h2><pre><code class="language-">mkdir -p /redis/data   # 数据文件</code></pre><h2 id="%E5%88%9B%E5%BB%BA%E6%98%A0%E5%B0%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6" tabindex="-1">创建映射配置文件</h2><pre><code class="language-">vim /redis/redis.conf   # 配置文件</code></pre><h2 id="%E7%BC%96%E8%BE%91%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6redis.conf" tabindex="-1">编辑配置文件redis.conf</h2><p>编辑配置文件redis.conf，加入如下内容（可在官网下载对应版本，此处仅把官网文件注释删除了，如果使用官网配置文件，请务必修改下述前四行对应配置）</p><pre><code class="language-">bind 0.0.0.0  # 改成0.0.0.0，使redis可以外部访问daemonize no  # 用守护线程的方式启动requirepass 123456  # 给redis设置密码appendonly yes  # redis持久化，默认是noprotected-mode noport 6379tcp-backlog 511timeout 0tcp-keepalive 300pidfile /var/run/redis_6379.pidloglevel noticelogfile &quot;&quot;databases 16always-show-logo noset-proc-title yesproc-title-template &quot;{title} {listen-addr} {server-mode}&quot;stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbrdb-del-sync-files nodir ./replica-serve-stale-data yesreplica-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-diskless-load disabledrepl-disable-tcp-nodelay noreplica-priority 100acllog-max-len 128lazyfree-lazy-eviction nolazyfree-lazy-expire nolazyfree-lazy-server-del noreplica-lazy-flush nolazyfree-lazy-user-del nolazyfree-lazy-user-flush nooom-score-adj nooom-score-adj-values 0 200 800disable-thp yesappendfilename &quot;appendonly.aof&quot;appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yesaof-use-rdb-preamble yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events &quot;&quot;hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000stream-node-max-bytes 4096stream-node-max-entries 100activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit replica 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60hz 10dynamic-hz yesaof-rewrite-incremental-fsync yesrdb-save-incremental-fsync yesjemalloc-bg-thread yes</code></pre><h1 id="%E4%B8%89-%E5%90%AF%E5%8A%A8redis%E5%AE%9E%E4%BE%8B" tabindex="-1">三 启动redis实例</h1><pre><code class="language-">docker run -d --name redis --restart=always -p 6379:6379 -v /redis/redis.conf:/etc/redis/redis.conf -v /redis/data:/data redis redis-server /etc/redis/redis.conf  --appendonly yes </code></pre><p>命令解释</p><pre><code class="language-">命令含义:-p 6379:6379 端口映射：前表示主机部分，：后表示容器部分。--restart=always 开机自启动–name redis 指定该容器名称，查看和进行操作都比较方便。-v 挂载文件或目录 ：前表示主机部分（必须为绝对路径），：后表示容器部分。</code></pre>]]>
                    </description>
                    <pubDate>Thu, 21 Sep 2023 15:57:53 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[Docker安装最新版MySQL 并配置大小写忽略 并允许远程访问]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/docker-an-zhuang-zui-xin-ban-mysql-bing-pei-zhi-da-xiao-xie-hu-lve-bing-yun-xu-yuan-cheng-fang-wen</link>
                    <description>
                            <![CDATA[<h1 id="%E4%B8%80-%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6" tabindex="-1">一 前置条件</h1><p>已经安装好docker了</p><h1 id="%E4%BA%8C-%E5%BC%80%E5%A7%8B%E5%AE%89%E8%A3%85" tabindex="-1">二 开始安装</h1><pre><code class="language-">sudo docker run  -d  \--name mysql \--privileged=true \--restart=always \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=123456 \-e TZ=Asia/Shanghai mysql \--lower_case_table_names=1</code></pre><h2 id="%E8%AF%B4%E6%98%8E" tabindex="-1">说明</h2><p>检测没有最新版镜像后会自动拉取最新版mysql</p><pre><code class="language-">--name mysql：给容器命名--privileged=true：使用该参数，container内的root拥有真正的root权限。--restart=always：开机自启动-p 3306:3306：端口映射，第一个 3306 是映射出去的端口，第二个 3306 是这个容器的端口-e MYSQL_ROOT_PASSWORD=123456：环境变量设置，此处是设置 ROOT 用户登录密码-e TZ=Asia/Shanghai mysql：此处是设置 MySQL 的时区，请注意这点，有时候你可能会发现你的服务器时区和你当前的电脑的时区是不一样的，这很有可能有一些隐藏问题噢。此处的 mysql为镜像名。--lower_case_table_names=1：让表名忽略大小写，注意只有在初始化的时候设置 lower_case_table_names=1 才有效</code></pre><h1 id="%E4%B8%89-%E5%85%81%E8%AE%B8%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5" tabindex="-1">三 允许远程连接</h1><pre><code class="language-">#进入容器 docker exec -it mysql bash #登录mysqlmysql -u root -p123456 #设置mysql远程权限ALTER USER &#39;root&#39;@&#39;%&#39; IDENTIFIED WITH mysql_native_password BY &#39;123456&#39;; #刷新权限flush privileges;</code></pre>]]>
                    </description>
                    <pubDate>Thu, 21 Sep 2023 14:49:52 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[centos 安装 docker ]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/centos-an-zhuang-docker</link>
                    <description>
                            <![CDATA[<h1 id="%E4%B8%80-%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6" tabindex="-1">一 前置条件</h1><p>安装 Docker 之前，需要先准备 CentOS 环境<br />目前支持 CentOS 7, CentOS 8(stream) 和 CentOS 9(stream)</p><h1 id="%E4%BA%8C-%E5%8D%B8%E8%BD%BD-docker-%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%EF%BC%88%E9%A6%96%E6%AC%A1%E5%AE%89%E8%A3%85%E8%B7%B3%E8%BF%87%E6%AD%A4%E6%AD%A5%EF%BC%89" tabindex="-1">二 卸载 Docker 历史版本（首次安装跳过此步）</h1><pre><code class="language-">sudo yum remove docker \    docker-client \    docker-client-latest \    docker-common \    docker-latest \    docker-latest-logrotate \    docker-logrotate \    docker-engine</code></pre><p>执行结果如下，表示之前没有安装过 Docker</p><pre><code class="language-">No Packages marked for removal</code></pre><h1 id="%E4%B8%89-%E5%AE%89%E8%A3%85docker" tabindex="-1">三 安装Docker</h1><p>安装方式<br />Docker 官网提供了 3 种安装方式</p><p>1,通过远程仓库安装 - 最常用<br />2,下载RPM包后手动安装 - 适用于某些无法联网的环境<br />3,通过快捷脚本安装 - 测试或者开发环境<br />本文采用第一种安装方式</p><p>在一台机器上首次安装 Docker 前，还需要安装yum工具，如果已经安装过yum则跳过此步，后续安装其他所有软件也需要</p><pre><code class="language-">sudo yum install -y yum-utils</code></pre><p>配置镜像仓库</p><p>如果国外镜像下载速度慢，可以考虑阿里云镜像加速器<br />本次使用Docker官方仓库</p><pre><code class="language-">sudo yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo</code></pre><p>开始安装</p><pre><code class="language-">sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin</code></pre><p>安装过程中，有 2 处停顿，询问是否继续，直接输入 y 确认即可</p><pre><code class="language-">Is this ok [y/d/N]: yIs this ok [y/N]: y</code></pre><p>安装完成后，使用 docker -v 查看当前版本  检查是否安装成功<br /><img src="https://www.wxmblog.com/upload/2023/09/image.png" alt="image" /></p><h1 id="%E5%9B%9B-%E5%90%AF%E5%8A%A8docker" tabindex="-1">四 启动Docker</h1><pre><code class="language-"># 启动Dockersudo systemctl start docker# 设置开机启动Dockersudo systemctl enable docker</code></pre><p>至此安装结束</p><h1 id="%E4%BA%94-%E5%8D%B8%E8%BD%BDdocker" tabindex="-1">五 卸载Docker</h1><p>卸载Docker核心组件</p><pre><code class="language-">sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin</code></pre><p>清理Docker相关资源</p><pre><code class="language-">sudo rm -rf /var/lib/dockersudo rm -rf /var/lib/containerd</code></pre><h1 id="%E5%85%AD-docker-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4" tabindex="-1">六 docker 常用命令</h1><pre><code class="language-">docker run [image_name]: 运行一个容器docker ps  列出所有正在运行的容器docker ps -a  列出所有的容器docker images 列出本地所有的镜像docker pull [image_name] 从仓库下载一个镜像docker stop [container_id] 停止一个正在运行的容器docker rm [container_id] 删除一个容器docker rmi [image_id] 删除一个镜像</code></pre>]]>
                    </description>
                    <pubDate>Thu, 21 Sep 2023 11:26:02 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[pg sql 查询字段保留两位小数]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/pgsql-cha-xun-zi-duan-bao-liu-liang-wei-xiao-shu</link>
                    <description>
                            <![CDATA[<pre><code class="language-">round(tp.min_interest_rate::numeric,2)</code></pre>]]>
                    </description>
                    <pubDate>Thu, 20 Jul 2023 11:18:20 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[pg 数据库将字段按,分割后 和列比较 查看是否包含在数组中 并把多行合并成一行]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/pg-shu-ju-ku-jiang-zi-duan-an--fen-ge-hou-he-lie-bi-jiao-cha-kan-shi-fou-bao-han-zai-shu-zu-zhong-bing-ba-duo-xing-he-bing-cheng-yi-xing</link>
                    <description>
                            <![CDATA[<pre><code class="language-">select string_agg(tb.contact_number,&#39;,&#39;) from tb_bank tb where tb.id::text = any(string_to_array(tp.bank_ids,&#39;,&#39;))</code></pre>]]>
                    </description>
                    <pubDate>Wed, 19 Jul 2023 16:13:57 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[idea 中删除了分支 新建时还是提示分支已存在]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/idea-zhong-shan-chu-le-fen-zhi-xin-jian-shi-hai-shi-ti-shi-fen-zhi-yi-cun-zai</link>
                    <description>
                            <![CDATA[<p>在命令行执行命令删除</p><pre><code class="language-">git branch -D dev-5.24.0-banan</code></pre>]]>
                    </description>
                    <pubDate>Thu, 15 Jun 2023 11:22:53 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[Git：在gitee上新建仓库，将本地项目上传到新建的gitee仓库中]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/git-zai-gitee-shang-xin-jian-cang-ku--jiang-ben-de-xiang-mu-shang-chuan-dao-xin-jian-de-gitee-cang-ku-zhong</link>
                    <description>
                            <![CDATA[<p>新建gitee仓库后最好建一个空的 删除里面的文件不然可能会冲突</p><ol><li>初始化仓库，将这个目录变成git可以管理的仓库，回车后会新增一个.git文件夹</li></ol><pre><code class="language-">git init</code></pre><ol start="2"><li>添加文件到暂存区</li></ol><pre><code class="language-">git add . </code></pre><ol start="3"><li>文件提交到本地仓库</li></ol><pre><code class="language-">git commit -m ‘描述内容’ </code></pre><ol start="4"><li>然后关联git仓库，因为此时git还不知道要将我们的项目添加到哪里去。</li></ol><pre><code class="language-">git remote add origin 远程仓库的地址</code></pre><ol start="5"><li>将文件与远程仓库进行合并</li></ol><pre><code class="language-">git pull --rebase origin master</code></pre><ol start="6"><li>然后将本地文件推送到gitee仓库中</li></ol><pre><code class="language-">git push -u origin master</code></pre><p>完成</p>]]>
                    </description>
                    <pubDate>Tue, 13 Jun 2023 17:51:48 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[关于我]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/guan-yu-wo</link>
                    <description>
                            <![CDATA[<h3 id="%E5%BC%95%E8%A8%80" tabindex="-1">引言</h3><p>java后端开发攻城师，正在努力学习开源产品，梦想自己的开源项目可以得到小有名气的认可，在开源社区的江湖里留下我不起眼的足迹。</p><h3 id="%E6%8A%80%E6%9C%AF%E6%A0%88" tabindex="-1">技术栈</h3><p>主攻java，会一点前端，会一点运维。</p><h3 id="%E9%A1%B9%E7%9B%AE%E5%90%88%E4%BD%9C" tabindex="-1">项目合作</h3><p>一个人力量有限，所幸有小伙伴一起前行，专业后端，资深UI，前端，运维，产品，测试，项目管理俱全，项目经验丰富,如果你有软件开发需求可与我联系。</p><h3 id="%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F" tabindex="-1">联系方式</h3><p>微信：MMRWXM</p>]]>
                    </description>
                    <pubDate>Wed, 19 Apr 2023 17:29:43 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[生成安卓证书]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/sheng-cheng-an-zhuo-zheng-shu</link>
                    <description>
                            <![CDATA[<pre><code class="language-">keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000</code></pre><pre><code class="language-">keytool -list -v -keystore debug.keystore</code></pre>]]>
                    </description>
                    <pubDate>Fri, 25 Nov 2022 13:38:35 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[cenos 防火墙放行端口]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/cenos-fang-huo-qiang-fang-xing-duan-kou</link>
                    <description>
                            <![CDATA[<pre><code class="language-">firewall-cmd --zone=public --add-port=8888/tcp --permanent</code></pre><pre><code class="language-">firewall-cmd --reload</code></pre>]]>
                    </description>
                    <pubDate>Tue, 08 Nov 2022 20:59:38 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[docker安装redis]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/docker-an-zhuang-redis</link>
                    <description>
                            <![CDATA[<h2 id="1-%E6%9F%A5%E7%9C%8B%E9%95%9C%E5%83%8F" tabindex="-1">1 查看镜像</h2><pre><code class="language-">docker search redis</code></pre><h2 id="%E6%8B%89%E5%8F%96%E6%9C%80%E6%96%B0%E9%95%9C%E5%83%8F" tabindex="-1">拉取最新镜像</h2><pre><code class="language-">docker pull redis:latest</code></pre><h2 id="%E5%90%AF%E5%8A%A8%E9%95%9C%E5%83%8F" tabindex="-1">启动镜像</h2><pre><code class="language-">docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /etc/redis/redis.conf:/etc/redis/redis.conf  -v /data:/data -d redis redis-server /etc/redis/redis.conf</code></pre><p>命令含义:<br />-p 6379:6379 端口映射：前表示主机部分，：后表示容器部分。</p><p>–log  日志相关</p><p>–name redis 指定该容器名称，查看和进行操作都比较方便。</p><p>-v 挂载文件或目录 ：前表示主机部分（必须为绝对路径），：后表示容器部分。</p>]]>
                    </description>
                    <pubDate>Thu, 13 Oct 2022 11:15:36 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[Centos Nacos启动报错：Please set the JAVA_HOME variable ]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/centosnacos-qi-dong-bao-cuo-pleasesetthejavahomevariableinyourenvironmentweneedjavax64jdk8orlateris</link>
                    <description>
                            <![CDATA[<h1 id="%E8%83%8C%E6%99%AF" tabindex="-1">背景</h1><p>服务器系统 centos 8.2 ,通过yum 命令安装有jdk，全局执行java -version 可查看到jdk的版本信息，以单机的方式启动nacos，结果报错</p><pre><code class="language-">Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!</code></pre><h1 id="%E9%94%99%E8%AF%AF%E5%8E%9F%E5%9B%A0" tabindex="-1">错误原因</h1><p>nacos启动脚本中读取了环境变量 JAVA_HOME 的值来获取jdk，而我们系统中没有设置该值导致</p><h1 id="%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95" tabindex="-1">解决办法</h1><p>添加系统环境 JAVA_HOME 的值</p><h2 id="1.-%E6%9F%A5%E7%9C%8Bjre%E8%B7%AF%E5%BE%84" tabindex="-1">1. 查看jre路径</h2><pre><code class="language-">ls -lrt /etc/alternatives/java</code></pre><p><img src="https://www.wxmblog.com/upload/2022/09/image.png" alt="image" /></p><h2 id="2.%E6%B7%BB%E5%8A%A0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F" tabindex="-1">2.添加环境变量</h2><pre><code class="language-">vim /etc/profile</code></pre><pre><code class="language-">export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jreexport JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH</code></pre><h2 id="3.%E5%88%B7%E6%96%B0%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F" tabindex="-1">3.刷新系统环境变量</h2><pre><code class="language-">source /etc/profile</code></pre><p>重新启动就可以成功了</p>]]>
                    </description>
                    <pubDate>Wed, 21 Sep 2022 15:13:33 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[docker安装minio]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/docker-an-zhuang-minio</link>
                    <description>
                            <![CDATA[<h2 id="1-%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F" tabindex="-1">1 拉取镜像</h2><pre><code class="language-">docker pull minio/minio</code></pre><h2 id="2-%E5%90%AF%E5%8A%A8%E9%95%9C%E5%83%8F" tabindex="-1">2 启动镜像</h2><pre><code class="language-"> docker run -d   -p 9000:9000 -p 9090:9090   --name minio   -v /home/minio/data:/data   -e &quot;MINIO_ROOT_USER=minioadmin&quot;   -e &quot;MINIO_ROOT_PASSWORD=minioadmin&quot;   minio/minio server /data --console-address &quot;:9090&quot;</code></pre><h2 id="%E5%91%BD%E4%BB%A4%E8%A7%A3%E9%87%8A" tabindex="-1">命令解释</h2><pre><code class="language-">docker run :docker 启动容器命令-d :后台启动-p :端口映射-name :为这个容器取一个名字-e :设置环境变量-v :文件挂载位置minio/minio server /data :minio启动命令 （minio/minio 是镜像名字、/data:数据存储位置） --console-address &quot;:9090&quot; :选择静态端口号，这里注意下控制台端口号不能和静态端口号一样</code></pre><h2 id="%E6%94%BE%E8%A1%8C%E5%AE%89%E5%85%A8%E7%BB%84%E5%92%8C%E9%98%B2%E7%81%AB%E5%A2%99" tabindex="-1">放行安全组和防火墙</h2><p>访问 ip:9090 管理界面</p>]]>
                    </description>
                    <pubDate>Tue, 26 Jul 2022 17:05:14 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[HandlerInterceptor 实现类中无法获取配置文件的数据 @Value 获取不到值]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/handlerinterceptor-shi-xian-lei-zhong-wu-fa-huo-qu-pei-zhi-wen-jian-de-shu-ju-value-huo-qu-bu-dao-zhi</link>
                    <description>
                            <![CDATA[<p>拦截器实现类中通过@Value 获取配置文件无法获取 原因是在拦截器配置文件中获取的HandlerInterceptor 实现类对象没有加入spring管理中 通过bean 的方式获取就可以了。<br /><img src="https://www.wxmblog.com/upload/2022/06/image-1656123105736.png" alt="image-1656123105736" /></p>]]>
                    </description>
                    <pubDate>Sat, 25 Jun 2022 10:12:32 CST</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[common模块的全局异常处理 不生效]]>
                    </title>
                    <link>https://www.wxmblog.com/archives/common-mo-kuai-de-quan-ju-yi-chang-chu-li-bu-sheng-xiao</link>
                    <description>
                            <![CDATA[<h1 id="%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84" tabindex="-1">项目结构</h1><p>项目为微服务多模块，全局统一异常处理放在common模块中，新增的服务模块引入了common依赖，在新模块中发生的异常后，common中异常处理没有生效</p><p>项目结构如下<br /><img src="https://www.wxmblog.com/upload/2022/06/image-1655003361145.png" alt="image-1655003361145" /><br />demo模块中引入了common依赖<br /><img src="https://www.wxmblog.com/upload/2022/06/image-1655003410628.png" alt="image-1655003410628" /></p><h1 id="%E4%B8%8D%E7%94%9F%E6%95%88%E5%8E%9F%E5%9B%A0" tabindex="-1">不生效原因</h1><p>对于SpringBoot项目，启动时默认，会扫描的到的类为该启动类所在的文件夹及其文件夹的子目录，我们新模块启动类所在包和common所在包不一致 无法加载到spring中，所以无法生效</p><h1 id="%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95" tabindex="-1">解决办法</h1><p>方法1：将common模块在启动时加载到spring中，增加扫描注解<br /><img src="https://www.wxmblog.com/upload/2022/06/image-1655003699154.png" alt="image-1655003699154" /><br />方法2： 将启动类移动到上一级别包下</p>]]>
                    </description>
                    <pubDate>Sun, 12 Jun 2022 11:15:12 CST</pubDate>
                </item>
    </channel>
</rss>