java
wppwpp1
这个作者很懒,什么都没留下…
展开
-
redission源码解读
总的来说,如果只是简单的使用Redis进行一些基本操作,可以选择使用Jedis;如果需要使用到Redis的高级功能或者需要进行分布式开发,建议选择Redisson。而Redisson提供了更加丰富的API,包括分布式锁、集合、队列等高级功能。线程模型不同:Jedis是单线程模型,而Redisson是异步线程模型。支持集群模式不同:Jedis只支持基本的单机模式和主从模式,而Redisson支持Redis集群模式。可扩展性不同:Redisson具有更好的可扩展性,可以通过自定义配置实现更多的功能。原创 2023-11-20 16:24:49 · 141 阅读 · 0 评论 -
springboot请求数据链接突然中断后
在进行http请求的时候,客户端突然断开链接或者客户端自动取消连接的,服务端还是会进行所有流程处理的,只是在最后接口返回给客户端的时候会报通道链接异常。原创 2023-02-24 18:45:21 · 1285 阅读 · 1 评论 -
springboot使用多线程处理高并发接口
当线程增加到cpu的个数的时候,吞吐率会达到顶峰,原创 2022-11-08 16:38:27 · 5804 阅读 · 2 评论 -
java httpclient httpget方法如果有空格的bug进行修复
可以使用URLEncoder.encode()方法来解决,但是URLEncoder.encode()方法会将空格转换成+,解码后会发现+没有转换回来,这要特殊处理一下,将空格直接转换成%20,这里不用担心原参数中的+会被转成%20,URLEncoder.encode()方法会将原有的+转成%2B,将空格转成+在请求头参数或者返回参数存在中文时,出现乱码的问题。原创 2022-10-26 21:16:11 · 1956 阅读 · 0 评论 -
springboot 注册redis服务代码
2、其他地方引用时,只需要执行如下代码即可。原创 2022-08-31 10:45:09 · 337 阅读 · 0 评论 -
统计java内存使用率代码
代码】统计java内存使用率代码。原创 2022-08-15 20:44:20 · 415 阅读 · 0 评论 -
flink链接redis时候,集群close down是否会重连
flink连接redis时候,集群close down是否会重连。原创 2022-08-05 18:41:34 · 286 阅读 · 0 评论 -
flink 网络中断错误信息跟踪
生产中,突然间flink任务大规模重启,通过查看日记信息,发现网络断网了,具体错误信息如下。原创 2022-08-01 17:04:57 · 429 阅读 · 0 评论 -
jvm直接内存相关文档
直接内存可能导致OutOfMemoryError异常,由于直接内存在java堆外,因此它的大小不会直接受限于-Xmx指定的最大堆大小,但是操作系统内存是有限的,java堆和直接内存的总和依然受限于操作系统最大内存。读写文件需要与磁盘交互,需要由用户态切换到内核态。在内核态时,需要内存如下图操作。直接内存大小可以通过MaxDirectMemorySIze设置,如果不指定默认和堆的最大值-Xmx参数一致。使用NIO时操作系统划出的直接缓冲区可以被java代码直接访问,只有一份,NIO适合对大文件读写操作。...原创 2022-07-29 16:41:46 · 181 阅读 · 0 评论 -
SpringBoot设置环境几种方式
SpringBoot设置环境几种方式。原创 2022-07-28 18:04:04 · 485 阅读 · 0 评论 -
flink故障转移策略
故障转移策略故障转移策略只有2种,full和regionfull:就是一个task failed就重启所有的taskregion:就是只重启受影响的task,可以在flink-conf.yaml中设置,通过配置项:jobmanager.execution.failover-strategy,默认值就是region。此处附上官网说明:Task Failure Recoveryhttps://nightlies.apache.org/flink/flink-docs-release-1.14/docs/op原创 2022-06-22 15:14:04 · 432 阅读 · 0 评论 -
flink消费kafka从指定时间消费offset的日志
有时生产上会按指定时间消费kafka的数据,具体日志如下:原创 2022-06-22 14:26:19 · 597 阅读 · 0 评论 -
Flink JDBC executeBatch error, retry times = 0
jdbc的url参数没有设置链接超时情况,通过加入如下参数来调整原创 2022-06-05 23:57:23 · 1414 阅读 · 0 评论 -
解决could only be written to 0 of the 1 minReplication nodes,there are 0 datanode(s) running问题
问题描述在使用hive insert overwrite更新分区表的时候出现这个报错。意思是没用可用的DataNode了。解决方案网上看到的类似的解决方案有以下两种: 但我这里都不是。我这里的原因是hdfs空间被占满了,而hive在执行的时候会往/tmp下读写大量的临时数据,由于没有空间而报错。默认情况下,hive脚本执行完之后会自动清理掉这些临时文件。这里之所以出现/tmp下大量文件没被清理,是因为之前自己有多次没等hive脚本执行完就Ctrl +c掉了,所以有大量临时文件未清理。因此,最终的解决方案原创 2022-05-31 23:38:29 · 1406 阅读 · 0 评论 -
Flink全局使用的配置信息如何加载
1.要全局的配置放入config里,然后放入环境中:env.getConfig().setGlobalJobParameters(config);2.组件的open方法里:ExecutionConfig.GlobalJobParameters globalJobParameters = getRuntimeContext().getExecutionConfig().getGlobalJobParameters();Map<String, String> globConf =原创 2022-05-12 12:24:57 · 794 阅读 · 0 评论 -
mysql失败连接重试
package com.vip.dataeye.base.mysql;import com.vip.dataeye.common.Constants;import org.apache.commons.dbutils.DbUtils;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.ResultSetHandler;import org.slf4j.Logger;import org.原创 2023-04-14 11:57:17 · 142 阅读 · 0 评论 -
flink 大状态下做savepoint失败问题的排查
1、线上有一个任务状态比较大,做checkpoint的时候大约有100G左右,任务在做到10G左右的时候会报错2、报错日志如下:第二个错误日志:2022-04-16 00:05:23org.apache.flink.runtime.io.network.partition.consumer.PartitionConnectionException: Connection for partition 55780195e63c343e4a320329203bbb8a#13@83443ca原创 2022-04-16 00:57:14 · 5507 阅读 · 1 评论 -
flink taskmanager参数优化
taskmanager.network.memory.exclusive-buffers-request-timeout-ms=600000;taskmanager.network.memory.fraction= 0.4;taskmanager.memory.managed.fraction=0.1;taskmanager.network.memory.max=1024mb;taskmanager.network.memory.min=512mb;如果报oom相关参数调优...原创 2022-04-08 23:28:50 · 2777 阅读 · 1 评论 -
flink写入到kafka,只写入指定分区问题排查
背景:flink的datastream部署到线上时,发现数据只能写入到kafka的一些分区,其他分区没有数据写入。当把flink的并行度设置大于等于kafka的分区数时,kafka的分区都能写入数据。于是研究了一下源码。FlinkFixedPartitioner源码:package org.apache.flink.streaming.connectors.kafka.partitioner;import org.apache.flink.annotation.PublicEvolving原创 2022-03-10 22:12:18 · 3407 阅读 · 0 评论 -
flink rocksdb相关配置优化
table.dynamic-table-options.enabled=true;state.backend.rocksdb.compaction.style=level;state.backend.rocksdb.thread.num=8;table.exec.mini-batch.enabled=true;table.exec.mini-batch.size=1000;table.optimizer.distinct-agg.split.enabled=true;state.backend.原创 2022-03-03 18:56:04 · 2691 阅读 · 0 评论 -
chrome进行debug调试出现两行如何解决
1、会显示概览和网络请求两个菜单,看着比较多,不易调试,2、通过把 ”显示概览选项“勾选掉就可以了原创 2022-02-15 16:20:15 · 370 阅读 · 0 评论 -
GroupTableAggFunction源码解读
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to y.原创 2022-02-11 10:00:06 · 1131 阅读 · 0 评论 -
flinksql 添加字段从checkpoint重启的问题
flinksql 在group by添加字段后,从checkpoint重启会报错,2022-02-07 18:28:33java.lang.Exception: Exception while creating StreamOperatorStateContext. at org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.streamOperatorStateContext(StreamTaskState原创 2022-02-07 18:32:47 · 1879 阅读 · 2 评论 -
flinksql 日期格式数据总结
1、如果是毫秒直接乘以1000即可select unix_timestamp();2、获取年月日时分秒格式的数据,以下三种都是一样的select now();--不带括号select current_timestamp;--不带括号select LOCALTIMESTAMP;3、时间戳转换成年月日的...原创 2022-01-28 21:24:10 · 8684 阅读 · 0 评论 -
flinksql把的userid写到指定的kafka分区
1、生产上flinksql经常用到根据指定的userid划分到同一个task任务里进行调度,这时候可以使用group by user_id,解决相同userid分到同一个task处理,但是sink到结果表比如kafka或者sls等mq的消息队列时,如果不指定分区规则,则可能同一个userid也会分到不通partition,这时候就需要指定sink的策略。...原创 2021-02-23 10:44:28 · 484 阅读 · 0 评论 -
java 性能调优
java gc查看jstat -gcutil 846712、jdump 可以查看每个对象占用的大小3、原创 2021-02-19 10:44:26 · 106 阅读 · 0 评论 -
jvm oom 问题排查
1、设置jvm的xms和xmx的大小,已经打印堆信息大小。-Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError2、使用 jprofile分析相关的hprof文件信息3、相关分析信息原创 2021-02-18 15:31:49 · 450 阅读 · 0 评论 -
http 可以添加超时时间,防止超时问题
1、http请求,很容易网络抖动,所以加上超时可以解决这种问题 public static String doHttpPost(String uri, JSONObject jsonObject) { CloseableHttpResponse response = null; try { HttpPost httpPost = new HttpPost(uri); RequestConfig config = Requ原创 2021-02-03 18:20:31 · 3953 阅读 · 0 评论 -
java8 java.time类库
LocalDate看看新的LocalDate怎么用:// 取当前日期:LocalDate today = LocalDate.now(); // -> 2019-03-29// 根据年月日取日期,04月就是04:LocalDate crischristmas = LocalDate.of(2019, 04, 22); // -> 2019-04-22// 根据字符串取:LocalDate endOfFeb = LocalDate.parse(“2019-03-28”); //.原创 2020-06-28 15:44:20 · 184 阅读 · 0 评论 -
java8 并发总结
1,Thread.sleep 只是让线程休眠,并不会让出锁的。2, @FunctionalInterface 说明只有一个抽象类,这样就可以写lambado表达式。3,CAS核心代码public static int updateAndGet(AtomicInteger i, IntUnaryOperator operator) { while (true) { int prev = i.get(); int next = op...原创 2020-06-26 17:08:26 · 172 阅读 · 0 评论 -
使用 jstack或者jconsole查看死锁状态
1,有时候运行程序时会出现代码死锁,可以通过jstack进行查看,1.1 死锁代码如下:import lombok.extern.slf4j.Slf4j;import static cn.itcast.n2.util.Sleeper.sleep;@Slf4j(topic = "c.TestDeadLock")public class TestDeadLock { public static void main(String[] args) { test1();.原创 2020-06-24 10:18:02 · 460 阅读 · 0 评论 -
SpringBoot读取bean的方法
1,可以通过spring提供的工具类去获取bean对象:RedisService redisService= SpringContextUtil.getBean("redisService");原创 2020-06-19 18:04:18 · 260 阅读 · 0 评论 -
记一次redis生产环境中,使用通配符删除key的bug
1,因业务需要,需要通过通配符删除redis指定的key,逻辑代码很简单,当时以为这个会执行很快,不应该会有问题,因为redis链接的是腾讯云的redis,不支持通配符直接删除,所以自己写了一个客户段,删除每个节点的数据。 @PostMapping("/clearRedis2") public JsonResVo clearRedis2(){ try { log.info("redis:" + applicationVo.host +",applica原创 2020-06-19 11:43:47 · 848 阅读 · 0 评论 -
高并发架构设计几个关键点
概览标题中的高并发架构设计是指设计一套比较合适的架构来应对请求、并发量很大的系统,使系统的稳定性、响应时间符合预期并且能在极端的情况下自动调整为相对合理的服务水平。一般而言我们很难用通用的架构设计的手段来解决所有问题,在处理高并发架构的时候也需要根据系统的业务形态有针对性设计架构方案,本文只是列出了大概可以想到一些点,在设计各种方案的时候无非是拿着这些点组合考虑和应用。 有很多高并发架构相关的文章都是在介绍具体的技术点,本文尝试从根源来总结一些基本的方法,然后再引申出具体的实现方式或例子。下面是本文会介.原创 2020-06-16 10:19:54 · 307 阅读 · 0 评论 -
springboot 脚手架管理
1,主要收集springboot相关脚手架的管理开发原创 2020-06-04 10:33:47 · 145 阅读 · 0 评论 -
Java并发相关知识梳理
1,java的对象锁主要锁住2,轻量级锁转成重量级锁条件1,自旋次数达到10次,2,线程个数大于cpu的1/2原创 2020-05-31 16:18:51 · 890 阅读 · 0 评论 -
java parallelStream 并行把数据推送到redis
private void cache(Collection<VideoDTO> videoList, String filterId) { /* 缓存防重 */ videoRecommendList .parallelStream() .forEach( VideoDTO -> { String filterKey = String.format("%s:%s:%s", "VH",.原创 2020-05-28 11:21:54 · 299 阅读 · 0 评论 -
java 读取resource下的文件信息
Classloader是从classpath中读取资源的一个类,一般我们用classloader来加载class,实际上,但凡是处在classpath中的文件,我们称之为资源,都可以用classloader来读取。在java中的API里,有两种方式来使用classpath读取资源。Java代码System.out.println(Bootstrap.class.getResour...原创 2020-04-17 17:01:14 · 181 阅读 · 0 评论 -
xshell快捷键·
https://blog.csdn.net/dabao87/article/details/82757914?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task转载 2020-03-05 14:35:02 · 133 阅读 · 0 评论