自定义博客皮肤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 726 0

原创 如何优雅的统计代码耗时

一、前言 代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了...

2020-10-24 12:57:14 158 1

原创 Java 浅拷贝性能比较

一、前言 实际开发中,经常会遇到对象拷贝的需求,本文就结合日常开发过程中,使用到的浅拷贝技术,进行性能比较,看看谁更强。 重要: 下面将会花大量篇幅,列出各种类型浅拷贝的代码,你可以直接拖到文章末尾,看性能对比结果。然后再根据你中意的对象回过头来看它的代码,避免疲劳。 源码链接:https://...

2020-09-20 20:37:46 93 0

原创 Lombok 子类如何使用 @Builder

一、前言 业务开发中,子类父类还算是经常用到,Lombok 的 @builder 提供的链式调用帮助我们更轻松的创建对象。但是实验后却发现子类的 @Builder 是不会包含父类的属性。 假设存在父类 A: @Data @Builder public class A { private S...

2020-09-06 10:49:04 268 0

原创 Java Fail-Fast 与 Fail-Safe 特性
原力计划

一、前言 在 Java 的集合结构中,如果我们同时进行遍历(for-each, iterator)和集合修改(add, set, remove…)操作时,就有可能发生异常。例如,线程 T1 在对集合进行遍历,而此时线程 T2 对集合进行添加元素;亦或者线程 T1 在对集合进行遍历的过程中,进行删除...

2020-08-23 00:11:30 367 0

原创 Windows Terminal 上手把玩指南
原力计划

Windows 平台的终端一直以来的确不好用,被 mac 和 linux 吊着锤。历经了 cmd、powershell、FluentTerminal,微软最新的 Windows Terminal 终于算是进入可用状态,今天就来把玩把玩。 一、安装 安装前提是 Win10 系统,打开 Windows...

2020-07-26 21:28:58 248 1

原创 上传 Jar 包至 Maven 中央仓库
原力计划

一、前言 随着时间积累,在平常写自己的代码过程中,会有类或者是模块,比较通用,许多项目都能用得到。我们就可以把这些部分抽取成一个公共包,方便其他项目去使用。 本地 install 只能保存在本地中,因此将其上传到中央仓库中,平常就能够轻松的去使用了。上传 Jar 包的过程还算简单,本文将记录这一过...

2020-06-21 09:26:07 185 0

原创 MySQL 常用用户权限管理命令
原力计划

一、用户 1.1 创建用户 -- 创建用户,并允许其在任何IP登陆 create user 'username'@'%' identified by 'password'; -- 创建用户,并允许其在任何主机登陆,不设置密码 creat...

2020-06-06 13:09:23 241 0

原创 Java 代码性能优化之路
原力计划

一、前言 最近一直忙着参与公司的新项目开发,由于临期上线,正在对系统进行性能压测,在这个过程中,发现一些代码有性能优化的空间。因此决定写一篇文章,把本次以及今后,遇到的性能优化的 case 都记录下来,希望对大家们的编码水平能够有所帮助。 源码链接:https://github.com/jitw...

2020-05-23 21:07:41 250 0

原创 首次排查 OOM 实录
原力计划

一、前言 距离上篇文章更新已经一月有余,之所以一直没更新一是工作最近比较忙,二是感觉产出不了什么对自己和他人有价值的文章。因此这段时间,主要的空闲时间在学习技术和写 GitHub,博客这边就暂时落下了。 本篇文章的落成更像是一篇笔记,而不是博客。因为在一年的工作后,首次碰上了 OOM 问题,虽然导...

2020-05-02 20:47:50 207 2

原创 高性能 Disruptor——消除伪共享
原力计划

一、CPU Cache 存储设备往往是速度越快价格越昂贵,速度越快价格越低廉。在计算机中,CPU 的速度远高于主存的速度,而主存的速度又远高于磁盘的速度。为了解决不同存储部件的速度不对等问题,让高速设备充分发挥性能,引入了多级缓存机制。 为了解决内存和 CPU 的速度不匹配问题,相继引入了 L1 ...

2020-04-19 11:10:08 971 0

原创 Java 并发编程——线程池的异常处理机制
原力计划

一、前言 1.1 文章起因 这篇文章的起因来源于一个 BUG,这个 BUG 和上篇文章《Java SynchronizedSet 线程不安全之坑》 有点关系。简单来说,就是在线程池中执行任务,任务本身未做异常处理,导致出现异常后任务停止。 出错的原因来自对 Collections.synchron...

2020-04-06 00:34:38 267 1

原创 Java SynchronizedSet 线程不安全之坑
原力计划

一、前言 一般而言,想要构造出线程安全的 Set,我们会使用 Collections.synchronizedSet 方法,如下所示。 Set<User> set = Collections.synchronizedSet(new HashSet<>()); 但这并不意味...

2020-03-01 13:54:49 868 0

原创 Parallel Stream 的错误实践

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

2020-02-22 13:06:36 337 0

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

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

2020-02-14 23:52:08 246 0

原创 gRPC 在 Java 中的入门实例

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

2020-01-26 17:34:13 444 0

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

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

2020-01-19 22:43:17 270 0

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

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

2020-01-19 22:41:03 1146 0

原创 Protobuf 在 Java 中的入门实例

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

2019-12-23 01:50:14 310 0

原创 Google Jib 容器化构建工具

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

2019-12-19 00:07:14 481 0

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

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

2019-12-13 00:58:47 170 0

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

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

2019-11-30 23:45:25 1579 1

原创 Java 并发编程——CyclicBarrier

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

2019-11-25 20:38:00 141 0

原创 HDU 2037 今年暑假不AC

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

2019-11-18 10:01:08 245 0

原创 Gitmoji 速查指南

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

2019-11-14 23:16:55 1328 0

原创 白话比特币与区块链

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

2019-11-08 02:05:32 356 0

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

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

2019-11-04 00:37:36 1535 0

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

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

2019-11-03 22:36:47 2664 0

原创 浅谈央行数字货币 DCEP

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

2019-10-29 01:09:13 2778 0

原创 ES6 箭头函数

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

2019-09-27 22:37:46 132 0

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

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

2019-09-27 22:35:48 391 0

原创 性能监控 TP 指标

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

2019-09-27 22:18:03 807 0

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

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

2019-09-27 22:15:18 2408 7

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

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

2019-09-27 22:11:03 1386 0

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

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

2019-09-27 15:59:41 473 0

原创 SpringBoot 条件注解

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

2019-09-24 20:54:42 583 0

原创 Java 并发编程——CountdownLatch

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

2019-09-23 16:53:11 154 0

原创 Java 并发编程——ReentrantLock

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

2019-09-23 00:44:52 138 0

原创 详解 Cron 表达式

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

2019-07-30 00:33:34 198 0

原创 Apollo 配置中心介绍

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

2019-07-25 23:49:08 5725 1

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