草庐IT

c++ - VC++ 中的光纤安全优化到底是什么?

我正在阅读FiberSafeoptimizations在MSDN上。据说Datadeclaredwith__declspec(thread)isreferencedthroughathread-localstorage(TLS)array.TheTLSarrayisanarrayofaddressesthatthesystemmaintainsforeachthread.Eachaddressinthisarraygivesthelocationofthread-localstoragedata.Afiberisalightweightobjectthatconsistsofastac

都说区块链可信,到底信了个啥?

‍‍题图摄于北京二环路【前言】不时有朋友向我询问某某区块链项目怎么样。我通常只给他们讲一点:要考察项目中区块链的信任体系。不管项目方说得怎样天马行空,看懂其中的信任机制,就基本可判断其项目的价值。最近热门词汇层出不穷,如 DAO,NFT,Web3.0 甚至 元宇宙,它们共同点就是和区块链息息相关。通过剖析其中的信任原理,能让我们有更深入的理解。后续文章将对这些基于区块链的概念做讨论。要想了解区块链、云原生和机器学习等技术原理,可置顶和关注本公众号 亨利笔记 ( henglibiji ),以免错过更新。自从比特币平地崛起之后,脱胎于比特币的区块链技术走进人们的视野。我在2016年曾参与编写了国内

windows - win32编程中的顶层窗口到底是什么?

我不太明白我通过CreateWindowEx创建的窗口和“顶级”窗口之间的区别。什么是win32编程中的顶级窗口? 最佳答案 MSDN条目AboutWindows提供以下定义:Awindowthathasnoparent,orwhoseparentisthedesktopwindow,iscalledatop-levelwindow.博客文章Awindowcanhaveaparentoranownerbutnotboth中给出了更实用的解释:Awindowcanbecreatedasachildwindow(WS_CHILDset)

windows - WinExec 返回 0x21,但它到底是什么意思呢?

当调用WinExec运行.exe时,我得到返回值0x21。根据MSDN,返回值大于31(0x1F)表示函数成功。但是0x21是什么意思,为什么没有返回其他值给我呢? 最佳答案 知道是什么意思对你没有用。那是一个实现细节。即使您知道此版本的含义,下一个版本中的含义也可能会发生变化。作为程序员,您只关心针对接口(interface)进行编程,而不关心底层实现。但是,如果您真的感兴趣,我将带您了解我将采用的对函数进行逆向工程的方法。在我的系统上,WinExec被反汇编为:764F2C21>8BFFMOVEDI,EDI764F2C2355P

windows - 使用 TerminateProcess 时到底有什么风险?

我的Win32控制台应用程序使用第三方库。在它退出WinMain全局对象后,破坏开始并且AV发生在内部深处的某个地方。我真的很想写TerminateProcess(GetCurrentProcess(),0);WinMain末尾附近的某个地方。如果我这样做,应用程序将正常结束。但是MSDNsays这样做会损害由动态链接库(DLL)维护的全局数据的状态,这一点尚不清楚。我知道如果我有一些全局对象,它的析构函数不会运行,我就有可能无法完成数据库连接或类似的事情。我的程序中没有类似的东西。使用TerminateProcess到底有什么风险?如何确定我是否可以将其用于我的目的?

windows - 故障桶到底是什么,它的成因是什么?

A有一个Windows应用程序,我已经完美运行了很多年,首先是在XP上,现在是在Vista上,就在早上我将软件复制到另一台WindowsVistaHome32位机器上,它在前20位机器上一直崩溃或者我运行了30次,但问题突然像变魔术一样解决了,没有触及硬件,没有触及软件,没有触及配置,甚至没有执行重启,它只是一秒一秒地停止崩溃。为什么...我不知道。当我查看事件日志并发现每次应用程序崩溃时都会显示以下消息:故障桶2550128871,类型1事件名称:APPCRASH响应:无驾驶室编号:0这到底是什么意思?更重要的是,为什么它像魔术一样停止发生?我是这个应用程序的开发者,所以我担心它可能

c - GENERIC_ALL 和文件夹/文件 ACL? GENERIC_ALL 到底做了什么?

我最近重新设计了我们的文件服务器的安全性,将大部分完全控制的内容标记为修改。现在我的开发人员告诉我,无论何时他们使用GENERIC_ALL打开文件(例如使用CreateFile()),他们都会收到拒绝访问的消息。经过研究,似乎没有什么能表明GENERIC_ALL只是GENERIC_EXECUTE+GENERIC_WRITE+GENERIC_READ;然而,情况似乎并非如此,因为开发人员能够添加三个常量值,并将其用于CreateFile()。那么,我想问...GENERIC_ALL到底做了什么?谢谢,马特 最佳答案 GENERIC_A

Java watch 服务似乎可以重新创建已删除的文件。到底是怎么回事?

当目录被WatchService监控时被删除,其父目录不会立即在其文件的listFiles中反射(reflect)删除方法,无法删除。直到整个服务显式stoppedparent的后果似乎是:recommendedrecursivesolution用于删除非空目录失败。deleteOnExit正常终止时未执行调用delete返回false并且对文件系统没有影响。为了演示,这个测试代码:importjava.io.*;importjava.nio.file.*;classDirectoryTester{staticWatchServicewatcher;static{try{watcher

c++ - PWSTR 到底是什么?为什么要使用此命名来与 C++ 中的 char*、std::string 或 CString 进行比较?

在各种C++代码中,您经常会看到字符串的不同用法:PWSTR、char*、std::string、CString等......与任何其他字符串类型相比,何时是使用PWSTR的最佳时机? 最佳答案 PWSTR将是wchar_t字符串指针。这是一个UNICODE(通常是UCS2)字符串,每个字符占16位。一个char*将是每个字符8位的指针。这可能是ASCII、ANSI、UTF8或数百种其他编码中的一种。尽管如果您需要字符串包含英语或特殊符号以外的语言,您只需要担心编码问题。一般来说,WindowsAPI内部都是UNICODE,因此大多

windows - NTSD 和 WinDbg 之间到底有什么区别?

我对Windows调试工具有点困惑。WinDbgTutorialWindbg–wrapsKDandNTSDwithadecentUI.WinDbgcanfunctionbothasakernel-modeanduser-modedebugger.这是否意味着我在NTSD中使用的任何命令都可以在WinDbg中使用?每当我进行用户模式调试时,NTSD实际上是在幕后工作吗? 最佳答案 WinDbg、NTSD、CDB和KD都共享相同的调试引擎,因此它们共享所有相同的命令。它们之间唯一的区别是WinDbg有GUI界面,NTSD、CDB和KD有