自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

周先生丶的博客

学一学,记一记

原创 自己动手写任务调度平台

本文项目Github地址:https://github.com/zhouhuanghua/z-job 什么是任务调度平台呢?暂时不做解释,先来看一下定时器的发展历史吧! 首先,new Thread + while (true) + Thread.sleep的方式,虽然很low但是起码能够实现对...

2019-07-11 18:16:35 308 0

原创 自己动手写MyBatis框架

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java O...

2019-01-26 16:31:06 856 1

原创 自己动手写RPC框架

在上一篇博客中,介绍了RPC的主要概念和实现原理,然后基于TCP协议实现了一个非常简单的RPC小案例(点此回顾)。 现在,自我挑战一下,动手写一个RPC框架。 高能预警:本文涉及到的知识点如下 Spring Boot2:起步依赖、自动配置,让应用开发变得简单 Spring的Java Bea...

2019-01-13 02:08:02 1656 2

原创 利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性

作为一名专门写bug的Java程序猿,相信大家都会遇到过这样的问题:项目的业务逻辑很复杂,而且还经常变化,今天的一个办理条件是小于5,明天就变成了大于10或者条件作废。这就很头疼了,里面的数字可以抽取到配置文件,但是大于和小于呢?条件作废呢? 对于业务规则的复杂性,我们可以使用一些规则引擎来解决...

2018-12-19 17:05:43 5644 4

原创 Redis杂谈
原力计划

Redis,K-V数据库,属于NoSQL中的一员。 一、Redis的Value有哪几种类型? String set(String key, String value) String set(String key, String value, String nxxx, String expx,...

2020-05-27 00:16:48 23 0

原创 如何搭建高性能、高可用、可伸缩、可扩展的网站

本文只是对所读书籍做一些总结,不代表博主的实战经验,#_# 一、高性能 也叫高并发,主要指标有响应时间、并发数、吞吐量等。 1、Web前端方面 浏览器:缓存、压缩、合并请求、减少Cookie传输、延迟加载JS CDN、反向代理:缓存静态资源 2、应用服务方面 使用缓存:本地缓存、分布...

2020-05-26 03:58:35 80 0

原创 Java的单继承多实现问题

最近突然想到一个老生常谈的问题:为什么Java的类不支持多继承(接口支持的哈)? 抛开高司令不想搞得太复杂的说法,大概答案就是 若子类继承的多个父类拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。 若子类继承的多个父类拥有相同的方法,同时子类并未覆盖该方法(若覆盖,则...

2020-05-10 15:50:35 64 0

原创 Redis的数据结构操作命令及应用场景
原力计划

目录 键:key 字符串:String 哈希:Hash 列表:List 集合:Set 有序集合:sorted set 键:key 命令 说明 Jedis方法 Redisson方法 DEL key key 存在时删除 key ...

2020-03-28 18:26:36 70 0

原创 简易小爬虫项目
原力计划

最近疏于学习不知道写什么了,干脆就把去年跟同学打算做的一个招聘信息小程序半成品

2020-03-14 16:08:53 339 0

原创 Java使用Jsoup和Selenium抓取西瓜小视频

最近在家里无聊每天刷头条,看到一个很可爱的小姐姐,突然蹦出一个主意,就是想把它这些视频全部搞下来存到本地。网上搜了一下,发现这些视频其实是来自西瓜视频,根据用户名搜索就找到了。刚好会一点爬虫,这下就好办了。 跟Python的requests和bs4一样,Java也有HttpClient和Js...

2020-02-04 23:40:08 625 0

原创 使用POI导入导出大数据量的Excel

昨天,产品提了一个紧急需求,让把十一月份已发货的商品数据导出来,写好SQL发给DBA执行之后,得到了三十多个100W数据的Excel文件。有一个属性是以JSON格式存在表中一个字段里面的,需要加工Excel文件将其单独取出来(如图的第四列)。 处理程序也在数据导出的过程中写好了,大概思路就是...

2020-01-11 19:09:31 236 0

原创 好玩的编译时注解处理工具——APT

大家对Java中的注解(Annotation)应该都不陌生吧,JDK1.5就引进来了,它本质上只是一种元数据,和配置文件一样。利用反射在运行时解析处理能够实现各种灵活强大的功能,比如Spring就将其作用发挥得淋漓尽致。至于用法,这里就不说了,我的其它文章里面很多地方有用到过,可以参考一下。 一...

2020-01-05 19:21:21 140 0

原创 简单聊一下RabbitMQ

RabbitMQ凭借着其异步和解耦的两大核心特性在分布式系统应用中大放异彩。虽然在平时工作中经常用到,但是却很少去深入研究。这两天看了一下《RabbitMQ实战》,总结了平时不太注意的几个点。 1、Erlang RabbitMQ是用Erlang语言开发的,听说Erlang在处理通信和并发时很是...

2019-12-14 19:20:35 75 0

原创 Java中的Type家族简单介绍

之前用反射的时候,基本都是Class。最近弄生成接口文档工具的时候,又接触了一下ParameterizedType,偶然的机会发现两者居然有联系:顶级的接口都是Type。于是就统一整理下Type家族的东西。 Type是Java编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类...

2019-12-10 22:45:28 43 3

转载 字节码操纵技术探秘

大家可能已经非常熟悉下面的处理流程:将一个“.java”文件输入到 Java 编译器中(可能会使用 javac,也可能像 ANT、Maven 或 Gradle 这样的构建工具),编译器对其进行分析,最终生成一个或多个“.class”文件。 图 1:什么是 Java 字节码? 如果从命令行中...

2019-11-08 16:32:47 41 0

原创 布隆过滤器原理解析

在撸码的时候,经常要判断一个元素是否已经存在。常用的做法是,把已经存在的元素全部存储到一个集合里,然后新的元素查一下看它是否在集合里来确定是否已经存在。这个集合的数据结构,一般我们会采用HashMap,它可以在O(1)的时间复杂度内返回结果,效率奇高。但是会带来一个问题,就是每条数据都完整地存储在...

2019-11-07 23:20:38 54 0

原创 SpringBoot+Mybatis配置多数据源并且实现事务一致性

最近博客写得少,不知道怎么说开场白了。呃,本文一共分三部分:SpringBoot+Mybatis环境搭建、两种方式配置多数据源、两种方式实现跨数据源事务,您可以直接跳到喜欢的部分,不过按顺序看完也不会花很多时间。。。 一、搭建SpringBoot+Mybatis框架环境 看标题就知道,这部分不...

2019-10-28 00:43:54 734 2

原创 Java获取一个类继承的父类或者实现的接口的泛型参数

泛型的作用就不多介绍了,如果你想具备架构设计能力,那么熟练使用泛型是必不可少的。 不多说了,先定义泛型父类和泛型接口: package cn.zhh; public class Parent<T1, T2> { } package cn.zhh; public inter...

2019-10-24 22:58:56 511 0

原创 elasticsearch-head 5连接elasticsearch 6.x无法显示数据的解决办法

在docker安装了elasticsearch-head:5和elasticsearch:6.3.2(相关博客点这里)之后,打开界面连接es时发现数据无法展示。于是网上查了下原因,说是elasticsearch 6增加了请求头严格校验的原因,并且返回结果是 { "error"...

2019-08-17 10:45:32 1283 6

原创 Spring Data Jpa将实体类相同属性抽取到基类导致找不到主键的解决方法

有时候我们在使用Spring Data Jpa的时候,会将实体类的一些相同属性抽取成一个公用的基类,这样可以减少代码的重复。但是,一些基本的属性还好,但是将主键也抽取的话,会遇到这样子一个问题: Caused by: org.hibernate.AnnotationException: No i...

2019-07-31 12:50:45 212 0

原创 Docker安装ES,以及界面、中文分词器的插件

前提条件:确保你的机器上面已经安装了Docker和Java。 一、安装ElasticSearch 1、下载镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2 用docker images查看已下载的镜像 ...

2019-07-24 23:48:55 764 0

原创 使用Docker搭建Hadoop单机版

其实,直接安装也很简单,官方说明文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html。使用Docker安装只是为了不想污染我的云服务器... 首先确保你的机器关了防...

2019-07-21 01:46:03 884 0

原创 使用Selenium实现直播平台的自动刷屏

本文项目Github地址:https://github.com/zhouhuanghua/auto-flood-screen 最近,电竞圈LOL届最大的瓜非"蓝公主"莫属。本来,我也只是一名吃瓜群众,感觉都无所谓。但是,后面Baolan的亲妈粉闪现开团:嘲讽皇族官宣香锅退役是...

2019-07-19 21:56:42 271 0

原创 解密JUC——构建锁和同步器的AQS

AQS,本名:AbstractQueuedSynchronizer,是Java 5引入的一个并发工具类。 它提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架。 它的名字翻译为抽象队列同步器,可以分为三个词:抽象、队列、同步器。 正好不知道怎么开始,那么现在...

2019-07-02 23:58:04 131 0

原创 解密JUC——非阻塞同步指令CAS

一、为什么使用CAS?CAS是啥? 在多线程中,为了保证一系列的操作具有原子性,独占锁是比较简单实用的同步机制,但它是一项悲观技术,对系统性能有严重的损耗,因为它假设了最坏的情况:如果你不锁门,那么捣蛋鬼就会闯入并搞得一团糟。 对于细粒度的操作,还有另外一种更加高效的办法,可以在不发生干扰的情...

2019-07-01 22:28:43 118 0

原创 压测工具ab的简单使用说明

ab的全称是Apache Bench,是比较简单、容易上手的性能测试工具。这里示范一下Windows环境下的使用。 一、下载安装 首先到官网https://www.apachehaus.com/cgi-bin/download.plx下载软件。 然后解压到你喜欢的目录,不需要安装。 ...

2019-06-30 19:27:07 75 0

原创 代码生成器核心思路

代码生成器相信大家都见过或者用过吧?最典型的就是MyBatis那个生成实体类和Mapper文件的工具。显然,代码自动生成可以减少一些重复代码的编写,从而提高开发效率。 代码生成工具主要做法就是使用模板引擎,把公共的部分抽取出来形成一个模板,对于变化的一些数据暂时使用占位符标记。到了生成具体代码的...

2019-06-26 01:05:49 494 0

原创 自动生成实体类设值模板代码

直接上代码 public static void main(String[] args) { Class clazz = AtHandoverOperationDetail.class; StringBuilder sb = new StringBuilder(...

2019-06-12 18:18:34 210 0

原创 线程进入休眠状态的三种方式:Thread.sleep、Object.wait、LockSupport.park

一、线程睡眠Thread.sleep 1)需要指定睡眠时间,如 Thread.sleep(10_000);// 睡眠10秒 // TimeUnit.MINUTES.sleep(1);// 睡眠一分钟 2)睡眠时线程状态为TIMED_WAITING(限期等待)。 3)需要捕获Interru...

2019-05-11 13:08:24 855 0

原创 Spring Validation的3种执行校验方式

推荐我的另一篇博文:《利用Aspect/Javassist/动态代理/Lombok等方式省略Controller的参数校验结果处理代码》。 Validation的注解就不介绍了,大家可以去看源码包或者网上找相关资料。 这里直接说执行校验的3种方式。本文使用的参数注解情况以及请求的参数值如下...

2019-04-21 11:53:43 5873 0

原创 Docker安装常用软件

一、基本要用到的几个命令 其实记住下面这两个就行了 docker --help:列出所有命令及其说明 docker COMMAND --help:单个命令的用法 其中安装软件需要用到的 search:查找Docker Hub上的镜像,如docker search mysql pul...

2019-03-26 09:40:52 607 0

原创 CentOS 7下使用yum安装Docker

一、修改主机名(附) 1、查看主机名 (1)直接看命令行前面 (2)使用hostname命令显示 2、修改主机名 使用hostnamectl set-hostname + 新的hostname,如 使用这个命令会立即生效且重启也生效。 3、修改hosts文件 (1)vi...

2019-03-19 14:00:13 497 0

原创 《进化 从孤胆极客到高效团队》总结

——程序员版《人性的弱点》,提升职业生涯软技能 ※探讨领导力、合作、沟通、高效等团队成功关键因素※ 一、天才程序员神话 1、请帮我隐藏代码 没有人喜欢受到批评,尤其是对自己未完成工作的批评。 在某种意义上,这只是人类本性的一部分——缺乏安全感。 2、天才神话 人有一种本能:发现领导者...

2019-03-03 14:47:59 147 0

原创 SpringBoot2.x整合携程Apollo配置中心

参考博客:https://blog.csdn.net/aaronsimon/article/details/83657612 一、背景 对于传统的单体应用,通常使用配置文件管理所有配置。比如Spring Boot开发的单体应用,配置内容可以放在application.yml文件,需要切换环境的...

2019-02-24 14:48:44 1779 1

原创 SpringCloud2.x(七)统一管理微服务配置——Spring Cloud Config

一、为什么要统一管理微服务配置 对于传统的单体应用,通常使用配置文件管理所有配置。比如Spring Boot开发的单体应用,配置内容可以放在application.yml文件,需要切换环境的话可以设置多个Profile并在启动应用时指定spring.pfofiles.active={profil...

2019-02-22 00:15:16 737 0

原创 SpringCloud2.x(六)构建微服务网关——Zuul

一、为什么使用服务网关 不使用服务网关的时候,客户端直接与各个微服务通信,如图   这样会带来以下问题 客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,每个服务都需要独立认证。 难以重构,随着项目的迭代,可能需要重新划分微...

2019-02-19 23:43:18 556 0

原创 SpringCloud2.x(五)微服务容错处理——Hystrix

系统运行过程中,如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。在高负载情况下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃。 一、雪崩效应 把“基础服务故障”导致“级联故障”的现象称为雪崩效应。雪崩效应描述的是提供者不可...

2019-02-17 16:10:02 464 0

原创 SpringCloud2.x(四)声明式REST调用——Feign

在服务提供者项目microservice-provider增加一个带参数的接口 @GetMapping("/pay_with_params") public String pay(String orderCode, int totalPrice) { ...

2019-02-17 13:15:00 633 0

原创 SpringCloud2.x(三)客户端负载均衡——Ribbon

之前,我们是这样调用服务提供者的 但是,如果服务提供者部署了多个实例,怎么实现负载均衡呢?答案就是使用Ribbon。 一、Ribbon简介 Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon...

2019-02-17 01:28:04 354 0

转载 Reactor教程

实例解析:https://www.infoq.cn/article/reactor-by-example 推荐博客:https://blog.csdn.net/get_set/article/details/79480172

2019-02-15 15:34:03 800 0

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