自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿里开源工具 TProfiler --在海量业务代码中精确定位性能代码

如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确定位系统瓶颈:我们应用里静态对象不是太多、有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有问题。那么问题来了,如何在海量业务代码里边准确定位这些性能代码?本文将介绍如何使用阿里开源工具 TProfiler 来定位这些性能代码,成功解决掉了 GC 过于频繁的性能瓶颈,并最终...

2019-01-03 19:47:03 440

转载 drools的RETE算法

1. 概述Rete 算法是卡内基梅隆大学的 Charles L.Forgy 博士在 1974 年发表的论文中所阐述的算法。 该算法提供了专家系统的一个高效实现。Rete 在拉丁语中译为”net”(即网络)。Rete 是一种进行大量模式集合和大量对象集合间比较的高效方法,通过网络筛选的方法找出所有匹配各个模式的对象和规则。其核心思想是用分离的匹配项构造匹配网络,同时缓存中间结果。以空间换时间。规则编译(rule compilation)和运行时执行(runtime execution)。2.

2020-09-25 01:20:59 1014 1

原创 互联网高可用相关技术

异地多活场景下的数据同步1 什么是单元化如果仅仅从"单元化”这个词汇的角度来说,我们可以理解为将数据划分到多个单元进行存储。"单元"是一个抽象的概念,通常与数据中心(IDC)概念相关,一个单元可以包含多个IDC,也可以只包含一个IDC。本文假设一个单元只对应一个IDC。2 如何实现数据同步需要同步的组件有很多,例如数据库,缓存等,这里以多个Mysql集群之间的数据同步为例进行讲解,实际上缓存的同步思路也是类似。2.1 基础知识为了了解如何对不同mysql的数据相互进行同步,..

2020-09-22 01:52:07 521

原创 webSocket结合rabbitMQ实现消息推送

Rabbitmq和websocket实现消息通信的整理问题描述在用springboot 集成websocket过程中,利用rabbimq实现消息代理的时候,会出现一些坑,纪录下遇到的问题,以备份防坑。按以下4个步骤,基本上可以跨坑。步骤描述步骤一:Rabbitmq要实现消息代理,需要开启stomp通道 ①进入到rabbitmq安装目录下的sbin: ...

2020-08-12 01:23:21 4864

原创 mysql连接未释放,导致无法进行DB操作(长连接及短连接)

相关连接: show processlist 分析:http://blog.chinaunix.net/uid-134240-id-220211.html长连接相关:https://www.cnblogs.com/wangtao_20/p/4783524.html项目运行时抛出异常:org.hibernate.exception.GenericJDBCException: Could...

2020-08-12 01:22:12 1861

原创 mysql5.6优化资料

目标了解什么是优化 掌握优化查询的方法 掌握优化数据库结构的方法 掌握优化MySQL服务器的方法什么是优化?合理安排资源、调整系统参数使MySQL运行更快、更节省资源。 优化是多方面的,包括查询、更新、服务器等。 原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。数据库性能参数使用SHOW STATUS语句查看MySQL数据库的性能参数 SHOW STATUS LIKE ...

2020-08-12 01:21:31 141

翻译 Eclipse的MAT相关使用

https://blog.csdn.net/jackesy/article/details/47039865https://javablog.net/page/231/java-automatically-generates-dump-files-when-memory-overflows.htmlhttp://www.codingyun.com/article/93.htmlhttp...

2020-08-12 01:20:48 86

原创 POI导出大数据量解决方案

导出报表导不出 一个月:分析问题:1、开始认为报表查询sql不够优化,sql优化多次之后 发现在生产数据库,sql根本就查询不出结果集;2、如果sql或存储过程查询很慢会造成数据库连接超时;3、POI HSSFWorkbook、XSSFWorkbook生成excel 文档会造成JVM内存溢出;4、如果数据库返回结果集太多,也会造成内存溢出5、http请求超时6、ja...

2020-08-12 01:16:50 726 1

转载 Kafka客户端是如何找到 leader 分区的

在正常情况下,Kafka中的每个Topic都会有很多个分区,每个分区又会存在多个副本。在这些副本中,存在一个leader分区,而剩下的分区叫做 follower,所有对分区的读写操作都是对leader分区进行的。所以当我们向Kafka写消息或者从Kafka读取消息的时候,必须先找到对应分区的Leader及其所在的Broker地址,这样才可以进行后续的操作。本文将要介绍的就是 Kafka 是如何找到 leader 分区的。我们知道, Kafka 是使用 Scala 语言编写的,但是其支持很多语言的客户端,

2020-07-07 00:10:06 1675

转载 semaphore(信号量)内部实现原理

 Semaphore用于管理信号量,在并发编程中,可以控制返访问同步代码的线程数量。Semaphore在实例化时传入一个int值,也就是指明信号数量。主要方法有两个:acquire()和release()。acquire()用于请求信号,每调用一次,信号量便少一个。release()用于释放信号,调用一次信号量加一个。信号量用完以后,后续使用acquire()方法请求信号的线程便会加入阻塞队列挂起。本篇简单分析Semaphore的源码,说明其实现原理。  Semaphore对于信号量的控制是基于AQS(

2020-07-06 01:19:36 2050

转载 CountDownLatch内部实现原理, 基于AQS

CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch使用示例:首先我们写一个示例,看看怎么使用CountDownLatch工具类CountDownLatchTest.java 1 2 3 4 5 6 7 8 9 10 11 12 13

2020-07-06 01:00:12 344

转载 java排查内存问题的工具清单及流程

平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。闲话不多说,开搞。Linux命令类tail最常用的tail -ftail -300f shopbase.log #倒数300行并进入实时监听文件写入模式grepgrep forest f.txt #文件查找grep forest f.tx

2020-06-30 17:37:32 455

原创 mysql的聚簇索引和非聚簇索引

话不多说, 先放上总结:InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分;  一般建表会用一个自增主键做聚簇索引,没有的话MySQL会默认创建,但是这个主键如果更改代价较高,故建表时要考虑自增ID不能频繁update这点。  我们日常工作中,根据实际情况自行添加的索引都是辅助索引,辅助索引就是一个为了需找主键索

2020-06-29 17:34:43 547

原创 drools的kie-api介绍和使用

kie在drools jbpm uberfire里广泛被使用,下面对kie-api中的几个重要组件做下简单介绍maven依赖<dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>6.0.2.Final</version></dependency>几个组件K.

2020-06-29 10:05:04 807

转载 paxos算法原理解析(重新排版)

其他优秀文章:https://www.cnblogs.com/linbingdong/p/6253479.htmlhttps://www.zhihu.com/question/19787937 我们了解了2PC和3PC之后,我们可以发现,无论是二阶段提交还是三阶段提交都无法彻底解决分布式的一致性问题以及无法解决太过保守及容错性不好。Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。Paxos..

2020-06-23 16:01:40 542

转载 RSA加解密算法原理和示例

1. 什么是RSARSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语根据密钥的使用方法,可以将密码分为对称密码和公钥密码对称密码:加密和解密使用同一种密钥的方式公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。2. RSA加密RSA的加密过程可以使用一个通式来表达也就是说RSA加密是对明文的E次方后除以N后求余数的过程。就这么简单?对,就是这么简单。从通式可知,只要知道E和N任何人都可以进行R

2020-06-18 17:08:16 3733 1

转载 Zuul、Ribbon、Feign、Hystrix使用时的超时时间(timeout)设置问题

写在前面因为测试 Feign + Hystrix 搭配模式下的降级(fallback)超时时间自定义问题,算是踩了个坑,然后就顺便查+测试了下 Zuul、Ribbon + Hystrix 模式下分别怎么设置测试这些东西费了不少力气,因为这几个模块要么搭配使用、要么有内部依赖别的模块、要么对其他模块做了封装,这个配置项就变得千奇百怪,而且网上的东西,一直觉得有个很”严重”的问题,就是版本不明,版本号都不一样,解决方案或者说配置方式可能完全不同,而很多的文章中也没有提及他们用的是哪个版本,搞得我是晕头转

2020-06-16 15:05:26 1737 1

原创 深入分析AQS原理

写在前面:实现的关键:CLH,state非公平锁的锁抢占是在各node(thread)入CLH队列的时候确定的, head节点释放锁之后,CLH链上的节点依次获得锁.而不是释放锁之后再进行抢占.从Lock作为切入点我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通用手段,也是我们工作中用得比较多的方式。Lock APILock是一个接口,方法定义如下void lock() // 如果锁可用就获得锁,如果锁不可用就阻塞直到锁释放void lockInte.

2020-06-03 15:36:22 347

转载 什么时候会抛出InterruptedException,如何处理InterruptedException

何时会出现InterruptedException?  当一个线程处于阻塞状态下(例如休眠)的情况下,调用了该线程的interrupt()方法,则会出现InterruptedException。 @Test public void testName() throws Exception { // 被中断的线程 final Thread t = new Thread(){ @Override public

2020-06-01 16:06:40 5207

转载 springboot下 kafka 手动创建topic并指定分区(partition)数及分区副本(replica)数

依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> &l.

2020-05-29 16:55:59 15365 1

转载 Kafka分区(partition)如何分配给消费者

1. 前言我们知道,生产者发送消息到主题,消费者订阅主题(以消费者组的名义订阅),而主题下是分区,消息是存储在分区中的,所以事实上生产者发送消息到分区,消费者则从分区读取消息,那么,这里问题来了,生产者将消息投递到哪个分区?消费者组中的消费者实例之间是怎么分配分区的呢?接下来,就围绕着这两个问题一探究竟。2. 主题的分区数设置在server.properties配置文件中可以指定一个全局的分区数设置,这是对每个主题下的分区数的默认设置,默认是1。当然每个主题也可以自己设...

2020-05-28 09:53:17 4715

转载 kafka单机部署

1.前言kafka是一个分布式且基于发布/订阅的消息系统。架构图如下:概念:producer:生产者,负责发布消息到kafkabroker:代表一台或多台服务器topic:每条发送到kafka集群的消息都会有一个类别,物理上不同的topic存储到不同的broker,逻辑上一个topic可能分别存储在一个或多个broker上,但是生产者或消费者只需要指定topic而无需关心存储zookeeper:集群管理流程:Producer使用push模式将消息发布到.

2020-05-26 16:15:56 1216

原创 kafka脚本无法关闭No kafka server to stop

写了两个kafka启动/关闭脚本, 发现启动成功, 关闭显示No kafka server to stop/opt/kafka_2.13-2.5.0/bin/kafka-server-start.sh /opt/kafka_2.13-2.5.0/config/server.properties &/opt/kafka_2.13-2.5.0/bin/kafka-server-stop.sh /opt/kafka_2.13-2.5.0/config/server.properties &a

2020-05-26 16:11:47 547

转载 mongodb常用shell操作

MongoDB数据导出及导入我目前用到的分别是 mongodump 和 mongorestore,他们语法挺相似。导出mongodump --host localhost:27017 /data/backup/csser.com/csser.3-9/表示将当前数据库导出到 csser.3-9 目录中去,导入用 mongorestore 即可恢复。导入...

2019-12-13 10:47:38 442

原创 跨域漏洞Response header配置 Access-Control-Allow-Origin

浏览器只允许请求当前域的资源,而对其他域的资源表示不信任。那怎么才算跨域呢?请求协议http,https的不同 域domain的不同 端口port的不同好好好,大概就是这么回事啦,下面我们讲2种中规中矩的办法:CORS,JSONPdocument.domain,window.name,web sockets就先别闹了,腰不好 : )2、CORS这是W3C的标准,全称是"跨域资源...

2019-12-09 15:54:45 21076

原创 页面嵌套拒绝连接Refused to display 'URL' in a frame because it set 'X-Frame-Options' to 'DENY'

使用activiti7整合springboot2 ,页面以iframe形式来加载页面。然后浏览器就报错了。原因是因为activiti7引入了springSecurty.而springSecurty使用X-Frame-Options防止网页被Frame使用 X-Frame-OptionsX-Frame-Options 有三个值:DENY表示该页面不允许在 frame 中...

2019-11-30 16:18:07 5518

转载 springboot整合activiti配置项说明

asyncExecutorEnabled属性设置设置true后将代替那些老的Job executorspring.activiti.async-executor-enabled=falsespring.activiti.job-executor-activate=falseasyncExecutorActivate是指示activiti在流程引擎启动就激活AsyncExecutor,异步...

2019-11-28 11:42:06 640

原创 JVM宕机问题排查,产生hs_err_pid<pid>.log与replay_pid<pid>.log日志

另一个案例(也比较完善)参考:https://blog.csdn.net/chenssy/article/details/78271744oracle官方文档:https://www.oracle.com/technetwork/java/javase/crashes-137240.htmlhttps://www.oracle.com/technetwork/java/javase/f...

2019-11-26 15:54:44 8257 1

原创 运行一段时间报Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit

部署微服务,20个服务部署到一台腾讯云服务器上. 多个项目运行一段时间均报错:2019-11-23 16:04:19.418 INFO 19851 --- [nio-8780-exec-4] c.c.common.aspect.ControllerLogAspect : http_method : POST2019-11-23 16:04:19.418 INFO 19851 --...

2019-11-25 16:32:47 6747

原创 多线程ForkJoinPool介绍及使用

背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。这种思想值得学习。主要参考《疯狂java讲义》使用Java7 提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合...

2019-09-25 16:32:16 1029

原创 mysql分组统计百分比

SELECT t2.time statisName, ROUND(T1.co / T2.totalCo * 100, 1) value FROM ( SELECT DATE_FORMAT(CREATE_TIME, '%Y-%m') time, COUNT(*) AS co FROM t_event WHERE ...

2019-09-24 10:11:05 688

原创 mysql使用count+group by 日期,无数据的日期补0方法

1、先用一个查询把指定日期范围的日期列表搞出来-- t_device 为任意表,只需要数据量大于要统计的天数SELECT @cdate := date_add(@cdate, INTERVAL - 1 DAY) AS statisName, 0 AS countFROM ( SELECT @cdate := date_add(CURDATE(), INTERVAL + 1...

2019-09-06 16:08:30 3044

转载 使用Eclipse对线上环境远程调试

对于使用Eclipse进行日常编程工作的工程师来说,调试是每天都在进行的工作。针对一般意义上的调试过程,相信每一位工程师朋友都熟练掌握了。这里介绍几个调试中比较实用的高级功能。Eclipse远程调试Java自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。由于部署环境的差异性,相信很多朋...

2019-08-29 12:02:19 318

原创 springboot2.0集成activiti6.0报java.lang.ArrayStoreException异常

将某个整合了Activiti6.0的项目从Spring Boot1升级Spring Boot2之后出现如下报错,查了很多不同的解决方法都没有解决:Spring boot2项目启动时遇到了异常:java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy网上有人抛出的异常是java.l...

2019-08-27 10:56:57 837

原创 使用JWT进行用户身份校验(基于token)

jwt的其他资料:https://baijiahao.baidu.com/s?id=1608021814182894637&wfr=spider&for=pchttps://www.jianshu.com/p/8f7009456abccors解决跨域:https://blog.csdn.net/csdn265/article/details/80258928无状态协...

2019-08-22 17:36:12 5713 2

原创 rabbitmq启动报错

[root@mysql01 sbin]# ./rabbitmq-server RabbitMQ 3.6.15. Copyright (C) 2007-2018 Pivotal Software, Inc. ## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## #...

2019-08-08 19:07:36 5949

原创 使用mongoTemplate的MapReduce分组报错

功能是将昨天的数据 用spCode和deviceCode分组统计,统计的时候报错No converter found capable of converting from type [org.bson.BsonUndefined] to type [java.lang.String]java代码/** * 获取昨天分组统计后的数据 */ @Override public ...

2019-08-01 12:01:31 663

原创 springBoot使用redis的key过期通知功能

背景:项目中有一个触发+执行动作功能, 当条件被触发后 可以设置时间 延时执行动作.思考了一下,有以下几种方式:Quartz 任务调度框架,更适合周期性的执行任务,对于订单超时未支付,只能采用5分钟一轮询数据库的形式实现 Timer java原生定时工具,可少量使用,当数据量大时,性能不好控制 Quartz + Timer 周期轮询(5分钟)数据库,查询出5分钟之内将要超时的订单,...

2019-07-23 17:27:41 3585 2

原创 Quartz 整合springboot 动态添加、修改和删除定时任务

quartz原理参考:https://blog.csdn.net/xlxxcc/article/details/52104463这里实现了定时任务动态变更. job类可以引用spring-bean功能pom文件: <dependency> <groupId>org.quartz-scheduler</groupId> ...

2019-07-12 13:55:23 4207 3

转载 如何选择mongoDB内嵌还是引用?

其他参考:https://blog.csdn.net/yanghaijianyumi/article/details/41521979MongoDB的范式化,是将数据分散到不同的集合中,不同的集合之间可以相互引用数据。如果需要修改某一块数据,只需要修改保存这块数据的文档即可,但查询时,需要在不同集合之间执行连接查询,需多次查询实现。反范式化,将每个文档所需的数据都嵌入在文档内部,每个文档都...

2019-07-11 11:20:23 587

工作流引擎Activiti预研报告

工作流引擎Activiti预研报告,包含介绍,优缺点, 可行性分析

2019-05-06

GC根节点示意图+eclipse护眼配置

GC示意图+eclipse护眼配置(豆沙绿),用工具栏的FILE--Import--preference

2018-09-30

JVM构造思维导图

JVM构造思维导图.......

2018-09-14

jsoup爬虫案例

jsoup爬虫案例...................................................................................。。。。。。。。。。。。。。。

2017-09-18

java开发文档1

..........................................,很好用的开发文档, 包含java常用的所有技术............................................................................

2017-09-05

java开发文档3

spring struts2 w3cschool........................................................................................................................................................

2017-09-05

开发文档2啊 java的

jdk1.6中文 mysql 5.1 linux指令......... EASYUI ....... jquery1.8...................oracle函数 等等

2017-09-05

空空如也

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

TA关注的人

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