V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  exch4nge  ›  全部回复第 1 页 / 共 13 页
回复总数  260
1  2  3  4  5  6  7  8  9  10 ... 13  
@Chipmunker 是 node
@f1ynnv2 #14

vscode ssh 上去的时候看 OUTPUT (输出)窗口会有详细的日志,第一步分析日志发现直接报一些系统版本有关系的错误,我的系统是 CentOS 7 所以提示的是 glibc 跟 cxx 版本过低

找到日志里的一个路径,是 code-xxxxxxxxxxxxxxx 结尾的,上机器找到这个目录,这个文件是个 script ,打开会发现有检查 /tmp/xxxxxxxxxxxx 这个路径有文件就 skip os version check 之类的操作,手动创建这个文件

然后一般这个目录的上一级目录有个 node 可执行文件,这个是需要 patch 的,我用了自己安装的 glibc 跟 cxx 的路径,用 patchelf 打了补丁,打完执行 ./node 检查看看能否运行

再次尝试用 vscode ssh 上去(每次先退 vscode 再把相关进程都 kill 掉),还是会有错误,仔细看日志发现,某个可执行文件执行不了,报错里提到也没找到 musl 什么的,然后自己再安装了 musl

然后再次尝试 vscode ssh 上去,就可以了,右下角会弹出警告框,但是功能没问题。

如果你能直接升级操作系统的 glibc 之类的版本的话,那应该更简单,不过我没试过,也在网上看到很多升级 glibc 后遇到很多问题的事情,就没敢动,只是找个其它位置安装的。
正好昨天遇到了,简要说就是装 musl ,装 glibc ,再用 patchelf 解决了
@andyJado #25 好奇试了下,切换到没有 submodule 的分支时,会提示 warning: unable to rmdir 'a': Directory not empty ,分支切换成功但是 submodule 对应目录还在
虽然我也没了解透彻,尝试强行回答下,参考 https://en.cppreference.com/w/cpp/language/decltype

*p 是一个表达式,符合第二种 decltype ( expression ) ,第二种分成下面三种情况

a) if the value category of expression is xvalue, then decltype yields T&&;
b) if the value category of expression is lvalue, then decltype yields T&;
c) if the value category of expression is prvalue, then decltype yields T.

然后 *p 属于 lvalue ,所以是引用。参考 https://en.cppreference.com/w/cpp/language/value_category
在 settings 里搜 accept suggestion ,调整那几个看看有没有效果
不是做这个方向的,强行答下,希望能有帮助
多线程开发,有很多锁/条件变量之类的,能正确使用其实不容易。相关可以学多线程安全的数据结构,或进一步无锁的并发数据结构。学会用 perf 之类的工具优化性能,如减少 cpu cache miss ,减少对象复制开销,编写对编译器更友好的代码等等。也可以学 simd 指令集与应用。学 OS 与硬件,知道写的代码会经过哪些 syscall ,网络方面比如如何减少 user space 到 kernel space 的内存复制等
大部分做到了解原理以及会用的程度就很不错了,比如你要需要一个并发的 Queue ,到底用哪个,为什么选择用那个等
当然最重要的还是问题分析与设计能力,解决实际业务需求,能够设计出合理的架构,得出这种“我需要并发 quque 去实现某功能”
可以用 protoc --decode_raw 解析任意二进制到 protobuf 的 text format ,没 proto ,最多只能到这个程度。
surge ios 有个叫 模块 的功能,新建一个本地模块就能覆盖订阅配置。
194 天前
回复了 s7964926 创建的主题 程序员 关于反逆向方面想请教一下各位
翻译软件做到这程度已经很不错了,大幅度提高了破解成本,虽然 vmp 不是完全安全的,但应该很少会有人花时间成本来破解。
楼上说的通信部分以及服务器本身安全可以多考虑下,比如用上证书双向认证,通信数据二次加密之类的,服务器防 ddos 等
一般解法:继承+虚函数,不知道你这个场景能否承担相应开销
235 天前
回复了 alexapollo 创建的主题 程序员 来,推荐游戏。我先来: factorio
dave the diver
241 天前
回复了 iqoo 创建的主题 程序员 C++ 类析构是按先进后出的顺序吗?
语义上楼主说的对
本机 mac ,用 vscode remote ssh 连上 centos 7 开发机,编译用 gcc / clang ,构建用类似 bazel 的,分布式编译,有缓存。vscode 上主要用 clangd 插件。
Everything ?
279 天前
回复了 nekoharuya 创建的主题 程序员 有人对游戏 ai 设计感兴趣无
不换语言的话,那就先上多线程吧
按理来说这种情况编译器应该有 warning 的,我也没环境无法确定,也可能是用参数忽略掉了这种 warning ,也可能是编译过程有大量 warning 输出大家都不看。如果这版本 gcc 真没有(可能性很小)那建议升级或换 clang 。
284 天前
回复了 Reiouf 创建的主题 程序员 Lock-free-Stack 算法探讨
贴的第一个代码不对,贴的第二个跟链接里的代码是对的。原因上面 @piaodazhu @C47CH 说了,虽然重复我也说一下。

贴的第一个:
- head 已经在 compare exchange 修改了,不过 new_node 的 next 没设置,导致断了
- 用 compare_exchange_weak 就好,不过我不确定你用的 memory order 对不对
- 这里 length 更新会比实际慢,所以会有差异
- while 里的 old_head = head.load(std::memory_order_release); 除了第一次有用外,没什么用,应该放在 do 上面

贴的第二个,解答你的问题。
如果线程 A 如果执行到 @2 被休眠,如果其他 push 线程 直接执行 @2 ,@3 修改了 head atomic 值,线程 A 不就一直卡死了吗?
不会卡死,因为 compare_exchange_weak 会失败,同时会设置 new_node->next 的值。所以是对的。

4L 你的问题:new_node->next = old_head 放到 while 循环里后逻辑是对的。其它问题参考上面的问题列表
332 天前
回复了 Symbo1ic 创建的主题 C++ 求助,想获得一些关于 C++学习的建议
@Symbo1ic
raw 用在能确定指针有效的情况,指针指向对象的生命周期肯定比当前类对象要长,能不用就不用。

其余不用共享的用 unique ,明确表示有所有权。需要所有权转移也用,函数参数返回值等。
(不用转移所有权,但用来延后初始化的场景建议用 optional )

share_ptr 共享用,随处都用的话得避免循环应用,可以用 weak 解决。有时也用 atomic store load 来做原子操作多线程安全切换里面的对象

内存使用大小上,share 最大,有 custom delete 的 unique 稍微大,没有的 unique 跟 raw 一样
性能上 share 最差,unique 与 raw 接近
2023-02-13 12:49:51 +08:00
回复了 catfly 创建的主题 程序员 新 bing 你们有预约成功的吗?
收到 bing 通知邮件说可以访问 new Bing 了,不过点开链接,好像跳到一个错误页面后快速跳到老 bing 页面,没有 chatGPT
2022-11-29 14:14:28 +08:00
回复了 rayduan 创建的主题 程序员 tabnine 黑五半价
看错了,免费的提示最多一行
1  2  3  4  5  6  7  8  9  10 ... 13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5467 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 01:34 · PVG 09:34 · LAX 17:34 · JFK 20:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.