自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CAS和原子类

原子类和CAS原子类(一刻也不能分割)1.1 什么是原子类,有什么作用?不可分割 一个操作是不可中断的,即便是多线程的情况下也可以保证 Java.util.concurrent.atomic原子的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁有一定优势:原子类的粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度。效率更高:通常使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况1.2

2022-05-16 18:11:52 72

原创 23种设计 - 创建型模式 - 0简单工厂

0. 简单工厂- 不符合开闭原则coding:public class Test { public static void main(String[] args) {// VideoFactory videoFactory = new VideoFactory();// Video video = videoFactory.getVideo("java");// if(video == null){// ...

2021-08-31 18:09:56 62

原创 Java高并发 - 1.并发编程基础

2.并发基础运行速度:cpu寄存器 >cpu缓存>主存(内存)数据状态:M - 被修改 ,E - 独享,S - 共享,I - 无效cpu操作:local read:读本地缓存中的数据local write:将数据写到本地的缓存里remote read:将内存中的数据读取过来remote write:将数据写回到主存里...

2021-08-22 00:43:22 55

原创 965-关闭资源

1.如果不手动释放,带来的危害2.JDK7之前的关闭流文件方式/** * JDK7之前的文件拷贝功能 */public class FileCopyTest { @Test public void copyFile() { /** * 1. 创建输入/输出流 * 2. 执行文件拷贝,读取文件内容,写入到另一个文件中 * 3. **关闭文件流资源** */ /...

2021-07-14 10:50:44 67

原创 965-Stream流

1.流是什么:从支持数据处理操作的源 生成的元素序列(元素系列:与集合一样,流也提供了一个接口,可以访问特定元素类型类型的有序值,这个有序值就是元素序列源:与现实中的水流类似,是为流提供数据的,源头,比如:集合、数组等数据处理操作:流的数据操作功能支持类似于数据库的数据操作)JDK1.8引入的新成员,以声明式方式处理集合数据将基础操作链接起来,完成复杂的数据处理流水线提供透明的并行处理2.流与集合的区别时间与空间只能遍历一次内部迭代与外部迭代3.流的组成

2021-07-08 07:07:49 116

原创 965-lambda

lambda表达式的形式:1.没有参数() -> System.out.println("Hello World");2.只有一个参数name -> System.out.println("Hello World "+name+" !");// 等同于 ↓//(name) -> System.out.println("Hello World "+name+" !");3.没有参数,但是逻辑复杂() ->System.out.println("Hello W

2021-06-26 19:10:37 48

原创 日志收集

kafka日志收集日志组建输出:log4j2日志收集(kafka生产者):fileBeat日志过滤(kafka消费者):logstash日志持久化:elasticsearch日志可视化:kibana1.官方标配elk架构设计图

2021-05-01 22:16:48 88 1

原创 AQS-abs学习笔记

1.AQS类定义1.AQS 是个抽象类,就是给各种锁子类继承用的,AQS 定义了很多如何获得锁,如何释放锁的抽象方法,目的就是为了让子类去实现;2.继承了 AbstractOwnableSynchronizer,AbstractOwnableSynchronizer 的作用就是为了知道当前是那个线程获得了锁,方便监控用的获得锁的线程set进来就好了:setWxclusiveOwnerThread(thread)3.同步队列:主要作用阻塞获取不到锁的线程,并在适当时机释放这些线程。。当多个线程都来请.

2020-07-06 23:19:42 272 1

原创 代理模式学习笔记--springAOP

1.代理模式的定义代理模式(ProxyPattern)是指为其他对象提供一种代理,以控制对这个对象的访问代理对象在客户端和目标对象之间起到中介的作用类型:结构型2.代理适用场景1.保护目标对象2.增强目标对象3.优点1.代理模式能将代理对象与真实被调用的目标对象分离2.一定成都上降低了系统耦合度,扩展性好3.保护目标对象4.增强目标对象,比如:before、after4.缺点1.代理模式会造成系统设计中类的数据增加2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢3

2020-07-06 02:37:21 200

原创 装饰者模式学习笔记

1.定义:在不改变原有对象的基础之上,将功能附加到对象上;提供了比继承更有弹性的替代方案(扩展语言有对象功能,其实也是建立在继承之上)类型 :结构型模式2.适用场景扩展一个类的功能或者给一个类添加附加职责动态的给一个对象添加功能,这些功能可以再动态的撤销3.优点1.继承的有力补充,比继承灵活,不改变原有对象的情况下给对象扩展功能(如果需要继承的功能很多,必然会增加很多子类。而且继承需要对继承的功能是可预见的,因为功能在编译的时候就确定了,是静态的。而装饰这是用户或者应用层代码动态的决定加入

2020-07-05 18:50:52 60

原创 Java生命周期学习笔记

1.bean的生命周期一共分为四步,主要逻辑在doCreat()方法里1.实例化 Instantiation(构造方法)–>creatBeanInstance()2.属性赋值 Populate(setter方法注入)–>populateBean()3.初始化 Initialization -->InitializationBean()4.销毁 Destruction -->在容器关闭时调用的,ConfigurableApplicationContext#close()

2020-07-05 10:59:17 76

原创 redis学习笔记

1.缓存中间件 memcache和redis的区别Memcache:代码层次类似hash支持简单数据类型不支持数据持久化存储不支持主从不支持分片Redis:数据类型丰富支持数据磁盘持久化存储支持主从同步支持分片2.为什么redis能这么快(100000+QPS,即每秒内查询次数)完全基于内存,绝大部分请求是存粹的内存操作,执行效率高数据结构简单,对数据操作也简单主线程是单线程,单线程也能处理高并发请求,包括IO事件处理,以及io对应的相关业务事件的处理,对于客户端的所有请求都在一

2020-07-03 23:38:53 106

原创 mysql学习笔记

1.为什么要使用索引因为索引可以避免全表扫描去查询数据,提升检索速率2.什么样的信息能成为索引主键、唯一键等,只要是能让数据具有一定区分性的字段都可以作为索引3.索引的数据结构主流是b+树,还有hash结构以及BitMap等,mySql数据库不支持BitMap,基于innodb和myISAM的mysql索引也不支持hash结构4.密集索引和稀疏索引的区别5.如何定位并优化慢查询sqla根据慢日志定位慢查询sql:设置slow_query_log=on,long_query_time=2,s

2020-07-03 02:03:26 97

空空如也

空空如也

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

TA关注的人

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