java
OK_boom
大龄搬砖工,酷爱计算机技术,java/C#/android/free pascal/C++。
展开
-
用java实现工程BOM展开
写个测试,传入根bom id和数量,则返回此bom所有原材料的单机用量。上面代码已经考虑了生效日期和失效日期。原创 2023-01-05 18:08:03 · 351 阅读 · 0 评论 -
备忘一下配置@Cacheable的失效时间(Redis指定某些Cache Key的失效时间)
所有配置在生成RedisCacheManager之前就应该指定(在Builder里面),下面代码是指定Builder的默认配置和指定某些key的配置的 代码原创 2022-08-06 10:26:46 · 1397 阅读 · 0 评论 -
Pagehelper无法处理select for update以及解决方法
目录1、新的counter分析器2、新的MySqlDialect3、在适当的时机注册新的言语处理器 select for update 应该不少人会用到,用于更新前的锁定,按理来讲PageHelper只是查询分页,所以它没考虑到也是可以理解的(版本5.3.0),具体问题:https://github.com/pagehelper/Mybatis-PageHelper/issues/671Raw sql:select * from stock_tbl st where commodity_code原创 2022-05-20 16:07:25 · 489 阅读 · 0 评论 -
为maven配置快照(snapshot)的远程仓库
很多时候如果你要信用快照版本的依赖,常常拉取失败,我们可以为快照版本指定一个容易访问的远程仓库,在pom里面加上:<repositories> <repository> <id>apache.snapshots</id> <name>Apache Development Snapshot Repository</name> <url>https://repositor原创 2022-05-07 17:44:00 · 2963 阅读 · 0 评论 -
JVM进程的内存模型(1.8)
内存模型(概念)以JVM进程的角度看它的内存模型如下,左手的本地代码、本地栈以及右边的运行时刻数据区(Native heap)均为此进程的本地内存。由于JVM虚拟机主要是加载java代码并由jit编译运行,所以java相关的数据全部在native heap里面。本地栈、本地代码由jvm进程的内存管理器管理本地和虚拟有相似处:状态线程私有,执行前先将必要数据压栈(参数、寄存器),执行完弹出并扫除局部数据堆外内存有哪些,如果严格来讲除了红色框的java heap其他都是堆外内存红色的java h原创 2022-04-18 15:02:26 · 886 阅读 · 0 评论 -
Jackson的自定义反序列化
下面有个完整示例:1、定义反序列化处理器一般处理器都继承于StdDeserializer,如下,重写deserialize,根据jsonNode里面的一些关键数值动态生成LogMessage的内容,下面代码就根据data的每个item的properties的SClass,生成不同的Message实例。/** * Created by rocklee on 2022/2/6 12:15 */public class LogMessageDeserializer extends StdDeseria原创 2022-02-06 12:55:43 · 3387 阅读 · 0 评论 -
JAVA8用CompletableFuture进行多任务操作并收集运行结果
首先要处理的数据可以很大的,我们用分批方法将大数据按指定每份的数量切成若干份,每份再跑一个任务,最后等待所有任务结果后收集各任务执行的结果。Map<String,String> serverMap= Arrays.stream(serverToCheck).collect(Collectors.toMap(i->i.split(",")[0], i->i.split(",")[1],(x, y) -> y,LinkedHashMap::new));原创 2022-01-20 10:46:59 · 3247 阅读 · 0 评论 -
QLExpress基本语法
QLExpress基本语法一、背景介绍由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神,于2012年开源。QLExpress脚本引擎被广泛应用在阿里的电商业务场景,具有以下的一些特性:1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。2、高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池原创 2021-08-06 11:54:03 · 5515 阅读 · 0 评论 -
用flatmap进行List<map>的统计
如下例子,map列表里面,每个map相同的key的value统计,可以用flatmap将每个list item转为stream再汇到父stream中。private static class Mapx extends HashMap<String,Integer> { } @org.junit.Test public void testSum(){ Mapx m1=new Mapx(); m1.put("test1",1); m1.put("test原创 2021-06-15 12:03:39 · 611 阅读 · 0 评论 -
java 的本地文件到URI/URL格式的转换
@Test public void testURL() throws MalformedURLException { //本地文件转URI URI uri=new File("d:/temp/a.txt").toURI(); //本地文件转URL URL url=new File("d:/temp/a.txt").toURI().toURL(); System.out.println(uri); System.out.println(url); }.原创 2021-05-17 09:44:56 · 4053 阅读 · 0 评论 -
用Java Stream的Reduce实现MAX,MIN或查找特定的记录
实现找key长度最小的记录 List<Bean> data=initList(); Bean bean=data.stream().reduce((a,b)->a.key.length()<b.key.length()?a:b).orElse(null); System.out.println(bean);其他的类推原创 2020-12-09 11:57:16 · 359 阅读 · 0 评论 -
maven子模块的类访问子模块的资源
有一个需求就是在maven子模块里面访问放在resource下的excel用来作为模板生成excel,经过一翻尝试后发现只有通过URL来访问资源文件,才能在调试状态和打包状态均能正确访问子模块的资源文件.资源放置位置:那么通过以下代码可以访问该excel文档:URL templateFileURL = ProdoutDetService.class.getClassLoader().getResource("excel-template/prodout-smt.xlsx"); ...原创 2020-12-04 10:34:02 · 1265 阅读 · 0 评论 -
Android 数据绑定的RecyclerView通用适配器
RecyclerView的适配器编码方式千篇一律,那就做个通用的吧, 调用简单:MyRecycleAdapter.setupRecycleView(binding.lstByStation);binding.lstByStation.setVisibility(View.GONE);MyDataBindingRecycleAdapter<StationData> lstStationAdapter= new MyDataBindingRecycleAdapte..原创 2020-10-10 10:44:02 · 568 阅读 · 0 评论 -
Caffeine Cache实战
Caffeine简介Caffeine是基于JAVA 1.8 Version的高性能缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google Guava Cache设计经验上改进的成果。并发测试官方性能比较:可以清楚的看到Caffeine效率明显的高于其他缓存。Caffeine可以通过建造者模式灵活的组合以下特性:* 通过异步自动加载实体到缓存中* 基于大小的回收策略* 基于时间...转载 2020-07-03 08:34:08 · 1214 阅读 · 0 评论 -
open-capacity-platform 微服务能力开放平台
open-capacity-platform 微服务能力开放平台简称ocp是基于layui+springcloud的企业级微服务框架(用户权限管理,配置中心管理,应用管理,....),其核心的设计目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,其目标是帮助企业搭建一套类似百度能力开放平台的框架;基于layui前后端分离的企业级微服务架构 兼容sprin...转载 2020-04-30 17:42:33 · 833 阅读 · 0 评论 -
Java8的lambda应用: 将list分组到map的两种实现方法
raw data结构:@Datapublic class GetLastProductByJobsBean implements Serializable { private String jobNo; private Integer operNo; private String createBy; private Date prodDate;}赋值:...原创 2020-04-27 17:13:04 · 2006 阅读 · 0 评论 -
java 的double转BigDecimal的坑
大家都知道java的double由于精度问题会给你挖无数个坑,一般采取的方式都会避免使用,但是android的dbflow对model里面的BigDecimal转换为sqlite table时, field type居然是text.所以,model里面field的属性只能保持double 那么,先测试一下: double d = 3.1415; ...原创 2020-03-03 19:44:29 · 597 阅读 · 0 评论 -
高级开发必须理解的Java中SPI机制
本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。1 SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现...转载 2019-12-30 17:52:51 · 194 阅读 · 0 评论 -
用RegexBuddy编写正则表达式
首先推荐用RegexBuddy调试,比如测试的内容为jQuery112400692341023221108_1574902214110({"rc":0,"rt":6,"svr":183020808,"lt":1});提取前两个数字和json内容写得差不多了,就可利用下面功能生成java代码:结果可以生成java代码:@Test public ...原创 2019-11-28 11:53:36 · 513 阅读 · 0 评论 -
史上最全正则表达式语法,文末附常用表达式!
一、元字符元字符是构造正则表达式的一种基本元素。. :匹配除换行符以外的任意字符w:匹配字母或数字或下划线或汉字s:匹配任意的空白符d:匹配数字b:匹配单词的开始或结束^:匹配字符串的开始$:匹配字符串的结束匹配有abc开头的字符串:abc或者^abc匹配8位数字的QQ号码:^dddddddd$匹配1开头11位数字的手机号码:^1dddddddddd$...转载 2019-11-25 16:40:29 · 660 阅读 · 0 评论 -
java的基本集合
转载 2019-11-25 15:59:10 · 141 阅读 · 0 评论 -
Java泛型类内部如何根据泛型新建实例
如题,若想实现这种功能是不行的, java的泛型不能二次传递,所以不能如new T()的行不通.但可以通过模板方式实现:这个是泛型抽象基类,里面的newInstance是abstract的/** * ModBus访问组件提供 * Created by rocklee on 2019/11/5 15:12 */public abstract class Mod...原创 2019-11-05 16:05:29 · 1520 阅读 · 0 评论 -
maven 指定java版本
不明白有时候自己建的maven module,maven会默认用1.5的版本编译,导致编译出错,在pom.xml里面加上<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <encoding>...原创 2019-07-12 15:09:27 · 13239 阅读 · 0 评论 -
JAVA8 新特性
前言:Java8 已经发布很久了,很多报道表明Java8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus In...转载 2019-07-20 09:07:57 · 114 阅读 · 0 评论 -
Enum枚举的一些用法
public enum LotStatus { Draft("DR"), Deleted("DE"), RAF_Submitted("RS"), RAF_Confirmed("RC"), TRF_Submitted("TS"), TRF_Confirmed("TC"); private final String value; LotStatus(String va...原创 2019-08-01 15:09:30 · 517 阅读 · 0 评论 -
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没...转载 2019-08-20 17:15:18 · 137 阅读 · 0 评论 -
用Collections.synchronizedCollection创建线程安全的集合、列表...
Collection c=Collections.synchronizedCollection(new ArrayList()); List list=Collections.synchronizedList(new ArrayList()); Set s=Collections.synchronizedSet(new HashSet()); Map m=Collections.syn原创 2014-11-28 08:57:21 · 3000 阅读 · 0 评论 -
配置log4j记录druid的sql和慢sql
想将普通sql和慢sql分别记录到不同的日志文件中,网上查的都是人云亦云,通过不断尝试,终于找到答案,就是在log4j为不同的类/包指定日志,用log4j.logger.开头再连接类全名或包作为key指定一组日志输出定义:log4j.logger.druid.sql.Statement=DEBUG,logsql#普通sql不要显示在consolelog4j.addit...原创 2019-05-29 17:53:57 · 1792 阅读 · 0 评论 -
老应用转druid并启用慢sql记录功能
1/在src文件夹下建立db.druid.propertiesdriverClassName=org.postgresql.Driverurl=jdbc:postgresql://yourserver:5432/yourdbusername=youraccountpassword=yourpasswdfilters=stat,wallinitialSize=5maxActive=...原创 2019-05-28 15:35:14 · 1061 阅读 · 0 评论 -
Gson的一些注意事项
Gson与Jackson或fastjson不同的是,它的序列/反序列化是用通过读取类的属性进行的,也就是说,跟getter/setter没什么关系,但要注意下面几点: 1/比如你要处理的类B继承自类A,若A有一属性f1为Object ,而B则将f1定义为XX具体类型,那么如果你不处理的话, gson会报错,说存在两个相同的f1(话说为什么不能智能一点呢?),这...原创 2019-04-12 15:09:38 · 507 阅读 · 0 评论 -
Tomcat9其他电脑无法访问的解决方法
很奇怪的,用netstat -ano查,已经是监听0.0.0.0:80,按道理是接受所有ip的来访,因为服务器本机用ip访问也是没问题的,但其他电脑就不行,后来查资料发现tomcat9安全性提高的, 默认只能本机访问 (是不是多此一举??).解决方法: 修改tomcat目录下的webapps\manager\META-INF\context.xml...原创 2019-04-11 16:12:17 · 2197 阅读 · 0 评论 -
解决Tomcat9乱码终极方法(Eclipse正常, live部署乱码)
手多将tomcat8换成tomcat9,用eclipse调试时一切正常,但发布出去发现乱码了,经过远程调试发现正常的request.getParameter取回的内容不乱,但是用request.getReader()取回的就变怪码.需要作如下修改:1/修改tomcat9\conf\server.xml,定位到Connector 这个session,加上URIEncodin...原创 2019-04-11 15:43:23 · 3451 阅读 · 0 评论 -
DBFlow 进阶: or/and组合查询的使用
为什么使用DBFlow不多介绍, 还有其gradle配置的百度很多资料, 但极少提及如何进行生产的应用,比如写一些or/and一起用的复杂的查询条件, 即使Google也很少查得到, 即使查到的也是低版本的应用,在4.0以上编译有问题. 现在4.0+已经改为用OperatorGroup来描述查询条件了, 如下例子: OperatorGroup op=Opera...原创 2018-12-01 09:46:22 · 2751 阅读 · 1 评论 -
JAVA字符串格式化-String.format()的使用
常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale local...转载 2019-08-22 14:31:16 · 1026 阅读 · 0 评论 -
JAVA 8 通过Stream 对List,Map操作和互转
Stream的原理和Lambda不在这了展开讨论。仅仅做笔记,方便后面查看,熟能生巧:1、Map数据转换为自定义对象的List,例如把map的key,value分别对应Person对象两个属性:List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()...转载 2019-09-17 16:48:11 · 2975 阅读 · 0 评论 -
Java8 stream 统合应用: 取其中字段/分组统计/排序/过滤查找等
用java8的lambda函数式确实简化了很久代码 , 备忘一下:@Override public GetSNMasterDataResponse getSNMasterRecordsByShipPlan(ShipPlan pvShipPlan) { //get sn master table from d365 service D365DownloadSeria...原创 2019-10-10 09:27:55 · 3829 阅读 · 0 评论 -
Jackson自定义转换器
使用jackson进行json和java bean转换时,可以使用注解自定义转换器进行转换。@JsonDeserialize注解源码方法注释中写了,using 方法是作用在method上的。package com.fasterxml.jackson.databind.annotation;import java.lang.annotation.ElementType;imp...转载 2019-10-08 17:26:14 · 3157 阅读 · 0 评论 -
java8 stream与传统写法的性能对比简测
以下对比了用Stream完成去重复和从list<class>中提取其中一个属性的功能与传统的写法作对比,看性能有否差异: 两千万记录去重,一百万取属性:static class Class1 { public String staffId; public String getStaffId() { return staffId; ...原创 2019-09-23 10:00:43 · 927 阅读 · 0 评论 -
java8 list 去重复记录
static class Class1{ public String staffId; public String getStaffId() { return staffId; } public String getStaffName() { return staffName; } public String staf...原创 2019-09-21 10:03:22 · 2548 阅读 · 0 评论 -
Java 8 函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。如定义了一个函数式接口如下:@FunctionalInterfaceinterface GreetingService { void...原创 2019-09-21 09:47:52 · 121 阅读 · 0 评论