- 博客(74)
- 资源 (4)
- 收藏
- 关注
原创 consumer函数式编程
package test; import java.util.function.Consumer; /** * consumer函数式编程 * 满足几个要求 * 标签标示@FunctionalInterface * 仅且有一个接口(默认匹配) * 回调思想,或观察者思想,形参给你一个处理的逻辑没有数据流 * 数据流不是它带过来,是主函数自己 * * @author Admi...
2019-11-16 09:54:30
498
原创 Mysql---锁
数据库锁。 从大到小。 数据库锁。把整个库锁了。整个库锁有啥用。比如备份某个节点的数据库。但是很少人这么做。因为你锁定了整个库,无论从库,还是主库,都是不允许的。影响正常运作。现在几乎很少这么玩。如果是用innodb,可以采用可重复读事务,采用视图的原理。这样就算死机,锁也是自然断开。 表锁。大家都有。锁整个表。表锁分元数据锁跟读写锁。元数据锁,是涉及元数据结构的修改。全部数据增删改都得暂停...
2019-03-12 23:43:57
170
原创 Mysql---索引
索引,先归纳下,种类。 主键索引,普通索引,联合索引,全文索引。 主键索引,又是唯一索引,聚簇索引(一个key带着一整条记录)。能用主键尽量用主键。面对多次查找。浪费复杂度。 普通索引,没啥特别,就一颗树。或者其他数据结构。当前索引值作为key,带着其他索引。那key的长度就是当前key的长度,空间考虑。能短尽量短。设计的好。无需再次回头查找主键索引的树。查联合即可。比如select id ...
2019-03-06 00:33:59
136
原创 Mysql---日志
dba很牛逼的说我可以恢复到某一天的数据。 说明他日志备份到了那一天之前。 这里涉及两种日志。 归档日志binlog和redolog binlog为server的日志。存储了所有的updatesql记录。类似吧。 redolog是innodb的日志。存储了物理逻辑操作。 binlog是存满了,继续存另外一个文件。到达指定大小,继续开启。 redolog是指定大小。环形存储,存到尽头,...
2019-02-28 22:50:31
114
原创 Mysql---sql执行
说update。跟他有关的,想到就讲,学到就讲。 常规的jdbc,加载驱动,建立连接,创建声明,执行sql,断开连接,释放资源; java代码,建立连接。这就涉及数据的验证,连接器,用户名,密码的验证。权限一次性查询。即使权限变更,依然有效。 连接器到了mysql 服务端server这里。 分析sql语法,sql以空格形式断开,判断是否合符语法。如from 有没有 挂一个表。要不然就直接报...
2019-02-28 00:03:41
129
原创 高并发---分布式事务
一、2pc(two-phase commitment) 请求进来,生成全局雪花id,存本地线程变量,存request请求头部head; 消费者请求走服务1, 自己做hystrix熔断; 服务里面以标签配置事务,事务做切点的拦截,切面干事情,开启子线程,且把子线程阻塞,一旦放开阻塞走提交。请求主线程继续走,并返回结果。开启主线程,死循环检查过期事务;(locksupport,线程阻塞) ...
2019-01-25 17:19:43
344
原创 数据结构---回溯算法之八皇宫
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
271
原创 数据结构---堆应用
类似百度热点搜索。堆排序。 多数据集(下面构造三个数据集合,没了再取),取极值(前十名) java.util.ArrayList<Integer> arrayListFirst = new java.util.ArrayList<Integer>(); arrayListFirst.add(1); arrayListFir...
2018-12-27 22:47:53
226
原创 数据结构---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
236
原创 数据结构---跳表改造
存储键值对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
183
原创 高并发---CopyOnWriteArrayList
CopyOnWriteArrayList解读源码: 待续 demo: public class Write implements java.lang.Runnable{ java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList...
2018-12-21 23:25:17
208
原创 spring---简易版
springmvc 一个dispatchservlet分发到对应的类里面的方法; 对应的类里面的方法,由一个集合映射; spring IOC,控制反转,由class反射实例化 实际操作: 第一步,创建个maven的web项目; 第二步,dispatchservlet的创建 由这一步产生的其他步骤 1、创建等下要用到的标签 这里就搞两个。一个controller...
2018-12-19 19:02:38
234
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
231
原创 数据结构---递归
递归,单个帧栈深度,方法栈深度考虑,阶层的话考虑,极值问题 递归考虑两个点, 一、递归的公式 二、递归的终极条件 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
167
原创 数据结构---图
图的两种表示方式,邻接表(点及点对应一级节点链表),邻接矩阵(多少个点即多少数组长度,二维) 图的广度搜索(层层递进,最近距离,利用队列收集每一层的节点,遍历下一层节点), 深度搜索(递归获取直属节点,终极节点为终结条件) public class TableGraph{ int pointCount; java.util.ArrayList<Integ...
2018-12-10 21:50:19
160
原创 高并发---锁
先说说常见锁工具的理解 一、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
265
原创 高并发---Semaphore
Semaphore计数器,计数获取到才执行,没获取到,就阻塞等待 对比:CountDownLatch计数器,它不阻塞各个计数的地方,但是阻塞总计数的地方; CyclicBarrier栅栏,它阻塞它存在的地方,唯有大家都到齐了,才开始跑; public class test { java.util.concurrent.Semaphore semaphore = new java.ut...
2018-12-01 01:19:24
267
原创 高并发---CyclicBarrier
他在的地方都暂停了。只有都到齐了。才大家一起执行。这里是大家都暂停,楼下是总的地方暂停 跟计数器,CountDownLatch区别,计数器是我计数的地方不会暂停,但是呢,记总数的地方,暂停了。只有总数跟计数的个数加起来才总的地方执行; public class test { java.util.concurrent.CyclicBarrier cyclicBarrier = new j...
2018-12-01 01:12:00
150
原创 高并发---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
288
原创 高并发---通信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
179
原创 高并发---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
185
原创 jdk源码读---Object、String
Object hashCode:根据class内存地址结合哈希算法,计算对应哈希值 equals:内存地址同一个否;若重定义,相等,hashCode必须相等。jdk明确规定; notify:自己对自己的唤醒,对别人无效,对象都拥有; wait:自己的等待,需要自己来唤醒,区别sleep这是线程自己的。 String private final char value[];说明String...
2018-11-30 22:49:51
206
原创 高并发---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
254
原创 高并发---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
135
原创 数据结构---散列(哈希)
总的思想: 主干数组:无需多解释 哈希计算:根据字节码内存地址计算哈希 key:哈希与数组长度减一位与运算 value:对应存储的值 哈希冲突:这个区别各个帮派的地方;以下个帮派 一、链表法 HashMap for (Entry<K,V> e = table[indexFor(hash, table.length)]; e != null; ...
2018-11-29 23:21:29
228
原创 高并发---threadlocal
核心思想: 每个线程存有一个map,这个map里面数组存储entry,是键threadlocal对应的value。意思一个线程对应多个键threadlocal对应多个value;(看源码区分this和thread.currentthread,一个是字节码对象一个是当前线程对象) 核心元素:只有一点 ThreadLocal.ThreadLocalMap 下面三行代码来自Thread /* ...
2018-11-29 22:45:18
325
原创 jdk源码读---HashMap
几个注意点: Entry:内部类,填充类 loadFactor :扩展因子0.75 EMPTY_TABLE:空对象模式的使用 threshold : 阀值,就是容量乘以0.75的大小,大于就扩充 size:当前已经填充了的个数,非空个数 modCount:标识此hashmap给修改了多少次。作用在遍历过程,若出现开始值与过程中,值发现不一致。fast fail; hashSeed ...
2018-11-28 23:44:36
121
原创 设计模式---建造
建造接口 建造者 建造对象 建造指挥者 public class People{ public String hand; public String head; public String foot; public String getHand() { return hand; ...
2018-11-28 00:19:23
150
原创 设计模式---桥接
共性与特性,抽象类的引用,或结合接口; 基本抽象的引用就够说明,共性,类的实际实现;特性,把方法交给他们自己去实现; 不写demo;jdk也没有啥经典例子;...
2018-11-28 00:02:43
112
原创 设计模式---访问
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
134
原创 设计模式---状态
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
146
原创 设计模式---组合
让数据组合成树的形式,比如树头有孩子,且孩子自己也是树头。统一的接口定义树中的成员。无论是孩子还是树头,都统一用同一个接口标示。这就是重点;java.util.hashmap.putall方法并没有这种组合的思想。因为putall不是树头。而是遍历把所有孩子给存进去。 public interface IFile{ public void getFile(); }...
2018-11-26 01:32:15
119
原创 设计模式---备忘录
//备忘录,不影响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
160
原创 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
337
手机端移动图书馆,分为手机端和服务器端,采用了mvc模式,服务端采用了servlet技术。
2010-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅