V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hitmanx  ›  全部回复第 3 页 / 共 36 页
回复总数  706
1  2  3  4  5  6  7  8  9  10 ... 36  
197 天前
回复了 sbldehanhan 创建的主题 C++ 这段代码有问题吗?
@sbldehanhan 我回复里不是写了嘛?如果数量不确定,要支持动态的 grow ,用 std::vector<std::unique_ptr<std::condition_variable>>
197 天前
回复了 sbldehanhan 创建的主题 C++ 这段代码有问题吗?
@cnbatch 应该不能 emplace_back 。condition_variable 是不支持 copy 且不支持 move 的。
emplace_back 会增加 vector 的 size ,所以是有可能触发 vector 的 grow 的,但是如果里面的元素不支持 move ,它是没有办法完成 grow 的。
197 天前
回复了 sbldehanhan 创建的主题 C++ 这段代码有问题吗?
一般像 condition_variable 之类的,如果一定要放在 vector 里的话,用 std::unique_ptr 包一层是更好的,也更常见。
优点一是 condition_variable 本身是不支持移动的,所以你的 vector 是没法 grow 的。且用 unique_ptr 包一层,无论是将来移除个别元素还是替换都会更灵活一些。

用裸的 std::vector<std::condition_variable>主要是可以利用内存的局部性原理,因为所有的元素是放在一个 array 里的。另外相比用 unique_ptr 包一层,也可以减少一些 heap 碎片。但是在这里,似乎灵活性比这两点会更重要一些。
有一点小建议是,可能很多人都像我一样,对你这个挺感兴趣。但是既没看过这个论文,不知道创新在哪里;也不知道你这个 benchmark 究竟每一项测的是什么,甚至这个 benchmark 是你自己创造的而不是广为人知的。

如果你这个卖点就是 performance ,可能和别的产品进行相对比较会比列上几十上百个绝对值更好一些……
197 天前
回复了 dNib9U2o8x 创建的主题 程序员 程序员运动锻炼打卡群--金刚功方向
我去年练了两三个月,还是蛮有效果的。我以前体质一般比较容易感冒,练这个的期间,完全没有。

另外我感觉大概率是个巧合,不过说说也无妨,当时中间还首阳了,恢复得极快,下午开始烧,当晚就退烧了。
200 天前
回复了 TESTFLIGHT2021 创建的主题 OpenAI ChatGPT 在哪里买啊?
虽然 20 刀一个月听上去挺多,但是有时候想到它给我带来的帮助,以及一个月公司付给我的钱,感觉一个月 20 刀真 tmd 便宜爆了。

apple store 订阅很容易。去比如美区下载个 chatgpt 的 app ,开通里面的订阅即可。和普通的 app 订阅没有任何区别,月费从你 app store 的账户走
201 天前
回复了 mushRoomHunter2 创建的主题 程序员 关于自学国外 CS 相关的课程
当难的课看不懂的时候,先看看有没有简单的课,简单的书。如果简单的书也看不懂,搜搜有没有科普的博客、视频等等。总能找到更白话的文章或者学习资源很通俗地把一个问题解释了,只是隐去了很多细节。然后慢慢去填补这些细节。等到你对于整门课的内容都有个把握时,再看哪些难的资料就没有那么陡的学习曲线了。毕竟里面很多抽象的知识你都有了切身的经验,因此变得不再抽象,同时新知识的占比也下降了。通过不同难度资料学习时的”重复“,反而有些东西你会掌握得更好。

我当年最开始啃 OS 的时候感觉也有点抽象。后来跟着日本人的这本非常入门的书( https://book.douban.com/subject/11530329/, https://www.zhihu.com/question/21126582)做了一遍立马清晰了很多,再看一些其它的课程和数据包括代码时,就没有那么吃力了。
@xuegy 你可能没明白这个意思。这个不需要你自己定义 DSL ,还是用 python 的 syntax 。

所以只要你的表达式本来就是 python 的 syntax ,直接一行不改应该就能用 python ast 把它 parse 成 AST 。然后只是遍历的时候把它替换成对应的 dict form 而已。

当然,所以依赖于 exec(string)的方法都会有 security 的问题,需要你的输入是 sanitized
这是我让 chatgpt4 根据这个 idea 写的代码:
```
import ast
import json

data = json.load(xxx) # some sample data source


class TransformVarToDict(ast.NodeTransformer):
def visit_Name(self, node):
# Replace variable reference with dictionary access
if isinstance(node.ctx, (ast.Load, ast.Store)):
return ast.Subscript(
value=ast.Name(id='data', ctx=ast.Load()),
slice=ast.Index(value=ast.Str(s=node.id)),
ctx=node.ctx
)
return node


def process_formula(formula_str):
# Parse the formula to an AST
parsed = ast.parse(formula_str)

# Transform the AST
transformed = TransformVarToDict().visit(parsed)
ast.fix_missing_locations(transformed) # Fix line numbers

# Compile and execute the modified AST
code = compile(transformed, '<string>', 'exec')
exec(code, globals())


# Sample formulas
formulas = [
"A = B + C",
"D = E - F",
"G = H * I",
"J = K / L"
]


for formula in formulas:
process_formula(formula)


print(data)
```
>> PL = PA * C3 * FR * k/(k-1.0) * N * C4 * (np.power(P0 / float(PA), (k-1.0) / (k*N)) - 1.0) / (EA * EM)

@xuegy 可能可以把表达式通过 Python AST( https://docs.python.org/3/library/ast.html)转成抽象语法树(AST),然后在 iterate 这个 AST 的时候把 node 替换成对应的 dict value
想到一个更 hack 的方法,把计算放到一个 function 里,定义一个类似 C/C++里面"preprocess"的 decorator 加在函数上。

在这个 decorator 的实现:通过 inspect.getsource(func)去拿到 source 。然后每一行里把 dict 里的存在的 token 替换成 dict[token],最后调用 exec()去执行替换完的字符串。

相当于你自己实现了一个 preprocessor
233 天前
回复了 ricwangcom 创建的主题 问与答 36 了,还要不要折腾深圳的房产?
我和你是同龄人。如果家里可以给你托底的话还行,要不然我觉得还是有点风险的。毕竟全家只有你一个人工作,存款也不多……而咱们这个年龄的程序员本来就业就存在风险。

我可能也会考虑租房,毕竟租售比低,租房还是赚的。你又有一套房,两个小孩上学的学区也已经解决了。

把自己的房子租出去,再同小区租个大点的。等未来经济预期回暖了,就业市场向好时,你钱也攒的多了再上车不迟。

房地产哪怕是一线城市,我感觉未来再大涨或者提高门槛可能性不大了
可以趁着空学下 C++,有 java 基础这个也不是特别难,至少要达到面试能覆盖到的知识点不是特别难的。如果你继续搞这个行业,有这个基础在,未来路也宽一些。

我自己当初就是自学的 C++,当时只有 C 的基础。后来也是进了全职 c++的岗位,这都 10 多年前的事了。
感觉如果早点让你同学入局当 CTO ,把整个技术栈弄扎实了,还是有机会的。可惜已经太晚了。

LZ 感觉还是亲和力比较高的管理人员,愿意和下面打成一片,可能也是技术人出身的缘故,比较温和。而龚总作为投资人希望管理更加制度化,这个无形间就把管理层和员工对立起来了。加上管理方式比较毛糙、苛刻,没有高薪做基础很难留得住人。
写得挺好的,恭喜 op 找到了自己喜欢的地方生活。人都应该享有自由迁徙的权利。
242 天前
回复了 lurui45 创建的主题 问与答 手机到底是怎么窃听我们的
除了技术手段,还有成本效率原因。每个人每天说那么多话,有多少代表了购买意向?真正有购买意向的你会去搜索引擎、购物平台、视频平台、社交软件等等上面搜索,搜集这些信息,包括你的输入法,这显然是更有效率的方法。
程序员做一种产品更容易成功,就是做开发的工具。原因无他,只有当自己是客户的时候才更容易从客户的角度思考问题。
253 天前
回复了 jonty 创建的主题 C++ json 反序列化怎么把行号和对象映射起来?
用 C++遍历每一行去 tokenize JSON 文件,记录当前的行号。tokenize 过程中把每一个 token(string, number, {, }, [, ], ..)的行号和 token 一起记录下来。然后和往常一样 parse tokens ,但是把行号信息一起取出存在节点里。这样每个节点就有了行号信息
256 天前
回复了 Ytiaoa 创建的主题 程序员 关于一项夜间经济的创业准备
看着没有门槛的行业要是赚钱早就挤破头了。放弃自己的所有积累换个行业重新开始是下下之策。要论积累,你甚至不如菜馆里端过盘子的,人家至少熟悉餐饮行业里的那些破事。

慎重慎重。
@clown007 秦始皇你好
1  2  3  4  5  6  7  8  9  10 ... 36  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2869 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 09:38 · PVG 17:38 · LAX 02:38 · JFK 05:38
Developed with CodeLauncher
♥ Do have faith in what you're doing.