- 博客(51)
- 收藏
- 关注
转载 玩玩并发编程(七)--JUC--LockSupport
LockSupport1. LockSupport是什么2. LockSupport使用3. LockSupport原理3.1 阻塞线程3.2 唤醒线程4. 小结1. LockSupport是什么java.util.concurrent.locks.LockSupport Dog li 的JUC wait notify 替换品LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。2. LockSupport使用publ
2021-06-19 15:21:26 165
原创 玩玩并发编程(六)--JUC--AQS
AQS1. AQS是什么2. AQS核心3. 小结1. AQS是什么AQS作为JUC包的核心框架,是 java.util.concurrent.locks.AbstractQueuedSynchronizer 准确的说就是一个阻塞队列,JUC所有原子类都依赖这个框架。重中之重!2. AQS核心To enqueue into a CLH lock, you atomically splice it in as new tail. To dequeue, you just set the hea
2021-06-19 14:42:09 199
原创 玩玩并发编程(五)--JUC--Lock
JUC--Lock1. 什么是Lock2. 使用案例3. 原理4. Lock和synchronized的选择4. 小结1. 什么是Lockdog li 写的JUC真的是绝了。AQS&CAS无敌大法,就是看不懂。!lock是dog li 写的一个java的锁,锁管理由程序员自己控制2. 使用案例public interface Lock { void lock(); void lockInterruptibly() throws InterruptedExceptio
2021-06-18 18:08:23 245
转载 玩玩并发编程(四)--synchronized
synchronized1. 什么是synchronized2. synchronized特点3. synchronized使用4. synchronized原理4.1 对象的内存布局4.1.1 对象头5. synchronized 优化5.1 锁的膨胀升级过程6. 小结1. 什么是synchronizedsynchronized内置锁是一种对象锁(锁的是对象而非引用),作用粒度是对象,可以用来实现对临界资源的同步互斥访问,是可重入的。2. synchronized特点synchronized
2021-06-18 17:54:56 198
原创 玩玩并发编程(三)--volatile
volatile1. volatile是什么?2. 特点2.1 内存可见性2.2 禁止指令重排序3. 缺点3. 实现原理4. 小结1. volatile是什么?volatile是Java虚拟机提供的轻量级的同步机制。volatile关键字有如下两个作用保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知。禁止指令重排序优化。2. 特点2.1 内存可见性被volatile修饰的变量对所
2021-06-18 17:24:48 91
转载 玩玩并发编程(二)--并发编程要素
并发编程要素1. 指令重排序1.1 as-if-serial语义1.2 happens-before 原则2. 可见性3. 原子性4. 有序性1. 指令重排序java语言规范规定JVM线程内部维持顺序化语义。即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的重排序。指令重排序的意义是什么?JVM能根据处理器特性(CPU多级缓存系统、多核处理器等)适当的对机器指令进行重排序,使机器指令能更符合CPU的执行特性,最大限度的发挥机器性能。1.1 as-
2021-06-18 17:12:45 91
原创 玩玩并发编程(一)--概览
并发编程概览1. 什么是并发1.1 特点1.2 与并行区别2. 硬件看并发2.1 现在CPU微架构2.2 cache一致性协议MESI3. Java处理并发4. 小结1. 什么是并发并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行1.1 特点并发环境下,由于程序的封闭性被打破,出现了新的特点:①程序与计算不再一一对应,一个程序副本可以有多个计算②并发程序之间有相互制约关系,直接制约
2021-06-18 16:52:40 104
转载 玩玩Jvm(三)--Jvm垃圾回收
Jvm垃圾回收1. Jvm垃圾回收2. 作用域3. 分类4. 垃圾回收算法5. 重要参数6. 小结1. Jvm垃圾回收Java虚拟机主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。其中垃圾收集模块在Java虚拟机规范中并没有要求Java虚拟机垃圾收集,但是在没有发明无限的内存之前,大多数JVM实现都是有垃圾收集的。Java堆是内存管理中最大的一块,所有的线程共享这一块内容,同时该部分也是垃圾收集器的主要区域。虚拟机的垃圾回收机制是完善的,动态内存分配和
2021-06-15 13:14:50 132
转载 玩玩Jvm(二)-- JVM对象创建与内存分配机制
JVM对象创建与内存分配机制1. 对象的创建2. 对象内存分配2.1 对象栈上分配2.2 对象在Eden区分配2.3 大对象直接进入老年代2.3.1 为什么要这样呢?2.4 长期存活的对象将进入老年代2.5 对象动态年龄判断2.6 老年代空间分配担保机制3. 小结1. 对象的创建对象创建的主要流程:类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类
2021-06-15 10:30:27 112
原创 玩玩Jvm(一)---Jvm概览
Jvm概览1. 什么是Jvm2. Jvm组成2.1 Jdk体系结构2.2 Jvm体系结构3. 类加载机制3.1 流程3.2 类加载器和双亲委派机制3.3 类加载器初始化过程3.4 双亲委派机制3.5 为什么要设计双亲委派机制?3.6 全盘负责委托机制4. Jvm各区域串联5. 小结1. 什么是JvmJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语
2021-06-15 06:50:05 2318 5
原创 玩玩Mysql(四)--mysql锁和事务
mysql锁和事务1. 什么是事务和锁1.1 MYSQL 事务处理主要有两种方法:1.2事务控制语句:1.3 mysql 锁2. mysql锁分类3. mysql事务隔离级别3.1 事务的并发问题3.1 事务的隔离级别4. mysql事务原理5. 小结1. 什么是事务和锁在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称
2021-06-09 12:45:53 96 2
原创 玩玩Mysql(三)--索引
索引1. 是什么2. 分类2.1 逻辑分类2.2 数据结构分类3. 数据结构3.1 hash3.2 B-Tree3.3 ==聚簇索引和非聚簇索引==5. 小结1. 是什么MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。2. 分类2.1 逻辑分类普通索引普通索引是 MySQL 中最基本的索引类型,它没有任何限制,唯一任务就是加快系统对数据的访问速度。普通索引允许在定义索引的列中插入重复值和空值。创建普通索引时,通常使用的关键字是 INDE
2021-06-09 12:15:30 115 1
转载 玩玩Mysql(二)--sql执行过程
sql执行过程1. 流程2. 核心架构2.1 Server 层基本组件介绍3. 语句分析3.1 查询语句3.2 更新语句4. 小结1. 流程2. 核心架构简单来说 MySQL 主要分为 Server 层和存储引擎层:Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、M
2021-06-09 10:55:31 84
原创 玩玩Mysql(一)--概念
Mysql概念1. 是什么?1.1 RDBMS1.2 MySQL数据库2. 工作机制2.1 整体架构图(C/S架构)2.2 网络协议2.2.1 通信协议2.2.2 报文格式2.3 SQL语法3. 小结1. 是什么?MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。1.1 RDBMSRDBMS 即关系数据库管理系统(Relational
2021-06-09 10:46:50 132
原创 Eureka 源码分析
Eureka 源码分析1. Eureka介绍2. Eureka核心功能3. 源码分析eureka-client3.1 服务注册1. Eureka介绍eureka是springcloud的一个注册中心组件,提供服务注册,续约,下线,集群同步服务列表,数据存储和自我保护等功能,是基于服务可用性的 AP 架构。2. Eureka核心功能服务注册服务续约服务下线同步服务列表数据存储自我保护3. 源码分析eureka-client3.1 服务注册 // Heartbeat time
2021-05-15 23:41:21 101
原创 微服务--springcloud注册中心
注册中心1. 注册中心是什么2. 注册中心特性2.1 CAP(布鲁尔定理)3. 选型4. 总结1. 注册中心是什么注册中心是微服务体系中一个关键组件,是协调各服务调用和状态监控以及服务路由的关键点,2. 注册中心特性服务注册、服务发现、健康检查、集群节点间的心跳机制等等,集群架构要么是平级结构、要么是主从结构。节点之间必须考虑服务的数据信息同步,而一旦是主从结构,就必须考虑主节点leader的选举等等功能,而选举过程,只是算法不一样而已。2.1 CAP(布鲁尔定理)它指出对于
2021-05-15 16:09:10 142 5
原创 微服务--springcloud全局一览
springcloud1. springcloud是什么2. 核心组件3. 协作流程4. 总结1. springcloud是什么springcloud 是基于springboot的一套微服务框架,涵盖 服务注册,服务发现,服务路由,网关,服务治理,配置中心和监控体系等,一套完整的微服务解决方案。2. 核心组件注册中心DiscoveryClientribbonfeignhystrixconfigzipkin…3. 协作流程4. 总结了解各组件在微服务体系扮演的角色很重要
2021-05-15 15:35:54 114
原创 数组、链表、栈、队列
数组、链表、栈、队列一. 数组二. 链表2.1 链表简介2.2 链表分类2.2.1 单链表2.2.2 循环链表2.2.3 双向链表2.2.4 双向循环链表2.3 数组vs链表三 栈3.1 栈简介3.2 栈的常见应用常见应用场景3.2.1 实现浏览器的回退和前进功能3.2.2 检查符号是否成对出现3.2.3 反转字符串3.2.4 维护函数调用四 队列4.1 队列简介4.2 队列分类4.2.1 单队列五.常见应用场景一. 数组数组(Array) 是一种很常见的数据结构。它是由相同类型的元素(element
2021-05-09 22:06:19 410
转载 消息队列常见问题和解决方案
一、为什么使用消息队列?消息队列使用的场景和中间件有很多,但解决的核心问题主要是:异步、解耦、消峰填谷。二、消息队列的优缺点异步、解耦、消峰填谷这是消息队列最大的优点,除了这些消息队列还可以会解决一些我们特殊业务场景的问题。但是缺点主要在于系统的可用性、复杂性、一致性问题,引入消息队列后,需要考虑MQ的可用性,万一MQ崩溃了岂不是要爆炸?而且复杂性明显提高了,需要考虑一些消息队列的常见问题和解决方案,还有就是一致性问题,一条消息由多个消费者消费,万一有一个消费者消费失败了,就会导致数据不一致。三、消
2021-05-09 13:51:51 1242 1
转载 分布式事务,这一篇就够了
随着互联网技术的不断发展,系统越来越复杂,几乎所有 IT 公司的系统都已经完成从单体架构到分布式架构的转变,分布式系统几乎无处不在。谈到分布式系统,特别是微服务架构,我们不得不谈分布式事务。今天就跟大家一起聊聊分布式事务以及常用解决方案。基础理论在讲解具体方案之前,我们有必要了解一些分布式事务所涉及到的基础理论知识。事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都.
2021-05-09 12:03:36 123
原创 分布式下的ID生成器
分布式下的ID生成器特性常规方案选择特性全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。信息安全:如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号就更危险了,竞对可以
2021-05-09 11:47:35 187 4
原创 JWT
JWT1. 什么是JWT2.运作方式3.JWT 的数据结构3.1 Header3.2 Payload3.3 Signature3.4 Base64URL4. JWT 的使用方式5. 特点1. 什么是JWTJSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web令牌是一种开放的行业标准 RFC 7519方法,用于在双方之间安全地表示声明。2.运作方式JWT 的原理是,服务器认证以后,生成一个 JSON 对象,发回给用户,就像下面这样。{ "姓
2021-05-09 10:32:42 65
转载 计算机网络基础---计算机网络体系结构
计算机网络体系结构在计算机网络的基本概念中,分层次的体系结构是最基本的。计算机网络体系结构的抽象概念较多,在学习时要多思考。这些概念对后面的学习很有帮助。网络协议是什么?在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。为什么要对网络协议分层?简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响。易于实
2021-05-05 21:00:12 338
原创 计算机网络基础---域名服务器
域名服务器DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在
2021-05-05 20:40:54 876
原创 玩玩Springboot(二)--Springboot自动装配
Springboot自动装配什么是Springboot自动装配Springboot自动装配案例原理自己实现一个Springboot自动装配总结什么是Springboot自动装配Springboot自动装配案例原理自己实现一个Springboot自动装配总结
2021-05-05 14:59:56 226 1
转载 玩玩Springboot(一)--Springboot
Springboot好在哪什么是springboot特性使用总结什么是springboot特性使用总结
2021-05-05 14:25:20 611 1
原创 玩玩Spring(八)--Spring事务
Spring事务什么是事务spring事务使用原理源码总结什么是事务spring事务使用原理源码总结
2021-05-04 23:48:53 175 1
原创 玩玩Spring(六)--Spring源码核心类&接口
Spring源码核心类&接口Spring源码核心类&接口BeanFactory和 FactoryBean 接口InitializingBean接口BeanFactoryPostProcessor和 BeanPostProcessor 接口Aware接口Ordered和PriorityOrdered接口ApplicationListener接口NamespaceHandler接口总结Spring源码核心类&接口Spring源码分析之关键接口设计思想,对于阅读spring源码大有裨
2021-05-01 01:30:59 156 1
原创 玩玩Spring(五)--AOP
AOPAOP是什么?怎么用AOP原理亮点总结AOP是什么?面向切面编程…Aspect-Oriented Programming怎么用AOP此处仅讲解声明式使用先看代码创建一个UserSevice接口,和几个方法,对UserService下的所有方法进行代理,执行方法public interface IUserService { void add(); void del(); void select();}@Slf4jpublic class
2021-05-01 01:02:21 68 1
原创 玩玩Spring(四)--Bean循环依赖
Bean循环依赖什么是Bean循环依赖可能会带来的问题Spring怎么解决的网络争论的3级缓存的必要性总结什么是Bean循环依赖所谓的循环依赖是指,A 依赖 B,B 又依赖 A,它们之间形成了循环依赖。或者是 A 依赖 B,B 依赖 C,C 又依赖 A。它们之间的依赖关系如下:可能会带来的问题A B C相互依赖,在创建A对象时需要引入B,所以去创建B,在创建B过程中又需要依赖A,又去创建A,如此循环直至系统资源耗尽,系统崩溃。Spring怎么解决的简而言之就是3级缓存/** Ca
2021-04-30 23:12:20 87 1
原创 玩玩Spring(三)--Bean
Spring-bean是什么怎么创建基于xml配置基于注解配置原理总结是什么在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。Bean是由Spring IoC容器实例化,组装和以其他方式管理的对象。简而言之,Spring bean是Spring框架在运行时管理的对象。Spring bean是任何Spring应用程序的基本构建块。你编写的大多数应用程序逻辑代码都将放在Spring bean中。Spring bean的管理包括:创建一个对象提供依赖项(
2021-04-30 20:42:48 81
原创 Java数据结构与算法(二)--概述算法复杂度
Java数据结构与算法概述算法复杂度时间复杂度空间复杂度概述算法复杂度算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。因此.
2021-04-29 22:29:49 149
转载 Java数据结构与算法(一)--概述数据结构
Java数据结构与算法概述数据结构定义数据的逻辑结构数据的物理结构数据存储结构分类常用的数据结构常用算法概述数据结构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。定义数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相
2021-04-29 22:07:57 80
转载 玩玩Spring(二)--Spring各jar包作用及依赖
Spring各jar包作用及依赖spring-core.jar(必须有的核心jar包)spring-beans.jar(IOC容器必备jar包)spring-expression(表达式解析)spring-tx(事务包)spring-jdbcspring-aopspring-aspectsspring-contextspring-webspring-webmvcspring-core.jar(必须有的核心jar包)spring-core.jar(必须有的核心jar包)这个jar 文件包含Spring
2021-04-28 23:43:57 432
原创 玩玩Spring(一)--为什么要Spring
为什么要SpringSpring是什么Spring发展史Spring特性优点总结Spring是什么Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。 [2] Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的 Bean,这样就可以实现
2021-04-28 23:31:16 157
原创 漫谈成长路线--Java工程师
漫谈成长路线程序演变史思维&未来解决方案总结程序演变史软件开发10年前到现在,架构演变。单体系统耦合容易出现性能瓶颈不利于维护难扩展微服务系统解耦分布式部署支持横向扩展,可以解决性能瓶颈项目庞大,交互复杂依赖3方微服务框架,底层更新难service-mesh业务和微服务解耦基于K8S+docker 环境,有性能损耗和学习成本抽象清晰,简单易懂思维&未来用户激增高并发数据激增传统数据库 --> nosq
2021-04-28 22:38:06 71 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人