2019-07-03

14 篇热帖

1. 对你影响最大的一本书是哪本?
喜欢阅读的 V 友都来谈谈。
2. [代征男友] 坐标深圳, 89 年妹子征男友
先说一下,本人男性,这个帖子是帮朋友代发的,朋友想找个理工男,倾向于程序员,大厂的更好。
=============分隔,以下为该女性朋友自我描述=============
本科学历,广西北海人,目前在广州,一周后( 07.10 )会到深圳,新工作已经找好( title 是总经理助理,具体工作内容是电商仓库管理方面的工作),年入 10 万+
身高 158.5cm ,体重 92,皮肤白,自认为不化妆 6 分,化妆 8 分以上,包含自恋加成。
毕业后谈了几年恋爱,后来分手,目前单身两年多,眼看 30 了,得主动给自己找对象了。
工作这几年被消费主义洗脑了,花了不少钱,目前只有 10 万的定期理财,不过现在醒悟了,开始多多攒钱。

希望对方:
工作在深圳,有定居在深圳的打算,后面需要买房可以一起承担
身高 170 以上,年龄的话,跟我同龄,或者大几岁
本科及以上学历
有责任心有上进心
不抽烟不酗酒,身体健康,无不良嗜好
颜值顺眼就行,要求不高,
收入比我高,当然越高越好了,哈哈

最后配上一张被消费主义洗脑期间旅游时拍的背影照片
(不知道怎么发图片。。。)
用微博转了一下:
=============分隔===========

联系方式:QQ NDE1MTg2NTQz
真诚找对象,目的是结婚的那种,想 yp 的不要加,谢谢。

=================
看到下面有人说找老实人接盘,补充一下,妹子还是处女
3. 各位用的都是什么鼠标
我前面用了大概 1-2 年的达尔优 LM107 现在右键不行了。想换个罗技 g102,我对鼠标的需求是 lol 所以要有侧键,玩射击游戏会需要改变鼠标 dpi 所以需要有改变 dpi 的按钮。其他的没了。迫于穷,所以就想花个 100 多。

那么问题来了,大家用的都有什么鼠标,用了多久
4. 23 岁程序员,参加工作两年,诊断出中度抑郁该怎么办?

23 岁程序员,做运维两年,最近发觉心情不好持续很久(两周,甚至更长,并且周期性重复),也困扰了女朋友很久,前些天去医院诊断出中度抑郁和轻度的焦虑症,之前我自己还借了几万的商业贷款给家里盖房子,今年又刚买了车,很需要钱,不能辞职休息,转行就更不可能,跳槽因为学历原因也很难,现在在一家上市公司做运维主管,感觉压力好大!求 V 友支招!就不在大号发帖了,感觉有些丢人....

5. 把公司的服务器全部换成 Debian 9 的系统了
一共大约 300 个实例,统一的 Debian 9.9 系统,
系统层面的问题少了许多(相比之前的 Ubuntu 14.x 16.x centos 等),基本可以保证绝大部分的精力是用在了开发运维工具,和日常业务上的协助。对 Debian 的满意度,超预期。
欢迎来怼,欢迎有经验的同学留言。
6. 牢骚和感慨。
昨晚在和豆瓣网友看完合租房之后,在天河北一路走到华师地铁,望着头顶上的高档住宅区,突然有了旅游的感觉。这一年不断努力的奔跑着,走路都低着头看技术博客,都没有时间好好抬头看看头顶上的风景,三个月了,才发现这里这么美。

这一年积攒的所有的孤独和难受的思绪一下子像 CyclicBarrier 一样涌入脑中,曾以为它会像 CountDownLatch 一样在毕业之时全部消散。

也曾经以为自己是集群中的分片,能在众多繁星中被命中,却不曾想自己只是副本中的其中一个,只能不断的复制他人期待有一天能上位。

拼命的看书,工作,就连坐车时也不放过这海绵里的水,只因自己是 Eden 区中的一个,只有被频繁访问才有机会跨入 Survivor 区,害怕一停下来说就会被 GC。

可能是自己的 Hash Function 太差,所以坏运气没有分散到人生的各个时间。

望着手里 4k 试用的 Offer,不知道未来该怎么走,等待着幸运女神的 Callback......
7. 用了某互联网相亲产品后有感, 175 以下的男生是没机会脱单了
相亲黑话:

有眼缘=要长得好看
三观合的=首先要长得好看

另外不知道是不是我太敏感了,感觉女生说喜欢技术男,理工科,程序员和男生说喜欢 jk,黑丝没什么区别
9. 统计了 V2EX 过去一周的在线人数

做了个趋势图,以半小时为周期爬取的,选的动态数据量最少的关于页面,应该不会造成什么额外负担。。 多方面原因导致数据不是很完整,因为是一次性的东西,没做太多错误处理,没有数据的时间点都留空了。

statistic

粗略总结了下得出来以下几个结论:
1.白天这一时间段,工作日的人数比周末明显高了一大截,凌晨和午夜没有太大差别。
2.工作日的变动趋势比较统一,上午 8-10 点上升,中午 12 点到下午 2 点多有一个明显的小幅下降,晚上 6 点后就开始减少,和上下班以及午饭午休的时间基本吻合。
3.下班时人数降得比上班要慢,周五下班时间明显比其他几个工作日掉得快一些。
4.在上下午两个高峰时间段,周六人数比周日高了那么一丢丢,我觉得应该不是巧合。

最后附上一个可交互的线上版本,点击上方标签可以隐藏对应线条,鼠标移到圆点上可以看具体人数。 http://www.wulihub.com.cn/go/WknNXq/index.html

10. 腾讯云对象存储放了一些博客图片,一个月费用接近 40,正常否?

去年转用腾讯云,现在存储的图片大小不超过 90M,博客图片数量也不多,必要时候才会加上图片。之前每月扣费都不超过 十块,刚刚看了一下,六月扣费 38,6-16 一天就扣了超过 16 快,感觉不正常啊,因为我博客访问量不大。

不知道什么原因,这个扣费正常吗?另外,请 v 友推荐收费便宜的图床,感觉腾讯真的用不起了。

11. 前后端分离的情况下表单重复提交的解决方案思考

约束条件

  1. 前后端分离, 无法使用重定向等依赖于浏览器的技术
  2. 不对前端有任何要求, 比如说提交表单之前申请一个 Token. 提交之后 disable button 之类的

期望的结果

  1. 有效性, 最起码的要求,不能有表单重复提交也不能误报
  2. 透明性, 对前端透明, 前端无感知
  3. 性能, 当然是越快越好

需要解决的问题

后端怎么判断一个表单重复

  1. 已提交的表单应该存储一个指纹(hash)
  2. 新的表单应该和已提交的对比, 如果存在就认为是重复提交

怎么给一个表单建立指纹

  1. 首先, 按照 REST 接口的标准, GET 或者是 HEAD 方法是没有副作用的, 所以我们只对 POST, DELETE 方法做指纹. 实际项目中其实只用到了 POST, 所以下面的方案都是按照 POST 方法作为说明.
  2. POST 方法数据应该都存储在 Body 中, 最简单的我们可以对 Body 的内容做 hash, 如 hash(body). 但是这种方法有问题, 假如 /endpoint1 和 /endpoint2 提交的数据是一样的, 那么这个指纹就无效了
  3. POST URL 也应该作为 hash 的一部分: hash(url + body). 这种方法也会有问题, 不同用户提交相同的表单会误报
  4. 假如这个表单不需要登录就可以提交, 那么我们需要对匿名用户做指纹采集, 最简单的方案就是 User agent 和 IP 地址了, hash(ua + ip + url + body)
  5. 假如这个表单需要登录才可以提交, 我们可以直接用用户的 ID 进行 hash: hash(userId + url + body)

表单重复提交的间隔

  1. 用户提交一个表单一段时间之后是允许再次提交相同的表单的, 所以指纹记录应该有一个有效期
  2. 有效期应该是一个固定的值, 既不能影响用户体验, 也不能误报

实现

实现这个功能是需要注意表单重复提交的危害在于并发问题, 所以实现必须是线程安全的.

定义一下接口

interface FormHashContainer{

	// 添加成功之后返回 true, 如果有重复,返回 false
	boolean putIfAbsent(Sting hash, Date expireAt)

}

单节点实现

单节点可以使用 hashmap 实现, key 为 hash, value 为过期时间

基本逻辑为:

  1. 首先查看 hash 是否存在
  2. 如果存在, 检查过期时间, 如果未过期, 返回 false, 如果过期, 更新过期时间, 返回 true
  3. 如果不存在, 添加到 hashmap 中, 返回 true

需要解决的问题

  1. 线程安全 上述三步操作并非原子操作, 需要保证线程安全
  2. 性能 性能不应该影响过大

尝试方案 1: 一把锁


lock.lock()
try{
// step1
// step2
// step3
}finaly{


lock.unlock();
}

缺点很明显, 所有的 POST 请求到这里都会串行, 影响系统并发

尝试方案 2: 读优化

对于绝大多数的请求都是正常的, 非重复提交的, 所以正常请求不应该受到影响.


Date d = hashmap.putIfAbsent(key, value)

if(d == null){

	return true;
}else{

	lock.lock()
	try{
        // step1
        // step2
        // step3
	}finaly{
	lock.unlock();
}
    
}

读优化之后性能应该会有所提升, 对于一般的应用也就足够了.

尝试方案 3: 使用更加复杂的数据结构

可以考虑使用类似字典树的数据结构, 但是只有 2 -3 层, 每次只锁一个父节点, 这种数据结构实现起来比较复杂, 实际意义也不大.

关于如果过期指纹的问题

如果长期不进行清理, 那么 hashmap 会越来越大, 所以我们应该有一个过期方案来释放空间

方案 1: 发现重复请求之后进行全局清理

当发现重复请求之后, 会持有锁, 在这个阶段进行清理是线程安全的, 并且重复请求对于用户来说没有什么实际意义, 所以哪怕响应慢一点也无所谓.

方案 2: 后台线程定时清理

后台跑一个线程定时清理, 清理的时候也应该持有锁, 但是对于非重复请求没有任何性能影响.

多节点实现

当然是 redis 了, // todo

12. Java web 怎么学才能不恶心

之前拿 python 和 golang 写过后端,体验都还可以

前一段时间开始学 java web,给人的感觉真是恶心炸了🤢。

  • java 没有一本好的入门书籍。
  • java 写起来特别恶心,代码冗余,
  • java 各种七七八八的东西太多了

总之,写起来,学起来真的难受,极其恶心,😔。

不知道大家有什么学习 java web 的经验没,求教

13. offer 比较, 29 岁了, 该怎么打算

题主 29, 坐标江苏, 江南城市, 开发, 房贷压力 7k

公司 A, 蚂蚁金服合作的公司, 说白了就是给蚂蚁干活的, 据了解, 最近他们去杭州阿里中心出差, 连轴转了 3 个月, 2,3 点下班, 不是常年出差,正常在本地开发, 具体还是看项目, 公司 A 希望傍上蚂蚁, 后期成立单独的公司, 现在开发人员规模 100+

公司 B, 环保行业, 主要客户是政府, 主要靠环保设备和相关的信息化软件盈利, 行业 top3, 技术比较旧, 希望我去搞那种现在比较流行的数据可视化, webgl 那块, 将设备采集的信息可视化, 酷炫的效果

公司 A 薪资比 公司 B 多个 3k

选哪个公司合适一点呢, 对长期的规划也合适一点, 其实不太想做螺丝工, 但是也想去大公司见见世面 2233~~

14. 迫于我现在要装修房子了,我这里有个想法朱军看合适么,书房一台电脑通过拖机软件在其他几个房间加几个显示器实现多端方案

包括客厅的电视也用这种方式来搞 可行么? 传输介质用什么 网线?还是说有其他方案 长距离 hdmi 或者 dp ?或者说长距离的 tyc 线