自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cblstc的博客

订个小目标,挣他一个亿。

  • 博客(143)
  • 收藏
  • 关注

原创 项目中的SQL查询优化案例

文章目录前言案例测试情况总结前言SQL优化是Java程序员几乎必备的技能,本人也深知其意义,不管是面试还是工作,对我们是非常有帮助的。尤其是开发版本时,需要引入新表的情况,需要考虑未来业务的体量,去建立合适的索引。案例取工作中的实际需求来说,有这样一个查询, A表关联B表,条件基本都是在B表上,同时在B表做了order by操作。explain select d.* from product_demands_demo d JOIN product_demand_push_log_demo l on

2022-03-30 23:22:37 548

原创 leetcode 142 环形链表

文章目录前言正文前言最近为什么突然开始刷题了呢。主要是这几年来一直有刷题的计划,但都不能很好的坚持下来。原因还是找不到正确的刷题方法,盲目刷题,一道题目可以想半天。于是我就放低自己的标准,每天刷一道题目,刷题时结合题解,一天也不会花太多时间。循序渐进,也不要有很大的功利性。正文今天分享一下刷到的比较有意思的题目,环形链表,题目大概就是要求找出环形链表的入口。看题解的数学分析时,觉得有点意思,当然,我是想不到这种解决方案的。主要使用快慢指针法,由于是环形链表,快指针肯定会和慢指针相遇。那么通过推

2022-01-15 19:38:06 355

原创 mysql MVCC总结

文章目录MVCC总结事务隔离级别MVCC的含义版本链ReadView规定规则MVCC和事务隔离级别的关系可重复读为什么不能解决幻读问题?MVCC总结事务隔离级别读未提交读已提交 -> 解决脏读可重复读 -> 解决不可重复读序列化 -> 解决幻读MVCC的含义多版本并发控制,通过维护undo日志的版本链实现读已提交和可重复读。版本链undo日志维护一个trx_id和roll_pointer字段,其中:trx_id 标识事务的idroll_pointer 指

2021-12-06 21:11:01 227

翻译 Java中断方法和中断异常

原文:https://codepumpkin.com/interrupt-interrupted-isinterrupted-java-multithreading/https://codepumpkin.com/interruptedexception-java-multithreading/学习Java中断时,看到两篇浅显易懂的文章(虽然比较啰嗦),尝试翻译下来,略有增删改。interrupt/interrupted和isInterrupted方法这篇文章,我们将解析Java多线程的interr

2021-08-16 11:57:57 1205

原创 Future源码阅读

文章目录FutureRunnableFutureFutureTask总结Futurepublic interface Future<V> { // 取消任务,返回true,则isCancelled和isDone都返回true // 参数:true表示如果任务在执行则中断它;false表示如果任务在执行,则取消它。 // 返回是否取消成功。 boolean cancel(boolean mayInterruptIfRunning); boolean isC

2021-08-10 17:35:06 76

原创 ThreadLocal解析

123

2021-07-30 18:55:46 72 1

原创 rocketmq源码解析-生产者启动和发送流程

文章目录前言生产者源码分析生产者启动流程获取MQClientInstanceMQClientInstance#start开启定时任务定时更新路由信息NameServer返回路由信息生产者发送消息验证消息路由查找选择队列故障延迟机制消息发送总结前言本文基于rocketmq4.8.0源码,讲解生产者的启动和发送消息的流程生产者源码分析生产者启动流程这是一个简单的同步发送的代码,我们进入producer.start方法康康。public class SendWayProducer { publ

2021-06-27 11:49:45 260

原创 rocketmq源码解析-nameserver和broker的启动

文章目录准备创建rocketmq工作目录编译运行NameServer运行brokerNameServer启动流程创建NameServer Controller开启NameServer初始化NamesrvController定期移除不活跃的broker重新维护路由表调用NamesrvController#startbroker启动流程创建BrokerControllerBrokerConfigMessageStoreConfigBrokerController#initializeBroker开启broker

2021-06-27 09:58:44 627

原创 mysql sql成本计算

成本计算mysql找出所有可能用到的索引,每个索引都去计算成本,再和全表扫描的成本对比,决定使用哪个索引或直接走全表。全表扫描的成本计算查找某个表的统计信息,rows字段表示表的记录数,这个值在MyISAM是准确的,在Innodb是一个估计值;data_length字段表示聚簇索引所占空间大小=聚簇索引页数x每页大小show table status like 'orders'我们就可以得到聚簇索引的页数=data_length/每页大小(16kb)=data_length/(16*1024)

2021-05-31 11:21:12 796

原创 sql优化学习

文章目录执行计划idselect_typepartitionstypepossible_keyskeykey_lenrefrowsfilteredextra执行计划通过执行计划,我们可以分析一条sql语句的性能,是我们进行sql优化的关键。我们看看执行计划包含了哪些信息。id每个sql都有一个id,如果使用子查询,那么id就不同。如果使用union查询,会产生一个id=NULL的临时表,主要对UNION表结果进行去重合并。select_typeSIMPLE简单的查询,不涉及union或子查

2021-04-27 15:06:33 135

原创 事务隔离级别小测试

文章目录事务隔离级别预备操作读未提交读已提交可重复读序列化事务隔离级别本文主要对事务隔离级别做测试,以加深对隔离级别的理解。预备操作-- 建表create table t_user( id int auto_increment primary key, name varchar(255) null, age int default 0 null, status int default 1 null);-- 数据准备ins

2021-04-07 16:07:44 120

原创 Spring源码解析之ConfigurationClassPostProcessor

文章目录ConfigurationClassPostProcessor@Conditional@Component@ProvertySource@ComponentScan@Import@ImportResource@Bean解析this.deferredImportSelectorHandler.process()ConfigurationClassPostProcessor调用入口为AbstractApplicationContext#invokeBeanFactoryPostProcessors,

2021-03-31 22:54:06 236

原创 Spring源码解析-AOP

文章目录AOP生成代理对象AOP的一些概念AOP入口AOP什么时候生成代理AOP如何生成代理创建代理AOP生成代理对象AOP的一些概念AOP的概念特别抽象,还是得通过代码去理解。public class AopConfig { // config包下的类和子类 @Pointcut(value = "execution(* com.cbl.aop.config..*.*(..))") public void pointcut() {} @Before(value =

2021-02-28 16:03:41 165 1

原创 Spring源码解析之bean的实例化

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-01-31 20:17:07 117

原创 2020总结

辞旧迎新,2020年最后一天来一个大总结。2020是不平凡的一年,疫情打乱了全人类的生活节奏,而我在这一年貌似变得更懒了?感觉写了很多文字,下笔还是毫无章法。还是分下类总结清晰点。运动:打球。毫无疑问,今年绝对是我打球次数最少的年份,并不是因为自己有多忙,其中各种缘由,容我细细道来。首先是疫情,几个月的时间没打过球,可能养成了习惯,解封后就很少再打球了。另一个原因是,今年莫名其妙的喜欢上足球,看西班牙人的比赛,关注五大联赛的积分,同时也时不时刷刷b站的足球板块和懂球帝。其实我最爱的还是足球,只是因为场

2020-12-31 10:27:35 115

原创 activiti学习笔记

文章目录前言activiti学习原理概念activiti的表定义bpmn流程图部署流程图开启流程完成任务总结前言项目中要使用activiti工作流引擎,虽说两年前第一份工作接触到了工作流的内容,然而在两年后我还是对activiti这种技术望洋兴叹。也是为了弥补之前的遗憾,所以就对activiti进行了一些了解。activiti学习原理activiti把流程相关的数据存储到自定义的一些表中。activiti使用的大概步骤时:定义bpmn流程图->部署流程图->开启流程->完成任务。

2020-12-16 11:41:51 182

原创 Spring源码解析之xml解析

关键类的层级关系BeanDefinitionBeanFactoryApplicationContextSpring IOC源码解析Spring容器的初始化(以xml配置为例)首先进入AbstractApplicationContext的构造方法,追踪找到refresh()方法,这个方法是IOC容器初始化的核心方法。我们需要关注下obtainFreshBeanFactory()方法,主要是解析xml配置文件并封装成BeanDefinition对象// org.springframework.co

2020-12-10 11:46:02 526

翻译 使用零拷贝进行高效数据传输

Many Web applications serve a significant amount of static content, which amounts to reading data off of a disk and writing the exact same data back to the response socket. This activity might appear to require relatively little CPU activity, but it’s some

2020-12-02 17:41:55 291

原创 java stream学习

Stream学习Stream流式操作方便我们对集合进行操作,使用过程中有几个点需要注意,本人踩过坑。首先理解中间操作和最终操作,中间操作是惰性加载的,只有到达最终操作时,才会执行中间操作的代码。用实例来学习stream的用法,这里有一个Boy和一个Girl类,其中Boy类有girlFriends,nickname等属性,这些下面会用到。public class Boy { private String name; private List<String> nickName;

2020-12-02 14:28:11 135

原创 netty源码解析1

文章目录DefaultChannelPipelineAbstractChannelHandlerContextHeadContextTailContextByteToMessageDecoderMessageToByteEncoderChannelFutureDefaultPromiseAbstractNioChannelDefaultChannelPipelineimplements ChannelPipeline构造方法,维护头尾节点,头尾节点组成双向链表。ChannelHandler封装成Ch

2020-11-30 13:49:13 193

原创 Java线程的本质

文章目录序言模拟一个线程Java线程的本质调试JDK源码配置jdk8环境编译openjdk9linux安装clion开始调试java的start方法其他资料vmware设置固定ipcentos安装图形界面xming+xshell打开命令行序言模拟一个线程我们知道,java为我们提供了Thread线程类操作线程,那么我们如何不使用Thread实现线程呢?我们可以手动去调用操作系统的线程方法,操作流程图如下:Created with Raphaël 2.2.0ThreadTest.java#start1

2020-10-27 14:16:07 320

原创 zookeeper学习(占坑)

为什么要学习zk?分布式,dubbo、kafka分布式系统是什么?不同硬件、软件、网络、计算机,仅仅通过消息进行协调和通讯分布性一个项目拆分成多个服务对等性服务对等、数据对等并发性多线程、多JVM缺乏全局时钟每个节点都有自己的时间系统故障随时发生节点发生故障可能性大分布式架构应用层、服务层、基础设施、数据库层zookeeper的作用,类比为交警,每个节点是路上的车,为了交通的可用性,zk需要知道每个节点的健康状态(如公交车出故障了,需要及时排出新的公交车(服务注册与发现),在

2020-09-27 08:19:58 309

原创 HashMap源码解析

文章目录前言Hash解析数据结构构造函数Hash算法定位数组的下标获取元素添加元素删除元素扩容和并发安全问题## 总结前言姗姗来迟的HashMap总结。HashMap有多重要自不必多说,基本算是必问的题目。本人之前断断续续的读了HashMap的源码,也是老了记性差,所以记录下来,方便以后回顾。这次重读HashMap源码,第一感觉就是,源码思路就是那么水到渠成,非常符合程序员的思维习惯。以至于,就算你不看源码,你也能大概说出部分功能的实现流程。好了,废话不多说,进入正题。由于不同版本jdk的HashMa

2020-08-13 11:45:09 203

原创 Fork/Join的用法

fork/joinfork/join采用了分而治之的思想,拿到一个任务,不断分解任务,直到子任务达到某个条件(如小于某个值)即可执行子任务。子任务处理完毕,再把子任务合并。创建一个继承RecursiveTask(有返回值)或RecursiveAction(无返回值)的任务类,实现compute方法。调用时,创建一个ForkJoinPool,用来执行/提交任务。了解submit/invoke/execute的区别,在代码里面有注明。同步用法:计算和public class ForkJoinSum

2020-08-12 12:08:03 1245

原创 常用并发工具类的使用

常用并发工具类的使用。CountDownLatchCountDownLatch是一个计数器,当计数器的值大于0时,执行等待方法await,阻塞直到计数器的值等于0时,才放行。Lach有门闩的意思,可以把它理解成一道栅栏,举个生活中的例子,运动员在起跑线上,等待发号员口令,这是运动员调用的是await方法。发号员数"3、2、1“时,调用了三次downCount方法。当值为0时,运动员就开跑。public class CoundownLatchTest { private static fina

2020-07-30 17:29:42 297

原创 shell脚本最后一个命令是tail -f时,关闭shell导致tomcat无故挂掉的问题

背景最近遇到一个非常奇葩的问题,服务器经常无缘无故挂掉,而且是同一时间挂掉两台tomcat(负载),后来百度了下,搜到一个答案。现象启动tomcat的脚本最后一句带上了tail -f 输出日志,当关闭shell时,tomcat随之挂掉。当成一个现象来看,知道有这么一回事。暂不做细究。解决方案去掉tail -f脚本或者脚本执行完直接ctrl+c退出即可。...

2020-06-18 16:44:47 1369

原创 好物推荐

好物推荐这篇博客主要是用来推荐一些日常工作生活中的一些好物。罗技无线蓝牙键盘k380最近经常泡自习室,使用笔记本的键盘总感觉声音太大。因为我也听过其他人用笔记本键盘,的确很烦人。所谓己所不欲勿施于人。于是就打起了静音键盘的主意。网上找了罗技的一款无线蓝牙键盘k380,上手后的确声音小很多,不注意的话根本听不到,终于可以安心的敲代码了。这款键盘的优点有:静音。可在自习室大胆用。可同时连接三台设备,可一键切换。蓝牙,延迟基本没有,意味着如果笔记本自带蓝牙的话,可以省一个usb口。小巧便携。键

2020-06-07 13:57:18 1602

原创 使用Prometheus进行服务器监控

文章目录背景搞起安装Prometheus安装Grafana可视化工具安装监控客户端背景公司服务器很多,最近要求每台服务器都要安装服务器监控,我就顺理成章的当了一回运维。不过话说回来看,这玩意还是挺实用的,可对服务器的资源,如CPU、内存、磁盘等进行实时监控,好工具用起来。搞起参考地址:https://www.cnblogs.com/fatyao/p/11007357.html参考地址:https://devopscube.com/monitor-linux-servers-prometheu

2020-05-25 16:31:47 2419

原创 jenkins部署vue和tomcat项目

文章目录Jenkins使用方法Jenkins安装、启动Jenkins配置部署前端vue项目部署后端项目附录tomcat热部署简单的重启shell脚本Jenkins使用方法Jenkins安装、启动官网下载war包,放到指定目录,后台启动cd /develop/server/jenkins/nohup java -jar jenkins.war >nohup.out --httpPort=8888 &访问http://192.168.157.133:8888/修改密码为

2020-05-24 17:54:53 587

原创 总结JVM的垃圾回收机制

文章目录前言判断对象是否存活引用计数法可达性分析对象引用的类型强引用软引用弱引用虚引用垃圾回收算法标记清除法复制算法标记整理法分代算法垃圾回收器Serial(复制)ParNew(复制)Parallel Scavenge(复制)Serial Old(标记整理)Parallel Old(标记整理)CMS(标记清除)G1前言本文介绍JVM垃圾回收相关的知识。主要内容有:判断对象是否存活、对象引用的类...

2020-03-31 21:08:27 174

原创 使用mycat进行mysql的读写分离

文章目录背景步骤前期准备安装mycat配置server.xml配置schema.xml测试总结背景眼看还有一天多这个月就过去了,这个月还没有产出博客。坚持这么久,不能就这样放弃了。最近在部署一个应用,需要用mycat做读写分离,成热打铁,学了点mycat的皮毛。马上操刀!步骤前期准备三台机器为192.168.1.129, 192.168.1.130, 192.168.1.131,129...

2020-03-30 21:01:34 205

原创 多线程之CountDownLatch

文章目录背景CountDownLach案例代码和注释背景最近宅家办公,效率低下,总觉得有点失落,哪里也去不了,无奈只能写一篇博客来发泄发泄。刚好最近在优化代码,有个功能需要同时调用三个外部接口,看旧代码是三次调用顺序执行,每次调用超时3s,如果遇到网络渣的情况,整体调用时间可能超过9s,还有很大的压榨价值啊!刚好最近在学多线程,利用学过的一点知识小试牛刀,也不失为人生的一大快事啊!Coun...

2020-02-18 16:37:15 264

原创 Alibaba Cloud Toolkit工具的使用

教程idea安装该插件Tools > Alibaba Cloud > Alibaba Cloud View > Host > Add Host > Test Connection右键项目 > Alibaba Cloud > Deploy to HostDeployment:​ Target Directory:打包后上传路径,eg: /hom...

2020-01-15 18:30:27 184

原创 2019年终终结

前言9102年还有两天就过去了,我与大部分人一样,心中充满慌乱,但又充满对新一年的期盼。我相信很多人年初定下的目标还没实现,所以应该会跟我一样,自责和愧疚。然而,写下这些文字的时候,我在大脑里想了下,我为什么要写这篇文章,是为了增加自己的焦虑?还是不断的打击自己?如果是这样的话,那么文章到这里就可以停下来了,没意义。写这篇文章的目的是总结过去,面向未来,总没有坏处吧。当然,更多的是作为自己成长过...

2019-12-31 13:25:21 200 2

原创 linux安装oracle12c

文章目录安装Oracle 12C安装oracle必要的软件包新增用户组和oracle用户解压oracle数据库安装文件创建oraInst.loc文件授权oracle用户访问权限创建目录并授权配置系统内核参数配置资源限制配置应答文件运行安装程序配置环境变量创建和配置监听创建和配置数据库连接数据库解决乱码开放1521端口启动数据库卸载Oracle总结安装Oracle 12C安装oracle必要的软...

2019-12-23 09:33:12 689

原创 Vue 3.x 集成tinymce 5.x富文本编辑器

文章目录前言步骤如何自定义插件?IE浏览器编辑器加载慢的问题Uncaught SyntaxError: Unexpected token <问题前言以前用过百度编辑器,一把辛酸泪,各种坑+长期无人维护。于是新项目用上了号称世界第一的tinymce. 去官网溜达一圈后,果断放弃,一是访问速度慢,二是文档不友好。参考了很多博主的文章,总算是集成成功。步骤安装tinymcenpm i...

2019-11-18 21:15:03 1924

原创 springboot整合redis

文章目录报错Java.lang.ClassCastException报错Java.lang.ClassCastException原因:springboot devtools 维持两个classloader,一个是经常变化的class,另一个是不常变化的class,然后我们的获取缓存的代码在经常变化的classloader里,而redis序列化配置在不经常变化的classloader,意味着我们...

2019-11-13 22:46:21 95

原创 记录一次循环异步请求的'bug'

背景有这么一段代码,循环发送10次异步请求,请求以每次的下标为参数。for (var i=0; i<10; i++) { ajax({ url: '/api/xxx?index' + i })}结果10次请求的url都是:api/xxx?index=9,也就是说,10次请求都把最后一次请求的参数当参数。原因for循环执行完毕,再执行10次异步请求,这个时候的i已经是9了...

2019-10-16 17:24:06 159

原创 excel表设计模型转powerdesigner pdm模型

文章目录前言代码注意前言最近使用excel设计表结构,想根据表结构在powerdesigner生成pdm模型,进而生成sql语句。一开始每个表都去复制粘贴,由于表数量太多,最终放弃,考虑使用脚本的方式直接转换。网上普遍使用vb脚本完成这个功能,由于vb我并没学过,所以在别人代码的基础上稍加修改,为自己所用。代码不可能完美,只为满足功能需要,如有错误,敬请谅解。代码Option Explic...

2019-10-16 15:14:05 745

原创 Java设计模式-命令模式

背景主持人:各位好,欢迎再次莅临机战世界。机体工厂最近为我们新进了一批古铁,目前正在有条不紊的训练机师中,由我们的响介队长来示范下如何使用古铁进行攻击。下面我们有请响介队长。响介:我是响介,古铁mkiii的机师,联邦军队长。今天教大家如何让古铁发动攻击。我们不可能直接命令古铁进行攻击,我们必须有一个中介,通过中介去命令古铁,这个中介就是按钮。群众(烦躁中):哪那么多废话?主持人:我们把响介...

2019-10-15 18:14:24 199

空空如也

空空如也

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

TA关注的人

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