自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Blog of Jatsby

孜孜不倦,锲而不舍,愿所有的努力都不被辜负

  • 博客(24)
  • 收藏
  • 关注

原创 DNS解析过程

输入URL到页面展示过程1、输入网址2、DNS解析3、封装Http数据包4、建立tcp连接5、客户端发送HTPP请求6、服务器处理请求 7、服务器响应请求8、浏览器展示HTML9、浏览器发送请求获取其他在HTML中的资源域名解析过程1.在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,

2020-09-08 23:15:33 322

原创 两条线程交替打印数字

public class Solution1 { private static Object lock = new Object(); private static int i = 1; public static void main(String[] args) { Thread thread1 = new Thread() { public void run() { while (i <= 10) { synchronized (lock) {

2020-09-03 23:14:50 176

原创 MySQL实时同步ES

一.MySQL Binlog格式介绍mysql binlog日志有三种格式,分别为StatementMiXEDROW查看binlog的格式的脚本:二、binlog 的不同模式有什么区别呢?1.Statement:每一条会修改数据的sql都会记录在binlog中。优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量

2020-09-03 00:25:53 248

原创 RPC框架

1.RPC框架介绍一句话介绍:RPC技术是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明。技术对比: 1.RPC采用二进制字节码传输更加安全。 2.HTTP协议,HTTP 是应用层协议;RPC大多是TCP实现,TCP 是传输层协议。更底层的网络协议,更加高效。2.轻量分布式RPC框架实现2.1 服务端实现编写服务接口<!-- lang: java -->public interface HelloService { String hello(

2020-08-03 21:11:28 217

原创 Kafka的Controller、Partition、Consumer选举机制

Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制,被不少人搞混,这里总结一下,本篇文章大概会从三个方面来讲解。控制器(Broker)选主分区多副本选主消费组选主控制器(Broker)选举所谓控制器就是一个Borker,在一个kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follower角色。集群中第一个启动的broker会通过在zookeeper中创建临时节点/controller来让自己

2020-08-01 22:25:37 612

原创 Kafka原理问答

1. Kafka的特性?吞吐量/延时1)Kafka虽然会持久化,但每次写入操作都是写入操作系统缓存页,然后由操作系统决定在某时刻写入硬盘。- 操作系统页缓存是内存分配,写入速度快- I/O由操作系统完成,解放Kafka,提高了效率- 写入采用append的方式,比磁盘随机写操作要快得多2)读取数据时,首先读缓存页,命中则直接发送到网络Socket上,实现零拷贝(避免了数据在内核态和用户态之间的来回拷贝)。消息持久化1)解耦了消息生产者和消息消费者,提高了吞吐量。2)消息灵活处理:对已

2020-07-19 19:49:40 219

转载 Raft算法笔记

文章来源为转载:作者:奔跑的番茄酱链接:https://www.jianshu.com/p/9ed01533ade8分布式系统中为了保证服务的高可用往往需要将数据分发到不同的节点,以防止某个节点的宕机而导致服务不可用,但是数据分发总是需要一个过程,而分发过程中节点上面的数据大概率是不一致的。举个例子,一个分布式系统有ABC三个节点,并且系统有一个变量X在ABC三个节点上的初始状态都为1,client发送一个请求:将X更新为2,并且A节点首先做了更新,但是此时还并没有同步到BC节点,假如没有任何限制措施

2020-07-05 17:13:28 530

原创 常用排序算法复杂度分析

1、排序大类排序算法大致可以分为两大类:内部排序和外部排序。内部排序指的是排序数据都存储在内存中。外部排序则需要借助到外出。常用排序算法都为内部排序。2、内部排序分类(1)插入排序:直接插入排序、二分法插入排序、希尔排序(2)选择排序:直接选择排序、堆排序(3)交换排序:冒泡排序、快速排序(4)归并排序(5)基数排序3、各排序算法分析3.1 插入排序思想:每步将一个待排序的记录,按其数值大小插入到前面已经排好序的序列的合适位置,直到全部插入排序完为止。关键问题:在前面已经排好序的

2020-06-27 16:30:40 3367

原创 序列化与反序列化及各序列化协议差异

一、什么是序列化和反序列化?Java 序列化是指把 Java 对象转换为字节序列的过程;Java 反序列化是指把字节序列恢复为 Java 对象的过程。二、序列化的作用?对象持久化,可以把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中(节省内存);例如:Web 服务器中的 Session 会话对象,当有10万用户并发访问,就有可能出现10万个 Session 对象,显然这种情况内存可能是吃不消的。于是 Web 容器就会把一些 Session 先序列化,让他们离开内存空间,序列化到硬

2020-06-27 11:57:44 441

原创 你可以自己实现一个IOC容器么?嗯,我可以!

package com.jatsty.ioc.annotation;​import java.lang.annotation.*;​@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Documentedpublic @interface Autowire { String value() default "";}

2020-06-25 11:40:20 118

原创 如何使用zookeeper实现分布式锁?

在进行算法理解之前,有必要了解一下Zookeeper的几个性质:有序节点:假如当前有一个父节点为/lock,我们可以在这个父节点下面创建子节点;zookeeper提供了一个可选的有序特性,例如我们可以创建子节点“/lock/node-”并且指明有序,那么zookeeper在生成子节点时会根据当前的子节点数量自动添加整数序号,也就是说如果是第一个创建的子节点,那么生成的子节点为/lock/node-0000000000,下一个节点则为/lock/node-0000000001,依次类推。临时节点:客户端

2020-06-14 18:17:08 198

原创 数据结构与算法:制作 m 束花所需的最少天数

一、题目给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。示例 1:输入:bloomDay = [1,10,3,10,2], m = 3, k = 1输出:3解释:让我们一起观察这三天的花开过程,x 表示花开,而 _ 表示花还

2020-06-14 13:32:41 369

原创 TCP的流量控制和拥塞控制

1 流量控制1.1 什么是流量控制?流量控制就是控制发送端发送数据的速率,让接收端来得及接受数据,不至于使得数据丢失,是一种端到端的控制方式。1.2 如何实现流量控制?使用滑动窗口机制进行流量控制。在TCP的确认应答机制中,每发送一次数据,都需要接收端进行一次ACK确认,发送方收到ACK后才可以进行下一次发送,这样做就有一个比较大的缺陷,就是传输性能比较差,特别是在数据往返所需要时间较长...

2020-03-15 19:03:07 280

原创 FastDFS工作原理

1 什么是FastDFSFastDFS是开源的轻量级(应用级,非系统级)的分布式文件系统,主要由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据的存储问题,特别适用于中小型文件(建议范围:4KB < file_size <500MB)为载体的在线服务。Tracker server:Tra...

2020-03-14 23:35:26 984

原创 SpringMVC执行原理

SpringMVC执行原理SpringMVC是Spring框架的一个子模块,是一个web开发框架,支持MVC模式的web开发。M-Model 模型(完成业务逻辑:由javaBean构成,service+dao+entity)V-View 视图(做界面的展示 jsp,html等)C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)1)原理图2)...

2020-03-09 12:09:13 134

原创 MyBatis篇

1 使用MyBatis的步骤1) 传统MyBatis使用方法引入MyBatis的及数据库连接的相关依赖,即jar包(mybatis-0.0.0.jar和mysql-connection-java-0.0.0.jar)创建MyBatis的核心配置文件(mybatis-config.xml),包括配置数据源,日志等settings行为,实体类路径及相应的mapper.xml(以前的Dao层)文...

2020-03-08 23:12:26 276

原创 MySQL篇

1 MySQL存储引擎有哪些?各自有什么特点?MySQL的存储引擎主要由MyISAM、InnoDB、Memory、Merge、BDB、Archive、Federated、Cluster/NDB、CSV等;1) InnoDBInnoDB是事务安全型的存储引擎,它具有事务的ACID特性,支持行锁定和外键约束,它是MySQL5.1之后的默认引擎,之前是MyISAM.事务安全性存储引擎,更安全,...

2020-03-07 17:42:08 136

原创 ConcurrentHashMap实现原理(含JDK1.7和JDK1.8对比)

ConcurrentHashMap的前世今生1 JDK1.7下的ConcurrentHashMap在JDK1.7之前的ConcurrentHashMap采用的是分段锁的思想,支持并发操作,所以是线程安全的。ConcurrentHashMap在内部划分成了若干个数据段(Segment),可以把每一段都大致理解成是一个HashMap。默认Segment大小为16,Segment的个数也就是锁的并...

2020-02-28 16:38:41 216

原创 HashMap实现原理

1 内部基本属性常量/** * 默认初始容量—必须是2的幂。 */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16:/** * 最大容量,如果较高的值由带参数的任何构造函数隐式指定,则使用该值。必须是2的幂 <= 1<<30。 */static final int MAXIMUM...

2020-02-28 15:05:20 128

原创 String类型为什么被设计成final的?

如图,字符串类是用final修饰的,这说明Stringl类是不可被继承和修改的,其成员变量本质就是final类型的字符数组。String类声明为final类型,大抵是从“性能”和“安全性”两方面考虑的。不可变性支持字符串常量池字符串的不可变性使得字符串可以存储在字符串常量池中,同一个值可以被多个变量引用,可以节省内存空间的,提高效率。如果字符串是可变的,则其中一个变量将值改变,其他变量的值...

2020-02-25 23:24:02 272

原创 SpringBoot整合netty和websocket

构建netty服务器(如何构建请参考博主上两篇文章)构建服务器后,用@Component注解该服务器类,让spring容器管理该服务器类,将该类定义成单例模式@Componentpublic class WSServer { private static class SingletonWSServer { static final WSServer instance ...

2019-12-12 22:56:40 365

原创 netty集成websocket

服务器定义主从线程组、启动类、处理函数初始化器,设置通道方式,绑定服务器端口(具体可看博主上一篇HelloNetty服务器)public class WSServer { public static void main(String[] args) throws InterruptedException { EventLoopGroup mainGroup = new ...

2019-12-12 22:41:18 496 1

原创 netty入门,HelloNetty服务器

1.Netty定义 netty是一个提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

2019-12-12 19:43:30 141

原创 SpringBoot中集成mybatis-generator配置

1.引入pom.xml依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</versio...

2019-12-12 19:22:47 210

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除