自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 问答 (1)
  • 收藏
  • 关注

原创 System.gc() 导致CPU飙升

1. 前言 昨天服务器的CPU又飙升了,导致应用几乎卡死,页面切换都很卡,之前遇到我这种情况我就赶紧top,top -H -p,然后打印16进制,然后再jstack pid | grep 16进制 -A90,然后并没有获取到什么有用的信息,这次稍微换了下查找思路。 使用arthas 查看了下最占用CPU的程序(thread -n 5)发现全都是GC操作,然后我直接 jstack pid >> test.txt,查看了堆栈信息,直接搜和本项目相关的类的包名,然后搜到一个...

2021-03-19 14:42:07 458 1

转载 MySQL-普通索引和唯一索引

这两种索引对查询语句和更新语句的性能影响。查询过程假设,执行查询的语句是 select id from T where k=5。这个查询语句在索引树上查找的过程,先是通过B+树从树根开始,按层搜索到叶子节点,然后可以认为数据页内部通过二分法来定位记录。对于普通索引来说,查找到满足条件的第一个记录(5,500)后,需要查找下一个记录,直到碰到第一个不满足k=5条件的记录。对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。那么,这个不同带来的性能差距会有多少呢

2021-02-15 15:02:15 244

转载 MySQL-事务隔离

事务隔离级别如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。但是,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?我给你举一个例子吧。下面是一个只有两行的表的初始化语句

2021-02-14 18:57:04 230

转载 MySQL-关于对联合主键索引和InnoDB索引组织表的理解

CREATE TABLE `geek` ( `a` int(11) NOT NULL, `b` int(11) NOT NULL, `c` int(11) NOT NULL, `d` int(11) NOT NULL, PRIMARY KEY (`a`,`b`), KEY `c` (`c`), KEY `ca` (`c`,`a`), KEY `cb` (`c`,`b`)) ENGINE=InnoDB;select * from geek where c=N order

2021-02-14 16:00:43 500

转载 MySQL-索引

在下面这个表T中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;insert into T values(100,1, '

2021-02-14 15:16:50 165

转载 MySQL-如何避免长事务对业务的影响?

首先,从应用开发端来看:确认是否使用了set autocommit=0。这个确认工作可以在测试环境中开展,把MySQL的general_log开起来,然后随便跑一个业务逻辑,通过general_log的日志来确认。一般框架如果会设置这个值,也就会提供参数来控制行为,你的目标就是把它改成1。确认是否有不必要的只读事务。有些框架会习惯不管什么语句先用begin/commit框起来。我见过有些是业务并没有这个需要,但是也把好几个select语句放到了事务中。这种只读事务可以去掉。业务连接数据库的时候,根据

2021-02-14 14:56:55 237

转载 MySQL中的redo log和binlog

前言年前的一次操作数据库的时候,更新数据时候少加了条件,导致其他项目的数据库连接信息被更新错了,然后找DBA要了更新操作的binlog日志,重点是后面的来了,恢复数据需要手动根据binlog日志来自己组织数据,再更新回来。当时我就觉得这不应该吧,我这几十条数据的还行,如果更新了几万条数据,难道要手动组织几万次???后来问了一个朋友,说是有个binlog2sql的工具可以使用,然后我在虚拟机上整了下,没整成功,先不管了。(以下内容来自MySQL实战45讲)一、重要的日志模块:redo log在MySQ

2021-02-14 11:34:09 185

原创 arthas热修复线上代码

前几天撸了华为云的服务器羊毛,可以白嫖三个月的云服务器,于是部署了一个spring boot的项目,本来在服务器上装了MySQL8,但是因为是最低的配置,导致MySQL服务经常挂掉,后来又在华为云里找到个新用户云数据库前两个月低价的活动,又白嫖了两个月的MySQL数据库,这样云服务器跑项目就不影响了。今天想试下arthas的线上热修复功能,线上改代码。参考了下别的文章,https://www...

2020-04-10 18:21:29 687

原创 不可变对象的设计模式

在多线程操作共享资源的情况下,大多数情况下都需要对资源进行加锁操作,多线程设计模式中的一个方法,可以不依赖加锁操作,直接将资源的状态设置为不可变,一个不可变的对象,无论任何时候都是线程安全的,就像java.lang.String一样。 那么String类是如何保证线程安全的呢?做过String s1 = “hello”;s1 = s1+”world”;的就会知道,对s...

2019-11-26 10:14:05 204

原创 自定义ClassLoader案例

首先说明,本文是参考《Java高并发编程详解》一书总结的。所有自定义的类加载器都是ClassLoader的直接或间接子类,此类中并没有抽象方法,但是有findClass方法,这个一定要实现,不然会抛异常:protected Class<?> findClass(String name) throws ClassNotFoundException { throw...

2019-11-17 15:09:57 329

原创 city_picker改造-------五级城市联动控件

这几天做项目,需要用到城市控件,网上找了个样式不错的控件,基于bootstrap的,具体用法可以参照https://blog.csdn.net/bsw451926392/article/details/78886965。但是我这边需要精确到村级别,而控件是省市区,而且数据是写死的,因为也不太懂js代码,就没改造,整了五个联动的下拉框,先把功能实现了,后来不咋忙的时候,决定还是改造下这个控件。...

2019-08-24 14:32:05 948

转载 JS对象数组根据属性分组方法

最近看到了个简单明了的分组方法,因为别人也是转的,没有标注原地址,我这也就不给转载地址了。function test() { var list = [ {"name": "John", "Average": 15, "High": 10, "DtmStamp": 1358226000000}, {"name": "Jane", ...

2019-06-20 18:44:29 13615

原创 打印菱形杨辉三角数字图形

中午时候,群里突然有群友发了个面试的上机测试题,看着挺有意思的,其实就是个杨辉三角的变异类型。下午上班后,开始着手写这个题,连百度带自己测,耗费了两个半小时,也是怪丢人的。话不多说,先看题,题目很简单,就是输入一个数字,打印出对应的类型:9:15:相信懂的人都能看出来规律了,我刚开始找错方向了,想了有一会儿,后来把效果图拆为两个直角三角形之后就明了了,就是两个杨辉三角合...

2019-06-06 19:43:51 539 1

转载 极客时间——数据结构与算法(46) 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

转载地址:https://time.geekbang.org/column/article/77142上一节我们讲到,如何用位图、布隆过滤器,来过滤重复的数据。今天,我们再讲一个跟过滤相关的问题,如何过滤垃圾短信?垃圾短信和骚扰电话,我想每个人都收到过吧?买房、贷款、投资理财、开发票,各种垃圾短信和骚扰电话,不胜其扰。如果你是一名手机应用开发工程师,让你实现一个简单的垃圾短信过滤功能以及骚...

2019-05-21 17:15:30 314

转载 极客时间——数据结构与算法(45) 位图:如何实现网页爬虫中的URL去重功能?

转载地址:https://time.geekbang.org/column/article/76827网页爬虫是搜索引擎中的非常重要的系统,负责爬取几十亿、上百亿的网页。爬虫的工作原理是,通过解析已经爬取页面中的网页链接,然后再爬取这些链接对应的网页。而同一个网页链接有可能被包含在多个页面中,这就会导致爬虫在爬取的过程中,重复爬取相同的网页。如果你是一名负责爬虫的工程师,你会如何避免这些重复的...

2019-05-21 16:32:56 535

转载 Spring 中将service 注入到普通的类中

在spring管理的web项目里,譬如Struts和spring的项目,配置好后,Struts里就可以直接使用定义好的service。但是如果要在普通的工具类里,使用service或dao,就会报空指针,因为这个普通的Java类并不在spring管理下,不能使用spring注入的service。方法一:(亲测可用,直接在方法上注入)方法二:(测试不可用)最后,记得在applic...

2019-04-24 17:50:02 1052

转载 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作

转载地址:https://mp.weixin.qq.com/s/e9ITxUmsMFhfjeHhOgTtfA为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作在阿里巴巴Java开发手册中,有这样一条规定:但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。1.foreach循环foreach循环(Foreach loop)是计...

2019-04-19 22:54:16 105

转载 MySQL的查询优化——背后原理

转载地址:https://www.jianshu.com/p/d7665192aaaf说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,...

2019-04-17 14:52:37 336

转载 极客时间——数据结构与算法(43) 拓扑排序:如何确定代码源文件的编译依赖关系?

从今天开始,我们就进入了专栏的高级篇。相对基础篇,高级篇涉及的知识点,都比较零散,不是太系统。所以,我会围绕一个实际软件开发的问题,在阐述具体解决方法的过程中,将涉及的知识点给你详细讲解出来。所以,相较于基础篇“开篇问题 - 知识讲解 - 回答开篇 - 总结 - 课后思考”这样的文章结构,高级篇我稍作了些改变,大致分为这样几个部分:“问题阐述 - 算法解析 - 总结引申 - 课后思考”。好...

2019-04-17 09:57:38 484

转载 极客时间——数据结构与算法(44) 最短路径:地图软件是如何计算出最优出行路径的?

基础篇的时候,我们学习了图的两种搜索算法,深度优先搜索和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图,也就是图中的每条边都有一个权重,我们该如何计算两点之间的最短路径(经过的边的权重和最小)呢?今天,我就从地图软件的路线规划问题讲起,带你看看常用的最短路径算法(Shortest Path Algorithm)。像 Google 地图、百度地图、高德地图这样的地图软件,我想你应...

2019-04-17 09:57:23 2427

转载 不安全的SimpleDateFormat

转载地址: https://mp.weixin.qq.com/s/YmmM1KdGX_g46Sn_vFQraA问题场景复现 多线程不安全原因 解决方案 只在需要的时候创建新实例,不用static修饰 synchronized大法好 ThreadLocal 基于JDK1.8的DateTimeFormatter 日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家...

2019-04-16 17:23:24 137

转载 使用springcloud gateway搭建网关(分流,限流,熔断)

转载地址:https://mp.weixin.qq.com/s/zFE-xyjhQMtIloqyIfRvkwSpringCloudGateway作为SpringCloud生态系统中的网关,目标是替代NetflixZuul,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。相关概念:Route(路由):这是网...

2019-04-16 16:05:58 2900 2

转载 极客时间——数据结构与算法(42) 动态规划实战:如何实现搜索引擎中的拼写纠错功能?

转载地址:https://time.geekbang.org/column/article/75794在Trie 树那节我们讲过,利用 Trie 树,可以实现搜索引擎的关键词提示功能,这样可以节省用户输入搜索关键词的时间。实际上,搜索引擎在用户体验方面的优化还有很多,比如你可能经常会用的拼写纠错功能。当你在搜索框中,一不小心输错单词时,搜索引擎会非常智能地检测出你的拼写错误,并且用对应的正...

2019-04-15 16:59:52 532

转载 极客时间——数据结构与算法(41) 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题

转载地址:https://time.geekbang.org/column/article/75702上一节,我通过两个非常经典的问题,向你展示了用动态规划解决问题的过程。现在你对动态规划应该有了一个初步的认识。今天,我主要讲动态规划的一些理论知识。学完这节内容,可以帮你解决这样几个问题:什么样的问题可以用动态规划解决?解决动态规划问题的一般思考过程是什么样的?贪心、分治、回溯、动态规划这...

2019-04-11 17:36:52 447

转载 极客时间——数据结构与算法(40) 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?

转载地址:https://time.geekbang.org/column/article/74788淘宝的“双十一”购物节有各种促销活动,比如“满 200 元减 50 元”。假设你女朋友的购物车中有 n 个(n>100)想买的商品,她希望从里面选几个,在凑够满减条件的前提下,让选出来的商品价格总和最大程度地接近满减条件(200 元),这样就可以极大限度地“薅羊毛”。作为程序员的你,能不...

2019-04-10 20:01:23 448

转载 极客时间——数据结构与算法(39) 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

转载地址:https://time.geekbang.org/column/article/74287我们在第 31 节提到,深度优先搜索算法利用的是回溯算法思想。这个算法思想非常简单,但是应用却非常广泛。它除了用来指导像深度优先搜索这种经典的算法设计之外,还可以用在很多实际的软件开发场景中,比如正则表达式匹配、编译原理中的语法分析等。除此之外,很多经典的数学问题都可以用回溯算法解决,比如...

2019-04-10 12:10:39 702

转载 Dynamic Count Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1543751Spectral bloom filter(SBF)在counting bloom filter(CBF)的基础上提出了元素出现频率查询的概念,将CBF的应用扩展到了multi-set的领域。但是,SBF为解决动态counter的存储问题,引入了复杂的索引结构,这让每个coun...

2019-03-29 18:10:51 377

转载 Spectral Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1540322Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。一旦位扩展成了counter,每一个...

2019-03-29 18:08:53 784

转载 Bloom Filter应用之Web Cache Sharing

转载地址:https://blog.csdn.net/jiaomeng/article/details/1531423从这篇文章开始,我会陆续介绍一些bloom filter的应用。Bloom filter于1970年由Burton Bloom在一篇名为Space/Time Tradeoffs in Hash Coding with Allowable Errors的论文中提出。这篇论文同时将...

2019-03-29 18:03:28 120

转载 评价d-Left Counting Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1529345Bloom Filter是一个简洁精致的数据结构,要对它进行本质上的提高并不容易。多少年来,针对Bloom Filter的变种很多,但实质性的突破并不多,无非Counting Bloom Filter、Compressed Bloom Filter等几种。很多变种都针对某一特定...

2019-03-29 18:00:36 308

转载 Perfect Hashing VS. Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1519383Perfect Hashing VS. Bloom Filter在Network Applications of Bloom Filters: A Survey一文中,作者提到了一种基于Perfect hashing的方法,它在维持同样错误率的情况下比Bloom Filte...

2019-03-29 17:47:38 151

转载 Compressed Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1505299Compressed Bloom Filter在前面的讨论中,我们都只将Bloom Filter作为一种表示集合的数据结构。但在网络应用中,Bloom Filter经常被当作节点之间交换信息时传递的消息。从这个角度考虑,我们自然希望消息在传递之前能够被压缩。那么Bloo...

2019-03-29 17:44:21 221

转载 Partial Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1502910Partial Bloom Filter在标准的Bloom Filter中,我们用k个相互独立的哈希函数将一个集合映射到长度为m的位数组中,其中每个哈希函数的映射范围都为{0, … , m-1}。除了这种标准的实现方式之外,还有一种实现被广泛采用,就是所谓的Partial ...

2019-03-29 17:37:26 124

转载 Counting Bloom Filter

转载地址:https://blog.csdn.net/jiaomeng/article/details/1498283Counting Bloom Filter从前面几篇对Bloom Filter的介绍可以看出,标准的Bloom Filter是一种很简单的数据结构,它只支持插入和查找两种操作。在所要表达的集合是静态集合的时候,标准Bloom Filter可以很好地工作,但是如果要表达的集合...

2019-03-29 17:33:57 240

转载 Bloom Filter 对比哈希存储

转载地址:https://blog.csdn.net/jiaomeng/article/details/1496329从哈希存储到Bloom Filter先解释一下什么是哈希函数。哈希函数简单来说就是一种映射,它可取值的范围(定义域)通常很大,但值域相对较小。哈希函数所作的工作就是将一个很大定义域内的值映射到一个相对较小的值域内。传统的哈希存储假设要哈希的集合为S,它有n个元素。传...

2019-03-29 17:29:44 323

转载 Bloom Filter概念和原理

转载地址:https://blog.csdn.net/jiaomeng/article/details/1495500Bloom Filter概念和原理Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素...

2019-03-29 17:21:02 166

转载 关于 缓存穿透、缓存击穿、缓存雪崩和热点数据失效问题的解决方案

转载地址:https://mp.weixin.qq.com/s/kllwx6mRNIScChGhGkwbgA1 前言昨天晚上接到阿里的电面电话,过程中就问到了关于缓存相关的问题。虽然以前接触过,多多少少了解了一些。但是之前自己并没有好好记录这些内容,在真正面试的时候,并没有回答得出来。今天记录一下,长长记性。在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的...

2019-03-28 18:40:35 353

原创 Idea中Git的使用(一)

刚来公司的时候,一直用的svn,操作也是简单无脑,现在要使用git了,结果发现差别还是很大的,就总结了下在idea中使用git的注意事项,以作备用。Git配置: 下载和安装就不说了,主要说一下配置name和邮箱以及SSH的配置。 git config user.name git config user.email git co...

2019-03-28 17:01:16 1092

转载 Git cherry-pick 操作整理

转载地址:https://blog.csdn.net/FightFightFight/article/details/81039050概述git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git...

2019-03-25 19:29:47 5231

转载 IDEA Git Cherry-pick 实现其他分支的部分提交合并到当前分支

转载地址:https://blog.csdn.net/collonn/article/details/52959436这篇文章主要是介绍了对冲突的解决,我要用的主要是cherry-pick,具体介绍在另一篇。本文演示一下,如何用intellij idea 合并 merge git 冲突 conflict, sourcetree使用,直接看图吧cherry pick, merge...

2019-03-25 18:59:34 3517

空空如也

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

TA关注的人

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