avatar
文章
383
标签
67
分类
46

主页
时间轴
标签
分类
关于
ClawHub的技术分享
搜索
主页
时间轴
标签
分类
关于

ClawHub的技术分享

SpringBoot通过拦截器实现授权码拦截
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 需求:个别接口,需要授权码才可以使用,所以要配置拦截器。 首先要实现WebMvcConfigurer接口,Spring的WebMvcConfigurer接口提供了很多方法让我们来定制SpringMVC的配置。如图: 实现代码: 1234567891011121314@Configurationpublic class WebConfigurer implements WebMvcConfigurer { /** * The Auth code interceptor. */ @Autowired private AuthCodeInterceptor authCodeInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authCodeInterceptor).addPathPatterns("/ ...
Maven版本号管理及多模块项目统一修改版本号
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club Maven版本管理X,Y,Z分别表示主版本号,次版本号,补丁版本号。主版本号为0时,表示是开发阶段的版本号管理。 版本号的递增原则 主版本号,当有非兼容性的变更时,递增主版本号; 次版本号,当以可向后兼容的方式增加了功能时,递增次版本号,以及 补丁版本号,当有向后兼容的bug修复时,递增补丁版本号。 预发布和构建元数据的附加标签可用作主版本、次版本和补丁版的扩展。 snapshot与release snapshot版本代表不稳定、尚处于开发中的版本,即快照版本。 release版本代表功能趋于稳定、当前更新停止,可以用于发行的版本。release 版本一旦发布,就不可改变。 多模块统一修改版本号在顶级 Module 中添加插件123456789101112<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <ar ...
JAVA操作commons-compress打zip包
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 引入maven依赖: 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.9</version> </dependency> 打包将path文件夹下所有文件都打包到out文件中。 12345678910111213141516171819202122232425262728293031/** * Do zip pack. * * @param path the path * @param out the out * @throws IOException the io exception */ public static void doZipPack(Path path, ...
JAVA批量删除文件夹及其子文件-统计文件夹下所有文件数量-walkFileTree
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club walkFileTreeNIO用来操作文件的API用起来是很舒服的,特别是这个walkFileTree静态方法: 1234public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor) start开始的文件,也就是你要操作的文件夹 options 配置遍历的选项,一般用EnumSet.of(FileVisitOption.FOLLOW_LINKS)遵循符号链接填充。 maxDepth迭代的最大深度 visitor要为每个文件调用的文件访问器,一般使用SimpleFileVisitor,因为可以任意实现自己想要使用的方法,其实现了Fi ...
JAVA使用FTP远程创建多级文件夹
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club java使用ftp是没有提供创建多级文件夹的能力的,所以只能自己封装实现:这里引用了commons-net Maven依赖: 1234567<!-- https://mvnrepository.com/artifact/commons-net/commons-net --><dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version></dependency> 创建多级目录FTP远程进入多层目录文件,如果已存在该目录文件,则不创建,如果无,则循环创建多层目录文件,具体源码: 12345678910111213141516171819202122232425262728/** * FTP远程进入多层目录文件,如果已存在该目录文件,则不创建,如果无,则循环创建多层目录文件 ...
LMDB封装的本地持久化队列与BDB持久化队列性能对比
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 这几天一直研究怎么将LMDB作为持久化队列,今儿终于出来了一个简单的版本,以前用到的本地持久化队列是BDB封装的,虽然已经很稳定了,但是技术就应该有好的点子就去尝试一下,万一真的很不错呢。 经过简单的测试,效果真的还是可以的: 入队文件:110,592 字节;时间单位为纳秒。//不手动执行 bdbQueue.sync()方法,测试结果bdb offer 耗时:303738lmdb offer 耗时:323650bdb poll 耗时:446820lmdb poll 耗时:42868//手动执行 bdbQueue.sync()方法,测试结果bdb offer 耗时:6290361lmdb offer 耗时:386631bdb poll 耗时:432605lmdb poll 耗时:67527 从结果中可以看出,lmdb的读性能确实很好,写性能与BDB基本持平(当然是不手动执行DBD的sync命令,同步写入磁盘)。 封装的队列源码已经上传至github:https://github.com/ClawHub ...
JAVA使用LMDB当作本地持久化队列
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 项目中使用BDB作为本地持久化缓存,效果很稳定,最近事情比较少,所以在研究能不能将LMDB改成本地持久化队列,根据网上收集的一些性能报告,LMDB还是优于BDB的,参考:LMDB简介。 既然是本地持久化队列,首先是本地持久化,LMDB是支持的;其次是队列,先进先出,那就需要指针操作,即key-val中,key为指针位。 开搞~首先解决LMDB底层操作,在这引入lmdbjava的maven依赖: 12345<dependency> <groupId>org.lmdbjava</groupId> <artifactId>lmdbjava</artifactId> <version>0.7.0</version></dependency> 操作LMDB的相关方法:因为是测试,也没有规范相关代码,配置项也没有抽出。 12345678910111213141516171819202122232425262728293031323334353 ...
JAVA-BDB中使用Kyro序列化框架
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club JAVA中使用BDB默认是使用JAVA自带的序列化,通过继承Kryo序列化框架,可以提升一些性能。在创建com.sleepycat.collections.StoredSortedMap对象的时候,要指定键值对的序列化方式,在这个地方,切入Kryo序列化框架: 12345678public StoredSortedMap(Database database, EntryBinding<K> keyBinding, EntryBinding<V> valueBinding, boolean writeAllowed) { super(new DataView(database, keyBinding, valueBinding, null, writeAllowed, null)); } ...
Java四种引用类型
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club Java四种引用类型强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference) 强引用Java中默认声明的就是强引用,只要强引用存在,垃圾回收器将永远不会回收被引用的对象。 软引用软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。java.lang.ref.SoftReference 弱引用无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收java.lang.ref.WeakReference 虚引用虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,虚引用必须要和 ReferenceQueue 引用队列一起使用.java.lang.ref.PhantomReference 引用队列(ReferenceQu ...
带过期时间的Map-ExpiringMap
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 有的时候,一些需求过于简单,不必要用很复杂的方式解决,比如不引入中间件。这个ExpiringMap就是其中的一个产物,当然,单机环境下它仍然有自己的用途。ExpiringMap包含一个工作线程,这个线程定期扫描现有的键值对中,是否有过期的数据,如果有的话就删除,并且支持实现过期时监听事件。源码相对来说比较简单,是mina中的一个工具类: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813 ...
1…222324…39
avatar
ClawHub
ClawHub的技术分享,记录学习中的点点滴滴!
文章
383
标签
67
分类
46
Follow Me
公告
奋斗!
最新文章
以精准营销为例梳理短信业务
以精准营销为例梳理短信业务2023-10-16
小程序商品库存及限购优化改造
小程序商品库存及限购优化改造2023-10-16
从恶意刷单到小程序下单流程优化
从恶意刷单到小程序下单流程优化2023-10-16
从红包裂变活动了解活动业务
从红包裂变活动了解活动业务2023-09-27
从服务提醒单了解商机提醒业务
从服务提醒单了解商机提醒业务2023-09-23
标签
Golanghexo分布式微服务业务梳理小程序下单商机提醒活动短信nodeelectronvue测试PostmanJasper打印模板ExcelSQL微信ElasticSearchSQL优化福利资源问题与解决Excel上传OOMMap.computeIfAbsentAsyncTransmittableThreadLocalLists.partition随笔面试一键分发平台JavaJAVA基础java泛型arthasJAVA基础集合框架java并发容器源码分析
归档
  • 十月 20233
  • 九月 20233
  • 十二月 20223
  • 十一月 20223
  • 七月 20222
  • 六月 202210
  • 五月 202211
  • 四月 20222
©2019 - 2023 By ClawHub
好好学习 天天向上
搜索