<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Morgan_Xiang的专栏]]></title><description><![CDATA[越学越多，越多越是什么都不会]]></description><link>https://blog.youkuaiyun.com/javabird945</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; javabird945]]></copyright><item><title><![CDATA[多线程下的单例模式]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80598449</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80598449</guid><author>javabird945</author><pubDate>Thu, 07 Jun 2018 11:16:02 +0800</pubDate><description><![CDATA[        单例模式就不在这里详细介绍了，这里要了解的是如何使单例模式遇到多线程是安全的。        单例模式分为饿汉模式和懒汉模式。        饿汉模式就类在加载的时候就创建实例，当使用类的时候已经将对象创建好了 public class SingletonMode1 {

    private static SingletonMode1 singletonMode1 = new ...]]></description><category></category></item><item><title><![CDATA[读写锁 ReentrantReadWriteLock(共享锁+排他锁)]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80580425</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80580425</guid><author>javabird945</author><pubDate>Tue, 05 Jun 2018 15:02:46 +0800</pubDate><description><![CDATA[        重入锁ReentrantLock具有完全互斥排他的效果，即在同一时间，只有获取锁的线程才能够执行相应的操作，这样保证了线程安全，但是某些情况下也造成了效率低下的问题，比如被锁的代码块中只有读操作，不会修改任何变量，这样的话就会效率较低，那么我们可以使用JDK提供的另一种读写锁ReentrantReadWriteLock。        ReentrantReadWriteLock包...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock常用方法（三）]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80576621</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80576621</guid><author>javabird945</author><pubDate>Tue, 05 Jun 2018 11:04:19 +0800</pubDate><description><![CDATA[1. isHeldByCurrentThread()    查询当前线程是否保持锁定。    isLocked()    查询是否存在任意线程保持此锁定。public class ReentrantLockMethodTest7 {

    private ReentrantLock lock = new ReentrantLock();

    public void testMethod(...]]></description><category></category></item><item><title><![CDATA[Java基础之并发实用工具]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80574056</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80574056</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 22:53:28 +0800</pubDate><description><![CDATA[   并发实用工具位于java.util.concurrent包以及它的两个子包（java.util.concurrent.atomic和java.util.concurrent.locks）。   java.util.concurrent包定义的关键特征有：    同步器    执行器    并发集合    Fork/Join框架    1. 同步器        同步器提供了同步多线程之间交互...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock常用方法（二）]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80569781</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80569781</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 18:06:58 +0800</pubDate><description><![CDATA[重入锁ReentrantLock常用方法1. boolean hasQueuedThread(Thread thread)    Queries whether the given thread is waiting to acquire this lock    查询当前线程是否在等待获取此锁    boolean hasQueuedThreads()    Queries whether an...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock常用方法（一）]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80567606</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80567606</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 16:03:35 +0800</pubDate><description><![CDATA[        重入锁ReentrantLock常用方法        1. int getHoldCount()             Queries the number of holds on this lock by the current thread.            查询当前线程保持此锁定的个数，即调用lock()方法的次数。public class ReentrantLoc...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock之公平锁与非公平锁]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80566596</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80566596</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 14:54:30 +0800</pubDate><description><![CDATA[        公平锁：线程获取锁的顺序是按照线程加锁的顺序来分配的，即先进先出。        非公平锁：线程获取锁的顺序是随机的，听天由命。        怎样构建公平锁与非公平锁？        类ReentrantLock有两个构造方法，其中一个是传递一个boolean类型的参数，标识创建一个具有给定公平策略的ReentrantLock，即：1. 创建公平锁或非公平锁public clas...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock+Condition 实现生产者/消费者模式]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80566060</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80566060</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 14:07:47 +0800</pubDate><description><![CDATA[        使用ReentrantLock+Condition同样可以实现经典模式生产者/消费者模式        开始测试        1. 两个线程一对一交替执行线程交替执行的方法public class TestPC {

    private volatile boolean printA = true;
    private Lock lock = new ReentrantL...]]></description><category></category></item><item><title><![CDATA[重入锁ReentrantLock+Condition 实现等待/通知]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80563344</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80563344</guid><author>javabird945</author><pubDate>Mon, 04 Jun 2018 12:33:04 +0800</pubDate><description><![CDATA[        在Java多线程编程中，可以使用Synchronized来实现同步，可以synchronized类，方法或代码块，另外还可以使用ReentrantLock来实现同样的功能，而且功能更加强大。        1. 使用ReentrantLock实现同步public class ReentrantLockTest {

    private Lock lock = new Reent...]]></description><category></category></item><item><title><![CDATA[JVM-内存区域]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80537523</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80537523</guid><author>javabird945</author><pubDate>Fri, 01 Jun 2018 15:52:12 +0800</pubDate><description><![CDATA[        发现自己老了，好多东西开始慢慢忘却，，趁现在还记得一点，感觉记下来，如果得到各位读者的补充或指正，不胜感激。        先画个简易图，看起来清晰明了        其中深色的区域是线程共享数据区，浅色的是线程隔离数据区。        1. Java堆            Java堆是用来存放Java对象实例的内存区域，所有的对象实例以及数组都在堆这分配，而且它也是JVM管理...]]></description><category></category></item><item><title><![CDATA[多线程通信（四）join()方法的使用]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80534322</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80534322</guid><author>javabird945</author><pubDate>Fri, 01 Jun 2018 12:47:10 +0800</pubDate><description><![CDATA[        开发中常常会遇见这样的问题，主线程在运行的时候，需要一些子线程去进行相应的运算，如果主线程需要子线程提供一个处理后的数据，那么主线程就必须要等子线程运行完后才能继续执行。先看下面的这种情况影视作品的一个拍摄场景中，这次不是主角（主线程）的独角戏，他需要一个配角（子线程）来搭戏，但是配角还没来，主角只能等配角来了才能开始，要是配角没来，主角非要开始的话那这个场景的戏就乱了。publi...]]></description><category></category></item><item><title><![CDATA[多线程通信（三）多线程通知/等待交叉进行]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80533532</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80533532</guid><author>javabird945</author><pubDate>Fri, 01 Jun 2018 10:14:02 +0800</pubDate><description><![CDATA[        如何向A、B两个文件中写数据并且向A、B中写数据是交叉进行的，假定向A中写数据的是A线程，向B中写数据的是B线程，那么可以通过定义一个标识，用来控制A、B线程的交叉效果。定义输出类public class FileOutput {

    // 定义volatile类型的变量，让多个线程能从公共内存中直接获取值
    private volatile boolean print...]]></description><category></category></item><item><title><![CDATA[多线程通信（二）生产者/消费者模式]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80525304</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80525304</guid><author>javabird945</author><pubDate>Thu, 31 May 2018 20:21:04 +0800</pubDate><description><![CDATA[        生产者/消费者模式其原理是基于wait/notify实现的。        通过代码更能便于理解，废话不多说，上代码。        生成者和消费者一对一模式        生产者public class Producer {

    private String obj;

    public Producer(String obj){

        super();
 ...]]></description><category></category></item><item><title><![CDATA[多线程通信（一）wait/notify]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/80522807</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/80522807</guid><author>javabird945</author><pubDate>Thu, 31 May 2018 15:35:02 +0800</pubDate><description><![CDATA[测试]]></description><category></category></item><item><title><![CDATA[视图、索引、存储过程优缺点]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/31375071</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/31375071</guid><author>javabird945</author><pubDate>Mon, 16 Jun 2014 14:11:27 +0800</pubDate><description><![CDATA[1.视图
(1).什么是视图？
视图(View)作为一种数据库对象，为用户提供了一个可以检索数据表中的数据方式。用户通过视图来浏览数据表中感兴趣的部分或全部数据，而数据的物理存储位置仍然在表中。
视图是一个虚拟表，并不代表任何物理数据，只是用来查看数据的窗口而已。视图并不是以一组数据的形式存储在数据库中，数据库中只存储视图的定义，而不存储视图对应的数据，这些数据仍存储在导出视图的基本表中。当]]></description><category></category></item><item><title><![CDATA[Java调用MySQL存储过程]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/31355135</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/31355135</guid><author>javabird945</author><pubDate>Mon, 16 Jun 2014 11:49:04 +0800</pubDate><description><![CDATA[在MySQL存储过程的学习（一）（二）]]></description><category></category></item><item><title><![CDATA[MySQL存储过程的学习（二）]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/31347177</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/31347177</guid><author>javabird945</author><pubDate>Mon, 16 Jun 2014 10:42:42 +0800</pubDate><description><![CDATA[在（一）中完成了对存储过程的增删改查，接下来学习下怎么使用存储过程]]></description><category></category></item><item><title><![CDATA[MySQL存储过程的学习（一）]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/30500553</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/30500553</guid><author>javabird945</author><pubDate>Fri, 13 Jun 2014 16:56:44 +0800</pubDate><description><![CDATA[1.存储过程的创建
CREATE PROCEDURE proc_demo()
BEGIN
SELECT username FROM t_user;
END]]></description><category></category></item><item><title><![CDATA[使用HttpSessionBindingListener统计在线人数]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/30460029</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/30460029</guid><author>javabird945</author><pubDate>Fri, 13 Jun 2014 10:24:43 +0800</pubDate><description><![CDATA[使用HttpSessionBindingListener统计在线人数
统计在线]]></description><category></category></item><item><title><![CDATA[Java定时器]]></title><link>https://blog.youkuaiyun.com/javabird945/article/details/30259881</link><guid>https://blog.youkuaiyun.com/javabird945/article/details/30259881</guid><author>javabird945</author><pubDate>Thu, 12 Jun 2014 17:09:17 +0800</pubDate><description><![CDATA[现在JavaWeb工程中经常见有人问]]></description><category></category></item></channel></rss>