V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bwangel  ›  全部回复第 15 页 / 共 32 页
回复总数  627
1 ... 11  12  13  14  15  16  17  18  19  20 ... 32  
2019-04-30 16:10:35 +08:00
回复了 piglei 创建的主题 Python Python 工匠:编写地道循环的两个建议
啊,刚刚又遇到一个坑,忍不住过来吐槽一下。

https://gist.github.com/bwangelme/4002260ea023736eb7e51bb0a53a23e0

上面的代码是大概的伪代码。`update_id_time ` 函数正常是能够成功更新 ID 的 time 属性的,但是如果把 `update_id_time` 变成一个异步任务,程序就失败了。

因为在执行 `self.props['time'] = datetime.datetime.now().strftime('%Y/%m/%d')` 我们相当于创建了一个临时变量,props,然后对这个临时变量做了一些修改。

但是在整个代码放到队列中后,队列消费者 unpickle 代码的时候,`self.props`不会使用我们这个临时变量,而是直接从`props_getter`中获取。这样我们的修改就丢失了。

感觉打造一支高水平的 Python 开发团队难度太大了,比 Java 要难很多。
2019-04-30 12:41:59 +08:00
回复了 Exits 创建的主题 Python 请教一下,现是否有完全基于 Python 的 MapReduce 框架
https://github.com/douban/dpark

不知道符不符合你的需求。
2019-04-28 17:54:53 +08:00
回复了 piglei 创建的主题 Python Python 工匠:编写地道循环的两个建议
@ #22 举一个标准库的例子

https://golang.org/src/sync/atomic/doc.go

因为没有函数重载,出现了这样的写法。

@piglei 现在越来越喜欢 Go 了。

曾经遇到过一种写法,类的定义是空的,然后 setattr 往里面塞。然后光看代码很难知道一个对象中有哪些属性,必须要跑起来,通过 vars 才能看出到底有哪些属性。

感觉宁愿多写一些,也不愿意搞这些黑魔法了。
2019-04-28 17:31:12 +08:00
回复了 piglei 创建的主题 Python Python 工匠:编写地道循环的两个建议
感觉 Python 和 Go 就是两个极端。

Python 是什么操作都能自定义,运算符重载,__geattr__, __getitem__ property.setter, property.getter, __iter__ 等,更别说还可以用 type 动态创建类,用 Metaclass 修改类的创建过程

而 Go 是啥语法都不让自定义,连个最基本的运算符重载都没有,Add 方法还要写上好几个 IntAdd, FloatAdd。
恕我说句诛心的话,培训班和这种没有实质内容专讲语法的文章,是中国 Python 生态的两大流毒。
2019-04-19 17:56:39 +08:00
回复了 nnz 创建的主题 程序员 大家都是用什么工具建立自己的知识体系?
blog + vimwiki
2019-04-16 23:22:01 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@hheedat 这是修改后的代码,锁里面还是需要两个变量 holdCount 和 isHold

https://gist.github.com/bwangelme/44f0edb469733bf9bac86bbc96faf037
2019-04-16 13:46:23 +08:00
回复了 duoduoeeee 创建的主题 全球工单系统 哔哩哔哩的网页端,分享到动态的功能 bug 了
看到这个,忍不住歪个楼,🐔你太美。
2019-04-15 10:51:00 +08:00
回复了 bwangel 创建的主题 Go 编程语言 一条面试题引发的思考 Go 版本
@hheedat 嗯,对,我的 unlock 有些问题,wait 应该放到 for 循环中
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 理解了,谢谢。我补充一下。
1 ... 11  12  13  14  15  16  17  18  19  20 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3363 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.