V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bwangel  ›  全部回复第 16 页 / 共 32 页
回复总数  637
1 ... 12  13  14  15  16  17  18  19  20  21 ... 32  
2019-04-14 18:11:37 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@mengzhuo 老哥,默默地把你取消拉黑了。后来发现你吐槽的是对的,这个问题不能用锁解决。
2019-04-14 17:23:21 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@hheedat 你好,感谢你的回复,你反馈的问题确实存在。出现`BAC`的原因是这样的(为了格式更好看一些,我把内容写在了 Gist 上,希望你拥有 跨越长城 的能力):

https://gist.github.com/bwangelme/1d204647f4658007043f348a61f37936

你说的第二个问题,`i` 确实没有被 mutex 保护。但是由于每个 Goroutine 执行 `i++` 的时候都会首先获取 `holdCount` 的值,如果 holdCount 的值不为 1,那么这个 Goroutine 就会阻塞。所以可以确保同一时刻只会有一个 Goroutine 执行 `i++`
祝平安。
2019-04-09 16:45:44 +08:00
回复了 imherer 创建的主题 程序员 用户 ID 应该如何设计?
这个问题叫做 ID 混淆,

http://python.jobbole.com/85534/ 这篇文章介绍了一种混淆 ID 的方法。这个不要再数据库层做,数据库中的 ID 一定要使用自增 ID,要不然会影响索引。这个需要在视图层做,Python web 框架可以搭配 WSGI 中间件一起实现。

如果使用 Django 搭建 API 服务,可以这么实现

1. 为 ID 新建一种类型,IntID
2. model 层返回的 id 字段都是 intID 类型
3. 视图层不要返回 HTTP Response,返回字典。
4. (关键)写一个 wsgi 中间件,拦截响应,如果响应是字典,则使用 JSON 格式化,并返回一个 JSONHTTP Response。JSON 格式化的时候需要自己写 encoder,判断如果是 IntID 类型,使用上述的混淆方法格式化,这样返回的整数是被混淆的字符串了
5. (关键)写一个 WSGI 中间件,拦截请求,将 POST 和 GET 数据都封装成字典存放到 request 中。然后每个请求的数据都要使用类似于 Form 的东西来处理一遍。Form 中自己可以实现一个 field,叫做 IntID field,就是执行反混淆的任务,将字符串的 ID 转换成数字 ID。
2019-04-07 21:47:55 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@realityone 嗯,找到了一篇相关的文章,还在研读

http://www.sarathlakshman.com/2016/06/15/pitfall-of-golang-scheduler
2019-04-07 20:51:28 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@whoisghost #35

老哥抱歉,不知道啥时候把你 block 了。所以一直没看到你的评论。

你指出的这个问题非常对,我把数量改成 5/50 后。程序就会阻塞,请问这是为什么啊,有些没太理解。
2019-04-07 14:31:11 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@art2cat 哇,谢谢老哥提醒。尴尬了,手滑打错了。
2019-04-07 12:37:35 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@jadeity @jadeity 嗯,感觉这才是正确使用线程 /Goroutine 的姿势。这个题现在看来感觉有些奇怪,使用线程这种并行处理方式来做一些同步的事情。可能是面试者想要考察线程同步的方式吧。
2019-04-07 12:35:40 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@hjc4869 我刚刚上维基百科简单看了一下 Semaphore 的定义: https://zh.wikipedia.org/wiki/%E4%BF%A1%E5%8F%B7%E9%87%8F

感觉和我在文中写的 [正确答案 V2 – 公平锁] 的实现方式很像,可以详述一下 Semaphore 的解决方案吗?最好可以贴一些代码。
2019-04-07 11:24:10 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@Mark3K 理解了,谢谢。我补充一下。
2019-04-07 11:11:55 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@Mark3K 可以贴一下完整代码吗?有些没太理解?

@mengzhuo 你这样说话的态度让人很不爽,我决定把你拉黑了。
2019-04-07 10:27:55 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@richzhu

字面量 struct{}代表了空的结构体类型。这样的类型既不包含任何字段也没有任何方法。该类型的值所需的存储空间几乎可以忽略不计。

因此,我们可以把这样的值作为占位值来使用。比如:在同一个应用场景下,map[int] [int]bool 类型的值占用更少的存储空间。
2019-03-25 11:18:23 +08:00
回复了 bwangel 创建的主题 程序员 建议大家弃用 Gitalk 和 Gitment 等权限过高的 Github OAuth App
@deltacat 所以我发这个帖子啊?感觉这是一个很大的安全隐患,不过是目前没人利用这个做坏事罢了。
2019-03-25 10:10:01 +08:00
回复了 samray 创建的主题 程序员 一条面试题引发的思考--浅谈 Java 公平锁与内存模型
https://gist.github.com/bwangelme/b44b427621b28f1a17b0cd7a3e6e94ae

楼主,是这样的么,检查条件,i++ 都要上锁
2019-03-24 11:05:58 +08:00
回复了 bwangel 创建的主题 程序员 建议大家弃用 Gitalk 和 Gitment 等权限过高的 Github OAuth App
@deltacat https://github.com/utterance/utterances 是个 GitHub App,它的权限仅限于某个仓库。像 hugo hexo 这种静态页面类型的博客,clientID/clientSecret 泄露是不可避免的。我认为较好的解决方式是像 utteras 这种 GitHubApp,只有一个仓库的读写权限,将破坏降到最小。
2019-03-20 17:44:36 +08:00
回复了 hheedat 创建的主题 程序员 北京银行实在是太逗比了,短信服务也会按时下班?
@d5n

这个应该在产品上对短信消息进行分级。

例如转账短信,设置成 0 级。24 小时都会发。推广短信设置成 1 级,只有白天发。
2019-03-20 17:26:14 +08:00
回复了 hheedat 创建的主题 程序员 北京银行实在是太逗比了,短信服务也会按时下班?
哈哈。我们公司的 APP 推送。都是丢队列的,然后定时刷队列。然后晚上 10 点以后不会发,不打扰用户。

不过转账短信这个 feature 搞这个事情,有些太拍脑袋了吧。别人转给我 5W,我哪还有心思睡觉啊,肯定是不停地刷,来看钱到账了没。
1 ... 12  13  14  15  16  17  18  19  20  21 ... 32  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2512 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 01:49 · PVG 09:49 · LAX 17:49 · JFK 20:49
♥ Do have faith in what you're doing.