自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大龄码农的一天

老刘被解雇了。事情来得很突然,那天早上,老刘跟往常一样,骑着一辆蓝色的共享单车,拐过几条狭窄逼仄的小区道路,再穿过一条大街就到了公司写字楼,熟悉的线路,熟悉的骑行,熟悉的环境,一切都让他感觉舒服自在。从家里到公司不足三公里,这是骑行的最佳距离,当初老刘选择这家公司的时候,通行距离是一个重要的加分项。来到办公室,尚未坐定,HR就过来找老刘。平时随和友善的HR小姐姐,今天有点不一样,表情冷峻而严肃...

2019-03-08 10:50:10 526

原创 每天一个离职小技巧:在Redis生产环境执行杀伤性命令

欢迎关注微信公众号:互联网全栈架构先声明一下,写这样的文章,并不是鼓励大家离职,恰恰相反,在如今惨淡的IT就业形势下,奉劝大家千万不要离职!除非迫不得已!文章的本意就是提醒朋友们不要这么做,否则可能会有被开除的风险,因为这样的做法危害性实在是太大了。Redis提供了很多功能强大、使用简便的命令,但如果使用不当,有些命令的使用会带来意想不到的问题,特别是在生产环境中。我们今天就来看看有哪些命令需要慎...

2024-04-20 21:09:36 388

原创 每天一个离职小技巧:吞异常

欢迎关注微信公众号:互联网全栈架构先声明一下,写这样的文章,并不是鼓励大家离职,恰恰相反,在如今惨淡的IT就业形势下,奉劝大家千万不要离职!除非迫不得已!文章的本意就是提醒朋友们不要这么做,否则可能会有被开除的风险,因为这样的做法危害性实在是太大了。好,言归正传。在Java编程中,异常处理是非常常见也非常必要的一环,是否优雅地处理异常也是程序员水平高低的判断标准之一。有一种处理异常的方法非常不可取...

2024-04-19 11:33:22 288

原创 吃透Redis系列:对过期数据挥刀问斩

欢迎关注微信公众号:互联网全栈架构号外:今天刷新公众号后台,竟然发现有了留言功能,这个功能可是盼望了好几年了,现在终于拥有了,真是喜出望外,欢迎大家留言讨论啊,感谢!在Redis中,我们可以设置key的过期时间,比如两个小时,那么在两个小时以后,这些key通过什么方式进行删除?另外,如果占用的内存达到最大限制以后,Redis如何进行处理?关于这两个问题,本文尝试把它们讲清楚。在面试中,这也是经常会...

2024-04-18 16:27:37 859

原创 面试必问:接口幂等性

欢迎关注微信公众号:互联网全栈架构一总体介绍幂等(Idempotence)是一个计算机领域中的概念,通俗来讲,如果用户对一个操作发起一次或者多次请求,得到的结果都是一样的,那么就认为这样的操作是幂等的。HTTP规范对于幂等的说明如下:Arequestmethodisconsideredidempotentiftheintendedeffectontheserverofm...

2024-04-17 18:17:40 899

原创 吃透Redis系列:高可用的哨兵模式

欢迎关注微信公众号:互联网全栈架构一哨兵模式介绍哨兵模式(Sentinel)是Redis提供的高可用解决方案,作为一个分布式系统,它包含了多个Sentinel节点和Redis节点,这些Sentinel节点会监控Redis节点的状态(通常为主从复制),如果发现master节点不可用时,会自动将其中一个slave节点提升为master节点,从而实现了自动故障转移。总体来讲,哨兵模式的主要功能有如下几个...

2024-04-16 11:39:22 697

原创 十多年经验的老码农,竟然倒在了这个问题上:MySQL中的or是否走索引

欢迎关注微信公众号:互联网全栈架构失业数月的码农老王终于接到了面试电话,对照公司的招聘要求,他的信心一下子就提上来了,里面提到的Kafka、Redis、Java等这些技术,他都使用过,虽然对于高并发、高可用的应用场景,他的实际经验并不算多,但经过前一段时间的准备,他感觉应付面试是问题不大了。而对于数据库MySQL,老王一直是信心满满,所以这一块他没有过多地去准备。整个面试下来还挺顺利,前面的问题都...

2024-04-02 16:55:29 270

原创 吃透Redis系列:数据持久化

欢迎关注微信公众号:互联网全栈架构Redis是一款内存数据库,从而使得它的性能非常优越,然而,内存中的数据是容易丢失的,为了解决数据的安全性和可靠性问题,Redis引入了持久化机制。Redis支持以下三种持久化方式:RDB(Redis Database):快照方式,它是Redis默认的持久化方式,在一定的间隔时间内,它将内存中的数据以快照的方式写入到二进制文件当中。AOF(Append Only ...

2024-04-01 10:56:23 929

原创 吃透Redis系列:琳琅满目的数据类型(下篇,文末彩蛋)

欢迎关注微信公众号:互联网全栈架构上一篇文章我们介绍了Redis的五种基本数据类型,详细内容请参见:吃透Redis系列:琳琅满目的数据类型(上篇)。除了这几种基本的数据类型外,Redis还提供了五种扩展数据类型,从使用频率上来讲,它可能不如基本数据类型那么高,但对于某些特定应用场景,它们能很好地满足,所以也有必要进行学习和了解,以便有备无患。在文章的最后,我们用一张图来总结这十种数据类型的含义(毕...

2024-03-04 08:18:54 874

原创 吃透Redis系列:琳琅满目的数据类型(上篇)

欢迎关注微信公众号:互联网全栈架构Redis提供了丰富的数据类型,包括了五种基本数据类型和五种扩展数据类型(非官方分类,仅个人总结,方便记忆):本文介绍5种基本数据类型,在列出常用的命令之外,还附以实例操作和适用场景说明,方便大家参考阅读。后续文章会介绍另外5种扩展数据类型,敬请期待。1StringString是最基本的也是最常用的数据类型,它是一个key-value键值对的结构,key是键,字符...

2024-03-01 12:18:26 825

原创 离大谱,MySQL竟然无视空格的存在!

欢迎关注微信公众号:互联网全栈架构MySQL是非常受欢迎的一款关系型数据库,使用者非常多,按理说,如此流行的产品应该非常严谨才对,但有一个小细节有点超乎我的理解:就是它会直接忽略尾部的空格,我们来看看实例演示:先创建一个简单的表并插入数据:CREATETABLE`t_test_space`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键...

2024-01-11 18:18:11 422 1

原创 什么是SQL注入?基于实例讲解

欢迎关注微信公众号:互联网全栈架构一、SQL注入的含义:SQL注入是一种常见的网络攻击,由于程序对输入数据的判断或者检验不严格,导致攻击者查询到了授权范围之外的数据,甚至还可以修改数据库中的数据,对数据库执行一些管理操作等,所以它的危害性也是比较大的。像下面这个SQL,程序的本意是查询id=1的用户信息,但如果输入的参数后面又添加了OR 1=1,这样就会把所有的用户信息搜出来,显然,这是我们需要避...

2024-01-08 20:25:10 906

原创 吃透Redis系列:总体介绍

欢迎关注微信公众号:互联网全栈架构提起Redis,对于从事Java开发工作的人来说,可谓是无人不知,无人不晓,可以说,Redis是缓存界的王者,是NoSQL领域的当红辣子鸡。为什么Redis能够大行其道,受到广泛欢迎呢?首先,我们看看Redis的定义,按照官网的介绍,Redis是一款开源的数据结构服务器,可用作数据库,缓存,消息队列等,它支持字符串、哈希表、列表、集合、有序集合、位图等多种数据类型...

2024-01-04 21:06:03 939

原创 高频面试题:合并两个List并去重

欢迎关注微信公众号:互联网全栈架构合并两个List中并去掉重复的元素,有好几种方法,我们来看看常见的三种:一、使用HashSetHashSet是一个没有重复元素的集合,可以利用这个特性,把List中的元素逐一添加到HashSet中,最终得到的就是没有重复元素的结果:packagecom.sample.algo.list;importjava.util.*;//利用Hashset元素不...

2023-12-30 20:39:03 445

原创 这个小问题,竟然难倒很多英雄好汉

欢迎关注微信公众号:互联网全栈架构Java中的关键字break可以用来强行退出循环,continue也可以用来中断循环,不过break不会执行循环中剩下的语句,而continue则是停止当前循环,然后回到循环起始处,开始下一次迭代。那么问题来了,对于break来讲,它退出的是当前循环,如果有两重循环或者多重循环,如何退出所有的循环呢?就这个问题来讲,不管是在面试过程中,还是在日常的编程交流中,似乎...

2023-12-28 18:00:18 369

原创 一句话证明你有十年以上的编程经验

欢迎关注微信公众号:互联网全栈架构如果需要用一句话证明你有十年以上的编程经验,你该怎么说呢?下面这些回答能否证明?我会写存储过程,调试起来也得心应手!我精通EJB。JDK1.6太爽了,比1.5增加了很多好用的特性。知道Clearcase吗,用它来做版本管理真是太完美了。当时来公司面试的时候,主要都是问这样的问题:break和continue有什么区别;final和finally各是什么含义。我熟悉...

2023-12-27 18:18:38 331

原创 揭开Java线程池的神秘面纱

欢迎关注微信公众号:互联网全栈架构线程池是一种池化技术,它复用已有的线程,从而降低了频繁创建和销毁线程所带来的资源消耗,另外,线程池还保存了一些基本的线程统计信息,可以方便地对线程进行有效的管理。一、线程池实例我们还是以一个实例开头,这样能够获得一个直观的认识和感受,如果一上来就是一堆名词的堆砌,枯燥至极。packagecom.sample.core.multithread.pool;imp...

2023-12-26 20:42:03 830

原创 彻底搞懂MySQL的执行计划

欢迎关注微信公众号:互联网全栈架构MySQL执行计划(EXPLAIN)可以提供SQL运行的一些信息,相当于模拟SQL的执行,从而让我们可以对SQL语句做更深入的分析和了解。在实际开发过程中,我们经常会使用执行计划来分析和提升SQL的执行效率。EXPLAIN的使用也非常简单,在现有的SQL语句前面加上关键字EXPLAIN,然后直接执行即可。创作不易,如果文章对你有帮助,请在文末点个在看,非常感谢!一...

2023-12-25 21:45:36 958

原创 一个程序调试的小技巧

欢迎关注微信公众号:互联网全栈架构程序调试是开发过程中非常重要的一环,在IDEA中,有一个非常实用的调试小技巧,然而,比较令人惊讶的是,周边很多程序员朋友竟然都不知道,甚至在面试的时候,一些高级开发人员也不清楚有这么一个小技巧,所以今天打算分享出来,以备不时之需,当然,这个技巧比较初级,如果你是一位资深人士,请忽略,以免贻笑大方。在Debug的时候,经常会遇到这样的情况:就是在循环里面打了一个断点...

2023-12-24 20:19:33 360

原创 十年前的面试 VS 现在的面试

欢迎关注微信公众号:互联网全栈架构十年前的面试:java有几种基本数据类型?重写和重载分别是什么含义?StringBuffer和StringBuilder有什么区别?说说你对抽象类和接口的理解?HashMap是线程安全的吗?MySQL中的数据类型char和varchar有什么区别?。。。。。。现在的面试:如何设计一个秒杀系统?你在项目中用过分布式锁吗?是怎么实现的?读过哪些开源项目的源码?请说说你...

2023-12-23 18:26:28 363

原创 古怪离奇的MySQL NULL值

欢迎关注微信公众号:互联网全栈架构关于MySQL中的NULL值,我们先做个小实验。创建一个简单的表:CREATETABLE`t_student`(`id`int(11)NOTNULLAUTO_INCREMENT,`stu_no`varchar(10)DEFAULTNULLCOMMENT'学生编号',`stu_name`varchar(50)DEFAUL...

2023-12-22 18:18:53 368

原创 CPU飙升至100%!别慌,试试这个锦囊

欢迎关注微信公众号:互联网全栈架构Java程序占用CPU过高,甚至飙升到了100%,应该怎么排查?可以试试如下这三步:使用top命令找到CPU占用最高的进程;找到进程对应的线程;打印堆栈信息,然后进行分析。准备工作先写一个Java程序,频繁地进行计算:packagecom.sample.core.cpu;publicclassCpuFullExample{privatest...

2023-12-21 20:26:59 358

原创 图解MySQL中的各种JOIN:再也不用担心记不住了

欢迎关注微信公众号:互联网全栈架构表关联是频率非常高的一种数据库操作,在MySQL中,这种JOIN操作有很多类型,包括内联接、左外连接、右外连接等等,而每种连接的含义都不一样,如果死记硬背,不仅很难记住,而且也容易搞混淆,今天我们尝试使用图解的方式来讲解各种连接的内涵,因为结合了具体的例子,相信会让大家印象深刻。MySQL中常见的表关联有如下几种:一、准备工作先创建两张表,一张是订单表,一张是客户...

2023-12-20 19:18:44 980

原创 初级工程师一脸懵逼,高级工程师笑而不语

欢迎关注微信公众号:互联网全栈架构小张是一个程序员,初入职场不久,头衔是初级开发工程师,他负责一个软件模块的开发和维护,经过自己的不断努力和持续改进,模块的功能日趋完善,运行也越来越稳定,但最近系统出了个bug,而且是偶发的(也就是说有些情况不行,有些情况又可以),这就让小张有点丈二摸不着头脑,搞不清楚到底是哪里出了问题,完全是一脸懵逼的状态。为了讲解方便,我们把问题做一下简化。在小张维护的模块中...

2023-12-19 08:18:13 340

原创 “玩转”二叉树:用Java来实现

欢迎关注微信公众号:互联网全栈架构二叉树是树结构的一种特殊类型,它的每个结点最多只有两个子结点,因为最多只有两个,所以一般把它们称为左子结点和右子结点(似乎比left child和right child读起来要拗口一些)。二叉树是一种非常重要也很常见的数据结构,在面试中也经常会问起,我们今天就来看看二叉树的Java实现,以及一些常用的二叉树操作。一、二叉树的表示首先,看看二叉树的模样,以便对它有一...

2023-12-18 08:18:40 898

原创 数据同步的利器:Canal

欢迎关注微信公众号:互联网全栈架构在大型应用系统中,往往存在数据异构的现象,比如业务数据保存在MySQL关系数据库中,比如缓存数据放在Redis中,比如支持多维度查询的数据存储在ElasticSearch里面,等等。。。如此种种,不一而足。在这些异构数据之间,我们往往需要把MySQL中的业务数据同步到其他异构数据服务器中,而阿里巴巴推出的一款开源的数据同步工具Canal就可以满足这样的需求。一、C...

2023-12-13 08:18:28 823

原创 小惊喜,单日最高收入

欢迎关注微信公众号:互联网全栈架构写公众号有一段时间了。一直以来,我都很珍惜、很喜欢这种技术交流的方式。在日渐喧嚣、鱼龙混杂的各式文章充斥着版面的时候,我想做得更纯净一些。然而,现实是很骨感的,毕竟需要恰饭,所以我尝试着开通了流量主。现在开通流量主的条件比较低,只要粉丝超过500个就可以开通了。开通以后,可以在文章中间或者文末加上广告,如果用户看到文末,广告就会得到展现,这样公众号的owner就能...

2023-11-30 08:18:48 391

原创 是的,它根本锁不住局部变量!

欢迎关注微信公众号:互联网全栈架构上次创建了一个投票,针对并发编程中常用的关键字synchronized,它到底能不能锁住局部变量,有50%的人认为可以,另外一半认为不可以,具体情况可参见之前的文章:Synchronized能锁住局部变量吗?。而正确答案是不可以,因为局部变量是存放在栈中,而每个线程都有自己的栈空间,也就是说局部变量是线程私有的,使用线程对局部变量加锁,并不会影响其它线程对于代码块...

2023-11-29 08:18:40 443

原创 Synchronized能锁住局部变量吗?

欢迎关注微信公众号:互联网全栈架构上次投票回顾:之前有提到过,由于公众号没有留言功能,导致互动性不太良好,但我们后面发现投票是一种很好的方式,而且很多知识点通过投票选择的方式来展开,也容易让人印象深刻。上次的投票是关系MySQL数据库字段类型的含义,比如某个字段的类型是int(2),这个括号中的2是代表什么含义,是表示字段的最大长度(或者说宽度)是2,也就是最多保存两位数字,比如最大值是99?还是...

2023-11-22 08:18:25 75

原创 拒绝空谈:实例演示MySQL事务隔离级别

欢迎关注微信公众号:互联网全栈架构关系型数据库的事务有四个特性,其中一个就是隔离性(关于事务的更多信息,可以参考之前的一篇文章:漫谈MySQL中的事务)。为了满足不同的应用场景需求,有不同的隔离级别可供选择,在SQL标准和MySQL数据库中,共定义了四种隔离级别,分别是读未提交、读已提交、可重复读、串行化,隔离级别越低,系统的开销和并发通常就会更高,但同时也可能带来脏数据等问题。今天我们就用实例来...

2023-11-21 08:18:11 38

原创 操控字节码:Javaassist介绍

欢迎关注微信公众号:互联网全栈架构Javaassist(JAVA programming ASSISTant),是一个可以操控字节码的类库,能够在不修改源代码的情况下,在运行时动态地对类的结构和方法进行拓展(当然也可以新增类)。它提供了丰富的API,让开发人员可以方便地对字节码进行操控。下面我们用实例来展示它的使用。创作不易,辛苦在文末点个赞,谢谢!首先初步认识一下字节码,我们知道,Java源代码...

2023-11-20 08:18:08 49

原创 Spring Boot Starter原理及实践

欢迎关注微信公众号:互联网全栈架构记得初次使用Spring Boot的时候,被它的快速、简单、高效所震惊。相较于原始的Spring开发:写一大堆的XML配置、手动引入一堆的依赖(曾经碰到过因为依赖的版本问题,导致了OOM)、梦魇般的web.xml,如此种种,让人不得不被Spring Boot的清爽所迷倒,那么,Spring Boot是如何做到这样的呢,今天我们就试图来解析一下,本文主要分为两个部分...

2023-11-16 11:45:00 115

原创 聊聊MySQL中的死锁

欢迎关注微信公众号:互联网全栈架构死锁是指两个或者多个事务互相持有对方所需的资源,从而导致它们都无法继续执行的情况。下图是一个死锁的示例,事务1锁住了id=1的数据(比如更新id=1的数据记录),同时请求锁住id=2的数据,但事务2持有id=2的锁,同时又请求id=1的锁,这样就造成了相互等待对方释放锁的情况,从而产生了死锁:上图是死锁产生的示例说明,我们用实际的SQL来演示死锁的产生,首先创建一...

2023-11-08 18:46:24 51

原创 越俎代庖:应用广泛的代理模式

欢迎关注微信公众号:互联网全栈架构前言:最近写了几篇关于设计模式的文章,得到了各位朋友的热烈欢迎(如果阅读量在100左右也算热烈的话),在此先表示感谢!设计模式比较多,一共有23种,如果生硬地去背的话,略显枯燥,且效果也会打折扣,所以我试图对每一种设计模式都用一个成语来进行概括,比如:一呼百应:对于观察者模式,当观察目标的状态发生改变时,所有的观察者都会得到通知,所以我用一呼百应来形容。聚沙成塔:...

2023-11-02 17:24:29 45

原创 MySQL整数类型的长度到底是什么含义?

欢迎关注微信公众号:互联网全栈架构题外话:注册比较晚的公众号没有留言功能,这样的话就少了很多的互动交流,但互动又是一个非常重要的环节,有时候真是让人很无奈,不过我后面发现投票也是一种不错的形式,而且我感觉,参与投票的人越多,就越会得到平台的推荐,所以后续也会多多尝试投票这种形式。除了平台推荐之外,对于一些知识点、可选解决方案等,通过投票展示出来,也会让人印象更为深刻。所以希望大家多多支持,请参与投...

2023-10-30 11:14:14 42

原创 漫谈MySQL中的事务

欢迎关注微信公众号:互联网全栈架构一、数据库事务数据库事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有四个特性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability),简称ACID特性。我们以经典的转账例子来分别说明这几个特性的详细含义:A、B账户的余额都是一万元,然后A账户向B...

2023-10-28 20:32:26 50

原创 Java中的锁:Lock和synchronized的区别

欢迎关注微信公众号:互联网全栈架构在Java并发编程中,我们经常需要给代码块或者方法加锁,而常用的加锁方法有Lock和synchronized,那么,这两者有什么区别呢?搞清楚这两者之间的异同,除了对日常的编程工作有帮助外,它也常常出现在面试题目当中。我们先逐条分析它们的主要区别,在文章最后再用一个表格进行总结,以便对于这个知识点能够一目了然。一、首先,Lock是Java的一个接口,是JDK提供的...

2023-10-26 17:05:54 49

原创 NoSQL中的翘楚:MongoDB入门介绍

欢迎关注微信公众号:互联网全栈架构NoSQL,泛指非关系型数据库,它是”non-SQL“或者是”Not Only SQL“缩写,由于这类数据库变得日益强大,已经超出了传统的SQL范畴,所以现在普遍认为NoSQL就是指Not Olny SQL:不仅仅是SQL。NoSQL不同于传统的关系数据库,它以非关系表的形式保存数据,一般来讲,NoSQL数据库具备以下优点:灵活的数据模型可水平扩展,非常适合大规模...

2023-10-23 08:30:53 52

原创 臭名昭著,怙恶不悛的OOM,到底是什么?

欢迎关注微信公众号:互联网全栈架构很多Java程序员都经常会碰到OOM,而这类问题往往比较难以解决,找到root cause并不是件容易的事情,我们今天就来看看OOM到底是什么?有哪些常见的OOM,初步的解决方法有哪些?OOM是Out Of Memory的缩写,翻译过来就是内存溢出,在程序运行过程中,如果出现了OOM,就会抛出OutOfMemoryError异常。在JVM运行时数据区中,只有程序计...

2023-10-19 10:40:32 63

原创 ZooKeeper集群安装

欢迎关注微信公众号:互联网全栈架构上篇文章我们介绍了ZooKeeper的基本知识,包括它的基本概念、应用场景、数据模型等,并在最后演示了ZooKeeper的安装过程,不过,这是单机的安装方法,而在分布式高可用的应用环境中,单机显然是不能满足要求的,今天,我们就来讲解ZooKeeper的集群安装,当然,这也只能算是伪集群,因为所有操作都是在一台机器上面进行的,不过,在真正多台机器中安装的时候,主要操...

2023-10-17 08:00:10 95

空空如也

空空如也

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

TA关注的人

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