V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 18 页 / 共 177 页
回复总数  3531
1 ... 14  15  16  17  18  19  20  21  22  23 ... 177  
2023-08-21 00:15:32 +08:00
回复了 albert0yyyy 创建的主题 Android 好奇, wsa 安装恶意病毒 app 会怎么样
@Rennen #1 WSA 是 subsystem 好像和安全性无关,只是表明它提供一系列 API 而已吧,Win32 也是 subsystem 。
@weekidjoker #17 那你的需求无法用软件达成,只要加密代码存在于客户可以自由访问的内存里,那客户当然知道加密逻辑和公钥。
要回答你的问题,第一步是搞清楚你说的“破解”是什么意思。
2023-08-19 22:33:49 +08:00
回复了 dracula95 创建的主题 问与答 国内如何开通 cash 或者 zelle 呢?是不是没有办法
@weid #5 Zelle 只要用参与银行的往来账户基本上都可以无额外条件使用,而银行开户并不需要社保号,第一次以 B 身份进入美国也是可以开的。获取社保号不需要是公民或者永久居民,例如几乎所有在学校工作的 F 身份的人都有社保号。
2023-08-19 22:10:26 +08:00
回复了 ZC3746 创建的主题 问与答 其实国外也有很多电信诈骗
美国这边最近流行的是“我是 AT&T/Verizon/T-Mobile ,您名下的电话号码发送诈骗短信”(我推测是 Weee! 泄露的数据)
2023-08-19 18:42:51 +08:00
回复了 justonelastdance 创建的主题 Go 编程语言 Go 语言没有引用类型,指针也与众不同
@LuckyPocketWatch #3 虽然楼主的理解问题比较大,不过

struct People
{
mutable int mutable_field;
int field;
};

void print_info(const People &p)
{
p.mutable_field = 1;
const_cast<People &>(p).field = 2;
}

int main()
{
People inst;
print_info(inst);
}
2023-08-19 17:01:54 +08:00
回复了 justonelastdance 创建的主题 问与答 函数传参的类型
另外,Python 也只有传值,最早的 FORTRAN 只有传引用。

@justonelastdance #7 您需要复习 JavaScript 基础知识,a 的值是指向那个对象实例的引用,而不是那个对象实例。在 b 的调用中,通过 c (也是指向那个对象的引用)改变了对象实例,当然可以通过 a 看见。

你当然理解这里发生了什么,但是你的术语用法和计算机科学中的主流用法不符。我暂时找不到教科书,而且我上面的说明已经很明确了,你也可以参考 https://stackoverflow.com/a/7744623/4598348
2023-08-19 15:38:03 +08:00
回复了 justonelastdance 创建的主题 问与答 函数传参的类型
@justonelastdance #5

a 的值没有变,在 b 退出之前 c 的值是 null ,但 b 退出之后 a 不是 null 。

另外“a 和 c 都指向同一个引用”是错误的。a 和 c 代表了不同的存储位置,并且进入 b 的时候 a 和 c 所代表的存储位置具有相同的值,这两个相同的值都是对象引用。
2023-08-19 14:02:57 +08:00
回复了 justonelastdance 创建的主题 问与答 函数传参的类型
@justonelastdance #3 一个方法的一个参数是传引用 (pass by reference) 的含义是:实参可以被赋值,且方法内对形参的赋值会导致对实参赋值。

let a = {};
function b(c) { c.d = 1; c = null; }
b(a);
console.log(a);

这里 a 不是 {} 那个对象,而是对象引用,a 的值引用了那个对象。b(a) 这个调用中:

形参 c 的值是实参 a 的值的副本,故一开始 c 也引用了那个对象,透过 c 的值可以操作那个对象,因此 c.d = 1 这句话会改变那个对象,当然,这没有改变 a ,因为 a 不是那个对象,而 a 还是引用了那个对象。

形参 c 和实参 a 绑定到了不同的存储位置,对 c 的赋值并不影响 a 的值(也就是不影响 a 的值引用了哪个对象),因此 c 是传值。

最简单的理解 JavaScript 的方法是这样的:这个世界上有两种值,对象实例、对象引用,除了 import 带来的,其他所有变量名都指示互不相同的存储位置,且每个具名的存储位置都只能存储对象引用。( 123 这种 typeof 会得到 'number' 的东西直接理解为不可变对象就好,不要搞什么 primitive value 之说。)
2023-08-19 13:27:20 +08:00
回复了 justonelastdance 创建的主题 问与答 函数传参的类型
另外,JavaScript 也只有传值。

对于纯函数式语言来说,传引用和传值没有任何区别。
2023-08-19 13:13:37 +08:00
回复了 justonelastdance 创建的主题 问与答 函数传参的类型
Java 和 C 都只能传值。
2023-08-19 02:35:55 +08:00
回复了 netabare 创建的主题 问与答 发现响应式代码的一个比较麻烦的地方
重新思考,你可能想说的是连贯接口( fluent interface )。
2023-08-19 02:31:56 +08:00
回复了 netabare 创建的主题 问与答 发现响应式代码的一个比较麻烦的地方
没看懂这个和响应式有什么关系,但搜索引擎关键词是 git ignore whitespace ,可以额外加 diff 和 blame 关键词。
2023-08-17 23:44:38 +08:00
回复了 13482034233 创建的主题 职场话题 我就是上次给公司部署 ChatGPT 的, 今天被开了
为啥要赔偿还需要商量的,不给请直接诉诸法律手段。拿好钱,找一个更好的地方。
2023-08-17 23:42:17 +08:00
回复了 Fxshiny 创建的主题 问与答 有没有懂 excel 的小伙伴?
D 列估计是公式计算的,有浮点误差。存储货币的时候请格式化单元格选择货币,然后计算货币的公式外面套一层 ROUND(…, 6) 保留六位小数,格式化的时候指定精度。
2023-08-17 22:15:30 +08:00
回复了 dracula95 创建的主题 问与答 国内如何开通 cash 或者 zelle 呢?是不是没有办法
什么叫做开通 cash ?

很多美国的银行都参与了 Zelle ,你开好账户自然就有了,所以问题归结为如何开美国的往来账户。
2023-08-17 12:29:43 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ c++如何判断二进制相同的对象?
@geelaw 最后一段里面第一个例子是错误的,因为数组是 implicit-lifetime object ,于是在 a == b 执行的时候它的效果已经变成了 [expr.eq]/3.2 了。不过第二个例子 p == p 依然成立。
2023-08-17 11:32:36 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ c++如何判断二进制相同的对象?
@geelaw #28 贴代码无意义是指贴编译之后的机器代码无意义,因为未定义行为包括任何行为,不能根据实现推断标准。
2023-08-17 11:19:59 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ c++如何判断二进制相同的对象?
@dangyuluo #13 贴代码无意义,不过您说得对,我需要修正 #10 #11 的说法,因为

根据 [basic.compound]/3 ,指向对象的指针的值“表示的地址”是该对象(若该对象不在其生命周期内,则是该对象曾经、将要)占有的存储的第一个字节。这表示 placement new 返回和传入的指针虽然可能指向了不同的对象,但是它们“表示的地址”相同。

根据 [expr.eq]/3.2 ,两个同类型、指向对象的、不是指向末尾之后的指针相等,如果它们“表示的地址”相等。

#10 里面建议的 std::launder 不必要,并且 #11 里面认为的未定义行为不成立。

---

回到 @dangyuluo #12 我认为应该尽量按照楼主希望的意思自动更正他的代码,所以应该认为

struct A { }; struct B : A { };

并且 new B() 改写为 new (ptr) B()。

---

@sloknyyz #23 @antonius #24 @jujusama #26 指针比较并不是比较数值,考虑

alignas(C) std::byte storage[2 * sizeof(C)];
C *a = new (storage) C() + 1;
C *b = new (storage + sizeof(C)) C();
/* 此时 a 和 b 必然表示相同的地址 */
a == b ? 1 : 2; /* 结果可以是 2 见 [basic.compound]/3 的 note 和 [expr.eq]/3.1 */

再比如

void *p = std::malloc(1);
std::free(p);
p == p ? 1 : 2; /* 结果可以是 2 见 [basic.stc]/4 */
1 ... 14  15  16  17  18  19  20  21  22  23 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3478 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 86ms · UTC 00:48 · PVG 08:48 · LAX 16:48 · JFK 19:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.