程序员老鬼

心动厂 飞连被曝后台截图!摸鱼的要小心了。

刚看到个程序员吐槽:心动厂的飞连竟然在后台偷偷搞截图!哪怕你在Ubuntu上明明关掉了,进程也杀了,结果用htop一看,woc,screenshot还在后台窜,真有点毛骨悚然👀。网友们讨论的也挺热闹,有人说公司电脑本来就别有隐私幻想,装了远程VPN、飞连这种东西,基本等于把自己的一举一动全交代了。

Image

我觉得这事吧,真没啥好侥幸心理。现在公司搞监控,比我们写自动化还溜,不光截屏,连DNS请求都能顺带盯着。你觉得你“关进小黑屋”,其实对方早就透视了底裤😂。还有人想绕过、屏蔽,讲真,风险自己扛,抓到你还容易背锅。

我的看法是,公私物理隔离,工作电脑就是干活,摸鱼还是用自己设备,别把“安全”当成技术挑战赛。说到底,技术是死的,人是活的,别用自己的聪明逗别人全职搞安全。【备注:文末可领最新资料】

算法题:快乐数

其实这个题很像平时生活里那种不断找茬的循环,怎么说呢,就是有一个正整数,然后你每次把它每个位置上的数字平方相加,得到一个新的数,再继续重复。比如说,19,第一步1的平方加9的平方,1+81=82,下一步8的平方加2的平方,64+4=68……你要是一直算,最后能不能到1,如果能到1,这个数就叫“快乐数”,要是不停地在某个数之间循环死活出不来,那就不是。

唉,这种题其实最坑爹的地方是你会发现有的数会陷入死循环,比如有的数会变成4,然后后面就一直在4、16、37、58、89、145、42、20之间转,转啊转你都晕了,它就是到不了1。那怎么办?这时候就得用个Set存一下你算过的数,一旦发现又出现了,嘿,哥们你不用算了,不是快乐数。

我地铁上当时脑袋转不过来,想用递归,后来想了想其实while循环配合HashSet最省事了:

  1. 定义一个Set<Integer>,用来存出现过的数。
  2. 不断地用“每位平方和”更新n,直到n==1(快乐)或者Set里已经有这个n(死循环)。
  3. 最后返回true还是false。

代码其实贼简单,直接上:

publicbooleanisHappy(int n){
    Set<Integer> seen = new HashSet<>();
while (n != 1 && !seen.contains(n)) {
        seen.add(n);
        n = getNext(n);
    }
return n == 1;
}

privateintgetNext(int n){
int totalSum = 0;
while (n > 0) {
int d = n % 10;
        n = n / 10;
        totalSum += d * d;
    }
return totalSum;
}

我跟你说,这种小函数我写错了三遍,一开始没考虑0,不停地死循环。其实就遍历每一位,然后求平方和呗。写Java要注意除法那一块,别写成n--啥的,不然直接寄。

有人老是喜欢问,你这个Set会不会爆炸?实际上,不会的,数学上有证明,不快乐的数最多就循环在某个固定的圈里,顶多二十多个数,根本爆不了——你大可以放心用HashSet。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404