V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chanchancl  ›  全部回复第 1 页 / 共 1 页
回复总数  19
假如 p 和 q 指向同一对象,那么对 p 的修改也会影响 q

通过 !p.unique()判断 p 是否唯一指向对象,如果不唯一,则通过 p.reset 构造一个新的 string ,拷贝*p ,此时 p 和 q 就分别指向两个内容相同,但地址不同的对象了

最后对 p 进行 += 操作
2021-10-20 15:19:29 +08:00
回复了 x97bgt 创建的主题 程序员 大小端存储的疑问
大小端只是你已知数据,该如何进行存储和传送的问题(比如内存、硬盘、网络)
如何区分数字?存储系统本质上存的都是 01 序列,是不管区分的,区分靠的是你上层的 protocol
对于字节流,没必要区分,因为计算机存储的最小寻址单位就是字节了
2021-08-16 16:17:43 +08:00
回复了 LokiSharp 创建的主题 生活 看了算账的兄弟的帖子,感觉有点迷茫了
看完你的帖子,我更加迷茫了
2021-08-09 10:59:45 +08:00
回复了 GM 创建的主题 Go 编程语言 Go 成功让我实现了人格分裂
工作上 C++/GO 都会用到
个人写的 C++更多,但更喜欢 GO

所以不太理解 LZ 的痛点具体在哪里
@S2Line configmap 可以挂在为文件
然后通过检测文件变化来相应 configmap 的改动

不过从外部改动 configmap,到映射文件实际改动,中间有一个比较大的间隔,30-60s
将 func 包装成一个 function

在结尾的地方,将 tasks 中,除了自己的 task 都 cancle 掉
2020-09-23 09:54:52 +08:00
回复了 mikywei 创建的主题 C C 语言是怎么抓取网口流量的数据包并解析的?
3: 内核在初始化和启动网卡的时候,从驱动层取得 skb 之后,向上层 tcp/ip 转移的时候,会有 dump 点,将收到的信息传给外部函数,而 tcpdump 用了相关的系统调用,就可以收到这些包。

wireshark 用 libcap 去抓包,而 libcap 内的实现是建立 socket 时,指定一些参数,让数据包转发到自己的队列
2020-09-16 14:59:05 +08:00
回复了 chanchancl 创建的主题 Go 编程语言 关于 go 在 Linux , amd64 平台下的系统调用问题
@katsusan @Mohanson 多谢各位的解答,原来调用普通函数和系统调用的传参顺序也不一样
2020-09-15 16:48:23 +08:00
回复了 chanchancl 创建的主题 Go 编程语言 关于 go 在 Linux , amd64 平台下的系统调用问题
以 1.15 branch 作为标准

[clone]( https://github.com/golang/go/blob/release-branch.go1.15/src/runtime/sys_linux_amd64.s#L592)

从这里来看,R8, R9, R12 都被后面新创建的 client thread 使用了

[clone system call]( https://man7.org/linux/man-pages/man2/clone.2.html)

从 man page 看 clone 系统调用有 4 个参数。。。之前看错了。。。一直以为 clone 有 7 个参数

那么刚好对应 DI, SI, DX R10,分别是 int (*fn)(void *), void *stack, int flags, void *arg

这个问题大体上是解决了

剩下的一个小问题就是, 为什么不用 CX 和 R11

注释里有说

// Careful: Linux system call clobbers CX and R11.

这有什么原因吗?
2020-09-15 16:15:33 +08:00
回复了 chanchancl 创建的主题 Go 编程语言 关于 go 在 Linux , amd64 平台下的系统调用问题
比较了一下,发现我手里的 go1.15.1 的源码,和连接里的 go1.15.2 的代码又不一样了。。。
这些寄存器里到底哪些是传参的。。哪些是作为共享用的呢?
2020-08-03 15:07:03 +08:00
回复了 hongch 创建的主题 杭州 [杭州摆摊记] 周末和女朋友第一次摆摊,感觉比想象中容易😄
楼主心态挺好的,这样被人夸了之后感到开心的感觉,也很不错呢
2020-07-15 15:43:46 +08:00
回复了 lovecy 创建的主题 程序员 大家都是用什么工具或方法,记录日常待办、备忘等?
用 OneNote for Windows 10
2020-06-08 14:39:39 +08:00
回复了 wpaygp 创建的主题 Android 由于 iPhone NFC 依然不支持门禁卡,打算转 Android 了
@chztv 小米可以根据刷卡地点自动决定用那张卡,或者也可以根据时间段来设置刷哪张卡
2020-06-05 17:39:23 +08:00
回复了 xmge 创建的主题 程序员 golang 面试之协程比线程更轻量级?
Golang 中,创建一个协程,仅仅是在用户态下创建一个 Goroutine 数据结构
而一般的线程,则要到内核态去创建,这之间就涉及到 CPU 在两个状态之间的转换。

其次 GMP 调度中,G 的调度始终是由 M 来完成的,M 由依赖于后面实际绑定的 P
P 一般来说就是原生的线程了。在 M 调度不同的 G 也就是 Go routine 时,
不需要从用户态切换到内核态,只需要将 Go routine 的上下文保存,并从自身队列或者全局队列寻找需要调度的 G,
如果由,则进行调度,没有,则在积累一定次数之后,解除与 P 的绑定,并休眠,等待一些 singal 的触发。

本质上来说就是楼上很多人讲的多核:多线程的 M:N 模型,所以调度效率较高,使用的资源较少
2020-05-25 11:57:26 +08:00
回复了 chaleaoch 创建的主题 Python Python 多线程的问题
完了,v2 把我的空格吞了,
总之上面的回复,

Lock GIL
read total,0
add total,1
此时进入休眠
Unlock GIL
这一部分,由线程一执行

Lock GIL
read total, 0
add total, 1
write total, 1
休眠
Unlock GIL
这一部分,由线程二执行

Lock GIL
write total
此时 total 的值还是 1
Unlock GIL
这一部分,由线程一执行

其实由线程几执行无所谓,重要的是这里有一个切换进程的动作。
Python 的解释器你可以理解为一个可以执行指令的 CPU

而赋值这些操作都不是原子的,不应该依赖 GIL 去做任何事,

GIL 本身也不是 Python 的特性,而是 CPython 这个实现的特性
2020-05-25 11:53:42 +08:00
回复了 chaleaoch 创建的主题 Python Python 多线程的问题
@chaleaoch
GIL 保证同时只有一个线程运行,但是并不保证多线程之间的执行顺序。
比如
Thread1 Thread2
Lock GIL
read total,0
add total,1
此时进入休眠
Unlock GIL
Lock GIL
read total, 0
add total, 1
write total, 1
休眠
Unlock GIL
Lock GIL
write total
此时 total 的值还是 1
Unlock GIL

总的来说,GIL 保护的是解释器级别的数据安全,比如对象的引用计数,垃圾分代数据等等,具体参考垃圾回收机制。而对于程序中自己定义的数据则没有任何的保护效果,所以当程序中出现了共享自定义的数据时就要自己加锁。
这句话来自 : https://www.cnblogs.com/liuxiaolu/p/10215629.html
2020-05-22 16:37:55 +08:00
回复了 chaleaoch 创建的主题 Python Python 多线程的问题
简单来说 total 不是线程安全的,
这个不只在 Python 中会出现,而是任何多线程语言下都会出现的现象,
解决方案就是访问前加锁,
或者用原子操作

不过我感觉你是来钓鱼的
???
老实人来了
Python.
str = str[0] + str.replace(str[0], '*')[1:]
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1043 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 19:45 · PVG 03:45 · LAX 12:45 · JFK 15:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.