- 博客(279)
- 资源 (14)
- 收藏
- 关注

原创 鸿蒙系统学习笔记(一) 鸿蒙系统介绍
个人学习鸿蒙系列 鸿蒙系统介绍目录个人学习鸿蒙系列 鸿蒙系统介绍一、鸿蒙系统简介1.简介2.发展进程二、鸿蒙系统特点1.分布架构2.低延时+高性能IPC技术实现系统天生流畅3.基于微内核架构重塑终端设备可信安全4.通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享参考1.https://github.com/Awesome-HarmonyOS/HarmonyOS/blob/master/doc/README-zh.md2.https://blog..
2021-05-06 14:57:06
20317
15

原创 GitHub开源项目学习 Mybatis源码学习
个人学习GitHub开源项目系列 Mybatis源码篇Github Link: https://github.com/mybatis/mybatis-3Mybatis简介MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映...
2019-01-24 17:14:10
3777

原创 GitHub开源项目学习 Cloud-Platform
个人学习GitHub开源项目系列 Cloud-Platform篇Github Link: https://gitee.com/minull/ace-securityCloud-Platform简介Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系...
2019-01-22 16:48:08
6321

原创 Kubernetes思维导图总结
自己学习总结了一些思维导图,后面附有GitHub链接 ,分享给大家。https://github.com/panjianlong13/MindMapSummary
2018-11-26 10:22:07
7352
4
原创 设计模式学习笔记(九) - 迭代器模式 Iterator & 访问者模式 Visitor
设计模式学习笔记(九) - 迭代器模式 Iterator & 访问者模式 Visitor
2022-10-17 17:18:05
371
原创 设计模式学习笔记(六) - 组合模式 Composite (树状结构专用模式)
设计模式学习笔记(六) - 组合模式 Composite (树状结构专用模式)
2022-10-10 17:28:48
288
原创 Java并发编程图册学习(六) 面试 volatile 关键字
对一个 volatile 域的写, happens-before 于任意后续对这个 volatile 域的读一、happens-before 之 volatile 变量规则JMM 针对编译器定制的 volatile 重排序的规则,那 JMM 是怎样禁止重排序的呢? 答案是内存屏障二、内存屏障 (Memory Barriers / Fences)为了实现 volatile 的内存语义,编译器在生成字节码时,会在指令序列中插入内存屏障来禁止特定类型的处理器重排序这句话有点抽象,..
2022-05-10 23:05:32
251
原创 Java并发编程图册学习(五) 解决原子性问题,首先需要宏观理解
目录一、前言二、锁三、总结一、前言原子性问题的源头就是线程切换,但在多核 CPU的大背景下,不允许线程切换是不可能的互斥: 同一时刻只有一个线程执行上面这句话的意思是: 对共享变量的修改是互斥的,也就是说线程 A 修改共享变量时其他线程不能修改,这就不存在操作被打断的问题了二、锁 synchronized 的三种用法:public class ThreeSync { private static final Object object = new Obj
2022-05-05 17:57:09
461
原创 Java并发编程图册学习(四) 有序性可⻅性 Happens-before
目录一、前言二、Happens-before1. 程序顺序性规则2. volatile变量规则3. 传递性规则4.监视器锁规则5. start()规则6. join()规则三、总结一、前言1. 作为我们程序猿不想写出 bug 影响 KPI,所以希望内存模型易于理解、易于编程。这就需要基于一个强内存模型来编写代码2. 作为编译器和处理器不想让外人说它处理速度很慢,所以希望内存模型对他们束缚越少越好,可以由他们擅自优化,这就需要基于一个弱内存模型既然.
2022-05-05 17:23:06
238
原创 Java并发编程图册学习(三) 并发Bug之源有三,找对根源是关键
一、前言作 为"资本家",你要尽可能的榨取 CPU,内存与 IO 的剩余价值,但三者完成任务的 速度相差很大,CPU > 内存 > IO分,CPU 是天,那内存就是地,内存是天,那 IO 就是地,那怎样平衡三者,提升整体速度呢?...
2022-05-05 16:14:29
438
原创 Java并发编程图册学习(二) 透彻理解并发三个核心是关键
目录一、并发编程可以抽象成三个核心问题二、分工三、同步/协作四、互斥五、总结一、并发编程可以抽象成三个核心问题分工 同步/协作 互斥二、分工将当前 Sprint 的 Story 拆分成「合适」大小的 Task,并且安排给「合适」的 Team Member 去完成这里面用了两个「合适」,将 Story 拆分成大小适中,可完成的 Task 是非常重要的。拆分的粒度太粗,导致这个任务完成难度变高,耗时⻓,不易与其他人配合; 拆分的粒度太细,又导致任务太多,不好管
2022-04-26 17:05:01
264
原创 Java并发编程图册学习(一) 并发的世界很有趣
一、并发开胃菜1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个⻋间使用。也就是说,一个⻋间开工的时候,其他⻋间都必须停工。背后的含义就是,单个 CPU 一次只能运行一个任务。3.进程就好比工厂的⻋间,它代表 CPU 所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4.一个⻋间里,可以有很多工人。他们协同完成一个任务。5.线程就好比⻋间里的工人。一个进程可以包括多个线程。6.
2022-04-26 16:47:04
249
原创 JDK源码剖析- Java并发实现原理学习 (四) wait()与notify()
目录一、生产者-消费者模型二、为什么必须和synchronized一起使用三、为什么wait()的时候必须释放锁四、wait()与notify()的问题一、生产者-消费者模型 生产者-消费者模型是一个常见的多线程编程模型。一个内存队列,多个生产者线程往内存队列中放数据;多个消费者线程从内存队列中取数据。(1)内存队列本身要加锁,才能实现线程安全。(2)阻塞。当内存队列满了,生产者放不进去时,会被阻塞; 当内存队列是空的时候,消费者无事可做,会被阻塞。(3)双向通知。
2022-04-26 09:24:04
347
原创 JDK源码剖析- Java并发实现原理学习 (三) synchronized关键字
目录一、锁的对象是什么二、锁的本质是什么三、Synchronized实现原理一、锁的对象是什么很容易误解 synchronized 关键字:它通常加在所有的静态成员函数和非静态成员函数的前面,表面看好像是“函数之间的互斥”,其实不是,synchronized关键字其实是“给某个对象加了把锁” 等价于对于非静态成员函数,锁其实是加在对象a上面的;对于静态成员函数,锁是加在A.class上面的。当然class本身也是对象二、锁的本质是什么多个线程要访问同一.
2022-04-26 08:56:53
237
原创 JDK源码剖析- Java并发实现原理学习 (二) InterruptedException与Interrupt函数
一、什么情况下会抛出Interrupted异常Interrupt这个词很容易让人产生误解。从字面意思来看,好像是说一个线程运行到一半,把它中断了,然后抛出了InterruptedExcept ion异常,其实并不是。这个时候,在主线程中调用一句t.interrupt(),请问该线程是否会抛出异常? 答案是不会。假设这个线程阻塞在一个 synchronized 关键字 的地方,正准备拿锁,如下代码所示。在主线程中调用一句t.interrupt(),请问该线程是否会抛出异常?.
2022-04-25 14:37:01
351
原创 JDK源码剖析- Java并发实现原理学习 (一) 线程的优雅关闭
一、stop()与destroy()函数线程是“一段运行中的代码”,或者说是一个运行中的函数。既然是在运行中,就存在一个最基本的问题: 运行到一半的线程能否强制杀死?答案肯定是不能。在Java中,有stop()、destory()之类的函数,但这些函数都是官方明确不建议使用的。原因很简单,如果强制杀死线程,则线程中所使用的资源,例如文件描述符、网络连接等不 能正常关闭。一个线程一旦运行起来,就不要去强行打断它,合理的关闭办法是让其运行完(也就是函数执行完毕),干净地释放掉所有资源,然后退.
2022-04-25 11:12:19
332
原创 Spring漫画学习笔记(五) @Autowired是如何工作的
1.@Autowired写在属性上2.@Autowired写在方法上 3.@Autowired写在构造方法上
2022-02-13 20:51:20
141
原创 IT老齐架构300讲笔记(086) 新年将至,100W用户8000W流量在线贺卡应用架构如何优化
目录一、场景背景二、架构分析2.1 分析核心复杂度2.2 计算架构核心数据三、架构改进3.1 结果推导3.2 改进架构专栏链接: IT老齐架构300讲笔记一、场景背景 二、架构分析2.1 分析核心复杂度当下架构核心复杂度有3点每个贺卡要占用5mb的带宽,而单台ECS只有200MB,肯定不够用 单台ECS API性能极限有限,肯定扛不住 100万用户在5个小时内预计将产生8000万数据,数据库扛得住吗2.2 计算架构核心数据.
2022-01-25 17:10:00
2733
原创 IT老齐架构300讲笔记(077) 几张图讲明白RocketMQ高可用方案
目录一、RocketMQ有哪些角色二、RocketMQ消息生产消费流程三、Broker主挂了RocketMQ怎么办四、Broker主从都挂了RocketMQ怎么办五、NameServer挂了RocketMQ怎么办六、同步复制与异步复制之间的区别于应用场景专栏链接: IT老齐架构300讲笔记一、RocketMQ有哪些角色二、RocketMQ消息生产消费流程三、Broker主挂了RocketMQ怎么办不会进行自动的主从切换四、Broker..
2022-01-24 23:27:38
3003
原创 IT老齐架构300讲笔记(074) 从76237到753毫秒,海量数据大页码MySQL查询该如何优化?
目录一、场景需求二、查询改进2.1 初步改进2.2 利用上下页机制改进2.3 连续切换页还要考虑出现大量重复数据的情况专栏链接: IT老齐架构300讲笔记一、场景需求按日期升序排列,查看第50000页数据二、查询改进2.1 初步改进 2.2 利用上下页机制改进2.3 连续切换页还要考虑出现大量重复数据的情况...
2022-01-24 17:25:06
2367
原创 IT老齐架构300讲笔记(068) 高并发电商热门商品缓存访问倾斜,该怎么解决
目录一、热门商品缓存访问倾斜二、访问倾斜解决方案 2.1 热门数据分片2.2 如何区分热点数据2.3 缓存前置 + 闪电缓存专栏链接: IT老齐架构300讲笔记一、热门商品缓存访问倾斜访问倾斜: 少量的服务器承载了大量的请求二、访问倾斜解决方案热门数据分片(热点数据特征是短时间访问超高,数据总量相对较少) 缓存前置 + 闪电缓存2.1 热门数据分片 2.2 如何区分热点数据2.3 缓存前置 + 闪电缓存...
2022-01-23 23:04:49
431
原创 IT老齐架构300讲笔记(065) 十分钟上手阿里巴巴分布式流控神器Alibaba Sentinel
目录一、为什么需要做流量控制1.1Sentinel 是什么?1.2 Sentinel架构1.3 Sentinel 的开源生态二、Alibaba Sentinel 部署与接入2.1 启动Sentinel控制台2.2 启动Sentinel Demo三、Sentinel拦截执行原理一、为什么需要做流量控制1.1Sentinel 是什么? https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8DSe..
2022-01-21 15:56:40
328
原创 IT老齐架构300讲笔记(064) 上了微服务就能高并发?扯淡,几张图给你讲明白微服务架构的作用
目录一、微服务帮我们解决了什么问题?1.1 系统间通信困难1.2 系统内部复杂度对外暴露1.3 系统间通信逻辑复杂1.4 系统的重复建设二、微服务改造2.1 改造后的微服务架构2.2 标准化的通信过程Restful2.3 对外屏蔽系统内部复杂度2.4 有序的调用链路2.5 大一统的架构设计2.6 规避大一统的架构设计一、微服务帮我们解决了什么问题?1.1 系统间通信困难1.2 系统内部复杂度对外暴露1.3 系统间通信逻辑复杂.
2022-01-21 14:34:38
902
原创 IT老齐架构300讲笔记(063) 大型电商整点秒杀业务场景商品库存如何预防超卖现象
目录一、分析库存超卖的产生二、秒杀场景的分析三、高并发下预防超卖的解决方案一、分析库存超卖的产生二、秒杀场景的分析秒杀商品库存总量固定 先到先得,瞬间并发极大,但写库量有限三、高并发下预防超卖的解决方案利用预减库存方式杜绝超卖 利用Nginx+Lua在网关层面将无效请求阻挡 利用MQ消息队列的限流特性保证MySQL不会被瞬间击垮 APP需要额外设计轮询机制查询订单状态...
2022-01-20 17:56:33
1349
原创 IT老齐架构300讲笔记(062) 聊聊Cache Aside Pattern与延迟双删 缓存一致性如何保障
目录一、为什么不能直接更新缓存二、Cache Aside Pattern到底说了什么2.1为什么不是“先删缓存,再写库”2.2 Cache Aside Pattern三、延迟双删3.1 Cache Aside Pattern不一致场景3.2 延迟双删解决极端场景数据不一致专栏链接: IT老齐架构300讲笔记一、为什么不能直接更新缓存不要考虑去update更新缓存二、Cache Aside Pattern到底说了什么Cache Asid..
2022-01-20 09:31:35
375
大型网站系统与Java中间件实践
2018-06-22
微服务设计
2018-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人