<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pp的博客]]></title><description><![CDATA[一步登天做不到，但一步一个脚印能做到。一鸣惊人不好做，但一股劲做好一件事，可以做。一下成为天才不可能，但每天进步一点点有可能”]]></description><link>https://blog.youkuaiyun.com/qq_41471057</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41471057]]></copyright><item><title><![CDATA[Word模板引擎填充神器]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/152125593</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/152125593</guid><author>qq_41471057</author><pubDate>Fri, 26 Sep 2025 15:13:18 +0800</pubDate><description><![CDATA[Word模板引擎]]></description><category></category></item><item><title><![CDATA[nginx使用stream转发流量]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/142024972</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/142024972</guid><author>qq_41471057</author><pubDate>Mon, 23 Sep 2024 12:27:20 +0800</pubDate><description><![CDATA[将连接代理到定义的upstream后端。# 第一个后端服务器。# 第二个后端服务器。# 可以添加更多服务器。]]></description><category></category></item><item><title><![CDATA[idea个人常用快捷键设置]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/140897984</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/140897984</guid><author>qq_41471057</author><pubDate>Sat, 03 Aug 2024 23:31:44 +0800</pubDate><description><![CDATA[代码生成快捷键 Ctrl + Enter / Alert + Insert，没错就是你想要的那个神奇快捷键，可以自动生成get/set/ovrride/construct/toString/test等方法的强大快捷键，最常用的场景就是快速生成test测试类。在快捷键配置keymap中搜索“show context actions”，如果没有配置快捷键加上“Alt + Enter”的快捷键就可以了。如果有一天你的快速补全快捷键不好用了，请一定记得看这篇文章。]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/129678175</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/129678175</guid><author>qq_41471057</author><pubDate>Mon, 20 Mar 2023 22:32:37 +0800</pubDate><description><![CDATA[窗口函数是一种在 SQL 查询中使用的函数，它可以对查询结果进行分组、排序、聚合和计算等操作。窗口函数能够对特定的行进行处理，而不会改变查询结果的总体行数。如果您已经熟悉 SQL 的基础知识，那么窗口函数就是一种在 SELECT 语句中使用的函数。它可以在聚合函数的基础上提供更多的功能和控制。在这个例子中，我们使用了 ROW_NUMBER 函数来计算每个学生的排名。我们还使用了 ORDER BY 子句来指定按照分数的降序排列。]]></description><category></category></item><item><title><![CDATA[Spring Bean实例创建装载过程分析-spring源码学习（2）]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/116737543</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/116737543</guid><author>qq_41471057</author><pubDate>Wed, 08 Mar 2023 09:09:53 +0800</pubDate><description><![CDATA[定义阶段主要涉及Bean定义的加载和解析，这一过程的核心是将Bean定义的描述信息映射至BeanDefinition对象中，以便后续的Bean实例化操作使用。通过上述的分析，我们可以看到Spring Bean实例创建装载过程是一个复杂的过程，其中包含多个阶段和细节，这也表明Spring框架的强大之处正是在于这种复杂的Bean实例化和装载机制。如果我们能够了解并熟练地运用Spring Bean实例创建装载的整个过程，相信对于我们开发高质量的应用程序将会大有益处。]]></description><category></category></item><item><title><![CDATA[生产环境在线快速更新jar包内容]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/129395791</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/129395791</guid><author>qq_41471057</author><pubDate>Wed, 08 Mar 2023 08:59:22 +0800</pubDate><description><![CDATA[但是，有些框架是作为Jar包提供的，我们可能会遇到修改配置文件的困难。其中，xxx.jar是我们需要查找的Jar包名称，log4j.properties是我们需要查找的配置文件名称。该命令会返回包含该配置文件的Jar包中的详细信息，我们可以从中找到该文件的位置。其中，xxx.jar是我们需要解压的Jar包名称，log4j.properties是我们需要解压的配置文件名称。其中，xxx.jar是我们需要更新的Jar包名称，log4j.properties是我们需要更新的配置文件名称。4.更新Jar包文件。]]></description><category></category></item><item><title><![CDATA[数据库范式大白话解释]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/128111165</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/128111165</guid><author>qq_41471057</author><pubDate>Mon, 05 Dec 2022 15:41:07 +0800</pubDate><description><![CDATA[数据库范式一直是一种很难理解的，各种翻译版本讲解的方式都比较难理解，在这重新梳理下自己的理解范式。]]></description><category></category></item><item><title><![CDATA[类与类之间的关系（二）]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/120983301</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/120983301</guid><author>qq_41471057</author><pubDate>Tue, 26 Oct 2021 23:02:44 +0800</pubDate><description><![CDATA[程序设计问题

1.可读性 名字 缩进 注释
	2.健壮性 判断严谨
	3.优化 结构 性能 内存
	4.复用性 方法 类
	5.可扩展性 抽象 接口 面向配置文件
设计类的关系遵循的原则：
高内聚低耦合

耦合度：紧密程度 继承/实现 &gt; 包含 &gt; 依赖

类和类的关系
A is-a B 泛化(继承 实现)
A has-a B 包含(组合 &gt; 聚合 &gt; 关联)
A use-a B 依赖(依赖) need-a


A is-a B 泛化(继承 实现)


A has-...]]></description><category></category></item><item><title><![CDATA[Mysql分区表总结]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/119420776</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/119420776</guid><author>qq_41471057</author><pubDate>Fri, 06 Aug 2021 17:22:10 +0800</pubDate><description><![CDATA[分区表介绍

分区是指根据一定的规则将一个大表分解成多个更小的部分，这里的规则一般就是利用分区规则将表进行水平切分；逻辑上没有发生变化但实际上表已经被拆分成了多个物理对象，每个分成被划分成了一个独立的对象。相对于没有分区的当个表而言分区的表有很多的优势包括： 并发统计查询、快速归档删除分区数据、分散存储、查询性能更佳。



查看当前数据库是否开启分区

5.7之前的版本使用：show variables like '%partition%';

mysql 5.7使用： SHOW PLUG...]]></description><category></category></item><item><title><![CDATA[微信小程序常用组件库收藏备用]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/119058860</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/119058860</guid><author>qq_41471057</author><pubDate>Sat, 24 Jul 2021 15:17:26 +0800</pubDate><description><![CDATA[第一款：

官方WeUI组件库，地址https://developers.weixin.qq.com/miniprogram/dev/extended/weui/

预览码：





第二款：

ColorUI：地址https://github.com/weilanwl/ColorUI

预览码：





第三款：

vantUI（又名：ZanUI）：地址https://youzan.github.io/vant-weapp/#/intro

预览码：



第四款：

MinUI： 地址h...]]></description><category></category></item><item><title><![CDATA[类和类之间的关系]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/115766852</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/115766852</guid><author>qq_41471057</author><pubDate>Fri, 16 Apr 2021 16:47:54 +0800</pubDate><description><![CDATA[一、UML

a)Unified Modeling Language (UML)又称统一建模语言或标准建模语言

b)它是一个支持模型化和软件系统开发的图形化语言，为软件开发的所有阶段提供模型化和可视化支持

c)它不仅统一了Booch、Rumbaugh和Jacobson的表示方法，而且对其作了进一步的发展，并最终统一为大众所接受的标准建模语言

d)UML定义了10种模型图,对应软件设计开发的不同阶段

i.用例图

ii.静态图：类图，包图，对象图。

iii.行为图：状态图和活动图

i...]]></description><category></category></item><item><title><![CDATA[RESTful6大原则及实践]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/115375958</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/115375958</guid><author>qq_41471057</author><pubDate>Thu, 01 Apr 2021 15:48:40 +0800</pubDate><description><![CDATA[六大原则
1. C-S架构
数据的存储在Server端，Client端只需使用就行。两端彻底分离的好处使client端代码的可移植性变强，Server端的拓展性变强。两端单独开发，互不干扰。

2. 无状态
http请求本身就是无状态的，基于C-S架构，客户端的每一次请求带有充分的信息能够让服务端识别。请求所需的一些信息都包含在URL的查询参数、header、body，服务端能够根据请求的各种参数，无需保存客户端的状态，将响应正确返回给客户端。无状态的特征大大提高的服务端的健壮性和可拓展性。

当然这总无状]]></description><category></category></item><item><title><![CDATA[Mysql事务隔离级别（脏读、幻读、不可重复读的理解）]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/115357050</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/115357050</guid><author>qq_41471057</author><pubDate>Wed, 31 Mar 2021 18:38:06 +0800</pubDate><description><![CDATA[1、事务和事务的特性

事务指的就是一系列原子性的操作，这些操作要么全做，要么全都不做。事务是由引擎层支持的，而MylSAM不支持事务，InnoDB支持事务。

原子性
	一致性
	隔离性
	持久性
2、事务的隔离性

事务的隔离性是指事务之间互不干扰，相互隔离。Mysql有四种隔离级别，分别是未提交读，提交读，可重复读和串行化。

未提交读：一个事务可以看到其他事务未提交的变更。这种隔离性是最低的，一般不会采用这种隔离级别。未提交读可能会导致脏读、不可重复读和幻读。
	提交读：一个事务读取到其他事务已经提]]></description><category></category></item><item><title><![CDATA[消息队列的选型及当下几种流行队列的优缺点分析]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/114840422</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/114840422</guid><author>qq_41471057</author><pubDate>Mon, 15 Mar 2021 16:57:02 +0800</pubDate><description><![CDATA[消息队列选型

必须是开源产品，有bug可以修改源码；近几年比较流行，社区活跃度高，流行的产品与周边生态系统会有一个比较好的集成和兼容，比如，Kafka 和 Flink 就有比较好的兼容性，Flink 内置了 Kafka 的 Data Source，使用 Kafka 就很容易作为 Flink 的数据源开发流计算应用，如果你用一个比较小众的消息队列产品，在进行流计算的时候，你就不得不自己开发一个 Flink 的 Data Source。

一个合格消息队列产品特性：

• 消息的可靠传递：确保不丢消息；• C]]></description><category></category></item><item><title><![CDATA[Fildder配置安卓抓包步骤]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/114699295</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/114699295</guid><author>qq_41471057</author><pubDate>Fri, 12 Mar 2021 16:24:22 +0800</pubDate><description><![CDATA[1、fildder软件下载

地址：http://www.pc6.com/softview/SoftView_51888.html

2、关闭电脑防火墙

3、代理配置 手机证书下载

参考博客：https://www.jianshu.com/p/6858a25674b4

4、指定请求过滤设置




]]></description><category></category></item><item><title><![CDATA[代码简洁之道（lambda+策略工厂模式的初体验）]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/114118843</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/114118843</guid><author>qq_41471057</author><pubDate>Fri, 26 Feb 2021 10:52:55 +0800</pubDate><description><![CDATA[重构初体验–所谓模式

使用反射去掉if/else的原理很简单，使用HashMap建立状态码和需要调用的方法的方法名之间的映射关系，对于每个CountEntry，首先取出状态码，然后根据状态码获得相应的要调用方法的方法名，然后使用java的反射机制就可以实现对应方法的调用了。本例中使用反射的确可以帮助我们完美的去掉if/else的身影，但是，众所周知，反射效率很低，在高并发的条件下，反射绝对不是一个良好的选择。除去反射这种方法，能想到的就剩下使用策略模式或者与其类似的状态模式，以及工厂模式了，我们以工厂模式]]></description><category></category></item><item><title><![CDATA[java8集合 根据实体指定字段去重的几种常见操作方式]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/114011276</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/114011276</guid><author>qq_41471057</author><pubDate>Wed, 24 Feb 2021 10:07:19 +0800</pubDate><description><![CDATA[1.通过指定字段分组
classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));
2.java8去重(根据年级和专业,当年级和专业都相同的情况下看做是重复数据)
List&lt;ClassEntity&gt; distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ]]></description><category></category></item><item><title><![CDATA[Java并发编程系列之CAS(1)]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/112759076</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/112759076</guid><author>qq_41471057</author><pubDate>Sun, 17 Jan 2021 22:34:07 +0800</pubDate><description><![CDATA[一. CAS定义
1. CAS：比较和交换（Conmpare And Swap）是用于实现多线程同步的原子指令。

2. 它将内存位置的内容与给定值进行比较，只有在相同的情况下，将该内存位置的内容修改为新的给定值。 

3. 这是作为单个原子操作完成的。 

4. 原子性保证新值基于最新信息计算; 如果该值在同一时间被另一个线程更新，则写入将失败。 

5. 操作结果必须说明是否进行替换; 这可以通过一个简单的布尔响应（这个变体通常称为比较和设置），或通过返回从内存位置读取的值来完成

二. 简单案例演示
]]></description><category></category></item><item><title><![CDATA[equals方法与hashCode方法的关系]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/112556762</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/112556762</guid><author>qq_41471057</author><pubDate>Wed, 13 Jan 2021 11:46:49 +0800</pubDate><description><![CDATA[java.lang.Object类中有两个非常重要的方法：


public boolean equals(Object obj)
public int hashCode()

目录

equals()方法详解

hashcode() 方法详解

Hashset、Hashmap、Hashtable与hashcode()和equals()的密切关系

Object类是类继承结构的基础，所以是每一个类的父类。所有的对象，包括数组，都实现了在Object类中定义的方法。



equals()方法详解

equ.]]></description><category></category></item><item><title><![CDATA[java内置锁synchronized的可重入性]]></title><link>https://blog.youkuaiyun.com/qq_41471057/article/details/112209211</link><guid>https://blog.youkuaiyun.com/qq_41471057/article/details/112209211</guid><author>qq_41471057</author><pubDate>Mon, 04 Jan 2021 22:32:08 +0800</pubDate><description><![CDATA[同一进程的不同线程会共享同一主内存，线程的私有栈中只包括PC,栈，操作数栈，局部变量数组和动态链接。对共享内存进行读写时，若要保证线程安全，则必须通过加锁的方式。

1. 线程安全与可重入性

1.1. 定义

关于可重入这一概念，参考维基百科。


若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码，这段代码又调用了该子程序不会出错”，则称其为可重入（reentrant或re-entrant）的。即当该子程序正在运行时，执行线程可以再次进入并执行它，仍然获得符合设计时预期的结果。与多]]></description><category></category></item></channel></rss>