Netty通信 Netty是一个事件驱动型、高可用高性能的网络通信应用系统,支持定制化协议传统的通信流程:1、服务端创建一个serversocket,绑定一个监听端口2、多个客户端向这个端口发送请求3、服务端通过Accept获取一个客户端的socket连接对象,建立socket连接4、服务端创建read线程读取socket字节流,解码得到Http请求对象,完成后,将结果封装response,编码协议将结果序列化成字节流5、服务端创建write线程将字节流发给客户端,客户端接收响应6、通信完成
有关Rocketmq的测试 破坏性测试: 同城多活:解决的问题是①应用宕机,其他的应用能够迅速结果queue 中间件宕机,发送者能够发往其他的中间件,消费者从其他中间件收消息 灰度发布:同一个消费组不同实例监听不一样的topic时,能保证不同topic的消息被正确消费 熔断机制:当消息堆积到一定程度时 ,生成者不往该queue上发消息 流量权重,自动伸缩Q:queue的数量随consumer的增多而增多,下线而下线 消息去重:①...
Java垃圾回收机制 what?是什么?: GC 垃圾回收机制,是jvm对内存对象回收的一种机制why?垃圾是什么?为什么有这个机制? 程序在运行过程中会产生很多对象,或者是数组等,当方法结束后这些对象并没有被销毁,还占用着内存,没有垃圾回收机制,久而久之内存就会消耗殆尽。HOW?:如何回收(即回收算法)?回收执行器有哪些? Java内存分为:新生代、老年代、元区间,元区间放一些常量不会回收,所以只对新生代老年代进行回收 新生代:Ed...
服务器性能排查思路 一、先全面分析系统的瓶颈在哪里使用top工具全面查看系统性能:输入M,进程列表按内存使用大小降序排序,便于我们观察最大内存使用问题输入P,进程列表按cpu使用大小降序排序,观察最昊cpu资源的使用者是否有问题%id显示系统空闲cpu百分比,如果值过低,说明系统cpu存在瓶颈%wa:等待i/o的cpu时间百分比,如果值过高,表明io存在瓶颈二、IO瓶颈通过 iostat -d -x -k 11分析,如果%iowait值过高,表示硬盘存在I/O瓶颈如果%util接近100%,
排序算法总结 1、选择排序( 时间复杂度O(n2))思想:数组中的每个数和第一个数进行比较,小于第一个数,就交换位置,每轮产生一个最小的数在最左侧。for(int i=0;ifor(int j=i+1;jif array[j]>array[i]:swap();}}————————————————————————————————————————————2、冒泡排序 O(n2)思想:从第一个数开始,每次和右边的数进行比较,较小的数放左边,较大的数放右边,依次比较,第一轮产生一个最大的数,
中台系统的质量保证 你怎么保证你们中台系统的质量?既为中台系统,一定是跟业务系统不一样的,不要求那么频繁的更新、不需要太多吸引眼球的页面,以稳定、可靠为主。那中台系统的测试质量,如何保障?我觉得可以从以下三个方面打开思路:一、从流程上把控1、测试左移,测试参与需求评审设计评审,提供自测用例给开发,开发在提测时附上自测用例的截图,如果不过测试可以打回2、提前约定好每个关键节点的时间,比如体测时间,测试完成时间,灰度时间等等,让大家知道自己的延误对整个环节的影响3、 迭代后做一次复盘总结,对于测试来说主要是复盘
MySql_查询流程 1、查询sql语句,解析sql语句2、查询缓存,如果命中直接返回,没有则继续3、解析器解析sql语句,生成解析树4、调用预处理,检查表明、列名,处理别名5、查询优化器,生成最优计划6、调用存储引擎,查询数据7、返回结果(生成第一条查询结果时就开始逐步返回,所以服务器不需要暂存结果)——————————————数据库问答————————————————————————1、数据库和实例的关系?数据库和实例一一对应,我们无法直接操作数据库,而是要通过数据库实例...
MySql——索引 1、什么是索引?数据库索引是对数据库表中一列或多列的值进行排序的一种结构,目的是可快速访问数据库表中的特定信息。索引按物理存储结构分类分为:聚簇索引和非聚簇索引,聚簇索引是按数据存放的物理位置为顺序(只能有一个),而非聚簇索引位置没有规律。按功能分:主键索引、唯一索引、联合索引、普通索引使用索引的好处是:大大提高数据的检索速度、排序速度,提高性能;当然,不是对所有的数据表和列都使用:比如数据量很少时,用索引不会明显提高性能,还增加额外空间; 还有,比如经常需要删除修改的列增加了索引,会大
MySQL_分库分表 分库分表:原来数据库是单机服务器,随着业务数据越来越多,表越来越大,读写的性能都会下降,这时就要考虑进行分库分表了。划分的方式有:①按业务进行垂直划分,不同的业务数据划分在不同的表;②按某种规则将大表拆分成小表拆分之后可能会面临的问题:①分布式事务问题,原来一个库就能完成的事情,现在分多个库后要保证多个库的一致性 ②跨库join的问题,原来一次查询能够完成的事情,现在要分多次查询才能完成一、数据切分的方式有哪些?1、垂直切分:把不同的业务数据放在不同的数据服务器上,一个服务器崩了
MySQL_锁机制 数据库锁机制数据库锁机制是为了保证数据的一致性,使得共享资源在被并发线程访问时变的有序的一种规则。从锁的粒度上可以分为行级锁、页级锁、表锁,从锁的方式又可以分为乐观锁和悲观锁,乐观锁是默认别人不会修改数据,只在提交时锁数据;悲观锁是默认别人都会动数据,从一开始就锁起来。 mysql不同的引擎有不同的特点所以使用的锁方式也不同,MyISAM用的是表级锁,成本低资源消耗少,但是出现的并发量大,需要将query时间变小;InnoDB用的是行级锁,粒度小,支持的并发量大,但成本高容易死锁,需要优化索引将检索的范
RocketMq 一、与Kafka的对比 rocketmq kafka 数据可靠性 异步实时刷盘,同步刷盘,同步Replication,异步Replication 异步刷盘,异步Replication 性能对比 单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节 Kafka单机写入TPS约在百万条/秒,..
《思维力—高效的系统思维》 第二部分:系统分析与解决问题界定问题—(发现问题)—>构建框架—(分析问题)—>明确关键—(解决问题)—>高效执行—(推论)—>检查反馈——>继续构建框架第一章:发现问题——界定问题什么是问题?问题是现实与目标之间的差距那问题出现的根源有哪些?1⃣未能准确描述问题 2⃣没有正确梳理问题的结构框架 3⃣被问题的表象所迷惑4⃣没有看到问题隐含的假设条件第一节:准确描述问题将非量化、模糊化、有歧义的问题描述转化为可量化、可例证、清晰化的问题描述,摒
前端基础知识 一、互联网基础知识:1、Http和HttpsHTTP:超文本传输协议,基于请求与相应,无状态的、应用层的协议,常基于TPC/IP协议传输数据HTTPS = HTTP+SSL证书(Secure Sockets Layer),主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私和完整性。TLS是传输层加密协议,前身是SSL协议HTTP特点:无状态、无连接、基于请求和响应、简单快速、灵活三次握手:①客户端发送syn报文至服务端,②服务端发送syn+ack报文至客户端,③客户
《如何阅读一本书》 阅读第一等级:主题笔记阅读法,提升认知。导致人与人之间差距的,是每个人对这个世界的不同认知找到感兴趣的某个领域的100本书籍,把每一本书的重要内容记录下来。在阅读的第一等级建议以实用类书籍,主要论述规则和原理的为主,做笔记时,把规则和核心原理摘抄出来,分类整理入库阅读第二等级:提问作者阅读法,提升你的洞察能力一秒能洞察问题本质的人,和怎么也看不清的,命运自然是不一样的一个人能走多远,取决于他解决问题的能力,人生就是一个解决问题的过程。提问作者阅读法分为三个问题:①作者想解决什么问题,②作
HTTP协议&TCP/IP协议 阅读第一等级:主题笔记阅读法,提升认知。导致人与人之间差距的,是每个人对这个世界的不同认知找到感兴趣的某个领域的100本书籍,把每一本书的重要内容记录下来。在阅读的第一等级建议以实用类书籍,主要论述规则和原理的为主,做笔记时,把规则和核心原理摘抄出来,分类整理入库阅读第二等级:提问作者阅读法,提升你的洞察能力一秒能洞察问题本质的人,和怎么也看不清的,命运自然是不一样的一个人能走多远,取决于他解决问题的能力,人生就是一个解决问题的过程。提问作者阅读法分为三个问题:①作者想解决什么问题,②作
数据库锁策略 一、从策略上分:乐观锁、悲观锁乐观锁:每次去读数据都认为其它事务没有在写数据,所以就不上锁,快乐的读取数据,而只在提交数据的时候判断其它事务是否搞过这个数据了,如果搞过就rollback。乐观锁相当于一种检测冲突的手段,可通过为记录添加版本或添加时间戳来实现。悲观锁:每次读数据的时候都会上锁,直到取出数据。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性,但随之而来的是各种开销。悲观锁相当于一种避免冲突的手段。二、从读写角度上分:共享锁、排它锁共享锁(S锁,Shar.
Fiddler抓包流程 Fiddler抓包https流程:1、fiddler接获客户端发给服务器的HTTPs请求,Fiddler伪装成客户端向服务器发送请求进行握手 。2、第二步,服务器发回相应,Fiddler获取到服务器的CA证书, 用根证书(这里的根证书是CA认证中心给自己颁发的证书)公钥进行解密, 验证服务器数据签名,获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书(这里的CA证书,也是根证书,只不过是Fiddler伪造的根证书), 冒充服务器证书传递给客户端浏览器。第三步,与普通过程中客...
SQL语言 SQL的作用:客户端使用SQL来操作服务器DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别DQL(Data Query Language):数据查询语言,用来查询记录(数据)一、数据定义语言 DDL:定义数据库对象、库、表、
自动化框架优缺点 1、Robot framework: 用python编写,是用于验收测试和验收测试驱动开发(ATDD)的自动化测试框架优点:关键字驱动测试(KDT)方法简化了自动化测试过程,方便测试人员创建易读的测试缺点:自定义 HTML 报告较为麻烦2、JUnit :Java编写的单元测试框架优点:支持测试驱动开发(TDD)缺点:如果需要 mocking 能力,则需要额外添加 Mockito(或其他模拟库)。因 JUnit 中的方法名称受 Java 约定限制等原因,非技术人员很难读懂测试结