Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

CPlusPlus之Boost入门

发表于 2021-11-01 | 更新于 2021-11-08

Boost C++ 库(Libraries)是一组扩展C++功能的经过同行评审(Peer-reviewed)且开放源码程序库。大多数的函数为了能够以开放源码或者封闭项目的方式运作,而许可于Boost软件许可协议(Boost Software License)之下。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。

为了要确保库的效率与弹性,Boost广泛的使用模板(template)功能。而它是针对各式领域的C++用户与应用领域(Application Domain)上,包含的库类别从像smart_ptr 库(页面存档备份,存于互联网档案馆)这种类通用库,到像是文件系统的操作系统抽象层,甚至能够利用Boost来开发额外的库或是给高级的C++用户利用,像是MPL。

源代码下载

1
2
git clone https://github.com/boostorg/boost.git
git submodule --update

编译过程

生成编译工具b2.exe:

1
2
cd %BOOST_ROOT%
bootstrap.bat
  • 完整安装boost
1
b2 --buildtype=complete
  • 定制安装boost
1
2
3
4
5
6
# 可查看所有必须编译才能使用的库
b2 --show-libraries
# 单独编译安装regex库:
b2 --with-regex link=static runtime-link=shared threading=multi –-stagedir=build stage
# 生成include文件夹
b2 --with-regex link=static runtime-link=shared threading=multi --prefix=build install

编译结果在stage\lib目录下生成regex库(Debug/Release):

1
2
libboost_regex-vc100-mt-1_77.lib
libboost_regex-vc100-mt-gd-1_77.lib

相关参数的含义:
stage 仅创建和安装库文件(不创建头文件),可以用 –stagedir= 选项指定库的安装位置,默认安装在当前目录下的stage文件夹内。
–with- 创建和安装指定的库,如果使用了这个选项,则仅仅指定的库被创建,其它库不被创建。如果不指定这个选项,默认创建所有需要编译安装的库。
link=static指定生成静态regex库
threading=multi指定生成多线程库
runtime-link=shared指定动态链接C和C++ 运行库

参考链接

  1. Boost编译与使用,by luckyum.
  2. Parsing Command Line Arguments in C++?,by stackoverflow.
  3. Boost.Program_options,by Boost.
  4. Boost.JSON,by Boost.
  5. Boost C++ Libraries,by wikipedia.
  6. Boost Getting Started on Windows,by Boost.
  7. Windows平台下boost库的编译和调用,by JasonLiThirty.
  8. windows下编译和安装boost库,by rangers.
  9. C++静态库与动态库,by rangers.
  10. boost::program_options 用法详解,by morning_color.
  11. C++ Boost JSON解析库的使用,by miaoerduo.
  12. boost.xml_parser中文字符问题,by mob604756f44f2a .
  13. Creating JSON arrays in Boost using Property Trees,by stackoverflow.
  14. Boost.JSON Boost的JSON解析库(1.75首发),by ink19.
  15. c++ - 如何使用 json 解析器的 boost property_tree 创建空数组节点,by coder.

C/C++文件读写操作

发表于 2021-10-30

基于C的文件操作

流式文件操作

这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义。

I/O文件操作

这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指 针来进行,而此类文件操作是围绕一个文件的“句柄”来进行。

基于C++的文件操作

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O。

基于WINAPI的文件操作

WINAPI提供了两种文件操作函数,一组是为了和16位程序兼容,这种函数比较简单;而另一种是专门为32位程序设计。

参考链接

  1. C/C++文件输入输出操作——FILE*、fstream、windowsAPI,by 苦涩的茶.
  2. C++的iostream标准库介绍+使用详解(转),by 极客先锋.
  3. malloc和free函数详解,by Healtheon.
  4. C/C++堆、栈及静态数据区详解,by Healtheon.
  5. C++——使用变量作为数组长度,by dreamiond.
  6. C++ STL中容器的使用全面总结,by jimofanhua0000.
  7. c++ new/delete的用法,by liuhmmjj.

WebSocket协议分析方法

发表于 2021-10-13 | 更新于 2021-10-16

参考链接

  1. AG通过WSS协议实现自动化分析,by qq.
  2. Bilibili 直播弹幕抓取 (1):WebSocket,by 澪同学.
  3. Bilibili 直播弹幕抓取 (2):Fiddler 与 WireShark,by 澪同学.
  4. Bilibili 直播弹幕抓取 (3): 弹幕传输协议分析,by 澪同学.
  5. Burpsuit注册机使用时报错java.math.MutableBigInteger.inverseMod64(J)J,by 云勺.
  6. Burp Suite 实战指南,by t0data@hotmail.com.

Pipenv最新一代Python项目环境与依赖管理工具

发表于 2021-09-21 | 更新于 2022-05-14

Pipenv是一个工具,旨在将所有打包世界(bundler、composer、npm、cargo、yarn 等)中最好的东西带到 Python 世界。在我们的世界中,Windows 是一等公民。

它会自动为您的项目创建和管理 virtualenv,并Pipfile在您安装/卸载软件包时从您的项目中添加/删除软件包。它还生成Pipfile.lock用于生成确定性构建的 ever-important 。

Pipenv 主要旨在为应用程序的用户和开发人员提供一种设置工作环境的简单方法。

Pipenv 寻求解决的问题是多方面的:

  • 您不再需要单独使用pip和virtualenv。他们一起工作。
  • 管理requirements.txt文件可能会有问题,因此 Pipenv 使用* * Pipfile并将Pipfile.lock抽象依赖声明与上次测试的组合分开。
  • 哈希值无处不在,总是如此。安全。自动暴露安全漏洞。
  • 强烈鼓励使用最新版本的依赖项,以尽量减少过时组件带来的安全风险。
  • 让您深入了解您的依赖关系图(例如)。$ pipenv graph
  • 通过加载.env文件简化开发工作流程。

安装

如果您已经拥有 Python 和 pip,您可以轻松地将 Pipenv 安装到您的主目录中:

1
$ pip install pipenv

创建虚拟环境

1
2
$ cd your_project_dir
$ pipenv install

激活虚拟环境

1
pipenv shell

安装依赖到虚拟环境

1
$ pipenv install Scrapy

记录依赖

使用Pipenv时,什么都不必做,Pipenv会自动帮你管理依赖。Pipenv会在你创建虚拟环境时自动创建Pipfile和Pipfile.lock文件(如果不存在),并且会在你使用pipenv install和pipenv uninstall命令安装和卸载包时自动更新Pipfile和Pipfile.lock。

在部署环境安装依赖

使用Pipenv则只需要执行pipenv install,它会自动安装Pipfile中记录的依赖:

1
$ pipenv install

参考链接

  1. Virtualenv简易教程,by jackhuang.
  2. 最全的Python虚拟环境使用方法,by Stevent.
  3. Pipenv:新一代Python项目环境与依赖管理工具,by 李辉.
  4. Python 修改 pip 源为国内源,by 花晓星辰.
  5. pip安装包时出现 ValueError: check_hostname requires server_hostname 错误,by 胡小包.
  6. pyenv install build failed:Fatal: You must get working getaddrinfo() function.,by Honcy Ye.

搜索算法集锦

发表于 2021-08-07

记录各种经典的搜索算法。

Dijkstra算法

该算法解决了图 ${\displaystyle G=\langle V,E\rangle }$上带权的单源最短路径问题。

A*搜索算法

A搜索算法(A search algorithm)是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或网络游戏的BOT的移动计算上。

该算法综合了BFS和Dijkstra算法的优点:在进行启发式搜索提高算法效率的同时,可以保证找到一条最优路径(基于评估函数)。

RRT*搜索算法

基于随机采样的路径规划算法。这类算法适用于高维度空间,它们以概率完备性(当时间接近无限时一定有解)来代替完备性,从而提高搜索效率。

参考链接

  1. Dijkstra算法,by wikipedia.
  2. A*搜索算法,by wikipedia.
  3. 路径规划 | 图搜索算法:DFS、BFS、GBFS、Dijkstra、A*,by 鬼木士.
  4. 路径规划 | 随机采样算法:PRM、RRT、RRT-Connect、RRT*,by 鬼木士.
  5. 全局路径规划:图搜索算法介绍4(RRT/RRT*),by gophae.

空战战术集锦

发表于 2021-08-06 | 更新于 2021-08-17

参考链接

  1. 超视距空战初探,by 殇璃魂.
  2. 战争雷霆空战入门进阶教程 空战机动战术详解【1】,by 大眼小乌贼.
  3. 超视距空战的发展及其局限性,by 新浪军事.
  4. 击剑云端——现代超视距空战基本动作详解,by 万年炎帝.
  5. 不懂这些基本的战机作战技能,别说你是空战迷!,by 军武.

科技论文写作技巧

发表于 2021-08-04 | 更新于 2022-03-29

科技论文文本结构通常由标题、作者、摘要、关键词、引言、方法、结果、讨论、结论等部分组成。下面总结记录各部分写作方法。

参考文献

  1. 科技论文,by 百度百科.
  2. 科技论文的引言怎么写 ,by PaperPP论文查重.
  3. 论文中Conclusion写作的几大要点,附有实例指导、写作模板,by 美辑编译.
  4. 科技论文的结论如何写作?,by 第2导师.
  5. 编辑视角下,论文摘要、引言、结论怎么写?,by qq.

Windows下OsgEarth编译安装过程

发表于 2021-07-28 | 更新于 2022-07-25

记录Windows下osgEarth编译安装过程。

安装vcpkg

首先,请下载vcpkg并执行 bootstrap.bat 脚本。

1
2
> git clone https://github.com/microsoft/vcpkg
> .\vcpkg\bootstrap-vcpkg.bat

使用以下命令安装您的项目所需要的库:

1
> .\vcpkg\vcpkg install [packages to install]

您也可以使用 search 子命令来查找vcpkg中集成的库:

1
> .\vcpkg\vcpkg search [search term]

若您希望在 Visual Studio 中使用vcpkg,请运行以下命令 (首次启动需要管理员权限)

1
> .\vcpkg\vcpkg integrate install

若您希望在 Visual Studio 中卸载vcpkg,请运行以下命令 (首次启动需要管理员权限)

1
> .\vcpkg\vcpkg integrate remove

卸载vcpkg只需删除vcpkg的文件夹即可。

使用vcpkg安装osgEarth

使用如下命令安装osgEarth:

1
vcpkg install osgearth:x64-windows

经验证,使用vs2015编译安装osgEarth的依赖项blend2d失败,因blend2d不支持vs2015编译器。因此只能自己编译安装osgearth。

编译前准备

使用vcpkg安装osg、gdal、curl。

1
vcpkg install osg:x64-windows gdal:x64-windows curl:x64-windows。

编译安装osgEarth

使用cmake编译安装osgEarth。

1
2
3
4
5
6
cd I:\project
git clone https://github.com/gwaldron/osgearth.git
cd osgearth
mkdir build
cmake -S . -B build -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWIN32_USE_MP=ON -DCMAKE_INSTALL_PREFIX=I:\project\osgearth\install -DCMAKE_TOOLCHAIN_FILE=I:\project\vcpkg\scripts\buildsystems\vcpkg.cmake
cmake --build build --target INSTALL --config RelWithDebInfo

设置运行时环境

1
2
3
set PATH=%PATH%;c:\vcpkg\installed\x64-windows\bin
set PATH=%PATH%;c:\vcpkg\installed\x64-windows\tools\osg
set PATH=%PATH%;[installroot]

参考链接

  1. osgearth编译全过程,by jianingshow.
  2. Building osgEarth,by osgEarth.
  3. Windows下QT与OSG开发环境配置,by jackhuang.
  4. 安装GDAL配置到VS2017的艰难之路(避坑之作),by Icesrteam.
  5. VS2017编译GDAL常见问题,by 一个渣渣的世界.
  6. 使用OSGeo4W安装配置QGIS,by Test_hh112.
  7. windows10 环境中安装GDAL及其python绑定,by 蔚蓝小栈.
  8. [工具]包管理工具Vcpkg 的使用,by 南象.
  9. 如何看待 Windows 的 C++ 包管理器 vcpkg?,by zhihu.
  10. win10 + vs2017 + vcpkg —— VC++ 打包工具,by 一花一世界,一叶一乾坤.
  11. osgEarth基础入门,by sunliming.
  12. Visual Studio工具 vcpkg簡介,by itread01.
  13. How to remove vcpkg and all libraries installed with vcpkg,by stackoverflow.
  14. Visual Studio开源库集成器Vcpkg全教程–利用Vcpkg轻松集成开源第三方库,by 明卿.
  15. Build failed with vs2015,by blend2d.
  16. Build Instructions for blend2d,by blend2d.
  17. window10系统中,vcpkg使用到opengl(编译MVG)库时提示Error: Building package * failed with: BUILD_FAILED,by 知识在于分享.
  18. OsgEarth 2.x升级到3.1注意事项,by 孙高勇.

expressjs的PayloadTooLargeError错误的解决办法

发表于 2021-07-08 | 更新于 2022-07-23

本文介绍Nodejs的Expressjs服务器出现PayloadTooLargeError错误的解决办法。

问题表现

当使用HTTP Put方法携带大量数据时前端会触发超时错误。

问题分析

在app.js中建立并使用应用级别的中间件函数,用于捕捉PayloadTooLargeError错误。

1
2
3
4
app.use(function (req, res, next) {
console.log(req)
next()
})

问题解决

nodejs 做为服务器,在传输内容或者上传文件时,系统默认大小为100kb,这时,我们需要修改系统限制。我们在app.js中调用接口和对应方法中,加入对应参数即可:

1
2
3
4
5
6
7
8
var bodyParser = require('body-parser');
app.use(bodyParser.json({
limit: '50mb' //nodejs 做为服务器,在传输内容或者上传文件时,系统默认大小为100kb,改为50M
}));
app.use(bodyParser.urlencoded({
limit: '50mb', //nodejs 做为服务器,在传输内容或者上传文件时,系统默认大小为100kb,改为50M
extended: true
}));

参考链接

  1. nodejs 做为服务器:PayloadTooLargeError: request entity too large when trying to POST into SQL, by IT博客技术分享.
  2. 【记录】form-data与x-www-form-urlencoded的区别,by -天道酬勤-.

pytorch学习笔记

发表于 2021-06-17

PyTorch 是基于以下两个目的而打造的python科学计算框架:

  • 无缝替换NumPy,并且通过利用GPU的算力来实现神经网络的加速。
  • 通过自动微分机制,来让神经网络的实现变得更加容易。

参考链接

  1. pytorch教程之nn.Module类详解——使用Module类来自定义模型,by LoveMIss-Y.
  2. PyTorch 中文教程,by apachecn.
  3. torch.distributions 详解,by Vic_Hao.
  4. What does log_prob do?,by stackoverflow.
  5. VAE中的重参数化技巧-reparameterization trick,by Weibo Mao.
上一页1…212223…53下一页

Jack Huang

523 日志
67 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse