![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
众里千寻
众里寻他千百度
serve the people
分享更多的精彩,帮助更多的人
展开
-
TCP上的路人
TCP上的人和事儿原创 2023-02-24 17:15:57 · 70 阅读 · 0 评论 -
文章推荐
java condition使用及分析 https://blog.csdn.net/andyzhaojianhui/article/details/79361454JUC锁框架——LockSupport应用以及源码分析 https://my.oschina.net/cqqcqqok/blog/2049659从ReentrantLock的实现看AQS的原理及应用 https://mp.weixi...原创 2020-04-08 22:47:22 · 182 阅读 · 0 评论 -
Docker
Docker知识点总结 https://www.cnblogs.com/Super-It/p/11418681.html这可能是最为详细的Docker入门吐血总结 https://cloud.tencent.com/developer/article/1354393虚拟化解决方案LXC的介绍 https://blog.csdn.net/zhongbeida_xue/article/detail...原创 2020-04-08 22:34:39 · 142 阅读 · 0 评论 -
Spring源码分析
spring源码分析 https://blog.csdn.net/qq_37049496/article/details/81698322 Spring源码解读 https://blog.csdn.net/weixin_41896427/article/details/83049749 剑指Spring源码(一)https://www.jianshu.com/p/922125d40...原创 2020-04-08 22:29:17 · 440 阅读 · 0 评论 -
Java动态代理
JDK动态代理[1]----代理模式实现方式的概要介绍https://www.cnblogs.com/liuyun1995/p/8144628.htmlJDK动态代理[2]----JDK动态代理的底层实现之Proxy源码分析https://www.cnblogs.com/liuyun1995/p/8157098.htmlJDK动态代理[3]----WeakCache缓存的实现机制http...原创 2020-04-08 22:24:42 · 91 阅读 · 0 评论 -
Java线程池
Java 线程池原理 —>https://blog.csdn.net/t_liuyong/article/details/86558250Java线程池原理及使用 —>https://blog.csdn.net/sihai12345/article/details/82870009Java线程池-ThreadPoolExecutor原理分析与实战 —> ...原创 2020-04-08 22:21:47 · 89 阅读 · 0 评论 -
Java队列
阻塞队列阻塞队列简介BlockingQueue队列是一种数据结构,它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素,就是说,队列以一种先进先出的方式管理数据,如果你试图向一个已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元素,将导致线程阻塞。而BlockingQueue队列也是一组数据集合,它继承了Queue接口,而Queue接口继承了Collectio...原创 2020-04-08 22:10:40 · 184 阅读 · 0 评论 -
Zookeeper
分布式环境的特点分布性 —> 计算机在空间上随意分布,分布情况会随时变动并发性 —> 程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储无序性 —> 进程之间的消息通信,会出现顺序不一致问题(缺乏全局时钟)对等性 —> 计算机没有主/从之分,每个节点都是对等的故障总会发生布式环境下面临的问题网...原创 2020-04-08 18:06:47 · 202 阅读 · 0 评论 -
AQS
AQS简介全称: AbstractQueuedSynchronizer ,它是一个抽象同步队列多线程同步内部如何实现的wait/notifysynchronizedReentrantLockpart方式实现ReentrantLock原理ReentrantLock在juc包,该包全称 java util concurrent 非常重要用于解决线程同步问题JDK sun...原创 2020-04-06 20:16:25 · 205 阅读 · 0 评论 -
分布式通信基础
OSI模型TCP三次握手握手过程第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送...原创 2020-04-06 19:46:26 · 240 阅读 · 0 评论 -
Kafka
Kafka 有哪些特点高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition,通过consumer group 对partition进行consumer操作。可扩展性:kafka集群支持热扩展持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失...原创 2020-04-05 20:19:41 · 175 阅读 · 0 评论 -
Dubbo
如何评估服务的容量第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标第二步,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量第三步,再以此访问量乘以机器数反推总容量架构图用 Spring 配置声明暴露服务provider.xmlconsumer.xmlDubbo常用策略启动时检查D...原创 2020-04-03 22:26:09 · 132 阅读 · 0 评论 -
ElasticSearch
和关系型数据库的比较什么是倒排索引假设有这么几条数据(为了简单,去掉about, interests这两个field):ID是Elasticsearch自建的文档id,那么Elasticsearch建立的索引如下:Posting ListElasticsearch分别为每个field都建立了一个倒排索引,Kate, John, 24, Female这些叫term,而[1,2]就...原创 2020-04-03 21:10:14 · 121 阅读 · 0 评论 -
Base64原理
概述Base64编码将一个8位子节序列拆散为6位的片段,而且这每个6位的片段都会被分配一个字符,那这个是个什么字符呢?其实它是base64字母表中的64个字符之一,所以顾名思义base64了。而这64个字符可是有讲究的,是选择了最常用而且兼容性最好的64个字符。所以可以算出base64编码后的字符串大约比编码前大了33%,因为用8位来表示6位。下面的详细的例子,大家来感受下。Base64的几个...原创 2020-04-03 19:55:07 · 190 阅读 · 0 评论 -
Java中hashcode核心算法
hashcode 与 equal 方法的关系从规则的角度看如果两个对象相同, equals方法一定返回true,并且这两个对象的HashCode一定相同;两个对象的HashCode相同,并不一定表示两个对象就相同,即equals()不一定为true,只能说明这两个对象在一个散列存储结构中。两个对象的HashCode不相同,这两个对象一定不相同,equals()一定不为true...原创 2020-04-01 23:19:48 · 213 阅读 · 0 评论 -
流控
限流的方式限制瞬时并发数比如在入口层(nginx添加nginx_http_limit_conn_module)来限制同一个IP来源的连接数,防止恶意攻击访问的情况限制总并发数通过配置数据库连接池、线程池大小来约束总并发数限制时间窗口内的平均速率在接口层面,通过限制访问速率来控制接口的并发请求其它方式限制远程接口的调用速率、限制MQ的消费速率常用的限流算法...原创 2020-03-29 16:22:29 · 310 阅读 · 0 评论 -
synchronized原理
基本使用synchronized是如何保证并发安全的从语法上讲,Synchronized可以把任何一个非null对象作为"锁",在HotSpot JVM实现中,锁有个专门的名字:对象监视器(Object Monitor)。(1) 原子性:确保线程互斥的访问同步代码;(2) 可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的 “对一个变量unlock操作之前,必须要同步到...原创 2020-03-28 21:43:08 · 168 阅读 · 0 评论 -
synchronized锁住的对象能否被修改
线程1通过synchronized将obj锁住,线程2还能否并发修改obj的内容?代码示例:public class ThreadTest { private String name = "step1"; public void step1(){ synchronized (this){ try { Sy...原创 2020-03-28 16:05:59 · 949 阅读 · 0 评论 -
并发编程原理
任务调度进程让操作系统实现了并发,而线程让进程内部实现了并发线程安全的本质(1) 原子性(2) 有序行 —> 编译器的重排序和CPU的指令重排序(3) 可见性 —> 一个线程对共享变量的修改对另外一个线程不可见线程的状态及状态的切换6种状态newrunnable(就绪、运行)blocked(阻塞)(a) 等待阻塞(b) 同步阻塞© 其它阻塞(...原创 2020-03-28 11:41:45 · 285 阅读 · 0 评论 -
Mysql MVCC
思考一个问题MVCC是什么MVCC: Multiversion concurrency control (多版本并发控制)解释:并发访问(读或写)数据库时,对正在事务内处理的数据做多版本的管理,以达到用来避免写操作的堵塞,从而引发读操作的并发问题。MVCC逻辑流程-插入假如一张表user有三个字段id,name,age,MySQL会默认的给每行后面加上一些隐藏的列,跟mvcc相关...原创 2020-03-27 22:41:43 · 121 阅读 · 0 评论 -
如何落地需求
前置工作顶层设计计算每个请求URL,单位时间(5秒)的访问次数,的原理核心公式: 时间对对齐 = n(毫秒数) / 5 * 5监控页面原创 2020-03-27 20:40:51 · 283 阅读 · 0 评论 -
Mysql慢查询日志
如何定位慢查询sql(1) 业务驱动(2) 测试驱动(3) 慢查询日志慢查询日志配置(1) show variables like ‘slow_query_log’ //查看慢查询日志开关及路径(2) set global slow_query_log = on //打开慢查询(3) set global slow_query_log_file = '/var/lib/...原创 2020-03-27 20:27:38 · 97 阅读 · 0 评论 -
Mysql执行计划
执行计划概览执行计划-idselect查询的序列号,标识执行的顺序(1) id相同,执行顺序由上至下(2) id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行(3) id相同又不同即两种情况同时存在,id如果相同,可以认为是一组,从上往下顺序执行;各组中,id值越大,优先级越高,越先执行执行计划-select_type查询的类型,主要是用于区分普通查询、联合...原创 2020-03-27 19:32:28 · 93 阅读 · 0 评论 -
Mysql执行流程
mysql体系结构Client Connectors接入方 支持协议很多Management Serveices & Utilities系统管理和控制工具,mysqldump、 mysql复制集群、分区管理等Connection Pool连接池:管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求SQL InterfaceSQL接口:接受用户的SQL命令,...原创 2020-03-27 17:53:01 · 464 阅读 · 0 评论 -
Mysql索引
索引的分类普通索引:即一个索引只包含单个列,一个表可以有多个单列索引唯一索引:索引列的值必须唯一,但允许有空值复合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并聚簇索引(聚集索引):并不是一种单独的索引类型,而是一种数据存储方式。具体细节取决于不同的实现,InnoDB的聚簇索引其实就是在同一个结构中保存了B-Tree索引(技术上来说是B+Tree)和数据行。简单说就是索...原创 2020-03-26 21:55:49 · 79 阅读 · 0 评论 -
Mysql事务
事务相关命令查询事务隔离级别select version();show variables like ‘%engine%’;show global variables like “tx_isolation”; //查询事务隔离级别查看及设置事务自动开启或关闭关闭是 set session autocommit = off;手动开启一个事务begin; update...原创 2020-03-26 18:51:08 · 90 阅读 · 0 评论 -
ConcurrentHashMap
前言HashMap是平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,执行get方法有可能会引起循环遍历(前提是其它线程的put方法引起了resize动作),导致CPU利用率接近100%解决方案有Hashtable和Collections.synchronizedMap(hashMap),不过这两个方案基本上是对读写进行加锁操作,一个线程在读写元素,其余线程必须等...原创 2020-03-20 11:28:49 · 134 阅读 · 0 评论 -
HashMap
简介JDK1.8对HashMap底层的实现进行了优化,例如引入了红黑树的数据库结构和扩容的优化等。java为数据结构中的映射定义了一个接口java.util.MapHashMap它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。非线程安全。如果需要满足线程安全,...原创 2020-03-18 14:24:58 · 89 阅读 · 0 评论 -
Redis
Redis入门命令keys pattern [? / * /[]] //获得一个符合匹配规则的键名列表keys mic:hobbykeys * //获取所有的keytype key //去获得这个key的数据结构类型select 0 //选择第一个库move myString 1 将当前的数据库key移动到某个数据库,如果目标库有该key,则不能移动flush db //...原创 2020-03-17 18:24:28 · 159 阅读 · 0 评论 -
LVS原理
LVS(Linux Virtual Server 虚拟服务器):是一个虚拟的四层路由交换器集群系统,根据目标地址和目标端口实现用户请求转发。原创 2020-03-15 10:55:07 · 159 阅读 · 0 评论 -
Mycat
重要概念逻辑库(db_user)数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库原创 2020-03-13 22:12:51 · 135 阅读 · 0 评论 -
Mysql读写分离
路径配置数据库的版本5.7版本mysql的数据文件和二进制文件: /var/lib/mysql/mysql的配置文件: /etc/my.cnfmysql的日志文件: /var/log/mysql.log实际操作配置master192.168.11.140为master创建一个用户’repl’,并且允许其他服务器可以通过该用户远程访问master,通过该用户去读取二进制数据...原创 2020-03-12 22:41:34 · 91 阅读 · 0 评论 -
分库分表
为什么要分库分表超大容量问题(1) 单表超过1000万,就可以考虑分表了性能问题(1) 一般数据库服务器的QPS在800-1200的时候性能最佳,当超过2000的时候sql就会变得很慢并且很容易被请求打死(2) 一个健康的单库并发值最好保持在每秒1000左右,不要太大垂直分库; 解决的是表过多的问题水平分表; 解决单表列过多的问题分库分表中间件cobar:阿里b2b团队开...原创 2020-03-12 21:10:16 · 371 阅读 · 0 评论 -
MongoDB
NOSQL数据库与关系数据库对比# NOSQL数据库的分类# 与Mysql的概念对比常用命令常用操作db.help(); //Help查看命令提示db.yourColl.help(); //Help查看命令提示db.youColl.find().help(); //Help查看命令提示use yourDB; //切换/创建数据库show dbs; //查询所有数据库...原创 2020-03-12 11:48:31 · 253 阅读 · 0 评论 -
keepalived实现双机热备
什么是双机热备(1) 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。(2) 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议keepalived的工作原理是VRRPVRRP是一种容错协议,保证当主机的下一跳路由出现故障时,由...原创 2020-03-09 15:34:11 · 398 阅读 · 0 评论 -
JMS规范及ActiveMQ
消息中间件的应用场景异步处理流量消峰如果消息队列长度超过指定长度,直接抛弃应用解耦处理分布式事务在弱一致性事务模型中,可以采用分布式消息队列实现最大努力通知的方式来达到数据的最终一致性JMSJMS定义Java 消息服务(Java Message Service)是 java 平台中关于面向消息中间件的 API,用于在两个应用程序之间,或者分布式系统中发送...原创 2020-03-09 13:50:30 · 248 阅读 · 0 评论 -
Netty
JDK 原生 NIO 程序的问题1)NIO 的类库和 API 繁杂,使用麻烦:你需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。2)需要具备其他的额外技能做铺垫:例如熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的 NIO 程序。3)可...原创 2020-03-08 15:33:14 · 110 阅读 · 0 评论 -
网络IO核心原理
Unix网络编程中的I/O模型阻塞式I/O模型阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回。进程从调用recvfrom开始到它返回的整段时间内是被阻塞的。非阻塞式I/O模型当一个应用进程像这样对一个非阻塞描述字循环调用recvfrom时,我们称之为轮询(polling)。应用进程持续轮询内核...原创 2020-03-07 18:59:16 · 464 阅读 · 0 评论 -
分布式事务
事务的特性(ACID)特性解释Atomic(原子性)事务边界内的指令要么全部成功要么全部失败Consistent(一致性)事务完成时,各记录的增减数量必须与预期一致Isolation(隔离性)并发事务相互隔离所做的修改互不影响Duration(持久性)事务完成之后,所做的修改是永久性的Mysql里的事务处理过程记录redo log(记录数据...原创 2020-03-07 15:38:38 · 168 阅读 · 0 评论