2019年6月27日

使用fastjson读取超巨json文件引起的GC问题

摘要: 项目中需要将巨量数据生成的json文件解析,并写入数据库,使用了 alibaba 的 fastjson,在实践过程中遇到了 GC 问题,记录如下: 数据大约为70万条,文件大小在3~4G左右,使用 fastjson 官方推荐的 Stream Api 例3 的示例,在读取到30万数据时,内存使用量开始 阅读全文

posted @ 2019-06-27 21:10 刘兴伟 阅读(4478) 评论(0) 推荐(0) 编辑

2019年5月25日

Java 文件完整性校验 MD5 sha1 sha256 sha224 sha384 sha512

摘要: 由于项目中需要使用文件做备份,并且要提供备份文件的下载功能。备份文件体积较大,为确保下载后的文件与原文件一致,需要提供文件完整性校验。 网上有这么多此类文章,其中不少使用到了 包中的方法,但是又自己做了大文件的拆分及获取相应校验码的转换。 DigestUtils 包已经提供了为文件流生成校验码的功能 阅读全文

posted @ 2019-05-25 17:14 刘兴伟 阅读(7312) 评论(0) 推荐(0) 编辑

2019年2月27日

Spring Boot 2 实践记录之 封装依赖及尽可能不创建静态方法以避免在 Service 和 Controller 的单元测试中使用 Powermock

摘要: 在前面的文章中(Spring Boot 2 实践记录之 Powermock 和 SpringBootTest)提到了使用 Powermock 结合 SpringBootTest、WebMvcTest 来 Mock Service、Controller 中的 静态类和静态方法。 但此法有两个弊端,一是 阅读全文

posted @ 2019-02-27 11:09 刘兴伟 阅读(1239) 评论(0) 推荐(0) 编辑

2019年2月25日

Spring Boot 2 实践记录之 Powermock 和 SpringBootTest

摘要: 由于要代码中使用了 Date 类生成实时时间,单元测试中需要 Mock Date 的构造方法,以预设其行为,这就要使用到 PowerMock 在 Spring Boot 的测试套件中,需要添加 @RunWith(SpringRunner.class) 和 @SpringBootTest 注解。 但是 阅读全文

posted @ 2019-02-25 20:11 刘兴伟 阅读(4070) 评论(0) 推荐(0) 编辑

2019年2月24日

Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性

摘要: 在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性。但那是因为 Spring 提供了将上下文对象传递给 matches 方法的能力。 对于其它的类,想要获取配置属性,可以建立一个配置类,使 阅读全文

posted @ 2019-02-24 21:51 刘兴伟 阅读(2036) 评论(0) 推荐(0) 编辑

Spring Boot 2 实践记录之 使用 Powermock、Mockito 对 UUID 进行 mock 单元测试

摘要: 由于注册时,需要对输入的密码进行加密,使用到了 UUID、sha1、md 等算法。在单元测试时,使用到了 Powermock,记录如下。 先看下加密算法: 其中,UUID.randomUUID()、DigestUtils.md5Hex()、DigestUtils.sha1Hex()、Base64.e 阅读全文

posted @ 2019-02-24 11:23 刘兴伟 阅读(2686) 评论(0) 推荐(0) 编辑

2019年2月21日

Spring Boot 2 实践记录之 MyBatis 集成的启动时警告信息问题

摘要: 按笔者 Spring Boot 2 实践记录之 MySQL + MyBatis 配置 中的方式,如果想正确运行,需要在 Mapper 类上添加 @Mapper 注解。 但是加入此注解之后,启动时会出现如下警告: 虽然不影响运行,但是对于追求完美的童鞋而言,却是小有遗憾。 两条信息各自对应了一个问题, 阅读全文

posted @ 2019-02-21 09:42 刘兴伟 阅读(7947) 评论(0) 推荐(0) 编辑

2019年2月17日

Spring Boot 2 实践记录之 条件装配

摘要: 实验项目是想要使用多种数据库访问方式,比如 JPA 和 MyBatis。 项目的 Service 层业务逻辑相同,只是具体实现代码不同,自然是一组接口,两组实现类的架构比较合理。 不过这种模式却有一个问题,如果 Bean 是按实现类装配,则在切换数据库访问方式时,就需要大量的代码修改。如果按接口装配 阅读全文

posted @ 2019-02-17 00:10 刘兴伟 阅读(333) 评论(0) 推荐(1) 编辑

2019年2月16日

Spring Boot 2 实践记录之 组合注解原理

摘要: Spring 的组合注解功能,网上有很多文章介绍,不过都是介绍其使用方法,鲜有其原理解析。 组合注解并非 Java 的原生能力。就是说,想通过用「注解A」来注解「注解B」,再用「注解B」 来注解 C(类或方法),就能够使 C 同时拥有「注解A」和「注解B」是行不通的。 示例如下: 先定义注解 Sup 阅读全文

posted @ 2019-02-16 16:28 刘兴伟 阅读(1836) 评论(0) 推荐(0) 编辑

2019年2月14日

Spring Boot 2 实践记录之 Redis 及 Session Redis 配置

摘要: 先说 Redis 的配置,在一些网上资料中,Spring Boot 的 Redis 除了添加依赖外,还要使用 XML 或 Java 配置文件做些配置,不过经过实践并不需要。 先在 pom 文件中添加 redis 的依赖: 如果 Redis 部署在 Spring Boot 运行环境的同一台服务器上,端 阅读全文

posted @ 2019-02-14 00:19 刘兴伟 阅读(566) 评论(0) 推荐(0) 编辑

2019年2月13日

Spring Boot 2 实践记录之 MySQL + MyBatis 配置

摘要: 如果不需要连接池,那么只需要简单的在pom文件中,添加mysql依赖: 然后在配置文件中添加配置: MySQL datasource 就配置完了。 如果使用连接池,则需要一个数据库配置类,如下是使用 PooledDataSource 的 Java 配置文件: MyBatis 也不需要特殊的配置,只要 阅读全文

posted @ 2019-02-13 22:24 刘兴伟 阅读(387) 评论(0) 推荐(0) 编辑

2018年8月8日

ES6 学习笔记之四 对象的扩展

摘要: ES6 为对象字面量添加了几个实用的功能,虽然这几个新功能基本上都是语法糖,但确实方便。 一、属性的简洁表示法 当定义一个对象时,允许直接写入一个变量,作为对象的属性,变量名就是属性名。 例1: 与例2: 是相同的。 二、方法的简洁表示法 下面的例子是方法的简洁表示法(例3) 和下例是完全等同的(例 阅读全文

posted @ 2018-08-08 16:10 刘兴伟 阅读(260) 评论(0) 推荐(0) 编辑

2018年7月23日

ES6 学习笔记之三 函数参数默认值

摘要: 定义函数时为参数指定默认值的能力,是现代动态编程语言的标配。在ES6出现之前,JavaScript是没有这种能力的,框架为了实现参数默认值,用了很多技巧。 ES6 的默认参数值功能,与其他语言的语法类似,但功能更强大。 首先,是可以用标量值为函数参数指定默认值,这个标量可以是基本类型、数组、对象。 阅读全文

posted @ 2018-07-23 16:33 刘兴伟 阅读(345) 评论(0) 推荐(1) 编辑

2018年5月18日

Linux Mint 楷体问题

摘要: 很多人都遇见过刚装完的 Linux Mint 界面字体是黑体,然后莫名其妙就变成楷体的问题。 先不说技术层面的原因,只说怎么解决。 造成这种情况,多数是安装输入法或其他某种软件的时候,同时安装了 AR PL UKai、AR PL UMing 字体,所以网上大多的解决办法都是删除这两个字体,如果只删除 阅读全文

posted @ 2018-05-18 21:58 刘兴伟 阅读(1128) 评论(0) 推荐(0) 编辑

2018年2月22日

ES6 学习笔记之二 块作用域与闭包

摘要: “闭包是函数和声明该函数的词法环境的组合。” 这是MDN上对闭包的定义。 《JavaScript高级程序设计》中则是这样定义的:闭包是指有权访问另一个函数作用域中的变量的函数。 个人更倾向于MDN的闭包定义,原因有三: 其一,如果仅将闭包定义为可访问其父作用域(链)的局部变量的函数,那么就忽视了它持 阅读全文

posted @ 2018-02-22 17:08 刘兴伟 阅读(582) 评论(0) 推荐(0) 编辑

2018年2月20日

ES6 学习笔记之一 块作用域与let和const

摘要: 在学习ES6的块作用域和 let、const 之前,我们先来看看ES5以前的 var 关键字。 var 关键字用于定义一个变量,通常我们会将其与变量的赋值合并为一条语句,就像下面这样(例1): 但实际情况是有些微妙的。 在JavaScript中,变量的定义与否,虽然不像强类型语言那样重要,但也还是有 阅读全文

posted @ 2018-02-20 22:19 刘兴伟 阅读(440) 评论(0) 推荐(0) 编辑

2017年5月9日

在CentOS 6.x上配合Windows客户端搭建 git(gitosis)服务器

摘要: 一、在 CentOS 上安装 git 和 gitosis: 逐条执行如下语句: 二、添加 git 用户: 执行如下语句,创建 git 用户,-m参数用于在创建用户的同时,为其创建相应的主目录: 三、在Windows上安装客户端软件 1. 下载和安装 msysgit 到 http://code.goo 阅读全文

posted @ 2017-05-09 15:30 刘兴伟 阅读(179) 评论(0) 推荐(0) 编辑

通过 AJAX 加载的 JavaScript 脚本的调试

摘要: //# sourceURL= 注意#后面有一个空格。 阅读全文

posted @ 2017-05-09 15:30 刘兴伟 阅读(309) 评论(0) 推荐(0) 编辑

使用IntelliJ IDEA(PHPStorm)和xdebug在firefox、chrome中远程调试PHP

摘要: 很多PHP程序员都习惯于使用echo、var_dump和exit来中断和调试web应用程序,本文主要介绍结合xdebug、IntelliJ IDEA、Firefox/chrome/IE来远程调试PHP WEB应用。 一、安装xdebug xdebug是一款PHP调试工具,在wamp server、x 阅读全文

posted @ 2017-05-09 15:30 刘兴伟 阅读(2319) 评论(0) 推荐(0) 编辑

2017年1月16日

配置xdebug远程调试php的三种方法(配合phpstorm)

摘要: 使用xdebug对PHP进行远程调试是一个php程序员一定要掌握的技能,关于在本机设置xdebug进行调试的方法,请自行百度,下面说一下如何配置远程服务器在开发机上的调试。 首先要在远程服务器上安装xdebug,这个也请自行百度。 下载Komodo Remote Debugging Packge包中 阅读全文

posted @ 2017-01-16 11:59 刘兴伟 阅读(5240) 评论(4) 推荐(0) 编辑

导航