自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Filter 设计模式编码实践

原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢!最近项目中遇到各种输出数据监控,数据校验等逻辑,一个个实现很是麻烦。项目是中途接手的,不是很熟悉,偶然一天发现项目中对 Filter 的使用扩展起来很是方便,所以,今天楼主来分享下,也为自己学习做个记录。下面我们从三方面来阐述。什么是 FilterF...

2018-09-21 12:13:00 151

转载 造个轮子之基于 Netty 实现自己的 RPC 框架

原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢!服务端开发都会或多或少的涉及到 RPC 的使用,当然如果止步于会用,对自己的成长很是不利,所以楼主今天本着知其然,且知其所以然的精神来探讨一下 RPC 这个东西。child-rpc模型child-rpc 采用 socket 直连的方式来实现服务的远程...

2018-09-04 11:59:00 158

转载 高性能无锁队列 Disruptor 初体验

原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢!最近一直在研究队列的一些问题,今天楼主要分享一个高性能的队列 Disruptor 。what Disruptor ?它是英国外汇交易公司 LMAX 开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。基于 Disruptor 开发的系统单线程能...

2018-08-16 08:28:00 159

转载 Netty 源码中对 Redis 协议的实现

原文地址: haifeiWu的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢!近期一直在做网络协议相关的工作,所以博客也就与之相关的比较多,今天楼主结合 Redis的协议 RESP 看看在 Netty 源码中是如何实现的。RESP 协议RESP 是 Redis 序列化协议的简写。它是一种直观的文本协议,优势在于实现非常简单,解析性能极好...

2018-08-09 08:24:00 119

转载 Redis协议规范(译文)

Redis客户端使用名为RESP(Redis序列化协议)的协议与Redis服务器进行通信。 虽然该协议是专为Redis设计的,但它可以用于其他CS软件项目的通讯协议。RESP是以下几方面的考虑:易于实现快速解析可读性高RESP可以序列化不同的数据类型,如整型,字符串,数组。 还有一种特定的错误类型。 请求将要执行的命令作为字符串数组从Redis客户端发送到Redis服务器...

2018-08-08 09:47:00 86

转载 线上 ELK 集群健康值 red 状态问题排查与解决

之前一直运行正常的数据分析平台,最近一段时间没有注意发现日志索引数据一直未生成,大概持续了n多天,当前状态: 单台机器, Elasticsearch(下面称ES)单节点(空集群),1000+shrads, 约200G大小。问题排查服务器内存,CPU状态检查使用 top 查看服务器 cpu,内存等占用情况,如下图示(当时楼主的服务器ES应用的CPU占用在90%以上,肯定有问题)内...

2018-08-07 14:24:00 1087

转载 聊聊 JDK 非阻塞队列源码(CAS实现)

正如上篇文章聊聊 JDK 阻塞队列源码(ReentrantLock实现)所说,队列在我们现实生活中队列随处可见,最经典的就是去银行办理业务,超市买东西排队等。今天楼主要讲的就是JDK中安全队列的另一种实现使用CAS算法实现的安全队列。JDK 中的队列在JDK中的队列都实现了 java.util.Queue 接口,下面就是楼主要说的无锁版本的队列实现:队列名字是否加锁数据...

2018-08-03 22:23:00 124

转载 聊聊 JDK 阻塞队列源码(ReentrantLock实现)

项目中用到了一个叫做 Disruptor 的队列,今天楼主并不是要介绍 Disruptor 而是想巩固一下基础扒一下 JDK 中的阻塞队列,听到队列相信大家对其并不陌生,在我们现实生活中队列随处可见,最经典的就是去银行办理业务等。当然在计算机世界中,队列是属于一种数据结构,队列采用的FIFO(first in firstout),新元素(等待进入队列的元素)总是被插入到尾部,而读取的...

2018-08-03 09:44:00 119

转载 TCP 粘包问题浅析及其解决方案

最近一直在做中间件相关的东西,所以接触到的各种协议比较多,总的来说有TCP,UDP,HTTP等各种网络传输协议,因此楼主想先从协议最基本的TCP粘包问题搞起,把计算机网络这部分基础夯实一下。贴个广告楼主的博客已全部搬迁至自己的博客,感兴趣的小伙伴请移步haifeiWu与他朋友们的博客专栏TCP协议的简单介绍TCP是面向连接的运输层协议简单来说,在使用TCP协议之前,必须先建立...

2018-07-24 10:15:00 115

转载 I-team 博客的 gitlab-runner 持续集成实践

做为一个略微看过nodejs语法,但又不懂nodejs的攻城狮,搭建hexo环境很是麻烦,要考虑到翻墙版本兼容等问题。于是乎,博主每换一个电脑,为了能继续发博客,都需要在新电脑上花一天时间重新搞一下 hexo 环境,楼主感觉还是有简洁的方案来实现我一提交代码就可以自动发布博客,不需要再手动操作一波,这样岂不美哉。so,也就有了今天的经历,代码可以持续集成,博客也可以。楼主的解决方案是使用...

2018-07-24 09:54:00 299

转载 I-team 博客全文检索 Elasticsearch 实战

一直觉得博客缺点东西,最近还是发现了,当博客慢慢多起来的时候想要找一篇之前写的博客很是麻烦,于是作为后端开发的楼主觉得自己动手丰衣足食,也就有了这次博客全文检索功能Elasticsearch实战,这里还要感谢一下‘辉哥’赞助的一台服务器。全文检索工具选型众所周知,支持全文检索的工具有很多,像 Lucene,solr, Elasticsearch 等,相比于其他的工具,显然 Elas...

2018-07-23 23:20:00 135

转载 阿里 RPC 框架 DUBBO 初体验

最近研究了一下阿里开源的分布式RPC框架dubbo,楼主写了一个 demo,体验了一下dubbo的功能。快速开始实际上,dubbo的官方文档已经提供了如何使用这个RPC框架example代码,基于 Netty 的长连接。楼主看这个框架主要是为了在微服务,service mesh大火的今天做一些技术储备以及了解一下分布式 RPC 框架的设计。当然即便是写一个dubbo的demo也不...

2018-07-23 16:34:00 160

转载 golang 重构博客统计服务

欢迎关注楼主与他的小伙伴们的小站,每周分享一些技术文章,让我们在技术上一起成长------> 戳这里,欢迎光临小站 -_-作为一个后端开发,在docker,etcd,k8s等新技术不断涌现的今天,其背后的功臣golang在语言排行榜上持续走高,因此楼主也就开了这次使用golang自己开发的基础功能的二次装逼之旅。源于Spring Boot感兴趣的小伙伴可以看看楼主的上一篇,...

2018-07-22 23:14:00 112

转载 死磕Java之聊聊HashSet源码(基于JDK1.8)

HashSet的UML图HashSet的成员变量及其含义public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ static fin...

2018-05-12 22:23:00 89

转载 死磕Java之聊聊ThreadLocal源码(基于JDK1.8)

记得在一次面试中被问到ThreadLocal,答得马马虎虎,所以打算研究一下ThreadLocal的源码面试官 : 用过ThreadLocal吗? 楼主答 : 用过,当时使用ThreadLocal的时候,使用Spring实现横切整个Controller层,使用ThreadLocal实现了统计每次请求对应方法的执行时间,具体代码如下 ...

2018-05-07 20:27:00 293

转载 死磕Java之聊聊LinkedList源码(基于JDK1.8)

工作快一年了,近期打算研究一下JDK的源码,也就因此有了死磕java系列LinkedList 是一个继承于AbstractSequentialList的双向链表,链表不需要capacity的设定,它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作,提供了相关的添加、删除、修改、遍历等功能。...

2018-05-07 20:26:00 92

转载 死磕Java之聊聊ArrayList源码(基于JDK1.8)

工作快一年了,近期打算研究一下JDK的源码,也就因此有了死磕java系列ArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了A...

2018-05-07 20:22:00 191

转载 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场。在楼主的努力下,线上数据同步代码经历了从最初的将近16个小时(并且还出现其他问题这些问题,等后面慢慢细说),到最终25分钟的性能优化。打个广...

2018-04-23 21:39:00 149

转载 自建脚手架之配置中心--LightConf的实现

常规项目开发过程中, 通常会将配置信息位于在项目resource目录下的properties文件文件中, 配置信息通常包括有: jdbc地址配置、redis地址配置、活动开关……等等。因此每次上线或者服务迁移的时候都要手动修改配置,并一台一台的重启服务器,甚是麻烦,且费时费力。 于是便萌生出了使用配置中心的想法,在考察了github上的a...

2018-04-22 18:42:00 145

转载 测试环境服务器硬盘塞满问题排查

项目中出现的问题某天下午测试环境服务器出现tab无法补全命令,给出的提示大概意思就是说,无可用空间无法创建临时文件,不过这次跟上次出现的问题比较像,上次服务器出现的问题,因此楼主判断可能是服务器数据盘被占满,果不其然,使用df -h命令看到服务器数据盘出现100%被占用的情况。问题排查过程楼主首先想到的是可以看到,linux系统中占用数据盘最...

2018-03-12 18:03:00 94

转载 Java命令之javap初探

javap是jdk自带的一个工具在jdk安装目录的/bin下面可以找到,可以对代码反编译,也可以查看java编译器生成的字节码,对代码的执行过程进行分析,了解jvm内部的工作。下面列举javap命令的常用options及其功能描述,更多功能的使用请自行Google,楼主不做赘述。用法摘要-help 帮助-l 输出行和变量的表...

2018-02-26 13:22:00 135

转载 Java实现终止线程池中正在运行的定时任务

源于开发最近项目中遇到了一个新的需求,就是实现一个可以动态添加定时任务的功能。说到这里,有人可能会说简单啊,使用quartz就好了,简单粗暴。然而quartz框架太重了,小项目根本不好操作啊。当然,也有人会说,jdk提供了timer的接口啊,完全够用啊。但是我们项目的需求完全是多线程的模型啊,而timer是单线程的,so,楼主最后还是选择了jdk的线...

2018-01-17 20:33:00 225

转载 shell脚本实现自动保留最近n次备份记录

项目中出现的问题某天上午服务器出现卡顿特别严重,页面加载速度奇慢,并且某些页面刷新出现404的问题,就连服务器的tab命令的自动提示都出现了问题,楼主费了九牛二虎之力,根据服务器排查发现,服务器数据盘出现100%被占用的问题,导致该问题出现的原因是,Jenkins每次部署服务器的时候,都会自动将上一次的war备份,由于开发阶段的频繁部署,最终硬盘被占...

2017-12-08 20:10:00 138

转载 spring aop实现权限管理

问题源于项目开发最近项目中需要做一个权限管理模块,按照之前同事的做法是在controller层的每个接口调用之前上做逻辑判断,这样做也没有不妥,但是代码重复率太高,而且是体力劳动,so,便有了如题所说的使用spring aop做一个切点来实现通用功能的权限管理,这样也就降低了项目后期开发的可扩展性。权限管理的代码实现与配置文件在最小的代码...

2017-12-06 19:42:00 98

转载 记一次RSA非对称算法的排坑经历

Map<String,Object> encryParam = new HashMap<>(5); encryParam.put("connectorUrl",connectorUrl); encryParam.put("token",token); encryParam.put(...

2017-10-23 17:30:00 118

转载 扒一扒spring,dom4j实现模拟实现读取xml

今天leadr提出需求,原来公司项目中读取解析xml文件的代码效率太低,考虑切换一种xml为数据封装格式与读取方式以提高效率。我这灵机一动spring对bean的依赖注入就是读取xml文件,可以尝试扒一扒spring的源码,来实现一个轻量级的方案。重构xml文件,向spring的xml文件格式看齐重构完成的xml文件格式如下:...

2017-08-23 20:41:00 110

转载 Java编程思想读书笔记之一切皆对象

一切皆对象Java程序运行时,数据保存到哪里寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。堆栈中 驻留于常规 RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获...

2017-04-10 20:02:00 71

转载 spring mvc常用注解标签

@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller的方法,你无需继承特定的类或...

2017-04-10 17:08:00 156

转载 SpringMVC基础入门,创建一个HelloWorld程序

新建maven工程,添加maven依赖<properties> <spring.version>4.1.3.RELEASE</spring.version> </properties> <dependencies> <!-- 添加...

2017-04-06 17:52:00 105

转载 HTTP协议学习笔记

URL详解http是一个基于请求与相应模式的,无状态的,应用层的协议,常基于TCP链接,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[“:”port][path] ...

2017-03-22 15:51:00 102

转载 ubuntu安装MySQL

Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。sudo apt-get install mysql-serverapt-get isntall mysql-client3. sudo apt-get install libmysqlclient-dev安装过程中会提示设置密码什么的...

2017-03-20 09:37:00 72

转载 linux文件链接

我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。 Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。我们首先来了解一下几个名词:索引节点(inode)要了解链接,我们首先得了解一个概...

2017-03-03 22:14:00 75

转载 redis配置文件常用配置介绍

博客内容首发地址参数说明redis.conf 配置项说明如下:Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定。指定Redis监听端口,...

2017-03-02 12:21:00 82

转载 tomcat配置文件server.xml详解

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受J...

2017-03-01 19:30:00 184

转载 Hexo下Next主题配置与优化

使用Next主题在这里Downloads Next主题代码将下载的代码放在myBlog/theme/next目录下设置站点myBlog/_config.yml的theme字段值为next生成新页面hexo g开启服务hexo s –debug发布代码hexo d注:此时登录网站,发现是空白的,打开控制台,提示很多vendors目...

2017-03-01 12:06:00 99

转载 解决无限创建的子文件夹删除不了的问题

能用代码解决的问题都不是问题废话不多说,直接上代码/** * 解决无限创建的子文件夹删除不了的问题 * @author wuhaifei */public class ForeverDelete { // 删除文件夹方法 private void deleteDir(File file) { if (f...

2017-02-27 17:08:00 394

转载 Maven安装教程

下载Maven 是 Apache 软件基金会组织维护的一款自动化构建工具, 专注服务于 Java 平台的项目构建和依赖管理。 Maven 这个单词的本意是: 专家,内行。 读音是[‘meɪv(ə)n]或[‘mevn]。maven下载地址点击下载地址,如下所示: 解压maven的压缩包到相应的硬盘中(比如D盘下)设置环境变量...

2017-02-25 11:22:00 69

转载 MySQL的索引单表优化案例分析

建表建立本次优化案例中所需的数据库及数据表CREATE DATABASE db0206;USE db0206;CREATE TABLE `db0206`.`article`( `id` INT(11) NOT NULL AUTO_INCREMENT, `author_id` INT(11) UNSIGNED NOT NU...

2017-02-08 12:13:00 198

转载 Mysql的七种join

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams解释了SQL的Join。...

2017-02-06 21:36:00 100

转载 Java NIO学习笔记

Java NIO学习笔记一 基本概念IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。在java编程中,标准低版本IO使用流的方式完成I/O操作,所有的I/O都被视为单个的字节流动,称为一个Stream的对象...

2017-02-03 20:07:00 145

空空如也

空空如也

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

TA关注的人

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