自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

原创 从线程池执行任务说起,看看线程池中的线程什么时候关闭

大概说下问题(类似),就是新建一个线程池,核心线程是3个,最大线程数是6个,阻塞队列是12,过期时间是20s,假设每个线程处理完一个任务需要1s。如果一次性来了18 个任务,也就是线程全开,队列塞满,那么:3s之后(也就是任务搞完了),每2s来一个任务,20s之后非核心线程会关闭么?乍一看到这个问题,我也是懵了,非核心线程不是到点了就关掉了么?哦,你任务处理完了,我还有6个线程,每2s来一个,处理一个要1s,就这事?我一个线程就能搞定啊,还要啥6个线程?非核心线程可以关了啊!还在那干啥子?浪费性能!

2021-04-26 17:52:49 2596

原创 ThreadLocal源码分析---相同线程数据共享,不同线程数据隔离

本来是想说下java中的Thread的,毕竟之前就写了join和Thread的状态,本来想把下面的也说了,不过碰到了一只拦路虎ThreadLocal,两者有许多关联,为了彻底搞清楚Thread,还是要先说一说ThreadLocal,所以又回到了这里。 ThreadLocal 大家应该都有些熟悉,刚刚开始熟悉java的时候,大伙往数据库里面写数据,需要创建数据库连接,不知道大家当时有没有遇到过连接被占用的问题,\(^o^)/~,查资料之后才知道要使用ThreadLocal,当然,现在...

2020-11-17 16:03:55 815 1

原创 看一看LRU与LFU

LRU(Least recently used:最近最少使用)和LFU(Least frequently used:最不经常使用),两个都是链表结构,一般是作为缓存使用,当然,既然是缓存,空间肯定是有限制的,不然你直接把内存挤爆了,那程序也只能GG了。

2023-07-07 17:04:59 417

原创 聊聊Redis中的跳跃表

redis的跳跃表是由两部分构成。zskiplist和zskiplistNode,zskiplist结构用于保存跳跃表节点的相关信息、指向表头和表尾的指针,层级等。zskiplistNode表是跳跃表节点,有层级、数据、分值、后退指针(backward)BW等。

2023-06-20 18:25:24 1677

原创 从MySQL小表驱动大表说起

a表有100条记录,b表有10000条记录,两张表做关联查询时,是将a表放前面效率高,还是b表放前面效率高?

2023-04-19 19:01:30 2224 6

原创 一起来领略JDK8中的流式编程的魅力

来看一看JDK8中lambda语言中的过滤、转换、归并、统计、计算、分组、转Map等等操作,尤其看一看Collectors那些你可能还没用到的奇妙功能!

2022-08-16 16:42:24 712

原创 MySQL查询为啥慢了?

学贵有恒,人贵有志。面对手机电脑的诱惑,心底的那点脆弱不堪的防线太容易被击破了。虽说“金无足赤人无完人”,可照这样下去,含金量无疑是越来越低啊。 得,没事还是多刷刷Spring,看看技术栈吧,今天就再来看看MySQL,希望能温故而知新吧!......

2022-08-04 11:28:54 3929

原创 瞅一瞅JUC提供的限流工具Semaphore

微服务架构发展到今天,各个服务之前的调用、接口请求越来越频繁,服务器承受的压力自然也越来越大。如果放任所有请求请求到服务器,不管是服务器也好还是数据也好,都可能被因为无法承受大批量的请求而阻塞、宕机甚至是GG,尤其是一些查询接口请求特别频繁的情况下,是需要对请求进行一定限制的。 譬如:钉钉打卡数据,动辄几十上百万数据,这种数据一秒钟来个几百次请求,钉钉估计也够呛,调用频率肯定有限制。一些支付流水,对账单也是这个原理,在请求方面都有一些限制。 还有,服务接口限制,频繁点击提示亦或是

2022-07-05 11:37:25 395

原创 算法练习---字符串包含子串(KMP)

字符串包含问题,看一看传说中的KMP算法,咦,没想到,居然看懂了

2022-06-18 19:07:05 779

原创 算法练习----Z 字形变换

Z 字形变换

2022-06-14 13:53:34 94

原创 算法练习-最大括号深度

最大括号深度的计算

2022-06-14 10:36:07 381

原创 一头扎进JVM存储结构与运行过程

不知道大家有没有买过这本书《java从入门到精通》,没错,就是这本!不错,学java的时候,就是奔着精通去的!不过,就凭借这一本书就像精通java? “书到用时方恨少”听过没?行业内卷听说过没,想要精通java?先推荐几本书! 看完之后,不知还有没有底气说出精通java?好了,闲话不多说,来看一看java的冰山一角,java类的运行过程!刚刚入门java的时候,想必大家都写过一个main方法, pub.........

2022-06-02 15:41:37 170

原创 org.springframework.dao.DataIntegrityViolationException: Error attempting to get column

org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'result' from result set. Cause: java.sql.SQLDataException: Cannot determine value type from string

2022-05-16 15:36:31 3967 4

原创 一文看懂 redo log 与undo log

对于MySQL来说,每次对数据库file文件的修改都是一次事务,当然直接一句insert 或 update后台就默认帮你提交了,不需要你关注那么多细节,而且这种简单的事务几乎不存在事务并发问题,毕竟耗时短,提交快,而且总有一个先后

2022-04-18 17:50:32 5616

原创 锁 + 事务还是超卖了?

spring事务中的那点事 首先看下这个问题,ReentrantLock + Transaction 结果还是超卖了!...

2022-04-11 18:57:53 1673

原创 回顾下接雨水问题

接雨水问题

2022-03-29 15:47:18 977

原创 来看一看滑动时间窗格

有句话叫什么来着?心似平原走马,易放难收!有空的时候抽点时间看看书什么的也没什么,不过,如果一周两周一直不看书,或者不学习,估计再想拿起书本就有点困难了。当然,拖得越久,就变得更懒~,恶性循环就是这么来滴!或许某一刻,一个当头棒喝袭来,才能从懒惰中醒来!子曰:吾日三省吾身!尚书:知易行难!得,废话不多说,看一看传说中的滑动时间窗格。说实话,刚开始学习这个东东,对它的作用很明确:流控(流量控制)。比如:某个接口的对流量或者对数据的请求有限制,每秒只允许100...

2022-03-28 20:48:41 1642

原创 finalize()方法小记

finalize()这个方法吧,实话实说,还真是没用过!!但是呢,一些笔试还特别喜欢考这个东东,你说无奈不无奈? 你问为啥不用?来来来,瞅一瞅你就知道了。 先看看这个方法! protected void finalize() throws Throwable { }方法protected,默认啥都没干,并抛出异常。算了,贴下Object里面的方法吧,一些地方还就喜欢问这些东东。/** * Object 主要方法 **/ /** ...

2021-12-03 16:16:50 676

原创 postman批量发送请求小记

postman这个工具大家应该都用过,毕竟现在大部分都是基于restful风格开发,平时进行测试的话,一个是本地测试,一个是使用工具进行外部请求,一般使用postman或者是jmetter。 今天想说下这个东西呢,主要是被难受到了。。 搞一个post请求,批量请求接口的,硬是弄了2个小时没出来,。。简直了!必须记住这个深刻的教训,立帖为证! 先简单秀张图吧!简单的页面展示,下面写个接口来测试吧。然后试下接口...

2021-12-01 10:33:41 9273 2

原创 限流之令牌桶算法(一)

之前已经说过漏桶算法,请求过来之后,由漏桶来阻挡,最后将流量漏出去,达到限流的目的,削弱峰值流量对服务器的压力。 不过,漏桶算法真正在生产中用的并不是很多,更多的还是使用令牌桶算法。什么是令牌桶算法呢? 说的已经很清楚了么,令牌--桶。就是一个桶里面放了令牌(一个校验或者说是一个通行证),每次有请求过来,必须要从桶里拿到令牌(许可证),才允许通过。如果拿不到,那不好意思,你就不允许通过了。 令牌是哪里来的呢?当然是定时生成的啊,就好像桶的...

2021-11-18 15:19:28 780

原创 限流之漏桶算法

现在,微服务大行其道,好多项目都是拆分,再拆分,美其名曰:解耦!这个不多说,适合自己的实际项目就好,反正项目都是会逐渐演进。 不过,无论哪种服务,一旦用户量大了,请求多了,服务器压力就会很大,有时候,可能直接把服务器搞崩溃了。于是,我们常用的一些中间件或者是一些策略方法,便进入到了项目之中。比如:消息中间件的削峰填谷,布隆过滤器的拦截鉴定,Nginx的轮询转发等等等等。 今天,就来说一个中间件常用的限流算法,木桶算法! 简单描述一下,其实也就是类...

2021-11-15 20:15:58 1349

原创 到底计算机编码是个啥子东东?

记得还上高中那会,那时候进行的微机考试,考的语言是Visual Basic ,也就是VB,嗯,编程语言之中也算是比较简单的。 通体学习的也就是if......else......,然后加个数据声明什么的。 当然,这些东东对于一些很少接触电脑的高中生来说,比如当时的我,也就是感觉,有点陌生,有点小难度。 偶尔同学聊天,就会吐槽,为啥编程语言不用汉语来呢,那样多简单! 当然,现在可能也有不少伙伴,仍然想着,咋还没有汉语的编...

2021-11-05 14:42:21 482

原创 某某:说一说数据库查询有哪些优化?

前段时间,偶然看到这么一个面试题,心里那个滋味,哎,啥也不说了。还记得以前面试的时候也碰到了类似的问题,怎么回答的印象不是很深刻了,但是回答的绝对不咋地。呼啦啦来了几句,然后 总是有种,似有千言万语,但是不知道说啥的样纸。。网上随便一搜,哗啦啦来了四五十条什么数据库注意事项啊,索引的使用啊。仔细看看,嗯!​​​​​​​​​​​​​​​​​​​​​...

2021-08-31 15:00:48 142

原创 自定义环形链表,简单实现约瑟夫问题

17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。 简单写个代码实现下,自定义一个环形链表,然后定义新增删除方法,将这30个人加到链表中去,然后没数到9,就,干掉。 当然,使用ArrayList和Li...

2021-06-19 10:58:10 136

原创 走进索引,看一看数据库查询(一)

走进索引

2021-06-15 18:37:32 233

原创 聊一聊java线程池ThreadPoolExecutor(三)——线程池中是如何执行任务的?

看到这个图片没?没错,就是一辆教练车!我,一个已经工作了好几年大龄暖男,最终还是走上了学车的道路!环顾周围,同事中几乎都手持驾照了。早上挤出了一小时,练习科目二,前进,后退,前进,后退!最后小腿感觉麻木了,上班还晚了半小时。哎,终究还是承受了这个年纪不该承受的酸痛~ 悔不当初啊,大学那么闲,干啥不把驾照考了啊!由此我们可以看到,嗯,挣钱真的很重要啊!有钱了直接请个司机,它不香么?学什么车啊!言归正传,车不车的咱先不管,当然,也不能随便开车,不然博客都没法发了,嘿嘿!我们想要跟踪下线程..

2021-04-15 14:49:20 777

原创 找出最大长度重复字符串

闲话不多说了,写了一个简单的查找算法,就是找出最大长度重复字符串,或者说找出规律字符串等待之类的,都是这个意思。题目如下:问题比较easy,就不多啰嗦,说下思路,直接上代码!思路:重复次数肯定和长度相关的,比如长度为14 ,那么重复的只能是1,2,7,14个字符长度的字符串,对比其他的并没有意义方法:字符串长度求余,字符串分割对比,递归循环,直到找到最长的字符串代码如下,几乎每行都注释了,老铁们应该看得懂,感觉还行的话,关注下撒!点个赞也可以的哟~import org...

2021-04-14 18:32:06 1690

原创 索引初探,MySQL数据库查询

数据库,简而言之,就是存储数据的,提供数据读写的系统。我们最常见的就是关系型数据库(MySQL)和非关系型数据库(Redis),今天我们就来简单的认识下MySQL中数据中的一个关键点——索引!数据的读写无处不在,java代码中,我们会将一些临时数据存入栈中,进行入栈和出栈,或者是存在堆中、方法区中,在需要的时候去获取。当然,这些都只是少量数据的存取,稍微多一点的数据,我们可能会再加一层封装,将数据放到数组或者List中(最终也是存在堆中),在需要的时候去获取数据。

2021-04-12 19:01:22 166

原创 布隆过滤器?好像有点局限啊,瞅一瞅布谷鸟过滤器

之前我们已经看过了布隆过滤器,它通过hash和散列,对已有数据进行标记,通过对比请求数据,最终实现对请求数据过滤的功能。对于网站攻击拦截,数据去重,都有不错的效果。当然,布隆过滤器也有着自己的局限性,首先就是数据流通性问题,我们知道,目前互联网中,数据时刻都是在流动的,布隆过滤器必须事先将已有的数据提前放入过滤器,之后才能进行过滤,而且,这个过程中,并不能进行删除和修改操作,这样对变化很快的数据来说,是很不友好的。

2021-04-08 14:52:04 437

原创 MySql笔记个人小记

MySQL虽然勉强算是初窥门径,但是里面知识点太多了,在这里记录下吧,毕竟好记性不如烂笔头。1.union 与 union all 的区别 union all 求并集,而且不去重,union的话是求并集,去重2.select 查询中,查询条件 in 与not in放到一起不一定是全集。比如,select * from student where id_card in ('123',null) union allselect * from student where id_card not...

2021-04-02 19:07:01 203

原创 布隆过滤器是什么?一起来瞅瞅!

布隆过滤器,看名字就知道,不就是一个过滤器么!首先,过滤器大家都知道,像筛子啊,纱网啊用来过滤大颗粒的工具,最终获取我们想要的。还记得某个矿泉水的广告么,全部工序经过20道以上的过滤流程!牛皮爆了!可能过滤沙子什么的也都算一层过滤吧!【微微一笑:呵呵】前几天,看Redis方面的东西的时候,看到了一个结构,叫做BitMap,等看完之后,我恍然:好家伙,这不就是布隆过滤器的根子么!于是,我默默在心里打个箭头,指向了布隆过滤器。来来来,先加个百度词条,秀点字数:布隆过滤器(Bloom Filter.

2021-03-30 15:53:15 172

原创 细看一下AQS中Condition的源码

单刀直入,今天就是想说一下ConditionObject源码,闲话不多说。ConditionObject这个单词看着可能有点陌生,不过Condition你总熟悉了吧?在ReentrantLock中,一般都是使用condition.await(),condition.signal()来实现锁的等待唤醒机制。没有作用,强行逻辑的代码都是耍流氓!...

2021-02-02 14:12:12 325 3

原创 发现了一个java创建对象的知识点,吓得我赶紧记下来

我们知道,java是面向对象编程,一句顺口溜是什么来着?万物皆对象!

2021-01-14 15:49:09 136

原创 放松一下,聊聊Redis操作命令

看了一天的博客,头懵懵的,没感觉脑袋要炸,只是实在看不下去了,码码字,放松一下,说的都是基础,面向面试请移步,深入了解请换页,哈哈。说到Redis,大家都知道,这是一个非关系型数据库。它不需要保持高度的一致性,像MySQL这种关系型数据库,每一个表里面的每一条数据都是保持高度的一致性的,比如一个人学生的信息是学生表的一条数据,比如张三,那么这条记录的几个甚至几十个字段是一致的,比如你拿到了张三的学生编号,那么其他的数据都是固定的。都是有‘关系’的,当然,这种关系越多,就是字段越多,数据的读写(IO)肯定

2021-01-08 19:13:07 142

原创 com.fasterxml.jackson.databind.JsonMappingException: Unsupported field: HourOfDay

最近碰到一个异常,对就是json转换的异常!com.fasterxml.jackson.databind.JsonMappingException: Unsupported field: HourOfDay 这个是主要的报错信息,其他的栈溢出一大堆就不贴了。回头再看,这个异常就感觉比较low了,初见时真的是毫无头绪,感觉这种bug就是奇葩的bug,瞅了一圈,不知道在代码哪一行报的错,栈里面的异常全是引用的jar包,贼烦人!问题找不到原因,不用想,一定是有些很平凡的东西被你忽略了,特别是...

2020-12-11 11:03:18 3883 1

原创 聊一聊java线程池ThreadPoolExecutor(二)——线程池状态

我们知道一旦有任务来了,线程池就会分配线程去处理任务,或者把任务放到缓存队列中去。那么线程池是如何高效处理任务的呢?多个任务进入了缓存队列,多线程取任务,这又是如何处理并发问题的呢?线程都有有状态的,那么线程池有状态么?我们一点一点来看看哈。首先,说下基础的线程池状态属性。线程池状态:线程池一共有五种状态,并且对这五种状态进行了一定的封装,他们分别是:RUNNING:能接受新提交的任务,并且也能处理阻塞队列中的任务,就是在运性。 SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处

2020-12-04 11:15:43 376

原创 聊一聊java线程池ThreadPoolExecutor(一)

关于java线程池,大家手写的可能不多,使用的话一般都是直接使用封装好的,具体内部的实现可能只是简单的了解下,一来是方便使用java线程池,当然还有一个更重要的作用,嘿嘿,大家都懂的。其实理解java中一些源码的运行机制对大家的学习帮助是非常大的,一方面源码中的代码都十分精简,逻辑之间的管理很优雅,另一方面,熟悉源码之后,遇到现实生产中的问题,就很容易去关联到可能出现问题的某个节点,不然真拉出一大堆日志,然后一点点排查重试,特别是并发问题,真的能把人逼的崩溃哈。今天就来说下线程池,我们由浅入深,一点

2020-11-26 19:04:26 177

原创 简单了解Java线程Thread

之前的文章中,提到了线程的一个关键方法join,以及Thread的线程状态,这些都是Thread代码中的内容,今天,我们再来看一看Thread。

2020-11-24 17:02:03 131

原创 对比java线程Thread,闲聊线程状态

我们知道,线程的生命周期分为5种生命状态:新建,就绪(可运行),运行,等待,死亡,这些状态几乎是所有线程都必然会经历的。之前一次面试,一个面试官问我,java的线程类Thread,有几种状态?5种啊!面试官笑了笑。。反正那次面试没过。虽然感觉自己回答的没问题,回来还是查了下,曰!Thread的线程状态是TMD的6种,当时就有一种感觉,这是被降维打击了么,还没明白题目的意思,就被直接KO!后来仔细对比了下线程状态,在这里说一说。线程的生命周期:1.新建(new):新创建一个线程对象。类似new T

2020-10-28 18:16:16 155

原创 数据库事务(二)------Mysql数据库锁

我们已经了解了数据库事务隔离级别脏读,虚读,不可重复读,不过想要更好的对数据库操作,提高数据库读写的性能,我们还需要了解数据库的另一个机制---数据库锁!其实,刚刚使用mysql数据库不久的伙伴,对数据库锁可能没啥概念,而且可能还有疑问,难道数据库会死锁?没见过啊,死锁了数据库不久GG了么?首先要确认一个东西,那就是数据库当然会死锁,既然有事务,有隔离,有并发,逻辑一旦处理不好,死锁肯定是会发生的。至于大多数小伙伴没遇到过,一个是因为你可能接触的业务并发不是特别高,业务逻辑不是特别复杂,还有一个重要

2020-10-26 17:32:54 128

EasyYapi插件指导文档

根据注释,直接生成yapi接口,操作简单,使用方便

2023-03-09

easyExcelUtil文件包

引入阿里巴巴EasyUtil,直接使用工具类导入导出

2022-11-21

spring-listener-0.0.1-SNAPSHOT.jar

spring内置监听者demo

2021-04-14

中国大陆区划地区数据-四级联动

中国大陆区划信息数据,不包含港澳台,数据形式是从MySQL导出的sql语句,可以直接进行导入数据库。区域细分到四级街道

2020-11-17

空空如也

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

TA关注的人

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