小白debug

其他

为什么用公钥加密却不能用公钥解密?

大家第一次接触HTTPS的时候是不是和我一样,非常困惑。这玩意概念又多又繁琐。尤其是里面的公钥私钥啥的。当时我就特别想知道,为什么用公钥加密却不能用公钥解密?看完这篇文章你会弄明白,同时还会解锁很多HTTPS里的细节知识点。今天,我们就先从对称加密和非对称加密聊起吧。对称加密和非对称加密小学上课的时候,都传过小纸条吧?传纸条的时候每个拿到纸条的同学都会忍不住看一眼,毫无隐私可言。假设班花想对我表白,又不想在传的过程中让别人发现她的情意绵绵。就会在课间十分钟里告诉我,"每个字母向左移动一位,就是我想对你说的话"。然后在上课的时候,递出纸条,上面写了
2022年12月13日
其他

听说DNS根服务器只有13台,科学吗?

www.baidu.com时,操作系统会发出dns请求,去询问www.baidu.com域名对应的IP是多少。$
2022年12月5日
其他

DNS中有哪些值得学习的优秀设计

我曾经也当过学生,现在回想起来,会发现,学生时代的男生记忆力贼好,他们总能记住一串复杂神秘的字母数字串域名,有些大神甚至能直接敲IP上网。在每个翻校墙去网吧的夜晚,你总能发现他们会在某个论坛里寻找开源学习资料,完事还不忘在页面底下祝楼主好人一生平安。原来那时候,他们就已经在学习互联网最重要的开源和分享精神。每每想起,感动不已。感动之余。我们会发现这里面有几个值得一聊的技术性问题。比如,为什么用域名和IP都能上网。他们之间是什么关系。往深了聊,我们可以聊到DNS的原理,以及它的设计有哪些是值得我们学习的。今天的话题,我们从为什么要有DNS聊起。为什么要有DNS如果我们想要访问某度,你可以在浏览器上的搜索栏里输入112.80.248.76这个IP地址,直达页面。通过IP访问网页这样的行为,合法,但有病。大部分人,连自己对象的电话号码都记不住,又怎么可能记得住这么一串IP地址呢。哦,不好意思,伤害到兄弟们了,你们没对象。但我假设你们有。回想一下,虽然你记不住对象的电话号码,但却不影响你给她打电话。你的操作过程是不是打开通讯录,输入"富婆",然后就弹出一个电话号码。点击即拨打。在计算机领域,你大概率也记不住IP,所以也需要有类似的通讯录的功能。比如,你只需要输入www.baidu.com,它就能帮你找到对应的
2022年11月28日
其他

为什么有HTTP协议,还要有websocket协议

平时我们打开网页,比如购物网站某宝。都是点一下列表商品,跳转一下网页就到了商品详情。从HTTP协议的角度来看,就是点一下网页上的某个按钮,前端发一次HTTP请求,网站返回一次HTTP响应。这种由客户端主动请求,服务器响应的方式也满足大部分网页的功能场景。但有没有发现,这种情况下,服务器从来就不会主动给客户端发一次消息。就像你喜欢的女生从来不会主动找你一样。但如果现在,你在刷网页的时候右下角突然弹出一个小广告,提示你【一个人在家偷偷才能玩哦】。求知,好学,勤奋,这些刻在你DNA里的东西都动起来了。你点开后发现。长相平平无奇的古某提示你"道士9条狗,全服横着走"。影帝某辉老师跟你说"系兄弟就来砍我"。来都来了,你就选了个角色进到了游戏界面里。创建角色页面这时候,上来就是一个小怪,从远处走来,然后疯狂拿木棒子抽你。你全程没点任何一次鼠标。服务器就自动将怪物的移动数据和攻击数据源源不断发给你了。这….太暖心了。感动之余,问题就来了,像这种看起来服务器主动发消息给客户端的场景,是怎么做到的?在真正回答这个问题之前,我们先来聊下一些相关的知识背景。使用HTTP不断轮询其实问题的痛点在于,怎么样才能在用户不做任何操作的情况下,网页能收到消息并发生变更。最常见的解决方案是,网页的前端代码里不断定时发HTTP请求到服务器,服务器收到请求后给客户端响应消息。这其实时一种伪服务器推的形式。它其实并不是服务器主动发消息到客户端,而是客户端自己不断偷偷请求服务器,只是用户无感知而已。用这种方式的场景也有很多,最常见的就是扫码登录。比如某信公众号平台,登录页面二维码出现之后,前端网页根本不知道用户扫没扫,于是不断去向后端服务器询问,看有没有人扫过这个码。而且是以大概1到2秒的间隔去不断发出请求,这样可以保证用户在扫码后能在1到2s内得到及时的反馈,不至于等太久。使用HTTP定时轮询但这样,会有两个比较明显的问题当你打开F12页面时,你会发现满屏的HTTP请求。虽然很小,但这其实也消耗带宽,同时也会增加下游服务器的负担。最坏情况下,用户在扫码后,需要等个1~2s,正好才触发下一次http请求,然后才跳转页面,用户会感到明显的卡顿。使用起来的体验就是,二维码出现后,手机扫一扫,然后在手机上点个确认,这时候卡顿等个1~2s,页面才跳转。不断轮询查看是否有扫码那么问题又来了,有没有更好的解决方案?有,而且实现起来成本还非常低。长轮询我们知道,HTTP请求发出后,一般会给服务器留一定的时间做响应,比如3s,规定时间内没返回,就认为是超时。如果我们的HTTP请求将超时设置的很大,比如30s,在这30s内只要服务器收到了扫码请求,就立马返回给客户端网页。如果超时,那就立马发起下一次请求。这样就减少了HTTP请求的个数,并且由于大部分情况下,用户都会在某个30s的区间内做扫码操作,所以响应也是及时的。长轮询比如,某度云网盘就是这么干的。所以你会发现一扫码,手机上点个确认,电脑端网页就秒跳转,体验很好。长轮询的方式来替代真一举两得。像这种发起一个请求,在较长时间内等待服务器响应的机制,就是所谓的长训轮机制。我们常用的消息队列RocketMQ中,消费者去取数据时,也用到了这种方式。RocketMQ的消费者通过长轮询获取数据像这种,在用户不感知的情况下,服务器将数据推送给浏览器的技术,就是所谓的服务器推送技术,它还有个毫不沾边的英文名,comet技术,大家听过就好。上面提到的两种解决方案,本质上,其实还是客户端主动去取数据。对于像扫码登录这样的简单场景还能用用。但如果是网页游戏呢,游戏一般会有大量的数据需要从服务器主动推送到客户端。这就得说下websocket了。websocket是什么我们知道TCP连接的两端,同一时间里,双方都可以主动向对方发送数据。这就是所谓的全双工。而现在使用最广泛的HTTP1.1,也是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,这就是所谓的半双工。也就是说,好好的全双工TCP,被HTTP用成了半双工。为什么?这是由于HTTP协议设计之初,考虑的是看看网页文本的场景,能做到客户端发起请求再由服务器响应,就够了,根本就没考虑网页游戏这种,客户端和服务器之间都要互相主动发大量数据的场景。所以为了更好的支持这样的场景,我们需要另外一个基于TCP的新协议。于是新的应用层协议websocket就被设计出来了。大家别被这个名字给带偏了。虽然名字带了个socket,但其实socket和websocket之间,就跟雷峰和雷峰塔一样,二者接近毫无关系。websocket在四层网络协议中的位置怎么建立websocket连接我们平时刷网页,一般都是在浏览器上刷的,一会刷刷图文,这时候用的是HTTP协议,一会打开网页游戏,这时候就得切换成我们新介绍的websocket协议。为了兼容这些使用场景。浏览器在TCP三次握手建立连接之后,都统一使用HTTP协议先进行一次通信。如果此时是普通的HTTP请求,那后续双方就还是老样子继续用普通HTTP协议进行交互,这点没啥疑问。如果这时候是想建立websocket连接,就会在HTTP请求里带上一些特殊的header头。Connection:
2022年10月6日
其他

能ping通,TCP就一定能连通吗?

平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会执行ping命令。一般对于状况良好的网络来说,你能看到它对应的loss丢包率为0%,也就是所谓的能ping通。如果看到丢包率100%,也就是ping不通。ping正常ping不通那么问题来了,假设我能ping通某台机器,那这时候如果我改用TCP协议去发数据到目的机器,也一定能通吗?或者换个问法,ping和tcp协议走的网络路径是一样的吗?这时候第一反应就是不一定,因为ping完之后中间链路里的某个路由器可能会挂了(断电了),再用TCP去连就会走别的路径。也没错。但假设,中间链路没发生任何变化呢?我先直接说答案。不一定,走的网络路径还是有可能是不同的。今天就来聊聊为什么。我之前写过一篇《断网了,还能ping通
2022年8月18日
其他

读者提问:你听说过pip协议吗?该不该签?

我们先来聊聊你这大半年都做了哪些事情吧。你做的这个事情,业务价值是什么?那你了解这个事情对业务的收益是什么吗?你了解后续业务规划是怎么样的吗?你对业务的规划有什么自己的想法吗?ok,看得出来你对业务的收益和规划都比较清晰,所以你完成了这些需求,也取得了不少结果。但这是业务需求本身的价值,你正好分到了一个容易取得结果的需求,但这是业务属性决定的,你不能说A需求业务价值比B需求更容易拿到结果,其他同事碰巧拿到了B需求,而你拿到了A需求,大家一样努力,就否定B同事的付出,对吧?所以我就想问你,除了业务本身的价值以外,你还为业务提供了哪些额外的价值?嗯嗯,这其实也是为了完成业务需求做的事情,还有其他例子可以举证的吗?那这些事情有落地吗?取得什么成果了吗?我比较关注有哪些结果落地了。另外,你在这段时间里,你有没有觉得自己哪些事情做的不够好的?那还有其他觉得做的不好的点吗?我看了一下,我发现你的bug比较多。这一点你有意识到吗?嗯嗯,我知道,你确实没有造成过任何一次线上事故,所有的bug都是提测期间出现的。我理解这其实是你的代码提测质量比较差?嗯嗯,我明白,分配给你的需求确实不少,从产出上来看确实也不错。但我们在分配活的时候,都是根据每个人的能力模型来进行分配的,我们分配给你这么多活,说明我们是认为你的能力可以cover住的。如果你觉得吃力,我觉得你应该及早提醒我们,让我们降低对你的预期和调整你的工作安排,如果你需要支持但却没有主动来沟通,我理解这是沟通能力不足的表现。Ok,那我可以认为你是认可自己的能力可以胜任这些工作的,所以我们是拉平了这条比较的线的。所以对每一个同事其实都是公平的。但有些同事,比如xxx,就在完成了业务开发的同时,还做了xxx的事情。而你在完成需求以外,我看不到为业务和团队提供更多的价值,并且提测质量也不太理想,这一点不太符合预期。另外,你是否了解组内其他开发目前做的事情吗?嗯那你了解他们做的业务会对你做的事情带来什么收益吗?ok,看来你对整个项目组做的事情了解的并不是很全面啊,你可能需要提升一下大局观,你可以尝试一下,跳上一个台阶去看下我们下一步的规划,而不是只盯着自己在做的事情。而且从你对自己接下来的做的事情的规划上来看,你打算深钻这个领域,这点我觉得ROI可能有点低了,这说句不好听,其实叫钻牛角尖,我觉得你如果完成手上的业务需求,可以把时间投入到组里其他项目中,去拿到更多的结果。所以综合以上这些考虑,我这次给你的绩效是xxx,我知道这可能让你有些意外,但我这边结合上面说的事情给你列出几个点,希望能引起你的反思。balabala。我想问问你是否认可。不不不,你不要闷着,也不需要情绪化,你如果有什么想法,完全可以说出来,我们坦诚的交流。一个人最可贵的品质其实是他能虚心的接受他人的意见,我举一些身边的例子。balablabala。所以你现在再对齐到你自己的情况上,你是否有做到?没错,你确实可能做到了这些点,但是我们在招你进来的时候,我们对你有更高的期望,我希望你不仅仅只是做到上面这些点。而且我个人也非常关注你,我发现你是个有着xxx优秀品质的人,我甚至在你身上看到了以前的自己。但是我现在重新审视过去的自己,就会发现,自己有xxx的不足,你想一下,你是不是也跟曾经的我一样,犯了这些错误?嗯嗯,我能走到今天这个位置,那当然说明我在这方面比你有经验,至少是个前辈。所以我希望能帮助你变得更好。我也有信心有能力能帮助到你。我也知道你非常关注自己的技术能力成长,这起码说明你是个很上进的人,我也知道你其实是个很有想法的人,我想听听你的想法。看来你已经意识到自己的问题了,你对自己的问题有复盘过吗?你有没有总结出什么方法论吗?是不是可以将这些事情落地为一套SOP?那你告诉我,接下来你将怎么做,做哪些事情,怎么样才能避免下一次还犯这样的错误?我给你立个标杆吧,你身边有的同事xxx,他balablabala,最后取得了balabla的结果,所以说你也应该向他一样。你希望能变成和他一样的人吗?好的,接下来为了让你变得更好,我会跟你一起制定一套改进方案pip
2022年5月29日
其他

分库分表会带来读扩散问题?怎么解决?

今天这篇文章,其实也是我曾经面试中遇到过的真题。分库分表大家可能听得多了,但读扩散问题大家了解吗?这里涉及到几个问题。分库分表是什么?读扩散问题是什么?分库分表为什么会引发读扩散问题?怎么解决读扩散问题?能不能不要在评论区叫我刁毛?不好意思,失态了。这些问题还是比较有意思的。相信兄弟们也一定有机会遇到哈哈哈。我们先从分库分表的话题聊起吧。分库分表我们平时做项目开发。一开始,通常都先用一张数据表,而一般来说数据表写到2kw条数据之后,底层B+树的层级结构就可能会变高,不同层级的数据页一般都放在磁盘里不同的地方,换言之,磁盘IO就会增多,带来的便是查询性能变差。如果对上面这句话有疑惑的话,可以去看下我之前写的文章。于是,当我们单表需要管理的数据变得越来越多,就不得不考虑数据库分表。而这里的分表,分为水平分表和垂直分表。垂直分表的原理比较简单,一般就是把某几列拆成一个新表,这样单行数据就会变小,B+树里的单个数据页(固定16kb)内能放入的行数就会变多,从而使单表能放入更多的数据。垂直分表没有太多可以说的点。下面,我们重点说说最常见的水平分表。水平分表有好几种做法,但不管是哪种,本质上都是将原来的
2022年5月25日
其他

都是同样条件的mysql select语句,为什么读到的内容却不一样?

min_trx_id=2,可读。于是id=2的那行数据,还是拿到age=2,而不是更新后的age=3,因此快照读结果还是只有1条数据符合age>=3。但是线程1第三次读,执行select
2022年4月26日
其他

为什么大家说mysql数据库单表最大两千万?依据是啥?

故事从好多年前说起。想必大家也听说过数据库单表建议最大2kw条数据这个说法。如果超过了,性能就会下降得比较厉害。巧了。我也听说过。但我不接受它的建议,硬是单表装了1亿条数据。这时候,我们组里新来的实习生看到了之后,天真无邪的问我:"单表不是建议最大两千万吗?为什么这个表都放了1个亿还不分库分表"?我能说我是因为懒吗?我当初设计时哪里想到这表竟然能涨这么快。。。我不能。说了等于承认自己是开发组里的毒瘤,虽然我确实是,但我不能承认。我如坐针毡,如芒刺背,如鲠在喉。开始了一波骚操作。"我这么做是有道理的""虽然这个表很大,但你有没有发现它查询其实还是很快""这个2kw是个建议值,我们要来看下这个2kw是怎么来的"数据库单表行数最大多大?我们先看下单表行数理论最大值是多少。建表的SQL是这么写的,CREATE
2022年4月5日
其他

mysql主库更新后,从库都读到最新值了,主库还有可能读到旧值吗?

大家好,我是小白,好长时间没更新技术文了,相信大家看我写的水文也看烦了。今天的文章,其实来自真实的面试题,而且还比较有趣,所以忍不住分享出来。直接开始吧。我们知道,mysql数据库,为了得到更高性能,一般会读写分离,主库用于写操作,比如用于执行insert,update操作,从库用于读,也就是最常见的select操作。像下面这个图这样。mysql读写分离虽然主库一般用于写操作,但也是能读的。那么今天的问题来了。主库更新后,主库都读到最新值了,从库还有可能读到旧值吗?主库更新后,从库都读到最新值了,主库还有可能读到旧值吗?毕竟面试官都这么问了,那当然是有可能的,那至于是为啥,以及怎么做到的,今天我们来好好聊聊。正常的主从更新流程比如我在主库和从库都有张user表,此时有以下两条数据。数据库原始状态正常情况下,我们往主库执行写操作,比如更新一条数据,执行update
2022年3月2日
其他

动图图解!没有accept,能建立TCP连接吗?

Flood攻击,可以设置tcp_syncookies,绕开半连接队列。客户端没有半连接队列和全连接队列,但有一个全局hash,可以通过它实现自连接或TCP同时打开。参考资料小林图解网络
2021年9月24日
其他

【修正版】动图图解!代码执行send成功后,数据就发出去了吗?

今天又是被倾盆的需求淹没的一天。有没有人知道,那种“我用3句话,就让产品为我砍了18个需求”的鸡汤课在哪报名,想报。"听懂掌声"的那种课就算了,太费手了。扯远了,回到我们今天的正题,我们了解下这篇文的目录。目录代码执行send成功后,数据就发出去了吗?回答这个问题之前,需要了解什么是Socket
2021年7月28日
其他

硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?

程序猿的第一本互联网黑话指南程序员防猝死指南我感觉,我可能要拿图灵奖了。。。给大家丢脸了,用了三年golang,我还是没答对这道内存泄漏题硬核!漫画图解HTTP知识点+面试题TCP粘包
2021年6月16日
自由知乎 自由微博
其他

动图图解!既然IP层会分片,为什么TCP层也还要分段?

程序猿的第一本互联网黑话指南程序员防猝死指南我感觉,我可能要拿图灵奖了。。。给大家丢脸了,用了三年golang,我还是没答对这道内存泄漏题硬核!漫画图解HTTP知识点+面试题TCP粘包
2021年5月13日
其他

【修正版】动图图解!GMP模型里为什么要有P?背后的原因让人暖心

【之前文章有误,所以修改下重发,感谢“小吴大人”和“我要割麦子”指正!】文章持续更新,可以微信搜一搜「golang小白成长记」第一时间阅读,回复【教程】获golang免费视频教程。本文已经收录在GitHub
2021年4月30日
其他

i/o timeout , 希望你不要踩到这个net/http包的坑

后都放入连接池中,下次继续复用,重复29次,耗时2900ms。第30次请求的时候,连接从建立开始到服务返回前就已经用了3000ms,刚好到设置的3s超时阈值,那么此时客户端就会报超时
2021年4月19日
其他

我感觉,我可能要拿图灵奖了。。。

是的,这个是标题党。事情是这样的,最近在zhihu上回答了一个问题。一夜之间拿到了900+赞,让我相当震惊。实话说,就是个抖机灵的回答。不知道是不是命中了什么推荐规则。没想到打开手机突然发现99+的信息,一时之间有些蒙圈。打开评论,也是相当有趣哈哈哈。在知乎划水这么久,第一次遇到这种场面,纪念下。但说说心里话。既开心又难过。开心是因为能获得那么多赞,刷新一下手机就立马十多个赞,太爽太快乐了。难过是因为之前辛辛苦苦花了好长时间写的文章,加一起点赞都不及随便抖机灵的答案。果然大家还是比较喜欢轻松快乐的东西,学习是反人性的。那么多赞还发牢骚,这大概就是所谓的得了便宜还卖乖吧哈哈哈哈。对,说的就是我这种情况。一码归一码,虽然几乎没有涨粉,但能得到这么大的流量,总的来说还是很开心的。另外想问下,有大佬知道知乎是什么样一个推荐规则吗?我还想看到99+小红点。。。还有有什么可以从zhihu回答引流到【公】【zong】【hao】
2021年4月13日
其他

妙啊! 程序猿的第一本互联网黑话指南

很烦,小侄子最近不给我打电话了。放下作为叔叔的面子,拨通电话。打电话他说,他最近很烦。我以为他长大了,谈恋爱了。他说,最近他们学校,换了个校长。喜欢在早上升国旗之后发表演讲。"发表演讲挺好的啊,德智体美。"他说他听不懂。比如校长今天早上提到说:“我们需要大力推进新型教育场景,尝试建立一些新的教学模型,用心打磨细节。并重点关注其他教育形式的可能性。利用传统教育形式去驱动新型教育形式,打通底层逻辑,形成闭环。用传统教育理念赋能新型教育场景。让传统和新型教育形式作为一整套组合拳,加速学生更好更快的发展。”好家伙,这么长的一句话,信息量竟然为0。再仔细一想。心里一惊,原来是同行啊,这老哥,一定是互联网出来的。光听到赋能这个词,我就知道是哪个厂出来的了。我劝小侄子,这个想听懂,得有一定的互联网阅历才行啊。小侄子却表示:“叔叔,你不是在互联网公司上班吗?你教教我吧”不行,这对于年幼的他,还太早了。直到他告诉我,“我们班长现在已经学会这种超酷的说话方式了,现在班里的女生都超爱听他说话”这???不,这能忍?就算是这样的我,也有想要守护的东西。我必须教会。那晚我打了3小时视频电话,畅快淋漓,让我差点忘了手机还欠费47块这件事。三天后,侄子跟我说,好是挺好的,就是有点废纸,现在班里的女同学都喜欢找他要签名。嗯,不是很环保。考虑到身边还有很多连互联网黑话都不会说的胖友们,在这里简单写一份程序员必知必会的互联网黑话指南。赠与有缘人。诚实质朴如你,实在无法低下高傲的头颅的话,希望你也能听懂别人在不讲人话的时候,到底背后是几层意思。我不允许我的胖友们听不懂!更不允许你们被蒙在鼓里!领导开口闭口都是商业模式,闭环?整个会听下来,就记住了赋能,抓住,推进,深入这些词?产品让你跟她对齐一下?其他部门同事说再不马上处理某个问题,她就要上升了,而这时候你以为她是要上天?hr跟你说公司扁平化管理,一年有两次加薪机会的时候,你只听到了加薪,却听漏了这只是机会?看完下面,你会对上面的场景有不一样的认识。首先对于国内互联网大厂,我们盘一下常说的一些话。比如抓手,是指手可以抓得到的地方,一般是指项目的切入点。当提到项目需要努力寻找抓手的时候,说明项目现在比较蒙圈,还没有好的切入点,还在各种试错。划重点了,项目怎么做都没想清楚,建议各位老哥
2021年4月8日
其他

硬核图解!30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?

ICMP消息告知发送方。而交换机在MAC地址表里找不到转发端口时会选择广播。这里的处理方式两者是不同的,原因在于网络规模的大小。交换机连接的网络最多也就是几千台设备的规模,这个规模并
2021年4月6日
其他

[网络坦白局] TCP粘包 数据包:我只是犯了每个数据包都会犯的错 |硬核图解

事情从一个健身教练说起吧。李东,自称亚健康终结者,尝试使用互联网+的模式拓展自己的业务。在某款新开发的聊天软件琛琛上发布广告。键盘说来就来。疯狂发送"李东",回车发送!,"亚健康终结者",再回车发送!还记得四层网络协议长什么样子吗?四层网络协议四层网络模型每层各司其职,消息在进入每一层时都会多加一个报头,每多一个报头可以理解为数据报多戴一顶帽子。这个报头上面记录着消息从哪来,到哪去,以及消息多长等信息。比如,mac头部记录的是硬件的唯一地址,IP头记录的是从哪来和到哪去,传输层头记录到是到达目的主机后具体去哪个进程。在从消息发到网络的时候给消息带上报头,消息和纷繁复杂的网络中通过这些信息在路由器间流转,最后到达目的机器上,接受者再通过这些报头,一步一步还原出发送者最原始要发送的消息。四层网络协议
2021年3月23日
其他

在B站看猫片被老板发现?不如按下F12学学HTTP

connection网络请求过程中,由于服务端处理时间过长,客户端超时。一般常见于,后端服务器处理时间过长,而客户端也设置了一个超时等待时间,客户端等得“不耐烦”了,主动关掉连接时报出。502
2021年2月20日
其他

​程序员防猝死指南

快过年了,跟我可爱的小侄子通了个电话,上来就说,"叔叔你头发怎么变少了",我很痛心,我的小侄子,年纪轻轻的,眼神已经这么不好使了。但转念一想,这也是他对我的一种关心,作为叔叔,也该回应一把,今年过年给他带一本《少儿编程》回去当礼物吧。但转念又一想,也许我真的头发变少了呢,我强壮的体魄不再足以支撑我肮脏的灵魂了呢,或许真的应了那句古语,程序员固有一死,要么骚死,要么猝死?
2021年1月19日
其他

连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。

nil切片和空切片指向的地址不一样。nil空切片引用数组指针地址为0(无指向任何实际地址)空切片的引用数组指针地址是有的,且固定为一个值s1
2020年10月12日
其他

昨天那个在for循环里append元素的同事,今天还在么?

}}代码运行输出len(s)=6len(s)=7len(s)=8len(s)=9len(s)=10所以说,那个同事用的是golang吗?文章推荐:
2020年9月22日
其他

golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢?

for循环select时,如果其中一个case通道已经关闭,则每次都会执行到这个case。如果select里边只有一个case,而这个case被关闭了,则会出现死循环。解释
2020年7月14日
其他

golang面试题:对已经关闭的的chan进行读写,会怎么样?为什么?

指通道已经关闭,且缓存为空的情况下(已经读完了之前写到通道里的值)如果接收值的地址
2020年6月25日
其他

golang面试题:​reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

json包里使用的时候,会结构体里的字段边上加tag,有没有什么办法可以获取到这个tag的内容呢?举例
2020年6月15日
其他

golang面试题:json包变量不加tag会怎么样?

json包里使用的时候,结构体里的变量不加tag能不能正常转成json里的字段?怎么答
2020年6月14日
其他

golang面试题:怎么避免内存逃逸?

引用的数据肯定不会被逃逸,但编译器却不知道的情况下,这是很有用的。面试中秀一秀是可以的,如果在实际项目中如果使用这种unsafe包大概率会被同事打死。不建议使用!
2020年6月8日
其他

高频golang面试题:简单聊聊内存逃逸?

fmt.Println/var/folders/45/qx9lfw2s2zzgvhzg3mtzkwzc0000gn/T/go-build409982591/b001/_gomod_.go:6:6:
2020年6月3日
其他

golang面试题:能说说uintptr和unsafe.Pointer的区别吗?

unsafe.Pointer只是单纯的通用指针类型,用于转换不同类型指针,它不可以参与指针运算;而uintptr是用于指针运算的,GC
2020年6月2日
其他

golang面试题:拷贝大切片一定比小切片代价大吗?

uintptr,两个int)。切片中的第一个字是指向切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是容量。将一个
2020年6月1日
其他

golang面试题:字符串转成byte数组,会发生内存拷贝吗?

字符串转成切片,会产生拷贝。严格来说,只要是发生类型强转都会发生内存拷贝。那么问题来了。频繁的内存拷贝操作听起来对性能不大友好。有没有什么办法可以在字符串转成切片的时候不用发生拷贝呢?代码实现
2020年5月31日
其他

golang面试题:翻转含有中文、数字、英文字母的字符串

问题翻转含有中文、数字、英文字母的字符串"你好abc啊哈哈"代码实现package
2020年5月23日