知乎上搜到一个比较有意思的话题:如何理解「进入内核态」,要回答好这个问题需要对内存管理及程序的运行机制有比较深刻的了解,比如你需要了解内存的分段,分页,中断,特权级等机制,信息量比较大,本文将会从IntelCPU的发展历史讲起,循序渐近地帮助大家彻底掌握这一概念,相信大家看了肯定有帮助。CPU运行机制我们先简单地回顾一下CPU的工作机制,重新温习一下一些基本概念,因为我在查阅资料的过程发现一些网友对寻址,CPU...
2022-12-29 11:21:10 4279浏览 0点赞 0回复 0收藏
网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致JVM崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨线程崩溃,进程一定会崩溃吗进程是如何崩溃的信号机制简介为什么在JVM中线程崩溃不会导致JVM进程崩溃openJDK源码解析线程崩溃,进程一定会崩溃吗一般来说如果线程是因为非法访问内存引起的崩溃,那么进程肯定会崩溃,为什么系统要让进程...
2022-12-29 11:20:10 3884浏览 0点赞 0回复 0收藏
准备写一个针对高并发的系列,今天我们先聊一下高并发下的网络IO模型设计高并发即我们所说的C10K(一个server服务1w个client),C10M,写出高并发的程序相信是每个后端程序员的追求,高并发架构其实有一些很通用的架构设计,如无锁化,缓存等,今天我们主要研究下高并发下的网络IO模型设计,我们知道不管是Nginx,还是Redis,Kafka,RocketMQ等中间件,都能轻松支持非常高的QPS,其实它们背后的网络IO模型设计理念都是一致的,所...
2022-12-29 11:18:27 3166浏览 0点赞 0回复 0收藏
上周线程崩溃为什么不会导致JVM崩溃发出后,有一位小伙伴留言说有个地方不严谨他认为如果JVM中的主线程异常没有被捕获,JVM还是会崩溃,那么这个说法是否正确呢,我们做个试验看看结果是否是他说的这样publicclassTest{publicstaticvoidmain(String[]args){TestThreadtestThreadnewTestThread();TestThread.start();Integerpnull;这里会导致空指针异常if(p.equals(2)){System.out.println("hahaha");}}}classTestThread...
2022-12-26 13:45:44 3377浏览 0点赞 0回复 0收藏
今天给大家分享两个比较有用的浏览器行为与预期不一致的现象,这两个问题其实并不是什么难题,但在工作中发现不少人被难住了,在我的印象中至少有三位同事在群里问这样的问题,上周又有同事被此现象困住了,所以我觉得这应该是个共性问题,在这里分享给大家,希望对大家有帮助现象一、点击按钮无法实现文件下载前端同事反馈在浏览器里点击实现好的「下载商品图片」按钮却无法下载(预期应该下载zip文件)但如果你在浏览器的地址...
2022-12-26 13:43:05 3789浏览 0点赞 0回复 0收藏
前言一直以来用的都是MarkEditor写作,它有一个比较重要的功能:能自动将拷贝到编辑器中的截图同步到图床,这样如果要将文章导出发到其他平台,由于本地的图片在导出后自动转成了链接,所以无需担心图片在其他平台的识别问题。但是最近发现文章同步到掘金这些平台时,这些图片链接居然无法转存到他们的平台,应该是markeditor的图床用了防盗链技术导致图片无法转存。那么该怎么解决呢,有两种方式一种是找到那些粘贴图片后可以...
2022-12-26 11:57:56 3712浏览 0点赞 0回复 0收藏
前言之前的高性能短链设计一文颇受大家好评,共被转载「47」次,受宠若惊,在此感谢大家的认可!在文末简单提了一下OpenResty,一些读者比较感兴趣,刚好我们接入层网关也是用的OpenResty,所以希望通过对网关设计的介绍来简单总结一下OpenResty的相关知识点,争取让大家对OpenResty这种高性能Web平台有一个比较全面的了解。本文会从以下几个方面来讲解。网关的作用接入层网关架构设计与实现技术选型OpenResty原理剖...
2022-12-26 11:55:52 3289浏览 0点赞 0回复 0收藏
前言从电商转金融2年多了,由于两者商业模式,流量的不同,期间踩了很多坑,尤其是在监控这一块,我们吃过不少苦头,前期由于监控缺失,造成了多起线上事故,经过一番摸索,我们实现了一些相对可行的监控方法,有效地保证了大盘及业务的稳定,在此总结出来分享给大家,希望能为大家提供一些金融场景下的监控思路,如果大家如有更好的思路,也欢迎共同探讨。本文主要从以下几个方面来阐述:电商场景下的常用监控方式金融监控的难...
2022-12-26 11:55:10 2685浏览 0点赞 0回复 0收藏
前言之前我们简单总结了一下动态规划的解题套路,不少人反馈受益颇丰(如果是动态规划初学者,强烈建议看看!)不过有位读者说虽然动态规划的解题套路是看懂了,不过一些动态规划的主要特征,如无后效性没有提到,所以今天我们就简单以一道题再来温习一下动态规划的解题套路及其主要特征。什么样的问题适合用动态规划实现呢,我们在一文学会动态规划解题技巧中曾经提到,只要问题符合「递归+重复」,则基本断定...
2022-12-26 11:53:51 3187浏览 0点赞 0回复 0收藏
上文我们简述了SQL的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你10个技巧一、使用延迟查询优化limit[offset],[rows]经常出现类似以下的SQL语句:SELECTFROMfilmLIMIT100000,10offset特别大!这是我司出现很多慢SQL的主要原因之一,尤其是在跑任务需要分页执行时,经常跑着跑着offset就跑到几十万了,导致任务越跑越慢。LIMIT能很好地解决分页问题,但如果offset过大的话,会造成严重的性能问题,原因主要...
2022-12-26 11:52:58 2674浏览 0点赞 0回复 0收藏
前言一个优秀的程序员具备挺多特质的,比如好奇心,学习能力等,但在我看来一个优秀的程序员必须具备四项核心能力,哪四项,先卖个关子,程序员最喜欢说的话是「TalkisCheap,showmeyourcode」,那我们先来看一道很常见的面试题如何快速定位IP对应的省份地址?我们知道,每个省市都分配了一个ip段,如下[202.102.133.0,202.102.133.255]山东东营市[202.102.135.0,202.102.136.255]山东烟台[202.102.156.34,202.102.157.255]山东青...
2022-12-26 11:51:43 3725浏览 0点赞 0回复 0收藏
前言Java相比CC++最显著的特点便是引入了自动垃圾回收(下文统一用GC指代自动垃圾回收),它解决了CC++最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这些恼人的问题,这也是Java能大行其道的重要原因之一,GC真正让程序员的生产力得到了释放,但是程序员很难感知到它的存在,这就好比,我们吃完饭后在桌上放下餐盘即走,服务员会替你收拾好这些餐盘,你不会关心服务员什么时候来收,怎么收。有人说既然GC...
2022-12-26 11:50:01 4392浏览 0点赞 0回复 0收藏
问题初现电脑雪崩在写「垃圾回收实战篇」时,按书中的一个例子做了一次实验,我觉得涉及的知识点挺多的,所以单独拎出来与大家共享一下,相信大家看完肯定有收获。画外音:尽信书不如无书,对每一个例子我们最好亲自试试,说不定有新的发现实验是这样的:想测试在指定的栈大小(160k)下通过不断创建多线程观察其造成的OOM类型画外音:造成OOM的原因有很多,将在本周的「垃圾回收实战篇」一文中做详细描述,这里不再赘述实验的...
2022-12-26 11:48:06 2727浏览 0点赞 0回复 0收藏
本文是最近写的两篇链表的整合版,为方便大家查阅,所以整合了一下,也对原有文章中逻辑上的一些错误作了修正,虽说只是整合,也做了不少排版上的工作,如有帮助,欢迎转发+在看^^。前言如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础。因为像堆,栈,对,图等比较复杂的数组结基本上都可以由数组和链表来表示,所以掌握数组和链表的基本操作十分重要。今天就来看看链表的基本操作及其在面试中的常见解题思路,...
2022-12-22 14:47:43 2473浏览 0点赞 0回复 0收藏
前言上文我们详细地学习了链表的基本概念,优缺点,也带大家一步步由浅入深地学习了链表的翻转技巧,这一篇我们来看看链表的另一个解题技巧:快慢指针。快慢指针在面试中出现的概率也很大,也是务必要掌握的一个要点,本文总结了市面上常见的快慢指针解题技巧,相信看完后此类问题能手到擒来。本文将详细讲述如何用快慢指针解决以下两大类问题寻找删除第K个结点有关链表环问题的相关解法寻找删除第K个结点小试牛刀之一L...
2022-12-22 14:46:28 3633浏览 0点赞 0回复 0收藏
前言如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础。因为像堆,栈,树,图等比较复杂的数组结基本上都可以由数组和链表来表示,所以掌握数组和链表的基本操作十分重要。链表的知识点蛮多的,所以分成上下两篇,这篇主要讲解链表翻转的解题技巧,下篇主要讲关于链表快慢指针的知识点,干货很多,建议先收藏再看。认真看完保证收获满满!今天就来看看链表的基本操作及其在面试中的常见解题思路,本文将从以下几个...
2022-12-22 14:44:52 2740浏览 0点赞 0回复 0收藏
前言上一篇「一文学会递归解题」一文颇受大家好评,各大号纷纷转载,让笔者颇感欣慰,不过笔者注意到后台有读者有如下反馈确实,相信很多人(包括我自己)都有类似的感慨,对某个知识点,看确实是看懂了,但如果真的再用同样的套路再去解一些带有同样解题思路,但稍加变形的题,往往会束手无策。对这种情况有啥好的解决办法吗?除了勤加练习,还有一良策!鲁迅先生说:如果学习算法,最好一段时间内只刷某种算法思想或...
2022-12-22 14:41:19 4162浏览 0点赞 0回复 0收藏
背景我们的项目工程里经常在每个函数需要用到Random的地方定义一下Random变量(如下)publicvoiddoSomethingCommon(){RandomrandnewRandom();...}在用sonar进行检查时,会发现会有如下告警CreatinganewRandomobjecteachtimearandomvalueisneededisinefficientandmayproducenumberswhicharenotrandomdependingontheJDK.Forbetterefficiencyandrandomness,createasingleRandom,thenstore,andreuseit.简单地说就是在每个函数都创建...
2022-12-22 14:39:45 4704浏览 0点赞 0回复 0收藏
前言递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到Google的PageRank算法都能看到,也是面试官很喜欢的考点最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间空间复杂度,而时间空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归...
2022-12-22 14:37:04 3002浏览 0点赞 0回复 0收藏
案发现场昨天晚上突然短信收到APM(即ApplicationPerformanceManagement的简称,我们内部自己搭建了这样一套系统来对应用的性能、可靠性进行线上的监控和预警的一种机制)大量告警画外音:监控是一种非常重要的发现问题的手段,没有的话一定要及时建立哦紧接着运维打来电话告知线上部署的四台机器全部OOM(outofmemory,内存不足),服务全部不可用,赶紧查看问题!问题排查首先运维先重启了机器,保证线上服务可用,然后再仔细地看了...
2022-12-22 14:35:56 2794浏览 0点赞 0回复 0收藏