V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wevsty  ›  全部回复第 14 页 / 共 72 页
回复总数  1431
1 ... 10  11  12  13  14  15  16  17  18  19 ... 72  
2019-12-26 01:01:52 +08:00
回复了 cnfzv 创建的主题 程序员 Windows 编译问题请教
编译本身是不会访问网络的,提示 Connection to server timed out 估计是编译依赖什么东西试图下载的时候出错了吧。
自己挂个梯子再去编译吧。
就楼主举的这个例子来说,我认为没有 volatile 编译器也会正确的进行优化,不会导致计数结果出现错误。

原因是在这个代码的函数中没有做除了++以外的操作,++操作也要求一定要同步修改到内存,并没有什么必要需要把操作数保存到寄存器里来预先载入。
从汇编的角度来看,编译器转化为 ASM 的伪代码应该类似于:
```
call lock()
mov <reg>,<mem>
inc <reg>
mov <mem>,<reg>
call unlock()
```
甚至更简单一些直接化简为:
```
call lock()
inc <mem>
call unlock()
```
为了保持语义正确,这已经是最简化的代码了,没有什么优化的空间。
对于单纯写入内存的操作,操作系统提供的同步语义已经能提供足够的保护了。

但 volatile 也并非在多线程开发中没有意义,举个例子:
```
int global_x = 0;

void thread_01()
{
while(global_x < 100)
{
sleep(1);
}
}

void thread_02()
{
lock();
global_x++;
unlock();
}
```
当 thread_01 执行的时候,thread_01 内部并没有对 thread_01 做任何修改,这时候编译器无法预测到 global_x 可能被改变,所以优化的时候很有可能会把 global_x 放到寄存器来加速循环的执行。
这种时候即使 thread_02 里对 global_x 操作的时候加了锁,最终 thread_01 还是可能会陷入死循环。

volatile 关键字代表强制要求编译器每一次使用这个变量的时候都必须从内存读取,所以在这个例子中,使用 volatile 后就可以避免死循环的出现。

所以通常的,对于可能被读取线程以外的什么条件或者代码改动的变量应该使用 volatile 关键字才不容易出现问题。
2019-12-18 23:51:48 +08:00
回复了 ITJoker 创建的主题 问与答 各位有什么旧手机的玩法?
VIVO 一般是不能解锁 Bootloader 的吧。

不能解锁 Bootloader 你是刷不了任何非官方固件的,所以建议你直接放弃。
360 随身 WiFi 这类产品不就是满足你这样的需求么?

另外软路由不贵的,至少我觉得用软路由的成本大大低于你去开发这一套东西。
salt 可以明文储存在数据库。

Hash 加盐这种做法要保障安全的话,除了 Hash 算法的选择以外也需要盐足够长,一般认为盐的长度应该和密码长度一样长才行。

另外目前是更推荐直接用 BCrypt。
2019-11-14 19:32:23 +08:00
回复了 oldbird 创建的主题 Python cpu 主频低, Python 处理慢?
如果你的代码是单进程的,那当然是主频高的比较占便宜。
2019-11-10 23:20:15 +08:00
回复了 zhouzhou113 创建的主题 C++ C++小问题
1、这个转换是编译器就可以确定的,所以实际上是 0 运行开销。
2、一般类的成员变量都应该在构造函数的初始化列表里进行初始化,和是不是私有成员没有直接的关系。
2019-10-08 22:58:31 +08:00
回复了 1qazse77 创建的主题 问与答 32 位软件在 64 位系统下内存的分配
Win 的话 32 位的程序最大只能使用 2G 内存,无论你硬件能提供多少内存都是最大 2G.
其他 OS 不清楚。
2019-09-29 23:19:45 +08:00
回复了 akura 创建的主题 Python python3 编码转换问题
b'\xe9'不是一个完整的字符序列啊,没办法处理。
2019-09-28 00:08:02 +08:00
回复了 Antidictator 创建的主题 程序员 我有一个朋友,被电信诈骗了 5W
报警,然后马上找家里赶紧把网贷处理了,不然后续利息一滚损失更大。
2019-09-28 00:05:08 +08:00
回复了 dxgfalcongbit 创建的主题 游戏 我想到了一个拯救坦克世界国服的办法
过于理想化。
Wargaming 表示 : 你问过我了么?
找空中网接盘不是一笔小数字 Wargaming 不一定有钱来干这个事情,而且 Wargaming 凭什么相信它这么做能获得全部的利润并且不亏损?
再就是游戏行业并不是一个开放的行业,外资直接运营控制的话政策应该是有限制的。
最后就是你要负责什么版号之类的事情,这种事情小公司都会觉得麻烦,别说只是个人。
2019-09-27 18:26:10 +08:00
回复了 BruceAuyeung 创建的主题 程序员 c++动态调用链接库的问题
没有导出的函数是不能从外部调用的。

编译 dll/so 的时候必须导出外部需要的函数,但是你可以使用自己的方法来描述导出的函数。比如你说的通过加载 xml 来确定导出了什么函数,然后动态加载 dll/so 再来调用是可以的。
2019-09-26 20:54:04 +08:00
回复了 b00tyhunt3r 创建的主题 程序员 C 语言 *p=0
@b00tyhunt3r
是的 '/0'就是数字 0
遇到过类似的情况,只有网易的网站无法访问,其他的网站全部正常。
当时是重启了路由器和光猫以后就正常了,拨号时间长了可能哪边有 bug。
2019-08-13 16:00:27 +08:00
回复了 635614874 创建的主题 问与答 开机卡在主板界面,无论如何进不了 bios,急疯了
淘宝买个编程器,重新刷一下主板的 BIOS。
2019-07-06 17:59:39 +08:00
回复了 b00tyhunt3r 创建的主题 C 惊了 这警告和 Segmentation fault: 11 是咋回事???????
a 只是个指针,没初始化不知道指向的是什么玩意,就这样赋值当然会 Segmentation fault
2019-07-02 11:31:34 +08:00
回复了 AILOVEU 创建的主题 Python [多线程] Python 多线程的锁为什么不好用?
threading.RLock() 只会导致在已经被加锁的情况下再 lock 同一个锁的时候才会阻塞试图 lock 的线程。
2019-06-27 17:37:39 +08:00
回复了 v2byy 创建的主题 C 在 c++中如何高效的将一个 vector 连接到另外一个 vector 上后面?
地址连续是说虚拟内存地址是连续的,对应的物理内存地址一般来说是连续的,但是也有可能不连续。

std::make_move_iterator 的作用是把迭代器转换为引用右值的迭代器。右值进行移动的时候就会使用移动构造函数,对于普通的复制将会使用复制构造函数。
vector 上如果存的是基本数据类型,移动和复制没有什么区别,区别在于遇到类类型的时候,这时候调用移动构造函数就不一定会复制类种所有的值。
2019-06-18 20:07:53 +08:00
回复了 zooo 创建的主题 投资 如果有 100 万,该如何配置资产? 找个理财顾问?
理财顾问还是算了吧,容易被坑。

要稳,不接受任何损失的话去银行搞个大额存款,或者买个货币基金就算了。
可以接受点损失就拿个 20%-30%去投资点其他种类的基金。
对房地产有信心的也可以拿出来买房。

别的没啥可推荐的,如果不知道自己在干什么,那就最好别那样干。
2019-05-11 00:31:28 +08:00
回复了 lhx2008 创建的主题 问与答 C++ 为什么会有 private virtual 函数,这样写好吗?
@secondwtq
嗯,可能叫多继承,或者多层继承比较准确。
1 ... 10  11  12  13  14  15  16  17  18  19 ... 72  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2796 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 05:51 · PVG 13:51 · LAX 22:51 · JFK 01:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.