- 博客(221)
- 资源 (28)
- 问答 (1)
- 收藏
- 关注
原创 Tomcat总结
Tomcat线程模型 Tomcat容器模型 Tomcat为什么要打破双亲委托类加载机制 Tomcat热部署如何实现 Tomcat处理一个请http求的过程 Connector初始化流程 Container初始化流程 Tomcat编解码过程和中文乱码问题 Tomcat Cookie支持问题 ...
2020-08-14 10:51:52
243
原创 idea springboot项目设置http代理
1. 背景1) 使用nacos配置中心,客户端侧2)想了解nacos动态更新配置的原理3) 抓取idea springboot项目的http请求2. idea具体配置-Dhttps.proxySet=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888Configuration--》配置3. 抓包mac系统采用Charles抓包...
2020-07-03 11:33:40
3499
1
原创 通用的前端nginx配置
erver { listen 8090; # 请修改为项目环境域名 set $domain_name xx.xx.com; error_log /xx/log/nginx/${domain_name}-error.log ; access_log /xx/log/nginx/${domain_name}-access.log; server_name $domain_name; set $html_dir /xx/bin/static/; root $html_di.
2020-07-01 16:37:17
383
原创 线上环境问题排查
1. 下载Jarcurl -O https://alibaba.github.io/arthas/arthas-boot.jar2. 运行普通机器java -jar arthas-boot.jardocker容器${containerId} /bin/bash -c " java -jar arthas-boot.jar"3. 排查问题...
2020-04-29 14:05:02
304
原创 redis内存预估
1.背景 作为redis集群的维护者,对于新接入的业务使用redis集群的数据量级和内存占用量,需要有一定的估算,这样才能保证集群的正常运行。2. 内存预估1)set一个键值对,到底哪里占用了内存2)数据结构占用内存和实际分配的内存的关系3. 占用内存1) redis 本质是一个字典结构2)最外层是dict ,包含dicttype...
2020-03-26 09:50:31
389
原创 redis cluser查看每个主节点管理的slot和从节点
> cluster slots1) 1) (integer) 10923 // 管理的起始slot 2) (integer) 16383 // 管理的截止slot 3) 1) "10.38.162.110" // 主节点ip 2) (integer) 7007 // 主节点端口 3) "caf219cd84e345c8e6b4...
2020-03-25 10:53:01
4653
原创 redis cluser状态查询
> cluster infocluster_state:ok // 集群状态cluster_slots_assigned:16384 // 已分配sot数量cluster_slots_ok:16384 // 处于正常状态的slot数量cluster_slots_pfail:0 // pfail状态的slot数量cluster_slots_fail:0 //...
2020-03-25 10:44:11
989
原创 秒杀系统
1. 背景最近在设计一个秒杀系统,针对遇到的一些问题写了些体会2. 关注点秒杀系统1)高并发的问题 : 短时间内,大量用户访问2)高可用问题:如何保障秒杀系统不会挂掉3)库存问题: 如何保障不会超库存3. 解决3.1 高并发问题1) 运营预估流量峰值和均值2) 单节点流量压测+预估实例数量3)后端采用redis看流量,而不是数据...
2020-03-20 09:19:30
135
原创 git如何统计代码提交行数
1. 问题如何查看每个人的代码提交行数2. 实现2.1 查看git上个人代码量// 修改usernamegit log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s...
2020-03-13 11:26:04
4909
原创 gitlab上先创建项目并存在文件,本地代码如何提交到该仓库
1. 本地git initgit init2. 本地关联上远程$ git remote add origin https://github.com/user/repo.git3. 从远程拉取最新代码git pull origin master4. 本地addgit add .5. 本地commitgit commit -m 'init'...
2020-02-25 09:35:34
2037
原创 Linux 计算逻辑CPU个数(处理能力)
1. 介绍1) 每台计算机可能有多个物理CPU2) 每个CPU可以有多个核3) 每个核可以有多个超线程数2. 命令查看物理 cpu 数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个CPU有几个核cat /proc/cpuinfo | grep "cpu cores" ...
2020-01-21 17:23:35
601
原创 linux 查看CPU的个数
linux 系统查看物理 cpu 数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个物理 cpu 中 核心数(core 数):cat /proc/cpuinfo | grep "cpu cores" | uniq查看总的逻辑 cpu 数(processor 数):cat /proc/cpuinf...
2020-01-21 15:28:24
164
原创 mysql 概念
1. 回表1)使用聚簇索引查询只需要查询一次 (叶子节点有该行数据)2) 使用覆盖索引查询,也只需要查询一次,无需回表3) 使用普通索引查询非索引字段,需要回表查询多次2.聚簇索引和覆盖索引1) 主键默认使用聚簇索引2) 没有主键的唯一索引也会使用聚簇索引3) 覆盖索引用于减少磁盘访问次数,避免回表查询3. 最左前缀列联合索引[A,B] 生效需要先使用...
2020-01-17 15:33:15
172
原创 mysql 高效的索引策略
1. 索引列独立使用,避免使用函数例如 where to_char(xx,xx)=xx2. 索引选择性尽量大一些索引选择性=不重复的索引值和总记录的比值,返回在0到1之间尽量选择接近1的列建立索引,例如性别 sex不适合作为索引,因为它本身就只有两种可能性,索引选择性很低3. 避免给很长的列建索引1) 索引本身也需要占用空间2) 列很长,查询的效...
2020-01-17 11:32:22
164
原创 Mysql InnoDB支持哈希索引吗
1. 问题Mysql InnoDB支持哈希索引吗上图可以看出: InnoDB使用哈希索引来实现自适应哈希索引功能2. 描述InnoDB引擎有一个页数的功能叫做自适应哈希索引。当InnoDB注意到某些索引值被使用非常频繁的时候,它会在内存中基于B-Tree索引之上再创建一个哈希索引,使得B-Tree索引也具有哈希索引的优点。这是一个完全自动,内部的行为,无法进行...
2020-01-17 10:46:58
603
原创 maven install 报错 javadoc问题解决
1. 背景api打包一直报错,javadoc生成失败2.解决办法mvn clean install -Dmaven.javadoc.skip=true
2020-01-16 16:14:06
1378
原创 linux vi查看末尾结束符
1. 背景在windows中经常使用notepad++查看末尾结束符,在linux下如何查看呢?原因: 在windows下创建的文件,内容在Linux下运行报错2. vi 查看只需要:set invlist即可以将不可见的字符显示出来,例如,会以^I表示一个tab符,$表示一个回车符等...
2020-01-14 11:15:51
4364
原创 grpc Java NANO_RUNTIME does not support services
1. 背景使用grpc的maven插件生成代码时,报错Java NANO_RUNTIME does not support services2. 插件信息3. proto文件内容syntax = "proto3";option java_multiple_files = false;option java_package = "com...
2020-01-13 16:29:19
933
1
原创 maven 使用命令的方式运行插件,查看错误详情
1.问题运行环境: idea描述: 我们经常使用idea的插件,常见的运行方式是直接点击插件的对应命令运行,比如mvn clean问题: 运行失败,无法查看日志详情2. 使用命令的方式运行-X 显示详情第一行就是运行的命令,直接复制即可然后在最后加上-X...
2020-01-13 16:24:51
1173
原创 redis集群是如何组建的
1. 问题redis集群是如何组建的,新的节点如何加入集群2. 了解命令meet1) 首先节点各自独立启动,会选择以集群的方式启动2)该节点通过meet邀请其他节点加入集群3. 实现通过向节点A发送cluster meet命令,客户端可以让接受命令的节点A将另一个节点B添加到集群中cluster meet <ip> <port>...
2020-01-10 14:58:50
171
原创 redis 集群数据结构
1. 问题1) redis 集群的数据结构是怎样的?2. 节点状态clusterNode结构clusterNode表示一个节点的当前状态redis集群使用clusterNode结构来保存集群中某个节点的状态,包括1) 节点的名字 (40位16进制字符串)2) 节点的创建时间3) 节点对应集群当前的纪元4) 节点的IP和端口5) 节点的状态 (下线...
2020-01-10 14:33:16
296
原创 redis 集群容错策略
1. 问题1) redis 集群如果一个主节点挂了,会怎么处理2) redis集群如果一个从节点挂了,会怎么处理3) 如何判断整个redis集群挂了?2. 处理2.1redis 集群如果一个主节点挂了,会怎么处理在了解这个问题之前,我们需要知道redis集群如何判断一个主节点挂了?1) 集群中的每个节点都会顶起地向集群中的其他节点发送PING消息2) ...
2020-01-10 10:58:25
1313
原创 Redis 为什么会出现阻塞?
1. 介绍Redis是基于reactor模式的一种事件驱动框架。2. 事件分类文件事件: 读事件,写事件时间事件: 定时事件,周期性事件3. 文件事件连接事件:客户端连接到服务端,连接关闭等读写事件:socket读写4.事件处理器不同的事件对应不同的事件处理器,由事件分发器分派说明:IO多路复用一般借助操作系统自带的...
2020-01-07 18:19:49
2261
原创 dubbo check=true源码分析
1. 问题check=true到底检查的是什么?2. debug查看ReferenceConfig里面的createProxy方法if (shouldCheck() && !invoker.isAvailable()) { throw new IllegalStateException("Failed to check the statu...
2020-01-02 17:04:35
551
3
原创 dubbo 并发控制源码分析
1. 问题dubbo可以实现接口或方法层面的并发控制,它是如何实现的?2. 接口方法的并发控制(服务端)<dubbo:service interface="com.foo.BarService" executes="10" />限制该接口的每个方法并发执行不能超过10个<dubbo:service interface="com.foo.B...
2020-01-02 16:29:38
173
原创 Redis AOF持久化
1. 问题1) RDB为redis的一个全量的内存快照,但是每次都需要全量,耗时很长,如何实现增量的持久化?2)类似于Mysql的bin log日志,Row格式存储的是数据,Statement存储的是执行的命令语句,redis有没有?2. AOF流程1) 服务器每次执行完一个写命令,会以协议格式将执行的写命令追加到aof_buf缓冲区的末尾;2) 根据一定的策略,...
2020-01-02 14:53:58
100
原创 Redis RDB持久化
1. 问题1). redis作为一个以内存为基本的存储服务,如何保证可靠性呢?如果遇到断电,怎么处理2) redis有没有一种数据快照功能?3)redis主从同步,传输的是什么文件?2. 内存快照RDB可以说是一个内存快照,格式为二进制,内容为key,value信息文件结构:REDIS为固定开头,占5个字节。db_version为RDB文件的版本...
2020-01-02 14:22:10
142
原创 redis单线程为什么这么快
所谓redis很快,到底是指的什么?响应时长很短那么响应时长由什么组成呢?响应时长=网络耗时+redis自身耗时网络耗时正常和运营商相关,一般为近似固定的延时redis自身耗时=接受请求+分发请求+处理请求总结redis单线程比较快的原因:1) 使用IO多路复用,例如epoll (提升吞吐量)2) 纯内存操作 (处理请求耗时短,单位时间内处理的请求数...
2019-12-31 10:46:58
121
原创 redis info详解2
统计# Statstotal_connections_received:3940602610 #总共接受到的连接数total_commands_processed:8487340070#总共处理的连接数instantaneous_ops_per_sec:160 #每秒处理的请求total_net_input_bytes:215986712412 #总网络流入字节...
2019-12-31 09:00:29
215
1
原创 redis info详解
1. 背景最近在研究redis的配置信息,想了解为什么这么配置以及如何优化这些配置2. 配置信息10.38.162.118:7004> info# Server 服务器信息redis_version:3.2.9 #redis版本redis_git_sha1:00000000 #git上版本redis_git_dirty:0 #git代码是否修改...
2019-12-30 20:20:45
171
原创 redis底层数据结构之压缩列表
1. 问题压缩列表在Redis中用来存储哪些类型的数据?2. 介绍压缩列表是redis为了节省内存而开发的,由一系列特殊编码的连续内存块组成的有序数据结构。用途: zset键,哈希键3. 底层实现说明:ziplist_bytes: 四个字节,记录占用总字节数ziplist_tail_offset: 四个字节,代表第一个节点距离最后一个节点的字节数...
2019-12-30 15:51:11
179
原创 redis底层数据结构之整数集合
1. 问题当我们使用redis的set结构存储一些数量不多的数字时,底层是什么数据结构?2. 数据结构typedef struct intset{ //编码方式 uint32_t enconding; // 集合包含的元素数量 uint32_t length; //保存元素的数组 int8_t contents[];}...
2019-12-30 15:04:39
178
原创 redis 慢查询日志
1. 问题 我们在数据库sql经常会统计并优化慢查询语句,同样的,redis中也存在一种慢查询;作用也是一样,列出操作很慢的命令,这里的很慢是指超过某个指定的时间,用户可以自定义。2. 使用通过slowlog get来获取redis的慢查询日志slowlog get 1指定查询一条慢查询日志3. 日志分析慢查询日志分为id, 时...
2019-12-30 14:19:44
183
原创 redis 查看字符串Value数据类型
1. redis中存储的字符串到底是什么数据类型测试如下:10.38.162.118:7004> set quickapp_test 123OK10.38.162.118:7004> OBJECT type quickapp_test(error) ERR Syntax error. Try OBJECT (refcount|encoding|idletime)...
2019-12-27 16:42:52
4280
3
原创 iftop 过滤IP展示
iftop 实时统计流量需要过滤IP查看1. 输入H 查看使用说明2. 再输入H 回到显示页面3. 输入l4. 输入过滤的ip,回车5. 输入q结束
2019-12-27 15:09:53
5415
原创 mac 下安装iftop
1. 安装homebrew2. 安装iftopsudo安装报错直接brew install iftop安装3. 链接brew link iftop 报错 没有权限brew list iftop 显示iftop安装的目录链接 :sudo ln -s xx /usr/bin/iftop...
2019-12-27 14:47:23
1121
jmeter-plugin-dubbo-jar-with-dependencies.jar
2019-12-17
HTTP协议文档
2015-08-02
JSON的jar包
2015-07-31
java网络socket编程过程中遇到的问题
2013-08-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人