自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (3)
  • 收藏
  • 关注

原创 Redis

Redis

2022-07-29 21:06:07 454

原创 Redis过期键删除策略

Redis过期键删除策略

2022-07-16 17:50:00 297 1

原创 JVM笔记

JVM学习笔记

2022-07-16 16:24:47 418

原创 存储器的层次结构及缓存行

存储器的层次结构以及缓存行

2022-07-13 20:45:14 317

原创 多线程与高并发

多线程与高并发学习笔记

2022-06-05 16:24:27 218

原创 零拷贝学习笔记

零拷贝

2022-05-30 21:59:01 467

原创 Netty学习笔记

Netty1、BIO/NIO/AIO模型2、Socket(使用netstat -ano查看)3、Java NIO三个核心Channel/Buffer/Selector4、零拷贝5、Netty对比Java NIO6、三种Reactor模型7、Netty模型8、BootStrap9、ChannelHandler10、ChannelPipeline11、inbound/outbound12、ChannelHandlerContext13、EventLoopGroup14、Unpooled以及ByteBuf15、心

2022-05-25 20:31:59 197

原创 Kafka学习笔记

Kafka1、Kafka作用:系统解耦、运行时异步、消息队列削峰发布/订阅模式-拉模式2、Kafka的基础架构(1)Producer: 消息生产者,就是向 Kafka broker 发消息的客户端。(2)Consumer: 消息消费者,向 Kafka broker 取消息的客户端。(3)Consumer Group(CG): 消费者组,由多个 consumer 组成。 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。 所有的消费者都属于某个消

2022-05-14 20:43:51 529

原创 Spring IoC的基本概念

Ioc基本概念#控制反转三种依赖注入(DI)方式构造注入setter方法注入接口注入#控制反转通常情况下,被注入对象会直接依赖于被依赖对象。但是,在IoC的场景中,二者之间通过IoC Service Provider来打交道,所有的被注入对象和依赖对象现在由IoC Service Provider统一管理。 被注入对象需要什么,直接跟IoC Service Provider招呼一声, 后者就会把相应的被依赖对象注入到被注入对象中,从而达到IoC Service Provider为被注入对象服务的目的。

2021-09-05 20:54:17 124

原创 java 常用设计模式学习笔记

设计模式学习笔记1、23种设计模式概述1、23种设计模式概述1. 简单工厂提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。2. 外观模式(结构型)为子系统中的一组接口提供一个一致的页面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用3. 适配器模式(结构型)为一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。4. 单例模式(创建型)保证一个类仅有一个实

2021-07-11 13:58:53 297 1

原创 Effective java学习笔记

Effective java学习笔记使用静态方法代替构造方法使用静态方法代替构造方法//静态工厂方法举例public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;}优点:1. 静态工厂方法有自己的名字,比起构造方法,使用时更易区分。2. 不需要每次调用时都创建一个新对象,方法使用频繁的情况下,性能比使用构造方法更好3.静态工厂方法可以返回其返回类型的任何子类型的对象。4.静态工厂

2021-06-29 19:50:42 676 1

转载 五十二:JDK动态代理和CGLIB动态代理

JDK动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口...

2019-09-17 21:27:38 2750

转载 五十一:Hashmap put操作详解

public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }  final V putVal(int hash, K key, V value, boolean onlyIfAbsent,         //这里onlyIfAbsent表示只有在该key对应...

2019-09-17 10:50:18 432

原创 五十:HTTP首部字段

使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。HTTP首部字段是由首部字段名和字段值构成的,中间用冒号“:”分隔。HTTP首部字段根据实际用途被分为以下4种类型。通用首部字段(GeneralHeaderFields)请求报文和响应报文两方都会使用的首部。请求首部字段(RequestHeaderFields)从客户端向服务器端发送请求报文时使用...

2019-09-17 09:54:21 190

原创 四十九:Spring的事务的传播行为

2019-09-17 00:06:08 548

原创 四十八:SpringBean的作用域

scope配置

2019-09-16 23:08:14 134

原创 四十七:MySQL的redo log、undolog和binlog

https://blog.csdn.net/wanbin6470398/article/details/81941586https://blog.csdn.net/LYK_for_dba/article/details/79565570https://www.cnblogs.com/kongzhongqijing/articles/7905051.htmlhttps://blog.cs...

2019-09-16 22:09:59 1087

原创 四十六:DI(依赖注入)的三种方式

三种依赖方式:构造函数方法注入、Setter方法注入与接口注入。构造函数方法注入:setter方法注入:接口注入:

2019-09-16 16:19:19 703

原创 四十五:HTTP状态码

200:204:206:301:永久性重定向302:临时性重定向303:304:400:401:403:404:500:503:--------------------转自《图解HTTP》----------------------------------------------------...

2019-09-15 22:53:58 336

原创 四十四:HTTPS

HTTP的缺点:通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改HTTP+加密+认证+完整性保护=HTTPSHTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。所以应充分利...

2019-09-15 22:28:51 303

原创 四十三:Map的几种遍历方式

一、keyset方法二、entrySet三、迭代器四、forEach//也是使用entryset()

2019-09-13 11:14:50 294

原创 四十二:MyISAM和InnoDB的区别

MyISAM:myisam只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。也可以通过lock table命令来锁表,这样操作主要是可以模仿事务,但是消耗非常大,一般只在实验演示中使用。InnoDB :Innodb支持事务和行级锁,是inn...

2019-09-13 10:40:05 418 1

转载 四十一:TCP三次握手与四次挥手

第一次握手:起初两端都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN-SENT状态,等待Server确认; 第二次握手:Server收到数据包后由标志位SYN=1得知Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Cl...

2019-09-13 09:56:42 222

原创 四十:关于Object的那些方法

1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。2.getClass方法final方法,获得运行时类型。3.toString方法它返回的是String型的数据:类名+@+哈希值的16进制形式4.finalize方法finalize方法在垃圾收集器将对象从内存中清除出...

2019-09-09 00:01:55 248

原创 三十九:Redis发布与订阅功能

Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。除了订阅频道之外,客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式,从而成为这...

2019-09-08 22:38:30 790

原创 三十八:Redis哨兵机制

一、哨兵机制概述Sentinel(哨岗、哨兵)是Redis的高可用性(highavailability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主...

2019-09-08 18:16:29 987

原创 三十七:Redis持久化机制

一、RDB持久化有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE。SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。和SAVE命令直接阻塞服务器进程的做法不同,BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求。和使用SAVE命令或...

2019-09-08 12:25:03 130

原创 三十四:MVCC(多版本并发控制)

2019-09-07 23:50:13 602

原创 三十三:覆盖索引

2019-09-07 16:50:42 239

原创 三十二:聚簇索引

2019-09-07 16:30:38 346

原创 三十一:高性能的索引策略

一、独立的列“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。例如:actor_id+1=5;二、前缀索引和索引选择性前缀索引是一种能使索引更小、更快的有效方法,但另一方面也有其缺点:MySQL无法使用前缀索引做ORDER BY和GROUP BY,也无法使用前缀索引做覆盖扫描。三、多列索引四、选择合适的索引列顺序在不需要考虑排序和分组时,将选择性最高的...

2019-09-07 16:16:03 120

原创 三十:Mysql索引结构

2019-09-07 14:30:47 406

原创 二十九:BIO,NIO,AIO的简单概括

同步:使用同步IO时,Java自己处理IO读写。 异步:使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,完成后OS通知Java处理(回调)。 阻塞:使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。 非阻塞:使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。 BIO:同步...

2019-09-07 12:30:52 725

原创 二十八:new ArrayList()改为线程安全

改为new Vertor(); 使用collections类 Collections.synchronizedList(new ArrayList()); 改为J.U.C包下的new CopyOnWriteArrayList<>();

2019-09-04 23:53:51 244

原创 二十七:线程的五种状态

新建(New):创建后尚未启动的线程处于这种状态。 运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。 无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:没有设置Timeou...

2019-09-04 14:59:48 154

原创 二十六:类加载器和双亲委派模型

一、双亲委派模型双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)...

2019-09-04 11:17:38 532

原创 二十五:类的整个生命周期

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking),这7个阶段的发生顺序如图所示。图中,加载、验证、...

2019-09-03 23:51:18 432

原创 JVM:7种垃圾收集器

一、Serial收集器(单线程收集器)这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。(StopTheWorld)优点:相比其他收集器的单线程更简单而高效二、ParNew收集器ParNew收集器其实就是Serial收集器的多线程版......

2019-09-03 15:47:39 3258

原创 JVM:内存分配与回收策略

一、Minor GC和Full GC新生代GC(MinorGC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以MinorGC非常频繁,一般回收速度也比较快。老年代GC(MajorGC/FullGC):指发生在老年代的GC,出现了MajorGC,经常会伴随至少一次的MinorGC(但非绝对的,在ParallelScavenge收集器的收集策......

2019-09-03 11:20:37 205

原创 JVM:三大垃圾收集算法

一、标记-清除算法算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它的主要不足有两个:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。二、复制算法 ......

2019-09-03 10:56:09 277

面试题.zip

面试题.zip

2022-10-28

mca算法高频题目讲解ppt.zip

mca算法高频题目讲解ppt.zip

2022-10-10

00、Java互联网架构资料】.zip

00、Java互联网架构资料【】.zip

2022-08-12

Redis设计与实现。。。

Redis设计与实现。。。

2022-07-13

kafka kafka kafka kafka

kafka kafka kafka

2022-05-05

netty.7z 密码1234

netty.7z 密码1234

2022-04-10

空空如也

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

TA关注的人

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