- 博客(444)
- 资源 (3)
- 收藏
- 关注
原创 安装 gitlab-runner
公司的 gitlab 之前一直都有相应的 runner 可供使用的,但是最近机器迁移之后,就没人重建 runner 了。所以,我就自己借了台虚机来安装 gitlab runner 来做 CI。 前提操作环境:CentOS 7gitlab 版本: GitLab Community Edition 8.12.4安装过程使用的用户: root大概步骤如下: 添加 repository (Ad
2017-04-06 16:34:47
15770
2
原创 通过 IDEA 去 Debug Jar包
代码打成Jar之后,要如何进行Debug呢? 下面以 IDEA 来例进行说明: 首先,以以下方式来启动 Jar包java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar test.jar启动之后,你会发现,有如下提示:Listening for transport dt_socket at
2017-03-20 16:09:16
24119
7
转载 MyBatis无法扫描Spring Boot别名的Bug
这个问题发生的原因比较复杂,主要条件有4个:使用Spring Boot,并使用Spring Boot的Maven插件打包使用MyBatis(目前最新的 3.3.1 版本仍有这个问题)将Domain配置在单独的Jar包中(例如Maven多模块)使用 SqlSessionFactoryBean.setTypeAliasesPackage 指定包扫描Domain然后你会发现:在开发时直接使用ID
2017-03-18 16:05:21
10673
8
原创 通过 Java 去监测某个目录下的文件变动
最近处理了一个需求,大概是这样的:己方搭建好FTP服务器对方往该服务器的指定目录(假设叫 目录A)上传文件己方需要将对方上传好的文件解析并更新到数据库中己方对 目录A 只有 “读”的权限,即,不能对 目录A中的文件进行删除、重命名、移动等操作。对于这个需求,我一开始想出的 解决方案 是:开启一个线程,定期去读取 目录A 下的所有文件将每两次读取的文件列表进行对比,新出现的文件名对应的文
2017-03-18 15:29:38
8018
2
原创 Postgresql 配置远程访问, 以及 虚拟机访问物理机上的postgresql 的ip配置
测试环境:物理机一台,安装了 Postgresql 9.6 的服务,并已启动 虚拟机一台(在上面的物理机上,使用 VMware 搭建)物理机与虚拟机可以互相 ping 通通过下面的配置,来允许远程的机器连接到我的 Postgresql 服务postgresql.conf 将该文件中的listen_addresses项值设定为“”,在9.0 Windows版中,该项配置已经是“”无需修改。
2017-03-10 17:22:07
4903
原创 JDBC API getTables()、getColumns() 中,通配符进行转义的问题
在我的 使用 JDBC API 获取 Mysql 的 表字段 时,返回为空 的解决方案 这篇Blog中,提及到了如何使用 JDBC API 来获取 column 的信息。但是,当时没有讲到一个注意点,现在补充一下。在 getColumns() 这个API中,它的4个参数的注释如下: catalog - a catalog name; must match the catalog name
2017-03-02 10:12:36
8496
原创 使用 JDBC API getColumns() 获取 Mysql 的 表字段时,返回为空 的解决方案
针对 Mysql 数据库,考虑下面这种场景用户 A ,创建了一个 database,取名为 test,test中有一个表,叫 tab001test 的 jdbc url 则为: jdbc:mysql://localhost:3306/test用户 B ,创建了一个 database,取名为 demo,demo中有一个表,叫 tab002demo 的 jdbc url 则为: jdbc:mys
2017-03-02 09:55:51
7276
原创 针对不同数据库,获取当前用户所有有权限查看的表,以及表的创建时间、更新时间、注释等信息,表中字段的相关信息(包含分页实现)
最近在处理一个需求,需求是这样的:给定任意一个数据库的JDBC连接、用户名、密码查询出所有有权限访问的表的相关信息:表名,创建时间,更新时间,注释要支持分页数据库类型有:MySQL、GBase、Oracle、DB2、Greenplum、Hive本来还有 HDFS和Kafka的,但是后来去掉了。我自己平时主要使用的是 mysql, 所以,对于 mysql 而言,这个需求还是比较好处理的。但
2017-03-01 19:17:27
8079
原创 Java 中 转换 CST 时间为 Date 对象
今天遇到一个需要把 Wed Mar 01 10:47:12 CST 2017 这种类型的字符串转化为 Java 的 Date 对象,我参照 SimpleDateFormat 类中的说明,直接写了下面的 代码:private static final String DATE_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";new SimpleDateFormat(DATE_
2017-03-01 17:04:08
12509
2
原创 Mysql 5.7 中如何禁用 密码检测插件(validate password plugin)
安装了5.7的msyql之后,在为 root 用户修改密码 或者 新增用户时,都会碰到一个问题,就是密码的强度不够。这是因为,5.7版本中,默认安装了一个叫 validate password plugin 的插件,它会要求:MySQL's validate_password plugin is installed by default. This will require that passwor
2017-02-27 16:04:56
12367
原创 Mysql(5.7)设置字符集为UTF-8
之前在使用Mysql 5.1 版本的时候,是通过在 /etc/my.cnf增加如下配置来设置字符集的: 但是今天在 5.7 版本上使用同样的方式时,导致 mysql 无法启动,日志文件 /var/log/mysqld.log 中一直报错:unknown variable 'default-character-set=utf8'问题就在 mysqld 中的 default-character-set
2017-02-27 15:52:36
31240
1
原创 Java文件下载相关设置
每当遇到文件下载时,总是想不起来需要给 Response 设置哪些 Header,这次干脆记录下来,方便以后查询:response.addHeader("Content-Disposition", "attachment;filename=" + fileName); response.setContentType("application/octet-stream");其中:fi
2017-02-25 15:20:19
1978
原创 Oracle 中,获取指定用户所有有权限访问的表的基本信息、分页实现
查询由指定用户创建的表SELECT * FROM ALL_OBJECTS WHERE OWNER='用户名' AND OBJECT_TYPE='TABLE'或者SELECT * FROM USER_TABLES但是上面这两种方式获取的 表 全部是由这个用户创建的表。但是,试想一下下面这种情况:用户A 有一张表 tableA用户B 有一张表 tableB用户A将tableA的权限开放给了 用户
2017-02-25 14:01:03
2382
原创 Spring MVC中,通过Java代码读取资源文件时,发生乱码的解决方法
Spring MVC中,通过Java代码读取资源文件时,发生乱码的解决方案
2017-02-22 16:56:17
2735
原创 使用 聚合函数(aggregate function)时,SQL语句的返回值的注意事项
假设有如下一条SQL语句SELECT AVG(xuo.`attach_succ_rate`) AS `attach_succ_rate`FROM `xdr_user_oriented` AS `xuo`WHERE xuo.`id` < -1 其中 xuo.`id` < -1 这个条件,正常情况下,肯定是不会满足的(没有哪个数据库的 id 是比 0 小的)。 所以,我
2017-02-21 19:49:14
9536
原创 在本地搭建 SVN仓库 和 git 仓库 (仓库仅限在本地使用)
作为一名程序猿,可能大家都遇到过这种需求: 自己在业余时,出于某些目的(比如,学习、私活 ;) 等)写了一些代码,想进行版本控制,以备将来不时之需。 自己的一些资料,可能需要时常更新,但又想保留历史版本(比如我自己,就有一份专门记录所有常用密码的txt文件) 对于这种需求,我们自然而然的会想到一些 VCS (Version Control System)来实现。就我自己的实践而言
2017-02-14 17:19:45
4486
原创 将 Spring boot 项目打成可执行Jar包,及相关注意事项(main-class、缺少 xsd、重复打包依赖)
最近在看 spring boot 的东西,觉得很方便,很好用。对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了。但是,转念一想,到了真正需要部署应用的时候,不可能通过 IDE 去部署啊。那有没有办法将 spring boot 的项目打包成一个可执行的 jar 包,然后通过 java -jar 命令去启动相应的服务呢?很明显,
2017-02-14 11:33:00
39154
5
原创 Spring Boot 不使用默认的 parent,改用自己的项目的 parent
在初学spring boot时,官方示例中,都是让我们继承一个spring的 spring-boot-starter-parent 这个parent:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>
2017-02-13 11:22:10
49630
1
原创 Spring MVC下,RESTful风格 与 静态资源(static resource)路径映射问题
在使用 Spring 做 REST 接口开发时,大家对配置可能都很熟悉,如下:<servlet> <servlet-name>mvc-dispatch</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>
2017-02-06 17:58:05
5295
原创 List 快速删除连续的多个元素
现假设有下面这个List:List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);如果我想把 2 和 3 这两个元素从该List中移除,大家的第一想法可能是:list.remove(1);// 此处为啥还是 1 ,这个应该不用解释了吧list.remove(1);这样做,
2017-02-06 10:31:29
7130
原创 Linux 下安装最新版本的 Mysql (官方安装方式)
之前使用的 Mysql 都是直接使用的安装在服务器上的,今天想在本地尝试安装一下最新版的msyql,结果,在看到官网上的下载列表时,直接懵B了,不信你看: 对于没怎么装过mysql的人来说,这得怎么下手啊?还好,我机智了一把,觉得官网肯定有安装说明文档的。 不找不知道,一找找到宝。从官网的说明来看,它现在直接提供了 repo 源,可以下载最新的版本进行安装。(注意:系统自带的 repo 源不一定
2017-01-22 11:19:41
5411
转载 Linux统计文件行数
语法:wc [选项] 文件…说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。该命令各选项含义如下:- c 统计字节数- l 统计行数- w 统计字数这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。 总是按下述顺序显示并且每项最多一列: 行数、字数、字节
2017-01-17 09:27:20
2416
原创 myBatis 返回 int 类型时,报 null 异常
写了一个下面的SQL,用来check**time**在表中存不存在的:<select id="checkTimeExist" resultType="int"> SELECT 1 FROM dual WHERE EXISTS ( SELECT 1 FROM `performance` AS p W
2017-01-14 12:48:10
3141
原创 MyBatis 中如何调用 Java 的 enum (枚举) 字段
事先作成一 enum,如下:public enum CityCode { ALL("000"), BEIJING("010"), SHANGHAI("021"), private String code; CityCode(String code) { this.code = code; } public String val() {
2017-01-12 20:02:39
8089
1
原创 Spring MVC 中,自动加载 JSON 转换器
在 RESTful接口 盛行的现在, 让接口返回 JSON 格式的字符串,已经成为了大家几乎共同的选择。 之前的项目,通过 Spring 来实现了 RESTful,接口返回的就是 JSON的。而且,我一直以为,只要在spring的xml配置文件中开启了<mvc:annotation-driven /> 之后,系统就会自动加载 MappingJackson2HttpMessageConverter
2017-01-07 23:36:17
1261
转载 Spring MVC 中,<mvc:annotation-driven /> 标签的注意点
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 <mvc:annotation-driven /> 会自动注册 DefaultAnnotationHandlerMapping 与 AnnotationMethodHandlerAdapter 这两个bean, 它们是 Spring MVC 为
2017-01-07 23:28:25
3489
原创 Maven集成Findbugs至compile阶段(excludeFilterFile 属性必须配置在 plugin 节点下)
最近在对代码作检测,使用到了findbug插件。每次检测都是手动检测,而且都是事后想起来才检测一下。 后来,想想有没有强制每个在提交代码的时候,使用findbug检测一下呢。 由于项目是使用maven打包编译的,所以,自然而然的就想到,findbug应该也有maven的插件吧。 于是,查了一下,的确有,: )。先直接上配置吧。<build> <pluginManagement>
2017-01-06 14:59:35
5727
4
原创 Spring 从同一个类中的某个方法调用另一个有注解(@Transactional)的方法时,失效的解决方案
考虑有下面这么一个类public class Foo { @Transactional public void bar() { /* … */ } public void baz() { this.bar(); }}可能会有不少人会跟我一样,觉得上面这种方式调用 baz()方法时,bar()上的@Transactional注解还是会起作用的,即bar(
2016-12-28 12:46:52
22193
2
原创 Mybatis 中 order by 排序失败的解决方法
在 mybatis 的 xml中,为一个SQL语句配置order by 子句时,需要这个排序的字段是前端传递过来的,而且排序的顺序(升序 OR 降序)也是由前端传递过来的。对于这种需求,我起初写成了下面这样:ORDER BY `#{condition.field}` #{condition.sortRule}然后,预计它的输出应该是类似于下面这样的ORDER BY `user_name` DESC但
2016-12-28 11:09:29
14027
原创 myBatis中,对大于号、小于号等特殊字符 的转义
今天在myBatis的xml文件中写SQL语句时,有一个where条件需要使用”>”和”<”符号,我就直接写了这两个符号,但是发现执行的时候会报错。 然后,想了一下,估计是这两个符号与 xml 文件的 “<”、”>” 发生冲突了,导致 myBatis 无法正常解析解析。 那么,自然而然的就是想到,把这两个符号进行转义啊,转义的方式有两种: 方式一 使用“CDATA”<![CDATA[
2016-12-22 13:44:00
8940
2
原创 Spring REST Controller,在GET方式下,有多个参数时的处理
现在越来越多的服务都转向使用RESTful了,我们的项目也不例外,使用spring来做了REST。在采用RESTful的时候,我们会严格按照约定来使用 HTTP METHOD:GET: 查询 POST: 创建PUT: 修改DELETE: 删除本来,按照这种方式来做的时候,开发都很方便。不过,最近遇到一个问题: 在一个查询接口中,需要的参数比较多,如果还是使用GET方式进行请求的话,那么
2016-12-20 20:30:37
48093
6
原创 Retrofit 设置 超时时间
现象在代码中,通过retrofit 框架发送请求去调用其他系统中的 REST 接口时,正常情况下,都没有啥问题。 但是今天碰到一个问题是,在发送一个请求时,过了10秒钟之后,系统就报SocketTimeout这个异常。每次报这个异常的时候都是10秒钟的时候报的。解析既然超时时间这么有规律,那么,肯定是在哪边设置了超时时间。带着这个疑问,稍微翻了一下源码,就找到了. 首先,我的 retrofit
2016-12-09 21:49:13
24572
4
原创 Ajax 以GET方式请求时,参数中包含 "#" 特殊字符的处理
Ajax 以GET方式请求时,参数中包含 “#” 特殊字符的处理Ajax 以GET方式请求时参数中包含 特殊字符的处理现象分析解决方法一方法二提示现象在使用 jquery 的ajax调用后台的接口时,如果是get方式的话,当参数中含有”#”这些等对于URI而言有着特殊含义的符号时,发现“#”字符后面的信息全被裁掉了。 比如:var url= "xxxx?name=" + "wz#aaa
2016-10-29 09:29:36
13487
2
原创 解决 Tomcat java.lang.OutOfMemoryError: PermGen space
近来在启动一个web项目时,Tomcat报了以下的异常java.lang.OutOfMemoryError: PermGen space 一眼看来,应该是Tomcat使用的JDK的永久代内存不够,所以,那么给JDK加内存呗。给tomcat指定内存可以参照以下两种方式:修改 TOMCAT_HOME/bin/catalina.shJAVA_OPTS="$JAVA_OPTS -server -XX:Pe
2016-09-12 17:48:00
2386
原创 Spring AOP @Before @Around @After 等 advice 的执行顺序
Spring AOP 中 @Before @Around @After 等 advice 的执行顺序用过spring框架进行开发的人,多多少少会使用过它的AOP功能,都知道有@Before、@Around和@After等advice。最近,为了实现项目中的输出日志和权限控制这两个需求,我也使用到了AOP功能。我使用到了@Before、@Around这两个advice。但在,使用过程中,却对它们的执行
2016-08-11 19:37:06
112223
40
原创 default browser
最近,不知道360从哪个版本开始,在设置系统默认浏览器的功能中,竟然将 chrome 排除在外了,导致无法将chrome设定为默认浏览器了。见下图:而且,即使用chrome自身的设定为默认浏览器的功能设定之后,也不启作用,系统默认打开的还是IE。如下图: 那么该如何来修改系统的默认浏览器设置呢?这时我就想到了通过注册表来实现这个目的。 步骤如下:点击开始,点击运行(或者 按 windows +
2016-07-11 08:30:13
2851
1
原创 服务器上只安装一份Tomcat,如何部署多个应用,要求每个应用使用不同的端口
最近项目集成调试,有多个系统要部署在同一个Tomcat上,但要求不能使用同一个端口号,这该如何实现呢? 刚好我之前有在《Tomcat权威指南》这本书上有看到这个需求的说明,所以,我就又回头翻了一下那书,把步骤整理了一下,发上来供大家参考 。 本次试验基于以下环境:操作系统: CentOS7Tomcat版本:8.0.30Tomcat安装路径:/opt/apache-tomcat-8.0.30
2016-07-03 00:12:13
3578
1
原创 power mock 入门介绍及使用示例
相关框架JUnit4、Mockit、PowerMock 相关maven依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency><dependency>
2016-06-29 15:20:51
33695
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人