艾小仙最近问我:PHP是不是最好的语言?,我说论垃圾回收,PHP可能更简单粗暴一点。艾小仙满脸惊疑:PHP还有垃圾回收?Java中的垃圾回收机制,大家肯定都有所了解,比如如何确定垃圾,有两种算法,引用计数法和可达性分析算法。Java中使用的是可达性分析算法,而PHP使用的引用计数算法。我们都知道引用计数算法较难处理循环引用的问题,PHP这波奇怪的操作可太秀了,那PHP的垃圾回收原理是怎么样的?一、PHP...
2023-01-03 15:51:18 2972浏览 0点赞 0回复 0收藏
一、为什么要用链路追踪?1.1因:拆分服务单元微服务架构其实是一个分布式的架构,按照业务划分成了多个服务单元。由于服务单元的数量是很多的,有可能几千个,而且业务也会更复杂,如果出现了错误和异常,很难去定位。1.2因:逻辑复杂比如一个请求需要调用多个服务才能完成整个业务闭环,而内部服务的代码逻辑和业务逻辑比较复杂,假如某个服务出现了问题,是难以快速确定那个服务出问题的。1.3果:...
2023-01-03 15:46:45 4159浏览 0点赞 0回复 0收藏
一、熔断&降级&限流&隔离面对高并发的流量,我们通常会使用四种方式(熔断&降级&限流&隔离)来防止瞬时大流量对系统的冲击。而今天要介绍的这两款流量防卫兵,是专门用在这方面的。下面我先给同学扫个小盲。什么是熔断?熔断场景图关键字:断路保护。比如A服务调用B服务,由于网络问题或B服务宕机了或B服务的处理时间长,导致请求的时间超长,如果在一定时间内多次出现这种情况,就可以直接将B断路了(A不再请求B)。...
2023-01-03 15:43:43 4220浏览 0点赞 0回复 0收藏
赤壁之战话说东汉末年,曹操、孙权、刘备在长江赤壁(今湖北蒲圻西北)进行了一次争夺老大位置的大战,这就是有名的赤壁之战。一、还原赤壁之战曹操统一北方后,南下打败了刘备,占领荆襄之地后,还想干掉东边的孙权,于是刘备和孙权一起联合抗击曹军八十万大军。曹操的军队大部分都是北方的,对于水上作战的经验非常欠缺,而且很多士兵晕船,于是曹操命令军队将船尾用铁索相连,减弱了风浪颠簸,利于士兵演...
2023-01-03 15:42:22 3395浏览 0点赞 0回复 0收藏
帮你总结好的锁:序号锁名称应用1乐观锁CAS2悲观锁synchronized、vector、hashtable3自旋锁CAS4可重入锁synchronized、Reentrantlock、Lock5读写锁ReentrantReadWriteLock,CopyOnWriteArrayList、CopyOnWriteArraySet6公平锁Reentrantlock(true)7非公平锁synchronized、reentrantlock(false)8共享锁ReentrantReadWriteLock中读锁9独占锁synchronized、vector、hashtable、ReentrantReadWriteLock中写锁10重量级锁synchronized1...
2023-01-03 15:41:38 3381浏览 0点赞 0回复 0收藏
一、线程不安全之ArrayList集合框架有Map和Collection两大类,Collection下面有List、Set、Queue。List下面有ArrayList、Vector、LinkedList。如下图所示:集合框架思维导图JUC并发包下的集合类Collections有Queue、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentMapJUC包下的Collections我们先来看看ArrayList。1.1、ArrayList的底层初始化操作首先我们来复习下ArrayList的使用,下面是初始化一个ArrayList,数组存...
2023-01-03 15:40:22 4335浏览 0点赞 0回复 0收藏
一、背景上一节我们讲了程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单?,留了一个彩蛋给大家,ABA问题是怎么出现的,为什么不是AAB拖拉机,AAA金花,4个A炸弹?这一篇我们再来揭开ABA的神秘面纱。二、面试连环炮面试的时候我们也经常遭遇面试官的连环追问:CAS概念?Unsafe类是干啥用的?CAS底层实现是怎么样的ABA问题什么场景下会出现?ABA有什么危害?原子引用更新是啥?如何避免ABA问题?三、用积木讲解ABA问题案例:甲看...
2023-01-03 15:38:51 4285浏览 0点赞 0回复 0收藏
本篇来讲下Go的基本使用,欢迎点赞转发在看!主持人:欢迎Go同学欢迎Go同学Go同学:大家好,我叫Go,一个开源的编程语言,能够让软件变得构造简单且高效。1.记者:Go你好,请问你和其他语言同学有什么区别?Go同学:简洁、快速、安全并行、有趣、开源内存管理、数组安全、编译迅速2.记者:Go你好,请问您可以用在哪些地方?Go同学:搭载Web服务器,存储集群或类似用途的巨型中央服务器。提供了海量并行的支持,适合游戏服务端的...
2023-01-03 15:37:55 3261浏览 0点赞 0回复 0收藏
一、Volatile怎么念?volatile怎么念看到这个单词一直不知道怎么发音英[ˈvɒlətaɪl]美[ˈvɑːlətl]adj.[化学]挥发性的;不稳定的;爆炸性的;反复无常的那Java中volatile又是干啥的呢?二、Java中volatile用来干啥?Volatile是Java虚拟机提供的轻量级的同步机制(三大特性)保证可见性不保证原子性禁止指令重排要理解三大特性,就必须知道Java内存模型(JMM),那JMM又是什么呢?JMM是啥三、JMM又是啥?这是一份精...
2023-01-03 15:36:29 3409浏览 0点赞 0回复 0收藏
本篇来自于我的一次真实面试经历。背景本题是我在面试中,技术总监问我的一道真题,当时答得不太好,所以把它揪出来总结了下。后来问了下总监,总监说这是阿里的面试题。。其实面试官主要是想让我说出UDP和TCP的原理上的区别,怎么给UDP加些功能实现TCP。看好去很容易就能说出一两个TCP和UDP的区别,但如果能用女朋友都能听懂的方式该怎么说呢?女朋友:我不想听课本上讲的!我听不懂呀下面我会以大白话的方式来解答上面的问题...
2022-11-30 16:41:25 3252浏览 0点赞 0回复 1收藏
一、MyBatis缓存中的常用概念MyBatis缓存:它用来优化SQL数据库查询的,但是可能会产生脏数据。SqlSession:代表和数据库的一次会话,向用户提供了操作数据库的方法。MappedStatement:代表要发往数据库执行的指令,可以理解为是SQL的抽象表示。Executor:代表用来和数据库交互的执行器,接受MappedStatment作为参数。namespace:每个Mapper文件只能配置一个namespace,用来做Mapper文件级别的缓存共享。映射接口:定义了一个接...
2022-11-30 16:40:25 3281浏览 0点赞 0回复 0收藏
一、排查磁盘占用率100%1.1查看磁盘使用的大致情况第一个命令就是dfh,来查看磁盘的占用情况。df是diskfree的缩写,用于显示目前在Linux系统上的文件系统磁盘的使用情况统计。如下图所示,可以看到磁盘占用率100%。第一列Filesystem代表文件系统的名称。第二列Size表示文件系统的大小。第三列Used表示已占用多大的磁盘空间。第四列Avail表示可用磁盘空间的大小。第五列Use%表示磁盘使...
2022-11-30 16:39:14 4467浏览 0点赞 0回复 0收藏
前言最近和一个研发团队打交道的比较多,了解到他们的代码管理用的是SVN工具,不是用的Gitlab。SVN(Subversion):集中式管理的版本控制系统,很多操作需要连上公共的SVN服务器才能操作,断网了则不能提交代码。简单易上手。SVN创建分支其实需要先在远程服务器创建。。SVN集中式管理的示意图Git:是分布式管理的版本控制系统,很多操作在本地就能完成,即使断网了也能提交代码到本地分支。功能强大较复杂。很多操作支持离线操...
2022-11-30 16:38:07 5001浏览 0点赞 0回复 0收藏
前言最近在倒腾RocketMQ消息队列,首先就得把RocketMQ跑起来对吧,我们一般都是Windows或者Linux机器上,按照官方教程一下子就跑起来了,另外用Intel芯片的Mac也能轻松跑起来。但是我在MacM1上的机器上跑的时候,就遇到了各种问题,折腾了一天,最后终于把RocketMQ在MacM1上用Docker跑起来了,这里总结下心路历程。虽然演示环境是用MacM1系统,但其实Linux系统也适用关于用源码方式跑RocketMQ的方式...
2022-11-30 16:37:05 6203浏览 0点赞 0回复 0收藏
前言我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势?借用火影忍术看过火影的同学肯定知道漩涡鸣人的招牌忍术:多重影分身之术。这个术有一个特别厉害的地方,过程和心得:多个分身的感受和经历都是相通的。比如A分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道A...
2022-11-30 16:35:52 4937浏览 0点赞 0回复 0收藏
1、前言天翼账号是中国电信打造的互联网账号体系产品,利用中国电信管道优势为企业提供用户身份认证能力。其中网关系统是天翼账号对外能力开放体系的重要组成:业务侧它以集中入口、集中计费、集中鉴权管控为目标,技术侧它支持隔离性、可配置、易开发、动态路由、可降级、高并发等场景。自2017年天翼账号网关系统上线以来,历经数次互联网的营销大促活动,特别是2021年的春节红包活动和刚过去双11活动,天翼账号网关系统在10万...
2022-11-30 16:34:56 5787浏览 0点赞 0回复 0收藏
前言在PassJava项目中,我用到了SpringCloudGateway作为API网关,客户端的所有的请求都是先经过网关,然后再转发到会员微服务、题目微服务等。比如API网关和会员微服务对应的访问地址如下:API网关地址:http:localhost:8060会员微服务地址:http:localhost:14000客户端请求都是访问的API网关,然后网关转发到会员微服务,客户端无需知道会员微服务的地址。本篇将会以PassJava作为案例进行讲解。PassJava开源地址:https:github...
2022-11-30 16:34:04 7090浏览 2点赞 1回复 0收藏
前言上篇我们讲了Keepalived底层原理上篇,中篇还是得继续呀,但是发现中篇内容还是很多,一篇讲不完,所以先讲Keepalived的路由原理。在写的过程中,发现路由原理其实挺枯燥的,我想把这个主题用通俗易懂、且有趣的方式讲解出来,但是一直找不到合适的切入点,一次偶然的对话让我的灵感迸发。话说之前大学放暑假的时候,我到一个餐厅打工两个月,Title是初级传菜员。正是这次打工经验,为我带来了一波潜藏已久...
2022-11-30 16:32:53 3348浏览 0点赞 0回复 0收藏
一、遇到的坑一个月前,我们在测试环境部署了一套MySQL高可用架构,也就是MySQL双主+Keepalived的模式。详情看这篇:实战MySQL高可用架构在这一个月遇到了很多坑:因为两个MySQL节点都可以写入,极其容易造成主键重复,进而导致主从同步失败。同步失败后,SlaveSQLThread线程就停了,除非解决了同步的错误,才能继续进行同步。同步失败的错误,不会只有一条记录有问题,往往是一大片的同步问题。两个节点互相缺少对方的...
2022-11-30 16:27:10 3140浏览 0点赞 0回复 0收藏
一、前言最近项目的生产环境遇到一个奇怪的问题:现象:每天早上客服人员在后台创建客服事件时,都会创建失败。当我们重启这个微服务后,后台就可以正常创建了客服事件了。到第二天早上又会创建失败,又得重启这个微服务才行。初步排查:创建一个客服事件时,会用到Redis的递增操作来生成一个唯一的分布式ID作为事件id。代码如下所示:returnredisTemplate.opsForValue().increment("count",1);而恰巧每天早上这个递增操作都会...
2022-11-29 11:52:35 3553浏览 0点赞 0回复 0收藏