- 博客(1368)
- 收藏
- 关注
原创 大龄码农的一天
老刘被解雇了。事情来得很突然,那天早上,老刘跟往常一样,骑着一辆蓝色的共享单车,拐过几条狭窄逼仄的小区道路,再穿过一条大街就到了公司写字楼,熟悉的线路,熟悉的骑行,熟悉的环境,一切都让他感觉舒服自在。从家里到公司不足三公里,这是骑行的最佳距离,当初老刘选择这家公司的时候,通行距离是一个重要的加分项。来到办公室,尚未坐定,HR就过来找老刘。平时随和友善的HR小姐姐,今天有点不一样,表情冷峻而严肃...
2019-03-08 10:50:10 521
原创 吃透Redis系列:琳琅满目的数据类型(下篇,文末彩蛋)
欢迎关注微信公众号:互联网全栈架构上一篇文章我们介绍了Redis的五种基本数据类型,详细内容请参见:吃透Redis系列:琳琅满目的数据类型(上篇)。除了这几种基本的数据类型外,Redis还提供了五种扩展数据类型,从使用频率上来讲,它可能不如基本数据类型那么高,但对于某些特定应用场景,它们能很好地满足,所以也有必要进行学习和了解,以便有备无患。在文章的最后,我们用一张图来总结这十种数据类型的含义(毕...
2024-03-04 08:18:54 859
原创 吃透Redis系列:琳琅满目的数据类型(上篇)
欢迎关注微信公众号:互联网全栈架构Redis提供了丰富的数据类型,包括了五种基本数据类型和五种扩展数据类型(非官方分类,仅个人总结,方便记忆):本文介绍5种基本数据类型,在列出常用的命令之外,还附以实例操作和适用场景说明,方便大家参考阅读。后续文章会介绍另外5种扩展数据类型,敬请期待。1StringString是最基本的也是最常用的数据类型,它是一个key-value键值对的结构,key是键,字符...
2024-03-01 12:18:26 814
原创 离大谱,MySQL竟然无视空格的存在!
欢迎关注微信公众号:互联网全栈架构MySQL是非常受欢迎的一款关系型数据库,使用者非常多,按理说,如此流行的产品应该非常严谨才对,但有一个小细节有点超乎我的理解:就是它会直接忽略尾部的空格,我们来看看实例演示:先创建一个简单的表并插入数据:CREATETABLE`t_test_space`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键...
2024-01-11 18:18:11 417 1
原创 什么是SQL注入?基于实例讲解
欢迎关注微信公众号:互联网全栈架构一、SQL注入的含义:SQL注入是一种常见的网络攻击,由于程序对输入数据的判断或者检验不严格,导致攻击者查询到了授权范围之外的数据,甚至还可以修改数据库中的数据,对数据库执行一些管理操作等,所以它的危害性也是比较大的。像下面这个SQL,程序的本意是查询id=1的用户信息,但如果输入的参数后面又添加了OR 1=1,这样就会把所有的用户信息搜出来,显然,这是我们需要避...
2024-01-08 20:25:10 896
原创 吃透Redis系列:总体介绍
欢迎关注微信公众号:互联网全栈架构提起Redis,对于从事Java开发工作的人来说,可谓是无人不知,无人不晓,可以说,Redis是缓存界的王者,是NoSQL领域的当红辣子鸡。为什么Redis能够大行其道,受到广泛欢迎呢?首先,我们看看Redis的定义,按照官网的介绍,Redis是一款开源的数据结构服务器,可用作数据库,缓存,消息队列等,它支持字符串、哈希表、列表、集合、有序集合、位图等多种数据类型...
2024-01-04 21:06:03 927
原创 高频面试题:合并两个List并去重
欢迎关注微信公众号:互联网全栈架构合并两个List中并去掉重复的元素,有好几种方法,我们来看看常见的三种:一、使用HashSetHashSet是一个没有重复元素的集合,可以利用这个特性,把List中的元素逐一添加到HashSet中,最终得到的就是没有重复元素的结果:packagecom.sample.algo.list;importjava.util.*;//利用Hashset元素不...
2023-12-30 20:39:03 422
原创 这个小问题,竟然难倒很多英雄好汉
欢迎关注微信公众号:互联网全栈架构Java中的关键字break可以用来强行退出循环,continue也可以用来中断循环,不过break不会执行循环中剩下的语句,而continue则是停止当前循环,然后回到循环起始处,开始下一次迭代。那么问题来了,对于break来讲,它退出的是当前循环,如果有两重循环或者多重循环,如何退出所有的循环呢?就这个问题来讲,不管是在面试过程中,还是在日常的编程交流中,似乎...
2023-12-28 18:00:18 366
原创 一句话证明你有十年以上的编程经验
欢迎关注微信公众号:互联网全栈架构如果需要用一句话证明你有十年以上的编程经验,你该怎么说呢?下面这些回答能否证明?我会写存储过程,调试起来也得心应手!我精通EJB。JDK1.6太爽了,比1.5增加了很多好用的特性。知道Clearcase吗,用它来做版本管理真是太完美了。当时来公司面试的时候,主要都是问这样的问题:break和continue有什么区别;final和finally各是什么含义。我熟悉...
2023-12-27 18:18:38 327
原创 揭开Java线程池的神秘面纱
欢迎关注微信公众号:互联网全栈架构线程池是一种池化技术,它复用已有的线程,从而降低了频繁创建和销毁线程所带来的资源消耗,另外,线程池还保存了一些基本的线程统计信息,可以方便地对线程进行有效的管理。一、线程池实例我们还是以一个实例开头,这样能够获得一个直观的认识和感受,如果一上来就是一堆名词的堆砌,枯燥至极。packagecom.sample.core.multithread.pool;imp...
2023-12-26 20:42:03 827
原创 彻底搞懂MySQL的执行计划
欢迎关注微信公众号:互联网全栈架构MySQL执行计划(EXPLAIN)可以提供SQL运行的一些信息,相当于模拟SQL的执行,从而让我们可以对SQL语句做更深入的分析和了解。在实际开发过程中,我们经常会使用执行计划来分析和提升SQL的执行效率。EXPLAIN的使用也非常简单,在现有的SQL语句前面加上关键字EXPLAIN,然后直接执行即可。创作不易,如果文章对你有帮助,请在文末点个在看,非常感谢!一...
2023-12-25 21:45:36 938
原创 一个程序调试的小技巧
欢迎关注微信公众号:互联网全栈架构程序调试是开发过程中非常重要的一环,在IDEA中,有一个非常实用的调试小技巧,然而,比较令人惊讶的是,周边很多程序员朋友竟然都不知道,甚至在面试的时候,一些高级开发人员也不清楚有这么一个小技巧,所以今天打算分享出来,以备不时之需,当然,这个技巧比较初级,如果你是一位资深人士,请忽略,以免贻笑大方。在Debug的时候,经常会遇到这样的情况:就是在循环里面打了一个断点...
2023-12-24 20:19:33 357
原创 十年前的面试 VS 现在的面试
欢迎关注微信公众号:互联网全栈架构十年前的面试:java有几种基本数据类型?重写和重载分别是什么含义?StringBuffer和StringBuilder有什么区别?说说你对抽象类和接口的理解?HashMap是线程安全的吗?MySQL中的数据类型char和varchar有什么区别?。。。。。。现在的面试:如何设计一个秒杀系统?你在项目中用过分布式锁吗?是怎么实现的?读过哪些开源项目的源码?请说说你...
2023-12-23 18:26:28 356
原创 古怪离奇的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 364
原创 CPU飙升至100%!别慌,试试这个锦囊
欢迎关注微信公众号:互联网全栈架构Java程序占用CPU过高,甚至飙升到了100%,应该怎么排查?可以试试如下这三步:使用top命令找到CPU占用最高的进程;找到进程对应的线程;打印堆栈信息,然后进行分析。准备工作先写一个Java程序,频繁地进行计算:packagecom.sample.core.cpu;publicclassCpuFullExample{privatest...
2023-12-21 20:26:59 354
原创 图解MySQL中的各种JOIN:再也不用担心记不住了
欢迎关注微信公众号:互联网全栈架构表关联是频率非常高的一种数据库操作,在MySQL中,这种JOIN操作有很多类型,包括内联接、左外连接、右外连接等等,而每种连接的含义都不一样,如果死记硬背,不仅很难记住,而且也容易搞混淆,今天我们尝试使用图解的方式来讲解各种连接的内涵,因为结合了具体的例子,相信会让大家印象深刻。MySQL中常见的表关联有如下几种:一、准备工作先创建两张表,一张是订单表,一张是客户...
2023-12-20 19:18:44 950
原创 初级工程师一脸懵逼,高级工程师笑而不语
欢迎关注微信公众号:互联网全栈架构小张是一个程序员,初入职场不久,头衔是初级开发工程师,他负责一个软件模块的开发和维护,经过自己的不断努力和持续改进,模块的功能日趋完善,运行也越来越稳定,但最近系统出了个bug,而且是偶发的(也就是说有些情况不行,有些情况又可以),这就让小张有点丈二摸不着头脑,搞不清楚到底是哪里出了问题,完全是一脸懵逼的状态。为了讲解方便,我们把问题做一下简化。在小张维护的模块中...
2023-12-19 08:18:13 338
原创 “玩转”二叉树:用Java来实现
欢迎关注微信公众号:互联网全栈架构二叉树是树结构的一种特殊类型,它的每个结点最多只有两个子结点,因为最多只有两个,所以一般把它们称为左子结点和右子结点(似乎比left child和right child读起来要拗口一些)。二叉树是一种非常重要也很常见的数据结构,在面试中也经常会问起,我们今天就来看看二叉树的Java实现,以及一些常用的二叉树操作。一、二叉树的表示首先,看看二叉树的模样,以便对它有一...
2023-12-18 08:18:40 882
原创 数据同步的利器:Canal
欢迎关注微信公众号:互联网全栈架构在大型应用系统中,往往存在数据异构的现象,比如业务数据保存在MySQL关系数据库中,比如缓存数据放在Redis中,比如支持多维度查询的数据存储在ElasticSearch里面,等等。。。如此种种,不一而足。在这些异构数据之间,我们往往需要把MySQL中的业务数据同步到其他异构数据服务器中,而阿里巴巴推出的一款开源的数据同步工具Canal就可以满足这样的需求。一、C...
2023-12-13 08:18:28 803
原创 小惊喜,单日最高收入
欢迎关注微信公众号:互联网全栈架构写公众号有一段时间了。一直以来,我都很珍惜、很喜欢这种技术交流的方式。在日渐喧嚣、鱼龙混杂的各式文章充斥着版面的时候,我想做得更纯净一些。然而,现实是很骨感的,毕竟需要恰饭,所以我尝试着开通了流量主。现在开通流量主的条件比较低,只要粉丝超过500个就可以开通了。开通以后,可以在文章中间或者文末加上广告,如果用户看到文末,广告就会得到展现,这样公众号的owner就能...
2023-11-30 08:18:48 387
原创 是的,它根本锁不住局部变量!
欢迎关注微信公众号:互联网全栈架构上次创建了一个投票,针对并发编程中常用的关键字synchronized,它到底能不能锁住局部变量,有50%的人认为可以,另外一半认为不可以,具体情况可参见之前的文章:Synchronized能锁住局部变量吗?。而正确答案是不可以,因为局部变量是存放在栈中,而每个线程都有自己的栈空间,也就是说局部变量是线程私有的,使用线程对局部变量加锁,并不会影响其它线程对于代码块...
2023-11-29 08:18:40 425
原创 Synchronized能锁住局部变量吗?
欢迎关注微信公众号:互联网全栈架构上次投票回顾:之前有提到过,由于公众号没有留言功能,导致互动性不太良好,但我们后面发现投票是一种很好的方式,而且很多知识点通过投票选择的方式来展开,也容易让人印象深刻。上次的投票是关系MySQL数据库字段类型的含义,比如某个字段的类型是int(2),这个括号中的2是代表什么含义,是表示字段的最大长度(或者说宽度)是2,也就是最多保存两位数字,比如最大值是99?还是...
2023-11-22 08:18:25 71
原创 拒绝空谈:实例演示MySQL事务隔离级别
欢迎关注微信公众号:互联网全栈架构关系型数据库的事务有四个特性,其中一个就是隔离性(关于事务的更多信息,可以参考之前的一篇文章:漫谈MySQL中的事务)。为了满足不同的应用场景需求,有不同的隔离级别可供选择,在SQL标准和MySQL数据库中,共定义了四种隔离级别,分别是读未提交、读已提交、可重复读、串行化,隔离级别越低,系统的开销和并发通常就会更高,但同时也可能带来脏数据等问题。今天我们就用实例来...
2023-11-21 08:18:11 35
原创 操控字节码:Javaassist介绍
欢迎关注微信公众号:互联网全栈架构Javaassist(JAVA programming ASSISTant),是一个可以操控字节码的类库,能够在不修改源代码的情况下,在运行时动态地对类的结构和方法进行拓展(当然也可以新增类)。它提供了丰富的API,让开发人员可以方便地对字节码进行操控。下面我们用实例来展示它的使用。创作不易,辛苦在文末点个赞,谢谢!首先初步认识一下字节码,我们知道,Java源代码...
2023-11-20 08:18:08 46
原创 Spring Boot Starter原理及实践
欢迎关注微信公众号:互联网全栈架构记得初次使用Spring Boot的时候,被它的快速、简单、高效所震惊。相较于原始的Spring开发:写一大堆的XML配置、手动引入一堆的依赖(曾经碰到过因为依赖的版本问题,导致了OOM)、梦魇般的web.xml,如此种种,让人不得不被Spring Boot的清爽所迷倒,那么,Spring Boot是如何做到这样的呢,今天我们就试图来解析一下,本文主要分为两个部分...
2023-11-16 11:45:00 90
原创 聊聊MySQL中的死锁
欢迎关注微信公众号:互联网全栈架构死锁是指两个或者多个事务互相持有对方所需的资源,从而导致它们都无法继续执行的情况。下图是一个死锁的示例,事务1锁住了id=1的数据(比如更新id=1的数据记录),同时请求锁住id=2的数据,但事务2持有id=2的锁,同时又请求id=1的锁,这样就造成了相互等待对方释放锁的情况,从而产生了死锁:上图是死锁产生的示例说明,我们用实际的SQL来演示死锁的产生,首先创建一...
2023-11-08 18:46:24 49
原创 越俎代庖:应用广泛的代理模式
欢迎关注微信公众号:互联网全栈架构前言:最近写了几篇关于设计模式的文章,得到了各位朋友的热烈欢迎(如果阅读量在100左右也算热烈的话),在此先表示感谢!设计模式比较多,一共有23种,如果生硬地去背的话,略显枯燥,且效果也会打折扣,所以我试图对每一种设计模式都用一个成语来进行概括,比如:一呼百应:对于观察者模式,当观察目标的状态发生改变时,所有的观察者都会得到通知,所以我用一呼百应来形容。聚沙成塔:...
2023-11-02 17:24:29 44
原创 MySQL整数类型的长度到底是什么含义?
欢迎关注微信公众号:互联网全栈架构题外话:注册比较晚的公众号没有留言功能,这样的话就少了很多的互动交流,但互动又是一个非常重要的环节,有时候真是让人很无奈,不过我后面发现投票也是一种不错的形式,而且我感觉,参与投票的人越多,就越会得到平台的推荐,所以后续也会多多尝试投票这种形式。除了平台推荐之外,对于一些知识点、可选解决方案等,通过投票展示出来,也会让人印象更为深刻。所以希望大家多多支持,请参与投...
2023-10-30 11:14:14 41
原创 漫谈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 46
原创 NoSQL中的翘楚:MongoDB入门介绍
欢迎关注微信公众号:互联网全栈架构NoSQL,泛指非关系型数据库,它是”non-SQL“或者是”Not Only SQL“缩写,由于这类数据库变得日益强大,已经超出了传统的SQL范畴,所以现在普遍认为NoSQL就是指Not Olny SQL:不仅仅是SQL。NoSQL不同于传统的关系数据库,它以非关系表的形式保存数据,一般来讲,NoSQL数据库具备以下优点:灵活的数据模型可水平扩展,非常适合大规模...
2023-10-23 08:30:53 50
原创 臭名昭著,怙恶不悛的OOM,到底是什么?
欢迎关注微信公众号:互联网全栈架构很多Java程序员都经常会碰到OOM,而这类问题往往比较难以解决,找到root cause并不是件容易的事情,我们今天就来看看OOM到底是什么?有哪些常见的OOM,初步的解决方法有哪些?OOM是Out Of Memory的缩写,翻译过来就是内存溢出,在程序运行过程中,如果出现了OOM,就会抛出OutOfMemoryError异常。在JVM运行时数据区中,只有程序计...
2023-10-19 10:40:32 59
原创 ZooKeeper集群安装
欢迎关注微信公众号:互联网全栈架构上篇文章我们介绍了ZooKeeper的基本知识,包括它的基本概念、应用场景、数据模型等,并在最后演示了ZooKeeper的安装过程,不过,这是单机的安装方法,而在分布式高可用的应用环境中,单机显然是不能满足要求的,今天,我们就来讲解ZooKeeper的集群安装,当然,这也只能算是伪集群,因为所有操作都是在一台机器上面进行的,不过,在真正多台机器中安装的时候,主要操...
2023-10-17 08:00:10 93
原创 应用使用哪种设计模式来改造这样的代码
欢迎关注微信公众号:互联网全栈架构在实际代码编写中,我们经常会遇到这样的业务场景:根据不同的输入条件或者选项,代码进行不同的业务逻辑处理,也就是类似以下这样的代码,充斥着很多的if-else,那么,对于这样的代码,我们应该使用什么设计模式来改造它,让它变得更优雅呢?if(userType.equals("common")){discount=0.9;totalAmout=dis...
2023-10-14 19:01:02 52
原创 俯拾皆是的Java注解,你真的get了吗?
欢迎关注微信公众号:互联网全栈架构一、什么是注解注解是一种元数据,可以应用到代码的多种元素上,比如类、字段、方法等,它提供了关于这些元素的额外信息,但不会影响程序的运行逻辑。它主要有以下这些作用:为编译器提供额外信息:编译器可以用注解来检测错误、抑制警告等。比如注解@Override,如果被修饰的方法没有正确重写父类的方法,那么编译器就会报错。又比如@Deprecated,它用来标识一个方法已经过...
2023-10-13 19:46:29 88
原创 “八面玲珑”的ZooKeeper入门介绍
欢迎关注微信公众号:互联网全栈架构什么是ZooKeeper?我们先来看看官网的定义:ZooKeeper是为分布式应用而设计的高性能协调服务。对于一些通用的服务,比如命名、配置管理、同步和分组管理等,ZooKeeper把它们封装成简单的接口,这样就不需要开发人员从头开始编写。你能够非常便捷地使用它来实现共识、分组管理、领导者选举和现场协议。还可以实现你自身的特定需求。简单来讲,ZooKeeper是一...
2023-10-11 16:02:53 36
转载 ThreadLocal内存溢出演示和原因分析!
作者 | 磊哥来源 | 公众号:Java中文社群转载请联系授权(微信ID:GG_Stone)前言ThreadLocal 翻译成中文是线程本地变量的意思,也就是说它是线程中的私有变量,每个线程只能操作自己的私有变量,所以不会造成线程不安全的问题。所谓的线程不安全是指,多个线程在同一时刻对同一个全局变量做写操作时(读操作不会涉及线程不安全问题),如果执行的结果和我们预期的结果不一致就称之为线程不安全,...
2023-09-27 18:12:23 121
原创 一呼百应:监听变化的观察者模式
欢迎关注微信公众号:互联网全栈架构观察者(Observer)模式属于行为型设计模式,它通常包含观察目标和观察者两类对象,当观察目标的状态发生改变时,会通知到所有的观察者,观察者再进行相应的处理。它的定义如下:在对象间定义一种一对多的依赖关系,当一个对象的状态发生了改变,所有依赖它的对象都被通知且会自动更新。观察者模式主要包括以下几个角色:主题(Subject):也被称为被观察者,它维护了一个观察者...
2023-09-20 19:23:42 67
原创 手把手:Spring Cloud Alibaba项目搭建
欢迎关注微信公众号:互联网全栈架构Spring Cloud Alibaba是Spring Cloud下面的一个子项目,它致力于提供分布式服务开发的一站式解决方案。关于Spring相关框架的关系和基础知识介绍,可以参考之前的文章:春天的故事:Spring框架的入门级知识。今天,我们就从零开始搭建一个Spring Cloud Alibaba的入门项目,重点演示项目的创建过程。开发工具使用Idea,并使...
2023-09-17 20:41:01 514
原创 春天的故事:Spring框架的入门级知识
欢迎关注微信公众号:互联网全栈架构现在,几乎所有的Java程序开发都会用到Spring框架,伴随着Spring的广泛应用和技术本身的不断演进,又衍生出了很多相关的框架,比如Spring Boot,Spring Cloud等等,免不了让人眼花缭乱,本文就试图介绍Spring的基本知识,以及这些流行的Spring框架(套件)之间的关系。一、Spring是什么以上是官网关于最新版Spring的定义,略显...
2023-09-15 19:52:40 78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人