自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

helloworld的专栏

helloworld的专栏

原创 CodeMirror使用笔记

最近因工作需要,在项目中使用了CodeMirror代码编辑器,以下是使用笔记。 首先,看下最终的效果 引入基本的需要资源 <script src="<%=request.getContextPath()%>/resources/js/codemirror/codem...

2019-12-09 11:03:30 172 0

原创 Java异常处理的九个最佳实践

确保在Finally程序块中完成资源释放或者使用Try-With语句 比如对于InputStream,当我们使用完毕,我们要确保资源被正确关闭,比如下面我们常见的错误用法,不要在try模块中关闭资源,因为一旦try语句块中的其他方法发生异常,很有可能无法执行到inputStream.close()...

2019-11-21 22:09:12 203 0

原创 常用Linux命令行技巧

结果以表格形式输出 column -t 比如; mount | column -t 默认分隔符为空格,如果输出文件是以别的字符进行分割的呢,比如/etc/passwd中的冒号,那么,我们可以通过-s参数来指定 cat /etc/passwd | column -t -s: 重复执行某个命...

2019-11-21 16:56:13 3152 5

翻译 MyBatis框架下防止SQL注入

与之前的ORM框架不同,MyBatis使用XML描述符将对象映射到SQL语句或者存储过程中,这种机制带给我们更大的灵活度通过SQL来操作数据库对象,因此,我们必须小心这种便利下SQL注入的可能性 安全用法 <select id="getPerson" parameterT...

2019-06-26 22:25:16 520 0

原创 MyBatis动态SQL中Map参数处理

在MyBatis中,如果我们需要传递两个参数,有一种方式是通过Map作为传入参数,在动态SQL中,我们需要对传入的Map参数中的值进行判断,然后进行动态SQL的条件拼接处理。 假设我们有传入参数map如下: map.put("name",name); map.put("...

2019-06-25 18:30:28 3783 0

转载 一个人有文化,到底有多重要?

关于什么是文化,我最最欣赏的回答,是作家梁晓声的四句概括: 根植于内心的修养, 无需提醒的自觉, 以约束为前提的自由, 为别人着想的善良。 -01- 一位叫做“Judy”的空姐,在微博上讲了一件关于刘诗诗的趣事。因为是空姐,在飞机上服务,Judy常会遇见各种大咖和明星。 但这些大咖和明星都没给...

2019-06-24 17:59:52 282 0

翻译 如何避免敏捷失败?

很多人都听说敏捷,有些人知道敏捷是什么,有些人也尝试过敏捷,本章中将列举出一些常见的错误敏捷实践,如果想要避免敏捷失败,建议还是要对照下你所在的敏捷团队中有没有类似的敏捷实践,这对于你的敏捷成功是很有帮助意义的。 敏捷错误实践一: 没有或者糟糕的项目回顾会 回顾会的目的在于总结和发现问题,一句...

2019-06-24 11:34:15 150 0

原创 HashMap 与 HashTable的区别

HashMap 实现了Map接口 非线程同步,非线程安全 不允许重复键 键和值均允许为null HashMap<Interger,String> employeeHashmap=new HashMap<Integer,String>(); employeeHashmap...

2019-06-23 16:45:51 98 0

原创 Java之keytool命令学习

Java Keytool is a key and certificate management utility. It allows users to manage their own public/private key pairs and certificates. It also allo...

2019-06-20 21:46:54 183 0

翻译 微服务架构系列——API服务网关

本章我们简单介绍微服务架构下的API服务网关,本章我们将讨论以下话题: 什么是API服务网关 为什么需要API服务网关 API服务网关的工作机制 处理横切关注点 当我们在开发设计大型软件应用时,我们一般都会采用分层的架构模式,比如,在WEB应用程序中,下面的这种架构是我们最为常见的设计模式 ...

2019-06-17 19:07:45 258 0

翻译 微服务架构特征

一个典型的微服务架构(MSA)通常包含以下组件: 客户端 身份标识提供者: 提供访问服务所需的身份密钥,服务网关会负责完成对请求客户端的基本验签工作 API服务网关: 客户端访问目标服务的入口点,经服务请求经服务网关路由到目标服务提供方。服务网关的优点: 服务更新操作对客户端透明 服务与服务...

2019-06-16 16:25:12 256 0

翻译 什么是微服务——微服务架构体系介绍

Why Microservices? 回答这个问题前,我们先看下之前大行其道的单体架构 - Monolithic Architecture,对于非专业人士来讲,所谓的单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。 对于这种架构,其缺陷或者说潜在不...

2019-06-15 22:02:08 595 0

翻译 Microservices vs SOA - 微服务与SOA

开始之前,我们先简单看下单体架构、SOA与微服务之间的区别,如下图所示:简单来讲,对于单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。 而对于SOA架构来说,其本质上也是服务的集合,服务与服务之间彼此调用,这种调用可能涉及到简单的数据处理或者有超过多...

2019-06-14 16:47:20 344 0

翻译 Java 8 中的List排序

按字母顺序排序字符串列表 List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", ...

2019-06-13 16:50:36 4494 0

原创 公钥添加到authorized_keys到文件中之后仍无法免密登陆

接上一章,关于Linux下免密登陆失败,这里找了Stackoverflow上关于这个问题的讨论: Adding public key to ~/.ssh/authorized_keys does not log me in automatically 同样的,检查目录和文件权限,确保.ssh...

2019-06-03 22:45:44 2200 0

转载 Linux下免密认证登录失败原因总结

事件背景 A机器已经生产rsa密钥且已经将public key添加到B机器/root/.ssh/authorized_keys,但是从A机器上ssh root@B机器时仍然需要输入密码,即无密码认证失败。 原因总结(B机器上) (1).ssh目录的权限必须是700 (2)用户目录的权限...

2019-06-02 22:09:50 1482 0

原创 GitLab 与 Jenkins 持续集成实践

首先,我们简单说明下我们的部署环境: GitLab:192.168.43.61 Jenkins:192.168.43.116 Jenkins中系统设置中,配置GitLab连接信息,这里需要我们指定URL地址,Credentials连接凭据。 我们可以通过Add...

2018-12-17 10:55:16 509 0

原创 Jenkins使用笔记

本章简单记录Jenkins的使用笔记 首先,我们从官网中下载安装介质,可以看到这里有适合各种操作系统版本的安装源介质,简单起见,我们直接下载一个通用的war程序包 执行命令java -jar jenkins.war --ajp13Port=-1 --httpPort=8...

2018-12-17 10:10:10 233 0

原创 ubuntu中GitLab的安装与配置

这里,我们采用离线安装的方式安装GitLab 首先,我们从清华大学开源软件镜像站中下载软件包,用户可根据实际的服务器操作系统版本来选择不同的镜像资源,这里我们以ubuntu为例。 执行命令sudo dpkg -i gitlab-*.deb,安装GitLab,若无报错,会提示修改...

2018-12-14 16:49:56 888 0

翻译 给出二叉树的中序和先序遍历,构建出二叉树

假设二叉树的中序遍历为: D B E A F C 先序遍历为: A B D E C F 那么,如何构建还原出这颗二叉树? 算法思想: 先序遍历中,第一个节点为二叉树根节点,本例中,根节点为A,在中序遍历集合中检索字符A,字符A左边的字符为二叉树左子树,右边的字符为二叉树右子树。于是,我们得...

2018-12-11 16:42:23 195 0

翻译 给出二叉树的中序和后序遍历,构建出二叉树

假设二叉树中序遍历为: int[] inOrder = { 4, 2, 5, 1, 6, 3, 7 }; 后序遍历为 int[] postOrder = { 4, 5, 2, 6, 7, 3, 1 }; 那么,如何构建还原出这颗二叉树?类似问题还有:给出二叉树的先序和中序遍...

2018-12-11 14:06:56 468 0

原创 SpringBoot使用JWT集成Ng-Alain之Token失效处理

在 SpringBoot使用JWT集成Ng-Alain中,我们简单介绍了SpringBoot与Ng-Alain的集成,在这种前后端分离框架实践中,我们使用了JWT来接口安全标识,考虑一个问题,从整个系统的业务实际来看,当Token过期失效之后,我们需要用户重新登录以获取新的Token。在我们的代码...

2018-11-29 21:55:11 1295 0

原创 Ng Alain分页控件的使用

在【Ng Alain】官方示例源码中,关于pagination分页控件的代码如下: &amp;lt;ng-template #pagination&amp;gt; &amp;lt;nz-pagination [nzTotal]=&quot;5...

2018-11-29 14:49:12 1520 0

原创 SpringBoot使用JWT集成Ng-Alain

Ng-Alain与SpringBoot整合其实本身也并不复杂,SpringBoot专注于后台业务实现,而Ng-Alain则专注于前端页面展现。 spring initializr新建SpringBoot工程 下载Ng-Alain源码,并拷贝至工程的ng_alain目录下,打开_...

2018-11-28 11:32:55 1479 0

原创 SpringBoot【The request was rejected because the URL was not normalized】

SpringBoot整合ng-alain时报错如下: org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not norm...

2018-11-27 16:57:06 9832 0

原创 IntelliJ IDEA 中Java 9 模块化实战

右键-New-Module,输入模块基本信息 新建module-info.java文件 输入module-info.java内容如下: module helloworld { exports com.hello; } 新建HelloWorld.java文件 pac...

2018-11-15 11:54:27 946 0

翻译 Java 9 模块化系统简介

我们知道,在Java 9中,一个重要的改变就是模块化系统的引入,Java 9的模块化系统源于Jigsaw Project,我们首先看下Jigsaw Project的实现目标: 模块化JDK:我们知道,现有JDK已经非常庞大,Jigsaw Project的目标就是将JDK分隔成一个个的小模块。 ...

2018-11-15 11:32:42 218 0

原创 Java 9 新特性

Java 9发布于2017年9月,目前已停止更新(Java SE 9 has reached end of support. ),是一个non-LTS(Long Term Support)版本,JDK10 发布于2018年3月,咋看起来,Oracle公司加快了JAVA版本的频率,但按照Oracle...

2018-11-14 16:10:52 816 0

原创 Spring Boot 使用 H2 内存数据库

H2 is one of the popular in memory databases. H2 is a relational database management system written in Java. It can be embedded in Java applic...

2018-11-14 10:37:49 1503 0

原创 Java 接口规范与最佳实践

API的特征 可理解 文档完善 格式统一:这里涉及很多方面,包括:接口返回类型、命名规则以及参数顺序 在我们所有的API方法中,要么是全是getXYZ()格式,要么全是xyz(),最好不要两种格式都有。 假设我们有方法重载,原始方法接受参数Object...,...

2018-11-12 16:21:54 2600 0

翻译 Java 异常处理最佳实践

在Finally语句块中释放资源或者使用Try-With-Resource语句 比如,在Try语句中使用InputStream输入流,并且试图在Try语句块中关闭资源,这通常不是推荐做法。比如下面的代码就**不是推荐做法。** public void doNotCloseResourc...

2018-11-10 16:00:47 230 0

翻译 如何处理Lambda表达式中的Checked Exception?

Lambda是Java 8引入的一个重要特性,通过Lambda表达式,我们可以以一种更加简洁的方式实现代码编程。但,如果涉及到Exception,应该如何处理? 一般来讲,在Java中,我们都是通过try catch实现异常捕获的,对于Lambda表达式同样也一样,我们先来看一个例子。我们来实现一...

2018-11-09 16:09:35 416 0

原创 Checked Exception vs Unchecked Exception

Unchecked exceptions are the run-time errors that occur because of programming errors, such as invalid arguments passed to a public method. The Java...

2018-11-08 21:45:10 135 0

原创 RabbitMQ VS Apache Kafka 系列

RabbitMQ VS Apache Kafka (一)—— RabbitMQ简介 RabbitMQ VS Apache Kafka (二)—— Kafka简介 RabbitMQ VS Apache Kafka (三)—— 基本结论 RabbitM...

2018-11-02 14:06:48 602 0

翻译 RabbitMQ VS Apache Kafka (十)—— Kafka集群的分区容错性与高可用性

本章我们讨论有关Kafka集群的容错性与高可用性话题 在Kafka中,复制的单元是分区,每一个主题中都有一个或者多个分区,每个分区都有一个领导者以及若干个追随者。当创建主题之后,需要指定分区及复制因子,常见的复制因子通常是3,即一个领导者,两个追随者。 在Kafka集群中,所有的读...

2018-11-02 13:52:00 737 0

原创 RabbitMQ VS Apache Kafka (九)—— RabbitMQ集群的分区容错性与高可用性

本章,我们讨论有关RabbitMQ的容错性,消息一致性及高可用性。RabbitMQ可以作为集群节点来运行,因此RabbitMQ通常被归为分布式消息系统,对于分布式消息系统,我们的关注点通常是一致性与可用性。 我们为什么要讨论分布式系统的一致性与可用性,本质在于两者描述的是系统在失败的情况下表现如...

2018-10-31 21:40:49 638 0

转载 Different shell types: interactive, non-interactive, login

Shells Shells control how you interact with your computer systems. I always switch between the Bourne shell (sh), Korn shell (ksh) and Bourne-Again s...

2018-10-30 21:22:53 216 0

转载 The differences between a login shell and interactive shell?

An interactive shell is one started without non-option arguments, unless -s is specified, without specifying the -c option, and whose input and err...

2018-10-30 21:07:23 98 0

转载 Login shell vs Interactive shell

System Environment Variables Paths You can start a bash shell with one of the following ways: Login shell. The interactive shell. The...

2018-10-30 20:57:04 321 0

翻译 awk命令示例详解

awk options program file 一种用于文本处理的编程语言工具 参数options通常可以有以下选项 F fs:指定文件分隔符 f file:指定awk脚本文件 v var=value:定义变量 使用变量 $0:表示整行 $1:表示第一...

2018-10-30 11:18:29 303 0

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