架构
caox_nazi
这个作者很懒,什么都没留下…
展开
-
JVM 调优手册
JVM 调优手册JVM调优总结(7):调优方法原创 2018-05-14 17:47:42 · 755 阅读 · 0 评论 -
线程池流程分析原理
线程池流程分析原理 1)首先,要清楚corePoolSize和maximumPoolSize的含义; 2)其次,要知道Worker是用来起到什么作用的; 3)要知道任务提交给线程池之后的处理策略,这里总结一下主要有4点:如果当前线程池中的线程数目小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务; 如果当前线程池中的线程数目>=...原创 2019-02-27 10:54:26 · 221 阅读 · 0 评论 -
分布式架构系统生成全局唯一序列号(研究)
分布式架构系统生成全局唯一序列号(研究)【背景】:分布式架构下,唯一序列号生成是我们在设计一个系统,尤其是数据库使用分库分表的时候常常会遇见的问题。当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。【特性需求】:1. 全局唯一;2. 支持高并发;3. 能够体现一定属性;4. 高可靠,容错单点故障;5. 高性能【业内解决方案】:(1)利用...原创 2019-03-08 11:06:46 · 3344 阅读 · 0 评论 -
请求接口超时前的预警机制
请求接口超时前的预警机制【方案一】:调用接口处理时间过长,前端访问超时解决方案,改造为轮询查询程序执行结果。参考案例:调用接口处理时间过长,前端访问超时解决方案1.后台接口改造为多线程执行,分两步:(1)创建线程执行接口内容;(2)提供接口查询功能改造方法:自动排课功能所在的service类实现Runnable接口,将自动排课的实现逻辑写在run方法中。 编写方法①创建并执...原创 2019-04-09 15:28:40 · 2312 阅读 · 1 评论 -
lock in share model(共享锁)和 for update(排他锁)事务控制
lock in share model(共享锁)和 for update(排他锁)事务控制【select ... lock in share model(共享锁)】:在符合条件的rows上都加了共享锁,这样的话,其他session可以读取这些记录,也可以继续添加IS锁,但是无法修改这些记录直到你这个加锁的session执行完成(否则直接锁等待超时)。【select ... for ...原创 2018-11-07 10:04:07 · 6633 阅读 · 0 评论 -
jvm优化之 CMS vs G1垃圾回收器
jvm优化之 CMS vs G1垃圾回收器1.【CMS垃圾回收器】(1)CMS垃圾回收器(CMS, Concurrent Mark Sweep)并行标记清理垃圾回收器,是一种多并发低停顿的垃圾收集器,回收老年代内存。垃圾收集线程与工作线程并发执行,不对内存复制或也不压缩存活的对象。如果产生内存碎片问题,会通过FULL GC 方式进行垃圾回收。(2)缺陷:随着服务存活的时间越长,J...原创 2019-04-29 17:50:23 · 1108 阅读 · 0 评论 -
Tomcat 违背双亲委派模式
Tomcat 违背双亲委派模式【Tomcat 类加载机制】:双亲委派模型要求除了顶层的启动类加载器之外,其余的类加载器都应当由自己的父类加载器加载。CommonClassLoader能加载的类都可以被Catalina ClassLoader和SharedClassLoader使用,从而实现了公有类库的共用,而CatalinaClassLoader和Shared ClassL...原创 2019-06-06 17:35:04 · 2332 阅读 · 0 评论 -
Pulsar搭建本地单机环境及测试消息发送与接收
Pulsar搭建本地单机环境及测试消息发送与接收(1)集群环境搭建单机部署官方说明文档:http://pulsar.apache.org/docs/en/standalone/Pulsar-集群环境搭建与安装部署教程:参考:https://www.jianshu.com/p/728d07918f49(本地单机不建议,没耐心做完)(2)docker部署pulsar需要环境(无需...原创 2019-07-01 18:03:40 · 7384 阅读 · 1 评论 -
(自定义)BitMap在大数据下实现去重
(自定义)BitMap在大数据下实现去重【BitMap】:bitmap是很有用的结构。所谓的bitmap就是用一个bit位来标记某个元素,而数组下标是该元素。【方式一:用byte[]数组计数实现BitMap】: 参考Java中Bitmap的实现package com.caox.utils;import lombok.extern.slf4j.Slf4j;/** * @...原创 2019-07-10 15:34:31 · 1394 阅读 · 0 评论 -
四种线程池实例详解
四种线程池实例详解 【相比直接new Thread 四种线程池优势】:a. 降低资源消耗 :重用存在的线程,减少对象创建、消亡的开销,性能佳。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。b. 提高响应速度:可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。当任务到达时,任务可以不需要等到线程创建就能立即执行。c. 提高线程的可管理性:提供定时...原创 2019-02-21 10:10:37 · 216 阅读 · 0 评论 -
Nginx在负载均衡条件下实现Session共享
Nginx在负载均衡条件下实现Session共享Nginx在负载均衡条件下实现Session共享存在两种方式:(1)Redis共享Session:【准备三台服务器】:IP:10.13.5.10 作为负载均衡服务器 和 redis 服务器IP:10.13.5.11 项目服务器01IP: 10.13.5.12 项目服务器02本文采用的是基于Nginx做JavaW...原创 2019-02-19 15:08:27 · 396 阅读 · 0 评论 -
Nginx做JavaWeb负载均衡
Nginx做JavaWeb负载均衡【linux下安装Nginx】:需要准备安装gcc、pcre-devel、zlib、OpenSSL环境,具体步骤见Linux下安装Nginx步骤 【Nginx】下载地址 :Nginx下载地址 【注意】:默认端口是80,如果冲突可以修改conf/nginx.conf中的端口号【重启nginx】:[root@localhost conf]# ...原创 2019-02-19 14:10:50 · 1161 阅读 · 0 评论 -
maven打包排除指定文件和多个jar包
maven打包排除指定文件和多个jar包1.packagingExcludes 排包使用方法:参考官网2.在项目的pom.xml文件里面添加如下配置:除了需要cloud-member-facade和commons这两个包,其他包全部去除<build> <finalName>${project.name}-${maven.build.timestamp}<...原创 2018-05-31 15:40:30 · 9676 阅读 · 0 评论 -
ElasticSearch + logstash (logstash-input-jdbc) + mysql 同步数据(三)优化各种聚合查询方法
ElasticSearch + logstash (logstash-input-jdbc) + mysql 同步数据(三)优化各种聚合查询方法 数据都同步来自mysql数据: elasticsearch查询结果显示:这里elasticsearch显示出来的createtime 字段的格式和mysql一致处理方式:jdbc.conf:select t.id,t.s...原创 2018-07-23 17:43:32 · 1105 阅读 · 0 评论 -
应对sharding-jdbc结合mybatis实现分库分表功能 分表的联合查询采用将mysql的数据同步到elasticsearch进行筛选
应对sharding-jdbc结合mybatis实现分库分表功能 分表的联合查询采用将mysql的数据同步到elasticsearch进行筛选 (一)windows平台上ElasticSearch5+logstash的logstash-input-jdbc实现mysql数据同步安装操作指南:(1)、(2)其中windows目录展示如下:版本控制:1. 需要jdk:1.8(1....原创 2018-07-18 15:24:44 · 3473 阅读 · 1 评论 -
SimpleDateFormat线程安全使用方案
SimpleDateFormat线程安全使用方案 1.问题背景:SimpleDateFormat的隐患:(1)结果值不对:转换的结果值经常会出人意料,和预期不同。(2)内存泄漏: 由于转换的结果值不对,后续的一些操作,如一个循环,累加一天处理一个东西,但是生成的日期如果异常导致很大的话,会让这个循环变成一个类似死循环一样导致系统内存泄漏,频繁触发GC,造成系统不可用。2.产...原创 2018-10-23 10:03:44 · 359 阅读 · 0 评论 -
缓冲管理器分类使用说明
Guava缓冲管理器分类使用说明【模板】:LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER) .build( ne...转载 2018-12-21 17:49:18 · 572 阅读 · 0 评论 -
JMS结合ActiveMQ实现消息传递
JMS结合ActiveMQ实现消息传递【定义概念】: 参考文献:java消息服务使用总结(JMS:通过ActiveMQ实现)【JDBC-持久化方式】 (一种ActiveMQ消息持久化机制):修改/conf/activemq.xml配置文件,首先定义一个mysql-ds的MySQL数据源,然后在persistenceAdapter节点中配置jdbcPersistenceAdapter...原创 2019-01-11 17:30:43 · 409 阅读 · 0 评论 -
RocketMQ结合Spring配置实现
RocketMQ结合Spring配置实现【maven依赖】 :<!-- rocketMQ --> <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-client</artifactId>...原创 2019-01-23 16:39:59 · 6963 阅读 · 0 评论 -
保证Spring事务内连接的唯一性
保证Spring事务内连接的唯一性 有时在Spring下 需要配置多个数据源,通过DataSource来得到操作数据库的管道Connection,多线程下保证一个线程下、一个事务的多个操作拿到的是一个Connection(ConcurrentHashMap根本无法保证),【解决方案】:通过ThreadLocal封装,变成了线程的局部变量,从而实现了(1)安全,(2)保证了一个线程下面的操作...原创 2019-02-18 14:06:53 · 614 阅读 · 0 评论 -
SpringBoot整合Elastic-job实现
SpringBoot整合Elastic-job实现【基本整合】:原理参考:Elastic-Job原理(1)引用pom依赖:<dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core</artifactId> <...原创 2019-07-19 16:28:43 · 3285 阅读 · 0 评论