<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[diding5932的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/diding5932</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; diding5932]]></copyright><item><title><![CDATA[redis（二）]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764788</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764788</guid><author>diding5932</author><pubDate>Tue, 29 Jan 2019 22:58:00 +0800</pubDate><description><![CDATA[springboot整合redis:
第一：添加相关jar包
&lt;dependency&gt;
 　　&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;			　　&lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt;		&lt;/depe...]]></description><category></category></item><item><title><![CDATA[Redis（一）]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764784</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764784</guid><author>diding5932</author><pubDate>Tue, 29 Jan 2019 22:51:00 +0800</pubDate><description><![CDATA[redis需学习那些知识：主从复制，哨兵模式、读写分离以及集群
什么是redis：
　　redis是一种nosql缓存数据库，是一个高性能的key-value数据库。
为什么用redis?
　　　　 Redis支持数据的持久化，可以将内存中的数据保存在磁盘中，重启的时候可以再次加载进行使用。
　　　　 Redis不仅仅支持简单的key-value类型的数据，同时还提供list，...]]></description><category></category></item><item><title><![CDATA[《深入理解java虚拟机》 精华总结（面试）]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764782</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764782</guid><author>diding5932</author><pubDate>Sat, 19 Jan 2019 23:19:00 +0800</pubDate><description><![CDATA[《深入理解java虚拟机》 精华总结（面试）


本文转载：Wuuboy


一、运行时数据区域
Java虚拟机管理的内存包括几个运行时数据内存：方法区、虚拟机栈、本地方法栈、堆、程序计数器，其中方法区和堆是由线程共享的数据区，其他几个是线程隔离的数据区
1.1程序计数器
程序计数器是一块较小的内存，他可以看做是当前线程所执行的行号指示器。字节码解释器工作的...]]></description><category></category></item><item><title><![CDATA[Java内存结构]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764781</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764781</guid><author>diding5932</author><pubDate>Sat, 12 Jan 2019 22:23:00 +0800</pubDate><description><![CDATA[本文来自转载：https://www.cnblogs.com/jiyukai/p/6665199.html
Java虚拟机规范的规定，JVM自动管理的内存将会包括以下几个运行时数据区域。


程序计数器
　　程序计数器（Program Counter Register）是JVM中一块较小的内存区域，保存着当前线程执行的虚拟机字节码指令的内存地址。Java多线程的实现，其实是通过...]]></description><category></category></item><item><title><![CDATA[动态代理设计模式]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764780</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764780</guid><author>diding5932</author><pubDate>Wed, 09 Jan 2019 00:08:00 +0800</pubDate><description><![CDATA[通过JDK实现动态代理
如果要实现动态代理,那么你要编写的那个代理类就需要实现一个InvocationHandle接口
java.lang.reflect.InvocationHandler.看到reflect我们就能知道,动态代理肯定是通过反射来实现的了,这个接口中有一个方法:

　　　　Object invoke(Object proxy, Method method, O...]]></description><category></category></item><item><title><![CDATA[静态代理设计模式]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764779</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764779</guid><author>diding5932</author><pubDate>Tue, 08 Jan 2019 23:16:00 +0800</pubDate><description><![CDATA[代理模式是指客户端并不直接调用实际的对象，而是通过调用代理，来间接的调用实际的对象。
为什么需要代理: 　　
　　打一个最简单的比方,我现在想要学习,那么就必须得把书包拿过来,把书掏出来,准备好纸笔,然后开始学习,等学完了我还得收拾书,把书塞回书包里,还得整理一下书包,这是一个完整的学习的过程,但是我很懒,不想动弹,只想学习,那可能就得让妈妈帮我把书包拿过来,把书打开,我只管学习就好...]]></description><category></category></item><item><title><![CDATA[Callable与Future模式]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764776</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764776</guid><author>diding5932</author><pubDate>Fri, 21 Dec 2018 21:32:00 +0800</pubDate><description><![CDATA[在Java中，创建线程一般有两种方式，一种是继承Thread类，一种是实现Runnable接口。然而，这两种方式的缺点是在线程任务执行结束后，无法获取执行结果。如果2个线程执行，其中一个线程执行完成后另外一个线程才能执行，我们只能采用共享变量或共享存储区以及线程通信的方式实现获得任务结果的目的。Java中，也提供了使用Callable和Future来实现获取任务结果的操作。Cal...]]></description><category></category></item><item><title><![CDATA[SpringBoot(十)  性能优化]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764775</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764775</guid><author>diding5932</author><pubDate>Thu, 13 Dec 2018 21:52:00 +0800</pubDate><description><![CDATA[默认情况下，我们会使用 @SpringBootApplication 注解来自动获取应用的配置信息，但这样也会给应用带来一些副作用.
1、会导致项目启动时间变长。当启动一个大的应用程序,或将做大量的集成测试启动应用程序时，影响会特别明显。
2、会加载一些不需要的多余的实例（beans）。
3、会增加 CPU 消耗。
因为 @SpringBootApplication会触发自动配置...]]></description><category></category></item><item><title><![CDATA[springboot（九）：事物管理]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764774</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764774</guid><author>diding5932</author><pubDate>Wed, 05 Dec 2018 00:07:00 +0800</pubDate><description><![CDATA[SpringBoot整合事物管理
　　 Springboot默认集成事物,只主要在方法上加上@Transactional即可。
多数据源情况下事物怎么管理事物
　　
对于这种传统的分布式事物管理，采用jta+atomikos分布式事物管理。Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器。
新增jta-atomikos依赖
　　 &lt;depend...]]></description><category></category></item><item><title><![CDATA[springboot（八）：整合多数据源]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764772</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764772</guid><author>diding5932</author><pubDate>Tue, 04 Dec 2018 23:24:00 +0800</pubDate><description><![CDATA[数据源是如何划分：
　　按包名（业务）和注解划分 ；例如：com.test.learn01----使用datasource1； com.test.learn02----使用datasource2。
项目目录结构：


配置文件中新增两个数据源

创建数据源DataSource1Config
@Configuration // 注册到springboot容器中@Mapp...]]></description><category></category></item><item><title><![CDATA[lombok让代码更简洁]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764771</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764771</guid><author>diding5932</author><pubDate>Sun, 02 Dec 2018 23:41:00 +0800</pubDate><description><![CDATA[开发工具中需要安装lombok插件，
eclipse 安装 lombok
1、下载 lombok.jar   https://projectlombok.org/download.html
2、将 lombok.jar 放在 eclipse 安装目录下，和 eclipse.ini 文件平级的
　　运行 lombok.jar　　在 lombok.jar 的目录下，运行：　　...]]></description><category></category></item><item><title><![CDATA[Java锁的深度化]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764758</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764758</guid><author>diding5932</author><pubDate>Mon, 19 Nov 2018 23:23:00 +0800</pubDate><description><![CDATA[Java锁分为：Lock轻量级锁，和synchronized重量级锁 重入锁（什么是重入锁）、 读写锁 、悲观和乐观锁 、CAS无锁、 自旋锁、 AQS锁 、非公平锁、公平锁 、互斥锁 、排他锁 、分布式锁：（redis和Zookeeper实现分布式锁）。
悲观锁
　　 悲观锁悲观的认为每一次操作都会造成更新丢失问题，在每次查询时加上排他锁（每次去拿数据的时候都认为别人会修改，所以每...]]></description><category></category></item><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764757</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764757</guid><author>diding5932</author><pubDate>Sun, 18 Nov 2018 23:44:00 +0800</pubDate><description><![CDATA[什么是线程池？
　　　线程池是指在初始化一个多线程应用程序过程中创建一个线程集合，然后在需要执行新的任务时重用这些线程而不是新建一个线程。
为什么要使用线程池？
　　　　使用线程必须通过线程池提供，不允许在任何应用中显示的创建线程， 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统的资源开销，解决了资源不足问题，如果不使用线程池，有可能造成系统创建大量同类线程而导致消耗内...]]></description><category></category></item><item><title><![CDATA[并发队列]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764755</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764755</guid><author>diding5932</author><pubDate>Sun, 18 Nov 2018 22:48:00 +0800</pubDate><description><![CDATA[Java队列中存在有界和无界2种，区别在于有界就是有限制的，无界是无限的。
在并发中存在阻塞和非阻塞。
　　阻塞：生产者写入队列慢的时候就会进入阻塞，等待消费者消费。当一个线程试图对一个空队列进行出队列操作时，它将会被阻塞，除非有另一个线程进行了入队列操作。
第一：ConcurrentLinkedQueue
　　　　ConcurrentLinkedQueue ：是一个适用于高...]]></description><category></category></item><item><title><![CDATA[CountDownLatch、CyclicBarrier和 Semaphore]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764756</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764756</guid><author>diding5932</author><pubDate>Sat, 17 Nov 2018 23:39:00 +0800</pubDate><description><![CDATA[　　CountDownLatch类位于java.util.concurrent包下，CountDownLatch是一个同步工具类，它允许一个或多个线程一直等待，直到其他线程的操作执行完后再执行。比如有一个任务A，它要等待其他4个任务执行完毕之后才能执行，此时就可以利用CountDownLatch来实现这种功能了。
　　　　CountDownLatch是通过一个计数器来实现的，计数器的初...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764753</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764753</guid><author>diding5932</author><pubDate>Sat, 17 Nov 2018 22:15:00 +0800</pubDate><description><![CDATA[HashTable，它是线程安全的，它在所有涉及到多线程操作的都加上了synchronized关键字来锁住整个table，这就意味着所有的线程都在竞争一把锁，在多线程的环境下，它是安全的，但是无疑是效率低下的。
ConcurrentHashMap:
　　ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分，每个段其实就是一个小的HashTable,它们有...]]></description><category></category></item><item><title><![CDATA[Lock锁 和 ThreadLoca]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764754</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764754</guid><author>diding5932</author><pubDate>Fri, 16 Nov 2018 22:13:00 +0800</pubDate><description><![CDATA[synchronized锁。
　　 从代码执行开始上锁 ，代码结束或者代码异常释放锁，他是内置锁，自动化实现锁，缺点：效率低（强锁的资源），阻塞、扩展性不高，不能自定义。
Lock锁和synchronized的区别。
　　 Lock是手动去实现锁，使用前必须先获取锁 ，在使用锁，最后需要释放锁；Lock 接口的实现允许锁在不同的作用范围内获取和释放，并允许以任何顺序获取和释放多个锁...]]></description><category></category></item><item><title><![CDATA[多线程之间通讯]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764752</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764752</guid><author>diding5932</author><pubDate>Fri, 16 Nov 2018 00:48:00 +0800</pubDate><description><![CDATA[多线程之间通讯：就是多个线程在操作同一个资源，但是操作的动作不同
　　现在需要实现，生产一台电机，销售一台电机问题。

实现代码：





运行结果：数据发生错乱，造成线程安全问题

解决线程安全问题：通过wait()、notify来解决。





wait和sleep的区别：
　　wait可以指定时间也可以不指定时间，sleep必须执行时间；...]]></description><category></category></item><item><title><![CDATA[多线程之间实现同步]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764748</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764748</guid><author>diding5932</author><pubDate>Wed, 14 Nov 2018 00:58:00 +0800</pubDate><description><![CDATA[为什么有线程安全问题
　　当多个线程同时共享同一个全局变量或静态变量，做写的操作时，可能会发生数据冲突问题，也就是线程安全问题。但是做读操作是不会发生数据冲突问题。
线程安全问题前提条件：
　　必须是在多线环境下，多个线程共享一个资源，对资源进行写操作（非原子性操作）
什么是多线程之间同步
　　当多个线程共享同一个资源,不会受到其他线程的干扰。
需求说明：2个窗口同时卖100...]]></description><category></category></item><item><title><![CDATA[多线程快速入门]]></title><link>https://blog.youkuaiyun.com/diding5932/article/details/101764747</link><guid>https://blog.youkuaiyun.com/diding5932/article/details/101764747</guid><author>diding5932</author><pubDate>Tue, 13 Nov 2018 23:00:00 +0800</pubDate><description><![CDATA[应用程序：就是可以执行的软件，如QQ、YY语言。
什么进程：就是正在运行的程序，是所有线程的集合。
什么线程：每一个线程是进程中的一条执行路径，一个独立执行的单元。（是独立运行的一个执行路径或者执行顺序）。 每个线程互补影响，因为自己都是独立运行的。
创建线程有方式：
  继承Thread类,2、实现Runnanle接口、3、使用匿名内部类、4、实现Callable接口 ，5...]]></description><category></category></item></channel></rss>