自定义博客皮肤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的专栏

  • 博客(489)
  • 资源 (9)
  • 收藏
  • 关注

原创 JAVA注解

Java注解Annotations主要用于为目标程序提供额外补充的说明信息。注解以@符号标识注解并不改变编译程序的行为注意可以为程序元素:实例变量、构造方法、方法或者类添加元数据信息注解并不是单纯的注释,但却可以修改编译器如何来处理目标程序下面我们举例说明,为什么说注解并非单纯的注解,下面这段代码将抛出编译错误,因为我们使用了@Override注解,但却没有Override重写父类方法,而是重载Overload父类方法,因此编译器将抛出编译异常/* Java program to demon

2020-07-09 21:47:49 484

原创 CodeMirror使用笔记

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

2019-12-09 11:03:30 1716

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

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

2019-11-21 22:09:12 666

原创 常用Linux命令行技巧

结果以表格形式输出column -t比如;mount | column -t默认分隔符为空格,如果输出文件是以别的字符进行分割的呢,比如/etc/passwd中的冒号,那么,我们可以通过-s参数来指定cat /etc/passwd | column -t -s:重复执行某个命令直至执行结果成功while true按内存使用大小列出进程信息ps aux | sort ...

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

翻译 MyBatis框架下防止SQL注入

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

2019-06-26 22:25:16 2172

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

在MyBatis中,如果我们需要传递两个参数,有一种方式是通过Map作为传入参数,在动态SQL中,我们需要对传入的Map参数中的值进行判断,然后进行动态SQL的条件拼接处理。假设我们有传入参数map如下:map.put("name",name);map.put("level",level);对应的,我们有配置文件如下,可以看到,在test表达式中,我们不用再通过#,$取值符了,就直接这样...

2019-06-25 18:30:28 17906

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

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

2019-06-24 17:59:52 663

翻译 如何避免敏捷失败?

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

2019-06-24 11:34:15 450

原创 HashMap 与 HashTable的区别

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

2019-06-23 16:45:51 297

原创 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 allows users to cache certificates. Java Keytool store...

2019-06-20 21:46:54 658

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

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

2019-06-17 19:07:45 905

翻译 微服务架构特征

一个典型的微服务架构(MSA)通常包含以下组件:客户端身份标识提供者: 提供访问服务所需的身份密钥,服务网关会负责完成对请求客户端的基本验签工作API服务网关: 客户端访问目标服务的入口点,经服务请求经服务网关路由到目标服务提供方。服务网关的优点:服务更新操作对客户端透明服务与服务之间的消息路由协议不一定非得基于WEB服务网关可以统一进行安全授权或者负载均衡等操作消息:...

2019-06-16 16:25:12 836

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

Why Microservices?回答这个问题前,我们先看下之前大行其道的单体架构 - Monolithic Architecture,对于非专业人士来讲,所谓的单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。对于这种架构,其缺陷或者说潜在不足也很明显,简单总结如下:臃肿僵化不灵活: 单体架构很难采用多种技术可靠性较差: 这种架构最明显...

2019-06-15 22:02:08 2564

翻译 Microservices vs SOA - 微服务与SOA

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

2019-06-14 16:47:20 1163

翻译 Java 8 中的List排序

按字母顺序排序字符串列表List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", "New Delhi");System.out.println(cities);//[Milan, london, S...

2019-06-13 16:50:36 13527

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

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

2019-06-03 22:45:44 8660

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

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

2019-06-02 22:09:50 4643

原创 GitLab 与 Jenkins 持续集成实践

首先,我们简单说明下我们的部署环境:GitLab:192.168.43.61 Jenkins:192.168.43.116Jenkins中系统设置中,配置GitLab连接信息,这里需要我们指定URL地址,Credentials连接凭据。我们可以通过Add按钮新增一个连接凭据API Token需要GitLab提供,我们在GitLab中的User Settings - Acc...

2018-12-17 10:55:16 1013

原创 Jenkins使用笔记

本章简单记录Jenkins的使用笔记首先,我们从官网中下载安装介质,可以看到这里有适合各种操作系统版本的安装源介质,简单起见,我们直接下载一个通用的war程序包执行命令java -jar jenkins.war --ajp13Port=-1 --httpPort=8081,可根据实际情况指定启动端口,启动Jenkins注意,首次启动时会生成管理员初始密码,初始密码也可通过查...

2018-12-17 10:10:10 511

原创 ubuntu中GitLab的安装与配置

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

2018-12-14 16:49:56 2745

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

假设二叉树的中序遍历为:D B E A F C先序遍历为:A B D E C F那么,如何构建还原出这颗二叉树?算法思想:先序遍历中,第一个节点为二叉树根节点,本例中,根节点为A,在中序遍历集合中检索字符A,字符A左边的字符为二叉树左子树,右边的字符为二叉树右子树。于是,我们得到如下结构:递归重复上述步骤,得到如下结果:算法实现buildTree:从先序中检索元素,...

2018-12-11 16:42:23 774

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

假设二叉树中序遍历为:int[] inOrder = { 4, 2, 5, 1, 6, 3, 7 };后序遍历为int[] postOrder = { 4, 5, 2, 6, 7, 3, 1 };那么,如何构建还原出这颗二叉树?类似问题还有:给出二叉树的先序和中序遍历如何还原出二叉树算法思想:后序遍历中的最后一个元素为二叉树的根节点,这里是数字1在中序遍历集合中查找数字1,...

2018-12-11 14:06:56 2901

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

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

2018-11-29 21:55:11 2989

原创 Ng Alain分页控件的使用

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

2018-11-29 14:49:12 3213 1

原创 SpringBoot使用JWT集成Ng-Alain

Ng-Alain与SpringBoot整合其实本身也并不复杂,SpringBoot专注于后台业务实现,而Ng-Alain则专注于前端页面展现。spring initializr新建SpringBoot工程下载Ng-Alain源码,并拷贝至工程的ng_alain目录下,打开_mock目录下各种模拟接口实现,SpringBoot中参考实现相应接口,具体实现可参考源码链接中Github的源码...

2018-11-28 11:32:55 2379 1

原创 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 normalized. at org.springframework.security.web.firewal...

2018-11-27 16:57:06 28464 4

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

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

2018-11-15 11:54:27 2816 1

翻译 Java 9 模块化系统简介

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

2018-11-15 11:32:42 650

原创 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 1203

原创 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 applications or run in the client-server mode.添加H2 POM依赖&amp;amp;amp;l...

2018-11-14 10:37:49 2912

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

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

2018-11-12 16:21:54 6844

翻译 Java 异常处理最佳实践

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

2018-11-10 16:00:47 493

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

Lambda是Java 8引入的一个重要特性,通过Lambda表达式,我们可以以一种更加简洁的方式实现代码编程。但,如果涉及到Exception,应该如何处理?一般来讲,在Java中,我们都是通过try catch实现异常捕获的,对于Lambda表达式同样也一样,我们先来看一个例子。我们来实现一个简单的网络爬虫,爬虫接受URL列表作为参数,通过遍历URL列表访问对应地址内容,并保存到文本文件中。...

2018-11-09 16:09:35 1109

原创 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 compiler does not check the unchecked exceptions d...

2018-11-08 21:45:10 373

原创 RabbitMQ VS Apache Kafka 系列

RabbitMQ VS Apache Kafka (一)—— RabbitMQ简介RabbitMQ VS Apache Kafka (二)—— Kafka简介RabbitMQ VS Apache Kafka (三)—— 基本结论RabbitMQ VS Apache Kafka (四)—— 应用场景如何选择?RabbitMQ VS Apache Kafka (五)...

2018-11-02 14:06:48 795

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

本章我们讨论有关Kafka集群的容错性与高可用性话题在Kafka中,复制的单元是分区,每一个主题中都有一个或者多个分区,每个分区都有一个领导者以及若干个追随者。当创建主题之后,需要指定分区及复制因子,常见的复制因子通常是3,即一个领导者,两个追随者。在Kafka集群中,所有的读写操作都会路由到领导者,追随者只会定期从领导者请求获取最新消息,消费者并不会从追随者分区中获取消息,追随者存在的...

2018-11-02 13:52:00 1591

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

本章,我们讨论有关RabbitMQ的容错性,消息一致性及高可用性。RabbitMQ可以作为集群节点来运行,因此RabbitMQ通常被归为分布式消息系统,对于分布式消息系统,我们的关注点通常是一致性与可用性。我们为什么要讨论分布式系统的一致性与可用性,本质在于两者描述的是系统在失败的情况下表现如何。单节点持久化原语持久化消息队列/交换器RabbitMQ支持两种类型的消息队列:持久化队列和非持...

2018-10-31 21:40:49 1258

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

ShellsShells control how you interact with your computer systems. I always switch between the Bourne shell (sh), Korn shell (ksh) and Bourne-Again shell (bash) but there are numerous others.There ar...

2018-10-30 21:22:53 591

转载 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 error output are both connected to terminals (as determ...

2018-10-30 21:07:23 367

转载 Login shell vs Interactive shell

System Environment Variables PathsYou can start a bash shell with one of the following ways:Login shell.The interactive shell.The non-interactive shell.login shellWhen you log onto the s...

2018-10-30 20:57:04 783

3DES加密算法源码

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。 最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)”— 即为ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作— 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义: 数据加密标准(DES)应当包括下文中的数据加密算法(DES[4])与三重数据加密算法(TDEA,如ANSI X9.52中所描述的) NIST SP 800-67(2004,2008[5])主要使用术语TDEA,但也提到了“Triple DES(TDEA)”。ISO/IEC 18033-3(2005)使用“TDEA”,但其中提到: TDEA通称Triple DES(数据加密标准)。 没有一个定义了本算法的标准使用术语“3DES”。 3DESughhhg34465345556555678==算法== 3DES使用“密钥包”,其包含3个DES密钥,K1,K2和K3,均为56位(除去奇偶校验位)。加密算法为: 密文 = EK3(DK2(EK1(平文))) 也就是说,使用K1为密钥进行DES加密,再用K2为密钥进行DES“解密”,最后以K3进行DES加密。 而解密则为其反过程: 平文 = DK1(EK2(DK3(密文))) 即以K3解密,以K2“加密”,最后以K1解密。 每次加密操作都只处理64位数据,称为一块。 无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥选项2时的算法强度,并在使用密钥选项3时与DES兼容。 密钥选项[编辑] 标准定义了三种密钥选项: 密钥选项1:三个密钥是独立的。 密钥选项2:K1和K2是独立的,而K3=K1 密钥选项3:三个密钥均相等,即K1=K2=K3 密钥选项1的强度最高,拥有3 x 56 = 168个独立的密钥位。 密钥选项2的安全性稍低,拥有2 x 56 = 112个独立的密钥位。该选项比简单的应用DES两次的强度较高,即使用K1和K2,因为它可以防御中途相遇攻击。 密钥选项3等同与DES,只有56个密钥位。这个选项提供了与DES的兼容性,因为第1和第2次DES操作相互抵消了。该选项不再为国家标准科技协会(NIST)所建议[6],亦不为ISO/IEC 18033-3所支持。

2015-01-21

mail.jar mail.jar

mail.jar

2014-05-11

Java2WSDL和WSDL2Java操作指南.doc

Java2WSDL和WSDL2Java操作指南.doc

2014-05-11

Java使用SOAP获取webservice实例解析.doc

Java使用SOAP获取webservice实例解析.doc

2014-05-11

Axis2_WebService_经典教程.doc

Axis2_WebService_经典教程.doc

2014-05-11

dom4j-1.6.1

dom4j-1.6.1

2014-05-10

servlet-api

servlet-api

2014-05-10

jsp-api.jar

jsp-api.jar

2014-05-10

C++ Builder 汉诺塔算法动态演示系统

采用C++ Buidler开发环境,C++ 语言,结合线程技术,将经典的汉诺塔算法的执行过程动态的演示出来,对于用户理解汉诺塔算法产生巨大的帮助

2009-03-29

空空如也

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

TA关注的人

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