- 博客(130)
- 资源 (1)
- 收藏
- 关注

原创 zk应用
1.锁前提:zk中有有序节点,临时节点在用户断开连接后,会自动失效,并且客户端可以watch机制,对一个节点目录进行操作的监视,一旦改目录有变化会通知客户端, 排他锁:只有一个客户端能够获得锁 获取锁:客户端通过create()在/exclusive/下创建lock临时节点/exclusive/lock节点,对于同一个节点,zk保证只有一个用户会创建成功,即得到了锁。其他未得到锁的客...
2019-08-12 18:46:06
193

原创 vim
查找关键字/xxxn:下一个从底向上找 1?xxx行号set numberset nonumber跳转到指定行n gg:n跳转到最后一行shift + g跳转到第一行gg
2019-08-12 18:45:01
133

原创 thrift
1.RPC基本原理RPC(Remote Procedure Call),远程过程调用,大部分的RPC框架都遵循如下三个开发步骤: 定义一个接口说明文件:描述了对象(结构体)、对象成员、接口方法等一系列信息; 通过RPC框架所提供的编译器,将接口说明文件编译成具体的语言文件; 在客户端和服务器端分别引入RPC编译器所生成的文件,即可像调用本地方法一样调用服务端代码; ...
2019-08-12 18:44:13
228

原创 tcp粘包
1.粘包在长连接下,有发送端A与接收端B,A先发送了一段数据“first data”,然后发送了第二段数据“second data”,而B只接收到一段数据“first datasecond data”。2.缓冲区在tcp传输过程中,为了保证数据的可靠传输,会进行重发,所以会有内核缓存区对接收方未应答的数据进行缓存。接收方也有一个内核缓存区,用于接收数据。在socket编程中,发送发的s...
2019-08-12 18:38:45
235

原创 shell
1. 变量赋值a="abc"echo "$a"2.数组my_array=(A B "C" D)echo "第一个元素为: ${my_array[0]}"echo "第二个元素为: ${my_array[1]}"echo "第三个元素为: ${my_array[2]}"echo "第四个元素为: ${my_array[3]}"#获取所有元素echo "数组的元素为:...
2019-08-12 18:37:26
161

原创 redis
1.数据类型 string: String类型是Redis中最为基础的数据存储类型,是二进制安全的字符串,该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中String类型的Value最多可以容纳的数据长度是512M。 list: List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,可以在其头部(left)和尾部(rig...
2019-08-12 18:29:32
131

原创 maven
1.基本<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati...
2019-08-12 18:27:50
122

原创 JVM命令
查看进程top 利用率ps , ps -ef | grep "java"jsp查看线程ps -mp 227105 -o THREAD,tid,timeprintf "%x\n" 14065 转换成16进制jstack 14063 |grep 36f1 -A 30 查询对应线程jstat -gcutil 14063 2000 10 查看gcjstackjsta...
2019-08-12 18:26:20
155

原创 docker
docker基本概念Docker 镜像(Image):就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,...
2019-08-12 18:23:47
100

原创 git
1.创建git initgit remote add origin ssh://git@git.sankuai.com/~yangsihao/test.gitgit config --global user.name "杨思豪"git config --global user.email "yangsihao@meituan.com"2.版本回退git reset --har...
2019-08-12 17:15:54
141

原创 windows向虚拟机中的kafka提交数据总是超时
kafka默认监听localhost端口,所以如果外面需要访问需要修改,server.properties文件# The address the socket server listens on. It will get the value returned from # java.net.InetAddress.getCanonicalHostName() if not configur...
2019-03-12 13:16:52
413

转载 Mysql脏读、不可重复读、幻读
脏读、不可重复读、幻读:也许有很多读者会对上述隔离级别中提及到的 脏读、不可重复读、幻读 的理解有点吃力,我在这里尝试使用通俗的方式来解释这三种语义:脏读:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。也就是说,当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据。...
2018-08-21 10:53:46
283

转载 java中Thread的sleep() 与yield()区别,yield()与join()区别
sleep() 与yield()1.sleep()方法给其他线程运行机会的时候,不考虑线程的优先级,因此当高优先级线程sleep()后,低优先级任务有机会运行;但是yield()只会给同优先级或更高优先级线程运行的机会,甚至可能是自己继续运行2.线程调用sleep()后,转入阻塞状态,而调用yield()后转入了就绪状态。3.sleep方法声明抛出InterruptedExceptio...
2018-08-03 10:02:17
284

转载 java多线程join方法
// 加锁当前线程对象public final synchronized void join() throws InterruptedException {// 条件不满足,继续等待while (isAlive()) {wait(0);} // 条件符合,方法返回} 当前线程调用join方法,会等待join方法完成才继续下面的程序。原理就是得到了锁,然后调用wait方法,等待唤醒 ...
2018-06-30 09:54:55
207

转载 33.了解字符串连接的性能
不要这样连接字符串,字符串是不可变的,每次连接都会创建新的字符串 String s = ""; for(int i = 0; i < 10000; i++){ s += "String"; } 应该利用StringBuilder StringBuilder builder = new...
2018-06-24 08:18:33
153

转载 java双重检查锁定
在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化 。这称为延迟初始化或懒加载 看一个不安全的延迟初始化:class UnsafeLazyInitialization { private static Instance instance; public static Instance getInstance() { ...
2018-06-18 10:21:16
334

转载 java中的Threadlocal对象
对于java多线程中的共享对象Threadlocal对象,在不同线程取到的值不同,查看源码实现,其实每个value值并不保存Threadlocal对象中,而是保存在每个线程中的定义的Map型变量Threadlocals中,键值是这个共享变量Threadlocal对象,每个线程有相同的Threadlocal对象作为的键,但value是不一样的。 ...
2018-06-17 16:07:48
252

转载 java中的final对重排序的限制与逸出
在java中,为了保证final域的正确使用,对重排序进行了一些限制1.在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序2.初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序 有了这个限制,如下A,B线程分别调用writer和reader方法时,可以保证final变量被初始化了 publ...
2018-06-17 15:52:34
2023

转载 Volatile
volatile在多线程中有以下特性:可见性:对一个volatile变量的读,总能看见(任意线程)对这个volatle共享变量的最新更新值原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性 对于可见性,不仅对volatile修饰的那一个变量可见,对使用volatile变量的线程里的其他普通变量也可见,所以volatile实现了两个线程...
2018-06-17 11:29:23
154

转载 java序列化注意
java序列化能够保证对象状态的持久保存,但一些复杂情况还是比较难处理:1.当父类继承了Serializable接口是,所有子类都可以被序列化2.子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),但是在子类中属性仍能正确序列化3.如果序列化的属性是对象,则这个对象必须实现Serializable接口,否则会报错4.在反序列化时,如果对象的属性有修改或...
2018-06-08 09:09:17
908

转载 几种常见排序算法java实现
选择排序、插入排序、希尔排序class Sort{ //选择排序 public static void Selection_sort(Comparable[] a){ int N = a.length; for(int i = 0; i < N; i++){ int min = i; for(in...
2018-06-06 20:25:03
171

转载 java 克隆
浅复制import java.util.Date;import java.util.GregorianCalendar;class Employee implements Cloneable{ private String name; private double salary; private Date hireDay; public Employee(S...
2018-05-29 20:02:54
140

转载 8.改写equals时总是要改写hashCode
HashMap、HashSet是常用的容器,他们查找的快速性依赖散列表完成的,所以,如果要用对象去作为键,则必须去改写hashCode。通常,规范是如果两个对象的equals值相等,那么调用这两个对象中任一个对象的hashCode方法必须产生同样的整数结果。 在改写HashCode时,尽量选取非可变的域去生成hashCode,这样避免同一个对象产生不同的hashCode带来的困扰,特...
2018-05-26 19:41:15
335

转载 HashMap “bucket”、“负载因子”
https://blog.youkuaiyun.com/wenyiqingnianiii/article/details/52204136https://blog.youkuaiyun.com/baidu_37107022/article/details/76283696
2018-05-06 09:54:56
443

转载 Java哈夫曼树与文件压缩和解压缩
之前看到一篇文章,博主给出了压缩文件:https://blog.youkuaiyun.com/bluesky_usc/article/details/54185106在这基础上,添加了对文件进行了解压的方法:import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Queu...
2018-05-05 16:44:26
1239

转载 代理模式
代理简单来说,你把你自己能要做的事,让别人代你完成,比如你把作业交给课代表,课代表转交给老师静态代理interface Interface{ void doSomething(); void somethingElse(String arg);}class RealObject implements Interface{ public void doSomething...
2018-04-17 10:56:21
160

转载 java—String
String对象的创建有两种方式 String s1 = "hello"; String s2 = new String("hello");这两种方式有什么区别呢?推荐:https://www.zhihu.com/question/22739143 String中,native方法Intern()是关键对于String的Intern()的分析:https://www.cnblogs.co...
2018-04-11 19:51:49
663

转载 java-多态
多态 后期绑定 java中,除了static和final 方法,其他所有方法都是后期绑定的,先举一个多态的简单例子class Instrument{ public void play(){ System.out.println("play instrument"); }}class Piano extends Instrument{ public...
2018-04-08 14:56:56
429

转载 java—final变量、方法、类
final数据class Value{ int i; public Value(int i){ this.i = i; }}class FinalData{ public static Random rand = new Random(47); public String id; public FinalData(String ...
2018-04-07 22:57:20
224
转载 SpringMVC源码探索之RequestBody的工作原理
https://blog.youkuaiyun.com/asahinokawa/article/details/86683631
2019-09-18 15:46:35
355
转载 Java线程池中的核心线程是如何被重复利用的
https://blog.youkuaiyun.com/MingHuang2017/article/details/79571529
2019-09-03 16:43:12
391
原创 红黑树的特性
(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。[这里指到叶子节点的路径]...
2019-09-03 09:59:21
719
原创 最长递增子序列长度
public int findMaxSubLen(int[] arr){ if (arr == null){ return 0; } int[] longest = new int[arr.length]; for (int i = 0; i < longest.length; i++){ ...
2019-08-28 08:09:35
156
原创 虚拟内存好处
1)虚拟内存管理可以控制物理内存的访问权限访问的虚拟页若没有读写权限,则触发一个保护异常,终止进程。2)虚拟内存让每个进程有独立的地址空间对于私有区域来说,当不同进程对该区域做修改时,会触发写时拷贝,为新进程维护私有的虚拟地址空间。3)VA到PA的映射会给分配和释放内存带来方便。物理内存不连续的地址,可映射到连续的虚拟内存地址。4)内存效率高使用了页面调度,不会造成大量的数据装入装...
2019-08-22 21:41:08
1989
原创 primary key主键与unique键
mysql主键的属性: 1.主键具有唯一性:是指一张表里只能有一个主键; 2.主键作用:主键primary key是为了唯一标识一个字段,使其唯一且不能为NULL,自动生成索引; 3.隐含定义:如果这些列没有被明确地定义为NOT NULL,MySQL会隐含地定义这些列。 4.主键其实也是索引,甚至在MySQL的术...
2019-08-15 16:13:36
354
原创 mysql日志
什么是binlog、redo logbinlog属于逻辑日志,是逻辑操作。innodb redo属于物理日志,是物理变更。逻辑日志有个缺点是难以并行,而物理日志可以比较好的并行操作。1.binlog是MySQL Server层记录的日志,redo log是InnoDB存储引擎层的日志。 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。2. 选择binlo...
2019-08-15 16:07:13
155
原创 MVCC版本号控制
mysql的innodb采用的是行锁,而且采用了多版本并发控制来提高读操作的性能。什么是多版本并发控制呢 ?其实就是在每一行记录的后面增加两个隐藏列,记录创建版本号和删除版本号,而每一个事务在启动的时候,都有一个唯一的递增的版本号。1、在插入操作时 : 记录的创建版本号就是事务版本号。比如我插入一条记录, 事务id 假设是1 ,那么记录如下:也就是说,创建版本号就是事务版本号。...
2019-08-15 15:55:02
1465
转载 深入理解Java类加载器(ClassLoader)
https://blog.youkuaiyun.com/javazejian/article/details/73413292
2019-08-13 22:06:02
106
原创 单元测试
1.单元测试(Unit Test)单元测试(Unit Test)是一种对隔离的小型代码单元进行测试的测试实践。单元:在Java中,一般情况下,单元就是方法。特殊地,根据业务情况,可以把一个类或者一个应用看做单元。小型:小型代码块的用意更加明确,测试编写更加容易,易覆盖全;小型代码块所提供的反馈环路较短,测试速度更快。隔离:对于单元中的外部依赖(如网络、文件等),应该用模拟来完成依赖...
2019-08-13 06:59:52
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人