摘要:
在VC++中,一个std::function对象会根据情况被编译成多种情况,函数指针,函数对象(lambda),其中还涉及了优化等问题。 对于函数对象来说,常规的手段没有任何办法可以做比较,所以只能去二进制层面看看底层数据。 在VC中可以用同一个结构去模拟std::function对象 struct 阅读全文
摘要:
原文传送门: https://blog.csdn.net/yuejisuo1948/article/details/122149361 看了原文之后,第一时间对于std::ranges的第一印象是觉得更麻烦了,原本我们只需要掌握一个std::vector容器的使用方法,但使用范围库时,我们需要学会每 阅读全文
摘要:
VC支持协程已经有一段时间了,之前一直想不明白协程的意义在哪里,前几天拉屎的时候突然灵光一闪: 以下是伪代码: task server() { for (;;) { sock_context s = co_await io.accept(); for (;;) { auto buf = co_awa 阅读全文
摘要:
由于搜索出来的帖子,都是老版本的实验协程,很多老的代码已经失去参考性,并且很复杂,所以就自己研究了一下。 1 #include <iostream> 2 #include <coroutine> 3 #include <thread> 4 5 template<typename _Ty> 6 str 阅读全文
摘要:
先讲下为什么会需要lua_close回调吧。 我用C++给lua写过不少库,其中有一些,是C++依赖堆内存,并且是每一个lua对象使用一块单独的内存来使用的。 在之前,我一直都是魔改lua源代码,给lua_State结构添加新的成员来进行快速引用,并修改了lua_close的源代码,添加了回调函数, 阅读全文
摘要:
百度可以找到很多关于这个问题解决的方法 关键控制台API函数:SetConsoleCtrlHandler 在支持C++ 11以上的编译器中,你可以这么做。 SetConsoleCtrlHandler([](DWORD fdwctrltype)->BOOL { if (fdwctrltype == C 阅读全文
摘要:
lua_newthread 这个接口,存在误导性,很多人第一次试图用它来解决多线程问题时,都会入坑。 实际上,这个接口真正的用法,是给那些在lua更底层的某些行为(通常是递归)导致了lua的栈溢出而准备的。 举例说明: 我在C底层实现了重新开始这种功能,并且我将这种功能暴露给lua了,lua在某些适 阅读全文
摘要:
如同我之前的一篇文章说的那样,我没有支持DTD与命名空间, 当前实现出来的解析器,只能与xmlhttp对比,因为chrome浏览器解析大文档有bug,至于其他人实现的,我就不一一测试了,既然都决定自己实现了,我只选择大公司的代码做对比。 测试文档大小:3M bytes,约90000个节点。 aqx: 阅读全文
摘要:
解析器的目的:一次从头到尾的文本遍历,文本数据 转换为 xml节点数据。 这其实是全世界所有编程语言编译或者转换为虚拟代码的基础,学会这种方法,发明一种编程语言其实只是时间问题,当然了,时间也是世界上最值钱的玩意儿。 很多人可能第一时间会想到: for (int i = 0; i < len; i+ 阅读全文
摘要:
前言: 我在C++项目中使用xml作为本地简易数据管理,到目前为止有5年时间了,从最初的全文搜索标签首尾,直到目前项目中实际运用的类库细致到已经基本符合w3c标准,我一共写过3次解析器,我自己并没有多喜欢xml,对于xml最初的需求是客户提出的,有了第一次,就有后来的无数次使用xml的场景,配置文件 阅读全文