自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 客户反馈每晚凌晨会有很多消息推送延时严重

问题起因:客户反馈每晚凌晨会有很多消息推送延时很久解决步骤:1、通过反应单子发现busi_task任务创建时间和完成时间延时很多2、按小时分别统计任务生成数量 和 完成数量,发现凌晨1点开始完成数量比生成数量少很多,直到凌晨3、4点才慢慢恢复3、通过任务完成耗时并没有发现很多耗时的任务,所以不是某个任务业务处理慢导致(其实这个问题还是执行业务时间很长,只是当时还没加耗时统计)4、任务执行方式由一台服务扫描后异步推送至MQ,另一台服务器消费MQ消息,发现推送时间正常,消费时间延时很久,说明确实是消费

2021-01-25 15:36:22 573

原创 很多客户反映前端页面很卡解决思路

很多客户反映前端页面很卡解决思路问题可能分析:1、数据库问题,压力过大,如慢查询过多导致,某个查询吃完了内存,数据库并发量大 都有可能2、web服务器CPU高,很多线程被锁,很多线程在等待IO或者其他服务响应3、网络宽带原因具体查找步骤1、检查Mysql数据库压力(1)可以通过监控界面查看cpu情况,如果没有监控界面权限,执行下面语句-- 查询所有事务的信息,当表被锁或查询缓慢时使用SELECT * FROM information_schema.INNODB_TRX ORDER BY

2021-01-25 15:34:03 3060

原创 大表重命名方式清碎片

当一张大表有太多的碎片,如果使用云mysql则需要每天支付数据存储费用,清除该碎片最为划算,同时提高了表的执行效率问题,表数据量比较大,使用 OPTIMIZE TABLE t_warning_record执行很慢,而且需要停机。此方案不可接受。此时根据分析业务场景表有冷热数据,切热数据只有这10天的,此时可以使用表重命名的方式清碎片,具体步骤如下-- 1、复制表和索引,并设置AUTO_INCREMENT值不会冲突DROP TABLE IF EXISTS t_warning_record_b..

2021-01-25 15:28:51 225

原创 mysql前端多表大数量分页列表展示查询优化

前端主业务多表大数量分页列表展示查询很慢Select a.*, b.*from t_order aInner join t_shipmemt b on a.shipment_id=b.idLeft join t_order_extend c on c.order_id=a.idWhere a.company_id=1 and a.create_time>date_sub(curdate(), INTERVAL 15 DAY)Order by a.name desc limit.

2021-01-25 15:19:46 374

原创 mysql没有按预定的索引顺序执行

mysql没有按预定的索引顺序执行,导致查询性能差mysql没有按预定的顺序执行,即走的索引不是最优,没有走a表`ENTITY_ID`索引,走了b表`COMPANY_ID`SELECTa.`ENTITY_ID`,COUNT(DISTINCTb.`ID`)ASctFROMWl_Early_Warning_RecordaINNERJOIN`wl_early_warning`bONa.`EARLY_WARNING_ID`=b.`ID`WHEREb.`COMPAN...

2021-01-25 15:15:48 223

原创 正式环境问题分析脚本

-- 1、查询某列是否别索引引用show index from t_loca where column_name like 'status'-- 2、查一张表有哪些索引show index from t_busi_task where key_name='STATUS';select count(id) from t_order;-- 查看表创建sqlshow create table t_user;-- 3、强制走某索引SELECT * FROM XXX_log force i..

2020-10-31 12:29:05 156

原创 git使用

参考地址:https://blog.csdn.net/weixin_38399962/article/details/797123791、新建分支该页面后点击new branches, 输入分支名称, 再push到仓库2、git 更新时提示MERGE_HEAD exist解决方法rm .git/MERGE_HEAD删前记得保存自己要提交的代码3、批量删除本地分支git branch |grep hotfix_4 |xargs git branch -Dhotfix_4为分支匹配名称4、

2020-10-31 12:17:38 126

原创 navicat 快捷键

1.ctrl+q 打开查询窗口2.ctrl+/ 注释sql语句3.ctrl+shift +/ 解除注释4.ctrl+r 运行查询窗口的sql语句5.ctrl+shift+r 只运行选中的sql语句6.F6 打开一个mysql命令行窗口7.ctrl+l 删除一行8.ctrl+n 打开一个新的查询窗口9.ctrl+w 关闭一个查询窗口F7执行光标开始的一句完整sql11、shift+home 选择该行从光标开始到行头12、shift+page 选择该行从光标开始到行尾13、ctrl+D

2020-10-31 12:15:42 830

原创 linux-命令-书籍

需要记住的命令Tab键,提示ctrl+c 停止某个正在执行的命令ctrl+z 挂起某个正在执行的命令, 并不会结束.执行fg 命令可以重新启动这个被挂起的命令.比如vi修改文件时需要执行其他命令,执行后按fg回到victrl+d 退出文本,相当于输入exitman page 在线求助page命令, 空格键下一页,q退出一、基础命令datedate +%y/%m/%d 20/07/10date +%H:%M 15:43calcal 2020 整年的日历cal

2020-10-31 12:11:10 291

原创 Mysql高性能

图片 https://www.jb51.net/article/151100.htmMysql 分层https://www.jianshu.com/p/327a36f08d13https://blog.csdn.net/hanpeiyu1995/article/details/89969030一、MySql架构1、逻辑架构(Mysql分为Server层和插件式存储引擎层。不同的存储引擎共...

2019-09-02 18:48:34 769

翻译 java虚拟机内存

一、1、JDK(java development Kit) 包括 java程序设计语言、java虚拟机、Java API类库 三部分, 是支持java程序开发的最小环境。 JRE(java Runtime Enviromet)包括 Java API类库中的Java SE API子集和java虚拟机 两部分,是支持java程序运行的标准环境。2、Sun HotSpot VM是目前使用最广...

2018-08-05 11:22:56 5043

原创 ocs计费项目重要点

ocs计费项目重要点,使用分布式dubbo架构宗旨是保证用户权益,可以适当损失公司部分利益。一、安全性、可靠性 1、过载保护,当队列数量达到一定阈值,将数据保存到mongodb中,等到服务器压力降下来后去数据库捞。 2、使用redis分布式锁保证数据的安全性。 3、redis分布式锁不能保证长处理流程,比如调到其他服务器,其他服务器重复批价、或同时批价流量,此时要做重复

2017-09-28 15:09:52 732

原创 Redis和Memcached的区别

1、Memcached出来的时间较redis早 2、redis支持大数据存储,mecached不适合 3、Memcached只支持简单的key/value存储,redis支持list、set、hash、zset、sorted set数据存储 4、Memcached宕机后数据就会丢失,redis支持数据持久化,内存中的数据保持在磁盘中,重启后可以加载进行使用 5、redis支持海量数据,分布式

2017-09-28 15:08:45 1397

原创 AbstractQueuedSynchronizer类源码解析

AbstractQueuedSynchronizer类

2017-09-03 11:00:53 362

原创 List Set Map简单理解

List Set Map简单理解

2017-08-26 17:09:38 523

原创 JDK1.8 StampedLock源码解析

1 如果读取执行情况很多,写入很少的情况下,使用 ReentrantReadWriteLock 可能会使写入线程遭遇饥饿(Starvation)问题,也就是写入线程迟迟无法竞争到锁定而一直处于等待状态。2 StampedLock控制锁有三种模式(写,读,乐观读),一个StampedLock状态是由版本和模式两个部分组成,锁获取方法返回一个数字作为票据stamp,它用相应的锁状态表示并控制访问,数字0表示没有写锁被授

2017-08-04 20:44:29 3175

原创 分布式锁

一、redis事务实现分布式服务接口幂等 优点:轻量级处理,没有复杂的逻辑。拒绝相同请求同时访问接口导致数据混乱。

2017-08-01 20:38:24 553

原创 Lock和Synchronized区别

参考网站: Synchronized内部原理:http://www.cnblogs.com/javaminer/p/3889023.html1、Lock主要开销在未获得锁的线程进入等待队列阻塞上下文切换的开销,竞争不激烈时,Synchronized使用的轻量级锁和偏向锁,这两种锁都能有效减少轮询或者阻塞的发生,此时Synchronized效率会较Lock高些。 竞争激烈时,Syn

2017-08-01 11:13:33 542

原创 ReentrantReadWriteLock类源代码分析

1、非公平锁(吞吐率比公平锁高) 第一个尝试获取锁的线程都可以获得锁资源 当写锁时,该线程的读锁和写锁可以获得锁,其他线程的写锁和读锁都得不到锁资源,进入队列等待。 读锁时,所有读锁可以得到锁,所有写锁进入队列等待。 2、公平锁 线程将会以队列的顺序获取锁。当当前线程释放锁后,等待时间最长的写锁线程就会被分配写锁;或者有一组读线程组等待时间比写线程长,那么这组读线程组将会被分配读锁。 3、支持锁重入,即同

2017-07-28 20:18:30 480

翻译 《一线架构师实践指南》

《一线架构师实践指南》[一线架构师实践指南].温昱 http://download.csdn.net/download/exc_rsy/49329676个经典困惑:1、将系统划分模块,如何更合理?2、大系统架构设计,如何起步?3、总觉得需求很糟糕,影响了架构设计。4、非功能需求很重要,但如何设计?5、架构亲手:缺乏指导,架构设计不知所措。6、架构老手:缺乏总结,任怕下个项目。架构设计方

2017-07-21 15:44:16 785

翻译 设计模式-命令模式

命令模式

2017-07-18 12:39:26 355

翻译 设计模式-装饰器模式

装饰器模式(Decorator Pattern) 允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 主要解决:一般的,我们为了扩展一个类经常

2017-07-14 14:00:52 338

翻译 设计模式-观察者模式2

观察者模式 java内置Observer模式。

2017-07-14 09:51:39 299

翻译 设计模式-观察者模式

观察者模式

2017-07-14 09:37:55 339

翻译 设计模式-策略模式

策略模式

2017-07-12 16:17:06 338

原创 《java多线程编程核心技术》

《java多线程编程核心技术》为什么要使用多线程a、提高系统的吞吐率。可以有多个并发的操作,如I/O处理、访问数据库等耗时操作会释放CPU时间片,使CPU可以处理其他线程。b.提高响应性。异步执行任务,将耗时的操作丢给其他工作者线程执行,调用可以很快的收到响应并执行其他操作。c、充分利用多核CPU。随着现代CPU的生产工艺从CPU主频频率转向多核化,即在一块芯片上集成多个CPU内核,因此多线程编程充分利用计算

2017-07-06 11:04:40 928

原创 Sping-boot spring-cloud学习地址

spring boot 学习地址: http://www.roncoo.com/article/detail/124661 创建一个spring boot 项目:http://blog.csdn.net/clementad/article/details/51334064spring cloud学习地址: http://blog.csdn.net/k21325/article/details/52

2017-03-24 10:07:37 723

翻译 java多线程设计模式 -- 流水线模式(Pipeline)

十一、流水线模式(Pipeline) 1、核心思想 将一个任务处理分解为若干个处理阶段,其中每个处理阶段的输出作为下一个处理阶段的输入,并且各个处理阶段都有相应的工作者线程去执行相应的计算。 2、评价: 充分利用CPU,提高其计算效率。 允许子任务间存在依赖关系的条件下实现并行计算。 非常便于采用单线程模型实现对子任务的处理。 有错误处理 Pip

2017-02-24 17:29:43 11546 5

翻译 主仆模式(Master-Slave)

十、主仆模式(Master-Slave) 1、核心思想 一个基于分而治之思想设计模式,将一个任务(原始任务)分解为若干个语义等同的子任务, 并由专门的工作者线程来并行执行这些任务,原始任务的结果是通过整合各个子任务的处理结果形成的。 2、评价: 即提高计算效率,又实现了信息隐藏。 3、适用场景 a、并行计算,目的是提升计算性能。 b、容

2017-02-23 11:51:09 25248

翻译 串行线程封闭(Serial Thread Confinement)

九、串行线程封闭(Serial Thread Confinement) 1、核心思想 通过将多个并发的任务存入队列实现任务的串行化,并为这些串行化的任务创建唯一的一个工作线程进行处理。 本质:使用一个开销更小的锁(队列锁)去替代另一个可能开销更大的锁(非线程安全对象引用的锁) 2、适用场景 a、需要使用非线程安全对象,但又不希望引入锁。 b、任务的执行涉及

2017-02-22 11:47:43 2075 2

翻译 线程特有存储模式(Thread Specific Storage)

八、线程特有存储模式(Thread Specific Storage) 1、核心思想 通过不共享变量实现了线程安全,避免了与锁的消耗及相关的问题。每个线程都有且只持有一个变量实例 2、适用场景 a、需要使用非线程安全对象,但又不希望引入锁。 b、使用线程安全对象,但希望避免其使用的锁的开销和相关问题。 c、隐式参数传递:他是线程全局可见的 d、特

2017-02-21 18:42:06 716

翻译 线程池模式(Thread Pool)

七、线程池模式(Thread Pool) 1、核心思想 使用队列对待处理的任务进行缓存,并复用一定数量的工作者线程去取队列中的任务进行执行。 本质是使用极有限的资源去处理相对无限的任务 2、线程是有限的资源。不仅在执行任务时消耗CPU和内存等资源,线程对象本身以及线程所需的调用栈也占内存,并且java创建一个线程意味着JVM会创建相应的依赖宿主机操作系统的本地线程 3、评价

2017-02-21 17:36:48 765

翻译 主动对象模式(Active Object)

七、主动对象模式(Active Object) 1、核心思想 一种异步编程思想,允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离,实现了异步编程。 有利于提高并发性,从而提高系统的吞吐率 2、适用场景 适合分解一个比较耗时的任务(如I/O任务)已减少主线程的等待时间。 3、可复用代码 ActiveObjectProxy

2017-02-21 15:15:57 1610

翻译 生产者消费者模式之工作窃取算法

生产者消费者模式之工作窃取算法 1、一个通道只有一个队列,多个消费者共享一个队列实例,导致锁的竞争,如果一个通道拥有对个队列,则消费者可以从通道中获取各自队列获取数据。 2、如要服务有高性能和可靠性的要求,Consumer-Producer模式请使用 kafka等开源工具public interface WorkStealingEnableChannel<P> extends Chanel<P>

2017-02-16 09:14:34 2003 1

翻译 生产者消费者模式(Producer-Consumer)

六、生产者消费者模式(Producer-Consumer) 1、核心思想 通过管道对数据的生产者和消费者进行解耦,使二者不直接交互,从而使二者的处理速率相对来说互不影响。 2、注意通道积压 a、使用阻塞队列。 b、使用带流量控制的无界阻塞队列。 3、可复用代码 无 4、参考网站 Semaphore信号量控制 学习地址:http://www.

2017-02-16 09:03:21 1587

翻译 承诺模式(promise)

承诺模式

2017-02-15 10:34:09 1022

翻译 两阶段终止模式(Two-phase Termination)

1、核心思想将停止线程这个动作分解为准备阶段和执行阶段,提供了一种通用的用于优雅地停止线程的方法2、支持多个可停止线程需要共用一个线程停止标志场景,如多个线程实例使用一个队列中的数据。此时notifyThreadTermination发挥作用。3、可复用代码Terminatable、AbstractTerminatableThread、TerminationToken4、参考网站

2017-02-14 15:20:25 1572

翻译 保护性暂挂模式(Guarded Suspension)

1、核心思想如果某个线程执行特定的操作前需要满足一定的条件,则在该条件未满足时将线程暂停运行(即暂挂线程,使其处于等待(waiting)状态,直到该条件满足时才继续运行)2、评价与实现考量a、GuardedAction call方法采用闭包方式,会增加JVM垃圾回收的负担。b、可能增加上下文切换,过多则会消耗系统的CPU,从而降低系统处理能力。c、内存可见性和锁泄露, 可改变的

2017-02-13 10:04:20 1479

翻译 immutable Object 不可变对象设计模式

二、不可变对象设计模式(immutable Object)1、一个严格意义上的不可变对象a、类本身使用final修饰:防止其子类改变其定义行为。b、所有字段都用final修饰c、在对象的创建过程中,this关键字没有泄露给其他类:防止其他类(包括内部匿名类)在对象创建过程中修改其状态。d、任何字段,若引用了其他状态可变的对象(如集合、数组、对象等),则这些字段必须是privat

2017-02-09 15:20:47 574

原创 linux 简单命令

table: 补全,ctrl + c : 退出死循环,cd .. : 后退,ls: 查看当前目录,pwd: 查看当前目录,“.”表示当前目录,“..”表示当前目录的父目录,“/”表示根目录,cat 文件名      打印文件sz 1.log.gz    下载1.log.gz文件find name "mysql"vi demo.c  修改demo.c文件

2016-12-23 09:38:09 507

空空如也

空空如也

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

TA关注的人

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