08 2019 档案

摘要:快速排序 推荐这篇博客 "排序二 快速排序" 快速排序的定义 算法第四版: 快速排序是分治的排序算法,它将数组分成两个子数组,将两部分独立的排序。 快速排序的思想 快速排序把数组一分为二,通过base元素,做到左边都比他小,右边都比他大,这个需要while循环判断,一分为二是递归调用 稳定性 首先讲 阅读全文
posted @ 2019-08-30 16:59 碧海潮心 阅读(230) 评论(0) 推荐(0)
摘要:java并发初探ConcurrentSkipListMap ConcurrentSkipListMap以调表这种数据结构以空间换时间获得效率,通过volatile和CAS操作保证线程安全,而且它保证了有序性,比TreeMap比线程安全。 跳表结构 通过level down right可以更快插入和查 阅读全文
posted @ 2019-08-28 19:46 碧海潮心 阅读(217) 评论(0) 推荐(0)
摘要:阻塞队列 常见的阻塞队列有ArrayBlockingQueue,LinkedBlockingDeque,LinkedBlockingQueue,这些队列有界且可以阻塞线程 ArrayBlockingQueue ArrayBlockingQueue是有界的阻塞队列,LinkedBlockingDequ 阅读全文
posted @ 2019-08-28 19:45 碧海潮心 阅读(209) 评论(0) 推荐(0)
摘要:java反射 反射是java的重要特性之一,java.lang.reflect 是jdk支持反射的重要包,我下面可能会对构造器Constructor,属性Filed,方法Method会用到。反射其实很常见,在java源码、spring就有很多运用,Spring AOP就应用到了反射。设计模式中代理模 阅读全文
posted @ 2019-08-26 18:59 碧海潮心 阅读(193) 评论(0) 推荐(0)
摘要:java并发初探ConcurrentHashMap Doug Lea在java并发上创造了不可磨灭的功劳,ConcurrentHashMap体现这位大师的非凡能力。 1.8中ConcurrentHashMap的线程安全 1.volatile Node []table保证数组的可见性 2.get操作没 阅读全文
posted @ 2019-08-22 19:01 碧海潮心 阅读(281) 评论(0) 推荐(0)
摘要:插入排序 插入排序也是一个很常见的排序,大家很多都以扑克牌作为例子,非常的形象。我们打牌的时候, 从第一张牌开始,它就是有序的; 第二张牌我们排序后放到第一张的左侧或者右侧; 每来一张牌就都会排序好,直至所有的牌 插入排序的实现流程 1.外循环N 1次,从第一张牌开始就是有序的,从i=1开始外循环 阅读全文
posted @ 2019-08-20 15:54 碧海潮心 阅读(152) 评论(0) 推荐(0)
摘要:选择排序 从学校到工作,用的最多的就是选择排序,最具讽刺的是用的还是交换次数最多的选择排序。虽然不是学软件的,也实在是汗颜啊。 算法第四版: 时间复杂度 交换次数是N次 ,比较次数是N的平方的二分之一。无法如何排序,比较次数都没变化。 与冒泡、插入排序相比 冒泡排序和插入排序的交换次数最坏都是N的平 阅读全文
posted @ 2019-08-20 15:53 碧海潮心 阅读(119) 评论(0) 推荐(0)
摘要:冒泡排序 冒泡排序(bubble sort),以升序来说,最后的排列一定是从小到大的。冒泡就是从最低端(数组末尾)开始,相邻的两个元素交换,把小的值放在前面,第一次冒泡就把最小的元素放到最顶端(数组首位)。冒泡排序是交换排序 冒泡的逻辑 1.双层遍历 2.外循环i,比如i=0,就把最小值放到arra 阅读全文
posted @ 2019-08-19 19:56 碧海潮心 阅读(326) 评论(0) 推荐(0)
摘要:java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volatile定义内部数组保证了可见性, 之所以叫CopyOnWrite就是因为很多方法都是通过Array. 阅读全文
posted @ 2019-08-18 21:11 碧海潮心 阅读(1735) 评论(0) 推荐(0)
摘要:java并发之CopyOnWriteArraySet CopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,持有CopyOnWriteArrayList的内部对象,它的迭代器也是CopyOnWriteArrayList的迭代器,add操作通过addAllAbse 阅读全文
posted @ 2019-08-18 21:11 碧海潮心 阅读(427) 评论(0) 推荐(0)
摘要:java并发之Future与Callable使用 这篇文章需要大家知道线程、线程池的知识,尤其是线程池。 有的时候我们要获取线程的执行结果,这个时候就需要用到Callable、Future、FutureTask了 先看下Future、Callable接口、RunnableFuture、FutureT 阅读全文
posted @ 2019-08-16 17:17 碧海潮心 阅读(586) 评论(0) 推荐(0)
摘要:java并发初探ThreadPoolExecutor拒绝策略 ThreadPoolExecuter构造器 corePoolSize是核心线程池,就是常驻线程池数量; maximumPoolSize是最大线程池数量,如果队列满了,就会创建新的线程任务。如果与corePoolSize一样大小, 那么就是 阅读全文
posted @ 2019-08-14 16:01 碧海潮心 阅读(428) 评论(0) 推荐(0)
摘要:java并发初探CyclicBarrier CyclicBarrier的作用 CyclicBarrier,“循环屏障”的作用就是一系列的线程等待直至达到屏障的“瓶颈点”。 具体的使用就是就是一些列的线程调用CyclicBarrier得await()方法进入等待,直至达到 CyclicBarrier设 阅读全文
posted @ 2019-08-12 11:23 碧海潮心 阅读(160) 评论(0) 推荐(0)
摘要:java并发初探CountDownLatch CountDownLatch是同步工具类能够允许一个或者多个线程等待直到其他线程完成操作。 当前前程A调用CountDownLatch的await方法进入阻塞(LockSupportd的park方法), 其他线程调用CountDownLatch调用cou 阅读全文
posted @ 2019-08-09 17:48 碧海潮心 阅读(119) 评论(0) 推荐(0)
摘要:java并发LockSupport LockSupport是阻塞和唤醒线程的重要类。 park()方法使得 当前线程 阻塞 unpark(Thread thread)唤醒线程 例子 可以把注释取消再执行,就会发现park()方法使得 当前线程 阻塞会使得main线程阻塞,无法结束。 java pac 阅读全文
posted @ 2019-08-09 11:45 碧海潮心 阅读(159) 评论(0) 推荐(0)
摘要:java并发初探ReentrantWriteReadLock ReenWriteReadLock类的优秀博客 "ReentrantReadWriteLock读写锁详解" "Java多线程系列 “JUC锁”08之 共享锁和ReentrantReadWriteLock" ReentrantWriteRe 阅读全文
posted @ 2019-08-09 11:33 碧海潮心 阅读(344) 评论(0) 推荐(0)
摘要:mysql视图初探 官方例子如下,从官方的例子就可以看出来视图就是提供一种快捷查询。用视图来查询一些常用的结果。 官网例子使用 表名替换后查询view 表名替换后原有的view肯定不可用 sql mysql alter table goodsview rename to goodviewtable; 阅读全文
posted @ 2019-08-07 15:34 碧海潮心 阅读(161) 评论(0) 推荐(0)
摘要:索引 索引 推荐博客 "MySQL索引原理以及查询优化" 创建表 插入数据 临时增加插入效率 存储过程快速插入 sql delimiter $$ create procedure auto_insert1() BEGIN declare i int default 1; while(i delimi 阅读全文
posted @ 2019-08-05 16:37 碧海潮心 阅读(183) 评论(0) 推荐(0)
摘要:java并发AtomicIntegerFieldUpdater 支持对象的成员变量原子操作类由AtomicIntegerFieldUpdater,AtomicLongFieldUpdater, AtomicReferenceFieldUpdater。 AtomicIntegerFieldUpdate 阅读全文
posted @ 2019-08-04 23:05 碧海潮心 阅读(227) 评论(0) 推荐(0)
摘要:java并发AtomicReference AtomicReference的作用 已经介绍过AtomicInteger,AtomicIntegerArray,AtomicReference是针对对象的。 他通过CAS和volatile保证了对象操作的原子性和可见性,既然是引用,就会造成引用对象的变化 阅读全文
posted @ 2019-08-04 13:53 碧海潮心 阅读(335) 评论(0) 推荐(0)
摘要:java并发AtomicIntegerArray AtomicIntegerArray的原子性 AtomicIntegerArray的原子性是对数组的元素的,不是数组。 源码基于openjdk 1.8 AtomicIntegerArray方法测试 java package javalearn.jav 阅读全文
posted @ 2019-08-04 12:47 碧海潮心 阅读(371) 评论(0) 推荐(0)
摘要:原子类之AtomicLong java线程中的操作,需要满足原子性、可见性等原则,比如i++这样的操作不具备原子性, A线程读取了i,另一个线程执行i++,A线程再执行i++就会引发线程安全问题 推荐学习的AtomicInteger和AtomicLong博客 "你还在用Synchronized?At 阅读全文
posted @ 2019-08-01 21:13 碧海潮心 阅读(1350) 评论(0) 推荐(0)
摘要:消费者和生产者模式 用继承Thread方式,用wait和notifyAll方法实现。 消费者和生产者模式的特点 1. 什么时候生产:仓库没有满的时候,生产者这可以生产,消费者也可以消费,仓库满的时候停止生产 2. 什么时候消费: 仓库有货的时候消费,没有货不能消费 3. 通知生产:消费者发现没有货, 阅读全文
posted @ 2019-08-01 12:57 碧海潮心 阅读(213) 评论(0) 推荐(0)