自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jitwxs

不忘初心,砥砺前行,最新首发文章移步 https://jitwxs.cn

原创 【传送门】 Linux软件安装合集

编程语言 Java:Linux搭建JavaWeb开发环境(Java、Tomcat、MySQL) Python:Linux上部署Python3.6 服务器 Tomcat Linux搭建JavaWeb开发环境(Java、Tomcat、MySQL) Linux部署多台Tomcat No...

2018-03-22 19:49:33

阅读数 486

评论数 0

原创 Parallel Stream 的错误实践

一、前言 Java8 Stream 流的出现,极大的简化了业务需求中对集合数据的加工处理操作。虽然好用,但是一旦使用不当,也会带来意想不到的结果,本文记录使用 Parallel Stream 的错误实践。 List<Object> sourceList = ...; List<O...

2020-02-22 13:06:36

阅读数 39

评论数 0

原创 详解 Spring 定时任务的调度方式

在 Spring 中,我们可以使用 @Scheduled 方便的进行定时任务的执行,其支持以下三种调度方式:Cron、FixedDelay、FixedRate。下面分别介绍在标准模式下和异步模式下这三种调度方式的不同。 一、标准模式 1.1 示例准备 创建一个 SpringBoot 初始程序,依赖...

2020-02-14 23:52:08

阅读数 14

评论数 0

原创 gRPC 在 Java 中的入门实例

一、前言 经过前面三篇 Protobuf 相关文章的学习,相信大家已经对 Protobuf 有所掌握。前文说过, ProtoBuf 很适合做数据存储或 RPC 数据交换格式。可以用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 本节将介绍在 Java 中如何使用 gR...

2020-01-26 17:34:13

阅读数 44

评论数 0

原创 Protobuf 学习手册——编码篇

一、编码规范 Google 官方提供了 Protobuf 的编码规范,通过遵循这些规范,可以使 Protobuf 消息定义及其相应的类保持一致并易于阅读。 Protobuf 编码规范可能随着时间推移而发生变化,对于既有项目,应当保持编码规范的一致性,而不需盲目保持最新的编码规范。但是对于全新项目,...

2020-01-19 22:43:17

阅读数 50

评论数 0

原创 Protobuf 学习手册——语法篇

一、Override Protobuf1 是一种语言中立、平台无关、可扩展的序列化数据的格式,可用于通信协议,数据存储等。 ProtoBuf 在序列化数据方面,它是灵活的、高效的。相比于 XML 来说,ProtoBuf 更加小巧、更加快速、更加简单。一旦定义了要处理的数据的数据结构之后,就可以利用...

2020-01-19 22:41:03

阅读数 90

评论数 0

原创 Protobuf 在 Java 中的入门实例

Protobuf1 是一种语言中立、平台无关、可扩展的序列化数据的格式,可用于通信协议,数据存储等。 本文将演示在 Java 语言中如何编写一个 Protobuf 的入级程序,也许你可能并不了解 Protobuf,这没有关系,基于 Protobuf 官方文档的衍生博文已经安排上了,只是限于内容较多...

2019-12-23 01:50:14

阅读数 33

评论数 0

原创 Google Jib 容器化构建工具

一、前言 随着近些年的技术发展,Java 领域微服务已经成为主流的技术方向。随着微服务化,云原生的概念也逐渐火热起来,不了解云原生仿佛就是一个原始人。而在云原生中,应用容器化 是其核心属性之一。 应用容器化,用抽象的话来说就是:将软件容器中的应用程序和进程作为独立的应用程序部署单元运行,并作为实现...

2019-12-19 00:07:14

阅读数 46

评论数 0

翻译 Disruptor:一种高性能的、在并发线程间数据交换领域用于替换有界限队列的方案

一、摘要 LMAX 计划创建一个高性能的财务交易系统。作为我们工作的一部分,我们评估了多种方案去设计这个系统以求达到高性能目标,最后我们发现在传统的解决方案中遇到了基础上的瓶颈。 许多应用程序通过队列来在不同的处理阶段之间交换数据。我们的性能测试显示,如果按照传统的方式来使用队列,延时代价的量级和...

2019-12-13 00:58:47

阅读数 30

评论数 0

原创 解决 Git Revert 后再次 Merge 代码丢失问题

一、问题场景 我司使用 GitLab 进行代码管理,当我对系统进行 SpringBoot 2.0 的版本升级,分支已经 Merge 到 Master 分支。实际部署中发现依赖的某个二方包的子依赖未做升级,导致某个服务无法掉通。由于二方包的修复需要时间,为了不影响后续其他功能的发布,因此决定对 Ma...

2019-11-30 23:45:25

阅读数 78

评论数 0

原创 Java 并发编程——CyclicBarrier

一、简介 CyclicBarrier 是一个同步工具类,它允许一组线程在到达某个栅栏点(common barrier point)互相等待,发生阻塞,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行.它非常适用于一组线程之间必需经常互相等待的情况。CyclicBarrier...

2019-11-25 20:38:00

阅读数 28

评论数 0

原创 HDU 2037 今年暑假不AC

Problem Description“今年暑假不AC?” “是的。” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%…”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。 作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的...

2019-11-18 10:01:08

阅读数 150

评论数 0

原创 Gitmoji 速查指南

在日常使用 Git 提交过程中,是否觉得提交记录太过单调了呢,如果你也有这种想法,那么就赶紧 Get 下 Gitmoji 吧。 Emoji 在日常生活中是不是经常使用呢,Gitmoji 就是 Git 领域的 Emoji。下图就是使用效果。 Gitmoji 的使用十分简单,只要在 Commit 记...

2019-11-14 23:16:55

阅读数 62

评论数 0

原创 白话比特币与区块链

现在都 9102 年了,连大大都发话要大力发展区块链技术,还不来赶紧了解下区块链知识吗。本篇文章主要是科普向,建立对区块链和比特币的基本认知。本文大纲借鉴李永乐老师的科普视频,视频链接见文中。 一、区块链诞生 2008 年在世界金融危机的大背景下,有一个化名为中本聪的极客,在互联网上发表了一篇名...

2019-11-08 02:05:32

阅读数 180

评论数 0

原创 理解蓝绿发布、灰度发布和滚动发布

目前绝大多数公司的业务系统都是集群化部署,那么在新版本上线时,保证平滑稳定,尽量减少对线上用户的影响,就显得尤为重要。毕竟谁也不想看到,版本一发布,系统就宕机吧。 随着互联网技术的发展,目前业务发布已经基本形成蓝绿发布、灰度(金丝雀)发布、和滚动发布这三种发布策略。 一、蓝绿发布 蓝绿部署是一种以...

2019-11-04 00:37:36

阅读数 89

评论数 0

转载 深度解读央行数字货币 DCEP

继上篇谈了下自己对 DCEP 的看法后,再分享一篇 DCEP 的文章,希望能够帮助大家更加了解 DCEP。 原文链接:https://mp.weixin.qq.com/s/Xrhza0mKF2idXriR0mNhmg 自从区块链技术被国家队提名以来,刷屏之势有如泄洪。各大行业企业纷纷响应号召,喊...

2019-11-03 22:36:47

阅读数 507

评论数 0

原创 浅谈央行数字货币 DCEP

一、前言 距上篇文章更新已经有一月有余了,在这一个月时间内,一是公司事情比较多,一直在加班。二是也有点犯懒了,文章更新频率下降了。正逢最近区块链风头正热,造就了这篇文章的诞生。 上周五(2019.10.25)晚新闻联播中,播报了主席对区块链技术的讲话。当晚,BTC 一转数周的颓势,从 7300$ ...

2019-10-29 01:09:13

阅读数 935

评论数 0

原创 ES6 箭头函数

ES6 中添加了函数新的定义语法——箭头函数,当有大于一个形参的时候,必须使用()代表部分参数,函数体大于一行时,必须使用{}将函数体括起来,并使用 return 返回。 箭头函数不会创建自己的 this 箭头函数会在自己的作用域链上的上一层寻找 this。所以箭头函数会在定义时找到自己外层的 t...

2019-09-27 22:37:46

阅读数 51

评论数 0

原创 JS 防抖技术和节流技术

在监听窗口进行 resize、scroll 等调用函数频率很高的操作时,如果每次都做相应的处理,则会加重浏览器的负担,导致渲染延迟,甚至是假死,这样会给用户带来非常糟糕的体验。为此我们必须在特定场景下限制调用频率,但是又不影响效果。 一、防抖 防抖技术:使得事件被触发 N 秒之后再执行回调,如果再...

2019-09-27 22:35:48

阅读数 39

评论数 0

原创 性能监控 TP 指标

一、TP 指标 在对系统进行性能测试或性能监控时候,TP 指标是一种比较常见的性能参数,包括 TP50、TP99、TP999 等等。 总次数∗指标数=对应指标在总次数中的序号 总次数 \ast 指标数 = 对应指标在总次数中的序号 总次数∗指标数=对应指标在总次数中的序号 通俗点说,假设为了测试某...

2019-09-27 22:18:03

阅读数 116

评论数 0

原创 SpringBoot集成Spring Security(10)——角色继承

在本节中,补充下角色继承的知识点。角色继承其实是一个十分常见的需求,因为一般系统中角色权限呈金字塔型,高层用户拥有底层用户的权限。 例如存在以下角色:普通用户、VIP 用户、SVIP 用户、星悦会员,那么对应的权限可以是“星悦会员 > SVIP 用户 > VIP 用户 > 普通用...

2019-09-27 22:15:18

阅读数 634

评论数 4

原创 理解 DRY、KISS、YAGNI 三原则

在软件的设计当中前人已经总结了许多的设计原则和设计模式。例如 SOLID,GRASP 设计原则,这些原则都是基于面向对象设计总结而来的。而 GOF23 是基于许多常见的场景总结出了一套设计模式,在我们遇到类似的场景,都可以套用设计模式。 而今天所讲到的软件三原则是适用于在软件设计的各个层面的。它不...

2019-09-27 22:11:03

阅读数 139

评论数 0

原创 Maven filter 实现 SpringBoot 多环境配置

一、前言 当我们正式开始工作生涯后,最先发现商业项目和我们自己写的项目的不同之一就是:怎么这么多配置文件啊!! 就按照最普遍的:开发、测试、预发(仿真)和线上来说,一个项目就至少有四套配置了,那么我们到底要如何配置多环境呢? 二、Multiple Application 目前使用比较多的是配置多个...

2019-09-27 15:59:41

阅读数 99

评论数 0

原创 SpringBoot 条件注解

一、引言 当我们使用 SpringBoot 进行开发时,会引入许多的 starter 包,引入后就会为我们做一些自动化配置,省去了大量配置的时间,快速开发。 以 Redis 为例,当我们引入 Redis 的 starter 包时: <dependency> <groupI...

2019-09-24 20:54:42

阅读数 51

评论数 0

原创 Java 并发编程——CountdownLatch

一、前言 今天来介绍下 concurrent 包下的一个工具类——CountDownLatch,这算是一个比较实用的工具类,在我们日常开发中使用的比较多,而且 API 也很简单,总结记录下。 注:本文的源码浅析章节参考文章:《CountDownLatch详解》 二、基本使用 Countdown...

2019-09-23 16:53:11

阅读数 38

评论数 0

原创 Java 并发编程——ReentrantLock

一、简介 ReentrantLock 是一个可重入且独占式的锁,相较于传统的 Synchronized,它增加了轮询、超时、中断等高级功能。其类图如下: [外链图片转存失败(img-3M1j3YcP-1569170523799)(/images/posts/20190806224334764.pn...

2019-09-23 00:44:52

阅读数 38

评论数 0

原创 详解 Cron 表达式

一、背景介绍 Cron 表达式,最初是应用于· Unix 系统中的 crontab 命令,用于设置周期性被执行的指令。Cron 表达式应用广泛,在服务器中,可以利用 linux 的 cron 服务定时执行一些脚本;在 Java Web 中,利用 cron 可以实现任务的定时执行。 本文将介绍 Cr...

2019-07-30 00:33:34

阅读数 63

评论数 0

原创 Apollo 配置中心介绍

一、前言 最近我司进行基础架构升级,将配置中心从 Spring Cloud Config 迁移至 Apollo。趁此机会也学习下 Apollo,本文主要知识来自于我对官方 Wiki 的学习,如有错误,欢迎勘误。 Apollo(阿波罗)来自于携程研发的分布式配置中心,能够集中化管理应用不同环境、不...

2019-07-25 23:49:08

阅读数 1713

评论数 0

原创 IDEA 查看 UML 类图

一、基础使用 查看类图功能特别是对于刚接手一个新系统时,对于系统的熟悉起到辅助作用,本文介绍下 IDEA 的 Diagrams 功能,希望对您能有所帮助。 1.1 查看类图 IDEA 的 Diagrams 功能使用起来非常简单,在你想要生成类图的类中右击选择 Diagrams 即可。 如上图所示...

2019-07-17 00:06:19

阅读数 1005

评论数 0

原创 Git 多用户配置

一、引言 一般来说,安装好 git 后,我们都会配置一个全局的 config 信息,就像这样: git config --global user.name "jitwxs" // 配置全局用户名,如 Github 上注册的用户名 git config --global user...

2019-07-12 19:24:32

阅读数 1312

评论数 1

原创 Git 修改已经被覆盖的提交

如果你不想看详细的描述,直接看步骤即可: 1.git rebase -i HEAD~n,将要修改的提交状态改为 edit 2.修改文件 3.git add 4.git commit --amend 5.git rebase --continue 假设我们目录下有三个文件,分别是 digit.dat...

2019-07-12 19:14:49

阅读数 275

评论数 0

原创 Git Submodule 使用技巧

有的时候我们会遇到仓库嵌套的问题,即一个 Git 仓库内部还有一个 Git 仓库,这里我们可以使用 Git 的模块化。 现在我拥有一个 git 项目 blog,它的内部有一个博客主题,名为 hexo-theme-icarus,这也是一个 git 项目,这里就可以把这个主题项目作为模块引入进来。 为...

2019-07-12 19:13:01

阅读数 96

评论数 0

原创 SpringBoot 集成 Spring Security(9)——解决 UserNotFoundException 不抛出问题

一、前言 《SpringBoot 集成 Spring Security》系列文章,原本只是我自己学习后写的笔记,没想到受到大家的欢迎,能够对大家带来帮助,让我感到十分高兴。但说起来我也只是初学者,这一系列文章中可能也存在错误,本文是为了解决 UserNotFoundException 这个异常无法...

2019-07-09 03:07:17

阅读数 1138

评论数 5

转载 老司机教你如何写出没人敢维护的代码!

今天公众号给我推送了一篇关于编程规范的文章,很有趣。虽然举的例子比较极端,但是编程规范还是值得重视的,抱着有则改之,无则加勉的态度,大家一起乐呵乐呵。 原文作者:阿木 转载链接:https://mp.weixin.qq.com/s/Np-pbVY6yH11fE59ok_-6Q?tdsourcet...

2019-07-03 00:45:53

阅读数 196

评论数 0

原创 Redis 初探(9)——缓存问题

一、引言 咳咳,这一节内容应该早就放上博客的,一直忘记了,在写上一篇《布隆过滤器》时,谈到缓存问题,一看博客中竟然没有写过相关的,实在是不该,特此补上。 Redis 所存在的缓存问题也是大部分缓存所存在的问题,因此本文不单单特指于 Redis。这些问题包括缓存穿透、缓存雪崩、缓存击穿、缓存预热...

2019-07-01 21:51:12

阅读数 98

评论数 0

原创 详解布隆过滤器

一、引言 假设我们想要开发一个邮件系统,那么如何实现垃圾邮件的过滤呢。 最简单的办法就是把确定为是垃圾邮件的地址都保存起来,存入黑名单中。当用户接收到黑名单地址的邮件时,直接将邮件归类到垃圾箱中。 垃圾邮件的地址数量可能是巨大的,因此除了被存储在数据库中,程序实际使用的时候一定是需要借助缓存的。...

2019-07-01 00:45:40

阅读数 1046

评论数 0

原创 Java 设计模式——观察者模式

一、前言 好久没更新设计模式系列了,这周闲来无事,就水一把,介绍个简单的——观察者模式。 所谓观察者模式,本质是就是发布与订阅,在日常生活中发布/订阅的例子有很多,比如大家微信里面的公众号,你可以订阅微信公众号,公众号发布文章后,微信会将文章推送给你。。。 二、发布 / 订阅 在上面提到的公众号的...

2019-06-28 10:06:36

阅读数 113

评论数 1

原创 详解 Spring 声明式事务

一、引言 Spring的事务机制包括声明式事务和编程式事务。 编程式事务管理:Spring推荐使用 TransactionTemplate,实际开发中使用声明式事务较多。 声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理...

2019-06-13 23:48:25

阅读数 182

评论数 0

原创 SpringBoot 远程调试

在配合 QA 进行代码测试,以及处理线上 BUG 时,代码往往已经被部署于服务器端,因此服务器端程序支持远程调试功能就尤为重要。 Java 原生支持调试功能,由于实际开发中使用 SpringBoot,因此本文探讨基于 jar 包的调试,远程调试的 IDE 为 IDEA。 **注:**war 包调试...

2019-06-02 13:34:45

阅读数 877

评论数 0

原创 Navicat 实现表结构转表格

复制以下 SQL 到 Navicat 中执行, SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, IS_NULLABLE 是否为空, COLUMN_COMMENT 备注, COLUMN_DEFAULT 默认值 FROM ...

2019-05-19 23:33:27

阅读数 341

评论数 0

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