09 2019 档案
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11609103.html 创建一个测试表 插入数据 查看索引 查看执行计划 创建索引(a和b的联合索引) 查看索引 查看执行计划 创建索引(b的索引) 查看索引 查看执行计划 删除索引 删除索引后,创建a
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11608581.html 乐观锁适用于读多写少的应用场景 乐观锁Version图示 Project Directory Maven Dependency 1 <?xml version="1.0" enc
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11606833.html DDL Demo 1 CREATE TABLE `user` ( 2 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 3 `m
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11605323.html 大部分开发人员利用Redis 实现分布式锁的方式,都是使用SETNX+EXPIRE 组合来实现 这种方式实现的分布式锁,是通过setnx 方法设置锁,如果lockKey 存在,则
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11605319.html Zookeeper是一种提供“分布式服务协调“的中心化服务,分布式应用程序才可以基于Zookeeper的以下两个特性实现分布式锁功能。 顺序临时节点:Zookeeper提供一个多
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11601853.html Docker 常⽤命令 镜像相关 • docker pull <image> • docker search <image> 容器相关 • docker run • docker
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11560166.html Nginx优点 高并发、高性能可扩展性好高可靠性热部署BSD许可证 Nginx组成 Nginx 二进制可执行文件 —— 由各模块源码编译出的一个文件Nginx.conf 配置文件
阅读全文
摘要:原创转载请注明出处: https://www.cnblogs.com/agilestyle/p/11532375.html String: 一般做一些复杂的计数功能的缓存List: 做简单的消息队列的功能Hash: 单点登录Set: 做全局去重的功能SortedSet: 做排行榜应用,取TopN操作
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11530702.html Reference http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/trans
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11530611.html REQUIRED behavior Spring REQUIRED behavior means that the same transaction will be used i
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11525119.html Linux 网络协议栈 根据指标找工具 根据工具查指标 网络收发流程 套接字内核选项列表 Reference https://time.geekbang.org/column/a
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11525044.html 通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。 带宽 带宽,表示链路的最大传输速率,单位通常为 b/s (比特/秒)。 吞吐量 吞吐
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11525014.html Linux 系统的 I/O 栈图 I/O性能指标 根据指标找工具 根据工具查指标 iostat、vmstat、pidstat Reference https://time.gee
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524971.html 使用率 使用率,是指磁盘处理I/O的时间百分比。过高的使用率(比如超过80%),通常意味着磁盘 I/O 存在性能瓶颈。 饱和度 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524947.html TODO Reference https://time.geekbang.org/column/article/77010
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524933.html TODO Reference https://time.geekbang.org/column/article/76876
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524691.html 使用 free 查看整个系统的内存使用情况 Note:不同版本的free输出可能会有所不同 第一列,total 是总内存大小; 第二列,used 是已使用内存的大小,包含了共享内
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524085.html 内存性能指标 根据指标找工具 根据工具查指标 free、top、vmstat、pidstat 为了迅速定位内存问题,先运行几个覆盖面比较大的性能工具,比如free、top、vms
阅读全文
摘要:Reference:https://time.geekbang.org/column/article/74272 内存 内存主要用来存储系统和应用程序的指令、数据、缓存等。 内存映射 通常所说的内存容量,比如笔记本电脑的8GB内存,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态
阅读全文
摘要:Reference:https://time.geekbang.org/column/article/74633 磁盘是一个块设备,可以划分为不同的分区;在分区之上再创建文件系统,挂载到某个目录,之后才可以在这个目录中读写文件。 其实 Linux 中“一切皆文件”,而提到的“文件”是普通文件,磁盘是
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11521391.html proc文件系统 是一种内核空间和用户空间进行通信的机制,可以用来查看内核的数据结构,或者用来动态修改内核的配置。Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11521331.html CPU性能指标 根据指标找工具 根据工具查指标 top、vmstat 和 pidstat 从 top 的输出可以得到各种 CPU 使用率以及僵尸进程和平均负载等信息。 从 vms
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11520840.html 由于CPU发展的速度远快于内存的发展,CPU的处理速度就比内存的访问速度快得多。这样,CPU在访问内存的时候,免不了要等待内存的响应。为了协调这两者巨大的性能差距,CPU缓存(通
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11520377.html 中断 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。 中断其实是一种异步的事件处理机制,可以提高系统的并发
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11520274.html 当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。 需要注意的是 iowait 高不一定代表I/O 有性能瓶颈。当系统中只有 I/O 类型的进程
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11520035.html CPU 使用率 就是除了空闲时间外的其他时间占总 CPU 时间的百分比,用公式来表示就是 事实上,为了计算 CPU 使用率,性能工具一般都会取间隔一段时间(比如3秒)的两次值,作
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11518557.html CPU 的上下文切换场景 Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 C
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11517921.html 查看平均负载 Note:最后三个数字,依次则是过去1分钟、5分钟、15分钟的平均负载(Load Average) 什么是平均负载 平均负载是指单位时间内,系统处于可运行状态和不可
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11494963.html Single Threaded Execution —— 能通过这座桥的只有一个人 所谓“Single Threaded Execution”,即“以一个线程执行”,该模式用于设
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488633.html 初始阶段的网站架构 应用服务和数据服务分离 使用缓存改善网站性能 使用应用服务器集群改善网站的并发处理能力 数据库读写分离 使用反向代理和CDN加速网站响应 使用分布式文件系统和
阅读全文
摘要:Introduction to Microservices Building Microservices: Using an API Gateway Building Microservices: Inter-Process Communication in a Microservices Arch
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488454.html HTTPS HTTPS —— Hypertext Transfer Protocol over Secure Socket Layer,即基于SSL的HTTP协议,简单地说就是H
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488404.html ELK workflow log -> filebeat -> logstash -> elasticsearch -> kibana
阅读全文
摘要:Redis是单进程单线程的工作模式 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1); 2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的; 3、采用单线程,避免了不必要
阅读全文
摘要:Reference: http://www.programcreek.com/2013/09/top-8-diagrams-for-understanding-java/ A diagram is sometimes worth 1000 words. The following diagrams
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488192.html 从JDK1.2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。 Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488036.html Minor GC 清理年轻代 Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操作,当新生代无法为新生对象分配内存空间的时候,会触发M
阅读全文
摘要:Reference:https://time.geekbang.org/column/article/107396 GC算法 JVM提供了不同的回收算法来实现这⼀套回收机制,通常垃圾收集器的回收算法可以分为以下⼏种: 如果说收集算法是内存回收的⽅法论,那么垃圾收集器就是内存回收的具体实现,JDK1.
阅读全文
摘要:Reference: https://time.geekbang.org/column/article/108139 参考指标 GC频率:⾼频的FullGC会给系统带来⾮常⼤的性能消耗,虽然MinorGC相对FullGC来说好了许多,但过多的MinorGC仍会给系统带来压⼒。 内存:这⾥的内存指的是
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484713.html 使用 -heap 查看heap空间概要 Console Output 使用 -histo:live 查看内存中有哪些对象 Reference https://docs.oracl
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484695.html -gc -gcutil Demo Reference https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jst
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484664.html 1.查看当前应用占用的PID,比如41565 2. 查看进程内部线程占用情况 3. 找出占用CPU最多的线程ID,比如41575,打印出对应的16进制号,比如:a267 4. 通
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484624.html pidstat命令就可以帮助我们监测到具体线程的上下文切换 通过pidstat -help命令,可以查看到有以下几个常用参数可以监测线程的性能: 常用参数: -u:默认参数,显示
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484608.html vmstat是一款指定采样周期和次数的功能性监测工具,可以使用它监控进程上下文切换的情况。 Note: vmstat 1 10 命令行代表每秒收集一次性能指标,总共获取10次。以
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484547.html 三种基本状态 运行态:占有CPU,并在CPU上运行 就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行 阻塞态:因等待某一事件而暂时不能运行 进程状态 进程状态转换
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484512.html GET POST POST with json body
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484485.html 截取日志文件中指定行数日志到一个新文件,比如截取783687, 783688行 1 sed -n '783687, 783688p' xxx.log > xxx.txt 截取一个
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484451.html 使用如下指令查看当前Server的TCP状态 常用的三个状态 ESTABLISHED 表示正在通信 TIME_WAIT 表示主动关闭 CLOSE_WAIT 表示被动关闭 主动关闭
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484126.html OSI参考模型与TCP/IP参考模型与TCP/IP协议栈 TCP/IP分层模型 5层参考模型 — 综合了OSI和TCP/IP的优点 5层参考模型的数据封装与解封装 应用层:报文
阅读全文
摘要:Reference: https://time.geekbang.org/column/article/112160 背景 生产环境中可以用生产者消费者模式来实现瞬时高并发的流量削峰,然而这样做虽然缓解了消费方的压力,但生产方则会因为瞬时高并发,而发生大量线程阻塞。面对这样的情况,有什么方式可以优化
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484107.html 正向代理 反向代理 Summary 两者的区别在于代理的对象不一样,「正向代理」代理的对象是客户端,「反向代理」代理的对象是服务端
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484087.html UNSIGNED属性就是将数字类型无符号化,与C、C++这些程序语言中的unsigned含义相同。 例如,INT的类型范围是-2 147 483 648 ~ 2 147 483
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484077.html 2PC 是计算机网络尤其是在数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务处理过程中能够保持原子性和一致性而设计的算法。 协议说明 2PC是将事务的提交过程分成了两
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484063.html <aop:aspectj-autoproxy proxy-target-class="false"/> 基于接口,使用JDK动态代理 JDK Dynamic proxy can
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484057.html
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484037.html 自动装配模式 Reference https://docs.spring.io/spring/docs/current/spring-framework-reference/co
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11483974.html 参考Spring官方解释 BeanFactory.java ApplicationContext.java Summary ApplicationContext是BeanFact
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11483937.html Spring是一个实现了IoC和AOP的轻量级(Lightweight)的容器(Container)框架,并且提供了对ORM、Transaction、MVC等常用框架的整合方案
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11483741.html 第一范式: 所有的键属性(列)都已定义 没有任何重复组,换句话说,每行和每列的交汇处可以而且只能包含一个值,而不能包含一组值 所有的属性(列)都依赖于主键 第二范式: 该表为第一
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11480550.html 更新缓存的4中设计模式 Cache aside Read through Write through Write behind caching Cache aside 失效:应用
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11480428.html 缓存穿透 缓存穿透是指缓存没有发挥作用,业务系统虽然去缓存中查询数据,但缓存中没有数据,业务系统需要再次去存储系统中查询数据。 通常情况下有两种情况:存储数据不存在,以及生成缓存
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11480407.html CAP定律 Note: zookeeper是按照CP原则构建的 NoSQL按数据模型存储性质 分4类 键值存储(Key-Value stores) —— Redis(适合Sess
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11462230.html Linux命令行工具之top命令 top命令是在Linux下最常用的命令之一,它可以实时显示正在执行进程的CPU使用率、内存使用率以及系统负载等信息。其中上半部分显示的是系统的统
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11450488.html Spring Bean有五个作用域,其中最基础的有下面两种: Singleton,这是Spring的默认作用域,也就是为每个IOC容器创建唯一的一个Bean实例。 Prototy
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11450467.html SqlSessionFactoryBuilder -> SqlSessionFactory -> SqlSession -> Configuration -> MapperReg
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11450415.html Spring Bean生命周期比较复杂,可以分为创建和销毁两个过程。 首先,创建Bean会经过一系列的步骤,主要包括: 实例化Bean对象。 设置Bean属性。 如果通过各种Aw
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11449605.html 通常可以把JVM内存区域分为下面几个方面,其中,有的区域是以线程为单位,而有的区域则是整个JVM进程唯一的。 1.程序计数器(PC,Program Counter Registe
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11449367.html java.util.concurrent及其子包,集中了Java并发的各种基础工具类,具体主要包括几个方面: 提供了比synchronized更加高级的各种同步结构,包括Coun
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11447794.html WAL: Write-Ahead Logging 先写日志,再写磁盘。具体说,当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里面,并更新内存,这个时
阅读全文
摘要:数据结构与算法 Reference https://linux.cn/article-7480-1.html https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444366.html final final可以用来修饰类、方法、变量,分别有不同的意义,final修饰的class代表不可以继承扩展,final的变量是不可以修改的,而final的方法也是不可以重写
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444349.html BIO 传统的java.io包,它基于流模型实现,提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444284.html 利用java.io类库,直接为源文件构建一个FileInputStream读取,然后再为目标文件构建一个FileOutputStream,完成写入工作。 1 public sta
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444197.html 单一职责(Single Responsibility) 单一职责(Single Responsibility),类或者对象最好是只有单一职责,在程序设计中如果发现某个类承担着多种
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444182.html 面向对象的基本要素:封装、继承、多态。 封装 封装的目的是隐藏事务内部的实现细节,以便提高安全性和简化编程。封装提供了合理的边界,避免外部调用者接触到内部的细节。在日常开发中,因
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444168.html Interface 接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到API定义和实现分离的目的。接口,不能实例化;不能包含任何非常量成员,任何field都是隐含着publ
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444066.html String String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的Immutable类,被声明成为final class,所有属性也都是
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444013.html 并发场景下的Map容器使用场景 如果对数据有强一致要求,则需使用Hashtable; 在大部分场景通常都是弱一致性的情况下,使用ConcurrentHashMap即可; 如果数据
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11443907.html CopyOnWriteArrayList CopyOnWriteArrayList是java.util.concurrent包提供的方法,它实现了读操作无锁,写操作则通过操作底层
阅读全文
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11443644.html newFixedThreadPool 重用指定数目(nThreads)的线程,其背后使用的是无界的工作队列,任何时候最多有nThreads个工作线程是活动的。这意味着,如果任务数
阅读全文