自定义博客皮肤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 77

原创 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 84

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

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

2021-08-22 00:43:22 62

原创 965-关闭资源

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

2021-07-14 10:50:44 96

原创 965-Stream流

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

2021-07-08 07:07:49 123

原创 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 59

原创 日志收集

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

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

原创 AQS-abs学习笔记

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

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

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

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

2020-07-06 02:37:21 205

原创 装饰者模式学习笔记

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

2020-07-05 18:50:52 68

原创 Java生命周期学习笔记

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

2020-07-05 10:59:17 85

原创 redis学习笔记

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

2020-07-03 23:38:53 113

原创 mysql学习笔记

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

2020-07-03 02:03:26 119

空空如也

空空如也

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

TA关注的人

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