自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 零拷贝技术

什么是爱情?是冲动还是克制,是感性还是理性,是互相伤害还是自我奉献,实在让人无法捉摸,技术一如爱情,我们满怀憧憬,陷进去却又爱又恨,世间安得两全法,不负如来不负卿。

2022-08-26 18:59:54 194 1

转载 从工程师到技术leader的思考

很久没有更新文章了,最近一直忙于业务,出了很多问题,也解决了一些问题,成长的道路很艰难。每当深夜里,在一望无际的黑暗中,只有那颗炽热的心还能让我感受到一丝光明,我追寻着那抹光,就像我默默追寻喜欢的那个姑娘一样坚定,我问着自己是否还记得当初的誓言——执着于理想,纯粹于当下。是的,军人说埋骨无须桑梓地,人生无处不青山,既执着,我亦愿洒尽一腔热血,跟随光的指引,虽千万人吾往矣!...

2022-08-25 23:10:17 170

原创 几种数据结构的对比

数据结构 实现原理 key查询方式 查找效率 存储大小 插入、删除效率 Hash 哈希表 支持单key 接近O(1) 小,除了数据没有额外的存储 O(1) B+树 平衡二叉树扩展而来 单key,范围,分页 O(Log(n) 除了数据,还多了左右指针,以及叶子节点指针 O(Log(n),需要调整树的结构,算法比较复杂 跳表 有序链表扩展而来 单key,分页 O(Log(n) 除了数据,

2021-10-09 15:47:24 236

转载 Paxos算法

Paxos 算法是莱斯利·兰伯特(Leslie Lamport)1990 年提出的一种基于消息传递的、具有高容错性的一致性算法。Google Chubby 的作者 Mike Burrows 说过,世上只有一种一致性算法, 那就是 Paxos,所有其他一致性算法都是 Paxos 算法的不完整版。Paxos 算法是一种公认的晦涩难懂的算法,并且工程实现上也具有很大难度。所以 Paxos算法主要用来解决我们的分布式系统中如何根据表决达成一致。算法前置理解首先需要理解的是算法中的三种角色...

2021-09-27 10:48:39 488

转载 caffeine---window-TinyLFU算法

解决的问题:1、对于突发流量,需要有比较友好的机制应对,不能将新进来的数据淘汰2、对于访问频次不高的数据需要淘汰3、对于早期访问频次高,而后来几乎不访问的高频次无效数据,需要淘汰4、对于内存占用尽量减小tinyLFU的体系结构如下图所示,当有新数据插入时,缓存淘汰策略选定一个候选淘汰数据项,tinyLFU来决定是否用新的数据项来代替候选被淘汰数据项,来增加缓存命中率。因此,tinyLFU需要维护相当长的一段历史时期内数据项访问的频率统计信息。维护这一份数据的代价是相当昂贵的,所以

2021-09-23 19:31:53 576

转载 LRU算法以及变种

LRU算法意思为最近使用算法,当有元素被访问,则元素将移动到队列尾部,队列满时将淘汰最久未被使用的元素,即从头部开始淘汰。该算法对于热点数据将会有较好的命中率,但是存在问题为:使用不频繁的冷数据,在某次被突然访问,将可能挤压掉其他热点数据。LRU-K算法算法思想LRU-K中的k,其实是指最近访问页面的次数,所以我们不难理解,上文所介绍的LRU算法其实就是LRU-1,但是因为仅访问1次就能替代别人,可能会造成“缓存污染”的问题,因此提出了LRU-K的概念。其核心思想就是将访问一次就能替代的“1

2021-09-22 14:11:55 334

转载 熔断限流---sentinel

一、sentinel原理简介在 Sentinel 里面,所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 API 显式创建;每一个 Entry 创建的时候,同时也会创建一系列功能插槽(slot chain)。这些插槽有不同的职责:NodeSelectorSlot负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级; ClusterBuilderSlot则用于存储资源的统计信息以及调用..

2021-07-27 10:27:15 455

原创 Spring AOP 增强通知

AOP概念名词:通知(advice)在已存在的业务方法的前、后、异常、最终处加入的方法。切面(aspect)通知advice 方法所在的类,一个 aspect 类中可以有多个通知方法。连接点(joinPoint)已存在的业务方法。切入点(pointCut)joinPoint的集合。(为要添加advice的方法划定范围。)目标对象(target)``joinPoint方法所在的对象。织入(Weave)``把advice方法放在joinPoint的前、后、异常、最终处。(只

2021-07-01 16:48:15 519

原创 设计模式之禅

一、软件设计六大原则1、单一职责原则应该有且仅有一个原因引起类的变更(1)类的复杂性降低,需要实现什么职责有清晰的定义(2)可读性提高了(3)可维护性提高2、里式替换原则父类出现的地方子类都可以出现(1)提高代码扩展性(2)父子继承,提高代码重用性(3)缺点是增加了耦合性,降低了灵活性3、依赖倒置原则面向接口编程(1)减少因需求变化引起的工作量(2)提高可维护性4、接口隔离原则类间的依赖关系应该建立在最小的接口上(1)分散定义多个接口,提高

2021-06-29 19:53:51 104

转载 分布式ID生成方案

一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够

2021-06-19 12:02:27 97

转载 AQS队列同步器

什么是AQS?#AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。AQS支持独占锁(exclusive)和共享锁(share)两种模式。独占锁:只能被一个线程获取到(Reentrantlock) 共享锁:可以被多个线程同时获取(CountDownLatch,ReadWriteLock).

2021-06-09 18:43:04 115

原创 类加载机制

1、类加载分为:加载、验证、准备、解析、初始化、使用、卸载几个阶段加载通过类限定名找到类的二进制字节流,转化为方法区运行时数据结构,zai'nei'cun'h'z

2021-06-08 10:25:43 64

原创 TCP粘包与拆包问题及解决方案

1、在RPC框架中,TCP粘包和拆包问题是必须解决一个问题,因为RPC框架中,各个微服务相互之间都是维系了一个TCP长连接,比如dubbo就是一个全双工的长连接。由于微服务往对方发送信息的时候,所有的请求都是使用的同一个连接,这样就会产生粘包和拆包的问题。...

2021-06-07 21:04:17 5266 2

原创 深入Java虚拟机

一、JVM内存分区HotSpot虚拟机JDK7和JDK8的实现做了一些调整,JDK7主要有程序计数器、堆、虚拟机栈、ben'd

2021-06-07 14:47:54 201 5

转载 联合索引+覆盖索引使用

联合索引联合索引是指对表上的多个列进行索引。前面讨论的情况都是只对表上的一个列进行索引。联合索引的创建方法与单个索引创建的方法一样,不同之处仅在于有多个索引列。例如,以下代码创建了一张t表,并且索引idx_a_b是联合索引,联合的列为(a,b)。 CREATE TABLE t( a INT, b INT, PRIMARY KEY (a), KEY idx_a_b(a,b) )ENGINE=INNODB;那么何时需要使用联合索引呢?在讨论这个问题之

2021-06-04 15:57:48 581

转载 B+树结构

—————————————————一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的...

2021-06-04 11:15:19 655 1

转载 解决幻读问题

什么是幻读要知道什么是幻读,首先要知道以下四点:一、幻读定义幻读是指在同一个事务中,存在前后两次查询同一个范围的数据,但是第二次查询却看到了第一次查询没看到的行,一般情况下特指事务执行中新增的其他行。二、幻读示例测试表数据:mysql> select * from LOL;+----+--------------+--------------+-------+| id | hero_title | hero_name | price |+----+-----

2021-06-03 20:11:51 3123 1

转载 MVCC机制

事务的4个隔离级别读未提交 读已提交 可重复读 串行化什么是脏读简单说,读了一条未提交的数据什么是不可重复读?一个事务读取了另外一个事务修改后记录 强调的是 update 和delete ,只需要锁住满足条件的记录即可什么是幻读一个事务读取了另外一个事务插入的数据,强调的是 insert ,要锁住满足条件及相近的记录。MYSQL 中默认的隔离级别是可重复读,可解决脏读和不可重复读的问题。但是不能解决幻读的问题。 Oracle 默认的是Read Commit 读已提交,...

2021-06-03 19:51:28 514

原创 JMM与JVM之间的区别

JMM(Java内存模型),定义了线程和内存之间的关系,Java的变量都是存在主存中,每个线程都会从主存中拷贝一份变量副本到工作内存进行操作,线程彼此间无法直接访问,需要通过主存进行访问...

2021-06-03 16:22:19 1091

原创 ThreadLocal浅析

1、threadLocal用于解决何种问题?threadLocal是给每个线程开辟一个副本,各自的线程可以独立操作副本内的变量而互不干扰。那么由此可以知道,

2021-06-03 15:59:03 164

转载 G1收集器

一、G1简介G1是jdk7推出的垃圾收集器,是jdk9之后的默认收集器,相当先进。相比大家所熟知的垃圾收集器例如serial,serial old,parnew,parallel scanvenge,parrallel odl,cms,G1有如下特点:并行与并发serial old与parrallel old在收集老年代时,在gc工作过程中需要STW(stop the world),执行并发标记,这个阶段往往是很耗时的,而G1可以在这个环节让gc线程与用户线程并行,减少用户线程的停顿。这个特点类似C

2021-05-26 09:58:54 232

翻译 网络编程NIO简介

首先区分同步与异步、阻塞和非阻塞概念: 区分同步或异步(synchronous/asynchronous)。简单来说,同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系。 区分阻塞与非阻塞(blocking/non-blocking)。在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有当条件就绪才能继续,比如ServerSocket新连接建立

2021-05-25 11:55:09 185 2

原创 kubernetes服务发现

一、kubernetes架构kube-apiserver : Kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储kube-controller-manager:处理集群中常规后台任务,一个资源对应一个控制器,ControllerManager负责管理这些控制器kube-scheduler:根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,..

2021-05-18 17:20:34 809 2

转载 dubbo配置多协议

多协议Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。不同服务不同协议不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/sc...

2019-07-19 17:22:26 1558

转载 Spring AOP之概念

Spring术语切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常

2017-06-01 11:04:16 235

转载 java Spring IOC注入

BeanFactory类关系继承图1. BeanFactory类结构体系:BeanFactory接口及其子类定义了spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂,因此要理解Spring IoC,需要先理清BeanFactory的继承机构。 2. ApplicationContext的结构体系:ApplicationC

2017-06-01 10:32:11 261

转载 接口回调

接口回调是指:可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。例如:interface Father {     void method(); }   class Son implement

2017-06-01 09:28:51 209

转载 SQL 注入讲

1.1.1 摘要日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号、密码等互联网信息被盗取的普遍担忧。网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,由于设计的漏洞导致了不可收拾的恶果,验证了一句话“出来混的,迟早是要还的”,所以我想通过专题博文介绍一些

2017-05-31 14:00:59 284

原创 编程随记:有整型数组a[],中间有连续递增的子数组,现在要求把原来数组中每个递增部分组成一个新的数组

import java.util.ArrayList;import java.util.Arrays;public class Main4 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubMain4 ma=new Main4();

2017-05-19 09:55:49 399 1

原创 部署项目时出现:Error configuring application listener of class org.springframework.web.context.解决方案

我的项目环境是:jdk1.8.0_131、Tomcat7.0、项目架构用的SSM,dubbo,虚拟机上搭了六个redis节点,项目在开发环境中部署到Tomcat上时出现了错误。之前确定了Tomcat启动正常,并没有其他错误报出。解决:检查发现,原来是项目发布的时候,maven依赖包没有添加进去,所以可以这么解决右键点击项目选择properties,进入后找到图中deployment

2017-05-18 13:33:43 5403 1

原创 对持续集成的浅思

这是工作中结合前辈和自己的思考总结的关于CI的想法: 持续集成的英文是Continuous Integration(CI),网络上可以搜出一大片定义,哪一个比较正确呢,真不好说,我目前无权回答这个问题,但是心中总要有个概念,引用一段对话来说明: 某日,某某A说:总算我的持续集成做完了! B就说了:你敢说你做完了? A说:能自动编译、自动打包、上传到测试的服务器,还不算

2017-05-18 12:48:41 296

转载 Java 抽象类和接口的联系与区别

在Java语言中,接口类似于一种特殊的抽象类,它们之间具有很高的相似性,我先从语法定义和编程的角度对两者进行总结:(1)接口和抽象类都不能被实例化,也就是说不能直接new对象,如果要实例化,接口先要被实现,由实现它的类对象实例化;抽象类也是由继承它的子类进行实例化。(2)接口中不能有方法实现,只能做方法申明,抽象类可以有方法的实现。(3)接口必须被实现,抽象类必须被继承,否则没有意义。

2017-05-18 11:00:45 450 3

空空如也

空空如也

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

TA关注的人

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