- 博客(103)
- 收藏
- 关注
原创 logback配置显示类名、方法名和代码行号
概述logback日志配置了输出格式,但是日志输出中为“?.?(?)”,这位调试问题造成了很大的影响。配置光有以下配置,还不行, 还需要添加“AsyncAppender”。AsyncAppender <appender name="info" class="ch.qos.logback.core.r
2017-03-07 15:01:37 26343
原创 spring boot中通过开发jar包,检查目标应用的注解的非法使用
背景在spring boot工程中,@FeignClient和@RequestMapping可能被错误得加到同一个方法上,当用户这么使用的情况下,如何能够在程序启动的过程中警告用户并抛出异常呢?本文将给出这个问题的解决方法。思路通过提供一个jar包,任何引入该jar包的应用在启动过程中自动执行注解使用检查jar包需要添加一个Listener,监听应用启动的过程,执行检查工作
2016-12-16 14:24:12 1858
原创 spring boot连接eureka的时候,statusPageUrlPath、healthCheckUrlPath的配置
---spring: profiles: same.portserver: port: ${SERVER_PORT:8089} context-path: ${SERVER_CONTEXTPATH:}management: context-path: ${MANAGEMENT_CONTEXTPATH:} port: ${MANAGEMENT_PORT:${server
2016-11-21 21:06:23 10763
原创 spring配置静态文件
前言css,js等静态文件应该被配置为可以直接访问,使用来配置,但该配置依赖,二者在配置在一起时才能够正常运行。 问题当没有配置配时,虽然静态文件可以不被默认servlet拦截,但是servlet自身的所有配置(controller)将失败,报servlet找不到对应的url-mapping。 spring mvc servlet
2016-08-24 20:03:25 415
原创 mybatis-spring:MapperScannerConfigurer、MapperScannerConfigurer
前言Mybatis逆向工程可以生成pojo类、Mybatis配置文件、dao。另外需要一个Mybatis的配置文件将这些生成的代码进行整合。配置 SqlSessionFactoryBean在spring上下文中实例化一个共享的Myba
2016-08-24 11:17:46 1005
原创 mybatis mapper文件在编译后丢失
前言在进行spring mvc, Mybatis工程开发时,mapper文件由逆向工程自动生成,此时在编译时mapper文件会丢失。解决在pom文件中添加如下配置,就可以将mapper文件也一并编译打包。 src/main/java **/*
2016-08-22 19:00:06 3405 1
原创 使用mockserver来进行http接口mock
前言进行单元测试时,必须要mock掉第三方的依赖调用,而mockserver提供了足够的api来支持这种http的mock,现在简单介绍如何使用mockserver进行http接口mock。依赖mockserver依赖dependency> groupId>org.mock-servergroupId> artifactId>mockserver-nettyarti
2016-08-17 06:49:14 28261 2
原创 jacoco覆盖率统计分析
前言近期在做了些单元测试相关的工作,包括单元测试的规范和一些开发方法。同时也花了一天时间做了下代码覆盖率统计的调研,发现jacoco还是比其他工具比如emma方便,统计点更加丰富。比如指令覆盖、分支覆盖、圈覆盖、行覆盖、方法覆盖等。这篇文章就简单分析一下这些统计点的统计方法和区别。指标Instructions:指令覆盖,字节码中指令。Branches:分支覆盖,用钻石表示。
2016-08-11 18:39:01 3762 1
原创 idea使用问题
今天遇到个奇怪的问题,idea的restart server和redeploy都不能更新工程,后来发现是make这一步根本就没有成功。至于为什么不成功,还没搞清楚。
2016-08-09 20:37:56 500
原创 单元测试事务回滚.md
背景单元测试需要具备能够重复运行、随时运行、可靠、case之间完全隔离、和第三方系统解耦等特性。case之间完全隔离需要做好数据准备和case断言后的数据清理操作,而事务可以让数据恢复变得异常简单。实现方式定义测试基类public abstract class BaseTestNew extends AbstractTransactionalDataSourceSpringContextTests
2016-07-25 14:42:56 2621
转载 借助BeanFactoryPostProcessor修改spring配置文件
public class MybatisTestPostProcessor implements BeanFactoryPostProcessor { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { DataSou
2016-07-08 13:48:20 1062
转载 CountDownLatch
package moco;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * Created by leo on 16/7/7. */public class CountD
2016-07-08 10:18:54 268
原创 单元测试设计原则
背景为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下:Responsible: 谁开发谁负责测试,在哪里开发就在哪里测试。Reliable: 测试case要可靠,并且是值得信赖的,对于底层的任何改动都要能够及时感知。Repeative: 所有单元测试用例都要能够重复运行。能够重复运行就
2016-07-06 10:11:21 4594
原创 dbsetup实现数据准备和清理工作
背景:单元测试的一个基本要求是要所有测试case都能够重复的运行(repeative), 不能够重复运行的case就不可以进行测试用例的持续集成,也不能用于回归测试。而要实现重复运行,就不能让某一次的case运行对数据库造成污染,这就要求我们在运行case前后做一些数据清理的准备工作,目前发现有两种工具可以实现该需求,比如dbunit、dbsetup,dbunit是基于xml、sql文件等进行
2016-06-16 12:20:25 1821
原创 python passlib生成Hash密文并进行验证--Hash a password with passlib
encrypt() - generate new salt, return hash of password.verify() - verify password against existing hash.from passlib.hash import sha256_cryptpassword = sha256_crypt.encrypt("password")passw
2016-06-03 08:14:03 4340 1
原创 多线程入门--synchronized介绍
线程安全非线程安全主要是指多个线程对同一个对象中 的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流 程。
2016-05-18 11:03:08 312
原创 java动态编译
自动生成代码的一个小工具中要通过创建一个Service.java源文件,然后对该源文件进行编译生成对应的class文件,之后通过反射调用Service.java的所有声明方法。自动生成的代码的功能是对每个Service.java的方法进行对应的case和data的自动生成。
2016-05-11 17:15:27 516
原创 sed进行文件简单处理
有一个名为user的文件,内容如下: Leo:456:7890:11 Vincent:333:43434:2 Rack:4343:4343:22 Leo:444:33:4343 Rack:1:1:11)提取第二列的值并对其进行排序;2)找出第二、三、四列之和的最大值;3)对文本内容按照第二列降序排序。答案:1) awk -F ":" '{print $2}' u
2016-05-04 11:28:29 456
原创 memcached & redis基本操作
memcached安装与连接使用docker进行启动:docker run -p 11211:11211 -d --name memcached memcached使用telnet 进行连接:telnet 10.141.4.25 11211常用操作存储命令setset key flags exptime
2016-04-28 16:59:37 6521
原创 memcached基本操作
java连接memcached的常用操作, set, get, gets, cas, add, replace, append, prepend, delete, incr, decr, shutdown:public class MemcachedDemo { public static void main(String[] args) throws ExecutionExcepti
2016-04-27 14:35:01 573
原创 python 批量下载文件
主要功能:登陆一个需要权限的页面,对页面进行解析下载所有列表下的文件到本地目录。#!/usr/bin/python2.7#encoding=utf-8import urllib2from bs4 import BeautifulSoup# create a password managerpassword_mgr = urllib2.HTTPPasswordMgrWithDefaul
2016-04-26 18:53:46 2150
原创 客户端字符串编码导致的服务器端诡异问题
背景:HttpClient进行一个http接口的测试,分别测试两个服务器的统一接口,其中的一个是乱码, 另一个正常。Server1正常返回:API接口,用户开户----开始,passportId:Y20160414000000003 userName:马 userNameHex:E9A9ACE7BBA7E5B9B3Server2异常返回:API???????----??,pas
2016-04-15 19:28:29 983
原创 docker构建jenkins镜像和容器
背景:我们从官方pull和启动的jenkins容器是没有git等重要插件的,因此我们需要在Dockerfile中添加镜像制作的相关插件配置。同时,在制作好镜像并启动这些带有git插件的镜像后从新提交这个镜像,结果启动新image后容器里的git插件和其他一些配置修改全部丢失。stackoverflow答案:http://stackoverflow.com/questions/36617288/
2016-04-14 17:12:01 1488
原创 python Basic Authentication
有时候我们需要python解析一些页面,实现自动化监控的功能。而这些页面一般需要用户输入username,password进行基本的验证,这时就需要我们使用python基本的认证功能。现已python抓取dubbo-admin的服务页面进行举例:# create a password managerpassword_mgr = urllib2.HTTPPasswordMgrWithDefau
2016-01-03 12:25:38 2955
原创 scala 基础
基本命令安装:brew install scalascala:进入scala console:q:退出scala console编译: scalac ScalaTutorial.scala运行: scala ScalaTutorial实例object ScalaTutorial { def main(args: Array[String]) {
2015-09-22 18:40:19 420
原创 多git服务器ssh秘钥配置
背景:我想通过我的笔记本同时设置github和公司gitlab的ssh秘钥登陆,两个服务器的登陆邮箱地址是不同的,我如何设置两套ssh密钥对?如果已经能够成功通过ssh登陆公司的gitlab,现在配置通过领一个邮件账号登陆github。1. cd ~/.ssh2. ssh-keygen -t rsa -C 'zhixiangjin@mail.com' -f id_rsa
2015-08-04 20:16:05 541
原创 linux csplit命令进行日志文件分割和重命名
Jan 01 This the log of this day.Jan 01 This the log of this day.Jan 01 This the log of this day.Jan 01 This the log of this day.Jan 01 This the log of this day.Jan 01 This the log of this da
2015-05-27 00:42:20 1415
转载 svn用法
So you are working on this humongous project and its that time when everyone in the teamhas to start working on different modules or functionalities. The way to proceed is to createmodule bran
2014-10-17 01:23:44 351
原创 json block
{ "data": { "userId": "yuliang.jin", "subscriptionsBySpeaker": [ { "speakerId": "1", "speakerName": "张露" } ],
2014-09-16 15:19:46 502
原创 logger字符串组合
try { fileBiz.deleteFile(filePath); } catch (Exception e) { logger.debug("删除文件{}出错, id: {}, path: {}", mediaDHO.getFileName(), mediaId, filePath, e); }
2014-09-13 21:09:51 702
原创 JUnit 4 with Hamcrest
A good starting place is the assertThat() method that can now almost always be used in place of the traditional assertEquals(). assertThat() can be found in org.junit.Assert, but it defines using Hamc
2014-08-26 12:42:15 616
原创 linux shell
#!/bin/shfor line in $(cat all_files.txt)do if [ -f "$line" ]; #A folder like /tmp/a/b is also true for -e, there is a whitespace before and after "-f". then sed 's/abc/def/g' $line >> ${line%.*
2014-08-25 21:24:26 403
原创 Bash Shell:判断文件是否存在
#!/bin/bashfile="/etc/hosts"if [ -f "$file" ]then echo "$file found."else echo "$file not found."fi
2014-08-25 18:20:07 786
原创 junit
我们先来看一个测试case: @Test public void test3() { ArrayList strings = new ArrayList(); strings.add("a"); strings.add("d"); strings.add("c"); strings.add("b");
2014-08-25 16:22:20 609
原创 h2数据库数据查看
如果想要查看数据库信息,可在web.xml文件中加入如下配置: H2Console org.h2.server.web.WebServlet 1 H2Console /memerydb/console/* 浏览器中输入:http://localhost:8080/memerydb
2014-08-25 08:54:12 3427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人