<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CK_self的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CK_self</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CK_self]]></copyright><item><title><![CDATA[SQL变更评审常见问题分享]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/135174310</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/135174310</guid><author>CK_self</author><pubDate>Sat, 23 Dec 2023 21:08:59 +0800</pubDate><description><![CDATA[SQL变更，是我们在开发迭代中不可避免的场景，SQL变更通常是指DDL和DML语句变更，这些sql会影响到数据库表结构或具体数据，变更时如果执行到存在问题的sql脚本，会对实际应用操作难以评估的损失，比如咱们常挂在嘴边的删库跑路。通常情况下程序员并发故意想“删库跑路”，而是因为种种原因，将存在问题的sql脚本放到了生产环境执行，导致最终出现生产环境数据异常。]]></description><category></category></item><item><title><![CDATA[接口幂等性及如何实现幂等性]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/119902611</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/119902611</guid><author>CK_self</author><pubDate>Wed, 25 Aug 2021 07:09:12 +0800</pubDate><description><![CDATA[接口幂等性及如何实现幂等性
概述

幂等性，用数学函数表示为，f(f(x)) = f(x)，即幂等元素运行多次，还等于原来运行的结果。延伸到我们java接口上就是，一个接口调用多次（每次入参相同），与这个接口调用一次的结果相同。生产中与接口幂等性相关的业务问题有如下：
1）提交订单按钮如何防止重复提交？
2）表单录入页如何防止重复提交？
3）微服务接口，客户端重试时，会对业务数据产生影响吗？
带着以上问题，来看看如何实现接口的幂等性。

一、我们什么情况下会多次调用接口的场景
1、网络延迟，导致调用接口后为]]></description><category></category></item><item><title><![CDATA[JVM-逃逸分析、标量替换和栈上分配]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/110678387</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/110678387</guid><author>CK_self</author><pubDate>Sat, 05 Dec 2020 11:08:46 +0800</pubDate><description><![CDATA[概述

逃逸分析，就是分析变量能不能逃出它的作用域；
标量替换和栈上分配，则是基于逃逸分析的前提下去做的。

一、逃逸分析
1、是什么
逃逸分析：指的是分析变量能否逃出它的作用域
可以细分为4种场景
1）全局变量赋值逃逸
代码示例
public class EscapeTest{
    public static SomeClass someClass;
    public void globalVariablePointerEscape(){
        // 全局变量逃逸
		someClass]]></description><category></category></item><item><title><![CDATA[Hibernate与Mybatis对比总结]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/103336370</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/103336370</guid><author>CK_self</author><pubDate>Sun, 01 Dec 2019 16:29:38 +0800</pubDate><description><![CDATA[Hibernate与Mybatis对比总结
概述

Hibernate
Hibernate对数据库结构提供了较为完整的封装，Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射，以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系，即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握， Hibernate...]]></description><category></category></item><item><title><![CDATA[分布式、高并发和多线程之间的区别]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/103332877</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/103332877</guid><author>CK_self</author><pubDate>Sun, 01 Dec 2019 10:42:51 +0800</pubDate><description><![CDATA[分布式、高并发和多线程之间的区别
概述

在一开始接触的时候，不少人都会将三者混淆，误以为所谓的分布式高并发的系统就是能同时供海量用户访问，而采用多线程手段不就是可以提供系统的并发能力吗？实际上，他们三个总是相伴而生，但侧重点又有不同。

1、分布式
分布式更多的一个概念，是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多，在不同的技术层面上，又包括：分布式文件系...]]></description><category></category></item><item><title><![CDATA[Zookeeper：Zookeeper的选举机制]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/103133135</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/103133135</guid><author>CK_self</author><pubDate>Mon, 18 Nov 2019 22:22:54 +0800</pubDate><description><![CDATA[Zookeeper的选举机制
0、为什么要进行Leader选举？
**Leader 主要作用是保证分布式数据一致性，即每个节点的存储的数据同步。**遇到以下两种情况需要进行Leader选举：
1）服务器初始化启动
2）服务器运行期间无法和Leader保持连接，Leader节点崩溃，逻辑时钟崩溃。
1、服务器初始化时Leader选举
zookeeper由于其自身的性质（半数存活机制），一般建议选取奇...]]></description><category></category></item><item><title><![CDATA[Redis：Redis应用之缓存实现]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/103106082</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/103106082</guid><author>CK_self</author><pubDate>Sun, 17 Nov 2019 10:06:00 +0800</pubDate><description><![CDATA[Redis应用之缓存实现
概述

缓存(Cache)的作用是减少服务器对数据源的访问频率，从而提高数据库的稳定性。访问的流程如下。
1、请求从缓存中获取数据，若数据为空（数据过期或不存在），则访问数据库获取数据，同时将数据存入Redis中；
2、请求从缓存中获取数据，若数据存在，则直接从缓存获取该数据。


一、存储方式
缓存中的数据在redis中的存储方式有两种，一种是永久存在，不设置过期时间，...]]></description><category></category></item><item><title><![CDATA[redis：快照存储（rdb）与AOF存储的优劣对比]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/103093939</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/103093939</guid><author>CK_self</author><pubDate>Fri, 15 Nov 2019 23:52:17 +0800</pubDate><description><![CDATA[快照存储（rdb）与AOF存储的优缺点
1、快照存储
优点
1）RDB文件是一个很简洁的单文件，它保存了某个时间点的Redis数据，很适合用于做备份。你可以设定一个时间点对RDB文件进行归档，这样就能在需要的时候很轻易的把数据恢复到不同的版本。
2）RDB很适合用于灾备。单文件很方便就能传输到远程的服务器上。
3）RDB的性能很好，需要进行持久化时，主进程会fork一个子进程出来，然后把持久化的工...]]></description><category></category></item><item><title><![CDATA[JavaWeb：Criteria类添加或条件]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/102964706</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/102964706</guid><author>CK_self</author><pubDate>Thu, 07 Nov 2019 23:00:04 +0800</pubDate><description><![CDATA[Criteria类添加或条件
简述
我们在用逆向工程Example类进行数据库where条件查询时，可以通过如下方法实现，以User类为实例，User类中有成员变量 id name age
//创建UserExample对象
UserExample example = new UserExample();
//生成Criteria实例

//第一个条件
Criteria criteria1 = e...]]></description><category></category></item><item><title><![CDATA[Java：Spring AOP]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/102731655</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/102731655</guid><author>CK_self</author><pubDate>Thu, 24 Oct 2019 20:44:55 +0800</pubDate><description><![CDATA[Spring AOP
概述

AOP（Aspect Oriented Programming）,即面向切面编程，可以说是OOP（Object Oriented Programming，面向对象编程）的补充和完善。
面向切面是面向对象中的一种方式。在代码执行过程中，动态嵌入其他代码，叫做面向切面编程。常见的使用场景：日志、事务、数据库处理等
面向切面编程，就是将交叉业务逻辑封装成切面，利用AOP的功...]]></description><category></category></item><item><title><![CDATA[Servlet面试题：重定向和请求转发的区别]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/101643148</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/101643148</guid><author>CK_self</author><pubDate>Sat, 28 Sep 2019 22:23:22 +0800</pubDate><description><![CDATA[重定向和请求转发的区别
简述
原理： 请求转发是servlet 内部调用；重定向是两次请求和响应；
1）请求转发是一次请求一次响应， 重定向是两次请求两次响应。
2）请求转发地址栏不会变化的， 重定向地址栏发生变化。
3）请求转发路径不带工程名， 重定向需要带工程名路径（是浏览器执行的操作）。
4）请求转发只能在本网站内部， 重定向可以定向到任何网站。
5）如果需要用request域去保存数据，必...]]></description><category></category></item><item><title><![CDATA[Servlet：Servlet概括及其使用]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/101562113</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/101562113</guid><author>CK_self</author><pubDate>Fri, 27 Sep 2019 21:18:13 +0800</pubDate><description><![CDATA[Servlet概括及其使用
概述

Servlet是Sun（Oracle）公司制定的一种用来扩展Web服务器功能的组件规范。
1、什么是BS(B扩展web服务器功能？
在rowser Server)架构中，早期的Web服务器只能处理静态资源的请求，也就是无法根据请求进行计算后再生成相应的HTML内容。servlet可以处理动态资源的请求。web服务器收到请求之后，可以调用servlet来动态处理、...]]></description><category></category></item><item><title><![CDATA[Selvlet：请求转发与重定向比较]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/101450297</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/101450297</guid><author>CK_self</author><pubDate>Thu, 26 Sep 2019 16:11:33 +0800</pubDate><description><![CDATA[请求转发与重定向比较
简述
1、请求转发是一个请求一次响应，而重定向是多次请求多次响应；
2、请求转发后浏览器地址栏不会有变化，而重定向会有变化，因为重定向是重新从浏览器请求了一个新地址；
3、请求转发只能转发到本项目中的其他资源**，**而重定向不仅能重定向到本项目的其他资源，还能定向到其他项目的资源
4、请求转发是只发生在服务器端行为，只需给出转发的Servle路劲；而重定向需要给出reque...]]></description><category></category></item><item><title><![CDATA[java：Servlet之路径]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/101108812</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/101108812</guid><author>CK_self</author><pubDate>Sat, 21 Sep 2019 15:37:36 +0800</pubDate><description><![CDATA[Servlet之路径
概述

servllet中与路径相关的操作有：
超链接、表单、重定向、转发、包含、配置url-pattern、ServletContext获取资源、Class获取资源ClassLoader获取资源。
本文通过以上方法的使用，分别区分不同情况下使用路径名的效果。

1、客户端路径（主要有 超链接、表单、重定向）
2、服务器路径
3、转发
4、url-pattern 路径
5、S...]]></description><category></category></item><item><title><![CDATA[数据库总结（oracle）]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100710001</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100710001</guid><author>CK_self</author><pubDate>Tue, 10 Sep 2019 19:40:27 +0800</pubDate><description><![CDATA[数据库总结（oracle）
概述

什么是数据库：存储数据的仓库 ，主要用于解决数据的持久化存储
优点:
1.可存储大量数据
2.方便检索
3.保持数据的一致性、完整性
4.安全，可共享

一、表
1、创建表
语法:
create table t_name(
字段1 数据类型1(数据长度),
字段2 数据类型2(数据长度),
字段3 数据类型3(数据长度),
…
);
代码示例
 create t...]]></description><category></category></item><item><title><![CDATA[Java：类加载、类加载机制及双亲委派模型]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100692951</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100692951</guid><author>CK_self</author><pubDate>Tue, 10 Sep 2019 11:13:41 +0800</pubDate><description><![CDATA[类加载及类加载机制
概述

类的加载、连接、初始化
系统可能在第一次使用某个类时加载类，也可能采用预加载机制来加载某个类。
当调用Java命令运行某个Java程序时，该命令会启动一个Java虚拟机进程，无论该Java程序有多么复杂，给程序启动了多少个线程，他们都处于Java虚拟机进程。
同一个JVM的所有线程、所有变量都处于同一个进程里，他们都是用该JVM进程的内存区，当系统出现以下几种情况时，J...]]></description><category></category></item><item><title><![CDATA[Java：XML之JavaSE Dom4j解析]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100547148</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100547148</guid><author>CK_self</author><pubDate>Wed, 04 Sep 2019 20:54:25 +0800</pubDate><description><![CDATA[XML之JavaSE Dom4j解析
概述

Dom4j不熟悉JacaSE的一部分，属于第三方jar包，集成了DOM和SAX的优点。具有DOM操作方便和SAX处理大文件效率高的特点。
Dom4j进行逐行解析，逐行读取，类似SAX，但是每读取一行都会在内存中保存对应的节点信息。
缺点：如果想要像dom一样随意获取到任意一个子节点，不太方便，但可以通过XPath表达式来解决。
优点：1）不需要创建工厂...]]></description><category></category></item><item><title><![CDATA[Java：XML之JavaSE SAX解析]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100436157</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100436157</guid><author>CK_self</author><pubDate>Tue, 03 Sep 2019 00:05:44 +0800</pubDate><description><![CDATA[XML之JavaSE SAX解析
概述

SAX（Simple API For XML）是一个公共的基于事件的XML文档解析标准，能够通过一个简单的、快速的方法来对XML文档进行处理，和DOM相比它所占用的系统资源更少。
SAX既是一个接口，也是一个软件包。作为接口，SAX是事件驱动型XML解析的一个标准接口，对文档进行顺序扫描，当扫描到文档（document）开始、元素（element）开始与结...]]></description><category></category></item><item><title><![CDATA[Java：XML之JavaSE Dom解析]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100185018</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100185018</guid><author>CK_self</author><pubDate>Sun, 01 Sep 2019 16:58:39 +0800</pubDate><description><![CDATA[XML之JavaSE API解析
概述

对于重量级配置文件XML，JavaSE提供了用于解析的API，本章简单讲解如何用Java进行XML文档内容的增删查减。
Java 提供了 Document（文档）、Attribute（属性节点）、Text（文本节点）、Element（元素节点）及Node

1、获取到文档对象来操作XML文档
	//利用抽象类DocumentBuilderFactory中的...]]></description><category></category></item><item><title><![CDATA[Java面试题：简述final,finally和finalize的区别]]></title><link>https://blog.youkuaiyun.com/CK_self/article/details/100127756</link><guid>https://blog.youkuaiyun.com/CK_self/article/details/100127756</guid><author>CK_self</author><pubDate>Wed, 28 Aug 2019 22:10:59 +0800</pubDate><description><![CDATA[简述
1、final 修饰符（关键字）
如果一个类被final修饰，意味着它不能再派生出新的子类，不能作为父类被继承。因此，一个类不能既被声明为abstract，又被声明为final。
如果一个方法被final修饰，意味着它只能被使用，不能被重写（override）。
如果一个变量被final修饰，意味着它在使用过程中，不可以被改变。而且，被final修饰的变量的初始化有两种方式：1、在final...]]></description><category></category></item></channel></rss>