用C++搭建web级应用实战
文章平均质量分 92
C++的设备驱动能力和性能 + web框架的渲染与业务能力可以构架出更有效率的软件
本专栏会提到下面内容:
1. C++的基本内容,这是基础。包括标准库,windows的SDK等。
2. 通用的web级C++框架,如CEF,Electron等
3. 兼容C++的服务,如nodejs等。
新兴AI民工
人工智能行业的新兴民工
展开
-
CEF框架:CEF中的窗口
在初始化过程中,还有两个内容可以拿出来说一下,就是CEF中的窗口和消息循环。这一篇说一下窗口。和前面的文章一样,还是以CEF中的标准示例为例来说明,最后给出一个小的例子:CEFSIMPLECEFCLIENT。原创 2024-06-05 10:27:36 · 143 阅读 · 0 评论 -
CEF框架:各种各样的Handle(四)——CefURLRequest,发起HTTP请求与处理
OnRequestComplete,也就是当requst请求得到响应后,CEF框架就会调用这个函数,在上面的代码中可以看到,就是调用了callback_方法(这个callback就是记录了JS的匿名方法了),把对应的download_data返回到前端显示。为了节省篇幅,我将这个类中的所有注释全部去掉了,这个类就是定义了在HTTP请求的整个过程中,几个关键事件的钩子函数,这个几个函数都是纯虚函数,所以需要完成URLREQUEST的使用的话,自定义一个类对这个几个函数都需要重定义。原创 2024-05-27 17:25:45 · 202 阅读 · 0 评论 -
CEF框架:各种各样的Handle(三)——拦截Http的请求与响应
前面有两篇提到了CEF框架中的各种各样的HANDLE,然后中间一段时间关注NodeJS去了,今天再补充一点CEF的东西:利用CEF框架中的各种Handle来拦截Http请求与其响应。也还是基于CEF示例代码中的CEFSIMPLE来说明。原创 2024-05-24 09:06:00 · 225 阅读 · 0 评论 -
NodeJS源码分析(一):编译与构建
从这一篇开始,打算进一步的研究nodejs的相关内容。个人觉得,除了看官方文档之外,再进一步的了解一个框架和系统,最直接的就莫过于阅读它的源码了,所以,我决定开始研究nodejs的源码,并记录这个过程。研究源码的第一步当然就是下载并编译出来。原创 2024-05-21 14:34:37 · 164 阅读 · 0 评论 -
Visual Studio构建NodeJS原生代码在Electron中的报错问题
这个标题有点长,相对是一个比较具体的场景,但是这个问题在我自己的实际开发中,确实困扰了我一段时间。因为在windows下做设备驱动,上位机的开发中。但是这种方案打包出来的node文件,直接在electron里面使用的话,会直接报错!原创 2024-05-13 11:58:09 · 149 阅读 · 0 评论 -
C++异步回调编程相关:lambda表达式,函数指针,std::function
在C++编程中,异步的回调调用是一个非常普遍的场景,而回调的调用最基本的方式是使用函数指针的方式,这个应该是在C编码环境中,换到C++的编码环境中,std库和C++11以后的标准提供了两外的选择。原创 2024-04-28 14:27:44 · 35 阅读 · 0 评论 -
nodejs中使用node-addon-api框架:本地子线程调用JS代码
在很多场景中,前端的JS界面调用本地的C代码后,C代码会启动一些本地线程,来个跟踪本地的一些任务的完成情况,然后希望能通过回调的方式通知到前端的JS代码,前端的JS代码就通过箭头函数的方式来获取本地设备的任务完成情况。我们这一篇就来说一下,具体怎么解决这两个问题,来完成这种场景的调用。原创 2024-04-17 15:22:31 · 214 阅读 · 0 评论 -
nodejs中的napi框架:C代码中返回promise做异步调用
前面的文章,说了下JS与C的互相调用。这些调用都是同步调用完成的,接下来几篇来说说JS与C之间的异步调用。首先是说一下JS异步调用C的本地代码,基本逻辑就是JS调用一个比较费时的C本地代码,比如等待一个网络数据等,那么在JS代码中,肯定不会阻塞主线程去一直等待这个操作的完成,而且在nodejs里还是单线程的方式,所以这个动作肯定是异步调用完成的。原创 2024-04-17 15:20:53 · 59 阅读 · 0 评论 -
nodejs中napi框架的使用:JS与C的互相调用
NodeJS的napi框架简介,以及在napi框架下JS与C代码的参数互传原创 2024-04-15 09:20:50 · 195 阅读 · 0 评论 -
使用C++语言构建基于mysql API的统一数据库访问接口
在java这种web领域的后台语言里,操作数据库的框架已经炉火纯青,非常的成熟,包括了关系型数据库和非关系型等。关系型数据库中的各种ORM框架,那操作起数据库来说那是一个高效和方便。但是作为一个后台语言的C++来说,感觉一直没有一个特别好用的数据库框架。但实际上很多数据库的基本API接口都是提供的C或者C++的API接口函数。。这些API都是一些最基本的操作,比起java中的各种框架来说,封装程度差的不是一点半点。原创 2024-04-09 23:18:58 · 115 阅读 · 0 评论 -
nodejs的线程模型和libuv库的基本使用
1. nodejs的单线程事件驱动模型2. libuv的eventLoop3. libuv的async_handle的使用及使用过程中的几个坑原创 2024-03-22 18:00:35 · 552 阅读 · 0 评论 -
使用VisualStudio集成开发nodejs的addon项目
我的工具暂不考虑跨平台的事情。这里是创建一个普通的DLL项目,带有导出项的话,是定义了一些宏定义,直接对外暴露一个导出类的项目,简单起见,用普通的DLL项目即可。第一步省略了,也就是第三步也没有必要了,因为使用VS进行开发和构建的话,就已经是在组织一个sln的VS构建环境了。而在VS的IDE中,是不能创建一个所谓的.node的项目的。这样就可以得到node文件里的输出,也验证了我们之前的结论,.node文件就是一个改了名字的动态库(windows平台下就是DLL文件)原创 2024-03-22 17:57:48 · 244 阅读 · 0 评论 -
nodejs集成C++代码:手写简单的addon
在这个专栏里,已经提到过web系统中c++的两大应用场景了:assembly和cef框架的应用,这两个可以说都是客户端,也就是B端的应用。C++在web体系里面还有一个比较常见的应用场景,也就是在nodejs上的集成应用,nodejs相当于是一个后台服务器,对应的是web B/S架构的S端。这一篇就来给nodejs集成C++代码开个头。原创 2024-03-12 20:59:28 · 168 阅读 · 0 评论 -
编写一个简单的cmakelist.txt
上一篇提到了cmake的设计目的与作用,这一篇就来手动编写一个基本的cmakelist.txt,并演示一下如何生成不同平台的构建文件。原创 2024-03-12 20:56:09 · 215 阅读 · 0 评论 -
cmake工具的使用及cef的CMakeLists初步分析
cmake的设计目的,作用和基本使用原创 2024-03-08 16:46:07 · 200 阅读 · 0 评论 -
从C++转成JS的那些事
前言JS的一些硬伤与尝试是编译还是解释变量是动态还是静态asm.jswasmLLVM编译过程与LLVM关于两种编译器和的小历史顺带了解一下的ASTWebAssemblyEmscripten记录下emscripten的安装过程构建系统工具对wasm的支持V8引擎nodeJS前言最近接触到了不少前端的技术,作为一个老的C++程序员,了解到竟然可以把C++代码直接编译成JS在前端运行感觉到不可思议,于是就跳入了这个大坑。从我这个老的C++程序员的理解顺序来说,我是从如下几个方面去了解整个webas原创 2021-08-26 18:19:38 · 3414 阅读 · 0 评论 -
构建cef基本框架及构建过程中的参数说明
CEF框架的代码,及其编译版本的构建过程。构建过程中的几个编译参数扩展说明。原创 2024-03-08 14:42:14 · 332 阅读 · 0 评论 -
C++ static修饰符的深入研究
此外,static成员变量也不能在类的构造函数中初始化,因为它们是被类的所有对象共享的,如果在构造函数中初始化,每次创建类的对象都会导致static成员变量被重新初始化,这与static变量的设计初衷相违背。上问提到了,这里的变量x是不能被初始化的,根据上面的实验,我基本上可以理解了前文提到的:“当一个static成员变量在类内部被初始化,它会在每个包含该头文件的源文件中产生一个定义。我对这块的疑问就是,static这个修饰符到底在C++代码,特别是类中的静态成员变量和函数中起到什么样的作用,原创 2024-03-07 09:51:41 · 188 阅读 · 0 评论 -
C++字符集问题:windows框架中的其他字符类型及其转换
windows编程框架中的各种字符类型及其转换方法原创 2024-03-01 15:30:10 · 205 阅读 · 0 评论 -
C++代码中的字符集问题:char和wchar_t
在前一篇的文章中,碰到的一个坑就是因为要躲开MFC中的一个CString类导致的各种问题。话说回来,在C++的程序中,各种各样的字符类型处理也是一个比较麻烦的事情,特别是处理的文本里面有中文的时候。在这个C++和CEF的系列中,就花一些篇幅来说说C++程序中的一些字符类型和相关的处理。今天先从最基本的字符集开始。我觉得在字符类型处理过程中,最重要的一点就是要区分两个概念:字符集和字符编码规则,这两个概念有时会混在一起用,但实际上是有区别的。原创 2024-02-29 22:01:06 · 395 阅读 · 0 评论 -
C++编译器优化问题趟坑:std标准库的vector报错
如何判断DLL的编译模式原创 2024-02-29 16:01:39 · 218 阅读 · 0 评论 -
再谈C++构造函数——移动构造函数
C++构造函数过程与隐藏,C++的移动构造函数,C++的右值与左值,std库move函数原创 2022-12-16 14:50:05 · 995 阅读 · 0 评论 -
C++标准模版库中线程的使用
线程是程序开发中必须使用到的概念,但是也是相当难掌握的概念。因为在单线程的程序中,所有的逻辑都是线性发生的,出现问题定位的时候只需要一步一步调试就可以了。但是在多线程的环境中,各种莫名其妙的情况都会出现。我这里记录下自己在开发过程中总结出来的一些线程的基本逻辑和碰到过的坑。原创 2023-01-28 15:45:17 · 843 阅读 · 0 评论 -
C++标准库的智能指针:shared_ptr、weak_ptr和unique_ptr
shared_ptr, week_ptr, unique_ptr的基本使用方法原创 2023-01-03 12:11:16 · 657 阅读 · 0 评论 -
C++程序编译-链接-加载过程初探-符号表
C++过程的编译,链接,加载的关键数据结构:符号表原创 2022-12-07 22:02:59 · 1495 阅读 · 0 评论 -
虚表指针在C++类的继承/多态与重载中的基本逻辑
虚表指针在重载,继承和多态中的基本逻辑原创 2022-12-09 11:27:46 · 911 阅读 · 0 评论 -
从线程原理的角度来看C++内存的使用
C++线程的调度,以及多线程情况下的内存使用原创 2023-02-08 17:55:29 · 800 阅读 · 2 评论 -
C++代码基本内存操作及原理
C++内存使用的基本逻辑原创 2022-12-02 15:30:25 · 1205 阅读 · 0 评论 -
【实战】CEF框架集成MFC DLL的一些坑
如何在CEF框架中集成MFC的代码原创 2024-02-20 10:33:18 · 1365 阅读 · 0 评论 -
CEF框架中的一些宏定义(二):CEF_CURRENTLY_ON
在Browser进程中在CEF框架中,很多代码都需要由这个browser的主线程来执行,宏定义CEF_CURRENTLY_ON就是用于这个判断的。原创 2024-01-26 18:01:06 · 383 阅读 · 0 评论 -
CEF框架中的一些宏定义(一):CHECK & DCHECK
cef框架中的check与dcheck宏原创 2024-01-22 11:42:10 · 964 阅读 · 0 评论 -
CEF框架的退出机制代码分析
cef框架的退出机制与相关源码分析原创 2024-01-18 11:55:56 · 702 阅读 · 0 评论 -
CEF框架:各种各样的Handle(二)
上一篇关于handle的文章已经把cef框架的app和两个进程browser和renderer的handle的基本逻辑说了一下。这一篇继续上一篇,将上一篇图中的另外几个handle都说一下。原创 2024-01-18 11:00:02 · 614 阅读 · 0 评论 -
CEF框架:各种各样的Handle(一)
CEF Handle系列之一原创 2024-01-09 15:21:56 · 1007 阅读 · 0 评论 -
CEF多进程框架:CEF初始化进程过程
针对这个CefExecuteProcess函数,可以也稍微扩展一下,在CEF框架中,可以通过在启动命令参数中给定–type=render,或者–type=browser等来创建不同的进程,但是都是通过CefExecuteProcess函数来创建的,具体做了哪些不一样事情?在RunAsHelperProcess函数中有一个判断,如果没有指定process_type的话,那么就代表是Browser的主进程,已经在运行,就不需要再次启动了,这个函数就直接返回了。原创 2024-01-02 11:38:20 · 668 阅读 · 0 评论 -
CEF线程之multi_threaded_message_loop参数
multi_threaded_message_loop的作用及其相关类的说明原创 2023-12-28 14:42:20 · 1280 阅读 · 0 评论 -
CEF线程模型与初始化过程详解
上一篇说了CEF框架的消息传递,实际上这个消息传递指的是进程之间的消息传递,也就是IPC的方式在Browser,Render进程之间传递消息。这一篇就接上篇,说说CEF的线程模型,因为在CEF框架的main entry中,主要的三个函数CefInitialize、CefRunMessageLoop和CefShutdown都和这个模型有关。原创 2023-12-28 10:07:48 · 1246 阅读 · 0 评论 -
CEF消息传递实战(实测可用,新鲜出炉)
CEF框架中,主要的消息传递方向,从消息产生的源头,我觉得可以分成两种:- 由JS发起,也就是界面有一些按钮之类,通过输入,点击等方式需要传入到C++代码中,也就是浏览器中。- 由C++代码产生的数据(也就是浏览器内部)需要展示在界面上,也就是需要JS代码来展示这些数据。主要说说整个的这个消息循环过程怎么在CEF中用代码实现原创 2023-12-21 16:42:09 · 1716 阅读 · 0 评论