自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

剑小纯的夜话白鹭

不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行.

  • 博客(95)
  • 收藏
  • 关注

原创 JVM小册(1)------jstat和Parallel GC日志

JVM小册(1)------jstat和Parallel GC日志一. 背景在生产环境中,有时候会遇到OOM的情况,抛开Arthas 等比较成熟的工具以外,我们可以使用java 提供的jatat和jps、jmap等工具来帮助我们排查问题和定位原因,本系列小册先简单记录一下实际使用方式,后续对JVM进行分析.二. 场景举例比如目前有一台服务器,部署了一个java服务,我们为它分配的堆内存如下:#最大堆内存4G,最小2G, 一般来说建议这2个参数设置成一样的,减少因为GC以后动态内存扩容对系统造成的开

2021-04-30 15:30:38 590 3

原创 Stream使用技巧(1)------数据处理技巧

Stream使用技巧(1)------数据处理技巧一. 背景作为java8新特性之一的Stream API为开发者带来了极大的便利,它可以对我们需要操作的集合进行非常复杂的操作,以活的我们想要的结果.本文不会告诉你什么是Stream,毕竟网上花里胡哨的使用教程已经让我应接不暇,本系列博文只是记录一些Stream的使用技巧,便于方便的查找和参考.本博文会无限更新,有新的使用方法会逐渐添加进来,如果有小伙伴有新奇的使用技巧,也可以发出来一起分享.本文中默认使用的对象user如下: @Data

2021-03-13 17:52:09 473 1

原创 mybatis&plus系列------Mysql的JSON字段的读取和转换

mybatis&plus系列------Mysql的JSON字段的读取和转换一. 背景在平常的开发中,我们可能会有这样的需求:业务数据在存储的时候,并不是以mysql中的varchar丶int等格式来存储的,而是使用json格式.这样做的好处是当数据结构有变化或者需求变化时,我们不用再添加字段,方便扩展.那么mysql中json格式的数据我们使用mybatis或者mybatisplus读取以后,肯定是希望转换成对象或者对象集合的,本篇博文就记录一下使用mybatis读取json格式的数

2021-03-13 15:46:52 15128 10

原创 RocketMq灰皮书(三)------MQ使用

RocketMq灰皮书(三)------MQ使用在使用MQ之前,我们回顾一下前两篇博文的内容.我们大致了解了RocketMQ的四个概念,分别是:Producer,Consumer,Message和Broker我们在本地的Windows10系统上,部署了RocketMQ和其后台系统在本篇博文中,我们会使用使用SpringBoot构建两个微服务,一个作为生产者,一个作为消费者,通过RocketMQ传递消息,了解在Java中使用RocketMQ的方法.一. SpringBoot整合RocketMQ

2021-02-18 16:10:41 2495

原创 RocketMq灰皮书(二)------本地部署启动MQ

RocketMq灰皮书(二)------本地部署启动MQWindows10本地部署RocketMQ在上一篇文章中,我们对rocket的几个基本概念进行了介绍,也了解了业内几大消息中间件的区别.在本篇博文中,我们进行RocketMQ的本地部署.1. 下载安装首先我们可以去RocketMQ的官网去下载源码: 官网点这里打开官网可以看到很精美的概述,我们需要了解的地方有2个,都在上图中标记了出来:Documentation 关于rocket使用的文档介绍Blog 社区的更新博文简单的

2021-02-10 10:55:36 800

原创 RocketMq灰皮书(一)------选型&RocketMQ名词

RocketMq灰皮书(一)------选型&RocketMQ名词一. MQ选型对比目前业内常用的MQ框架有一下几种:KafkaRabbitMQRocketMQ除此之外,还有ActiveMQ等,但是ActiveMQ目前使用已经很少了,在一些老项目中可能还能看到,因此在这里不做赘述.(1) Kafka优点:高吞吐量在常规机器下,使用Kafka,一台机器可以达到每秒十几万的QPS.高性能消息发送性能很高,达到毫秒级别.高可用支持集群部署,部分机器宕机依然可

2021-02-09 14:42:17 206 1

原创 2020-12-15

通知最近一直没有更新博文, 主要是这半年实在太忙,一直没有时间去写东西.今天写这个通知的目的在于,我最近的一个想法:不知道大家有没有感觉,我们关注的很多技术公众号,很多都是刚开始一两篇爆款文档,然后我们关注以后,慢慢的干货文章越来越少,广告确越来越多.不少的公众号都在重复的走这种老路,发广告,发课程推荐,有时候,很多课程他们自己都没有去了解过,就推出来给读者.慢慢的,韭菜也不好割了,慢慢的这个公众号也就没人关注了.很多的技术人,在这条道路上周而复始,尝到广告的甜头就忘记了初心.很多的技术课程,从

2020-12-15 17:32:57 113

原创 SpringCloud初级学习(五)------Feign负载均衡

SpringCloud初级学习(五)------Feign负载均衡前言Feign是一个声明式WebService客户端,使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。简单来说,在之前使用Ribbon的时候,我们调用微服务还是通过HttpTemplate来调用的,虽然我们的调用方式从最初的url变...

2019-12-07 17:50:30 225

原创 SpringCloud初级学习(四)------Ribbon负载均衡

SpringCloud初级学习(四)------Ribbon负载均衡前言在前面的博文中,我们创建了helloword-cloud的工程来使用了Eureka的服务注册,现在,我们的服务已经注册到Eureka了,接下来我们来使用消费者访问服务,在这里SpringCloud为我们提供了Ribbon来对客户端的请求进行负载均衡.正文1. Ribbon是什么?SpringCloud Ribbon是...

2019-10-18 00:29:52 242

原创 SpringBoot学习(番外篇一)------使用shell命令或bat文件优雅启动SpringBoot项目

SpringBoot学习(番外篇)------使用shell命令或bat文件优雅启动SpringBoot项目前言在之前的博文中,我们一起探究了SpringBoot的使用以及和通用的技术栈进行整合,使用SpringBoot开发确实非常的便利.那么我们在开发完成了SpringBoot应用,并打包成jar以后,就要在Linux或者Windos Server服务器部署,一般来说我们可以使用java -...

2019-06-25 19:58:19 6702 3

原创 SpringCloud初级学习(三)------Eureka服务注册和发现

SpringCloud初级学习(三)------Eureka服务注册和发现前言在前面的工程模块的基础上,我们来进行SpringCloud系列的学习.在这篇文章中,我们将学习Eureka的使用.正文1. Eureka是什么?Eureka是Netfix的一个子模块,是一个基于REST的服务,用于实现服务至今的发现和故障转移.在微服务中,服务的注册和发现是很重要的,有了服务注册和发现,只需要...

2019-06-18 16:48:36 369

原创 SpringCloud初级学习(二)------工程搭建与模块关系

SpringCloud初级学习(二)------工程搭建与模块关系前言在上一篇博文中,我们了解了SpringCloud的由来和一些国内的使用情况,在在本篇博文中,我们将搭建一个简单的微服务工程来一步步的使用SpringCloud.本文中设计的过程代码详见github:https://github.com/xiaoyao2246/hellowword-cloud正文1. 工程关系在微服务...

2019-06-17 16:26:32 432

原创 SpringCloud初级学习(一)------SpringCloud简介

SpringCloud初级学习(一)------SpringCloud简介前言随着IT行业的不断发展,我们从原来的单一应用,慢慢发展到了现在的SOA分布式应用架构,近几年,微服务的概念更是一度走红,越来越多的公司开始使用微服务技术栈来部署自己的应用,因此,了解微服务相关的技术栈,是提高我们自身价值的不二之选.在这个系列的博文中,我们将对SpringCloud微服务技术栈做一个初步的学习,了解一...

2019-06-12 17:56:10 865

原创 Dubbo(1)------搭建环境并使用

Dubbo(1)------搭建环境并使用前言Dubbo是阿里巴巴公司开源的一个优秀的RPC服务框架,它可以和Spring无缝集成.对其作用相信很多java开发者都有所了解,所以我们直接来开始使用.正文1. 了解架构,搭建环境在Dubbo的官方有这样一个图:以上是Dubbo的架构图,上图各节点的解释如下:节点角色说明Provider暴露服务的服务提供方C...

2019-06-03 16:24:32 222

原创 github小技巧

github小技巧正文① 常用词watch: 会持续收到该项目的动态fork: 复制某个项目到自己的Github仓库star: 类似于点赞clone: 将项目下载到本地follow: 关注你感兴趣的坐着,会受到他们的动态② in关键词限制搜索范围xxx关键词 in:name或description或readmexxx in:name项目名包含xxxxxx in:descrip...

2019-05-30 10:19:15 556

原创 多线程(1)------ThreadPoolExecutor底层原理

多线程(1)------线程池前言池化技术在我们的项目中是使用很频繁的,除了之前数据库的连接池,还有处理任务的线程池,在本文中将会来研究线程池的使用和原理.正文人类认识事物的方式有以下几步:是什么,能干什么,怎么用,原理.所以本文将通过以上几步来逐步学习.1. 线程池是什么?在以前的单线程项目中,我们执行业务逻辑的流程是串行化的,一个main方法,然后依次调用其他的方法,这整个执...

2019-05-24 17:52:53 589

原创 阻塞消息队列(1)------生产消费者模式实现

生产消费者模式实现------阻塞消息队列前言目前的java技术栈越来越丰富,除了平时用的Spring等还有各种中间件可以选择,相信MQ大家都用过,这次就来写一个简单的消息队列,希望有助于对MQ底层的理解吧.正文1. 涉及知识volatile关键字AtomicIntegerBlockingQueue以上知识点不明白的地方均可在各大博客自行研究,当前博主也有类似博文,有兴趣的可以...

2019-05-23 10:07:41 530

原创 Java知识荟萃(为什么实现Serializable接口&volatile关键字解析&对象生死状态)

Java知识荟萃(2019年5月14日)无敌码农Java对象为什么要实现Serializable接口Serializable接口没有任何方法或者字段,只是用于标识可系列化的语义.实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInputStream再将其解析为对象.下面通过代码来讲一个对象保存到文件,并读取的过程:p...

2019-05-14 17:55:24 487

原创 Java知识荟萃(cookie、session、token)

Java知识荟萃(2019年5月10日)程序员私房菜cookie、session、token的区别HTTP请求的无状态的,每次请求都是一个新的HTTP协议,对于服务器来说,并不清楚客户端的身份.发展到后来,购物或者登陆,是需要对访问者的身份进行确认的.1. Cookiecookie实际上就是浏览器里面能永久保存的一种数据,它由服务器生成,发送给浏览器,浏览器把cookie以k-v的方式...

2019-05-10 15:34:30 263

原创 ElasticSearch(6)------Java应用操作ElasticSearch

ElasticSearch(6)------Java应用操作ElasticSearch前言在前面的博文中,我们在Kibana中对ElasticSearch中的文档数据进行了各种查询和添加,下面我们来看看怎么在java中连接ElasticSearch操作文档正文1. 创建java工程首先,我们创建一个maven工程,在这里我们使用IDEA来开发,在pom文件中引入ElasticSearc...

2019-05-06 17:55:30 3461

原创 ElasticSearch(5)------ElasticSearch原理

ElasticSearch(5)------ElasticSearch原理前言在前面的博文中,我们一起在Kibana中对ElasticSearch中的查询文档的语法进行了了解,在本文中,我们来看一下ElasticSearch底层的一些容错原理,主备切换等.正文1. 分片,primary shard和replica shardElasticSearch是一个分布式的搜索引擎,在我们创建索引...

2019-05-05 10:59:37 252

原创 Java知识荟萃(2019年4月30日)------二分查找&日志使用

Java知识荟萃(2019年4月30日)五分钟学算法二分查找的小bugpublic static int binary(int[] arr, int data) { int min = 0; int max = arr.length - 1; int mid; while (min <= max) { mid = (min + max)...

2019-04-30 09:59:26 232

原创 ElasticSearch(4)------查询文档

ElasticSearch(4)------查询文档前言了解了ElasticSearch的基本常识以后,我们来看一下怎么查询我们保存好的文档数据.正文1. 基本查询格式:GET /index/type/_search?q=属性名:值如:GET /index/type/_search?q=name:wangwu表示查询文档中name属性为wangwu的文档.也可以在查询结果中进行排序...

2019-04-29 11:15:47 347

原创 ElasticSearch(3)------版本控制和数据类型

ElasticSearch(3)------版本控制和数据类型前言一般来说,我们使用ElasticSearch是为了减轻数据库的压力,那么大量的并发时,ES会怎么保证数据的一致性呢?在ElasticSearch内部,又是怎么存储数据的呢?正文1.版本控制ElasticSearch采用了乐观锁来保证数据的一致性.也就是说,当用于对Document进行操作时,并不需要对document做加锁...

2019-04-25 14:48:03 298

原创 Java知识荟萃(2019年4月23日)------JVM相关

Java知识荟萃(2019年4月23日)石彬的架构笔记JVM知识JVM大致分为:程序计数器、虚拟机栈、堆、方法区、本地方法栈这几个部分.下面从一个简单的java代码来分析这些区域的作用.假如有如下代码:![1](C:\Users\xiaoy\Desktop\博客图片\java知识荟萃\1.jpg)public class HelloWord { public static v...

2019-04-23 16:39:20 271

原创 ElasticSearch(2)------ES的基本操作

ElasticSearch(2)------ES的基本操作前言在上篇博文中,我们安装好了ElasticSearch和Kibana管理插件,万事俱备,在这篇文章中,我们将一起来了解一下ES的基本操作.正文1. 倒排索引ES使用一种叫倒排索引的结构,它适用于快速的全文搜索.一个倒排索引由文档中所有不重复词的列表构成,对于其中每一个词,有一个包含它的文档列表.比如我们有以下的文档数据,在图中...

2019-04-19 17:17:50 541

原创 Java知识荟萃(SpringBoot自定义异常&Unix和Java的IO模型)

Java知识荟萃(2019年4月18日)纯洁的微笑SpringBoot中自定义异常处理在SpringBoot中自定义error页面有两种,一种是静态页面,一种是动态页面.1.静态异常页面使用HTTP响应码来命名页面,如404.html、405.html直接定义4xx.html,表示400-499的状态都显示改页面默认在classpath:/static/error/下定义页面:...

2019-04-18 17:07:27 560

原创 ElasticSearch(1)------安装ElasticSearch&Kibana

ElasticSearch(1)------安装ES&Kibana前言ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于Restfulweb接口.ES是用java开发的,是当前流行的企业级搜索引擎.在本系列博文中,我们将来一起学习ElasticSearch的相关知识.正文1.1 ES的基本概念关键词解释...

2019-04-18 17:04:03 468 2

原创 Java集合------ConcurrentHashMap(1.7)

Java集合------ConcurrentHashMap(1.7)前言在前面的文章中,我们了解了JDK1.7和1.8下的HashMap.但是了解了HashMap以后我们发现,无论是1.7还是1.8,JDK都没有对它做任何的同步操作,所以会出现并发问题,甚至出现死循环导致系统不可用.因此JDK推出了专项专用的ConcurrentHashMap,该类位于java.util.concurrent...

2019-04-01 14:41:50 677

原创 Java集合------HashMap(1.8)

Java集合------HashMap(1.8)前言在之前的博文中,我们对JDK1.7中的HashMap源码进行了分析,在JDK1.8以后,HashMap又进行了一些优化.为什么要优化呢?其实很明显的一个地方就是:当Hash冲突严重时,在桶上形成的链表就会越来越长,这样在查询的时候效率就会越来越低;时间复杂度为O(N).下面我们就来看看在java1.8中,HashMap是怎么进行优化...

2019-03-27 11:01:04 659

原创 Java集合------LinkedHashMap底层原理

Java集合------LinkedHashMap底层原理前言在集合中,除了常用的HashMap,还有今天我们要说的LinkedHashMap.为什么会有LinkedHashMap这个集合呢?因为我们在迭代HashMap的时候是无序的,我们希望有一个有序的map来方便我们的使用,这个时候就有了LinkedHashMap.正文首先,LinkedHashMap通过维护一个运行于所有条目的双向链...

2019-03-27 09:36:05 22813 10

原创 Java集合------HashMap底层原理(1.7)

Java集合------HashMap底层原理(1.7)前言在java集合中,Map是一种特殊的集合,原因在于这种集合容器并不是保存单个元素,而是保存一个一个的Key-Vaue键值对.HashMap是基于哈希表的Map接口的实现,在项目开发中使用广泛,下面就对HashMap的源码进行解析.正文HashMap的特点HashMap是基于哈希表的Map实现.HashMap底层采用的是Ent...

2019-03-25 18:27:16 854 1

原创 属性文件操作:Properties和ResourceBundle

属性文件操作:Properties和ResourceBundle前言最近在看gitee上的一个java项目的时候,看到了坐着写的一个工具类,有一些疑问,看了网上的资料以后,在这里记录一下.正文1. Properties与ResourceBundle这两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时,操作相对简单.2. Prope...

2019-03-13 16:10:18 434

原创 Maven之pom.xml文件中的Build配置

Maven之pom.xml文件中的Build配置前言在日常的开发中,我们经常使用maven来管理和构建我们的项目,即使现在使用了各种springboot等方便快捷的框架,jar包的引入也是通过maven来进行的,因此有必要了解pom.xml文件中的没一项配置.正文mave的相关插件首先,关于maven我们要有一定的认识:maven能帮我们构建工程,管理jar包,编译代码,还能帮我们自...

2019-03-08 17:29:50 40375 4

原创 pom文件中的dependencyManagement和dependency

Maven中的dependencyManagement的作用在于对所依赖的jar包的版本进行管理.在pom文件中,jar的版本判断的两种方式:1: 如果dependencies里面的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有...

2019-03-04 16:45:46 5881 1

原创 Git常用操作

Git常用操作创建分支git branch &lt;分支名&gt;git branch -v 查看分支切换分支git checkout &lt;分支名&gt;一步完成创建并切换到某个分支: git checkout -b &lt;分支名&gt;合并分支先切换到主干: git checkout mastergit merge &lt;分支名&gt;删除分支先切换...

2019-02-27 10:21:01 121

原创 面试宝鉴

面试宝鉴消息队列消息队列使用场景解耦、异步、削峰解耦: A系统需要发送数据给BCD三个系统,如果A挂掉,其他三个系统的功能都要受影响,这个时候使用MQ,A系统发送消息数据到MQ中,其他的系统从MQ中消费即可,达到解耦的目的.异步: 在不需要同步返回结果的时候,使用MQ,直接将消息发给MQ,然后返回成功,会提高用户体验.(A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个...

2019-02-22 15:24:49 1005

原创 微信公众号开发(四)------access_token的获取和保存

微信公众号开发(四)------access_token的获取和保存前言在前面的文章中,我们封装了各种消息和事件,并对公众号用户的消息做了简单的处理.在微信公众号上,除了这些功能以外,我们还可以通过微信提供的API接口来获取更多的信息,要使用这些接口,就需要使用一个全局的token------access_token,在微信的官网,有对于access_token的描述access_toke...

2019-01-24 11:14:11 7833 4

原创 微信公众号开发(三)------消息的接收与回复

微信公众号开发(三)------消息的接收与回复前言现在,我们已经封装好了各种消息对应的javaBean,下面就可以实现消息的识别,以及对各类消息的回复.正文我们查看微信的官方文档可以看到:当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。请注意:1、关于重试的消息排重,推荐使用msgid排重。2、微信服务器在五秒内收不到响应会断掉连...

2019-01-22 17:56:58 1002

原创 微信公众号开发(二)------封装普通消息和事件

微信公众号开发(二)------封装普通消息和事件前言在上一篇博文中我们已经对微信公众号进行了接入,接入了公众号,我们的服务器就要处理很多来自己用户的请求,在这里,我们可以梳理一下公众号的逻辑:首先,用户向微信服务器发送消息微信服务器接受到用户的消息处理之后,通过我们配置的URL和Token来找到我们的服务器,并以xml的形式向第三方服务器发送消息.第三方服务器获取消息之后,解析消息,...

2019-01-22 17:22:00 545

空空如也

空空如也

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

TA关注的人

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