V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  dongyx  ›  全部回复第 2 页 / 共 4 页
回复总数  67
1  2  3  4  
2019-11-08 19:40:02 +08:00
回复了 1oNflow 创建的主题 Java 想练一下 Java 多线程相关的知识点可以做什么项目?
http server
2019-11-01 23:44:36 +08:00
回复了 tenstone 创建的主题 程序员 如何穿透内网? noip /frp/ngrok ?
我直接 ssh
2019-10-29 13:15:06 +08:00
回复了 clecho 创建的主题 程序员 诸位公司项目的代码质量高吗?
@dongyx 另外关于需求和技术的矛盾,我自己有过一些反思。产品和技术的评价标准不一样,如果一个需求会导致按照我们程序员的标准必然导致烂代码,以前的我会觉得特别难受。但是后来发现是我自己被禁锢了,回顾软件工程的历史,我们程序员关于好代码的标准是怎么建立的呢?是在一次一次的实践中建立的,这些标准的最终目的是做出好产品。当市场上绝大部分公司的需求都会破坏这些既定的标准的时候,这说明时代变了,需求的模式变了,而我们软件工程的理论没有变,是我们落后了。我想我们要做的,是去探索新的符合这个时代的软件工程理论和架构模式吧。
2019-10-29 13:07:46 +08:00
回复了 clecho 创建的主题 程序员 诸位公司项目的代码质量高吗?
@clecho 我认为求职是个自由市场,如果有其他公司能否给到我们更好的的回报,我们可以选择去新的公司。如果当前公司是我能找到的最好的公司,那我只能想办法把事情做好,以求加薪或者提高选择能力后跳槽。如果能够把现在公司的项目质量提高,对程序员来说是简历上的亮点。什么都很完善了,简历上怎么写了?
2019-10-29 12:56:10 +08:00
回复了 clecho 创建的主题 程序员 诸位公司项目的代码质量高吗?
公司雇我们来,就是改善代码质量的。没有 bug,架构完善,给我们那么多钱来做什么呢?我们的任务就是去改进这些东西,而不是抱怨。
@daozhihun 倍增确定上界好赞,送一个感谢给你
@solider245 抱歉,我以为你的需求是确定最大页码,如果你是要爬去所有页面的话,用 while 就行了,二分搜索多此一举。
@solider245 就是一般意义上我们说的二分查找,一般的程序员应该都了解的。 如果你这方面有缺失,我时间不多,只能在这里简单解释一下:假设我有一个有序的整数数组,我想要查询里面一个数的下标,我先拿数组中间的数和目标数对比,如果相等那就找到了,如果小于目标值,就说明目标值在数组的后半部分,那我就去后半部分继续二分,如果大于目标值,说明目标值在数组的前半部分,我就去前部分用同样的方法找。

这样不断地分割数组,我只需要正比于数组长度的对数的时间就能找到值,也就是 1024 长度的数组我只需要找 10 次左右。

对于你的问题,你可以把所有页面看成是一个数组,合法是 0,不合法是 1,这个数组就是[0,0,0,....,1,1,1,1]这样的形式,你要找到最右边的 0,二分搜索就可以了。二分搜索的实现是很容易出 bug 的(除非你很好地掌握了循环不变式的思想, 但是如果你不知道二分搜索,我估计你也不知道循环不变式),所以不建议自己实现。bisect 标准模块已经实现了数组的二分搜索,所以你只需要构造这么一个数组,但是你不能真的去构造数组,不然相当于每个页面都去读取了一次,所以你可以覆盖__getitem__方法,构造一个假的数组,每次读数组的第 i 个值,你去取第 i 个页面就行了。

我给的代码只是简单的 demo,要达到工业强度,还需要一些改进,比如请求失败的处理之类的,祝好运。

PS:while 的做法是每个页码都尝试去读一次,比二分搜索慢了很多,但是如果你的性能需求没有你帖子里说的那么高,那就怎么简单怎么来吧。
我给楼主写一个实现,借助 bisect 标准模块,我们连二分搜索都不用自己实现,bisect_left()会求一个升序数组的 lower_bound,所以我们只需要写一个小类,覆盖__getitem__模拟数组行为,每次取下标 i 都去读站点的第 i 页,如果页面合法就返回 0,否则返回 1,然后调用 bisect_left 就可以了。

下面的例子是二分搜索探寻 Hacker news 的新闻版 ( https://news.ycombinator.com/news?p={page}) 的最大页码。对于 Hacker News 来说,一个页面有帖子当且仅当 HTML 中含有字符串'class='title'",所以可以以这个标准来确定页面是否合法。

V2EX 的回复似乎会忽略缩进,所以我也贴一个 gist: https://gist.github.com/dongyx/cdb7df063c6a4825a51571bd429d0157

import requests
import bisect

def valid(resp):
return int('class="title"' in resp.text)

class PageStatus:
def __getitem__(self, page):
r = requests.get("https://news.ycombinator.com/news",
params={"p": page})

return 0 if valid(r) else 1

end = bisect.bisect_left(PageStatus(), 1, lo=1, hi=1024)

print("the page range is [1, {0})".format(end))
楼主,这个可以用二分搜索解决啊。
2019-07-06 13:59:05 +08:00
回复了 holinhot 创建的主题 Python 请教个 Python sqlalchemy join 问题
1.你的写法无法查出 Price 是因为你 query 的对象仅仅是 Product,尽管你做了显式 join,但是 SQLAlchemy 只会返回 Product 的信心。

2. 正确的写法有很多种,具体要看你的 Product, Price, User 三个 model 类是怎样建立 SQLAlchemy relationships 的。

其中一种最简单的写法,不管你三个类是什么关系都能用的写法,是隐式 jcross join: session.query(Product, Price).filter(Product.id == Price.id & Price.user_group_id == 2)
楼主需要再多给点细节:

1. 2G 是怎么定义的?数据的大小是和数据结构本身有关的,不同结构消耗的空间不一样,你说的 2G,具体是怎样的 2G。

2. 查询是怎么定义的,数据是怎样的结构,需要的查询操作有哪些?比如要查哪些 field,只需要精确匹配吗?需要子串查询吗?正则吗?范围不等式查询吗?
2019-06-28 18:04:37 +08:00
回复了 wangfyyy 创建的主题 问与答 大家一般都怎么复制数据库里的表到另一个数据库中
我用过一个很取巧的方法,通过 ORM 做中介。
2019-06-19 17:00:00 +08:00
回复了 spost 创建的主题 奇思妙想 按比例惩罚制度~~
我不认同楼主的观点,我想这在本质会会抹平穷富之间的生活水平差异,这可能导致我们失去赚钱的动力,最后的结果是大家都不好过。
2019-06-19 16:51:49 +08:00
回复了 yuandatou1024 创建的主题 奇思妙想 人工智能必将超过人类,人类会沦为机器人的奴隶吗
我的观点是这样的讨论没有意义,因为人工智能这个词没有 well-defined,我甚至可以直接将 [欲望] 加入到人工智能的定义里对不对。这将导致,楼主和回复者用着同一个词讨论着不同的东西,将会鸡同鸭讲。除非我们能定下一个关于人工智能的定义,讨论才有意义,但是根据我的经验,如果定义清楚了,答案很大概率是明显的,没有讨论的必要。
2019-06-17 14:43:25 +08:00
回复了 richzhu 创建的主题 职场话题 该不该跟着 CTO 走~
如果是我的话,会关注这位 CTO 是否是一位好的创业者,以及它提出的项目是否让我激动,希望参与。至于他会不会让你加班,做 CTO 的时候不会,不代表做 CEO 的时候不会,你和他出去不是享福,是创业啊!
2019-06-15 14:43:16 +08:00
回复了 FFSephiroth 创建的主题 程序员 (讨论)每个程序员都该学习的 5 种开发语言
C/Python/JavaScript/Shell/Scheme
2019-06-14 12:25:02 +08:00
回复了 aclihui 创建的主题 Figma 大佬们,有啥原型图的软件比较好用啊,可否推荐一下下
Sketcht 挺简单的,我们设计师教了我一下,很快就能上手。
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5477 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 01:54 · PVG 09:54 · LAX 17:54 · JFK 20:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.