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

原创 2021-04-23 16:10 阅读(25)次
我要实现一个存储请求状态的队列缓存,需要用到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 阅读(33)次
#### 异常问题 项目并发测试一个功能时报创建不了本地线程,如下: ``` 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 ...

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

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

clickhouse如何修改字段名

原创 2021-03-19 10:00 阅读(456)次
clickhouse如何修改字段名?也就是如何对字段重命名? 早期版本是不支持的,在ClickHousereleasev20.4.2.9,2020-05-12版本之后就开始加入了这个特性。大家记得看看自己的版本。 语法如下: ```sql ALTER TABLE visits RENAME COLUMN webBrowser TO browser ``` 分布式集群下用分布式DDL修改字段名 ```sql ALTER TABLE visits on cluster shipin_cluster RENAME COLUMN webBrowser TO browser `...

java使用snakeyaml库读取和操作yml文件

原创 2021-03-11 16:17 阅读(43)次
随着spring boot项目的流行,现在已有很多项目在使用yml文件来配置我们的项目。其中也有一些中间件比如elasticearch配置文件都在用yaml文件来配置。 有时我们会有一些需求,比如动态配置,动态读取yml文件来操作我们的配置文件,那么这时就需要解析yml文件了。 那java中如何读取和操作yml文件呢?答案是snakeyaml库。 引入jar包: ```xml org.yaml snakeyaml 1.25 ``` 下面分享一些资料: 官方api与文档: https://bitbucket.org/aso...

maven jar包 搜索网址分享

原创 2021-03-10 19:40 阅读(67)次
我们java程序员开发时通常用maven引入jar包的形式导入工具库包。有时为了升级某个jar包时却不知道这个jar包有什么版本的,这时我们就需要去网络上搜索了。 ![](http://img.classinstance.cn/20210311/1615451463582.jpg) 这里分享几个网站,大家可以从上往下搜索你想要的jar包。 #### mvnrepository http://mvnrepository.com/ #### maven.org http://search.maven.org/ #### sonatype.org https://re...

maven修改jar包版本不生效解决办法

原创 2021-03-10 16:18 阅读(219)次
今天在maven中修改一个jar包版本,想升级版本,却一直不生效。 pom文件如下: ```xml org.eclipse.jgit org.eclipse.jgit 5.1.3.201810200350-r ``` 在当前工程查看这个jar包的版本是改过来了,从4.1变成了5.1。 如下图所示: ![](http://img.classinstance.cn/20210310/1615363943882.jpg) 但是在另一个工程中引用这个工程时,这个jar包的...

Thumbnails使用方法(java图片处理工具类)

转载 2021-03-09 14:10 阅读(53)次
本文链接:https://blog.csdn.net/qq_25508039/article/details/82257436 #### 介绍 我们在java开发时,使用Thumbnails工具类能帮助我们对图片进行很好的处理,Thumbnails对图片的操作进行了很好的封装,往往很复杂的步骤能用一行代码就完成。 Thumbnails支持: - 1. 指定大小进行缩放 - 2. 按照比例进行缩放 - 3. 不按照比例,指定大小进行缩放 - 4. 旋转 - 5. 水印 - 6. 裁剪 - 7. 转化图像格式 - 8. 输出到OutputStream - 9. 输出到B...

java中BufferedImage转成 base64字符串

原创 2021-03-08 17:14 阅读(348)次
java中BufferedImage转成base64字符串,代码如下: ```java /** * BufferedImage转成 base64 * @param bufferedImage * @param imageFormatName * @return * @throws IOException */ public static String getBufferedImageToBase64(BufferedImage bufferedImage,String imageFormatName...

java下载图片

原创 2021-03-08 17:10 阅读(47)次
如何在后端代码中,使用java下载图片? 代码分享如下: ```java /** * 下载图片 * @param url * @return */ public static BufferedImage downLoad(String url) { // 获得Http客户端 CloseableHttpClient httpClient = HttpClientBuilder.create().build(); // 创建Get请求 HttpGet ht...

es7.x版本如何获取查询命中的文档总数

原创 2021-03-03 11:26 阅读(176)次
#### 前言 早在elasticsearch6.x版本时,es查询时默认会显示hits total总数,当然聚合场景下是不会的。目前我们项目将es6.8升级到7.6,一些普通查询,总数显示不正常了,最大只显示10000条。 比如查询语句如下: ```json GET bd_frequent_test/_search { "query": { "match_all": {} } } ``` 查询结果如下: ```json { "took": 1, "timed_out": false, "_shards": { "total": ...

Es 7.x版本批量写入数据路由字段报错:Action/metadata line [1] contains an unknown parameter [_routing]

原创 2021-03-02 19:02 阅读(149)次
#### 异常问题 在使用elasticsearch7版本批量插入数据时,因为设置了路由,一直报错:Action/metadata line [1] contains an unknown parameter [_routing] 具体错误信息如下: ```json {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [_routing]"}],"type":"illegal_argu...

Es创建索引mapping时报错:Root mapping definition has unsupported parameters: [doc

原创 2021-03-02 14:20 阅读(218)次
#### 异常问题 es7.x版本创建索引报如下错误:Root mapping definition has unsupported parameters: [doc 具体信息如下: ```json { "error" : { "root_cause" : [ { "type" : "mapper_parsing_exception", "reason" : "Root mapping definition has unsupported parameters: [doc : {dynamic=false, prop...

docker构建体积较小的jdk镜像

原创 2021-03-01 14:28 阅读(153)次
#### 前言 我们一般在docker中运行java项目都会选择体积较小的jdk镜像,比如alpine-java构建的jdk镜像,但alpine安装软件并不方便,并且有些软件在alpine中并不好装。 例如我们java项目中使用tesseract来做图片文字识别,它在centos中很容易安装,在alpine环境中,怎么都没法安装成功,于是我们就需要构建一个有centos环境的jdk镜像 #### 构建有centos环境的jdk镜像 1.下载jre 下载地址: https://www.java.com/en/download/manual.jsp 下载jre8.tar.gz,并不是...

clickhouse如何删除数据库和创建数据库以及分布式DDL创建数据库

原创 2021-02-25 17:20 阅读(308)次
[秒懂学习ClickHouse,请移步《ClickHouse原理解析与应用实践》](https://union-click.jd.com/jdc?e=&p=AyIGZRprFQEbDlIZXRQyVlgNRQQlW1dCFFlQCxxKQgFHRE5XDVULR0UVARsOUhldFB1LQglGa2F2CHUWYTpSYmZXF0wjfQB2QUtrKFMOHjdVE14UCxUAVhxfJQITBlUTUhYAFgRlK1sUMkRpVRpaFAMTAlQfWCUAEwZXGF0WAxcDZRtcFAQaAFYSWxECEgNlHFscMklXFlMQXVkiN1UYUhwFEAFUK1...

图片的base64字符转成BufferedImage

原创 2021-02-23 17:43 阅读(135)次
图片的base64字符转成BufferedImage 代码如下: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.Base64; import java.util.Base64.Decoder; public class ImageUtils { /** * base64 编码转换为 ...

java使用BufferedImage放大或缩小图片

原创 2021-02-23 11:32 阅读(170)次
BufferedImage可以用来简单编辑图片:包括裁剪、放大、缩小等。 下面贴的是利用BufferedImage做图片放大或缩小代码: ```java String imageBase64 = "xxxxxx";//图片base64字符串 BufferedImage image = ImageUtils.base64ToBufferedImage(imageBase64); int width = image.getWidth(); int height = image.getHe...

java使用guava cache实现本地缓存

原创 2021-02-04 15:39 阅读(237)次
在高并发的场景中我们不希望所有请求都打到数据库中,以免压垮数据库,这时我们就可能会使用本地缓存来实现解决并发性能问题,当然我们也可以选择redis来实现,但redis有时并发也并没有那么快。于是本地缓存就是我们的唯一救命手段了。 Guava的cache是线程安全的,是本地缓存的不二之选,默认情况下缓存过期是依赖于访问判断时间过期和数量限制过期。 我们再也不用自己手写一个基于ConcurrentHashMap的本地缓存了 #### maven引入guava包 ```html com.google.guava guava 18.0 ...

java stream List转Map与List转List与Map转List

原创 2021-02-03 17:26 阅读(518)次
我们写代码时经常会遇到List转Map或List转List,Map转List,看到我这标题有没有要晕(我在说什么??转来转去)。之前没有用stream的时候,都是用for循环转换,现在jdk8提供流式处理,性能稍快,还方便。 下面记录一下代码,免得自己老是不记得如果编写stream. #### List转Map ```java Map tgMap = tgList.stream().collect(Collectors.toMap(BazTgTO::getTgId, n -> n)); ``` #### Map转List ```java list = dbFilterM...

es聚合之实现日期按周一到周日的聚合统计

原创 2021-02-02 13:40 阅读(361)次
#### 前要说明 由于业务要查看日志,按周一到周天展示日志统计量 ![](http://img.classinstance.cn/20210202/1612244338577.jpg) 我们数据是存储在es中,找了半天聚合函数,发现可以用脚本定义周一到周日。 这里就需要用到es中的日期类org.elasticsearch.script.JodaCompatibleZonedDateTime 它其中就提供了一个函数getDayOfWeek()获取一周星期几对应的数值,这个函数刚好可以实现我们的需求。 #### getDayOfWeek函数的使用 我们先用script_fields...

mybatis一条语句实现一对一,一对多查询

原创 2021-01-26 14:56 阅读(102)次
有时我们要查询多张子表,或关联子表查询,如查询用户信息时,想要带出部门信息,正常使用mybatis要写两条语句,一个查询用户信息,一个查询部门信息,那么使用mybatis如何一条语句做到查询出多个对象信息呢? ##### 参考如下文章 [https://blog.csdn.net/qq_44066201/article/details/99656030](https://blog.csdn.net/qq_44066201/article/details/99656030 "https://blog.csdn.net/qq_44066201/article/details/99656030"...

java父类转子类报错?怎么办?如何父类转子类

原创 2021-01-21 15:01 阅读(128)次
我们java程序员经常会用到子类继承父类,在开发过程中就会遇到子类转父类,父类转子类的问题。 子类转父类不会报错,但父类转子类强转是不会报错的,但运行后就报错了,代码如下: public class UserInfo { private String userName; public UserInfo() { } public String getUserName() { return userName; } public void setUs...

CF由于网络原因连接服务器失败请重试 1033_10136

原创 2021-01-18 00:34 阅读(1539)次
今天好不容易叫上以前朋友上CF玩几把游戏,兴致勃勃打开游戏,两人一起组队打排位,我游戏一进去就掉出来,一直弹出错误:由于网络原因连接服务器失败请重试 1033_10136。试了好多次都这样,就是进不去游戏。问了我朋友,他们都能进,就我不行。 错误如下图1: ![](http://img.classinstance.cn/20210118/1610899663050.jpg) # 解决过程 于是我怀疑是游戏出了问题,点CF的修复游戏一直不行,又重启电脑又重启游戏还是不行。 图2: ![](http://img.classinstance.cn/20210118/16108998521...

原生js如何判断PC端还是手机端

转载 2021-01-15 22:47 阅读(111)次
由于我的博客要判断用户或者说访客是手机端还是pc端访问,我又不能用bootstrap的布局,由是找了下如何实现,这里转载一下别人的方案。 ```javascript /** * 判断访问类型是PC端还是手机端 * 返回ture为手机端 */ function isMobile() { var userAgentInfo = navigator.userAgent; var mobileAgents = [ "Android", "iPhone", "SymbianOS", "Windows Phone", "iPad","iPod"]; ...
js

mybatis设置全局变量

原创 2020-12-29 15:19 阅读(363)次
clickhouse在分布式子查询中会将语句发送到多个分片执行,如果语句中的表前不写上库名,查询时会报在default库中找不到表,所以我们需要给每个clickhouse的查询中都写上库名,这样才能正常执行。但库名写死在语句中并不优雅,万一库名修改或测试环境的库名不同,我们开发要将这么多查询语句都要修改,不得累到死,于是就要将clickhouse库名进行配置到公共变量,并在mybatis中获取。下面分享下如何在mybatis设置和全局变量。先要spring boot配置文件中定义需要设置的全局配置,然后在clickhouse的mybatis sessionFactory中设置全局变量,这样my...

java数组转list

原创 2020-12-16 17:54 阅读(157)次
java中数组如何转list或者说ArrayList,每次码代码时,遇到这个问题都要想一下,这里给自己记录下,免得每次都跳坑。数组转list,有两种方法,代码如下: //方法一 List<String> lista = Arrays.asList(split); //方法二 List<String> listb = new ArrayList<>(split.length); Collectio...

druid执行clickhouse报错:sql injection violation, dbType clickhouse , druid-version 1.2.2, syntax error

原创 2020-12-15 11:45 阅读(936)次
今天遇到一个druid不支持clickhouse的问题,druid执行clickhouse报错:sql injection violation, dbType clickhouse , druid-version 1.2.2, syntax error错误如下: Caused by: java.sql.SQLException: sql injection violation, dbType clickhouse, , druid-version 1.2.2, syntax error: syntax error, error in :'icle r where first_appear_ti...

clickhouse如何删除数据

原创 2020-11-27 18:09 阅读(5250)次
clickhouse删除数据提供了三种方式:一、是删除分区,数据就会删除掉二、是通过Alter语句删除数据三、是还可以通过设置日期字段或表的TTL生命周期,到期自动清除数据注意:上面前2点都可以使用分布式DDL删除集群各节点数据,第三点是创建表时定义的,暂时不提。1.删除分区alter table 表名 drop partition 分区名分区名可以用下语句查询select * from system.parts p where table = '表名'以我下面这张表为例,分区函数是toYYYYMMDD(collect_time),按天分区,那分区名就是20201010这样的日期格式,只要按这...

clickhouse执行查询内存超出限制问题:Memory limit (total) exceeded

原创 2020-11-26 18:15 阅读(2045)次
今天用clickhouse执行分布式查询报错:SQL 错误 [241]: ClickHouse exception, code: 241, host: 192.168.29.124, port: 18123; Code: 241, e.displayText() = DB::Exception: Memory limit (total) exceeded: would use 15.44 GiB (attempt to allocate chunk of 4294967296 bytes), maximum: 13.95 GiB (version 20.6.3.28 (official bui...

spring boot项目默认日志配置

原创 2020-11-26 17:43 阅读(182)次
spring boot默认日志为logback打印,默认不配置也可以打印日志,但生产环境中这样容易让日志打到机器磁盘不足,所以我们还是需要配置一下的:logging: file: name: app.log path: /home/java/ max-size: 50MB max-history: 7