<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_38818613的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_38818613</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_38818613]]></copyright><item><title><![CDATA[JAVA三大特性]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/121013906</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/121013906</guid><author>weixin_38818613</author><pubDate>Fri, 29 Oct 2021 14:40:57 +0800</pubDate><description><![CDATA[JAVA三大特性封装继承多态
封装

在面向对象程式设计方法中，封装（英语Encapsulation）是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障，防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据，必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码，而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护，也加强了程式码的安全性。


封装的优点

良好的封装能够减少耦合。
类内部的结构可以自由修改。
可]]></description><category></category></item><item><title><![CDATA[JAVA线程池ThreadPoolExecutor简介]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/120845679</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/120845679</guid><author>weixin_38818613</author><pubDate>Tue, 19 Oct 2021 16:39:43 +0800</pubDate><description><![CDATA[ThreadPoolExecutor简介ThreadPoolExecutor线程池的7个参数ThreadPoolExecutor执行流程ThreadPoolExecutor注意事项
ThreadPoolExecutor线程池的7个参数

1.corePoolSize核心线程数，int类型，不能小于0。这个参数代表线程池中存活最小的线程数。
2.maximumPoolSize线程池最大线程数量，int类型，得大于0，而且不小于corePoolSize。这个线程池中最多允许有maximumPoolSize个线程]]></description><category></category></item><item><title><![CDATA[volatile如何防止重排序]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/120084567</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/120084567</guid><author>weixin_38818613</author><pubDate>Fri, 03 Sep 2021 16:47:06 +0800</pubDate><description><![CDATA[volatile如何防止重排序
什么是重排序
在不影响单线程程序执行结果得前提下，计算机为了最大限度得发挥机器性能，会对机器指令重排序优化

重排序会遵循as-if-serial与happens-before原则
as-if-serial语义
不管怎么重排序（编译器和处理器为了提高并行度），（单线程）程序的执行结果不能被改变。编译器，runtime和处理器都必须遵守as-if-serial语义。
为了遵守as-if-serial语义，编译器和处理器不会对存在数据依赖关系的操作做重排序，因为这种重排序的话会改]]></description><category></category></item><item><title><![CDATA[volatile为何不保证原子性]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/119906632</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/119906632</guid><author>weixin_38818613</author><pubDate>Wed, 25 Aug 2021 11:34:29 +0800</pubDate><description><![CDATA[volatile为何不保证原子性
我们先写个简单得例子，如下图：

这里我用了10个线程，每个线程都执行1万次num++，希望结果是10万，但是结果却是小于等于10万。
我们画个图解释一下这是因为什么，如果看不懂得话可以先看一下我上一篇得，里面解释了每步得具体流程
链接: https://blog.youkuaiyun.com/weixin_38818613/article/details/119804684
这是我简单画得，如下图：

我只画了两个线程说明一下，线程1和线程2得执行逻辑应该是这样得：
1.线程1和线程]]></description><category></category></item><item><title><![CDATA[volatile如何保证可见性]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/119804684</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/119804684</guid><author>weixin_38818613</author><pubDate>Tue, 24 Aug 2021 15:53:05 +0800</pubDate><description><![CDATA[volatile如何保证可见性？
首先要了解一下JMM(java内存模型)原子操作，如下：
1.read(读取)：从主内存读取数据
2.load(载入)：将主内存的数据写入工作内存
3.use(使用)：从工作内存读取数据计算
4.assign(赋值)：将计算好的值重新赋值到工作内存中
5.store(存储)：将工作内存的值写入主内存
6.write(写入)：将store过去的变量值赋值给主内存中的变量
7.lock(锁定)：将主内存变量枷锁，标识未线程独占状态
8.unlock(解锁)：将主内存变量解锁，解]]></description><category></category></item><item><title><![CDATA[Sql Server单表分区]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/119453783</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/119453783</guid><author>weixin_38818613</author><pubDate>Fri, 06 Aug 2021 14:53:28 +0800</pubDate><description><![CDATA[Sql Server单表分区
由于数据中单表数据过千万，影响插入查询等效率。最简单的方式就是把表分区，这样不用改动代码，只需要在数据库中几步就可以操作好，省时省力。
我拿我们数据库中的一个日志表为例子，是用时间进行分区的。这个表Sys_AccessLog中的数据有 三千多万条。
首先第一步，创建分组。这里我是创建了9个组。
alter database [ODC] add filegroup Sys_AccessLog_1
alter database [ODC] add filegroup Sys_Acc]]></description><category></category></item><item><title><![CDATA[spring boot + sharding-jdbc + sqlserver整合]]></title><link>https://blog.youkuaiyun.com/weixin_38818613/article/details/117672613</link><guid>https://blog.youkuaiyun.com/weixin_38818613/article/details/117672613</guid><author>weixin_38818613</author><pubDate>Mon, 07 Jun 2021 19:56:33 +0800</pubDate><description><![CDATA[spring boot + sharding-jdbc + sqlserver
最近因为数据库表中数据量过大，超过千万级别得表又用得比方多，要是自己手动写分表汇总得算法工作量比较大，所以研究了一下sharding-jdbc。网上都是用得mysql数据库得，用SQL server数据库得比较少，所以我用SQL server写了个简单得demo，记录一下。
首先用得是springboot (2.3.2.RELEASE)

sharding-jdbc(4.1.1) + mybatis(2.1.1)+druid(1]]></description><category></category></item></channel></rss>