- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 Synchronized 对象锁和类锁
概念类锁和实例锁。看名字就已经很明显了,类锁就是所在类上的锁,实例就是锁在类实例上的锁。实例锁:类声明后,我们可以 new 出来很多的实例对象。这时候,每个实例在 JVM 中都有自己的引用地址和堆内存空间,这时候,我们就认为这些实例都是独立的个体,很显然,在实例上加的锁和其他的实例就没有关系,互不影响了。一般用法如下:锁住实体里的非静态变量实现对象锁,锁住 this 对象,this指的是当前实例本身。直接锁非静态方法,常用方式,使用对象锁的情况,只有使用同一实例的线程才会受锁的影响
2021-02-24 22:17:42
591
1
原创 加密机制之HTTPS,SSL
前言涉及安全传输,无非就两种解决方案:认证和授权。今天重点讲SSL实现原理(Secure Sockets Layer)。常用加密算法及优缺点基于如上的优缺点,速度快的不够安全,足够安全的又没有效率,那么有没有一种加密机制是速度又快,又安全的呢?答案:有。HTTPS采用混合加密机制,即在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。== HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。==数字证书公钥也是要经过传输(客户
2021-02-24 00:10:03
215
原创 ElasticSearch 学习--前言
前言(准备写一个系列,记录学习ES的总结)严格意义上说,任何一个应用系统都会用到搜索,目前市面是上用到的存储无外乎文件存储、K/V格式存储、关系型数据库的存储。1)文件存储优点是聚合能力强,而聚合能力要求2)ES不仅仅是一个工具,更重要的是一个思想,更形成了一种生态,其解决问题的能力很强大,涉及多种算法ElasticSearch面向文档型数据库已完美解决的问题索引、主存储、分布式等很多问题倒排序对比B-Tree、B+Tree笼统的来说,b-tree 索引是为写入优化的索引结构。二叉树的特点
2021-02-19 22:33:47
84
原创 线程安全与同步总结
线程安全对共享数据(shared)和可变状态(mutable)的访问,共享是针对同时访问而言,可变是生命周期角度而言。解决线程安全的常用方法1、java.util.concurrnet.atomic如使用 AtomicLong 代替使用Long2、内置锁java体统内置锁机制,如synchronized,其有可重入性,即某个线程试图获得自己的锁时,则会成功。常用加锁做法是,将所有可变状态封装在对象内部。3、volatile变量不会被缓存在寄存器或其他cup不可见的地方,其不是加锁,所以不会
2021-02-12 19:05:53
1149
2
原创 jvm----前传
前言姑且叫jvm前传,因为上来就讲jvm内存模型有些突兀,总想写点东西引出jvm来,如下:面试中,在问到 jvm 内存模型相关知识时,因其较理论化,为了在死记硬背时有个更概括的认识,上图,了解jvm在我们经常用到的计算机中所处的位置:可见,jvm的堆栈是处在操作系统(OS)的堆部分的,操作系统也是有堆栈之分的,操作系统的栈是操作系统管理分配的,随时会被回收,所以jvm内存放在操作系统堆中,这也是gc存在的意义。知识点:jdk、jre、jvmJDK(Java Development Kit) 是 J
2021-02-09 01:08:05
187
原创 RocketMq 总结
架构一个提供以订阅发布模式的消息中间件:概念topic:一级消息类型tag:二级消息类型NameServer特点:无状态、集群部署、节点间通信(意味着其数据不一致)作用:路由注册、发现、删除心跳检测各节点均持有broker全量信息Broker提供topic服务,启动后向nameServer注册作用:1、消息存储:刷盘机制同步刷盘:producer向master发送消息后,master/slave均写入成功才返回异步刷盘:即写入master后立刻返回,然后slaver从mast
2021-02-03 21:33:47
228
2
原创 五种 IO 模型总结
IO模型总结IO需要的对象网络io本质是用户态的process或者application通过操作 Linux的内核kernel来指挥其IO设备(网络、磁盘等)的过程。而此过程主要体现在两个阶段:1、应用请求阶段2、数据准备好后拷贝阶段总结:...
2021-01-23 20:56:24
147
原创 Redis---- 小结(原创笔记)
Redis---- 小结(原创笔记)redis之所以快client-server通信模式,完全基于内存(内存不会成为瓶颈);数据结构简单;多路I/O复用模型,避免上下文交换(利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力,描述了用户态和内核态);Pub/Sub 发布订阅解耦发布者和订阅者,不关心是否有订阅者管道 Pipelining(客户端一次可发送多个命令)必须等本次Pipe返回才能继续写,基于此,其本质是要减少网络延迟问题(减少 RTT: round tr
2021-01-12 18:55:07
119
原创 数据库---- 事务及实现(原创笔记)
前言Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。(未完待续……)...
2020-10-26 22:24:46
220
原创 Spring----IOC/AOP(原创笔记)
*其实这些知识点网上很容易找到,这里只是体系化总结,让你对知识有整体结构化认知*IOC概念 : Inversion of Control“控制反转”,也叫依赖注入(Dependency Injection,DI),其含义相同,从不同角度描述。控制权由程序代码移到Spring容器中,控制权发生反转,这就是IOC思想。装载常用注解:@Component 泛化的概念,表示 一个组件bean,可作用在任何层次;@Repository 数据访问层(DAO层)的类标识为 Spring 中的 B
2020-10-26 21:52:01
172
1
原创 jvm----类加载过程(原创笔记)
前言jvm不关心class来源于什么语言代码编译的结果从本地机器码变为字节码。jvm虚拟机不与语言绑定,只与class文件这种特定的二进制文件关联。任何语言的实现者都可以将jvm作为他们语言运行的基础,以class文件作为他们产品的交付媒介。深入理解类的“初始化”《jvm虚拟机规范》严格规定一下情况需立即对类进行“初始化”:1、遇到new时,若没进行过初始化,则先初始化;读取或设置一个类型的静态字段时;调用一个类型的静态方法时;2、使用java.lang.reflect包的方法对类型进行反射调
2020-10-19 21:39:29
160
原创 jvm----垃圾收集器GC(原创笔记)
带着问题去学习,会事半功倍。哪些内存需要回收?何时回收?如何回收?前提 程序计数器、虚拟机栈、本地方法栈随线程生而生,灭而灭,栈中栈帧随方法进入和退出而执行出栈入栈操作,每个栈帧分配内存基本可定,所以如何回收不需要过多考虑,方法结束,内存自然回收。 堆和方法区就不一样了:一个方法只有在运行时才知道需要创建多少个实例对象,其内存分配和回收是动态的。 so,我们平时说的GC(Garbage Collection),主要指对这两个区域。...
2020-10-12 21:02:21
174
原创 jvm----内存区域及对象(原创笔记)
jvm----内存区域及对象(原创笔记)内存动态分配、垃圾收集技术是java与C++之间围成的一堵高墙。java虚拟机HotSpot把其管理的内存分成不同用途的数据区,总结如下:区域要点分析线程OutOfMemoryError程序计数器选取字节码指令,指示程序控制流私有无虚拟机栈描述java方法执行的线程模型:创建栈帧用于存储局部变量表(包括基本数据 类型、对象引用)、操作数栈、动态连接、方法出口等信息 为java方法执行服务私有有本地方法栈为本
2020-10-11 19:44:08
305
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人