java List数据内存分页

原创 2021-12-08 13:33 阅读(1)次
我们常常要对List数据切分和分页,最近客户要求我们调用第三方接口拿到所有数据然后做分页返回给他 们,全量数据拿到后都是在缓存在内存中,这不像查询询数据库有语句支持,于是我们就搞了个List分页的工具类。这里分享一下我们使用的分页工具类。代码其实也是简单的,没什么难度,关键是提供给急需的朋友们。 上代码: ```java import java.util.List; public class ListPageUtil { /** * 页码开始分页 * @param list * @param pageNum 页码 * @...

java stream去重的几种方式

原创 2021-12-01 16:23 阅读(15)次
我们在操作stream时,如果遇到转map时,如果不处理key重复,就会报错Duplicate key,今天就分享一下我们在操作java stream时如何去重,有哪几种方式。 例如我们源数据有,以下很多例子都使用list来操作 ```java List list = new ArrayList(); list.add(new UserInfo(1,"小明",1)); list.add(new UserInfo(2,"小s",2)); list.add(new UserInfo(1,"小明",2)); ``` 如果我们要将上面数据去重,按id转换成map,有三种...

java接口中定义成员变量后会被不同实现类修改,别忘记接口变量默认是public static final

原创 2021-11-18 16:43 阅读(26)次
今天定义了一个接口,它有很多实现类,为了把实现类中的相同的变量抽出去,于是我把它放在了接口类中。 代码如下: 接口代码: ```java public interface ValueHandle { public Map generateModeSupportMap = new HashMap<>(); } ``` 实现类代码: ```java public class DateValueHandle implements ValueHandle { @Override public void afterPropertiesSet() th...

java如何减少if判断让代码优雅一点:采用Map+工厂模式实现

原创 2021-11-18 12:27 阅读(28)次
最近在写一个数据生成工具,代码中需要判断各种数据类型,有一个枚举中定义了很多类型,根据这些不同类型有不同的操作,于是我写了一大排的if,把自己都给搞晕了,代码大致如下: 数据类型枚举定义: ```java public enum GenerateDataType { /** * 自增,对应java的Long */ AutoIncre(), /** * 字段串类型 */ String(), /** * 数字 */ Number(), /** ...

java表达式运算性能比较:Jep与QLExpress

原创 2021-11-18 09:48 阅读(41)次
#### 前言 之前我有分享过java的表达式运算,由于我的业务要求表达式中要有业务变量,例如要根据id和orderNumber动态生成一个单号,表达式的定义如下所示: id+orderNumber 所以我们需要一个支持替换变量的表达式计算引擎,开始我们选择了jep,但后面发现我们业务中的jep表达式计算秒级只能做到2300条左右,这太慢了,于是我再找了下其他引擎,发现阿里开源了一个,名叫QLExpress,地址:[https://gitee.com/cuibo119/QLExpress](https://gitee.com/cuibo119/QLExpress "https://git...

存算分离与存算一体的优缺点比较

转载 2021-11-02 10:05 阅读(172)次
#### 分布式数据库是时代的选择 从1970年IBM的E.F Codd在论文《A Ralational Model of Data for Large Shared Data Banks》中提出的数据库系统关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础,到1977年 Oracle数据库发布,开启了IBM DB2和Oracle等大型商业公司垄断数据库市场二十年。 直到90年代中期,随着互联网时代的来临,开源数据库MySQL,PostgreSQL的出现,这种垄断现象才被打破,以MySQL为代表的开源数据库开始迅速发展。 21世纪10年代,数据的井...

LOG_PATH_IS_UNDEFINED/info.log (No such file or directory)

原创 2021-10-18 17:42 阅读(46)次
本文介绍解决java.io.FileNotFoundException: LOG_PATH_IS_UNDEFINED错误。 微服务在本地部署没有问题,部署在rancher中却报如下错误: ``` 2021-10-18 17:10:47.886 ERROR [pip-data-lifecycle-management] [10.42.2.53:serverPort_IS_UNDEFINED] [main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Logba...

jmeter随机日期参数

原创 2021-09-24 12:03 阅读(76)次
10000到15999随机数 ${__Random(10000,15999,)} 当前日期格式化成yyyy-MM-dd HH🇲🇲ss ${__time(yyyy-MM-dd HH🇲🇲ss)} 日期范围内随机 ${__RandomDate(yyyy-MM-dd,2018-01-01,2018-12-31,,)} 随机日期时间,拼接的格式为yyyy-MM-dd HH🇲🇲ss ``` ${__RandomDate(yyyy-MM-dd,2021-09-10,2021-09-18,,)} ${__Random(10,24,)}:${__Random(10,59,...

Jep实现Java表达式计算

原创 2021-09-13 17:48 阅读(149)次
开发过程中会遇到动态的表达式计算,网上找了不少这种组件,这里记录一下我用的,那就是Jep,简单好用,支持double,字符串计算。 导入maven: ```xml jep jep 2.24 ``` 代码例子: ```java public static void main(String args[]) { JEP jep = new JEP(); jep.addVariableAsObject("A","A"); jep.addVariableAsObject("B...

ES各版本的新特性官网地址

原创 2021-08-26 11:33 阅读(124)次
ES7.X各版本的新特性官网已经整理在一个页面中了,这很方便我们查看,但目前没有中文版的,找了很久全是英文的,这需要我们耐心的学习,不过还好万能的浏览器会帮我们翻译。 [![es版本特性](http://img.classinstance.cn/20210826/1629948696149.png "es版本特性")](http://www.classinstance.cn/detail/167.html "es版本特性") ES各版本的新特性官网地址: [https://www.elastic.co/guide/en/elasticsearch/reference/7.13/relea...

解决mybatis打印查询结果集造成太多日志的问题

原创 2021-08-24 11:28 阅读(601)次
我们项目使用的是Mybatis-plus,由于前端要展示所有摄像头,有5000路,页面打开很慢。看了下后端日志,查询时mybatis-plus会把所有5000行数据显示出来,造成后端api请求很慢。SQL日志如下: ``` Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f45abe6] Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f45abe6] fro...

ThreadLocal正确使用姿势,避免再掉坑

原创 2021-07-20 17:53 阅读(204)次
今天为了不改变方法的参数,使用ThreadLocal在线程内传值,一不小心就掉坑里了,发现数据错乱了,原因是:我的业务要求不是所有线程都要执行ThreadLocal.set动作,但是所有线程都要执行ThreadLocal.get,而我没执行ThreadLocal.remove动作。造成get的时候会取到上一条的数据,于是就数据错乱了,这里记录一下,怕自己又忘记了。 贴一下正确姿势代码: ```java public class SendMessageRetryTheadLocal { private static ThreadLocal sendMessageLogStor...

json转List<T>数组泛型如何转

原创 2021-07-08 16:18 阅读(295)次
json转List数组泛型如何转? 我们可以使用fastjson,如下代码: ```java List cacheList = JSON.parseObject(deviceListJson, new TypeReference>() {}); ``` 如上代码是想把json转成数组,Ape是我们的实体类。 pom就不贴了

Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when

原创 2021-07-06 16:01 阅读(194)次
想在mysql服务器中导出数据库,用来暂时备份用,执行以下语句: ./mysqldump -d db -u root -p >db.sql 却报如下错误: ``` mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect ``` 一般我们使用数据库都不会遇到这个问题,这估计是前人安装数据库时不负责,或者不按规范安装留下祸根,百度了下,最简单的解决办法是,找到当前mysql.sock的位置,修...

fastjson转字符串时保留null空字段

原创 2021-06-16 10:42 阅读(191)次
在使用fastjson时,有时我们需要将对象转成json字符串,但你会发现转换后的字符串中会少了null值的字段。 那fastjson转字符串后如何保留null空字段呢? 最直接的代码如下: ```java String jsonStr = JSON.toJSONString(object, SerializerFeature.WriteMapNullValue); ```

java enum枚举转list和Map

原创 2021-06-10 15:08 阅读(722)次
java中如何将枚举的定义转成list或者Map,让我们更好的操作枚举值? 思路是使用枚举的values()方法,将枚举定义转成对应你想要的数据类型。 分享代码如下,其中AlarmType中定义了很多枚举值: ```java public class EnumToListAndMap { public enum AlarmType{ OVER_SPEEDING_ALARM("overSpeedingAlarm","超速行驶预警"), DEVICE_IDLE_ALARM("deviceIdleAlarm","设备空闲预警"), UNLOCK_ALAR...

如何清空或初始化quartz定时相关表时报外键引用错误

原创 2021-06-02 18:18 阅读(280)次
清空quartz定时相关表时会报外键引用错误 表列表如下: ![](http://img.classinstance.cn/20210602/1622626914839.jpg) 外键引用错误就需要根据外键关系删除定时表数据,有外键关联的表和顺序如下: qrtz_cron_triggers qrtz_triggers qrtz_job_details qrtz_fired_triggers 清空表和删除表顺序执行如下语句: ```sql DELETE from qrtz_cron_triggers ; DELETE from qrtz_triggers ; ...

干货 | 吃透Elasticsearch 堆内存以及堆内存为什么不能超过32GB

转载 2021-05-30 17:43 阅读(218)次
1、什么是堆内存? Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域: 新生代 ( Young )、 老年代 ( Old )。 新生代 ( Young ) 又被划分为三个区域 Eden、 From Survivor、 To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 2、堆内存的作用是什么? 在虚拟机启动时创建。 堆内存的唯一目的就是创建对象实例,所有的对象实例和数组都要在堆上分配。 堆是由垃圾回收来负责...

clickhouse清空表数据

原创 2021-05-25 18:30 阅读(4149)次
最近看到很多朋友问clickhouse如何清空表数据?或者有没有像mysql一样truncate删除整张表数据的语句呢? 答案是:没有。它只提供如下语句: ALTER TABLE 表名 DELETE WHERE 条件 . 并且这语句性能不是很好,也是异步删除,语句执行成功不代表真的成功。 当然你也可以使用删除分区的方式达到清空表的目的,但提前你得一个一个分区的删,太麻烦了。 那么现在你知道了:你想快速清空表,只能重建表了。 重建表要先drop表,如下: drop table 表名 . 如果你的表是在集群下,也可以使用分布式DDL来删除和重建表。 ...

spring boot或spring cloud项目中使用系统环境变量问题

原创 2021-05-25 18:08 阅读(373)次
#### 前言 项目开发过程中有时候需要用环境变量来解决一些复杂配置的问题,比如同一个服务要部署多个实例,但这些实例需要使用不同的配置时,这些就可以用环境变量来解决,这不管是原始的部署方式或使用k8s部署方式都是可以使用环境变量来解决这种问题。 下面我们分享下开发和部署时怎么设置环境变量 #### 代码示例 先上示例代码,比如我们要在bootstrap.yml中读取env_test这个环境变量,如下配置: ```yaml env: test: ${env_test} ``` 如果你遇到spring boot项目bootstrap.yml配置无法生效,可以看看我...

bootstrap.yml配置报错:Could not resolve placeholder 'xx' in value

原创 2021-05-25 17:20 阅读(537)次
今天在bootstrap.yml加了一个配置,一直读取不到,一直报如下错误: ``` java.lang.IllegalArgumentException: Could not resolve placeholder 'env.test' in value "${env.test}" ``` bootstrap.yml配置如下: ```yaml env: test: 1 ``` 代码如下: ```java @Component public class EnvConfig { @Value("${env.test}") private S...

hadoop运行mapreduce报错Error: Could not find or load main class

原创 2021-05-23 15:42 阅读(250)次
#### 异常问题: 今天运行word count单词统计示例,hadoop运行mapreduce报错Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster 详细错误信息如下: ```xml Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster Please check whether your etc/hadoop/mapred-sit...

安装Hadoop伪分布式模式教程,版本为Hadoop3.1.4

原创 2021-05-22 18:33 阅读(227)次
Hadoop有三种安装模式,今天分享其中一种:伪分布式模式。 下载地址:https://hadoop.apache.org/releases.html 安装过程中解决了一些坑点,具体如下: 这种模式只需要一台服务器即可 ##### 1.上传hadoop-3.1.4.tar.gz到服务器中,解压 tar -zxvf hadoop-3.1.4.tar.gz ##### 2.修改机器名 hostnamectl set-hostname hd1 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=node01 v...

调用别人的接口或第三方接口怎么做熔断(二)

原创 2021-05-18 16:27 阅读(368)次
上一篇文章《[调用别人的接口或第三方接口怎么做熔断](http://www.classinstance.cn/detail/152.html "调用别人的接口或第三方接口怎么做熔断")》我分享了自己在生产环境中遇到调用下游第三方服务异常几乎把自己服务拖跨的问题,以及分享了如何解决这个问题。 这篇主要分享如何用代码实现对第三方异常服务做熔断来保护自己的服务。 待续

调用别人的接口或第三方接口怎么做熔断

原创 2021-05-14 18:49 阅读(557)次
在我们开发过程中总会遇到开发服务接口给别人调用,或者让别人的服务提供接口给你调用。别人的服务调用我们的服务接口的情况,我们为了保护自己的服务不被高并发或者说大量请求压垮,往往会做限流或者熔断。但是我们调用别人的服务接口需要做限流或熔断么? 我们举个例子: 我们系统有个场景就是要将产生的预警信息快速同步给下游第三方服务中,实时性要求比较高。预警信息是从kafka中消费的,每一条预警信息都要发给多个第三方服务。大致流程如下: ![](http://img.classinstance.cn/20210514/1620987481312.jpg) 图中一条预警信息从kafka拉取后...

java Md5工具类获取字符串的Md5值

原创 2021-05-14 10:02 阅读(186)次
java如何获取字符串的Md5值? 具体代码如下: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Md5Utils { public static String getMd5(String str) throws NoSuchAlgorithmException { byte [] bytes = str.getBytes(); StringBuffer sb = n...

java List间计算并集、差集、交集以及去重

原创 2021-05-14 09:39 阅读(624)次
Java中如何计算两个List的并集、差集、交集? 并集和交集我们都很清楚,但其中这里说的差集是什么意思呢?指的是集合listA与listB差集,准确来说是用listB去删除listA中存在listB中的元素。 Java集合中针对这三个场景提供了三个方法。 - 并集使用list.addAll()方法; - 差集使用list.removeAll()方法; - 交集使用list.retainAll()方法; 其中removeAll和retainAll都会根据对象的equals方法来比对对象是否相等,要正确的使用这两个方法需要注意对象的类是否要重写equals和hashCode方...

LinkedBlockingQueue实现定长队列自动出队与读取队列

原创 2021-04-23 16:10 阅读(349)次
我要实现一个存储请求状态的队列缓存,需要用到LinkedBlockingQueue,实现定长队列自动出队,另外还要实现不出队的情况下读取队列数据。 代码如下: ```java LinkedBlockingQueue queue = new LinkedBlockingQueue(3); queue.offer(1); queue.offer(2); queue.offer(3); boolean offer = queue.offer(4); if(offer == false)...

解决java.lang.OutOfMemoryError: unable to create new native thread

原创 2021-04-08 10:40 阅读(222)次
#### 异常问题 项目并发测试一个功能时报创建不了本地线程,如下: ``` Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:717) at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:957) at ...

postgresql数据库表分区字段有必要创建索引么?

原创 2021-04-08 09:45 阅读(317)次
postgresql数据库表分区后,分区字段有必要创建索引么? 昨天项目上线前进行性能并发测试,发现一个简单请求单并发要1分多钟,我进行代码跟踪了下,最终定位到如下SQL语句代码: ```xml select min(collect_time) from A ``` 我才想起来这个是我写的,当时是认为A表用collect_time字段做了分区,应该不用给collect_time字段做索引了,而且A表中已经有6个索引字段了,生怕创建太多索引而影响写入性能。 但性能测试环境中A表有6亿数据,上面这个查询就显的力不从心。于是...