生活小记——未定标题(133)

(1)

“生活小记”系列又停更了快一个月了,不要说老夫懒,因为最近实在是没有时间。乃说我最近在忙啥?显然是忙着玩游戏啊!神马玩游戏不是正事?我不这么觉得,玩游戏一直是老夫生活中很重要的一个部分,所以花很多时间来玩游戏是很正常的。

前一段时间由于受不了老款 iPad Air 的性能,把它在闲鱼上卖了,然后买了个今年新出的 iPad。之后就被某些人喷了说老夫浪费钱,买一堆的电子产品。实际上老夫是“物尽其用”的“典范”,买的电子产品大多都有用(当然也有不少在吃灰 *-*),就近几天而言,我的设备里都基本上在运行如下游戏:

  • 手机:游戏王 Duel Links、Cytus。
  • iPad:Hachi Hachi、炉石传说。
  • Pixel C:Dynamix、Voez、合金弹头。
  • PSV:同步音律喵赛克、超级枪弹辩驳 3(等待到货中)。

素不素利用率很高!不过老[……]

继续阅读

这次的“精选”内容是“很简单”的算法题,乃看看自己能做出几个。

 

问题 1:

有一个未排序的整型数组 A,每个数字范围是 1 – 30 000,最多有 50 000 个元素。

现在要把数组里的数字两两合并。每次选出两个数字从数组里删去,并将这两个数相加后放到原数组里去。每执行一步,你要消耗的体力值为两数之和。

重复以上步骤,直到数组里只剩下一个元素。求消耗的最少体力值之和(时限 1 秒)。

例如数组为 [1, 3, 2, 4],第一次合并 1 和 2,数组变为 [3, 3, 4],消耗体力 3;第二次合并 3 和 3,数组变为 [6, 4],消耗体力 6;第三次合并 6 和 4,数组变为 [10],消耗体力 10。一共消耗体力 3+6+10=19,即为所求。

 

问题 2:

有一个已经排序好的数组 A,里面的数字取[……]

继续阅读

稀缺的东西

每年的六月中旬对于老夫来说是一个比较重要的时刻,所以一般老夫都会给自己安排一些特别的“活动”。今年干什么呢?去爬香山好啦~!

要登山香山顶峰有三种选择,第一种是坐缆车,显然是给残疾人用的;第二种是路程稍长、但坡度不大的斜坡,专为老年人和孕妇设计;第三种就是比较陡峭的阶梯。显然以老夫的身体素质而言要选最难爬的楼梯,争取半小时到顶。

这不爬还不要紧,爬了之后才发现自己的身体已经不如二十岁出头的时候了。爬到距离山顶还剩下四分之一处时明显感觉到腿有点累需要休息(体力倒是没啥问题),于是休息了五分钟后,总共花了大约 45 分钟才到山顶。想当年刚毕业的时候,连跑带跳都能毫不费力地登顶。更不用说在读大学的时候去爬的华山了,当年和某人半夜在全部是石梯的登山之路上居然可以不带任何休息地直接到顶峰。

不过这也与我近一段时间没有登山有关,腿脚有些退化。但香山毕竟是一座海拔仅有五百多米的山峰,对[……]

继续阅读

生活小记——未定标题(132)

(1)

人的这一生还是会有一些可能改变自己今后人生轨迹的机会,老夫最近就有一个。

前一段时间,万恶的美帝的某个知名互联网大厂通过某种渠道了解到我以前做过的项目,并且知道我对算法等领域相对而言还算比较擅长,随后就邀请我参加他们最近举行的“秘密”招聘活动(英文原文是“private hiring event”)。至于为什么说是秘密的招聘,大约是因为这个岗位将在国外工作,而他们又不想与在北京的团队去“竞争”候选人,所以才搞出这样一个幺蛾子。看上去像是只有受到邀请的人才能参加他们的招聘。

最初我看到他们的招聘要求之一是有十年以上的工作经验,我指出来后他们说没关系,你可以无视这里的招聘要求。后来经过几轮的了解以及沟通,他们觉得老夫还算不错,因此招聘官前两天和我通了电话,重点介绍了一下这个岗位的“福利待遇”。这哥们是个印度人,讲英语的时候口音相当重,老夫也是鼓起耳朵戴上耳机才听懂。他[……]

继续阅读

“Java 的源代码学习”系列

(1)基本类型和对应的类

(2)HashMap 和 ConcurrentHashMap

(3)ConcurrentSkipListMap

(4)ReentrantLock 相关类(上)(本文)

经过前两篇与各种基础类库的 CAS 的“战斗”,大部分人估计已经晕了。在大多数情况,我们并不会直接参与 CAS 相关的实现细节,而是使用 JDK 提供的各种并发控制的类包。

例如我们常见的锁机制。这里老夫就要来研究一下 ReentrantLock 这个类相关的源代码实现。

老夫把此篇拆为上、下两篇,上篇(本文)是在看 ReentrantLock 相关代码前的一些知识准备(包括对 ThreadLocal 类的代码学习)。在下篇再开始读 ReentrantLock 相关的代码。

现在博客用的垃圾代码高亮插件貌似有问题,如果遇到下[……]

继续阅读

人工智能并不“智能”

相信大伙对霍金的担忧“耳熟能详”。除了他经常提到的寻找地外生命的入侵威胁以外,人工智能也存在着忧患:说不定哪天科幻片里描述的机器人揭竿而起消灭了人类还真能成为现实。

人工智能现在可以说是大热门。各类公司上到 Google、Microsoft,下到一些没听过的小公司,搞诸如“机器学习”、“Deep Learning”之类的东西可谓是如火如荼。然而我认为,弄这些东西【并不能】让机器像人脑一样进行思维。换句话说,以现有的技术和框架,想要机器像人脑(确切地说是高等生物的大脑)一样思考,是不太可能的事情。

当然我并不是说机器学习这个领域然并卵,我也并没有说机器人灭亡人类不可能, 我只是从“模仿”的角度来说。相比于人脑,计算机有着普通生物无可比拟的优势:

  • 超快的运算速度,并且能够进行集群计算:这个应该是没啥争议的。
  • 超多的存储空间。乃可能会说,人脑也可以存储很多东西啊。实际[……]

继续阅读

生活小记——未定标题(131)

(1)

度过了“欢乐”的新年,回到工地搬砖也有两个多月的时间了。然而在这两个多月里,本屌“扬言”了很久(貌似说了有三年了?)的换工作计划…… 并未开始投递简历。实际上并不是说没有行动,而是在准备了一段时间后,发现自己并没有完全准备好,所以还在继续准备中(老夫并没有歇菜,一直在准备好吧?)。

为了打消某些人觉得老夫的换工作计划又搁置了的这种“念头”,老夫要罗列一下大体上都要进行哪些准备:

  • 算法——老夫最近在 LeetCode 上刷题,大概刷了一百多题了。
  • Java 的源代码学习(主要是并发访问的集合类型以及 NIO 等方面的设计)和多线程编程练习。
  • MySQL、Redis、HBase 的基本原理和代码。
  • Java 开发全家桶的原理和代码(比如 Spring Boot、Netflix 等一大堆东西)。
  • 分布式和流式事物处理的相关内容。
  • 吹逼内[……]

继续阅读

生活小记(130)/歌曲收藏(29)——歌曲大放送

貌似很久(?)没有“收藏”自己喜欢的歌曲了,“恰逢”本屌丝【即将】“诞辰” 27 周年,所以这里来一个歌曲大放送,一次性收藏本屌超级喜爱的【5】首歌曲(^…^)。

实际上本屌这个月的事情超多,所以基本上没啥心思“关注”自己的“诞辰日”。不过众多(女性)好友最近一直在念叨我就快过生日,搞得我自己不想记得也得记得。在这里提前收藏一下就当作是自己给自己的生日礼物吧(乃们看我有多穷)。至于为啥要【提前】,那是因为本屌丝的这次“诞辰日”“恰逢”周末,而我在这个周末要为了一些“私人事件”跑到外地去一趟……

 

今天要收藏的五首歌曲,有两首是《伊苏 8》里的背景音乐,两首是“初音未来”的歌曲,还有一首是我非常喜欢玩的音游 Dynamix 里的一首歌曲。收藏的同时顺便发表一下我的“诞辰感想”(^_^)。

 

一、NEXT STEP TOWARD THE UNK[……]

继续阅读

Java 的源代码学习(3)——ConcurrentSkipListMap

“Java 的源代码学习”系列

(1)基本类型和对应的类

(2)HashMap 和 ConcurrentHashMap

(3)ConcurrentSkipListMap

乃可能会说:“乃为了准备面试也是拼了,看了这么多 JDK 的源代码!”实际上以老夫以前面试的经验(以及别人面试的反馈),老夫在研究的 JDK 源代码基本上不会有任何可能被问到。比如上次研究的 ConcurrentHashMap,面试官问了 HashMap 以及 Hashtable 的实现细节,当时我就很好奇如果要它实现高并发的哈希表会怎么去做,于是试探性地提了一下,结果他除了想到分段锁其他毛都没有了解!这样看来要他想一个办法去实现低延迟的扩容也是太难为他了!(乃会说乃面试的时候还问面试官问题?实际上老夫会提一个和官方实现相近的方案,然后试探性地问他有没有更好的方法。)

而实际上写 JDK 源代码的[……]

继续阅读

递推和 DP 问题精选(1)

上一篇博客喷了现在很多公司面试的题目,现在来复习一下稍微高级一点的算法,这些题目都是老夫曾经做过的,拿出来“温故而【不】知新”。

 

弱智版放鱼缸

问题描述

刀之魂最近准备在公司放一个“小”鱼缸,市场上买的鱼缸都不够大,于是刀之魂找了一家厂商定制。但是生产鱼缸的厂家很脑残,只能做出底面为正方形的。

众所周知,公司有很多工位和其他物品,所以能放置这个鱼缸的区域有限。但是由于刀之魂想尽可能地霸占公司已有的空地,因此想找到一块面积最大的地方来放置鱼缸。再次注意,鱼缸的底面是正方形的。

现在请乃帮刀之魂找一块面积最大的正方形空地,以便刀之魂找厂家定制合适大小的鱼缸。

 

输入:

输入的内容是一个二维数组(int[][]),其中每一个元素都为 0 或 1。其中 0 表示空地,1 表示位置被占用而不能放置鱼缸。

输出:

一[……]

继续阅读