怪力左手
不定期更新,开发中遇到的问题,主职工作写代码。如有开发需求,可以私聊。
展开
-
cmake集成vcpkg和conan
执行:.\vcpkg\bootstrap-vcpkg.bat //下载vcpkg.exe在cmake项目下执行,vcpkg支持cmake的find_packge自动查找.\vcpkg\vcpkg install openssl //下载到项目中.\vcpkg\vcpkg integrate install //全局安装,数据全局缓存,使得#include能在vscode、vs中找到vcpkg分两种模式。原创 2025-04-24 11:20:25 · 42 阅读 · 0 评论 -
webrtc使用
https://www.webrtc-experiment.com/github开源demohttps://github.com/muaz-khan/WebRTC-Experiment.gitws传递webrtc信令h5传输文件ice服务器测试pip install pystun3https://pypi.org/project/pystun3/原创 2025-04-22 11:38:24 · 157 阅读 · 0 评论 -
android使用ndk开发
ndk sdk要单独下载和android sdk不同解压后添加ndk路径到path即可。原创 2024-01-15 13:48:07 · 396 阅读 · 0 评论 -
c++跨平台ui
codeblock支持wxsmith(图形拖拽)和wxformbuilder(xml用户配置文件)的方式构建ui。codeblock全局配置在setting中,修改全局配置后在修改项目的build option默认库依赖。build/options.cmake文件中,设置share或者static。find_package找不到wxwidget可以改成如下配置,指定绝对路径。下载codeblock,使用wxwidget的代码模板,可以快速构建项目。wxfrombuilder配置fpb文件构建UI。原创 2024-01-04 20:29:29 · 883 阅读 · 0 评论 -
vue开发跨平台应用
开发android和ios的框架,js引擎和本地交互没有webview,更加高效编译。原创 2023-12-24 15:49:46 · 651 阅读 · 0 评论 -
osg和vsg使用c++加载3维模型
安装显卡驱动后,会附带vulkan,使用命令行可以查看vulkaninfo 查看系统是否安装vulkanglxinfo 查看系统是否安装opengldxdiag 查看系统是否安装directx。原创 2023-12-22 11:31:45 · 910 阅读 · 2 评论 -
puppeteer使用基础
浏览器启动headless启动和正常启动,请求可能数据不同,需要打印请求的数据json,查找原因element.screenshot 可以截取部分元素”)执行js代码。原创 2023-07-21 11:27:30 · 197 阅读 · 0 评论 -
unreal虚幻引擎源码开发
unreal的源码在github上面有权限限制,需要申请加入EpicGames组织才行。(EpicGames官网上绑定github账号,平台会自动邀请你加入)原创 2023-07-21 11:25:49 · 974 阅读 · 0 评论 -
skui,使用skia绘图的ui框架
skui::gui::window window 默认创建opengl窗口,我用的skui版本opengl还有些问题,改用cpu模式。跨平台的ui框架,使用skia绘制图形,代码风格类似boost.ui。原创 2023-04-13 11:17:38 · 879 阅读 · 0 评论 -
rpc框架之thrift、grpc
依赖boost,设置Boost_INCLUDE_DIR路径,cmake_warn比较多(可以忽略)thrift编译idl文件,输出对应语言类型代码,输出到gen-cpp文件中。原创 2023-03-22 13:40:05 · 706 阅读 · 1 评论 -
npapi插件(firebreath跨浏览器插件)
支持activex、npapi和ppapi,跨浏览器的c++插件开发框架建议使用cmake中支持的vs版本,太高的版本可能出现找不到vs路径的情况。原创 2023-03-22 09:50:51 · 603 阅读 · 0 评论 -
c++版本cef详细使用
cef模块下载,内含有libcef的二次封装lib_cef_warper可以使用tests目录下的demo项目快速构架cef代码框架,本文使用的cefsimple项目,在该项目的CMakeLists.txt首行添加如下配置,可以脱离cefbinary配置项目(同时拷贝cmake文件夹里面的文件)lib_cef_warper项目cmake文件夹定义了cmake构建中的基本参数和自定义函数。原创 2023-01-18 10:25:49 · 2651 阅读 · 0 评论 -
编译freerdp
freerdp依赖,openssl。原创 2022-12-16 10:01:30 · 419 阅读 · 0 评论 -
cs-script和dotnet-script脚本
nuget安装CS-Script.Coredotnet中集成,使用system.codedom,类似元编程,需要写代码构建执行代码可用于解析代码,执行语义分析,动态编译和评估代码。原创 2022-11-21 14:33:17 · 653 阅读 · 0 评论 -
wpf跨平台方案-avalonia
vs studio下载avalonia(开源框架有源码的)的扩展,创建项目。原创 2022-11-02 11:10:10 · 1522 阅读 · 0 评论 -
c++高性能http服务器(drogon)
windows cmake添加zlib和sqlitecpp的路径,手动指定位置,否则find_package搜索的lib可能不对。原创 2022-10-10 13:45:56 · 839 阅读 · 0 评论 -
存储相关技术点
存储性能由高到低,如下。原创 2022-08-22 22:12:35 · 382 阅读 · 0 评论 -
googletest测试框架
单元测试,函数级别的测试。原创 2022-07-18 16:44:44 · 440 阅读 · 0 评论 -
lua基础
腾讯开发的基于c#的xlua,tolua和xlua类似。原创 2022-07-18 15:39:12 · 246 阅读 · 0 评论 -
c++中使用orm关系对象模型
orm原创 2022-04-21 11:08:20 · 1678 阅读 · 0 评论 -
openmp提高算法效率(c++)
openmpopenmp可以提高代码的执行效率,对for循环的效率提升是10倍以上,对图像算法和深度学习效率的提升帮助很大语法#pragma omp parallel {} 并行语句,默认cpu的核数个线程#pragma omp critical {} 互斥体,同时只有一个线程进入#pragma omp barrier{} 所有线程到达后执行后面语句#pragma omp master{} 只有主线程才会执行的代码#pragma omp single{} 只会有一个线程执行原创 2022-04-21 10:42:41 · 2049 阅读 · 0 评论 -
imgui绘图框架使用
imgui下载地址:https://github.com/ocornut/imgui新建CMakeLists.txt,编辑如下,可以生成imgui.libcmake_minimum_required(VERSION 3.0)project(imgui)aux_source_directory(. code) list(REMOVE_ITEM code ./imgui_demo.cpp) #排除imgui_demo文件,生成examples中的示例时需要添加该文件add_li原创 2022-03-04 15:19:55 · 5163 阅读 · 0 评论 -
sdl绘图框架使用
sdl下载地址:https://www.libsdl.org/sdl集成了opengl、dx、vulkan等多个亏图库,支持多个系统平台使用cmake编译,打开SDL_Test开关,可以看到sdl的示例异常error LNK2019: 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)”需要把sdl2.lib和sdlmain.lib都链接进exe,sdl定义main为sdl_main的宏,内部做了二次封装窗口#include "SDL.h"原创 2022-03-04 11:42:12 · 442 阅读 · 0 评论 -
编译google绘图框架skia
skiachrome使用skia绘图,底层通过angle框架,支持硬件加速码云上可以找到skia的下载地址,https://gitee.com/mirrors/skia.git编译google的代码使用gn编译的码云上可以找到gn的源代码,编译生成gn.exegooglesource国内不能访问,而且skia项目本身由于版本依赖的问题,项目里面很多依赖项目已经更新了,也需要自己去找的,在skia项目下面通过deps文件,依次下载skia的依赖项目文件存储在third_party/exte原创 2022-02-28 11:33:47 · 812 阅读 · 0 评论 -
zeroc ice使用基础
zeroc icerpc接口调用,地址https://gitcode.net/daoer_sofu/ice.gitcpp/msbuild目录有windows vs项目client and serverclientserverexception:Ice::IllegalServantException,cannot add null servant to Object Adapter需要重写server类,直接使用serverptr提示错误...原创 2022-02-17 14:14:36 · 716 阅读 · 0 评论 -
pyd文件依赖python版本的解决方案&python调用c++
pydc使用swig、cpythonc++使用boost.python、pybind11(pip install pybind11)pyd生成依赖python.h文件,里面包含pyconfig.h,最终生成的dll会产生对python(version).dll,而同时导入多个python.dll会导致python提示冲突定义Py_LIMITED_API宏,使用python3.lib,python3.0以上版本通用,不过只适用于cpython,c的调用方式ctypesCDLL(“dll_n原创 2022-02-15 15:15:06 · 1931 阅读 · 2 评论 -
qt source 源码编译
源码地址:git://code.qt.io/qt/qt5.git源码使用tag版本,6.0以上版本有cmakelist.txt可以直接cmake编译(但差的三方库比较多),6.0以下的版本,cmakelist.txt在qtbase文件夹中,使用configure -platform win32-msvc不加参数,会导致qtConfAdderror错误,如下在qtbase生成build.ninja文件使用ninja编译...原创 2022-01-29 12:22:14 · 1033 阅读 · 0 评论 -
rust安装使用初体验
安装安装rustup,https://www.rust-lang.org/learn/get-started按照提示修改,最后的文件名是固定的点开头,否则无法识别CARGO_HOME=d:\rust.cargoRUSTUP_HOME=d:\rust.rustup重启rustup直到显示的CARGO_HOME,RUSTUP_HOME改变,选择1默认安装即可基本语法赋值let a= 1 //值不可变,或者重新定义改变值 let a = a+1(常量不能重新定义)let mut a =原创 2022-01-21 11:48:54 · 498 阅读 · 0 评论 -
windows编译openssh(automake编译)
openssh地址:https://gitee.com/mirrors/openssh-portable.git使用automake编译安装msys2,在清华镜像https://mirrors.tuna.tsinghua.edu.cn/中可以找到,使用pacman安装autoconf编译工具aclocal,扫描configure.ac文件生成aclocal.m4,用于本地宏定义不调用configure文件中的宏无法解析的错误,如OSSH_CHECK_CFLAG_COMPILEautoc原创 2021-09-30 11:26:00 · 1653 阅读 · 0 评论 -
使用c++协程库实现高并发
libcolinux版本,windows不能用:https://gitee.com/sofu456/libco.git协程开发,避免了多线程中的奇葩错误(多线程错误不好找原因,而且新手很容易出现),go语言、python、js、中都有协程的开发避免多线程,unity中更是只能使用协程,不能用线程mpi线程间数据不共享可以解决线程异常多的问题,协程也是如此,并在应用层构建任务分发机制,协程的任务切换消耗更低协程分为对称协程(symmetric)和非对称协程(asymmetric),对称协程需要显式指定原创 2021-08-31 14:12:38 · 606 阅读 · 0 评论 -
libuv跨平台通信使用基础
libuv比较流行的c++通信库,和libevent、boost asio一样实现了网络通信的跨平台,再nodejs中有封装地址:https://gitee.com/mirrors/libuv.gitdemolibuv\test目录下,不同的文件对应不同的功能模块,runner.h通过TASK_LIST_START、TASK_LIST_END定义task_entry_t数组,输入不同的命令行参数调用不同的函数,函数文件名去test-或者benchmark-,就是函数调用入口ipc_helper管原创 2021-08-19 10:39:56 · 433 阅读 · 0 评论 -
protobuf结构数据序列化
protobufprotobuf类似xml、json、yml、bson,数据结构描述文件,不同的是protobuf内部显示定义了类型,而非隐式定义类型syntax = "proto3";message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3;}数据类型message类似class、structenum枚举类型package命名空间double: 浮点数f原创 2021-08-06 15:53:59 · 615 阅读 · 0 评论 -
python语法实现linq
python 高阶函数map映射map(lambda x:x*2,it)reducemap(lambda x:x*2,it)filtermap(lambda x:x*2,it)sortedmap(lambda x:x*2,it)zip合并序列zip(list1,list2)原创 2021-07-27 09:36:36 · 708 阅读 · 0 评论 -
pthon访问百度网盘鉴权(跨域)
鉴权的方式HTTP Basic Authentication,基本的登录操作session-cookie,服务端保存客户端的sessionidToken 验证,服务端返回后客户端保存tokenOAuth(开放授权),百度网盘等鉴权方式百度网盘开发接口说明https://pan.baidu.com/union/document/entrancehttp = urllib3.poolmanager.PoolManager()response = http.request('GET','htt原创 2021-07-27 09:34:51 · 745 阅读 · 0 评论 -
golang语言基础
配置gopath和gorootgoroot是go的安装目录,gopath是go语言的第三方库目录,需要添加环境变量GOPATH、GOROOT(安装时默认添加)src目录源码,pkg编译中间文件,bin运行程序可以通过go env查看配置(同npm config list一样)命令行go get下载三方库(相当于git clone+go install下载依赖库,下载路径:网站域名github+作者+项目)go install 安装(相当于go build输出目录不同)go build编译成可执原创 2021-07-26 14:29:28 · 194 阅读 · 0 评论 -
C\C++访问matlab
c访问matlabmxArrayc++访问matlabmwArraym文件转dllmcc -W cpplib:libMadd -T link:lib Madd.mmatlab引擎matlab作为服务器,c++、c做为客户端访问原创 2021-06-27 20:15:36 · 190 阅读 · 0 评论 -
程序设计五大原则
单一职责原则SRP功能结构单一,封装内不会出现不同功能的实现混在一起,耦合低,方便组合不同的功能,生成新的类封装开放封闭原则OCP扩展模块不能修改原有代码,而是应该扩展新的方法,保证代码的稳定性里氏替换原则LSP多态的一个描述,使用子类实现,使用基类替换依赖倒置原则DIP高层不能依赖低层,抽象不能依赖抽象接口隔离原则ISP多个专门业务的接口比单一接口好,特定的接口胜过通用的接口参考:https://blog.csdn.net/u014117094/article/details/46.原创 2021-04-06 22:29:18 · 307 阅读 · 0 评论 -
python爬虫scrapy(持续更新)
安装pip install scrapyscrapy startproject stock//创建文件夹scrapy genspider stock xxxxx(域名) //创建爬虫py文件scrapy crawl stock -o xxx.json// spider中必须包含stock.py文件scrapy crawl stock//运行scrapy -h //查看scrapy命令,包含调试窗口爬虫,全文检索查询关键字项目结构scrapy.cfg: 项目的配置文件stock/原创 2021-01-29 15:18:15 · 279 阅读 · 1 评论 -
c函数调用方式
cdecl参数从右向左压栈手动栈平衡c/C++ MFC默认方式_functionnamestdcall参数从右向左压栈自动栈平衡Win API_functionname@number //参数字节数fastcall左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送调用者清理栈速度快@functionname@number ////参数字节数thiscallthiscall仅仅应用于"C++"成员函原创 2021-01-27 15:48:26 · 186 阅读 · 0 评论 -
http视频文件传输(http 206)
http 206http协议通过206实现断点续传,上传下载,以及video标签的是文件播放requestHttp部分内容请求头部需要指定:Range:bytes=0-responseHttp响应需要指定响应头:content-range:bytes:0-、httpcode为206原创 2021-01-26 18:01:45 · 9969 阅读 · 0 评论