自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (7)
  • 收藏
  • 关注

原创 parallelStream、CompletableFuture 使用默认ForkJoinPool.commonPool()线程池的问题

parallelStream和CompletableFuture 默认使用的都是ForkJoinPool.commonPool()默认线程池;基于服务器内核的限制,如果你是八核,每次线程只能起八个,不能自定义线程池;适用于对list密集计算操作充分利用CPU资源,如果需要调用远端服务不建议使用参考:https://blog.csdn.net/z69183787/article/details/107026179https://blog.csdn.net/z69183787/a...

2020-06-29 18:50:52 5132

转载 记一次生产问题--CompletableFuture默认线程池

在jdk7中,我们使用线程池可能会使用ExecutorService,默认有四种方式Executors.newSingleeThreadPool()Executors.newFixedThreadPool()Executors.newCacheThreadPool()Executors.newScheduledThreadPool()在jdk8中,CompletableFuture腾空出世,它简化了异步任务的写法,提供了很多异步任务的计算方式。言归正传,现在生产上面出现的问题是,在

2020-06-29 18:48:07 6152 2

转载 并行流parallel,CompletableFuture与Executors线程池的使用与区别

list并行操作在项目开发可以极大提高代码效率与性能,java8对其进行了很好的封装,简单使用研究一下:1. 先自己创建一个list:// list在实际使用中要注意线程安全,Collections.synchronizedList写操作性能高,CopyOnWriteArrayList读操作性能较好List<String> list = Arrays.asList(new String[10000]);2. parallel并行流使用:list.stream().paral

2020-06-29 18:45:52 3988

转载 Java8 parallelStream —— 替换默认的共享线程池ForkJoinPool.commonPool()

Java 8 并行流(parallel stream)采用共享线程池,对性能造成了严重影响。可以包装流来调用自己的线程池解决性能问题。问题Java 8 的并行流可以让我们相对轻松地执行并行任务。myList.parallelStream.map(obj -> longRunningOperation())但是这样存在一个严重的问题:在 JVM 的后台,使用通用的 fork/join 池来完成上述功能,该池是所有并行流共享的。默认情况,fork/join 池会为每个处理器分配一个线程

2020-06-29 18:10:23 7919

转载 JVM 堆内存溢出后,其他线程是否可继续工作

最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。由于题目中给出的OOM,java中OOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError:Permgen space”)、不能创建线程(“java.lang.OutOfMem

2020-06-29 15:16:37 810

转载 JVM系列之经典垃圾回收器

上篇:https://mp.weixin.qq.com/s/GVabLd4BAZGDBe9xL86k3w1.前言随着 JDK 的不断更新,垃圾回收器的效率也越来越高。每一次 JDK 的更新,必然会包含有垃圾回收器的更新,截止目前,在最新的 JDK14 版本中,最新的垃圾回收器为 ZGC。从垃圾回收器发展至今,出现过很多垃圾回收器,例如:Serial、ParNew、Parallel Scavenge、SerialOld、CMS、Parallel Old、G1、Shenandoah、ZGC 等,虽然

2020-06-28 10:47:31 712

转载 Kafka Consumer API样例

Kafka Consumer API样例1. 自动确认Offset说明参照:http://blog.csdn.net/xianzhen376/article/details/51167333Properties props = new Properties();/* 定义kakfa 服务的地址,不需要将所有broker指定上 */props.put("bootstrap.servers", "localhost:9092");/* 制定consumer group */props.put(

2020-06-23 19:03:11 637

转载 Kafka 消费者:优雅的退出消费者程序、多线程消费者以及独立消费者

1. 优雅的退出消费者程序wakeup()方法是consumer中唯一个可以在多线程中使用的方法。poll方法不会立即响应wakeup方法,并在下次poll调用时会抛出WakeupExceptionpackage com.bonc.rdpe.kafka110.consumer;import java.util.Arrays;import java.util.Properties;import org.apache.kafka.clients.consumer.ConsumerRecord

2020-06-23 18:44:00 6163

转载 理解 Kafka 消费者属性的 enable.auto.commit

前言理解一下Kafka的读的自动提交功能。找到了一篇专门介绍这个功能的文章,选择主要的内容进行一下翻译和做笔记。正文Understanding the ‘enable.auto.commit’ Kafka ConsumerpropertyKafka Consumers read messages from a Kafka topic, its not a hard concept to get your head around. But behind the scenes there.

2020-06-23 18:37:41 5840

转载 有限合伙企业、有限责任公司、股份有限公司,有这14大区别!

废话少说,小快直接上图↓↓看了是不是还有点小懵?其实其他你可以不用看先,现在市场中90%的企业都集中在三种类型:有限合伙企业,像北京**投资创业中心有限责任公司,简称有限公司,像阿里巴巴网络技术有限公司股份有限公司,简称股份公司,像中国石油天然气股份有限公司别样理解此三种类型企业为了帮助你快速理解和区分,小快要打个简单粗暴的比方:有限合伙企业,就是创始人买了一蛋糕,吃的时候有亲戚来串门,当然要请人吃一点有限责任公司,就是几个朋友凑份子买了一蛋糕,然后按出份子多少

2020-06-23 16:08:43 2646

转载 常用的重试技术—如何优雅的重试(Spring-Retry)等

背景分布式环境下,重试是高可用技术中的一个部分,大家在调用RPC接口或者发送MQ时,针对可能会出现网络抖动请求超时情况采取一下重试操作,自己简单的编写重试大多不够优雅,而重试目前已有很多技术实现和框架支持,但也是有个有缺点,本文主要对其中进行整理,以求找到比较优雅的实现方案;重试在功能设计上需要根据应用场景进行设计,读数据的接口比较适合重试的场景,写数据的接口就需要注意接口的幂等性了,还有就是重试次数如果太多的话会导致请求量加倍,给后端造成更大的压力,设置合理的重试机制是关键;重试技术实现本

2020-06-21 00:29:01 18454 2

转载 Spring-Retry重试实现原理

https://albenw.github.io/posts/69a9647f/

2020-06-20 23:32:31 721 1

转载 cglib源码分析(四):cglib 动态代理原理分析

本文分下面三个部分来分析cglib动态代理的原理。cglib动态代理示例 代理类分析 Fastclass 机制分析一、cglib 动态代理示例 1 public class Target{ 2 public void f(){ 3 System.out.println("Target f()"); 4 } 5 public void g(){ 6 System.out.println("Target g()"); 7...

2020-06-20 23:25:45 922

转载 Cglib源码分析 invoke和invokeSuper的差别

Cglib的实例本文重在源码的分析,Cglib的使用不再复述。//被代理类public class InfoDemo { public void welcome (String person){ System.out.println("welcome :" + person); }}public class CglibInfoProxy implements MethodInterceptor { private Object target; ...

2020-06-20 23:09:11 1089 1

转载 cglib动态代理中invokeSuper和invoke的区别

首先需要先说一下FastClass。在使用Cglib动态代理时会生成3个新类,如下图所示。第一个文件:代理类的FastClass类第二个文件:代理类,继承自被代理类第三个文件:被代理类的FastClass类 FastClass类主要实现了字节码与执行方法的索引关系。大致果然如下图所示,“字符串”与“对象”分别的两个过程的主要入参。cglib代理以这种方式避免了对被代理对象的反射调用,这也是cglib性能较优于JDK代理的地方。但是...

2020-06-20 21:45:25 5689 1

转载 使用Spring RetryTemplate优雅的进行重试

1、使用场景在我们与下游通过http进行数据交互时,会约定接口协议,比如:双方约定返回20000时,可以重新请求获取正确的结果。 在进行http进行网络通信时,经常会发生一些网络层面的异常如:IOException:unexpected end of stream on Connection;SocketException:Broken pipe (Write failed)、Connection reset等,比较懒的做法是加上重试逻辑,如果你是技术宅,可以深究里面的深层原因。 其它任何可以重试的

2020-06-20 20:03:44 5964

转载 解密Java内存溢出之持久代

垃圾回收是Java程序员了解最少的一部分。他们认为Java虚拟机接管了垃圾回收,因此没必要去担心内存的申请,分配等问题。但是随着应用越来越复杂,垃圾回收也越来越复杂,一旦垃圾回收变的复杂,应用的性能将会大打折扣。所以,Java程序员了解垃圾回收的机制并且知道怎样解决“内存溢出”问题会有很大的益处。在Java中,有两个非常普遍的内存溢出问题。一个是堆内存溢出,另一个是持久代内存溢出。持久代和类加载器 Java对象是java 类的实例。每当创建一个Java对象时,Java虚拟机都会创建该对象...

2020-06-20 20:01:41 879

转载 Spring Retry重试机制

在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,由于网络故障或数据库更新中的DeadLockLoserException导致Web服务或RMI服务的远程调用可能会在短暂等待后自行解决。 为了自动执行这些操作的重试,Spring Batch具有RetryOperations策略。不过该重试功能从Spring Batch 2.2.0版本中独立出来,变成了Spring Retry模块

2020-06-19 19:13:50 581

转载 Guava中Lists.partition(List, size) 方法懒划分/懒分区

Guava中Lists.partition(List, size) 方法懒划分/懒分区背景前几天有同事使用这个方法,不小心点进去查看源码,源码如下,然他通过idea工具debug发现执行完Lists.partition(List, size)这一行直接就现实了个size大小如下图:看了源码后根本就没有显示的调用size这些啊,就在那思考不知道为什么?Lists.partition(List, size)源码如下:@GwtCompatible(emulated = true)publi

2020-06-19 19:05:38 5179 1

转载 update 修改单表的多个字段,造成数据混乱

1、问题描述今天 QQ群里在讨论一个问题,在某个环境里面,需要修改单个表的多个字段,造成了数据混乱,跟理想修改的数据不一致。1.1、模拟问题现象#注意:创建的表没有主键,且 t1 表是 innodb 引擎root@localhost[keme]>createtablet1(aint,bint,primarykey(a));QueryOK,0rowsaffected(0.02sec)root@localhost[keme]>insertint...

2020-06-16 13:25:34 1242

转载 Sharding-JDBC教程

https://blog.csdn.net/forezp/article/details/94173427https://blog.csdn.net/forezp/article/details/94174577https://blog.csdn.net/forezp/article/details/94343671https://blog.csdn.net/forezp/article/details/94174114

2020-06-12 18:54:06 679

转载 shardingjdbc之shardingjdbc入门

在上文中,我们讲解了分布式环境下的分库分表,从概念及案例上分析了何为分库分表及其优缺点。我说分布式之分库分表从本文开始我们一起学习一下如何使用当前比较成熟的分库分表框架 Sharding-JDBC 实现分库分表。什么是Sharding-JDBCSharding-JDBC是分布式数据中间件Sharding-Sphere中的重要组成部分,官方的介绍如下:Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Pro

2020-06-12 18:53:22 1687

转载 SpringBoot使用Sharding-JDBC分库分表

1.有关Sharding-JDBC有关Sharding-JDBC介绍这里就不在多说,之前Sharding-JDBC是当当网自研的关系型数据库的水平扩展框架,现在已经捐献给Apache,具体可以查看Github,地址是:shardingsphere.apache.org/document/cu…shardingsphere文档地址是:shardingsphere.apache.org/document/cu…。目前貌似还不能从Maven仓库下载依赖,需要手动下载源码打包使用,所以本文使用的还是当当

2020-06-12 18:41:54 863

转载 深度认识 Sharding-JDBC:做最轻量级的数据库中间层

对于这样一个项目,想必大家都会关心它的开发初衷和适用场景等相关问题。下面先来看看张亮老师对于这些问题的解答。Q:Sharding-JDBC的设计初衷是什么?旨在解决什么场景的问题?Sharding-JDBC 的设计初衷是想提供一个数据库中间层,用于透明的处理分库分表,而无需业务开发人员在业务代码中根据分片键生成 SQL。第一版的分库分表并不是现有的 Sharding-JDBC,而是当当的一个内部框架 ddframe 的数据库模块,dd-rdb 的其中一项功能就是分库,没有分表功能,当时只是做.

2020-06-12 18:18:20 985

转载 Thread.sleep(0) 有什么用?

我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。

2020-06-12 16:40:54 1101 1

转载 Mysql的binlog开启

1.登陆MySQL查看日志状态# mysql -u root -p123456mysql> show variables like '%log_bin%';2.退出MySQL登陆mysql> exit3.修改配置文件# vi /etc/my.cnf行尾加上server-id=1log-bin=/var/lib/mysql/mysql-binserver-id :表示单个结点的id,单个节点可以随意写,多个节点不能重复,log-bin指定

2020-06-12 16:22:20 814

转载 mysqlbinlog 工具分析binlog日志

MySQL的binlog 日志对于生产环境非常有用,任何时间对数据库的修改都会记录在binglog中;当数据发生增删改,创建数据库对象都会记录到binlog中,数据库的复制也是基于binlog进行同步数据;和SQL SERVER 数据库开启完整模式的原理一样,每一次的数据的变动都会记录在案;(对数据库的select,show这些操作不会记录在binlog)下面介绍mysqlbinlog工具查看 二进制日志内容;检查工作:1,查看是否开启binlogshow variables like

2020-06-12 16:22:17 973

转载 binlog三种模式的区别(row,statement,mixed)

binlog模式分三种(row,statement,mixed)1.Row日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况。优点:在row模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程和function,以及trigger的调

2020-06-11 18:33:43 1224

转载 期货跟期权有什么不同?

作者:上证50ETF期权通链接:https://www.zhihu.com/question/349629564/answer/853364473来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这段时间经常看到投资者分不清期权和期货,他们反正都是杠杆交易,双向交易,表面上看是这样,其实细细的研究起来还真不一样。。。。。。文章来源公众号:(上证50ETF期权通)期货是什么?期货: 我以1000元/吨的价格,卖给你10吨货物,明年1月交货;交货前,你可以把.

2020-06-11 17:46:07 796

转载 TiDB 到底有什么用

如今硬件的性价比越来越高,网络传输速度越来越快,数据库分层的趋势逐渐显现,人们已经不再强求用一个解决方案来解决所有的存储问题,而是通过分层,让缓存与数据库负责各自擅长的业务场景。当前数据库领域面临各种问题,如在缩放、一致性、大数据分析、与云基础架构集成等方面均存在诸多问题,现有的数据库解决方案和大数据分析引擎解决方案基本处于割裂的状态,由于 Oracle、MySQL 数据库并不是面向分布式环境而设计,因此即使勉强通过分库、分表或中间件的方式,在数据库层面做了分片,从本质上看也只是复制了相同的堆栈,而非针

2020-06-11 16:12:44 1120

转载 分表分库解决方案(mycat,tidb,shardingjdbc)

1.sharding-jdbc(sharding-sphere)优点:1.可适用于任何基于java的ORM框架,如:JPA、Hibernate、Mybatis、Spring JDBC Template,或直接使用JDBC2.可基于任何第三方的数据库连接池,如:DBCP、C3P0、Durid等3.分片策略灵活,可支持等号、between、in等多维度分片,也可支持多分片键。4.SQL解析功能完善,支持聚合、分组、排序、limit、or等查询,并支持Binding Table以及笛卡尔积表查

2020-06-11 15:29:31 2710

转载 正回购、逆回购

2020-06-11 15:05:56 1098

转载 sharding-JDBC学习笔记

ShardingSphereShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关

2020-06-11 14:55:57 792

转载 RxJava转换操作符window

window操作符会在时间间隔内缓存结果,类似于buffer缓存一个list集合,区别在于window将这个结果集合封装成了observablewindow(long timespan, TimeUnit unit)第一个是缓存的间隔时间,第二个参数是时间单位Observable.interval(1,TimeUnit.SECONDS).take(10).window(3,TimeUnit.SECONDS).subscribe(new Observer<Observable<Long

2020-06-11 13:58:07 723

转载 redis key过期事件实现过期提醒

参考:https://blog.csdn.net/zhu_tianwei/article/details/80169900https://my.oschina.net/u/182501/blog/1927210https://www.cnblogs.com/sunsing123/p/10304184.htmlredis默认关闭,不建议开启。本文提供参考。键空间通知通常是不启用的,因为这个过程会产生额外消耗。1、开启redis配置## notify-keyspace-events E

2020-06-11 10:40:37 3514 1

转载 面试:那些问哭你的Redis分布式锁!

谈起redis锁,下面三个,算是出现最多的高频词汇: setnx redLock redisson setnx其实目前通常所说的setnx命令,并非单指redis的setnx key value这条命令。一般代指redis中对set命令加上nx参数进行使用, set这个命令,目前已经支持这么多参数可选:SETkeyvalue[EXseconds|PXmilliseconds][NX|XX][KEEPTTL]当然了,就不在文章中默写Ap...

2020-06-11 10:27:20 662

转载 HTTP/3 来了 !HTTP/2 还没怎么用起来呢,先一起扫个盲吧!

2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。此后,凭借着多路复用、头部压缩、服务器推送等优势,HTTP/2 得到了越来越多开发者的青睐,不知不觉的 HTTP 已经发展到了第三代。本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。1. HTTP/3 原理1.1 HTTP 历史在介绍 HTTP/3 之前,我们先简单看下 HTTP 的历史,了解下 HTTP/3 出现的背景。随着网络技术的发展,1999 年设计的 HT

2020-06-11 10:24:18 834

转载 Springboot 监听redis key的过期事件

需求:处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态解决方案1:可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态,如果未支付,则进行处理但是key过期了redis有通知吗?答案是肯定的。开启redis key过期提醒修改redis相关事件配置。找到redis配置文件redis.conf,查看“notify-keyspace-events”的配置项,如果没有,添加“notify-keyspace-events

2020-06-10 18:44:34 4903

转载 Redis事件通知(keyspace notification)

Keyspace 通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 Redis 数据集的事件(触发某些事件后可以向指定的频道发送通知),该功能需要 Redis 版本大于 2.8。事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下,直接使用此功能。因为 Redis 目前的订阅与发布功能采取的是发送即忘(fire and forget)策略,所以如果你的程序需要可靠事件通知(reliable notific

2020-06-10 18:39:56 1113

转载 Redis主从模式下从库过期的key仍然能够被读到的解决方案

大家在使用redis的时候,经常会用expire来设置key的过期时间,以为某个key到期就会马上清除。如果只是在单个redis(即一个主redis)下是没有问题的。但是如果为了实现读写分离,搭建了主从服务器,那么就会遇上从库Key不失效的问题了。(使用Redis3.2以后版本的同学请忽略,3.2之后的版本已不存在以下问题)场景重现:主: setex name 20 Johny 从: get name >> Johny ttl name >> 18 // 过

2020-06-10 18:34:39 1866

Zookeeper资源文件

2017-03-20

Zookeeper基础知识

2017-03-20

Zookeeper初识

2017-03-20

使用exe4j 制作java启动程序的 等候界面

使用exe4j 制作java启动程序的 等候界面,使用了 JDK6 自带splash功能。 备注 exe/jre 文件夹中 包含了 jre ,但由于大小问题,无法上传。

2014-06-12

MyEclipse 基于X-File 的Web service及调用实例详解

MyEclipse 基于X-File 的Web service及调用实例详解

2014-02-24

jquery浮动窗

基于jquery 的悬浮窗功能,有一些基本的功能

2014-01-23

java在线预览office

java使用openoffice swftools flexpaper2.1.9 实现在线预览功能

2013-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除