自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lqadam的博客

喝口白酒,交个朋友

  • 博客(171)
  • 资源 (7)
  • 收藏
  • 关注

原创 自定义线程池如何捕获线程异常

最近写了个自定义的线程池,用于处理持续时间短、频次高的任务,逻辑上借鉴了CachedThreadPool,使用SynchronousQueue 作为任务的缓存队列,即实现没有任务进入队里,只要有空闲线程就执行任务。此外还自定义了拒接执行策略,由默认的异常拒绝执行,改为CallerRunsPolicy策略,并加了一行日志用作监控告警。自定义线程池不是重点,本文的重点在线程池捕获异常的问题。在实现该线程池的时候,笔者为其设置了一个ThreadFacotry,其中实现了UncaughtExceptionHan

2020-06-30 00:30:09 1501

原创 The Clean Coder 代码整洁之道 程序员的职业素养(不是 The Clean Code)

The Clean Coder 是The Clean Code的姊妹篇,由同一个作者编写,The Clean Code主要讲述如何编写高质量的代码,而The Clean Coder则关于于人,讲述如何做一个”专业“的编码人员。以下是我看完此书的一些笔记,做个小记。持续重构:无论什么时候看到坏味道的代码,重构它,不要以”怕影响线上功能“为理由,如果想保证代码的高质量,只有不断的,无情的重构。同...

2019-12-14 20:54:37 1219

原创 枚举类 注解校验

文章目录前提知识1. 对离散值(非枚举)的校验校验注解校验实现使用示例缺点2. 对枚举的校验校验注解校验实现使用示例缺点与一丢丢改进使用示例校验器实现补充内容java validation内没有对枚举的校验工具,但是离散的枚举值校验确实是有必要的,这里列两种枚举的校验方法,实际大同小异。前提知识首先,javax.validation包是提供了方便的自定义校验的入口的,就是javax.vali...

2019-12-08 16:32:08 3090

转载 git 重写提交记录的手段

引自https://www.atlassian.com/git/tutorials/rewriting-historygit commit --amend这个命令可以快速弥补第一次提交后发现有遗漏,然后补充的情况,这个命令不会创建新的commit,而是将之前的commit替换为新的git rebase -iCommands:p, pick = use commitr, reword...

2019-12-08 16:30:16 344

转载 ConcurrentLinkedQueue VS LinkedBlockingQueue

https://stackoverflow.com/questions/1426342/need-a-queue-that-can-support-multiple-readers/The major difference between ConcurrentLinkedQueue and LinkedBLockingQueue is its throughput. Under moderat...

2019-12-08 16:25:32 185

原创 重构:改善既有代码的设计 笔记

文章目录重构的方式和流程代码的坏味道(何时重构)重构手法重新组织函数对象之间搬移特性重新组织数据简化条件表达式简化函数调用处理概括关系个人感觉很有用的重构手法重构的方式和流程两顶帽子:开发的时候,开发人员经常在两种状态间切换,或者带着重构的帽子重构代码,或者带着开发的帽子新增代码小步前进:由于重构不改变现有代码的逻辑,所以对于一个大功能,可以先重构一部分,测试,再接着重构一部分做好测试:...

2019-12-08 16:21:40 255

原创 MySql 日志 简单总结,很简单的那种

文章目录参考:undo log作用:如何做:redo log作用如何做LSN 和 CheckPoint作用binlog作用如何做redo log和binlog 的区别参考:https://www.cnblogs.com/wy123/p/8365234.htmlhttps://www.cnblogs.com/wy123/p/8353245.htmlhttps://www.cnblogs.c...

2019-12-08 16:19:27 137

原创 Log Struct Merge Tree

文章目录参考LSM Tree 和B+Tree的不同之处LSM Tree 基本算法合并操作LSM Tree的问题针对上述问题 LSM Tree工程实践上的优化参考https://wiesen.github.io/post/leveldb-introduction/http://www.benstopford.com/2015/02/14/log-structured-merge-trees/...

2019-12-08 16:18:31 397

原创 使用BigDecimal还可能有精度问题吗

据以往知识和行业经验,因为二进制问题,doubel无法精确表示10进制小数,这个时候可以使用BigDecimal类型来规避。但是BigDecimal就没有精度问题了么?就最近的实践,发现一种情况,即使使用了BigDecimal,也可能有精度问题,当然问题的症症结不是因为BigDecimal,听往下看。这个问题的本质,还是使用了double,这里记录下。问题复现如下:BigDecimal ...

2019-12-08 16:16:05 642

原创 缓存的使用模式

缓存的使用模式最近在看公司的库存编年史,看到公司在库存上的架构演变,看到关于缓存的地方,发现对于缓存的设计有点忘了,整理总结一下。cache aside 最常见就是最常见的有缓存读缓存,没缓存读db,回写缓存,更新db需要失效缓存问题这里需要注意的是并发情况下的顺序问题先更新db,后更新缓存:后更新,而不是失效缓存的问题是 如果有并发的写的话,因为回写缓存的网络延迟不好控制,会存在先...

2019-12-08 16:14:15 347

原创 Spring AOP拾遗

这里不介绍基本的AOP,只记录我在学习过程中自己发现需要注意的点。需要注意的点1. 启用AOPAOP需要显式的启用才能使用,除了在切面编程类上声明@Aspect之外,如果使用Java config的配置方式,需要在配置类上注明@EnableAspectJAutoProxy.如果是xml配置的话,需要使用<aop:config/>然后Aop的类,也需要通过声明@compent之类...

2019-02-13 11:51:26 141

原创 使用jdk8 time API的日期工具类

这是日期工具类的第二篇,使用新API来做的。现阶段Java8的新日期API,收到的支持并不太多,mybatis不支持对LocalDate,LocalDateTime的直接读写,需要再引入一个库,使用新的typeHandler才行,数据库内,似乎对LocaDate存储也有问题,使用不当可能引起日期不对的情况,具体了解的不多,所以现阶段这个库的普及情况还有待考证。import java.time.*...

2019-01-29 20:48:09 842

原创 使用Date CalendarAPI的日期工具类

下面是一个使用Date,Calendar类实现的日期的工具类,可能有些地方还需要作调整,现在是凭感觉写的,之后还会写一个使用Java8新日期API的工具类,二者功能相同。import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Da...

2019-01-29 20:45:01 146

原创 打点日志的一个实现

所谓打点日志,是指用于数据统计的日志,一般前端会有打点的方法,而后端也会有类似需求。按理说,后端的一般的日志也可以做到打点的效果,但是因为一般的日志离散,风格不统一,得到的日志格式不好,不容易切分统计,所以就会想要一个独立的打点日志来实现打点。实现打点日志的方法通过日志模版,增加一种类型的打点日志,则替换模版中的占位符,重新生成一遍日志的配置文件,之后热更新日志配置。使用日志框架API...

2019-01-29 20:34:50 9676

原创 零拷贝

今日看rocketMQ的设计,读到如何提高broker的发送性能,看到了使用mmp(文件内存映射)的技术,零拷贝,提高了数据从文件到内存再到网络的传输效率。这里有点迷糊,所以详细google了一把。特写下来留作记录。内容都是来自于已有的东西,都放到后文的参考文档里面,参考文档比我详细多了,有图有解释,有理论,甚至有代码,如果能看参考文档的原文的话,建议看原文。概念澄清“零拷贝”:在...

2018-12-14 23:27:11 1406 1

原创 pgrep,pkill,xargs以及ps

pgrepman pgrep或者man pkill时,发现二者的说明是在一起的,二者参数说明有很多共同的地方,这里为了不混淆,分开说作用通过进程名找进程pid用法pgrep [-Lafilnoqvx] [-F pidfile] [-G gid] [-P ppid] [-U uid] [-d delim] [-g pgrp] [-t tty] [-u euid] pattern说明...

2018-12-12 09:32:25 1415

原创 sort,uniq,netstat以及top

文章目录sort 排序参数-k 参数说明sort 举例首先按第三列按数字序倒排,然后按第一列按字典序倒排uniq参数netstat参数top参数交互命令sort 排序sort默认是按ascii升序排序参数-b:忽略前导空格-n:按数字排序,而不是字典序-t:指定分隔符,将一行内容分割成若干列-r:反序-u:去重,注意,不一定是整行不同才去重,而是按指定的key去重的,也就是依照-k...

2018-11-26 23:25:37 897

原创 awk使用

文章目录关键参数awk 格式字段说明awk 格式举例统计当前目录下所有文件大小awk 特殊值awk 特殊值举例统计两个文件的差异列出当前目录下文件,按\t分割awk 正则awk 正则举例判断tcp的连接数awk 数组awk 数组举例统计tcp链接,各种状态的个数awk 各种例子关键参数-F:指定分隔符,将每行输入按分隔符截成若干段,可指定多个分隔符-f:指定脚本,脚本可以内含所有awk的参...

2018-11-26 23:24:28 162

原创 Mybatis 数据源配置(多数据源类似)

import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import ...

2018-11-21 23:33:00 246

原创 Java8 新时间API使用示例

import org.junit.Assert;import org.junit.Test;import java.time.Duration;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;import java.time.temporal.ChronoField;...

2018-11-21 23:28:21 172

原创 中文拼音排序的两种方法

最近遇到了中文排序的需求,所谓中文排序,一般都是说按中文对应的拼音字母排序,经过网上查询了解,总结一下,有下面两种方式,一一介绍下:数据库中排序能在数据库中解决的问题,自然放到数据库中解决,尤其排序一般和分页一起出现,如果能在数据库层面做掉,从查询性能和代码的简洁性上讲都是最好的,那么如何在数据库层面对中文进行排序呢?其实,文字的排序,就是按代表文字的,背后的编码排序,UTF-8下,中...

2018-09-16 01:49:38 17439 1

原创 lombok 子类中如何使用@Builder

lombok大家都知道,在使用POJO过程中,它给我们带来了很多便利,省下大量写get、set方法、构造器、equal、toString方法的时间。除此之外,通过@Builder注解,lombok还可以方便的时间建造者模式。但是,在使用@Builder过程中,我发现了一问题:子类的Builder对象没有父类的属性。这在使用上造成了一定的问题。几番搜索,对于这个问题,找到了如下解法,解法的链...

2018-09-16 00:58:31 17991 2

原创 SXSSFWorkbook写入大量数据的两点处理

初用SXSSFWorkbook,感觉以读写大量数据为买点的SXSSFWorkbook,提供出了两个API,作为对大量数据处理的方式。这里对这两个API做一个小总结。构造入参rowAccessWindowSize 这个参数,会指定一个sheet可读取的row数目,超过该数目的row,会被写入到磁盘文件中,进而不能在通过getRow访问到,通过这种方式,内存使用空间就缩小很多了。 需...

2018-08-05 18:03:04 9569 1

原创 文件下载文件名乱码的几个问题

Java Web后端做文件的下载,各个浏览器之间有兼容性问题,下载文件的文件名可能有乱码,下面总结几个乱码问题和常见解决办法:firefox文件名乱码的问题:一般下载文件,都会指明Content-disposition,形如下response.setHeader("Content-disposition", "attachment;filename="+URLEncoder...

2018-08-05 17:42:13 4395 1

原创 linux 查看日志的简单命令

最近,经常上服务器查看日志,所以查看日志的命令,越来越上手了headtail技巧grep linux的文字查找命令head、tail显示输出文本的前几行或者后几行 格式 head -5/tail -10技巧查看指定行开始的若干行 tail -n +指定行号 文件|head -若干行grep linux的文字查找命令命令格式 grep [-参数] "查找字符串" <需要查找的文件> 常用

2018-06-12 17:01:04 227

原创 @EnableWebMvc如何禁止@EnableAutoConfiguration

今天一直纠结于一个问题,问题的来源是解析@EnableWebMvc 、WebMvcConfigurationSupport和WebMvcConfigurationAdapter 博客中总结出来的三点使用@EnableWebMvc的规则: @EnableWebMvc+extends WebMvcConfigurationAdapter,在扩展的类中重写父类的方法即可,这种方式会屏...

2018-06-09 23:10:38 3481 4

原创 maven archetype 自定义

archetype是什么如何创建archetype(简易版,标准版请看后面#更多问题)第一步第二步第三步如何使用archetype更多问题未解决的问题参考来源archetype是什么archetype是maven的工程原型(模版),也就是说,使用archetype,可以将maven中已存在的工程结构和配置套用到新创建的工程上。 一般用idea创建mav...

2018-06-06 17:54:06 2530

原创 SQL语句:传入一个集合A,返回A中不在数据库表中的数据

问题解决方法关联讨论:写代码碰到一个不知道用SQL语句怎么表示的逻辑问题问题如下,现有一个集合A,我想查数据库,查出A中有哪些元素,不在数据库的表里,并且把这些元素返回给我(自然,返回结果是A的子集)。解决方法思路是使用临时表: 将集合A的所有元素拼成一个临时表,然后使用not in,查找数据库表内所有不在临时表中的数据。 写MyBatis的代码...

2018-05-31 20:07:58 4279 3

原创 Shiro使用总结

Shiro安全框架做了什么Shiro起步走:如何使用Maven依赖配置文件的修改Shiro自身配置特异性设置Shiro 形式化流程的总结用户登录流程权限校验流程 近期写一个权限管理相关的东西,突然想结合业界的安全框架写,然后搜了一下,发现了Shiro和Spring Security,通过搜索比较二者异同(学习难度,功能强大程度,使用广泛度),决定首先...

2018-05-31 19:51:57 241

原创 Think in Java 阅读拾遗

1. 类内成员变量不初始化,会有默认值,方法内临时变量不初始化,没有默认值,会报错2. 关于无符号右移,对于byte、short类型的负数,会先转化成int再右移。这种流程下,可能会出现因为补码表示出错3. 关联2,&amp;gt;&amp;gt;&amp;gt;=最后的‘=’,强制转化是直接将移位后的int截取后若干位给byte或者short的,所以也会导致移位错误的问题4. 关联2,对cha...

2018-05-24 22:13:09 258

原创 ZooKeeper 主要特点记录 和主要应用场景

ZK 特点Zk抽象出的角色ZK的应用ZK 特点ZooKeeper通过自有的ZAB协议实现了多个节点的分布一致性,在此基础上,ZK还实现了如下特性: 1. version:每一个节点,拥有自身节点的修改版本、acl版本、子节点增删的版本,这三个版本有利于实现ZK集群的原子性,实现锁的功能 2. 对节点更改的监听watcher:watcher是通知一次后就作废的,需要反复注册,注册后,可以监听

2018-03-15 15:52:29 385

原创 ZAB 一致性协议 以及和Raft一致性协议的对比

ZAB 协议流程数据同步ZAB 崩溃恢复阶段 选主策略ZAB 崩溃恢复的一个问题ZAB和Raft一致性协议的对比日志同步流程不同ZAB 协议流程数据同步客户端连接到任意服务端,被重定向到leader上,向leader发送事务请求,leader使用类似二阶段提交的步骤,先向follower发送事务请求,待接到过半follower的ack后,leader自身提交事务,再发送提交这个事务的请求

2018-03-14 13:57:51 5416

原创 Raft 一致性算法

一般操作选主算法日志同步配置变更参考 Redis内使用了Raft一致性算法做集群的选主和哨兵的选主,后来又了解了一下,作如下笔记。 笔记内主要回答了一些自己不会的点,Raft的详细说明,可从参考的两篇博文中得知更多。一般操作当客户端连接集群的任意节点的时候,任意节点会把客户端的连接导向到当前的leader上,所有操作在leader上完成。 当客户端发来请求的时候,leader先在

2018-03-11 16:54:04 340

原创 logback框架使用误区 如何将所有包的ERROR级别日志集中打印到一个日志文件中

早就想写这个事情了,起因是自己想写一个东西,其中使用logback日志框架记录日志打算 将所有包的ERROR及以上级别日志打到一个文件中,各个包下的日志打到对应包的文件中。 起初写的xml配置类似于这样:<!-- 其中一个appender,其他appender与其相同 ,只有name、file和fileNamePattern不同--><appender name="ALL-ERROR" clas

2018-03-03 23:48:25 4367

原创 redis 排序

sort命令可对集合、列表和有序集合排序,对有序集合排序,默认使用集合的key而不是score作为排序依据命令格式:SORT &lt;key&gt; [ALPHA] [ASC|DESC] [BY &lt;by-pattern&gt;] [LIMIT &lt;offset&gt; &lt;count&gt;] [GET &lt;get-pattern&gt; [...&lt;get-patte...

2018-03-03 13:03:22 1059

原创 redis 慢查询、位数组和事务

慢查询日志配置慢查询日志慢查询日志查看慢查询日志实现monitor位数组命令实现BITCOUNT的实现事务事务的执行流程实现watch命令慢查询日志配置慢查询日志选项slowlog-log-slower-than用于配置执行时间大于多少毫秒的命令会记录慢查询日志 选项slowlog-max-len用于配置服务器最多保存多少条慢查询...

2018-03-03 13:02:43 253

原创 redis lua脚本相关知识点

redis的lua环境实现流程EVAL执行原理命令对于脚本的复制redis的lua环境实现流程服务器调用C的API创建一个Lua环境将一些基础函数库导入到Lua环境中,并删除能载入外部文件的函数loadfile创建redis函数的全局表格。函数包含了redis.call和redis.pcall、redis计算has值的函数,redis日志函数和返回错误的函数使...

2018-03-03 13:00:39 243

原创 redis 发布与订阅

命令列举SUBSCRIBE &lt;channel [channel]&gt;:订阅频道,以接收发送到这个频道的消息PUBLISH &lt;channel&gt; &lt;message&gt;: 该命令会向频道发送消息,所有订阅频道的订阅者都会收到消息PSUBSCRIBE &lt;channel_pattern&gt;:这是接受正则表达式的SUBSCRIBE命令,可以订阅符合某个模式的...

2018-03-03 12:58:40 206

原创 redis 集群 相关知识点

节点clusterNode结构体clusterLink结构体clusterState结构体集群分片槽信息存储计算键属于哪个槽集群分片后键值的操作集群分片后,数据库使用的不同重新分片:使用redis-trib redis集群管理软件重新分片期间的键值对操作ASK错误和MOVED错误集群复制和故障转移集群的复制集群的故障检测集群的故障转移集群的消息...

2018-03-03 12:57:59 335

原创 redis sentinel(哨兵)

Sentinel原理Sentinel 监视流程sentinel检查下线主观下线:客观下线:故障转移:选举领头sentinel:故障转移 Sentinel是redis高可用的方案,通过设立一个或多个Sentinel监视服务器,可以在主服务器下线的时候及时选举切换到从服务器,保证可用性。 Sentinel本身也是服务器,只是运行在特殊模式下,监听其他...

2018-03-03 12:56:47 328

office 2013 word IME输入法修复补丁2

office 2013 word IME输入法修复补丁

2016-03-29

office 2013 word IME输入法修复补丁

office 2013 word IME输入法修复补丁

2016-03-29

车牌识别MFC 书签

车牌识别MFC 书签 联动 MFC 车牌识别 小学期作业 part4(接收端+识别部分)

2015-08-25

车牌识别 接收端+图像识别 VS2013用part3 注意事项见注释

小学期作业,这是另一部分,车牌识别的接收端以及车牌识别部分,MFC的,涉及CSocket的使用,图像文件的接受,MFC控件使用,OpenCV下部分图像处理的内容。

2015-08-25

车牌识别 接收端+图像识别 VS2013用part2 注意事项见注释

小学期作业,这是另一部分,车牌识别的接收端以及车牌识别部分,MFC的,涉及CSocket的使用,图像文件的接受,MFC控件使用,OpenCV下部分图像处理的内容。

2015-08-24

车牌识别 接收端+图像识别 VS2013用part1 注意事项见注释

小学期作业,这是另一部分,车牌识别的接收端以及车牌识别部分,MFC的,涉及CSocket的使用,图像文件的接受,MFC控件使用,OpenCV下部分图像处理的内容。

2015-08-24

车牌识别 发送端

小学期作业,这是一部分,车牌识别的发送端,MFC的,涉及CSocket的使用,图像文件的发送,列表控件条目的增删等。

2015-07-17

空空如也

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

TA关注的人

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