自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(202)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 必看!JavaEE学习路线

JavaEE学习日志持续更新中,内有最全的JavaEE学习目标和学习路线,适合小白跟踪学习,欢迎收藏!一门永不过时的编程语言——Java 软件开发。

2020-02-08 11:07:55 5571 3

原创 RocketMQ 与 Kafka 长轮询详解

本文对比分析了RocketMQ和Kafka的长轮询机制。RocketMQ通过PullRequestHoldService实现30秒长轮询,以消息级别触发唤醒,追求毫秒级低延迟,适合订单支付等实时业务。Kafka则通过DelayedOperationPurgatory管理延迟操作,基于fetch.min.bytes数据量阈值和500ms默认超时实现批量拉取,优先保证高吞吐,适合日志处理等场景。两者在设计目标、触发粒度和超时策略上存在明显差异,RocketMQ侧重实时性,Kafka侧重吞吐量,开发者可根据业务特

2026-03-06 14:04:14 384 1

原创 Redis 近似 LRU 算法详解

Redis采用近似LRU算法作为内存淘汰策略,在性能和准确性之间取得平衡。相比精确LRU需要维护链表(O(1)操作但需加锁),近似LRU通过随机采样键并比较时间戳(24位lru字段)来淘汰最久未使用的键,大幅降低了内存开销(每键仅3字节)和访问延迟(无锁操作)。Redis 3.0+引入淘汰池机制提高准确性,默认采样5个键即可接近精确LRU效果。测试表明,近似LRU在高并发场景下QPS可达10万+,是缓存系统的理想选择。用户可通过maxmemory-samples参数调节采样数量,在4.0+版本还可选用基于访

2026-03-06 10:24:29 377

原创 Linux I/O 多路复用详解:select、poll 和 epoll

本文详细介绍了Linux中的三种I/O多路复用机制:select、poll和epoll。它们都用于同时监听多个文件描述符,等待其中任何一个变为可读/可写状态。 select是最早的机制,使用固定大小的位图(fd_set),存在1024个文件描述符的限制,且每次调用都需要在内核和用户空间之间拷贝数据,性能较差。poll改用结构体数组,解决了数量限制问题,但仍需遍历所有文件描述符。 epoll是Linux特有的高性能机制,采用事件驱动模型,没有数量限制。它通过三个步骤工作:创建epoll实例、注册要监听的文件描

2026-03-05 10:57:50 380

原创 一个 HTTP 请求从发送到结束,在 TCP/IP 各层经历了什么

本文详细描述了一个HTTP请求从发送到接收的全过程。首先在应用层构造HTTP报文并解析DNS,然后通过传输层TCP三次握手建立连接并分段,网络层添加IP地址和路由信息,最后在网络接口层封装为以太网帧并发送。中间经过多个路由器转发,到达服务器后逆向解封各层数据。整个过程展示了TCP/IP协议栈各层的分工协作:应用层处理报文内容,传输层确保可靠传输,网络层负责路由寻址,接口层完成物理传输。通过分层封装和解封,实现了端到端的网络通信。

2026-03-04 14:13:29 185 1

原创 Reactor 线程模型与 Netty 实现

本文介绍了Reactor线程模型及其在Netty中的实现。Reactor是一种事件驱动的设计模式,通过分离I/O事件监听和处理来提高并发性能。文章详细分析了三种Reactor演进模型:单线程模型(所有操作在单线程完成)、单Reactor多线程模型(主线程监听,线程池处理业务)和多Reactor多线程模型(主从Reactor分工协作)。每种模型都配有结构图示和代码示例,并分析了其优缺点。最后还介绍了Netty如何基于多Reactor多线程模型进行优化实现。这些内容为理解高性能网络编程提供了重要理论基础。

2026-03-04 09:49:05 378

原创 Java NIO 空轮询问题与 Netty 的解决方案

Java NIO 在 Linux 系统上存在空轮询问题(Epoll Bug),导致 Selector.select() 方法在无事件时也会立即返回0,造成CPU 100%空转。该问题主要发生在使用epoll的Linux系统,当连接异常关闭时触发。 Netty通过检测机制解决此问题:记录select()调用次数,若短时间内(如1秒)超过阈值(默认512次),则判定为空轮询并重建Selector。核心代码在NioEventLoop中实现,通过计数器sel

2026-03-03 14:30:57 481

原创 分布式事务解决方案对比

分布式事务解决方案对比摘要 本文对比了主流分布式事务方案的核心特性与适用场景。2PC/XA提供强一致性但性能低(同步阻塞、单点风险),适用于金融等强一致性场景;TCC/Seata AT采用最终一致性,性能更高但实现复杂,适合电商等高并发场景。2PC通过准备/提交两阶段协调多节点事务,XA是其标准化实现;3PC引入超时机制但实际应用较少。各方案需权衡一致性、性能与复杂度,根据业务特点选择:强一致选2PC/XA,高并发选TCC/Seata AT。典型问题如协调者故障会导致数据不一致,需结合业务设计补偿机制。

2026-03-03 11:01:34 276

原创 elastic-job 搭建——应用于企业级项目

随着服务器的增加或宕机,ElasticJob 会近乎实时的感知服务器数量的变更,从而重新为分布式的任务服务器分配更加合理的任务分片项,使得任务可以随着资源的增加而提升效率。它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。1、elastic-job-sdk:进一步封装elastic-job-lite。举例说明,如果作业分为 4 片,用两台服务器执行,则每个服务器分到 2 片,分别负责作业的 50% 的负载,如下图所示。

2023-04-25 17:05:53 2007

原创 磁盘I/O 简述

硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计?

2022-12-21 14:34:24 1820

原创 Java设计模式业务场景实战应用

Java设计模式实战场景应用

2022-08-26 13:35:16 1853

原创 SQL语句练习:班级,课程,学生,成绩的多表分组查询

面试碰到的班级,课程,学生,成绩的多表分组查询

2020-10-23 15:04:04 4563

原创 算法之快速排序、堆排序

算法:快速排序,堆排序,面试中的算法题。

2020-10-20 16:41:36 379

原创 mysql的锁模块:MyISAM和InnoDB关于锁的区别

mysql的锁模块MyISAM和InnoDB关于锁的区别MyISAM适合的场景InnoDB适合的场景数据库锁的分类乐观锁的实现MyISAM和InnoDB关于锁的区别最主要的区别注意:以MyISAM为例先上表级共享锁,再上共享锁可以成功,而无法上排他锁。如果先上表级排他锁,则无法再上共享锁或排他锁。一、如何给select语句添加排他锁 ?for updateselect * from person_info_myisam where id between 1 and 2000000 for

2020-10-18 11:32:48 297

原创 mysql索引:如何优化sql语句,最左匹配原则的成因

mysql索引:如何优化sql语句,如何查看慢日志,使用Explain工具分析慢sql,优化慢sql,补充。最左匹配原则的成因,

2020-10-17 13:53:12 664 1

原创 mysql索引:密集索引和稀疏索引的区别

mysql索引:密集索引,稀疏索引,密集索引和稀疏索引的区别,InnoDB和MyISAM。

2020-10-16 17:28:20 1401

原创 mysql的索引数据结构:从二叉查找树到B-tree再到B+-tree

mysql的索引数据结构二叉查找树B树B+树Hash二叉查找树原理略当查找节点9时,由于是对半查找,所以此时的时间复杂度为O(logn),且需要进行三次的IO读写当删除节点2和节点6,并添加节点11和节点13时,此时二叉查找树会变成如下,此时查找节点13的时间复杂度为O(n),且需要进行五次的磁盘IO才能找到节点二叉查找树的缺陷:1、经过频繁的修改操作之后,二叉树会变成一条,从而使时间复杂度变为O(n),也大大增加了磁盘IO的次数。2、即使是平衡二叉树,二叉查找树的层级过多,虽然时间复杂度

2020-10-16 16:15:29 651

原创 docker中安装elastichsearch和head、Logstash

elasticsearch安装es安装head插件安装es一、拉取镜像docker pull elasticsearch:5.6.8二、创建容器docker run -di --name=tensquare_elasticsearch -p 9200:9200 elasticsearch:5.6.8此时的elasticsearch还无法使用,因为没有解决跨域和远程连接问题三、解决跨域和远程连接1、拷贝配置文件到宿主机docker cp tensquare_elasticsearch:/

2020-10-14 11:55:39 374

原创 RabbitMQ入门

RabbitMQ:RabbitMQ和ActiveMQ对比,docker安装rabbimq,直连模式(direct),分列模式(fanout),主题模式(topic)。

2020-10-14 11:10:15 314 1

原创 Mongo的Java客户端操作,SpringDataMongo

MongoDB:原生Mongo,SpringDataMongo:dao的方式调用,MongoTemplate,redis与mongo结合使用。

2020-09-27 15:01:11 351

原创 MongoDB介绍,MongoDB操作命令详解

MongoDB:MongoDB与redis比较,MongoDB体系结构,MongoDB数据类型,docker中创建MongoDB,MongoDB操作命令。

2020-09-25 13:48:18 324

原创 十次方笔记(二):@Modifying注解,redis使用逻辑,SpringCache缓存

十次方笔记(二)jpa修改数据库在SpringBoot中使用redisSpringCache缓存jpa修改数据库当jpa新添加的dao方法需要修改数据库时,需要添加@Modifying注解,表示需要修改数据库public interface ArticleDao extends JpaRepository<Article,String>,JpaSpecificationExecutor<Article>{ //审核 @Query("update Ariticle se

2020-09-24 15:41:40 413

原创 十次方笔记(一):统一异常处理,微服务跨域问题,动态条件构建

十次方笔记(一):统一异常处理,微服务跨域问题,动态条件构建。

2020-09-23 15:00:22 261

原创 vue的服务器图片上传插件、阿里云oss存储

图片上传:dataURL,vue-quill-editor-upload,阿里云oss存储。

2020-09-21 13:32:29 627

原创 vue的富文本编辑器vue-quill-editor

vue-quill-editor一、安装npm install vue-quill-editor --save二、在plugins目录下创建nuxt-quill-plugin.jsimport Vue from 'vue'import VueQuillEditor from 'vue-quill-editor/dist/ssr'Vue.use(VueQuillEditor);三、配置nuxt.config.jsmodule.exports = { // other config

2020-09-19 15:09:32 824

原创 Failed to execute ‘observe‘ on ‘MutationObserver‘: parameter 1 is not of type ‘Node‘

需要先引入element-ui再引入瀑布流插件,参考的博客解决方法

2020-09-18 14:00:26 4624

原创 微信登录的流程与实现

微信登录:流程,二维码生成,配置本地host和请求端口,获取用户信息。

2020-09-16 16:31:08 1630

原创 vue的瀑布流组件、分享插件、cookie插件,ElementUI,嵌套布局

vue插件:vue的瀑布流组件,vue的分享插件,nuxt工程中使用ElementUI,vue的cookie插件,嵌套布局

2020-09-15 16:25:40 1793

原创 服务端渲染技术NUXT

服务端渲染技术NUXT:概述,定义路由,服务器渲染,动态路由,补充:项目小技巧。

2020-09-14 16:39:32 527

原创 vue的状态管理vuex

vue状态管理:入门,mutation改变状态值,派生属性getters,模块化。

2020-09-13 14:42:50 318

原创 vue.js的路由配置

vue.js:招聘管理,企业管理的页面优化,招聘管理的页面优化,文章管理。路由vue-router:初始化工程,页面逻辑结构分析,自定义路由,动态路由,嵌套路由。

2020-08-30 11:59:56 844

原创 ElementUI:ElementUI脚手架介绍与配置,elementUI执行流程分析,开发后台活动管理

ElementUI:脚手架基本配置,切换模拟数据来源,脚手架目录结构,elementUI执行流程分析。活动管理案例:活动列表,活动新增,活动修改,活动删除,api代码优化。

2020-08-26 16:52:29 1327 1

原创 EasyMock:Mock.js的DTD和DPD规范,EasyMock使用说明

Mock.js:什么是Mock.js,Mock.js入门,数据模板定义规范DTD,数据占位符定义规范DPD。EasyMock:在线使用EasyMock,自建easymock。

2020-08-24 14:34:50 435

原创 swagger:安装、文档编写、swaggerUI

swagger:概述,安装,编写城市api文档,swaggerUI。

2020-08-24 12:38:46 523

原创 node.js(二):webpack,es6语法新特性

webpack:入门程序。es6:什么是es,es6语法,定义变量和常量,模板字符串,方法默认值,箭头函数,创建对象,解析对象,扩展函数,导入和导出,安装bebel插件。

2020-08-22 13:00:54 490

原创 node.js(一):node.js配置web服务器,npm命令

node.js:概念,入门程序,模块化编程,配置web服务器。npm:什么是npm,npm命令。

2020-08-22 10:34:49 905

原创 vue.js(二):vue的生命周期、vue发送ajax请求

vue.js:vue的生命周期,vue发送ajax请求,vue案例。

2020-08-14 16:41:34 1285

原创 vue.js(一):vue.js常用指令、事件绑定、数据绑定

vue.js:概述,入门程序。常用指令:事件绑定,数据绑定,判断当前元素是否显示。

2020-08-13 15:29:51 629

原创 SpringBoot(二):整合MyBatis、junit、redis、ElasticSearch

SpringBoot:整合MyBatis,整合junit,整合redis,整合ElasticSearch,springboot的使用技巧。

2020-08-12 15:20:56 415

原创 SpringBoot(一):SpringBoot整合SpringDataJpa、freemarker,yml文件格式

SpringBoot:概述,入门程序。深度体验:SpringDataJpa,页面渲染,freemarker,静态资源处理。yml(yaml)文件格式。

2020-08-11 15:22:42 1058

Centos7-部署EasyMock.doc

CentOS7安装easymock !

2020-08-24

网络互联技术.docx

网络互连基础cisco常用命令整理:rip、eigrp、ospf、vlan、vtp、点对点通信、帧中继、acl

2020-06-17

Java常用的一些jar包

存一些java常用的jar包,方便以后使用 c3p0-0.9.1.2.jar commons-dbutils-1.4.jar commons-io-2.4.jar dom4j-1.6.1.jar hamcrest-core-1.3.jar jaxen-1.1.6.jar junit-4.12.jar mysql-connector-java-5.1.37-bin.jar

2020-03-24

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

TA关注的人

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