自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (8)
  • 收藏
  • 关注

原创 Spring Boot 自动装配实现

之前写的一个TLV编解码库意外在Github上收获了一些星,所以趁着最近闲着,简单实现了一下Spring Boot的自动装配和Spring的注解装配。有关Spring Boot自动装配网上资料还是相当多的,简单步骤如下:1. POM引入自动装配相关依赖,设置<optional>为true,即不传递依赖; <dependencies> ...

2020-02-19 21:59:00 907

原创 Idea运行Spring Boot Gradle项目时有关Filter参数无法生效问题

Spring Boot使用Gradle进行项目管理时,也会使用Filter来进行打包时参数替换,特别是对于resources文件夹下的内容。如下所示,为resources下的数据初始化data.sql:INSERT INTO demo_system_info(version_code,version_id,update_time,description) VALUES('{{v...

2020-02-10 21:23:51 658

原创 Java注解处理(Annotation Processor)实战:Excel导出接口自动生成

距离之前的Java APT的相关文章已经过了接近半年时间,这半年间也做了一些有关APT的应用,最近趁着过年在家整理开源了一个Excel导出接口自动生成的项目至Github(https://github.com/DreamJM/DreamSpringExcel),各位要是喜欢可以点击链接去点个星支持一下。1. 需求&背景 在类似后台管理系统中,会有一些Tabl...

2020-01-29 01:20:27 630

原创 Wireshark Lua插件自定义

近期工作中刚好有实现自定义的UDP相关协议,用Wireshark时只能给出原始的字节流,观察起来确实十分不便,为此研究了一下Wireshark的Lua插件实现,在此记录一下。一、配置执行Lua脚本 首先通过菜单中的"About Wireshark"查看一下Wireshark对应Lua引擎的支持情况,如下图所示: 默认安装路径下会有一个init...

2019-06-20 00:07:28 2616

原创 Java注解处理(Annotation Processor):(四) 完结

接着上节的内容,首先谈一下poet的使用。通过上节可以看出,通过Filer生成代码时,使用了字符串方式的拼接与替换来生成Java源码,十分不利于修改与调整,而且比较容易出错,而poet就是解决这个问题的神器。 上节的代码修改后如下:@SupportedSourceVersion(SourceVersion.RELEASE_8)@SupportedAnnot...

2019-05-20 21:41:32 745 2

原创 Java注解处理(Annotation Processor):(三) 代码生成

上节中AutoService利用注解处理生成的Service文件,这次我们主要进行代码生成,分析注解处理过程中代码生成的过程以及Gradle和Maven应如何配置Annotation Processor的支持。@Retention(RetentionPolicy.SOURCE)@Target(ElementType.TYPE)public @interface Hello {...

2019-05-20 00:49:31 8236 7

原创 Java注解处理(Annotation Processor):(二) Google Auto Service

接着上文,今天来分析一下Google Auto Service是如何利用Annotation Processor来帮助实现SPI的。首先看一下auto-service-annotation库,只有一个AutoService注解定义,其value值即为SPI的服务接口类,如下所示:可以看出,其注解仅保留于源码级别,用于编译时Annotation Processor的源码分析,并利用分析结...

2019-05-14 23:19:56 4838 2

原创 Java注解处理(Annotation Processor):(一) 从SPI谈起

最早接触Java Annotation Processor应该还是要数使用ButterKnife、Dagger2了,当时对Java注解的理解和使用还停留在通过运行时的反射机制来进行注解解析(主要还是用来替代恶心的XML配置)。初次接触时确实让人耳目一新,基本上是通过注解处理和代码生成,完成了依赖注入,不仅是在概念上面,而且对于性能资源有限的APP端,让使用依赖注入成为可行的方案;当然...

2019-05-07 23:40:52 1769 2

原创 MySQL数据库缓存

近期公司性能测试时,发现通讯录获取效率较低,主要原因还是数据未进行分页而且数据量过大导致,但是作为一种优化方案,还是提出了开启MySQL查询缓存的方案:1. 在my.cnf中添加如下配置并重启,开启MySQL缓存query_cache_size=256Mquery_cache_limit=10Mquery_cache_type=1query_cache_size...

2019-05-02 00:51:58 5186

原创 Java性能测试相关小结

近期公司进行了相关项目的性能测试,经过大半个月的折腾,总算学习了不少相关经验,在此记录分享一番1. 主要工具1.1 jvisualvm JDK自带的图形化工具,总体来说在性能监控方面要比JConsole好一些,原理都是类似,需要通过JMX等进行JVM分析, 为此如需远端访问,则需要在目标JAVA程序启动时添加如下参数:-Djava.rmi.serv...

2019-04-28 23:22:51 1158

原创 TLV格式数据JAVA编解码

       电信系统中不少通信数据都采用TLV格式进行二进制编解码,而具体的TLV格式并无统一的规范,只能算是一种统称,其规定了数据中的相应字段都由Tag-Length-Value三要素组成,有些协议对于固定长度的字段也会使用TV格式,省略其中的Length。       最近针对工作中遇到的一种TLV格式消息,实现了一套编解码库(详细可参照TLVCodec)。目前可能并不能适用于所有TLV...

2018-12-09 22:30:45 2711 1

原创 SpringBoot和ReactJS项目集成开发

       前一阵子有前端管理台的开发需求,而之前前端涉及的较少,就找了一个现成的模版CoreUI,其中有ReactJS版本的模板,试了试就发现欲罢不能了。而后台为了开发便捷,还是选择了Spring Boot(其实还是选择Express玩JS全栈会更有意思)。       后续整理了一套基于maven和gradle的SpringBootReact开发模版示例,上传到了Github(Sprin...

2018-12-02 23:54:37 3309

原创 密码存储与传输的那些事儿(五)密码传输

       对于密码的存储,需要使用密码哈希来保证用户隐私与密码安全,对于这一点基本上是没什么争议的。但对于像用户登陆这样的场景来说,需要传递用户密码,这时是否需要使用哈希算法?如何保证密码安全?首选HTTPSHTTPS肯定是最安全的方式,这点是毋庸置疑的。有些人也很极端的说,“如果项目都不肯用HTTPS,这样的公司待下去也没啥意思”,这点我却不敢苟同了。实际上很多小项目或者是私活之类的...

2018-08-21 23:40:33 1997

原创 密码存储与传输的那些事儿(四)Scrypt&Argon2密码哈希

Scrpyt      如前所述,Scrypt密码哈希的安全性要高于Bcrypt,Scrypt内部还使用了PBKDF2算法,具体算法就不深入研究了,其实从Scrypt的入参就可以看出其安全性,具体入参列表如下:Passphrase:待哈希密码 Salt:盐,推荐不小于16字节 N:CPU/内存消耗指数,一般取值为2的若干次方,例如16384 p:并行计算参数,理论上取值范围为1-25...

2018-08-20 23:08:24 3186 2

原创 密码存储与传输的那些事儿(三)PBKDF2密码哈希

     上篇介绍了BCrypt密码哈希算法,这次来看一下与之齐名的PBKDF2算法,首先看一下其基本公式:DK = PBKDF2(PRF, Password, Salt, c, dkLen)    DK表示哈希计算结果,其中PBKDF2的参数包含如下5个:PRF:这个可以理解为HMAC算法,HMAC在此就不过多介绍了,可理解为就是利用摘要算法对秘钥以及固定消息进行摘要计算,这里秘钥...

2018-08-19 23:31:17 1189

原创 密码存储与传输的那些事儿(二)bcrypt密码哈希

      上一节讲到了密码哈希算法,首先我们从bcrypt入手,之前说到bcrypt算法不需要再生成盐,其实这么说是错误的,应该说bcrypt算法生成的结果自身就包含了盐,而且可以进行算法复杂度参数调整,从而加长了哈希算法执行时间,有效的防止了彩虹表攻击等手段。       本次以Java为例,其他javascript、python等主流语言都有相应的库,相信并不难找,本次用的Java库如下...

2018-08-13 23:40:39 2968

原创 密码存储与传输的那些事儿(一)密码存储概述

     最近看到一个项目,用明文存储的密码,让人不忍直视,所以就想聊聊密码的存储以及登陆过程中密码传输的那些事儿。     首先就来看看密码存储,密码不能明文存储相信这个都不会有异议,那应该如何存储呢?    方案1: 加盐哈希       相信这个方案也是大多数公司目前使用的方案,至于哈希算法的话,普遍都采用MD5、SHA1、SHA256等算法。加盐的方式也各不相同,比如在密码尾部...

2018-08-10 00:01:40 2375 1

原创 证书番外篇之Android证书

       最近略微研究了一下证书,为此借着这个东风,顺带研究一下安卓的证书及其使用。       Android使用的是jks证书,这个在TLS初探(2)证书简介中有介绍,和P12证书类似,实际就是将X509证书和私钥打包成一个文件,并且对该文件加上密钥(称为密钥库口令);不仅如此,还进一步对其中的私钥加上密钥(称为密钥口令)。简单来说,如果你需要提取证书文件就需要密钥库口令,如果你需要提...

2018-08-04 00:44:53 5161 1

原创 TLS初探(5)TLS示例与证书互认证(Node.js)

(一)代码分析本章旨在通过实际Node.JS代码进行之前所说的证书与TLS简单内容的确认,废话不多直接上代码,首先看服务器端代码:const https = require('https');const fs = require('fs');const options = { key: fs.readFileSync('./certs/server.key'), c...

2018-08-02 23:53:21 904

原创 TLS初探(4)多域名证书

       在“TLS初探(2)证书简介”中提过,如想使用泛域名,可在Subject DN(Distingushed Name)的CN(Common Name)中使用*通配符,例如*.abc.com。而如果想使用同一证书匹配多个域名,可以使用X.509中扩展字段的Subject Alternative Name字段来进行多域名支持。       为此如果想支持多域名证书,首先就要想办法在CS...

2018-07-30 23:30:38 2136

原创 TLS初探(3)证书生成

      上一节讲了各种证书的格式,在此基础上本次来探究一下证书的生成。本次使用openssl进行相应的证书管理,具体openssl的安装说明等基本知识就不在此赘述。       此次主要流程就是先生成一个自签名根证书,然后利用自签名根证书去签发一个服务器证书,具体步骤如下:1.  生成根证书之前,首先需要进行私钥生成(以RSA为例)openssl genrsa -out ca.k...

2018-07-30 00:23:26 1855

原创 TLS初探(2)证书简介

      证书可以理解为签发方信息、拥有者信息、公钥以及签名(由签发方私钥签名)的集合(当然还有额外信息)。校验证书是否可信,实际就是检验该证书是否是由合法的签发方签发,验证的方法就是首先通过签发方信息找到对应的签发方证书,利用签发方证书中的公钥去校验签名是否正确。       从上述验证方法可以看出,实际上证书是否可信是由其签发方的证书来进行校验的,而签发方的证书的可信是由上一层签发方的证...

2018-07-29 23:03:29 3287 1

原创 TLS初探(1)概述

目前并不打算详细研究TLS协议,初步调查了一下有了大致的印象,简单步骤如上图所示,归结起来大致如下: 首先客户端与服务器端握手,其中包含有协商的加密套件、随机数等信息; 服务器向终端下发证书,终端进行证书校验,判断其是否可信; 如果要求双向认证,则客户端也需要向服务器提供证书,服务器根据证书进行校验,从而确认终端身份 客户端与服务器端分别利用证书中的公钥以及...

2018-07-28 22:30:02 793

原创 AKA认证初探

       近期工作中遇到了有关SIP AKA认证的相应协议规范,目前在IMS中已得到应用支持,本文主要是希望探索一下AKA认证的具体机制,以及相应算法。为简便起见,暂时先抛开IMS内部架构,从参数着手分析AKA认证。       AKA认证主要还是基于DIGEST认证方式,在此基础上加入了对称加密机制。先简单看一下AKA的流程图与信令:    如图所示,AKA认证流程与DIGEST...

2018-07-23 23:45:52 7683

原创 DIGEST认证面临的密码存储问题

近期在实现HTTP和SIP DIGEST认证,对用户登录时密码的传输与存储问题有了疑问与思考。        根据之前的开发经验,密码肯定是不能直接明文存储在数据库中的,一旦数据库被攻破,不仅本网站的用户信息面临危险,根据用户设置密码的惯性,可能会导致用户很多关联网站的信息也被窃取。为此常用的做法就是使用SALT + HASH的方法,至于HASH算法的话常用的就是MD5/SHA256/SHA5...

2018-07-20 23:48:56 859

原创 MAC系统JAVA与Android方向常用开发与管理软件

最近重装了Mac系统,主要还是由于之前管理太乱,也懒得去整理,干脆重新安装得了,正好整理一下常用工具。必不可少的XCode:无论你是否开发iOS,但是XCode安装后会附带着安装Git等一系列常用软件。 万能的homebrew:使用 Homebrew安装 Apple 没有预装但 你需要的东西,很多Unix工具都可以使用它进行安装管理升级,以后常用的工具建议先使用brew search进行搜索...

2018-07-17 23:08:53 234

原创 Mac重装系统提示“未能创建用于APFS安装的预启动宗卷”

15年入手的Mac Pro一转眼3年过去了,系统虽然没有任何卡顿现象,但是由于平时开发安装的乱七八造的各种东西分散在各个地方,实在是懒得再清理,于是简单备份了一下重要文件,就准备开启重装之旅。网上一查资料,如此简单:重启、抹盘、重装三步走(https://support.apple.com/zh-cn/HT204904)。但是!第一次进行到重装时,提示“安装需要下载重要内容,该内容此时无法...

2018-07-17 22:03:25 48298 3

原创 《Learn You Some Erlang for Great Good!》的学习笔记(九)

erlang并发进程的三个要素:1. 创建进程 2.发送消息 3. 接收消息

2016-09-24 12:08:55 499

原创 《Learn You Some Erlang for Great Good!》的学习笔记(八)

erlang中的错误处理

2016-09-21 10:46:11 513

原创 《Learn You Some Erlang for Great Good!》的学习笔记(七)

高阶函数

2016-09-18 17:21:17 388

原创 《Learn You Some Erlang for Great Good!》的学习笔记(六)

erlang递归

2016-09-18 16:05:48 375

原创 《Learn You Some Erlang for Great Good!》的学习笔记(五)

erlang中的条件判断,包括guards、if和case of

2016-09-18 09:53:19 369

原创 Spring Boot 初体验

以前在项目中,多多少少接触了一些SpringMVC,但是没有系统的学习过,知识太过于零散,最近正好打算抽空复习一下这边的知识。在搭建项目时,发现SpringMVC的各种包太凌乱了,一个完整的项目需要各种配置文件以及各种依赖Jar包,有的甚至很难说出具体的功能。正考虑着吐槽一番,忽然发现了Spring Boot,完全符合Convention Over Configuration的思想,而且和现在倡导的

2016-09-07 19:59:39 1053

原创 《Learn You Some Erlang for Great Good!》的学习笔记(四)

前面我们都是在erlang shell下进行的编程,然而我们最终编程是希望以文件的格式来保存、运行代码,为此,我们需要了解模块。       模块简单来说就是一系列函数的集合,erlang中所有的函数都需要定义在模块之中,你其实已经用到模块了,只是有可能你还没有注意到。前面提到过的BIFs(内建函数),如hd、tl等实际上属于erlang模块,只不过“erlang:”可以被省略。正常调用函数的

2016-01-31 15:29:27 740

原创 《Learn You Some Erlang for Great Good!》的学习笔记(三)

和其它编程语言不同,Erlang对二进制的处理很简单,大部分时候你只需要使用模式匹配"="。erlang最早也就是为电信应用所设计的,所以位处理可以说是它的看家本领,下面就来具体了解一下。       假设你想存储橘黄色的RBG颜色,一般会使用如下形式:              其中">"就是基本的位操作语法,上面的语法就可以解释为,将橘黄色的二进制值保存至24位的存储空间之中。

2016-01-24 21:50:15 577

原创 《Learn You Some Erlang for Great Good!》的学习笔记(二)

和学习其它语言类似,目前我们还没有到直接编程的地步,首先从简单的熟悉Erlang Shell开始,枯燥的介绍就不多说了,在linux/mac环境下,直接输入erl既可进入erlang shell。但这里有个小技巧值得介绍一下,在shell中输入li,接着按下TAB键,他就会自动补全成lists:,紧接着如果再次按下TAB键,就会将lists模块下的所有函数全部打印出来。对于shell的常用命令,可

2016-01-23 22:56:37 611

原创 《Learn You Some Erlang for Great Good!》的学习笔记(一)

前言:       最近研究推送和XMPP服务器框架时,意外发现了mongooseIM和jabber两款XMPP框架,它们的高并发支持比较吸引我,同时也发现,这两款服务器都是采用Erlang语言来实现的,稍微查了一下,发现国内的相关论坛和资料都不多,普遍的反应也是这个语言的入门难度比较大。最近正好也对函数式编程比较感兴趣,心想着把这个难啃的骨头给搞定之后也许就能一路畅通了。但是,个人比较讨厌看

2016-01-20 21:34:16 1436

原创 使用maven+sonarqube进行Android项目管理(二)

接着上一次的内容,已经了解了从

2014-11-24 20:36:03 494

原创 Android WebView使用注意

这次的项目主要就是L

2014-11-22 21:48:56 518

原创 使用maven+sonarqube进行Android项目管理(一)

鬼子的项目总算告一段落,进入了IT测试阶段。

2014-11-19 22:07:27 1564

egg-simple.zip

egg-init --type=simple 初始话程序,公司网路限制,而且egg-init暂时未找到设置代理的方法,所以只能先这样了。。。

2019-12-05

工作设计文档压缩文件rar

设计文档,工作使用,暂时保存,到时非要写这么多字,太麻烦了

2018-09-05

openfire源码

openfire源码提供,csdn速率还不错,为此备份一下方便后续下载

2018-08-01

Smack 4.2.4源码

Smack源码下载,github公司访问有问题,所以放到csdn上

2018-08-01

jboss 第二部分

JBOSS服务器

2017-01-16

jboss as 7.1.1

jboss

2017-01-16

jboss as 3

jboss服务器第三部分

2017-01-16

jboss modules 1

JBoss AS 7.1.1第一部分

2017-01-16

空空如也

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

TA关注的人

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