- 博客(74)
- 资源 (4)
- 收藏
- 关注
原创 consumer函数式编程
package test;import java.util.function.Consumer;/*** consumer函数式编程* 满足几个要求* 标签标示@FunctionalInterface* 仅且有一个接口(默认匹配)* 回调思想,或观察者思想,形参给你一个处理的逻辑没有数据流* 数据流不是它带过来,是主函数自己* * @author Admi...
2019-11-16 09:54:30
473
原创 Mysql---锁
数据库锁。从大到小。数据库锁。把整个库锁了。整个库锁有啥用。比如备份某个节点的数据库。但是很少人这么做。因为你锁定了整个库,无论从库,还是主库,都是不允许的。影响正常运作。现在几乎很少这么玩。如果是用innodb,可以采用可重复读事务,采用视图的原理。这样就算死机,锁也是自然断开。表锁。大家都有。锁整个表。表锁分元数据锁跟读写锁。元数据锁,是涉及元数据结构的修改。全部数据增删改都得暂停...
2019-03-12 23:43:57
142
原创 Mysql---索引
索引,先归纳下,种类。主键索引,普通索引,联合索引,全文索引。主键索引,又是唯一索引,聚簇索引(一个key带着一整条记录)。能用主键尽量用主键。面对多次查找。浪费复杂度。普通索引,没啥特别,就一颗树。或者其他数据结构。当前索引值作为key,带着其他索引。那key的长度就是当前key的长度,空间考虑。能短尽量短。设计的好。无需再次回头查找主键索引的树。查联合即可。比如select id ...
2019-03-06 00:33:59
114
原创 Mysql---日志
dba很牛逼的说我可以恢复到某一天的数据。说明他日志备份到了那一天之前。这里涉及两种日志。归档日志binlog和redologbinlog为server的日志。存储了所有的updatesql记录。类似吧。redolog是innodb的日志。存储了物理逻辑操作。binlog是存满了,继续存另外一个文件。到达指定大小,继续开启。redolog是指定大小。环形存储,存到尽头,...
2019-02-28 22:50:31
92
原创 Mysql---sql执行
说update。跟他有关的,想到就讲,学到就讲。常规的jdbc,加载驱动,建立连接,创建声明,执行sql,断开连接,释放资源;java代码,建立连接。这就涉及数据的验证,连接器,用户名,密码的验证。权限一次性查询。即使权限变更,依然有效。连接器到了mysql 服务端server这里。分析sql语法,sql以空格形式断开,判断是否合符语法。如from 有没有 挂一个表。要不然就直接报...
2019-02-28 00:03:41
107
原创 高并发---分布式事务
一、2pc(two-phase commitment)请求进来,生成全局雪花id,存本地线程变量,存request请求头部head;消费者请求走服务1,自己做hystrix熔断;服务里面以标签配置事务,事务做切点的拦截,切面干事情,开启子线程,且把子线程阻塞,一旦放开阻塞走提交。请求主线程继续走,并返回结果。开启主线程,死循环检查过期事务;(locksupport,线程阻塞)...
2019-01-25 17:19:43
319
原创 数据结构---回溯算法之八皇宫
public class EightQueue { public void doIterator(int level,int[] target){ if(level < 1)return; if(level > 8)return; for(int column=1;column<=target.length;column...
2019-01-10 10:30:51
247
原创 数据结构---堆应用
类似百度热点搜索。堆排序。多数据集(下面构造三个数据集合,没了再取),取极值(前十名) java.util.ArrayList<Integer> arrayListFirst = new java.util.ArrayList<Integer>(); arrayListFirst.add(1); arrayListFir...
2018-12-27 22:47:53
198
原创 数据结构---hashmap简易
数组+链表(可改造红黑树)根据id查询value值。快速import java.util.Arrays;public class HashMapDemo { public int DEFAULT_TABLE_LENGTH = 16; public double DEFAULT_LOAD_FACTOR = 0.75; public HashMapEntry[]...
2018-12-26 23:34:22
217
原创 数据结构---跳表改造
存储键值对id:value值存储100万数据对查询value区间,比如10到100;个数?查询id区间,比如10到100;个数?查询某id或某value,排名第几?在跳表实体加个索引号; SkipList skipList = new SkipList(); skipList.put(5, 5); skipList.put(55, 55)...
2018-12-26 21:52:33
159
原创 高并发---CopyOnWriteArrayList
CopyOnWriteArrayList解读源码: 待续 demo:public class Write implements java.lang.Runnable{ java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList...
2018-12-21 23:25:17
179
原创 spring---简易版
springmvc一个dispatchservlet分发到对应的类里面的方法;对应的类里面的方法,由一个集合映射;springIOC,控制反转,由class反射实例化 实际操作:第一步,创建个maven的web项目;第二步,dispatchservlet的创建由这一步产生的其他步骤 1、创建等下要用到的标签 这里就搞两个。一个controller...
2018-12-19 19:02:38
212
1
原创 数据结构---跳表
ConcurrentSikpListMap:有序采用cas无锁机制保证多线程竞态条件;死循环+volatile(as if serial内存屏障)+cas(compareAndSwap)时间复杂度(假设是平分,总的个数是n,在真实的代码是随机产生level。哈哈复杂度由复杂了):第一层 0到n;第二层 0到n的一半,n的一半到n第三层 0到n的...
2018-12-13 22:34:20
204
原创 数据结构---递归
递归,单个帧栈深度,方法栈深度考虑,阶层的话考虑,极值问题递归考虑两个点,一、递归的公式二、递归的终极条件 private int j = 0; public long doSomething(long i) throws Exception{ if(i>Long.MAX_VALUE)throw new java.lang.Exception("lon...
2018-12-10 21:55:34
143
原创 数据结构---图
图的两种表示方式,邻接表(点及点对应一级节点链表),邻接矩阵(多少个点即多少数组长度,二维)图的广度搜索(层层递进,最近距离,利用队列收集每一层的节点,遍历下一层节点),深度搜索(递归获取直属节点,终极节点为终结条件)public class TableGraph{ int pointCount; java.util.ArrayList<Integ...
2018-12-10 21:50:19
140
原创 高并发---锁
先说说常见锁工具的理解一、ReentrantLock:重入锁,递归锁,轻量锁,悲观锁 public class A implements java.lang.Runnable{ java.util.concurrent.locks.Lock reentrantLock = new java.util.concurrent.locks.ReentrantLock(); ...
2018-12-01 11:53:04
238
原创 高并发---Semaphore
Semaphore计数器,计数获取到才执行,没获取到,就阻塞等待对比:CountDownLatch计数器,它不阻塞各个计数的地方,但是阻塞总计数的地方;CyclicBarrier栅栏,它阻塞它存在的地方,唯有大家都到齐了,才开始跑;public class test { java.util.concurrent.Semaphore semaphore = new java.ut...
2018-12-01 01:19:24
243
原创 高并发---CyclicBarrier
他在的地方都暂停了。只有都到齐了。才大家一起执行。这里是大家都暂停,楼下是总的地方暂停跟计数器,CountDownLatch区别,计数器是我计数的地方不会暂停,但是呢,记总数的地方,暂停了。只有总数跟计数的个数加起来才总的地方执行;public class test { java.util.concurrent.CyclicBarrier cyclicBarrier = new j...
2018-12-01 01:12:00
126
原创 高并发---CountDownLatch计数器
CountDownLatch计数器,计数完毕,wait才开始执行public class test { java.util.concurrent.CountDownLatch countDownLatch = new java.util.concurrent.CountDownLatch(2); public class A implements java.lang.Runna...
2018-12-01 01:02:39
264
原创 高并发---通信wait/notify
illlegalstateexception是lock对象,对象头标示没有给获取;即00,01等标识没有改变;public class test { public class C{ int i = 1; } public class A implements Runnable{ C lock; public A(C loc...
2018-11-30 23:52:22
155
原创 高并发---as if serial 重排序
重排序,存在多线程中的问题,在单线程中存在,但是不影响结果。不计较;重排序是cpu与内存间性能优化产生的。寄存器存放值昂贵;代码行,不存在数据依赖;即可以重排序;a的值为1赋值操作比b赋值true慢;颠倒了顺序。就是输出a值;public class test { int a = 0; boolean b = false; public class A im...
2018-11-30 23:16:31
143
原创 jdk源码读---Object、String
ObjecthashCode:根据class内存地址结合哈希算法,计算对应哈希值equals:内存地址同一个否;若重定义,相等,hashCode必须相等。jdk明确规定;notify:自己对自己的唤醒,对别人无效,对象都拥有;wait:自己的等待,需要自己来唤醒,区别sleep这是线程自己的。Stringprivate final char value[];说明String...
2018-11-30 22:49:51
182
原创 高并发---AtomicInteger
public class Count implements java.lang.Runnable{ String threadName; AtomicInteger a; public Count(String threadName,AtomicInteger a){ this.threadName = th...
2018-11-30 08:40:59
228
原创 高并发---volatile
可见性代表:volatile保证输出最大值肯定是100,原子性没有保证,禁止重排序 public class Count implements java.lang.Runnable{ String threadName; volatile int a; public Count(String threadName,int a){...
2018-11-29 23:51:19
117
原创 数据结构---散列(哈希)
总的思想:主干数组:无需多解释哈希计算:根据字节码内存地址计算哈希key:哈希与数组长度减一位与运算value:对应存储的值哈希冲突:这个区别各个帮派的地方;以下个帮派一、链表法HashMapfor (Entry<K,V> e = table[indexFor(hash, table.length)]; e != null; ...
2018-11-29 23:21:29
205
原创 高并发---threadlocal
核心思想:每个线程存有一个map,这个map里面数组存储entry,是键threadlocal对应的value。意思一个线程对应多个键threadlocal对应多个value;(看源码区分this和thread.currentthread,一个是字节码对象一个是当前线程对象)核心元素:只有一点ThreadLocal.ThreadLocalMap下面三行代码来自Thread/* ...
2018-11-29 22:45:18
300
原创 jdk源码读---HashMap
几个注意点:Entry:内部类,填充类loadFactor :扩展因子0.75EMPTY_TABLE:空对象模式的使用threshold : 阀值,就是容量乘以0.75的大小,大于就扩充size:当前已经填充了的个数,非空个数modCount:标识此hashmap给修改了多少次。作用在遍历过程,若出现开始值与过程中,值发现不一致。fast fail;hashSeed...
2018-11-28 23:44:36
102
原创 设计模式---建造
建造接口建造者建造对象建造指挥者 public class People{ public String hand; public String head; public String foot; public String getHand() { return hand; ...
2018-11-28 00:19:23
124
原创 设计模式---桥接
共性与特性,抽象类的引用,或结合接口;基本抽象的引用就够说明,共性,类的实际实现;特性,把方法交给他们自己去实现;不写demo;jdk也没有啥经典例子;...
2018-11-28 00:02:43
93
原创 设计模式---访问
public interface Target{ public void access(Visitor visitor); } public interface Visitor{ public void visit(Computer target); public void visit(CPU target); ...
2018-11-27 15:21:24
113
原创 设计模式---状态
public interface StateI{ public void doAction(); } public class CloseState implements StateI{ public String stateName; public void doAction() { System.out.p...
2018-11-27 14:28:53
130
原创 设计模式---组合
让数据组合成树的形式,比如树头有孩子,且孩子自己也是树头。统一的接口定义树中的成员。无论是孩子还是树头,都统一用同一个接口标示。这就是重点;java.util.hashmap.putall方法并没有这种组合的思想。因为putall不是树头。而是遍历把所有孩子给存进去。 public interface IFile{ public void getFile(); }...
2018-11-26 01:32:15
97
原创 设计模式---备忘录
//备忘录,不影响XX原有数据结构的对象封闭性的情况下,备忘存储实例对象,要用的时候拿出来jdk经典案例,java.util.Date用了long类型fasttime副本存储Date public class XX{ public String name; public String age; public String getN...
2018-11-22 01:03:02
136
原创 jdk源码读---java.util.Timer
java.util.Calendar calendar = java.util.Calendar.getInstance(); calendar.setTime(new java.util.Date()); java.util.Timer timer = new java.util.Timer(); timer.schedule(new java.u...
2018-11-22 00:44:43
319
手机端移动图书馆,分为手机端和服务器端,采用了mvc模式,服务端采用了servlet技术。
2010-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人