自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

moon

必须是个很cool的人

原创 裸辞期间 Java书单总结

从1月中旬裸辞后,所看过的书单如下: 《Netty权威指南》 《Netty实战》 《Redis设计与实现》 《Redis实战》 《高性能mysql》 《Java并发编程的艺术》 《深入理解Java虚拟机》 《图解HTTP》 … 其中很多书一遍一遍的看,每次看读有新收获,力争能深入理解其中的内容。特...

2019-03-09 17:04:54 363 5

原创 2018年终总结 - 程序员的自我反思

目录2018 结束语2018 年 做了些什么2019 年要做什么 2018 结束语 今年已经进入了12月,2018年马上就要结束了,也是时候做一个2018年的年终总结。之前的公司每年年底因为绩效评定都需要自己写一个年终总结进行汇报,现在这些资料却已经找不到了,还是有些遗憾的。 从2014年大学毕...

2018-12-03 18:35:50 4578 12

原创 如何整合SpringMVC和Swagger2,并且使用Mock数据进行联调

在开发中,我们经常会需要对接口进行联调沟通,然而这是在整个开发周期中最占用时间的一块。尤其最近在接手一个项目中,采用前后端分离开发的模式,写前端的同学完全不懂后台代码(对,我们之前都是一个人写前后端所有相关的代码滴!),接口经常性需要进行调整,基本就是重复沟通,重复浪费时间。于是我决定在项目中引进...

2017-06-20 18:22:27 3730 0

原创 angularjs select初始化时多了一个 null option

情景:在使用angularJs是,init select元素时,使用ng-repeat 构造 option时, 会出现一个多余的值为null的option。 例如以下代码(jade模板):select( ng-model="user.departmentName" requi...

2017-06-01 13:56:53 1508 0

原创 AngularJs ng-show 和 ng-if的区别

相同点: ng-show和ng-if都可以用来控制元素是否显示。当值为true时,表示显示该元素;当值为false时,表示隐藏该元素。不同点: ng-show在页面进行渲染的时候,已经将该元素加载,如果值为false,元素需要隐藏的话,在Chrome浏览器中可以查看出,渲染出来的元素仅仅是加了一个...

2017-06-01 11:25:14 8254 0

原创 源码解读(二): spring容器初始化的refresh操作

在上一篇文章 源码解读(一): spring在web容器中的初始化过程 中,我们了解了Spring容器的初始化整个过程,但是你看了之后可能会有疑问。既然到这个时候初始化都已经完成了,那么bean的初始化应该从什么时候开始呢?不要着急,在上一篇文章中,ContextLoader中的Configure...

2017-04-20 18:33:45 2594 0

原创 源码解读(一): spring在web容器中的初始化过程

Spring容器本质上就是创建类的工厂,并且对类进行管理。Spring 在web容器中通常是通过在web.xml文件中配置切入点来进行相关初始化的。 当web容器解析web.xml文件时,会初始化ContextLoaderListener类,这个类继承了ServletContextListener...

2017-04-14 14:04:55 6180 0

原创 深入理解Spring的两大特征(IOC和AOP)

众所周知,Spring的核心特性就是IOC和AOP,IOC(Inversion of Control),即“控制反转”;AOP(Aspect-OrientedProgramming),即“面向切面编程”。参考书《Spring In Action》,下面分享一下我对这两大特性的个人理解。IOC:IO...

2017-04-05 11:46:53 77486 14

原创 Java接口和抽象类的区别

抽象类: Java是一门面向对象编程的语言,所有的对象都是类的概念来进行描述的。但是反过来看,并不是所有的类都是用来描绘对象的。如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。举例来说,圆形和方形都是形状,但是我们在描绘形状时,我们描绘的是一系列拥有相同内核特征却有不同的表...

2017-03-29 15:13:08 336 0

原创 数据库三大范式

第一范式 第二范式 第三范式 第一范式1NF,强调数据中列的原子性,即列中的值不能再分割为其他列。 例如: 现在有一个用户User表,表中字段分别包括,用户名,联系方式,性别等信息。 username sex tel 小明 男 13112345678 0755-12345...

2017-03-23 15:21:21 540 0

原创 Spring事务管理(三)使用tx标签

由于事务的配置方法较多,没有一一实践过,现在贴出平常常用的一种使用tx标签的配置方法,仅供参考。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp...

2017-03-21 16:12:04 1978 1

原创 Spring事务管理(二)Spring中的事务管控

上一节中,我们了解了事务的基本概念,和多个事务并发运行时可能导致的问题。下面讲一下Spring中的事务管控。

2017-03-21 15:57:37 2784 2

原创 Spring事务管理(一)什么是事务?

事务的概念 并发事务导致的问题 我们在实际业务场景中,经常会遇到数据频繁修改读取的问题。在同一时刻,不同的业务逻辑对同一个表数据进行修改,这种冲突很可能造成数据不可挽回的错乱,所以我们需要用事务来对数据进行管理。 1. 事务的概念 事务必须服从ACID原则。ACID...

2017-03-15 14:07:23 35308 8

原创 Spring中Can not set field to $Proxy 报错解决

问题: 在spring相关项目启动的时候,报错相关内容为Can not set field to $Proxy。 原因:因为JDK实现动态代理业务的时候,只能针对接口进行定义。然而对于类需要进行代理,需要使用到CGLib。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建...

2017-03-14 14:17:42 2515 0

原创 Javascript arguments 对象详解

arguments 是一个类似数组的对象, 对应于传递给函数的参数。

2017-02-05 16:49:05 385 0

原创 Javascript 判断假值的方法

概念:什么叫假值? 在JavaScript中,false、null、0、”“、undefined 和 NaN被称为假值。 Boolean 对象是一个布尔值的对象包装器。var x = new Boolean();如果Boolean构造函数的参数不是一个布尔值,则该参数会被转换成一个布尔值.如果...

2017-02-05 15:57:25 2170 0

原创 Apache-HTTPClient 用户验证实现

问题:在微服务框架之外的系统中,我们经常会遇到使用httpClient进行接口调用的问题,除了进行白名单的设置,很多时候我们需要在接口调用的时候需要身份认证。翻了一下官方文档,解决方法很多,但是都不太符合实际业务场景,这里提供一种简单粗暴的解决方法。解决方法:利用请求头,将验证信息保存起来。pub...

2016-12-01 11:05:23 2317 0

原创 Json转化为Java对象(object,List等)

问题:前后端数据交互时,经常会遇到Json串与Java对象转化的问题,有的Java对象中还包含了List对象等。解决方案: 1. 引入 json-lib包,Maven坐标如下: <dependency> <groupId>net.sf.json-...

2016-12-01 10:25:16 12907 0

原创 Java 使用JGit获取Git代码

package com.sf.sgs.smp.manager.test;import org.eclipse.jgit.api.*; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.er...

2016-11-11 16:06:47 11854 2

翻译 JGit Authentication JGit验证机制

验证机制在JGit中大部分与本地git相同。普遍使用SSH协议和HTTP(S)协议和他们所支持的验证方法。 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库。 虽然在下面的例子中使用的是CloneCommand方法,但是它能实现的方法可以应用到所有用于连接远程仓库的类,例如Fe...

2016-11-10 18:52:27 6668 0

原创 如何正确使用数据库索引

索引不是越多越好 索引会增加表在insert、update、delete操作的工作量 索引占用额外的存储空间 什么时候不走索引 在索引上使用is null 和is not null 在索引列上使用NOT(<>) 对索引列进行计算 对索引列进行格式转换 对索引列使用函数 对索引列进...

2016-11-10 11:45:50 1237 0

原创 LogStash

timestamp 用来标记事件的发生时间。因为这个字段涉及到Logstash的内部流转,所以必须是一个joda对象,如果你尝试自己给一个字符串字段重命名为@timestamp的话,Logstash会直接报错。所以,请使用 filter/date插件来管理这个字段。 type 标记事情的唯一类型。...

2016-11-10 11:01:43 1365 0

原创 Bootstrap modal模态框可拖动

问题:Bootstrap模态框默认不可拖动,如果屏幕不适配模态框大小,容易造成用户使用不方便的问题。解决方法:可全局加,也可单页面添加下列代码。$(document).on("show.bs.modal", ".modal", function(){ ...

2016-11-10 10:29:01 17008 4

翻译 Lucene

Lucene 是一款高性能的、可拓展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。 Lucene - 爬虫开源软件: - 常见的搜索理论模型: - 索引过程核心类 - 域索引选项...

2016-08-01 14:25:16 3002 0

原创 JDK7 遍历文件树

FileVIsitor preVisitDirectory:一个路径被访问时调用 postVisitDirectory:一个路径的所有节点被访问后调用 visitFile:文件被访问时被调用 visitFileFailed:当文件不能被访问时 FileVisitResult CONTINUE:继续...

2016-08-01 14:23:26 334 0

原创 ConcurrentLinkedQueue 的实现原理分析

ConcurrentLinkedQueue 是一个基于链接节点的无界线程安全队列,它采用先进先出FIFO的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。它采用了“wait-free”算法。并且采用CAS操作,保证数据的一致性。CA...

2016-08-01 14:05:31 548 0

原创 Linux time 命令的输出理解

Linux中time命令,经常用来计算某个程序的运行耗时,用户态CPU耗时,系统态CPU耗时。 例如:$ time testreal 4m26.226s user 6m15.008s sys 1m2.479s real:表示test整个程序的运行耗时。 user:表示test程序运行在用户态的...

2016-08-01 14:03:00 2049 0

原创 Bootstrap 模态框避免点击背景处关闭

问题: Bootstap 模态框在用户点击背景空白处时,会自动关闭。解决方法: 在HTML页面中编写模态框时,在div初始化时添加属性 aria-hidden=”true” data-backdrop=”static”,即可。 在需要显示模态框,初始化时,$(‘#myModal’).modal({...

2016-06-08 11:07:18 32798 0

原创 全方位立体监控之日志解决方案ELK(3)

在实际生产环境中,除了框架本身的特性,还需要考虑更多符合自身硬件条件以及业务需求来进行大量的改造优化工作,而这一步往往是最重要。 下面是搭建生产环境过程中,可能遇到的问题以及解决方案: Logstash作为远程Agent,需要占用服务器太多资源,并且必须依赖Java环境。每增加一台服务器,部署成...

2016-06-06 14:46:50 1544 0

原创 全方位立体监控之日志解决方案ELK(2)

Logstash详细介绍下面我们将对ELK框架进行深入详细的了解,了解了其中的原理,才能选择更加高效可靠的配置方案。ElasticSearch的配置比较简单,主要性能瓶颈在于内存以及节点设置方面,Kibana的配置也较为简单,web应用无很大的优化改进空间,主要在于第三方插件的使用。下面我们主要介...

2016-06-06 14:41:18 2331 0

原创 全方位立体监控之日志解决方案ELK(1)

在微服务框架中,由于各个系统功能分离明确,需要大量的服务器对系统部署进行支持。每个生产系统都会产生大量的日志,数据分散且管理困难,一旦出现问题,查找日志需要寻找运维人员进行协助,但是可能出现查询日志速度较慢,无法准确定位,影响生产问题解决的情况。所以我们需要一套日志系统来收集各个服务器上的日志数据...

2016-06-06 11:50:05 2726 0

原创 字符串切分遇到的问题

在进行字符串切分时,想要拿出文件名的名称,去除后缀,采取了split方法,但是发现不起作用。之后了解到对于“.”这样的字符,需要进行转义,才能被识别。 String[] urls = url.split("\\."); 这样就可以解决问题了。

2015-12-01 11:21:01 348 0

原创 zookeeper简单配置使用

zooKeeper简要安装使用

2015-11-11 15:43:20 343 0

转载 Email正则匹配

Email正则匹配值为: ^\s*\w+(?:\.{0,1}[\w-]+)@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)\.[a-zA-Z]+\s*$

2015-07-21 17:06:07 306 0

原创 WEB前端网页返回代码常见值

404:访问路径不正确,原始网页URL失效 403:资源不可用。服务器理解客户的请求,但拒绝进行处理。通常由于文件或目录的权限设置导致 301:请求的网页已永久的移动到新的位置。服务器返回此响应时,会自动将请求者转到新的位置。(永久移动) 302:服务器目前从不同位置的网页响应请求,但请求者应继续...

2015-07-01 11:21:42 483 0

原创 MyBatis配置文件报错

现有代码: <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 配置...

2015-07-01 11:08:49 743 0

翻译 Gradle chapter7 Gradle chapter7.Java Quickstart

Java 插件正如我们所见,Gradle是一个通用构建工具。它可以在你的构建脚本中实行你所关注的构建内容。发散性地说,如果你不在脚本中添加任何代码,那么它不会构建任何东西。大多数的Java项目与基本过程是十分相似的:你需要编译你的Java源文件,运行一些单元测试,并且创造一些包含你的类的JAR文件...

2015-06-26 14:21:09 393 0

翻译 Chapter 6.基本构建脚本

项目与任务Gradle中的一切都建立在两个基本的概念上:项目和任务。每一个Gradle构建由一个或者多个 项目组成。 一个项目展现出什么取决于你使用Gradle做了些什么。例如,一个项目可能代表一个JAR库或一个web应用程序。 它可能代表了一种 从其他项目产生的jar组装起来的ZIP。 一个项目...

2015-06-26 11:33:56 293 0

翻译 chapter 50 The Java Gradle Plugin Development Plugin

Java Gradle Plugin development plugin 正处于孵化阶段。请注意DSL和其他配置可能在之后的Gradle版本中有改变。 Java Gradle Plugin development plugin 可以用来协助Gradle插件的开发。它自动提供了Java插件,添加了...

2015-06-26 11:32:58 381 0

翻译 Chapter 51.依赖管理

51.1 介绍 每一个构建依赖管理是一个重要的特性,Gradle放置了一个强调提供一流的依赖管理同时便于理解和兼容各种各样的方法。如果你熟悉方法适用于Maven或者Ivy,你会惊喜的发现Gradle完全兼容两种方法,并且足够灵活去支持充分定制的方法。 这有一些亮高点关于Gradle支持依赖管...

2015-06-26 11:30:23 428 0

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