<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[法毅的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sinat_35395498</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_35395498]]></copyright><item><title><![CDATA[Redis高级功能]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/130041032</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/130041032</guid><author>sinat_35395498</author><pubDate>Sun, 09 Apr 2023 14:36:03 +0800</pubDate><description><![CDATA[在默认情况下，Sentinel会以每两秒一次的频率，通过命令连接向所有被监视的主服务器和从服务器发送以下格式的命令： PUBLISH __sentinel__:hello ",,,,,,," ·其中以s_开头的参数记录的是Sentinel本身的信息 ·而m_开头的参数记录的则是主服务器的信息。完整重同步，需要主服务器生成一个新的 RDB文件，文件生成的开销是有得；]]></description><category></category></item><item><title><![CDATA[redis 底层数据结构详解]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/129904303</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/129904303</guid><author>sinat_35395498</author><pubDate>Sun, 02 Apr 2023 14:58:44 +0800</pubDate><description><![CDATA[/SDS所保存字符串的长度int len;// 记录buf数组中未使用字节的数量int free;// 字节数组，用于保存字符串char buf[];]]></description><category></category></item><item><title><![CDATA[Mybatiplus自定义sql注入器实现批量插入]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/129104849</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/129104849</guid><author>sinat_35395498</author><pubDate>Sat, 18 Feb 2023 21:43:04 +0800</pubDate><description><![CDATA[2.使用Mybatiplus封装的saveBatch插入，用时3595ms，发现其实还是一条一条sql循环插入的，是伪批量。读取存有10条数据的Excel文件，批量插入数据库。3.使用自定义sql注入器实现批量插入。1.Excel文件写入10万条数据。进行测试，用时1773ms。]]></description><category></category></item><item><title><![CDATA[组合模式+访问者模式 实现商品多级目录分类]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128525712</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128525712</guid><author>sinat_35395498</author><pubDate>Wed, 18 Jan 2023 15:49:04 +0800</pubDate><description><![CDATA[商城有很多商品目录，且层级很多。为了对层级目录进行管理，需要满足对层级目录的增删。]]></description><category></category></item><item><title><![CDATA[桥接模式 实现第三方账号登录]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128523224</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128523224</guid><author>sinat_35395498</author><pubDate>Mon, 02 Jan 2023 18:52:04 +0800</pubDate><description><![CDATA[它的主要职责是定义出该角色的行为, 同事保存一个对实现化角色的引用，该角色一般是抽象类它引用实现化角色对抽象化角色进行修正。]]></description><category></category></item><item><title><![CDATA[迭代器模式 实现ES大量数据查询]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128428024</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128428024</guid><author>sinat_35395498</author><pubDate>Mon, 02 Jan 2023 16:10:43 +0800</pubDate><description><![CDATA[数据从Mysql 迁移到 Es,  Es查询数据默认fetch Size最大为10000条，如果查询超过1万条，需要通过scroll形式进行查询。]]></description><category></category></item><item><title><![CDATA[状态模式+观察者（监听器模式）实现订单状态变更]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128489120</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128489120</guid><author>sinat_35395498</author><pubDate>Sat, 31 Dec 2022 23:26:38 +0800</pubDate><description><![CDATA[用户从开始下订单，到支付完成，再到物流部进行发货，最终用户确认收货。触发订单状态变化的操作：支付订单；整个流程涉及到很多订单状态，需要通过代码对订单状态进行管理。订单状态包括：待支付；订单完成（状态模式）用户创建订单-> 支付订单->发货->收货->订单完成。用户确认收货操作导致订单状态变为订单完成状态。物流部门发货操作导致订单状态变为待收货状态。用户创建订单操作导致订单状态为待支付状态。用户支付操作导致订单状态变为待发货状态。创建订单完成后，订单状态初始化为待支付。设计整体结算发货以及收货的流程。]]></description><category></category></item><item><title><![CDATA[建造者模式+原型模式 实现发票开具功能]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128375021</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128375021</guid><author>sinat_35395498</author><pubDate>Wed, 28 Dec 2022 22:58:43 +0800</pubDate><description><![CDATA[支付成功之后开具增值发票，由于发票所需内容较多，而且随着国家政策可能会有所更改，发票内容的添加和删除以及后台对象的组装尽量做到灵活。建造者模式是将一个复杂对象的构建和它的表示分离，使得同样的构建过程可以创建不同的表示。发票工具不是高并发访问接口，且无法缓存，使用原型模式尽量保证发票创建的性能。用户支付完成后，部分企业用户或个人账户需要开电子增值税发票，实现该功能。]]></description><category></category></item><item><title><![CDATA[享元模式 优化添加积分的对象创建]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128365120</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128365120</guid><author>sinat_35395498</author><pubDate>Mon, 19 Dec 2022 16:27:21 +0800</pubDate><description><![CDATA[【代码】 享元模式。]]></description><category></category></item><item><title><![CDATA[装饰器模式 实现用户支付成功后添加用户的积分]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/128323811</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/128323811</guid><author>sinat_35395498</author><pubDate>Sun, 18 Dec 2022 19:14:33 +0800</pubDate><description><![CDATA[新建抽象的 AbstractPayContext 类，使用 PayContext 继承 AbstractPayContext。新建 AddPointDecrator 类，继承  AddPointContext 实现具体的业务逻辑。新建抽象的装饰器类  AddPointContext 继承  AbstractPayContext。]]></description><category></category></item><item><title><![CDATA[redis分布式锁解决集群部署中定时任务重复执行问题]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/127992303</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/127992303</guid><author>sinat_35395498</author><pubDate>Tue, 22 Nov 2022 23:35:37 +0800</pubDate><description><![CDATA[redis分布式锁解决集群部署中定时任务重复执行问题]]></description><category></category></item><item><title><![CDATA[策略模式 + 工厂模式 + 门面模式 实现用户多类型支付功能]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/127607694</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/127607694</guid><author>sinat_35395498</author><pubDate>Mon, 31 Oct 2022 00:38:26 +0800</pubDate><description><![CDATA[策略模式 + 工厂模式 + 门面模式 实现用户多类型支付功能]]></description><category></category></item><item><title><![CDATA[Hutool的CollStreamUtil]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/127353383</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/127353383</guid><author>sinat_35395498</author><pubDate>Sun, 16 Oct 2022 21:16:33 +0800</pubDate><description><![CDATA[Hutool的CollStreamUtil]]></description><category></category></item><item><title><![CDATA[hutool的TheadUtil创建CompletionService]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/127154615</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/127154615</guid><author>sinat_35395498</author><pubDate>Mon, 03 Oct 2022 18:15:27 +0800</pubDate><description><![CDATA[CompletionService异步获取]]></description><category></category></item><item><title><![CDATA[hutool的树形工具类-TreeUtil]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/127154307</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/127154307</guid><author>sinat_35395498</author><pubDate>Mon, 03 Oct 2022 17:41:18 +0800</pubDate><description><![CDATA[树形结果返回，不再需要自己写递归了]]></description><category></category></item><item><title><![CDATA[mXparser-java的数学函数解析工具类]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/126079529</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/126079529</guid><author>sinat_35395498</author><pubDate>Sat, 30 Jul 2022 23:47:24 +0800</pubDate><description><![CDATA[Java计算字符串表达式的结果]]></description><category></category></item><item><title><![CDATA[letcode 第20题-有效的括号]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/126041281</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/126041281</guid><author>sinat_35395498</author><pubDate>Thu, 28 Jul 2022 18:34:17 +0800</pubDate><description><![CDATA[letcode实现有效的括号]]></description><category></category></item><item><title><![CDATA[Java 实现一个性能计数器]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/124067698</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/124067698</guid><author>sinat_35395498</author><pubDate>Sat, 09 Apr 2022 22:19:13 +0800</pubDate><description><![CDATA[1.0版本，最小原型


/**
 * 统计类
 */
public class Metrics {
    /**
     * 响应时间,key为接口名称,value为时间集合
     */
    private Map&lt;String, List&lt;Double&gt;&gt; responseTimes = new HashMap&lt;&gt;();

    /**
     * 时间戳,key为接口名称,value为时间集合
     */
    private Map&lt;S]]></description><category></category></item><item><title><![CDATA[Java8 stream使用]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/123955556</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/123955556</guid><author>sinat_35395498</author><pubDate>Mon, 04 Apr 2022 16:18:23 +0800</pubDate><description><![CDATA[/**
 * 交易员
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Trader {
    private  String name;
    private  String city;
}

/**
 * 交易
 */
@Data
@AllArgsConstructor
public class Transaction {
    private final Trader trader;
    private final .]]></description><category></category></item><item><title><![CDATA[分布式ID]]></title><link>https://blog.youkuaiyun.com/sinat_35395498/article/details/123670948</link><guid>https://blog.youkuaiyun.com/sinat_35395498/article/details/123670948</guid><author>sinat_35395498</author><pubDate>Tue, 22 Mar 2022 21:06:25 +0800</pubDate><description><![CDATA[SnowFlake

定义：SnowFlake是Twitter公司采用的一种算法，目的是在分布式系统中产生全局唯一且趋势递增的ID，ShardingSphere默认的分布式主键生成器

组成部分：

1.第一位 占用1bit，其值始终是0，没有实际作用。

2.时间戳 占用41bit，精确到毫秒，总共可以容纳约69年的时间。

3.工作机器id 占用10bit，其中高位5bit是数据中心ID，低位5bit是工作节点ID，做多可以容纳1024个节点。

4.序列号 占用12bit，每个节点每毫秒0开始不断累加]]></description><category></category></item></channel></rss>