<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liuyifeng1920</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liuyifeng1920]]></copyright><item><title><![CDATA[单片机-温湿度计制作]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/160626447</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/160626447</guid><author>liuyifeng1920</author><pubDate>Wed, 29 Apr 2026 14:27:23 +0800</pubDate><description><![CDATA[需要用到的硬件配件有 esp32cc3 suppermini，SHT40温湿度模块，tp4056充电保护模块，1000毫安电池，两个100k电阻，一个拨动开关，还有一个2.13寸黑白屏的墨水屏，这个温湿度计的特点就是极致的省电，1000毫安电池，充满电用个7-8个月没问题，采用深度睡眠模式+局部刷新，每隔60秒探测一次温湿度，如果温湿度变化小于阈值，继续沉睡，如果大于阈值才会局部刷新。电池电压和电量通过分压电阻，用引脚1做了ADC检测来显示电量。]]></description><category></category></item><item><title><![CDATA[ireport画模板，某个字段非定长(需要自适应换行)]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/144291428</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/144291428</guid><author>liuyifeng1920</author><pubDate>Fri, 06 Dec 2024 14:28:50 +0800</pubDate><description><![CDATA[P{remark2}.substring(16,32): $P{remark2}.substring(16)) : $P{remark2}需求：在制作模板的过程中，某个字段变量，如果长度不足就正常显示，如果长度太长，就需要将字号变小，并且换行显示，如下图的对比效果，这是同一个模板生成的两张图片。步骤4：在xml面板中，将这个remark2的那块代码的原本的字号给删除掉，不然之前新建的那个styles会不生效，步骤3 ，将这个样式和文本关联起来，选中，然后右侧下拉选择刚才新建的那个样式。]]></description><category></category></item><item><title><![CDATA[ireport软件画模板二维码有白边，有白色间距]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/144291233</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/144291233</guid><author>liuyifeng1920</author><pubDate>Fri, 06 Dec 2024 14:14:55 +0800</pubDate><description><![CDATA[解决办法：在画二维码代码中加入： java.util.Collections.singletonMap(com.google.zxing.EncodeHintType.MARGIN, 1)   margen设置为0或者设置小一点，就没间距，没白边。在画标签模板的过程中发现，及时将二维码撑开到了最大，在生成完图片后，二维码周围也会有一圈白色间距。]]></description><category></category></item><item><title><![CDATA[去除mysql数据库表注释和表中字段注释]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/131106617</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/131106617</guid><author>liuyifeng1920</author><pubDate>Thu, 08 Jun 2023 14:23:46 +0800</pubDate><description><![CDATA[去除mysql表注释、字段注释的方法和思路，最后附可用代码]]></description><category></category></item><item><title><![CDATA[循环ping 某个IP并将结果写入文件 bat命令]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/127904615</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/127904615</guid><author>liuyifeng1920</author><pubDate>Thu, 17 Nov 2022 15:21:40 +0800</pubDate><description><![CDATA[循环ping 某个IP并将结果写入文件 bat命令]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap 实现带过期时间的缓存（亲测可用）]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/125866513</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/125866513</guid><author>liuyifeng1920</author><pubDate>Tue, 19 Jul 2022 10:23:49 +0800</pubDate><description><![CDATA[ConcurrentHashMap 实现带过期时间的缓存]]></description><category></category></item><item><title><![CDATA[Java：将异常的完整堆栈追踪信息保存到字符串中（详解）]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112511682</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112511682</guid><author>liuyifeng1920</author><pubDate>Tue, 12 Jan 2021 11:07:02 +0800</pubDate><description><![CDATA[在Java开发中，我们经常要处理各种异常，我们一般用e.toString()或e.getMessage()得到异常信息，但是有时候异常堆栈中会存在很多信息，比如用下面的代码抛出异常：
try  {
// code throws SomeException
}  catch (SomeException e) {
throw   new  MyException( "Caught some exception " , e);
}
这种情况下用e.toString()或e.getMessage()是无法得到全部]]></description><category></category></item><item><title><![CDATA[工具类自动生成数据库表结构数据库字典]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112302812</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112302812</guid><author>liuyifeng1920</author><pubDate>Thu, 07 Jan 2021 09:44:11 +0800</pubDate><description><![CDATA[提示：文章写完后，目录可以自动生成，如何生成可参考右边的帮助文档

文章目录前言

前言
项目开发完毕后，需要写文档，其中有一个就是整理数据库的表结构，一个一个手写太麻烦了，网上找了一个工具类自动生成excel文档

代码如下（示例）：
 package com.guidao.pathwayManage.web.util;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
i]]></description><category></category></item><item><title><![CDATA[Jfinal 联合查询返回数据库以外结构字段并返回json]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112241220</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/112241220</guid><author>liuyifeng1920</author><pubDate>Tue, 05 Jan 2021 16:33:14 +0800</pubDate><description><![CDATA[在使用jfinal的过程中遇到了一个奇怪的问题，就是列表查询的时候，联合查询，一对多的表结构，比如订单和订单明细表，这种一个model里含有另外一个model类型的List的结构官方有解决方案，现在要说的是左链接查询明细表，是明细表中包含订单的某几个字段，这几个字段不是详情表的字段结构，但是是订单表的。

一开始的解决方案是在明细表中添加了几个字段，并给其get，set方法，但是这样弄以后，
new BuyOrderDetail().dao().paginate 通过此分页方法查询后，我自己填写的那几个字段]]></description><category></category></item><item><title><![CDATA[Jenkins从svn下载项目构建后打war包发布到远程Linux服务器[图文]]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/103842594</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/103842594</guid><author>liuyifeng1920</author><pubDate>Mon, 06 Jan 2020 10:53:15 +0800</pubDate><description><![CDATA[Jenkins从svn下载项目构建项目打war包发布到远程Linux服务器需求Jenkins的安装和插件的安装功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FL...]]></description><category></category></item><item><title><![CDATA[备份mysql多个数据库的shell脚本]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/89493267</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/89493267</guid><author>liuyifeng1920</author><pubDate>Wed, 24 Apr 2019 15:02:07 +0800</pubDate><description><![CDATA[需求： 一台linux服务器上数据库有多个数据库，需要每天备份一次，防止意外发生，记录一下估计以后还会用到


#! /bin/bash
# MySQL用户
user="root"
# MySQL密码
userPWD="mima"
# 需要定时备份的数据表列表
dbNames=(db1 db2 db3)
# 每次的备份数据以日期创建文件夹存放，同时删除过期备份
# 此处以保留1个月的备份数据为例
...]]></description><category></category></item><item><title><![CDATA[设置linux服务器时间自动同步]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/84380411</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/84380411</guid><author>liuyifeng1920</author><pubDate>Fri, 23 Nov 2018 11:41:41 +0800</pubDate><description><![CDATA[设置linux服务器时间自动同步
公司项目中调用接口，其中有一些接口需要以当前时间加密，接口要求误差时间不能超过一分钟，但是LINUX服务器长时间运行，时间会不准确导致接口调用失败。
ntp常用服务器：
中国国家授时中心：210.72.145.44
NTP服务器(上海) ：ntp.api.bz
美国：time.nist.gov
复旦：ntp.fudan.edu.cn
微软公司授时主机(美国) ：t...]]></description><category></category></item><item><title><![CDATA[将参数拼接form表单后台自动跳转提交]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/84096766</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/84096766</guid><author>liuyifeng1920</author><pubDate>Thu, 15 Nov 2018 08:49:46 +0800</pubDate><description><![CDATA[原理就是一个将一个map中的参数拼接成html和js代码，自动用js提交跳转，直接上代码


/**
	 * 功能：前台交易构造HTTP POST自动提交表单&amp;lt;br&amp;gt;
	 * @param action 表单提交地址&amp;lt;br&amp;gt;
	 * @param hiddens 以MAP形式存储的表单键值&amp;lt;br&amp;gt;
	 * @param encoding 上送请求报文域encod...]]></description><category></category></item><item><title><![CDATA[nginx 辅助 同一个tomcat绑定多个二级域名及辅助多个tomcat绑定多个二级域名]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/78296809</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/78296809</guid><author>liuyifeng1920</author><pubDate>Fri, 20 Oct 2017 16:24:30 +0800</pubDate><description><![CDATA[公司现阶段部署环境，一台Linux服务器，部署了4个项目，一个项目A 单独使用一个tomcatA     ，项目B，C，D 使用同一个tomcat B。


一开始BCD项目通过配置tomcat 配置文件中Server.xml 中的HOST 节点来达到同一个tomcat使用不同二级域名的目的的：如下<Host name="B.xxx.com"  appBase="webapps"
     ]]></description><category></category></item><item><title><![CDATA[部署到linux线上服务器webSocket链接失败404]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71743220</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71743220</guid><author>liuyifeng1920</author><pubDate>Fri, 12 May 2017 16:07:39 +0800</pubDate><description><![CDATA[这篇文章是我上一篇文章《 

jfinal+H5的websocket 实现同一账户在不同地点不同电脑只能登陆一个（互相踢下线）
》的后续。

本地测试好以后，发布到了linux线上环境，线上测试竟然不成功，
WebSocket connection to 'ws://xxx/websocket' failed: Error durin 就是类似的错误，找遍了百度竟然好多问这个问题的，但]]></description><category></category></item><item><title><![CDATA[jfinal+H5的websocket 实现同一账户在不同地点不同电脑只能登陆一个（互相踢下线）]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71713231</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71713231</guid><author>liuyifeng1920</author><pubDate>Fri, 12 May 2017 12:02:33 +0800</pubDate><description><![CDATA[公司项目需求，因为项目是开账户卖钱的，为了避免有的用户开一个账户N个人用，所以要求A账户只能在一个地点登录，别人如果使用A账户在别的电脑或者地点登录后就会吧上一个人给踢下线，当然也可以让后一个登录的人登录不了，这都是看你逻辑怎么控制的。


效果类似是qq登录的效果，先来张实现后的图




具体实现: 分两步，
第一步使用 HttpSessionAttributeListene]]></description><category></category></item><item><title><![CDATA[Jfinal 事物应用回滚]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71439321</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/71439321</guid><author>liuyifeng1920</author><pubDate>Tue, 09 May 2017 09:55:02 +0800</pubDate><description><![CDATA[直接上代码，SpringMVC做的控制层
要保证账户余额的变动和财务的流水表在同一个事物内。
/**
	 * 加款或者减款
	 * @param model
	 * @return
	 */
	@RequestMapping("updateYuE")

	public String toEdit(Model model,HttpServletRequest request,final Stri]]></description><category></category></item><item><title><![CDATA[JS二级联动——同一个页面多个省市二级联动互不影响]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/70227889</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/70227889</guid><author>liuyifeng1920</author><pubDate>Tue, 18 Apr 2017 14:16:55 +0800</pubDate><description><![CDATA[直接上代码了



 

js全国省市二级联动下拉选择菜单

      
        　  
          
		initCities('山西','太原','provinceId','cityId') 

	　  
          
		initCities('山西','太原','provinceId2','cityId2') 




      

js引入文件 city.]]></description><category></category></item><item><title><![CDATA[mysql优化(三) 逆规范化与反三范式]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/54136385</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/54136385</guid><author>liuyifeng1920</author><pubDate>Fri, 06 Jan 2017 11:48:45 +0800</pubDate><description><![CDATA[数据库设计时要满足规范化这个道理大家都非常清楚，甚至有数据库的三范式, 好吧, 这有点让我想起了机器人的三定律.但是否数据的规范化程度越高越好呢？这还是由实际需求来决定。
因为规范化越高，那么产生的关系就越多，关系过多的直接结果就是导致表之间的连接操作越频繁，而表之间的连接操作是性能较低的操作，直接影响到査询的速度，所以，对于査询较多的应用，就需要根据实际情况运用逆规范化对数据进行设计，通过逆规范化]]></description><category></category></item><item><title><![CDATA[mysql优化(二) 通过拆分提高表的访问效率]]></title><link>https://blog.youkuaiyun.com/liuyifeng1920/article/details/54096115</link><guid>https://blog.youkuaiyun.com/liuyifeng1920/article/details/54096115</guid><author>liuyifeng1920</author><pubDate>Thu, 05 Jan 2017 18:09:57 +0800</pubDate><description><![CDATA[这里所说的”拆分”，是指对数据表进行拆分。大体有两种拆分方法。1 第一种方法是垂直拆分，即把主码和一些列放到一个表，然后把主码和另外的列放到另一个表中。如果一个表中某些列常用，而另一些列不常用，则可以采用垂直拆分，另外，垂直拆分可以使得数据行变小，一个数据页就能存放更多的数据，在査询时就会减少I/O次数。其缺点是 需要管理冗余列，査询所有数据需要联合（join)操作。
2  第二种方法是水平拆分，即]]></description><category></category></item></channel></rss>