- 博客(229)
- 资源 (64)
- 收藏
- 关注
原创 Java编程:浅析泛型类型中的桥接方法
一、什么是桥接方法在介绍桥接方法之前,我先介绍下泛型。在 JDK1.5 中引入了泛型,泛型类型是基于原始类型、类型擦除原理进行实现的。原始类型Java总是会自动的为泛型类型提供一个相应的原始类型。所谓原始类型就是是指泛型的第一个限定类型(从左向右),无限定类型泛型的原始类型默认为Object。类型擦除Java中泛型的实现原理是类型擦除(type erasure)。类型擦除是在编译器进行代...
2020-04-08 16:15:26
3595
8
原创 服务治理:高可用的三大利器熔断、限流、降级
在我们进行系统设计时,必须要考虑系统的高性能、高并发、高可用。本文分享的是关于高可用的三大利器:熔断、限流、降级,我们使用通俗、易懂的语句将三个概念讲清楚。一、熔断在服务的依赖调用中,被调用方出现故障时,出于自我保护的目的,调用方会主动停止调用,并根据业务需要进行相应处理。调用方这种主动停止调用的行为我们称之为熔断。为什么要熔断假定服务A依赖服务B,当服务B处于正常状态,整个调用是健康的...
2020-03-08 01:12:35
9954
1
原创 JVM:jmap heap 堆参数分析MinHeapFreeRatio、MaxHeapFreeRatio、MaxHeapSize、NewSize、MaxNewSize
一、jmap获取堆概要信息JDK9之前:jmap -heap 33146JDK9及之后:jhsdb jmap --heap --pid 33146执行示例:zhibo-mac:JavaVirtualMachines zhibo$ jhsdb jmap --heap --pid 33146Attaching to process ID 33146, please wait...D...
2020-03-03 17:39:22
19400
1
原创 JVM工具:使用 jmap 打印 Java 堆信息时报错:Can't attach symbolicator to the process
一、问题描述1、环境描述。操作系统:Mac 10.14.6JDK版本:1.8.0_2412、Java 代码。在 Idea 中执行以下代码:代码的逻辑是向 list 中添加 1000 条数据,之后 sleep 1000 秒。package org.learn.jmap;import java.util.ArrayList;import java.util.List;/** *...
2020-03-03 12:18:35
9140
2
原创 docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器
在学习的过程中遇到这个问题,创建容器的时候没有挂载宿主机目录,导致在宿主机与容器之间无法进行文件共享,于是就想到如何从容器复制文件到宿主机或者从宿主机复制文件到容器。方法虽然简单,记录在博客中分享给大家。首先通过docker ps确定容器的名称,我们假定容器名称为 nginx-web。一、从容器复制文件到宿主机现在我们想要将容器的 /home/licence.txt 文件复制到宿主机的 /h...
2020-02-15 00:26:01
12709
原创 git rm:删除 git 远程仓库文件的神兵利器
在平时的开发过程中,我们偶尔会误将一些文件提交至 git 远程仓库,比如 eclipse、idea 的配置文件。对于本地而言,这些配置文件是每个开发者的个人配置,它支撑着项目在 IDE 中的正常运行。源于远程仓库而言,这些文件没有价值,其他开发者也需要这些配置。因此就会产生这样一种情况,我如何将 git 远程仓库的文件删除,而保留本地文件呢?有这样一种方法:将整个工程备份,然后在本地删除无用的文...
2020-02-14 00:20:40
2358
原创 中国居民身份证、通行证(含香港、澳门、台湾)资料整理,含编码规则
中华人民共和国居民身份证中华人民共和国居民身份证是用于证明居住在中华人民共和国境内的公民身份证明文件。18位编码规则:(1)第1、2位数字表示:所在省(直辖市、自治区)的代码;(2)第3、4位数字表示:所在地级市(自治州)的代码;(3)第5、6位数字表示:所在区(县、自治县、县级市)的代码;(4)第7—14位数字表示:出生年、月、日;(5)第15、16位数字表示:所在地的派出所的代码...
2020-02-12 13:30:00
80390
6
原创 docker run 命令的 -i -t -d选项的作用
记得第一次接触 docker 的时候,教程中写着 docker run -it 之类的命令,当时对这个 -it 选项是一知半解,本文就来分析一下这三个选项,尽量做到通俗易懂,这也是我写博客的目的。一、选项说明官方文档:https://docs.docker.com/engine/reference/commandline/run/选项选项简写说明–detach-d在...
2020-02-08 23:09:57
77413
9
原创 在 docker 环境下安装mysql
一、查看 docker 仓库中支持的 mysql 版本查看docker 官方网站中的 mysql 镜像说明了解镜像详情,截至目前,官方支持的 mysql 镜像版本为5.6、5.7、8.0。二、拉取 mysql 镜像拉取最新版本的 mysql 镜像:docker pull mysql拉取指定版本的 mysql 镜像:docker pull mysql:5.7拉取成功后,通过查看镜像...
2020-02-07 00:20:35
2193
原创 服务治理:理清服务的强弱依赖,提升高可用能力
在进行系统开发的过程中,由于业务的需要通常可能会形成“服务A>服务B>服务C>…>服务N”这样的调用链,不同的业务场景对于服务的依赖是有强弱之分的。只有结合业务场景的需要,对服务间的依赖关系做出合理性的判定,才能基于这份依赖关系对服务限流、服务容量、服务报警、代码影响范围、服务发布顺序等做出合理的评估,将系统的评估工作更加精细化,从而保证系统的稳定运行。避免因为系统的依赖问...
2020-02-01 01:23:40
6356
1
原创 "大中台小前台战略"之中台的定义
什么是中台最近网络上有很多阐述企业中台的文章和评论,大家对中台的理解不尽相同,我自己也是一知半解,通过查阅资料,与朋友一起讨论,最终形成这篇文章。文章内容仅代表个人观点,如有不正之处,欢迎批评指正,谢谢大家。通过调查发现,中台并不是新生事物,在企业的管理中已经存在很久了,主要作用是为了快速支撑前台业务的发展,使得项目能够快速落地,达到增效降本的目的。以信托公司为例,企业的前中后台的划分如下:...
2020-01-21 17:32:23
2760
原创 Java编程:常用的字段脱敏工具类
import org.apache.commons.lang.StringUtils;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author zhibo * @date 2019-12-12 15:10 */public class EncryptUtil { public s...
2019-12-16 20:13:56
4002
2
原创 正则表达式语法
字符说明/将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“/n”匹配换行符。序列“//”匹配“/”,“/(”匹配“(”。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“/n”或“/r”之后的位置匹配。$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multi...
2019-12-03 16:12:19
886
原创 vim 常用命令删除、撤销、恢复、复制、粘贴、替换
1、撤销与恢复撤销命令说明u撤销上一命令对编辑缓冲区的修改。U恢复当前行(即一次撤销对当前行的全部操作)。.重复上一命令对编辑缓冲区的修改。ctrl + ru 的逆向操作,恢复上一命令对编辑缓冲区的修改。2、复制与粘贴命令说明y0复制从当前光标(不包含)左侧开始到该行行首的所有数据。y$复制从当前光标(包含)开始...
2019-12-03 12:03:35
9924
原创 apt 常用操作命令
1、更新 aptroot@fad4c851e732:/# apt-get updateHit:1 http://mirrors.aliyun.com/ubuntu eoan InReleaseHit:2 http://mirrors.aliyun.com/ubuntu eoan-updates InReleaseHit:3 http://mirrors.aliyun.com/ubuntu ...
2019-11-29 01:08:13
1861
原创 docker 常用操作命令整理
镜像仓库将 docker 镜像仓库更换为阿里云镜像,Ubuntu、CentOS 可以按照如下命令操作。更多操作系统支持参考阿里云文档sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://tatggrb0.mirror.aliyuncs...
2019-11-29 01:07:23
2263
原创 国内常用开源镜像站点【推荐使用阿里巴巴开源镜像站】
企业镜像阿里巴巴开源镜像站:https://developer.aliyun.com/mirror/华为开源镜像站:https://mirrors.huaweicloud.com/腾讯开源镜像站:https://mirrors.cloud.tencent.com/网易开源镜像站:http://mirrors.163.com/搜狐开源镜像站:http://mirrors.sohu.com/...
2019-11-28 23:20:09
16582
原创 Java编程:RandomAccess接口
RandomAccess 是一个标记接口,标识实现该接口的类支持快速随机访问。一、随机访问和串行访问举个例子:在 Java 中,有 ArrayList 和 LinkedList 两种数据类型。ArrayList 是基于数组实现的,可以通过数组下表灵活的访问列表中的任意元素。像 ArrayList 这种设计,我们就称之为随机访问。LinkedList 是基于 next 引用实现的,只...
2019-11-12 17:12:26
1414
原创 Linux编程:通过 free 命令查看Linux系统实际可用内存大小
一、free 命令通过 free 命令查看系统的内存使用情况,内存大小单位为 KB,执行结果如下图所示:通过 free -m 命令查看系统的内存使用情况,内存大小单位为 MB,执行结果如下图所示:通过 free -g 命令查看系统的内存使用情况,内存大小单位为 GB,执行结果如下图所示:二、实际可用内存大小计算从上方的图片得知, free 命令执行完成后,会显示 Mem、Swap ...
2019-10-24 11:35:21
10856
原创 linux编程:yum 命令详解
一、定义yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum 提供了对软件的查找、安装、更新、删除的等一系列功能。二、...
2019-09-28 22:48:36
2159
原创 Homebrew 更换为国内镜像(阿里巴巴开源镜像、中科大镜像、清华镜像)
定义Homebrew 是一个包管理器,主要用来管理 mac 操作系统的包,现在也支持 linux 操作系统的包管理。Homebrew 通过 tap 方式定义源,官方默认提供了 brew、homebrew-core 、homebrew-cask 、homebrew-bottles 四个常用的源(仓库),用户也可以通过 tap 定义自己的源。本文主要讲解官方提供的四个常用的源的作用及国内镜像配置方式...
2019-09-28 02:52:45
23597
1
原创 基于阿里云的应用系统三级等保1.0测评总结
背景由于政策的要求,我们的应用系统需要过信息系统安全等级保护第三级(简称三级等保)。在编写本文时,我们的三级等保已经通过,所以本文是对三级等保测评的一次总结。分享给大家,希望能够帮助有需要的人。我们的应用系统是基于阿里云部署的,阿里云作为云平台,本身通过了三级等保测评。所以与阿里云相关(物理安全、中间件安全)的测评都不需要重复进行,只需要提供阿里云的三级等保测评报告就可以。因此我们的三级等保测...
2019-09-25 20:33:54
7085
3
原创 基于钉钉应用的免登安全交互方案
一、背景描述钉钉提供了应用市场功能,市场中提供了各种各样的应用,这些应用都是基于钉钉的开放平台规范进行开发的。钉钉的开放平台有自己的用户体系,自有应用(企业自己的应用程序)也有独立的用户体系,如何保证双方用户互通、以及安全交互是本文讨论的问题。二、面临的问题1、钉钉用户如何与自有用户(企业自己的用户)打通。钉钉开放平台提供接口,可以获取对应企业下的钉钉用户信息,将 dingUserId(...
2019-09-17 15:28:52
1767
原创 Linux编程:命令行选项单横线“-”与双横线“--”的区别
一个减号后面跟的参数必须是单字符参数,可以多个参数写在同一个减号后面。例如:tar -xcvf ×××两个减号后面跟的参数必须是多字符参数(单词),一个“–”只能跟一个参数。例如:tar --help...
2019-08-27 14:43:35
7607
原创 Java编程:浅析 httpRequest 中的参数requestURL、requestURI、servletPath、contextPath、serverName、serverPort等
本篇文章主要介绍下 httpRequest 中的参数的含义与区别。以 http://localhost:8080/sns/test/get 路径为例进行分析,其中 sns 为应用名称,/test/get 为请求的 controller 路径。springboot 中配置如下:server.port=8080server.context-path=/sns1.请求路径参数仔细考虑了下,...
2019-08-09 16:32:22
7355
原创 Spring编程:springboot @SpringBootApplication注解
在使用 Springboot 框架进行开发的时候,通常我们会在 main 函数上添加 @SpringBootApplication 注解,今天为大家解析一下 @SpringBootApplication,如有不正之处,欢迎批评指正。@SpringBootApplication@SpringBootApplication源码如下:@Target({ElementType.TYPE})@Retenti
2019-08-05 17:55:06
71054
4
原创 Java编程:maven项目中导入本地的jar依赖
1、在 maven 工程的根目录(指的是 pom 所在的目录)创建 libs 文件夹,将要导入的 jar 包放到该目录下,如下所示:--app----src----libs------kaptcha-2.3.jar----pom.xml2、在 pom.xml 文件中,按照如下方式引入依赖包,其中 ${basedir} 代表工程根目录,之后就可以正常使用该 jar 包了。 <!...
2019-08-05 16:01:05
7557
原创 Java编程:API接口防篡改、签名、验签原理
定义在客户端与服务端请求交互的过程中,请求的数据容易被拦截并篡改,比如在支付场景中,请求支付金额为 10 元,被拦截后篡改为 100 元,由于没有防篡改校验,导致多支付了金钱,造成了用户损失。因此我们在接口设计时必须考虑防篡改校验,加签、验签就是用来解决这个问题的。划重点,敲黑板:加签、验签是用来解决防篡改问题的。签名主要包含摘要和非对称加密两部分内容,首先对需要签名的数据做摘要(类似于常见的...
2019-08-02 16:17:43
14313
7
原创 Java编程:java.nio.file.WatchService 实时监控文件变化【并没有真正实时】
在平时的开发过程中,会有很多场景需要实时监听文件的变化,如下:1、通过实时监控 mysql 的 binlog 日志实现数据同步2、修改配置文件后,希望系统可以实时感知3、应用系统将日志写入文件中,日志监控系统可以实时抓取日志,分析日志内容并进行报警4、类似 ide 工具,可以实时感知管理的工程下的文件变更在 Java 语言中,从 JDK7 开始,新增了java.nio.file.Watc...
2019-07-31 16:46:00
5106
原创 Spring编程:@ResponseBody 注解
1.定义@ResponseBody 注解是一个标识型注解,无需设置任何参数值。该注解的作用是:将 Controller 方法返回的对象,转换为 JSON 格式,通过 response 对象返回给客户端。2.源代码package org.springframework.web.bind.annotation;import java.lang.annotation.Documented;i...
2019-07-25 11:47:49
3170
1
原创 聊聊微服务架构的优缺点
什么是微服务微服务是用一组小服务构建的一个应用,服务运行在不同的进程中,服务之间通过轻量的通讯机制进行交互,并且服务可以通过自动化部署方式独立部署。正因为微服务架构中,服务之间是相互独立的,所以不同的服务可以使用不同的语言来开发,或者根据业务的需求使用不同类型的数据库。微服务是相对于它出现之前的巨大单体应用来讲的,我们以电商系统为例进行说明:优点缺点优点:1、服务解耦,每个服务...
2019-07-15 20:53:13
10431
原创 Spring编程:springboot属性配置和属性优先级
Spring Boot 允许我们外部化程序的配置,以便我们可以在不同的环境中使用相同的应用代码。我们可以使用 properties、YAML、环境变量、命令行参数进行外部化配置。配置的属性值可以通过 @Value 注解直接注入到 beans 中,通过 Spring 环境抽象访问;也可以通过 @ConfigurationProperties 绑定到结构化对象中。Spring Boot 使用一个非常...
2019-07-01 11:28:15
1541
原创 Java编程:Java8 新增的 @Repeatable 注解
在 JDK8 中增加了 Repeatable 注解,通过示例了解一下这个注解的功能。Repeatable 源代码package java.lang.annotation;/** * The annotation type {@code java.lang.annotation.Repeatable} is * used to indicate that the annotation t...
2019-05-31 16:04:59
2875
3
原创 架构设计:浅析分布式系统中的缓存问题
在分布式系统设计中,为了提高系统的响应速度,为了减轻数据库服务器的访问压力,我们经常会对数据进行缓存处理。本文由浅入深,逐步讲解缓存的设计,以及设计中遇到的问题。初级缓存方案初级缓存方案如下图所示,之所以如此命名,是因为大多数的系统中都是这样使用缓存的,是一个基础的缓存方案。大致流程如下:1、业务系统从缓存中查询数据2、如果查询到数据,则直接使用该数据3、如果没有查询到数据,则需要业务系...
2019-05-24 14:31:29
1098
1
原创 Java编程:Thread.yield() 的理解
yield作用yield 使当前线程让出 CPU 时间片,线程从运行状态(Running)变为可执行状态(Runnable),处于可执行状态的线程有可能会再次获取到时间片继续执行,也有可能处于等待状态,直到再次获取到时间片。也就是说,后续会有两种情况:1、当前线程让出 CPU 时间片后,又立即获取到 CPU 时间片,进而继续执行当前方法。2、当前线程让出 CPU 时间片后,等待一段时间后获取...
2019-05-17 17:38:30
5144
原创 负载均衡算法--最小连接数法(Least Connections)
接上一篇博文:负载均衡算法–源地址哈希法(Hash)。最小连接数法是根据服务器当前的连接情况进行负载均衡的,当请求到来时,会选取当前连接数最少的一台服务器来处理请求。由此也可以延伸出,根据服务器 CPU 占用最少,根据单位时间内处理请求的效率高低等进行服务器选择。最小连接数法只是动态分配服务器的一种算法,通过各种维度的参数计算,可以找到适合不同场景的更均衡的动态分配服务器的方案。算法描述假设...
2019-05-17 11:43:18
20170
2
原创 负载均衡算法--源地址哈希法(Hash)
接上一篇博文:负载均衡算法–平滑加权轮询法(Smooth Weight Round Robin)。顾名思义,该算法是根据请求来源的地址求哈希值获取服务器的。算法描述假设有 N 台服务器 S = {S0, S1, S2, …, Sn-1},算法可以描述为:1、通过指定的哈希函数,计算请求来源的地址的哈希值2、对哈希值进行求余,底数为 N3、将余数作为索引值,从 S 中获取对应的服务器;假...
2019-05-17 10:45:14
13745
1
原创 负载均衡算法--平滑加权轮询法(Smooth Weight Round Robin)
接上一篇博文:负载均衡算法–加权轮询法(Weight Round Robin),在加权轮询算法中我们讲到“从宏观的角度讲,权重高的服务器被访问的次数高一些,近似均衡;微观的角度讲,权重高的服务器会被连续访问到,看起来没有那么均衡。”,为了更好的解决均衡的问题,nginx 的作者提出了均衡加权轮询算法。算法描述假设有 N 台服务器 S = {S0, S1, S2, …, Sn},默认权重为 W ...
2019-05-16 22:11:42
6845
原创 负载均衡算法--加权随机法(Weight Random)
接上一篇博文:负载均衡算法–随机法(Random),文本讲解加权随机算法。算法描述假设有 N 台服务器 S = {S0, S1, S2, …, Sn},默认权重为 W = {W0, W1, W2, …, Wn},权重之和为 weightSum, 服务器列表为 serverList,算法可以描述为:1、初始化 serverList,将 W0 个 S0 加入至serverList,将 W1 个 ...
2019-05-16 20:52:32
8440
2
2012.李航.统计学习方法
2017-11-07
Git初学者教程By廖雪峰
2017-11-07
张开涛 spring杂谈[原创]
2017-09-07
张开涛 hibernate杂谈
2017-09-07
跟开涛学SpringMVC
2017-09-07
跟开涛学Spring
2017-09-07
Deep Learning 中文版
2017-08-14
activiti5.22 pdm模型
2017-06-15
eclipse安装插件activiti-designer-5.18.0【最新的】
2017-03-25
spark 入门学习教程
2017-03-05
spring-boot 用户手册
2017-02-22
jira用户手册JIRA使用说明
2017-02-22
深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版)
2016-08-31
Dubbo监控中心的介绍与安装
2016-06-02
Dubbo监控中心的介绍与简易监控中心的安装_补充文档
2016-06-02
Dubbo管理控制台的安装
2016-06-02
Dubbo监控中心的介绍与简易监控中心的安装
2016-06-02
廖雪峰python2.7 python3 git javascript 教程
2016-02-24
spring data jpa 中文文档
2015-11-02
ETL增量抽取方案 抽取、转换、加载
2010-09-20
DB11T064-2009 北京市行政区划代码 包括 街道
2010-04-11
javadoc 转成 chm 工具
2009-09-01
VISUAL C++ 2008入门经典 高清版
2009-08-21
java eclipse spring struts hibernate ibatis xml log4j 应用手册 帮助文档
2009-08-20
Windows Live Messenger (MSN)8.5 For Windows2008
2009-05-12
最新editplus
2009-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人