06 2019 档案
摘要:一、概述: innodb的整个体系架构就是由多个内存块组成的缓冲池及多个后台线程构成。缓冲池缓存磁盘数据(解决cpu速度和磁盘速度的严重不匹配问题),后台进程保证缓存池和磁盘数据的一致性(读取、刷新),并保证数据异常宕机时能恢复到正常状态。 缓冲池主要分为三个部分:redo log buffer、i
阅读全文
摘要:InnoDB存储引擎的关键特性包括插入缓冲、两次写(double write)、自适应哈希索引(adaptive hash index)。这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性。 插入缓冲 插入缓冲是InnoDB存储引擎关键特性中最令人激动的。不过,这个名字可能会让人认为插入缓
阅读全文
摘要:索引目录 INNODB的体系结构 缓冲池 缓存中页的定位: checkpoint技术 INNODB的关键特性 插入缓冲 change buffer 两次写 索引目录 INNODB的体系结构 缓冲池 缓存中页的定位: checkpoint技术 INNODB的关键特性 插入缓冲 change buffe
阅读全文
摘要:为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 例子: 假设client发起连接的连接请求报文段在网络中没有丢失,而是在某个网络节点长时间滞留了,导致延迟到达server。本来这是一个已经失效的连接报文,但是server接收到这个连接报文之后,误认为client发
阅读全文
摘要:单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:数据
阅读全文
摘要:1. 锁的实现 synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的。 2. 性能 新版本 Java 对 synchronized 进行了很多优化,例如自旋锁等,synchronized 与 ReentrantLock 大致相同。 3. 等待可中断 当持有
阅读全文
摘要:查看进程 1. ps 查看某个时间点的进程信息。 示例一:查看自己的进程 # ps -l 示例二:查看系统所有进程 # ps aux 示例三:查看特定的进程 # ps aux | grep threadx 2. pstree 查看进程树。 示例:查看所有进程树 # pstree -A 3. top
阅读全文
摘要:软连接 软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块 硬链接 一个 inode 号对应多个文件名,文件有相同的 inode 及 data block 参考:https://www.ibm.com/developerworks/cn/linux/l-c
阅读全文
摘要:RAID是英文Redundant Array of Independent Disks(独立磁盘冗余阵列),简称磁盘阵列。下面将各个级别的RAID介绍如下。 一、为什么使用Raid? 1、对磁盘高速存取(提速): RAID将普通硬盘组成一个磁盘阵列,在主机写入数据,RAID控制器把主机要写入的数据分
阅读全文
摘要:1. JedisCluster类结构 JedisCluster是针对RedisCluster的java客户端,它封装了java访问redis集群的各种操作,包括初始化连接、请求重定向等。我们先来看下JedisCluster的类结构: JedisCluster初始化时,所有的集群连接信息都是封装在Je
阅读全文
摘要:哨兵模式 哨兵模式是redis高可用的实现方式之一 使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障转义,保证系统的可用性。 哨兵们是怎么感知整个系统中的所有节点(主节点/从节点/哨兵节点)的 首先主
阅读全文
摘要:主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 一、哨兵模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,
阅读全文
摘要:Redis集群设计包括2部分:哈希Slot和节点主从 节点主从: 主从设计不算什么新鲜玩意,在数据库中我们也经常用主从来做读写分离,直接上图: 图上能看得到的信息: 1, 只有1个Master,可以有N个slaver,而且Slaver也可以有自己的Slaver,由于这种主从的关系决定他们是在配置阶段
阅读全文
摘要:VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式)。 VMware workstation安装好之后会多出两个网络连接,分别是VMware Network Adapter VMnet1和VMware Network Adap
阅读全文
摘要:DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。D
阅读全文
摘要:两者没太大差别 追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。 ps -ef 是用标准的格式显示进程的、其格
阅读全文
摘要:1. 参考的优秀文章 Request/Response protocols and RTT 2. 来源 原来,系统中一个树结构的数据来源是Redis,由于数据增多、业务复杂,查询速度并不快。究其原因,是单次查询的数量太多了,一个树结构,大概要几万次Redis的交互。于是,尝试用Redis的Pipel
阅读全文
摘要:UNIX时间戳:Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp) 是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00
阅读全文
摘要:linux中wget 、apt-get、yum rpm区别 wget 类似于迅雷,是一种下载工具, 通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理 名字是World Wide Web”与“get”的结合。 yum: 是redhat, centos 系统下的软
阅读全文
摘要:/var/run是干什么用的 根据linux的文件系统分层结构标准(FHS)中的定义: /var/run 目录中存放的是自系统启动以来描述系统信息的文件。 比较常见的用途是daemon进程将自己的pid保存到这个目录。 标准要求这个文件夹中的文件必须是在系统启动的时候清空,以便建立新的文件。 为了达
阅读全文
摘要:守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立 于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于
阅读全文
摘要:普通实现 说道Redis分布式锁大部分人都会想到: 1、setnx+lua, 2、setkey value px milliseconds nx。 这种实现方式有3大要点(也是面试概率非常高的地方): 事实上这类琐最大的缺点就是它加锁时只作用在一个Redis节点上,即使Redis通过sentinel
阅读全文
摘要:转自:https://www.seoxiehui.cn/article-45186-1.html 需求: 为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列:要想统计所有90后的程序员该怎么做呢 转自:https://www.seoxiehui
阅读全文
摘要:我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。 如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力。 而用Redis的GETBIT和SETBIT则会简单得多。我们以视频为例,我们用bitma
阅读全文
摘要:位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣。说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引。 1. 案例 有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离
阅读全文
摘要:操作系统会在负责执行映射,用于操作大文件 java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件;java nio中引入了一种基于MappedByteBuffer操作大文件的方式,其读写性能极高 FileChannel提供了map方
阅读全文
摘要:一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 二、NIO和IO的主要区别 下表总结
阅读全文
摘要:转自:常用工具页面 Java源代码搜索 Grepcode是一个面向于Java开发人员的网站,在这里你可以通过Java的projects、classes等各种关键字在线查看它对应的源码,知道对应的project、classes等信息。 更方便的是,能提供非常多不同版本的源码在线查看、jar包、源码ja
阅读全文
摘要:在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用。 1.符号引用(Symbolic References): 符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。例如,在Class文件中它以CONSTA
阅读全文
摘要:公平锁/非公平锁(多线程执行顺序的维度) 概念理解 公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。 非公平所:线程加锁时直接尝试获取锁,获取不到就自动到队尾等待。 例子 ReentrantLock 同时支持两种锁 适用场景 更多的是直接使用非公平锁:非公平锁比公平
阅读全文
摘要:1、Jenkins入门(一)安装Jenkins 2、Jenkins入门(二)部署java项目 3、Jenkins远程部署SpringBoot应用 4、配置sonar、jenkins进行持续审查 5、SonarLint插件
阅读全文
摘要:我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用。 Git的优点 Git的优点很多,但是这里只列出我认为非常突出的几点。 感兴趣的,可以去看一下Git本身的设计,内在的架构体现了很多的优势,不愧是出资天才
阅读全文
摘要:互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)。 本文简要介绍持续集成的概念和做法。 一、概念 持续集成指的是,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集
阅读全文
摘要:TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers) 第二次握手
阅读全文
摘要:一.含义 “TTL”是生存时间(Time To Live)的意思 关于时间与跳的讨论, https://www.zhihu.com/question/61007907 一开始理解为time to leap,wiki上是hop limit 顺便复习了个单词,hop是类似青蛙跳,兔子跳连续的,正符合。
阅读全文
摘要:下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。 这里进一步探究TCP三路握手和四次挥手过程中的状态变迁以及数据传输过程。先看TCP状态状态转换图。 上半部分是TCP三路握手过程的状态变迁,下半部分是TCP四次挥手过程的状态变迁。 CL
阅读全文
摘要:传输控制协议(TCP)是一种面向连接的协议,网络程序使用这个协议的时候,网络可以保证客户端和服务端的连接是可靠的,安全的。 如果 A机向 B机发送“hello”,在物理网线上传输的数据不仅仅是“hello”这5个字符,其实除了hello(被称为有效载荷)之外,还必须有用于TCP/IP协议进行处理所需
阅读全文
摘要:关于Nacos已经展开了四篇入门文章: 初探Nacos(一)-- 单机模式启动 初探Nacos(二)-- SpringCloud使用Nacos的服务注册与发现 初探Nacos(三)-- SpringBoot下整合Dubbo和Nacos 初探Nacos(四)-- SpringBoot下使用Nacos作
阅读全文
摘要:注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not found : command not found: 'tartup.sh: line 19: syntax
阅读全文
摘要:转自:https://blog.csdn.net/liyanan21/article/details/89320872 目录 一、Raft算法 二、Nacos中Raft部分源码 init() 1. 获取Raft集群节点 NamingProxy.getServers()获取集群节点 NamingPro
阅读全文
摘要:上面已提到消费端感知topic服务器有新消息叫推拉模式 左图采用短连接,server端不能获取clinet连接资源,无法主动推给client。所以要求client定时过来拿数据 右图采用长连接,server端可以获取clinet连接资源,有消息过来就能主动推给client 短连接应用受环境因素限制,
阅读全文
摘要:概述 盘片 片面 和 磁头 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。如下图: 图1 图1 扇区 和
阅读全文
摘要:开发过程中四个环境分别是:pro、pre、test、dev环境,中文名字:生产环境、灰度环境、测试环境、开发环境 环境介绍: pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。 pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。 test环境:测试
阅读全文
摘要:一个软件产品从开发到用户使用都涉及哪些环境? 开发环境、测试环境、回归环境、预发布环境、生产环境。 下面说说我个人对这些环境的理解: 1、开发环境 顾名思义,开发同学开发时使用的环境,每位开发同学在自己的dev分支上干活,提测前或者开发到一定程度,各位同学会合并代码,进行联调。 2、测试环境 也就是
阅读全文
摘要:使用场景: 当这台机器出现故障时,自动动态切换到另一台热备的机器 高可用性HA(High Availability) 指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。 实现HA的
阅读全文
摘要:Spring Cloud 版本 Spring Cloud没有数字版本号,而是对应一个开发代号 开发代号看似没有什么规律,但实际上首字母是有顺序的,比如:Dalston版本,我们可以简称 D 版本,对应的 Edgware 版本我们可以简称 E 版本。 Spring Cloud 小版本分为: SNAPS
阅读全文
摘要:zipkin主要涉及四个组件 collector storage search web UI 官网: https://zipkin.apache.org/ 使用: 方法1: 配置参数:解压修改配置文件,重新打包jar(jar -cfM0 zipkin-server-2.14.0-exec.jar *
阅读全文
摘要:1、修改jar中的配置文件-->jar重新打包 2、application.properties获取maven中的参数
阅读全文
摘要:Linux 1、Linux:存在几十个文件系统类型:ext2,ext3,ext4,xfs,brtfs,zfs(man 5 fs可以取得全部文件系统的介绍) 不同文件系统采用不同的方法来管理磁盘空间,各有优劣;文件系统是具体到分区的,所以格式化针对的是分区,分区格式化是指采用指定的文件系统类型对分区空
阅读全文
摘要:使用流程 发布者(推送消息的一端): 创建一个tcp长连接connection,连接rabbitmq的监听端口5672; 在TCP长连接下创建一个信道channel,信道可以理解为connection的一个分支; 通过信道向rabbitmq声明一个交换机exchange,设置交换机的类型,名称,是否
阅读全文
摘要:1、创建用户、赋予权限 2、时区设置 3、mysql 更新最新的一条记录 4、分组取每组前几条记录
阅读全文
摘要:原理:观察者模式 spring的事件监听有三个部分组成,事件(ApplicationEvent)、监听器(ApplicationListener)和事件发布操作。 事件 事件类需要继承ApplicationEvent,代码如下: public class HelloEvent extends App
阅读全文
摘要:Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输, Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息的载体,每个消息都会被投到一个或多个队列。 Binding:绑定,它的作用就是把exchange和q
阅读全文
摘要:转自:https://www.cnblogs.com/albert1024/articles/8434741.html Orika是一个简单、快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器。 关于: 作为开发人员,我们必须为业务问题提供解决方案,我们希望利用
阅读全文
摘要:TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址)。 SOCKET:SOCKET只是面对编程人员的一个基于TCP/IP协议的编程接口,通过SOCKET,编程人员可以控制如何让数据在客户端和服务端进行
阅读全文
摘要:Flyway 和 Liquibase 都是 Java 项目中常用的 DB migration 工具, 从使用简便性看,Flyway 比 Liquibase 更简单, 从 github 的 star 数量看, flyway 更受欢迎. flyway 命令行工具和 maven 插件 对于 SpringB
阅读全文
摘要:前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 正文 添加依赖 在 pom.xml 文件中添加相关依赖: 安装插件 由于 Lombok 采取的注解形式的,在编译后,自动生成相应的方法,
阅读全文
摘要:host文件位置:C:\Windows\System32\drivers\etc
阅读全文
摘要:最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确或者有疑问的地方,望指明,一起
阅读全文
摘要:首先,我们还是通过spring initializr来新建三个项目。一个zipkin service。另外两个是普通的业务应用,分别叫service和client。 zipkin service client service 如上我们引入了web 、zipkin client两个依赖。 新建zipk
阅读全文
摘要:安装 brew install rabbitmq 目录 cd /usr/local/Cellar/rabbitmq/3.7.4/sbin 插件 sudo ./rabbitmq-plugins enable rabbitmq_management 启动 ./rabbitmq-server 管理界面 h
阅读全文

浙公网安备 33010602011771号