01 2021 档案

JDK8时间新API
摘要:@RunWith(JUnit4.class) public class Jdk8DateTime { @Test public void practiceLocalDate() { LocalDate localDate = LocalDate.now(); System.out.println(l 阅读全文

posted @ 2021-01-31 22:31 MaXianZhe 阅读(45) 评论(0) 推荐(0) 编辑

SpringBoot加载配置文件的顺序
摘要:配置文件路径的优先级:我们从属性:DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/可以看出文件路径的先后顺序(注意:后加载的会覆盖先加载的): classpath:/classpath: 阅读全文

posted @ 2021-01-30 20:57 MaXianZhe 阅读(180) 评论(0) 推荐(0) 编辑

Redis值hash操作
摘要:在使用set 设置string串的时候,value部分不用加引号,但是在操作除了string之外的类型时就得加了 阅读全文

posted @ 2021-01-30 19:50 MaXianZhe 阅读(67) 评论(0) 推荐(0) 编辑

直接内存是咋分配的
摘要:UnpooledDirectByteBuf protected UnpooledDirectByteBuf(ByteBufAllocator alloc, int initialCapacity, int maxCapacity) { super(maxCapacity); if (alloc == 阅读全文

posted @ 2021-01-30 16:43 MaXianZhe 阅读(56) 评论(0) 推荐(0) 编辑

Netty零拷贝总结
摘要:转载自 https://www.jianshu.com/p/e488c8ee5b57 Netty中对零拷贝的封装 Netty的零拷贝 在操作系统层面上的零拷贝是指避免在用户态与内核态之间来回拷贝数据的技术。 Netty中的零拷贝与操作系统层面上的零拷贝不完全一样, Netty的零拷贝完全是在用户态( 阅读全文

posted @ 2021-01-29 16:08 MaXianZhe 阅读(360) 评论(0) 推荐(0) 编辑

G1的暂停预测模型是怎么做到的
摘要:1. G1垃圾收集器停顿预测模型 G1收集器突出表现出来的一点是通过一个停顿预测模型根据用户配置的停顿时间来选择Cset的大小,从而达到用户期待的应用程序暂停时间 通过-XX:MaxGCPauseMillis参数来设置,这一点有点类似于Parallel Scavenge收集器.关于停顿时间的设置并不 阅读全文

posted @ 2021-01-29 10:28 MaXianZhe 阅读(496) 评论(0) 推荐(0) 编辑

Zookeeper是怎么处理读写请求的
摘要:在Zookeeper中对于请求分为两类: 事务性请求 非事务性请求 所谓事务性请求,说白了就是 写操作。 更新操作、新增操作、删除操作,因为这些操作是会影响数据的,所以要保证这些操作在整个集群内的事务性,所以这些操作就是事务性请求。 那么非事务性请求就好理解的,像查询操作 这些不影响数据的操作,就不 阅读全文

posted @ 2021-01-29 09:37 MaXianZhe 阅读(753) 评论(1) 推荐(1) 编辑

Kafka是读写分离的吗
摘要:答案 kafka的读写操作都是由主来处理的,原因如下 首先明确一下:主从分离与否没有绝对的优劣,它仅仅是一种架构设计,各自有适用的场景。 第二、如你所说,Redis和MySQL都支持主从读写分离,我个人觉得这和它们的使用场景有关。对于那种读操作很多而写操作相对不频繁的负载类型而言,采用读写分离是非常 阅读全文

posted @ 2021-01-29 09:34 MaXianZhe 阅读(822) 评论(0) 推荐(0) 编辑

Kafka集群中一台broker挂掉的处理过程
摘要:controller在启动时会注册zk监听器来监听zookeeper中的/brokers/ids节点下的子节点变化,即集群中所有的broker列表,而每台broker在启动时会向zk的/brokers/ids下写入一个名字为broker.id的临时节点,当该broker挂掉或与zk断开连接时,此临时 阅读全文

posted @ 2021-01-29 09:24 MaXianZhe 阅读(2029) 评论(0) 推荐(0) 编辑

Zookeeper中kafka相关节点路径
摘要:第一个 记住 zk上看节点是 ls / 记住一定要有/ 跟kafka有关的主要两个路径是/brokers/ids 和 /brokers/topics 别看上图展示是数组形式,其实有两个平行的节点 阅读全文

posted @ 2021-01-29 09:04 MaXianZhe 阅读(329) 评论(0) 推荐(0) 编辑

CompletableFuture代码示例
摘要:List<CompletableFuture<String>> checkFutures = checkFilterList.parallelStream().map(checkFilter-> CompletableFuture.supplyAsync(() -> { String checkTy 阅读全文

posted @ 2021-01-28 20:08 MaXianZhe 阅读(98) 评论(0) 推荐(0) 编辑

准备用HashMap存1w条数据,构造时传10000还会触发扩容吗
摘要:从构造方法的逻辑可以看出,HashMap 并不是直接使用外部传递进来的 initialCapacity,而是经过了 tableSizeFor() 方法的处理,再赋值到 threshole 上。 static final int tableSizeFor(int cap) { int n = cap 阅读全文

posted @ 2021-01-28 17:17 MaXianZhe 阅读(199) 评论(0) 推荐(0) 编辑

数据库和缓存一致性解决方案
摘要:缓存延时双删 问:先删除缓存,再更新数据库中避免脏数据? 答案:采用延时双删策略。 上文我们提到,在先删除缓存,再更新数据库的情况下,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。 那么延时双删怎么解决这个问题呢? (1)先淘汰缓存 (2)再写数据库(这两步和原来一样) (3)休眠1秒,再 阅读全文

posted @ 2021-01-28 15:55 MaXianZhe 阅读(104) 评论(0) 推荐(0) 编辑

Mysql索引失效原因
摘要:1.有or必不使用索引;2.复合索引未用左列字段;3.like以%开头;4.需要类型转换;5.where中索引列有运算;6.where中索引列使用了函数;7.如果mysql觉得全表扫描更快时(数据少); 1. where语句中包含or时,可能会导致索引失效 使用or并不是一定会使索引失效,你需要看o 阅读全文

posted @ 2021-01-28 15:41 MaXianZhe 阅读(534) 评论(0) 推荐(0) 编辑

Zookeeper配置文件
摘要:我们的sit2环境zookeeper的配置文件 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can tak 阅读全文

posted @ 2021-01-28 14:25 MaXianZhe 阅读(87) 评论(0) 推荐(0) 编辑

Zookeeper的节点类型
摘要:(1)PERSISTENT-持久节点除非手动删除,否则节点一直存在于 Zookeeper 上 (2)EPHEMERAL-临时节点临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。 (3)PERSI 阅读全文

posted @ 2021-01-28 12:04 MaXianZhe 阅读(295) 评论(0) 推荐(0) 编辑

Linux命令-vim
摘要:1 冒号 : 进入命令模式 2 set nu显示行号 3 :wq! 感叹号 强制退出 阅读全文

posted @ 2021-01-28 11:46 MaXianZhe 阅读(55) 评论(0) 推荐(0) 编辑

Mycat之按照时间进行分片
摘要:一、日期列分区法 <tableRule name="sharding-by-date"> <rule> <columns>create_time</columns> <algorithm>sharding-by-date</algorithm> </rule> </tableRule> <funct 阅读全文

posted @ 2021-01-28 10:08 MaXianZhe 阅读(274) 评论(0) 推荐(0) 编辑

Mysql binlog解析器
摘要:shyiko 是git上的开源项目我们这边进行了封装 public class BinaryLogClient implements BinaryLogClientMXBean { private static final SSLSocketFactory DEFAULT_REQUIRED_SSL_ 阅读全文

posted @ 2021-01-28 09:24 MaXianZhe 阅读(493) 评论(0) 推荐(0) 编辑

Redis数据结构编码之ZSet
摘要:有序集合的编码可以是zipList和跳表 还有一种实现方式,就是放到压缩列表里 那么什么时候redis决定使用压缩列表呢 阅读全文

posted @ 2021-01-27 16:47 MaXianZhe 阅读(136) 评论(0) 推荐(0) 编辑

Redis数据结构编码之Hash
摘要:hash的编码有两种 而正常的hash是用字典实现的 阅读全文

posted @ 2021-01-27 16:19 MaXianZhe 阅读(75) 评论(0) 推荐(0) 编辑

Redis数据结构编码之List
摘要:在Redis中List有两种编码方式 1 压缩列表 2 链表 上面的压缩列表有三个元素 1 three 5。压缩列表数据部分其实就是数组,内存地址连续。注意,这个数组地址空间并不在redisObject里面 链表的每个元素都是一个RedisObject 阅读全文

posted @ 2021-01-27 15:37 MaXianZhe 阅读(174) 评论(0) 推荐(0) 编辑

Redis SetNx 同时设置过期时间
摘要:set k1 value22 EX 100 NX 阅读全文

posted @ 2021-01-27 15:30 MaXianZhe 阅读(4456) 评论(0) 推荐(1) 编辑

如何用ZK实现分布式锁
摘要:public class BaseDistributedLock { private final ZkClientExt client; private final String path; private final String basePath; private final String lo 阅读全文

posted @ 2021-01-27 14:50 MaXianZhe 阅读(215) 评论(0) 推荐(0) 编辑

Netty样例之如何使用LengthFieldBasedFrameDecoder
摘要:一 客户端 public class NewClient { private int port; private String address; public NewClient(int port,String address) { this.port = port; this.address = 阅读全文

posted @ 2021-01-27 12:12 MaXianZhe 阅读(570) 评论(0) 推荐(0) 编辑

大端序和小端序
摘要:计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。 举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。小端字节序:低位字节在前,高位字节在后 阅读全文

posted @ 2021-01-27 11:31 MaXianZhe 阅读(626) 评论(0) 推荐(0) 编辑

SpringBoot整合redis
摘要:先上代码 一 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- lettuc 阅读全文

posted @ 2021-01-27 10:59 MaXianZhe 阅读(254) 评论(0) 推荐(0) 编辑

如何用Maven打war包
摘要:我的控制台代码就是打的war包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma 阅读全文

posted @ 2021-01-26 22:11 MaXianZhe 阅读(404) 评论(0) 推荐(0) 编辑

Maven之如何用assembly插件打jar包
摘要:maven-assembly-plugin有什么好处呢? 英文原文:The Assembly Plugin for Maven is primarily intended to allow users to aggregate the project output along with its de 阅读全文

posted @ 2021-01-26 22:07 MaXianZhe 阅读(275) 评论(0) 推荐(0) 编辑

Kafka之常用API代码示例
摘要:其实Kafka作为一款消息队列,本身的api并不多,也不复杂,本文列举出来生产者和消费者常见的api public class KafkaTestProduer { public static final Logger logger = LoggerFactory.getLogger(KafkaTe 阅读全文

posted @ 2021-01-26 17:44 MaXianZhe 阅读(305) 评论(0) 推荐(0) 编辑

Redis之HyperLoglog
摘要:Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素 阅读全文

posted @ 2021-01-26 16:26 MaXianZhe 阅读(99) 评论(0) 推荐(0) 编辑

Mycat面试知识点总结
摘要:现在的面试越来越变态了,不少公司还是会考分库分表的,倒不一定会考多深,但是如果一点答不上来那就让面试官的印象很差,本文是自己搭建mycat的经验外加参考网上他人的经验写成,目的很简单应付面试的。 一 Mycat基本概念 先看schema.xml这个配置文件 <mycat:schema xmlns:m 阅读全文

posted @ 2021-01-26 15:25 MaXianZhe 阅读(526) 评论(0) 推荐(0) 编辑

Redis持久化之混合aof,rdb
摘要:Redis4.0之后可以使用RDB AOF混合方式进行持久化了,说到持久化,持久化在Redis里有两种使用场景 1 服务器重启的时候可以加载持久化文件恢复数据 2 AOF由于是采用顺序写的方式,所以经过一定的时间旧的AOF就不够新了需要进行重写保证数据一致性 现在看看怎么开启混合模式 # When 阅读全文

posted @ 2021-01-25 17:44 MaXianZhe 阅读(821) 评论(0) 推荐(0) 编辑

Redis之缓存穿透,缓存击穿,缓存雪崩
摘要:1 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,我们数据库的 id 都是1开始自增上去的,如发起为id值为 -1 的数据或 id 为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大,严重会击垮数据库。 缓存穿透一般是人为攻击,解决手段可以是使用布隆过滤器,如果布 阅读全文

posted @ 2021-01-25 15:30 MaXianZhe 阅读(83) 评论(0) 推荐(0) 编辑

Redis参数解析之--输出缓冲区
摘要:Redis配置文件里有这样的配置 # client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>## A client is immediately disconnected once the hard li 阅读全文

posted @ 2021-01-25 15:04 MaXianZhe 阅读(388) 评论(0) 推荐(0) 编辑

Https简单流程
摘要:最近看到不少同学在网上写的面经,很多公司都会问到HTTPS,昨晚晚上臭儿子睡了之后花了大概一个小时读了两篇文章,算是把过程理清楚了,今天就写写总结 1 客户端也就是浏览器请求一个url,比如是https://baidu.com 2 server端收到请求后,第一件事就是把自己的公钥传给客户端,但是传 阅读全文

posted @ 2021-01-25 11:58 MaXianZhe 阅读(691) 评论(0) 推荐(0) 编辑

Spring之PropertyPlaceholderConfigurer源码分析
摘要:一 引言 第一部分先说说在Spring下,怎么使用PropertyPlaceholderConfigurer及其原理。 第二部分再说说SpringBoot下,新的PropertySourcesPlaceholderConfigurer 二 代码示例 如果我们想在代码中使用@Value之类的注解,就需 阅读全文

posted @ 2021-01-25 10:27 MaXianZhe 阅读(646) 评论(0) 推荐(0) 编辑

Redis之位数组的实现(一)--数据结构
摘要:一 位数组的表示 Redis使用字符串对象来表示位数组,因为字符串对象是SDS数据结构是二进制安全的 需要注意的是,buf数组保存位数组的顺序和我们平时书写位数组的顺序是完全相反的,上面图上的10110010,其实表示的位数组是0100 1101。这也是常见的大小端问题,0100 1101 是我们人 阅读全文

posted @ 2021-01-24 16:35 MaXianZhe 阅读(212) 评论(0) 推荐(0) 编辑

Redis之订阅是怎么实现的
摘要:一 订阅的数据结构 struct redisServer { //... dict *pubsub_channels; // .. } 该数据结构就是hashtable加上链表 每当客户端发送SUBSCRIBE命令分为两种情况 1 该channel已经存在了,那么就把新的客户端加到链表的尾节点 2 阅读全文

posted @ 2021-01-24 08:39 MaXianZhe 阅读(100) 评论(0) 推荐(0) 编辑

Redis事务实现原理
摘要:一 Exec伪代码 二 watch的实现原理 每一个Redis数据库对象都保存着watched_keys字典,键是被watch的key,而value是所有watch的客户端组成的链表 上面图里的C1 C2 C3 C4 都是执行了watch的客户端 watch是什么时候被触发的呢 阅读全文

posted @ 2021-01-23 19:54 MaXianZhe 阅读(97) 评论(0) 推荐(0) 编辑

Spring 之@Value注解原理
摘要:@Value和@Autowired这两个注解都是由AutoWiredAnnotationBeanPostProcessor来处理的,这两个注解被处理的地方也是一样的,就是在一个bean被new出来之后,要填充属性的populateBean方法里。 会调用 AutoWiredAnnotationBea 阅读全文

posted @ 2021-01-23 12:39 MaXianZhe 阅读(2581) 评论(0) 推荐(0) 编辑

Netty之读取消息
摘要:一 引言 如果我们不使用Netty而是直接使用JDK的话,可以使用socketChannel.read(ByteBuffer)的方式进行读取。而Netty牛逼的地方就是替我们把读取繁琐操作给做的,还把半包粘包给解决了。本文就来看看Netty是怎么做的 二 NioSocketChannelUnsafe 阅读全文

posted @ 2021-01-22 11:51 MaXianZhe 阅读(838) 评论(0) 推荐(0) 编辑

Redis源码之常见数据结构--ClusterNode
摘要:typedef struct redisDb { dict *dict; /* The keyspace for this DB */ dict *expires; /* Timeout of keys with a timeout set */ dict *blocking_keys; /* Ke 阅读全文

posted @ 2021-01-21 15:12 MaXianZhe 阅读(226) 评论(0) 推荐(0) 编辑

Netty之写成功后是怎么收到通知的
摘要:有时候使用Netty要发送的两个消息有依赖关系,第一个发送成功才能发送第二个,代码里是可以这么写的 ChannelFuture channelFuture = ch.writeAndFlush(line + "\r\n"); channelFuture.addListener(new Generic 阅读全文

posted @ 2021-01-21 14:50 MaXianZhe 阅读(507) 评论(0) 推荐(0) 编辑

JMM之happens-before原则
摘要:下面是Java内存模型下一些“天然的”先行发生关系, 这些先行发生关系无须任何同步器协助就已经存在, 可以在编码中直接使用。 如果两个操作之间的关系不在此列, 并且无法从下列规则推导出来, 则它们就没有顺序性保障, 虚拟机可以对它们随意地进行重排序。 在Java内存模型中,happens-befor 阅读全文

posted @ 2021-01-16 21:14 MaXianZhe 阅读(120) 评论(0) 推荐(0) 编辑

Netty解析之schedule方法的实现原理和心跳实现代码
摘要:一 定时任务队列 如果我们想使用netty快速的开发心跳程序,简化下场景假设我们只需要客户端定期往服务端发送心跳消息,那么代码可以这么写 public class Pinger extends ChannelInboundHandlerAdapter { private Random random 阅读全文

posted @ 2021-01-16 16:11 MaXianZhe 阅读(1043) 评论(0) 推荐(0) 编辑

复习复习nio的api之--SocketChannel read
摘要:突然想到了netty是怎么读数据的,其实底层还是依赖jdk的nio,但是有想不起来了nio的api怎么调用的了。感觉找找过去自己写过的代码 private void read(SelectionKey key) { try { //建立写缓冲区 ByteBuffer readBuf = ByteBu 阅读全文

posted @ 2021-01-14 15:16 MaXianZhe 阅读(715) 评论(0) 推荐(0) 编辑

Netty之channelActive方法
摘要:写这篇文章的原因是看一个开源框架的时候一个channelHandler的channelActive方法里有逻辑,嗯?这个channelActive看着这么眼熟呢,但是一时还想不起来。 不过自己凭借着印象外加idea搜索功能还是找到了触发channelActive的地方 AbstractChannel 阅读全文

posted @ 2021-01-14 15:02 MaXianZhe 阅读(8762) 评论(0) 推荐(0) 编辑

Linux--rename
摘要:rename test100 test1 test100 rename用来改文件名,注意如果不输入第三个入参不会报错,但是也不会生效 阅读全文

posted @ 2021-01-13 11:05 MaXianZhe 阅读(97) 评论(0) 推荐(0) 编辑

记一次定位zookeeper连接不上的问题
摘要:起因,想起来分布式锁也是常考的知识点,自己还不是太熟,就想着在网上找个demo学学 找到了一个看上去还不错的,他使用的是ZkClient这个客户端。 由于我之前在工程里测试过kafka,而kafka其实是自带ZkClient客户端的,版本是 <dependency> <groupId>com.101 阅读全文

posted @ 2021-01-12 19:11 MaXianZhe 阅读(1357) 评论(0) 推荐(0) 编辑

Redis持久化之AOF
摘要:一 AOF文件内容 AOF文件中内容是具体的命令,而且由于redis的请求协议是纯文本格式,所以AOF文件中是人可读的命令请求 SELECT $1 0 *3 $4 sadd $8 gamedisk $4 nioh *3 $4 sadd $8 gamedisk $4 tomb 二 AOF实现原理 服务 阅读全文

posted @ 2021-01-11 17:07 MaXianZhe 阅读(347) 评论(0) 推荐(0) 编辑

Kafka的consumer消费位点
摘要:可以敲命令 ./kafka-console-consumer.sh --bootstrap-server 10.37.136.172:9092 --topic __consumer_offsets --partition 48 --formatter "kafka.coordinator.group 阅读全文

posted @ 2021-01-06 20:27 MaXianZhe 阅读(499) 评论(0) 推荐(0) 编辑

关于守护线程的知识
摘要:守护线程有一个应用场景,就是当主线程结束时,结束其余的子线程(守护线程)自动关闭,就免去了还要继续关闭子线程的麻烦。不过博主推荐,如果真有这种场景,还是用中断的方式实现比较合理。 还有补充一点,不是说当子线程是守护线程,主线程结束,子线程就跟着结束,这里的前提条件是:当前jvm应用实例中没有用户线程 阅读全文

posted @ 2021-01-06 10:39 MaXianZhe 阅读(173) 评论(0) 推荐(0) 编辑

Zookeeper总结
摘要:1 zookeeper是什么 Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。 2 Zab协议的两种模式 一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播 阅读全文

posted @ 2021-01-04 17:52 MaXianZhe 阅读(150) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示