《算法新解》作者刘新宇:我只是想打开那些黑盒子,告诉人们里面有什么

刘新宇,于1999年和2001年分别获得清华大学自动化系学士和硕士学位,之后长期从事软件研发工作。他关注基本算法和数据结构,尤其是函数式算法,目前就职于亚马逊中国仓储和物流技术团队。他七年磨一剑,笔耕不辍,写成《算法新解》一书。 Read More

Java 内存模型

概述jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型。重要的事情说多遍。内存划分java虚拟机按照运行时内存使用区域划分如图区域是否线程共享是否会内存溢出程序计数器否不会java虚拟机栈否会本地方法栈否会堆是会方法区是会 Read More

Java 垃圾回收机制

一、垃圾回收机制的意义  Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。  ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。 Read More

GO 垃圾回收机制

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的内存管理功能。在传统的系统级编程语言(主要指C/C++)中,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。由于内存是有限的,所以当程序不再需要使用某个变量的时候,就需要销毁该对象并释放其所占用的内存资源,好重新利用这段空间。在C/C++中,释放无用变量内存空间的事情需要由程序员自己来处理。就是说当程序员认为变量没用了,就手动地释放其占用的内存。但是这样显然非常繁琐,如果有所遗漏,就可能造成资源浪费甚至内存泄露。当软件系统比较复杂,变量多的时候程序员往往就忘记释放内存或者在不该释放的时候释放内存了。这对于程序开发人员是一个比较头痛的问题。为了解决这个问题,后来开发出来的几乎所有新语言(java,python,php等等)都引入了语言层面的自动内存管理 – 也就是语言的使用者只用关注内存的申请而不必关心... Read More

Using Go Module

IntroductioThis post is part 1 in a series.Part 1 — Using Go Modules(this post)Part 2 —Migrating To Go ModulesPart 3 —Publishing Go ModulesPart 4 —Go Modules: v2 and BeyonGo 1.11 and 1.12 include preliminarysupport for modules, Go’snew dependency management systemthat makes dependency version information explicit and easier to manage. This blog post is an introduction to the basic operations nee... Read More

convert json to map/struct in golang

Go offers built-in support for JSON encoding and decoding, including to and from built-in and custom data types.We’ll use these two structs to demonstrate encoding and decoding of custom types below.Only exported fields will be encoded/decoded in JSON. Fields must start with capital letters to be exported.First we’ll look at encoding basic data types to JSON strings. Here are some examples for ato... Read More

数据结构与算法,我到底为什么而学?

今天,我想聊聊在数据结构与算法学习路上的一些小感想。2018 年 8 月左右,开始有计划、有目的性地学习这门知识。当然,这期间也会有怠慢的时候。不过,在这断断续续的 21 个月里,对于学习数据结构与算法这件事儿有了一个更新层次的认识与思考。下面,从两个方面聊聊:学到了什么?为什么而学?学到了什么?数据结构与算法。不不不,这只是问题在字面意识上的答案。我想讲的是,通过数据结构与算法这门课程,到底学到了什么,或者说我学会了什么?在之前,买过那些正规传统的教科书似的书籍,比如严蔚敏的《数据结构》。当然,像《算法导论》这样的神书是不会错过的。作为一个初学者来说,这两本书在学习上带来了很大的帮助。不管怎么说,这个阶段是一直在学习那些经典的、成熟的数据结构与算法。然后,会到 LeetCode 上做一些算法题目。我们知道,LeetCode 上的题目是那种面向面试的问题,可以说几乎每个题目都是用一些非常明... Read More

滴滴研发 & 测试岗位内推集锦(持续更新)

最近更新:2020年04月09日为什么加入滴滴?成就感:用技术改变生活,成就感爆棚个人待遇:工资福利待遇优越,发展前景可期用户量:服务于中国以及海外若干国家的一站式出行平台行业地位:互联网独角兽在招岗位有哪些?Go/PHP/Java 后端研发工程师/架构师服务端技术/运营引擎滴滴网约车最核心的后台研发团队,参与网约车公司核心出行、出行中台、智能补贴引擎、广告、内容等公司级核心项目的研发。和顶级工程师一起,提升负责项目的核心指标,团队技术氛围浓厚,成长快。要求对技术充满热情,强悍的代码能力,至少擅长一门语言对新事物保持强烈好奇心,主动性强,有强烈的成长欲望前端研发工程师/架构师前端技术滴滴网约车前端技术团队,负责微信/支付宝滴滴出行 WebAPP 及小程序,各用户产品前端,内部平台的前端以及 Node 服务研发工作。团队技术氛围好,有小程序框架MPX、移动端组件库CubeUI、Better... Read More

写给未来 30 岁的自己,毕业五年之际的职业感悟

作为 2015 届的毕业生,如今已经在互联网行业摸爬滚打五年了。我一直觉得自己是一个后知后觉的人。在小学时,小朋友都有着自己的梦想,而我却没有;在中学时,同学们都有着自己明确的专业选择,而我却模模糊糊;到了大学,同学们都有着自己的目标和梦想,而我没有。一路回想过去,貌似是在一波跌跌撞撞的过程之后才走到现在的。如今,我作为一名软件工程师,已经有五年的时间了。在这期间,我选择了读取在职研究生学历。看似,我有着一些对自己职业的规划与未来的思考。但是,我觉得并没有想得彻底。对自己的要求,从未停止过。但由于种种原因,当然自己的原因是最大的,最终还是远远没有能够达到自己的期望。随着,工作经验的增加,社会阅历的积累,慢慢地思想成熟起来,对自己有着越来越明确的职业目标。写给未来 30 岁的自己“在三十岁之前要不断地去尝试,去做加法,你不知道你有多少种可能[1]”,曾在一刻Talks中白岩松讲到。他说,在3... Read More

2020 疫情期间,我都做了些什么?

现在是 2020 年 3 月 20 日,不知不觉,恍恍惚惚,已是回到北京的第 7 周了。而在今天的某一瞬间,突然有了一丝记录这疫情期间做了哪些事情的想法。我在 2020 年 2 月 2 日从老家来到北京,当时已经意识到疫情的严重性,但并没有想到时至今日我居然依然被隔离在家中,是的,是真的被隔离了,不能出门的那种。说起从老家回来,那时父母并不希望我这么“早”回到北京,之所以认为“早”是因为疫情给大家带来的恐慌。但是,我之所以还是想出发,我想是因为潜意识中有一种想找回一个真正工作和学习的状态。如果再在家“耗下去”,总觉得会损失些什么。在春节期间的两周中,无形中养成了一个习惯 —— 把每天从起床到入睡的所有时间段做的活动记录下来。之所以有这样的想法,是因为觉得时间过得飞快。如果时间过得飞快,要么就是正在经历让自己非常专注的事情,要么就是日复日的那种无味、枯燥且重复的生活。而我是因为后面那一种。2020 年 03 月 10 日 家 北京... Read More

我为什么时常抱怨别人?

抱怨他人往往在日常的生活、工作和学习中,我还是比较容易地产生对“第三方”的抱怨,这里的第三方包括一些人、事儿或者大环境。当然,这种现象也出现在比较多的朋友中。在和这些朋友聊天时,他们会向我述苦,对这个不满意,对那个不待见,对国家环境失望等等。然而,当时的我仅仅是简单地认为这是他们的问题,却没有意识到如果是我的话,我会不会有同样的感触呢?假象 - 自我欺骗就在最近,我突然觉得我对“第三方”产生了不间断的抱怨,甚至怨恨。经过一段时间,我冷静下来好好的思考了一下。其实,对于我而言,这种对第三方的抱怨和怨恨是一种假象,是一种自我欺骗。那么,下面我来聊聊这为什么是一种自我欺骗,以及该如何消除这种负能量。在某种特定的情况下,我的抱怨和怨恨其实是一种潜意识的自我保护。深一个层次看的话,是我的能力没有达到我的期望标准,所以我没有自信去完成我期望的事情,以至于对自己产生了一种愧疚和怨恨。但是,人们总有一种自... Read More

C++ memset 的使用

在竞赛时使用 memset 发现初始化的默认值无法生效,后来发现我对 memset 的参数的理解有误。void * memset ( void * ptr, int value, size_t num );将指针 ptr 所指向的内存块中前 num 个字节,用 value 替换。注意,这里面的 value 是一个字节的值。下面谈及两个场景,初始化为 0。memset(a,0,sizeof(a));初始化“最大值”,之所以加上引号,是因为并不是真正的最大值。但是能够带来最大值的效果的同时,还能带来一些好处。memset(a,0x3f,sizeof(0x3f));0x3f3f3f3f 代表的十进制数值是 1061109567 是 10^9,和 32 位的有符号整型的最大值是一个量级。而往往,数据在一般情况下都是小于 10^9 的。所以,可以达到替换最大值的效果0x3f3f3f3f + 0x3f... Read More

为什么《黑镜》中的打分机制让女主狼狈不堪?

内容来自《黑镜》第三季 第一集。在未来世界里,每个人都有一个综合评分,5 分制。特别的是,当看到一个人脸时,就可以知道这个人的评分是多少。在这样的社会中,女主是一个对于分数提升有着极强欲望的中产阶级。当时,经过漫长的“努力”自己离有特殊权益的 4.5 分还是有一定的差距。就在此时,女主对于分数的提高更加的着迷。变得越发的虚伪,甚至失去了善良的本性。女主的转折点就在机场开始,由于与机场服务人员产生争执导致被保安扣除 1 分并且附加 24 小时内扣除2倍减分的惩罚。从这里开始,影片描述了女主如何从 4.183 在短时间之内归零的过程。这个“恐怖”的过程,让我看清楚了一些道理。然而,这些道理却能够与我自身产生一定的关联性。女主评分之所以在短时间之内迅速下降,在我看来是因为以下几个原因《黑镜》第三季 第一集 急转直下自我认知在女主和“好友”通电话时讲到,“I'm doing my speech.... Read More

我的 MBA 研究生第一学年的总结

在 2018 - 2019 这一学年的研究生学习生活中,我想是我人生中迄今为止最有收获的一年。也许我的感受是有误差的,但这的确是我内心实实在在的感受。此时,我还清楚地记得统招考试时的紧张气氛,新生拉练时的陌生又新鲜的感觉,以及后来入学后穿越整个春夏秋冬的每一个周末。在学习方面,作为一个理工科背景的我来说,无疑是打开了一扇通向全新世界的大门。工商管理中的学科,是我未曾接触过的,更是对于我如今的生活和工作都起着非常重要的作用。在这一年的学习中,我先后学习了《宏观经济与政策》、《会计》、《商法》、《运筹与决策》、《管理沟通》、《人力资源管理》、《公司理财》、《管理统计》与《项目管理》等等。使得我在一些领域上实现了零的突破。同时,通过前期广泛地学习,使得了解了这些学科的基本概念和知识,形成了一个简单的知识模式。更重要的是,让我能够找到自己更加感兴趣和擅长的领域,进而更加深入地研究下去。北航此外,在... Read More