自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 JVM-从熟悉到精通

JVM、JMM、GC、三色标记、常见调优参数

2023-03-06 10:13:24 746

原创 Redis进阶-Redis6.x

redis6.x差缺补漏源码级别底层实现原理rehash、ziplist、数据同步、事务..

2023-02-27 23:16:46 284

原创 zk知识点

zk 分布式协调服务 分布式注册中心 分布式锁

2023-02-22 14:33:55 483

原创 IO知识整理

IO知识整理面向操作系统IO面向网络IOBIO NIO 多路复用IOselect poll epollnetty

2023-02-15 19:31:56 516

原创 《Java 8实战》

Java 8实战行为参数化行为参数化就是可以帮助你处理频繁变更的需求的一种软件开发模式。一言以蔽之,它意味 着拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用, 这意味着你可以推迟这块代码的执行。例如,你可以将代码块作为参数传递给另一个方法,稍后 再去执行它。这样,这个方法的行为就基于那块代码被参数化了。Lambda 表达式可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它 有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列

2022-04-01 18:08:55 642

原创 线程池知识一文疏通

线程池知识一文疏通线程池的好处线程池能够对线程进行统一分配,调优和监控:降低资源消耗(线程无限制地创建,然后使用完毕后销毁)提高响应速度(无须创建线程)提高线程的可管理性一、阻塞队列BlockingQueueBlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue。一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。也就是说,它是有限的。如果该阻塞队列

2021-10-09 19:20:30 166

原创 Redis知识整理(九) -- 缓存&数据库

Redis知识整理(九) – 缓存&数据库一、缓存与数据库的区别缓存特点不是全量数据数据不重要热数据随访问变化(内存大小瓶颈)key的有效期业务逻辑推动定义有效时间设置的过期时间跟访问没有关系修改key的value 过期时间根据新的设置时间走,没有设置时间则为-1 永不过期可以设置定时ExpaireAt key timestamp业务运转推动随着访问变化,淘汰掉冷数据Memery Managment(redis配置文件 内存控制)max

2021-09-10 17:16:28 473

原创 Redis知识整理(八) -- 事务&布隆过滤器

Redis知识整理(八) – 事务&布隆过滤器事务特点Redis事务没有回滚选用redis的本质就是因为速度快,所以作者设计的事务的时候依然是考虑到执行的速度问题使用主要命令:DISCARD:取消事务EXEC:执行事务MULTI:开启事务WATCH:查看事务,类似于乐观锁,CAS(compare and set)细节点:两个事务,事务A和事务B,事务A先开启,然后事务B开启,事务A get k1,事务B del k1,事务B先提交,则k1被删除,事务A提交的时候获取不到结果

2021-08-11 22:39:02 134

原创 IO知识整理

IO知识整理IO分类异步IOAIO同步IONIO、BIO、Signal driven IO、IO multiplexingIO模型BIOBlockingIO同步阻塞IOblocking IO的特点就是在IO执行的两个阶段都被block了。NIONon-Blocking IO同步非阻塞IOnonblocking IO的特点是用户进程需要不断的主动询问kernel数据好了没有。信号驱动IOSignal driven IO向内核注册一个信号处理函数,sigio信号通知用户态i

2021-08-11 20:59:59 137

原创 Redis知识整理(七) -- 进阶(管道&发布订阅)

Redis知识整理(六) – 进阶(管道&发布订阅)一、Redis的管道(Pipelining)解释一次发送多次命令命令行操作#安装ncyum install nc#运行nc 建立socket连接--- nc localhost 6379keys *0set k1 hello+OK#去redis查看结果6379> keys *k16370> get k1"hello"#测试echo识别\n--- echo -e "sdsd\nbdsds"sd

2021-08-10 22:30:26 130

原创 Redis知识整理(六) -- Sorted Set/ZSet类型

Redis知识整理(六) – Sorted Set/ZSet类型一、类型特征去重且排序set保证去重排序指的是值的排序物理内存为左小右大二、数据类型key - valuevalue的类型为zset则代表value的元素需要一个score(分数),作为排序的基准同时索引依然正常存在 – 正负索引 0/-3 1/-2 2/-1score都为1的情况下 按照名称排序三、常用命令> zadd 8 apple 2 banana 3 orange(integer) 3# 查看结

2021-08-04 22:45:46 323

原创 Redis知识整理(五) -- Hash&Set类型

Redis知识整理(五) – Hash&Set类型Hash类型一、数据格式Hash类型指的是value的类型所以Hash类型指的是 value的类型是 key - value类似于HashMap中嵌套了一层HashMap二、常用命令# 为key对应的value的某个属性赋值> hset lisi name lisi(integer) 1# 为key对应的value中的多个属性一起赋值> hmset lisi age 11 address beijingOK#

2021-08-03 22:35:55 1352

原创 Redis知识整理(四) -- List类型

Redis知识整理(四) – List类型一、数据结构value 为list类型,链表key中存储两个指针 head tailhead指针指向头节点tail指针指向尾节点key中存储这两个指针可以帮助更快的找到头尾元素二、常用命令lpush&Rpush向元素中赋值lpush将多个元素挨个放到链表的左边rpush将多个元素挨个放到链表的右边> lpush k1 a b c d e f> rpush k2 a b c d e f以上 k1的value为

2021-08-02 22:33:47 274

原创 Redis知识整理(三) -- String类型

Redis知识整理(三)String类型 – 字符型set的NX与XXNXIf Not Exist如果不存在这个key则设置这个key的值为value一般用于分布式锁,多个client获取一个连接用于创建XXif Exist只有存在这个key才可以操作用于更新下图中 k1对应的value为hello k2不存在mset与mget批量处理一次set多个kv,一次获取多个k值> mset k3 a k4 b> mget k3 k4APPEN

2021-07-29 22:00:21 127

原创 Redis知识整理(二) -- IO模型

Redis知识整理(二)Epoll介绍IO模型发展BIO 同步阻塞多个线程读取各自文件描述符是互相阻塞的(Blocking)NIO 同步非阻塞内核进化 内核的socket可以是非阻塞的fd nonblock这种情况下 不用多个线程,使用一个线程读取多个fd轮询:发生在用户空间同步非阻塞 多路复用select模型同步非阻塞,多路复用批量调用内核,在内核中做轮询直到一个或多个fd准备完毕,返回给上游epoll模型系统调用:mmap共

2021-07-27 23:11:19 346

原创 Redis知识整理(一) -- unix机器指标及基础知识

Redis知识整理(一)相关基础知识磁盘指标寻址(ms)带宽(G/M)内存指标寻址(ns)带宽很大IO Buffer磁盘有磁道和扇区一个扇区 512Byte,小带来一个成本变大:索引读写4K 操作系统无论读多少,都是最小单位为4K从磁盘拿时间单位秒 >> 毫秒 >> 微秒 >> 纳秒内存磁盘对比磁盘比内存慢了十万倍(寻址)数据存储发展进程数据存储在文件中查看数据grep awkjava的io流随着文件变大

2021-07-26 23:16:42 167

原创 设计模式总结

设计模式总结设计模式分类创建型Abstract FactoryBuilderFactory MethodProtoTypeSingleton结构型AdapterBridgeCompositeDecoratorFacadeFlyWeightProxy行为型Chain of ResponsibilityCommandInterpreterIteratorMediatorMementoObserverStateStrategyTemplate Meth

2021-07-22 22:37:51 82

原创 设计模式(二一)解释器模式(Intepreter)

解释器模式(Intepreter)解释解释脚本语言举例:正则表达式解析器类似于编译器,解释一门语言开发中并不能用上且写起来很麻烦。

2021-07-22 22:10:08 80

原创 设计模式(二十)状态模式(State)

状态模式(State)解释根据状态决定行为如果有多个state,且有可能扩展state,则干脆将state抽象出来,不同的state实现各自的逻辑类图代码public class MM { String name; MMState state = new MMHappyState(); public void smile() { state.smile(); } public void cry() { state.c

2021-07-22 21:49:20 86

原创 设计模式(十九)模板方法模式(Template Method)

模板方法模式(Template Method)解释钩子函数 回调函数都算作是模板方法重写一个方法,系统自动帮我们调用的都可以称为模板方法模式类图代码public class Main { public static void main(String[] args) { F f = new C1(); f.m(); }}abstract class F { public void m() { op1();

2021-07-22 21:17:46 83

原创 设计模式(十八)备忘录模式(Memento)

备忘录模式(Memento)解释记录状态,快照存盘类似于照片的感觉类图知识点序列化/持久化标记型接口 Serializable不实现接口,直接做序列化会报错如果类中有不想做序列化的对象,添加关键字transient存盘的时候,可以使用ObjectOutputStream读盘的时候,可以使用ObjectInputStreampublic void save(){ File f = new File("/opt/data/test.data"); ObjectOutputStre

2021-07-21 22:54:42 137

原创 设计模式(十七)原型模式(Prototype)

原型模式(Prototype)解释Object.clone()就是原型模式的一个经典应用类图代码public class Test { public static void main(String[] args) throws Exception { Person p1 = new Person(); Person p2 = (Person)p1.clone(); System.out.println(p2.age + " " + p2.s

2021-07-21 22:53:28 93

原创 设计模式(十六)封装命令模式(Command)

封装命令模式(Command)解释又叫:Action/Transaction常用作undo时使用举例说明:编辑器中的ctrl+z就是一个undo类图代码public abstract class Command { public abstract void doit(); //exec run public abstract void undo();}public class InsertCommand extends Command { Content

2021-07-21 22:52:33 156

原创 设计模式(十五)桥接模式

桥接模式解析分离抽象和具体使用聚合方式连接抽象和具体类图代码/*** 使用桥接模式:* 分离抽象与具体实现,让他们可以独自发展* Gift -> WarmGift ColdGift WildGift* GiftImpl -> Flower Ring Car*/抽象相关体系 ----> Giftpublic abstract class Gift { GiftImpl impl;}public class WarmGift extends Gift

2021-07-20 23:23:03 77

原创 设计模式(十四)转换器&包装器模式

转换器&包装器模式解释添加转换,使得一个类可以访问之前不能访问的类举例说明电源转接头java.ioJdbc-ocbc bridge 即Java连接sql server,将java连接的jdbc转换为odbc连接sql serverAsm transformer…类图代码public class Main { public static void main(String[] args) throws Exception { FileInputStre

2021-07-20 23:22:10 207

原创 设计模式(十三)构建者模式

构建者模式解释分离复杂对象的构建和表示类图代码public class Person { int id; String name; int age; double weight; int score; Location loc; private Person() { } public static class PersonBuilder { Person p = new Person();

2021-07-20 23:20:31 73

原创 设计模式(十二)访问者模式

访问者模式解释在结构不变的情况下动态改变对于内部元素的动作举例组装电脑,不同的顾客打不同的折扣可以使用visitor模式,不同的visitor实现各自的对应折扣问题public class Computer { ComputerPart cpu = new CPU(); ComputerPart memory = new Memory(); ComputerPart board = new Board(); public void acccept(Visitor

2021-07-19 22:15:37 145 1

原创 设计模式(十一)迭代器模式

Iterator模式解释多态的一个应用,各自的实现类实现自己的遍历方法,实现自己的遍历逻辑。类图举例学习建立一个容器,可以存放数据,多种数据结构。遍历时怎么遍历?各自的数据结构实现自己的遍历方法。代码顶级接口public interface Collection_<E> { void add(E o); int size(); Iterator_ iterator();}ArrayList实现class ArrayList_<E&gt

2021-07-15 22:49:28 124 1

原创 设计模式(十)代理模式

代理模式Proxy动态代理静态代理解释类似于一个代理商的概念,代理主要的作用就是在不妨碍被代理方法执行的同时,添加一些逻辑。比如:加一个日志的打印记录执行时间…类图代码静态代理public class Tank implements Movable { /** * 模拟坦克移动了一段儿时间 */ @Override public void move() { System.out.println("Tank

2021-07-12 23:00:09 85

原创 设计模式(九)享元模式

享元模式FlyWeight解释重复利用对象共享元数据举例Java中的String的常量池就是使用的享元模式public static void main(String[] args) { String s1 = "abc"; String s2 = "abc"; String s3 = new String("abc"); String s4 = new String("abc"); System.out.println(s1 == s2); //true Syste

2021-07-12 21:28:18 70

原创 设计模式(八)组合模式

组合模式Composite模式树状结构专用模式解释根结点存在子节点,子节点依然可以有子节点代码维度abstract class Node { abstract public void p();}class LeafNode extends Node { String content; public LeafNode(String content) {this.content = content;} @Override public void p(

2021-07-12 21:27:03 63

原创 设计模式(七)观察者模式

观察者模式解释多个观察者,等待被观察者触发某个状态,触发则通知观察者,进行处理代码维度举例小朋友哭了要喂吃的…V1 while循环观察等待V2 抽象小朋友对象,根据表示符号判断V3 抽象观察者,根据情况调用观察者class Child { private boolean cry = false; private Dad d = new Dad(); public boolean isCry() { return cry; }

2021-07-11 19:39:39 187 1

原创 设计模式(六)责任链模式

责任链模式解释将多个逻辑串成一条链路,按照链路依次执行代码维度举例通过处理论坛发布消息来举例发布消息需要通过多次检查安全性检查敏感词检查…功能实现通过过滤器来实现new XXXFilter().doFilter(msg);new XXXFilter().doFilter(msg);将多个过滤器封装到list中List<Filter> filters = new ArrayList();filters.add(new XXXFilter());fil

2021-07-11 15:08:55 180

原创 设计模式(五)装饰器模式

装饰器模式解释为某些东西添加一个装饰例如:坦克大战中,为坦克添加外壳、血条等等…代码维度通过继承可以实现吗?不灵活,耦合度过高,如果同时想要多个装饰呢?通过Decorator模式封装GameObject对象,对GameObject进行装饰逻辑上讲如需要给bullet添加Rect,new一个bullet,传递给RectDecorator即可同样道理,也可以new一个RectDecorator传递给TailDecorator,可以实现既有方块儿又有尾巴...

2021-07-10 16:10:01 83

原创 设计模式(四)门面&调停者模式

门面模式&调停者模式门面模式解释封装一堆复杂的逻辑,对外提供统一的类进行操作这些复杂逻辑图解调停者模式解释可以理解为内部的一个门面模式?主要解决内部多系统调用间的问题,提供一个统一的调停者,所有系统全部与之沟通。图解应用调停者模式有一个著名的应用:消息中间件...

2021-07-10 16:09:17 110

原创 设计模式(三)工厂模式

设计模式(三 )工厂模式需求与思考任意定制交通工具继承Moveable任意定制生产过程Moveable XXXFactory.create()任意定制产品一族一个工厂生产一族的产品简单工厂(SimpleFactory)原理定义一个工厂方法,统一创建对象,在对象的创建方法中添加各种逻辑代码实现/** * 简单工厂的可扩展性不好 */public class SimpleVehicleFactory { public Car createCar() {

2021-05-31 23:18:11 65

原创 设计模式(二)策略模式

设计模式(二) 策略模式策略模式(strategy)原理封装的是一个接口(策略)的实现常见应用Compartor接口就是我们常用的策略代码示例client代码public class Sorter<T> { public void sort(T[] arr, Comparator<T> comparator) { for(int i=0; i<arr.length - 1; i++) { int minPo

2021-05-30 17:25:04 108

原创 设计模式(一) 单例模式

设计模式(一) 单例单例模式(Singleton)原理在代码层面保证 内存中只有一个实例常见应用各种Manager、Factory代码示例实现一public class Mgr01 { private static final Mgr01 INSTANCE = new Mgr01(); private Mgr01() {}; public static Mgr01 getInstance() { return INSTANCE; }

2021-05-30 10:45:17 80

原创 Spring Cloud Netflix 微服务全家桶(三)

Spring Cloud Netflix 微服务全家桶(三)一、Ribbon负载均衡超时设置设置在服务消费方# 连接超时时间(ms)ribbon.ConnectTimeout=1000# 业务逻辑超时时间(ms)ribbon.ReadTimeout=6000重试机制如果第一次失败 会默认重试一次如果服务提供方有集群 p1失败会默认调用p2# 同实例最大重试次数,不包括首次调用ribbon.MaxAutoRetries=1# 重试负载均衡其他的实例最大重试次数,不包括

2021-05-11 23:20:05 133

原创 Spring Cloud Netflix 微服务全家桶(二)

Spring Cloud Netflix 微服务全家桶(二)一、Restful风格的API/*** http://xxx/users Get 约定 获取列表信息* http://xxx/users/{id} Get 例如:http://xxx/users/1 获取Id=1的user信息* Delete 删除* Put 修改* * 可以引入版本的概念* http:/

2021-04-28 23:12:57 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除