Doxygen使用 - 自动生成文档
Doxygen 介绍
Doxygen 是一个用于生成文档的工具,主要用于 C++、C、Objective-C、C# 和其他类似语言的代码。它可以根据代码中的注释生成各种格式的文档,包括 HTML、LaTeX、RTF 等。Doxygen 支持多种注释风格,支持 JavaDoc 和 Qt 风格的注释。
通过在代码中添加特定格式的注释,如函数说明、参数说明、返回值说明等,Doxygen 可以根据这些注释生成易于阅读的文档,帮助开发人员更好地理解代码的结构和功能。它还可以生成调用图、继承图等可视化工具,帮助开发人员更好地理解代码之间的关系。
Doxygen 是一个功能强大且灵活的工具,广泛用于各种开源项目和商业项目中,帮助开发团队更好地管理和维护其代码库。
Doxygen的安装(通常只需要一台电脑安装进行文档的生成)
Doxygen官方文档
特定注释风格
这里介绍JavaDoc注释格式。写代码时应遵循以下特定格式进行注释。
JavaDoc注释格式
JavaDoc 注释块以 /** 开始,以 */ 结束,通常位于类、方法、字段、构造函数等的前面。以下是常用的 JavaDoc ...
git使用规范以及VS的Git图形化操作
团队有使用git的需求,这时我平时的一个流程,记录下来。
git使用规范
1. git clone仓库后应立即建立自己的开发分支,自己命名即可,例如
克隆仓库
1git clone xxxx.git
创建并切换分支
1git checkout -b develop
后续可以在自己分支上就行开发修改。!!!但是一定要注意就行任何操作之前一定要进行提交!!!,如以下命令提交所有文件
12git add .git commit -m "你的提交备注"
只有任何操作之前进行提交才能保证数据安全不会丢失,都可找回!!!
2. git 在本地合并上传自己的代码
!!!在合并之前最规范的行为应该是保证本地master/main分支(即克隆下来的默认分支)和远程仓库保持同步!!!
切换分支并拉取合并最新代码,pull命令会自动和本地合并,也可自己fetch在手动合并,在切换分支之前记得提交当前分支,如上
12git checkout mastergit pull
合并本地开发分支到本地master
1git merge develop
这时会发生冲突,如图
这个时候就需要到对应文件手动合并冲突 ...
MFC中CString转换成C风格字符串宏和string
前言
在MFC中经常需要CString, const char *, string的转换,这里记录一种通过宏转换的方法。
宏函数
12345678#ifdef _UNICODE#define CString2C_Str(pStr, pC_Str) \ CT2A pszConvertedAnsiString##pStr(pStr); \ const char* pC_Str = pszConvertedAnsiString##pStr; #else #define CString2C_Str(pStr, pC_Str) \ const char* pC_Str = pStr.GetString(); #endif
使用
1234CString str = _T("测试");CString2C_Str(str, str_c_str);std::cout << str_c_str;std::string strCpp(str_c_str);
该封面图片由D Muller在Pixabay上发布
Oracle数据库通过oci插入和查询CLOB超长文本数据
前言
在处理大型文本数据时,Oracle 数据库的 CLOB(Character Large Object)类型非常有用。使用 Oracle Call Interface(OCI)可以高效地将超长文本插入到数据库中。本篇文章将展示如何使用 OCI 插入超长文本到 Oracle 数据库的 CLOB 字段中。
插入CLOB数据
建立表
1234CREATE TABLE Components ( name VARCHAR() clob_column CLOB);
插入数据代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117#include ...
C++调用Python程序
由于有用C调用Python程序的需求,本文记录一种可行的方式,采用cpython打包库,在C中加载解释器调用程序。
准备工作
安装CPython
1pip install cython
示例过程
建立一个.pyx文件用于暴露接口。如example.pyx
12345678# example.pyxcdef extern from "math.h": double sqrt(double x)def c_sqrt(double x): return sqrt(x)
创建一个setup.py文件,用于构建Cython代码成为一个可被C++调用的扩展模块
1234567from setuptools import setupfrom Cython.Build import cythonizesetup( ext_modules=cythonize("example.pyx"),)
构建生成拓展模块
1python setup.py build_ext --inplace
此时会产生如下文件结构,example.cp39-win_amd64.pyd这将是被我们 ...
Tensorflow lite for microcontroller keil编译处理
在用keil编译Tensorflow lite for microcontroller时,遇到了一些寻找依赖库的问题,现记录。
123456789$ make -f tensorflow/lite/micro/tools/make/Makefile third_party_downloads$ ls tensorflow/lite/micro/tools/make/downloads/flatbuffers/gemmlowp/kissfft/person_model_grayscale/person_model_int8/pigweed/ruy/
通过上述命令下载第三方抵赖并添加到keil包含目录中。但并未下载gemmlowp库导致编译报错missing include fixedpoint.h。可以通过手动下载gemmlowp储存库添加到包含目录解决。
下载地址可以到E:\tflite-micro\tensorflow\lite\micro\tools\make\third_party_downloads.inc找到。
该封面图片由Tonda Tran在Pixabay上发布
FDTD笔记
FDTD
FDTD简介
时域有限差分方法基本方程
麦克斯韦方程组
本构关系
D=εEB=μH\begin{aligned}D&=_\varepsilon E\\B&=_\mu H\end{aligned}
DB=εE=μH
把电流密度JJJ写成导体电流密度JcJ_cJc和施加电流密度JiJ_iJi之和,同样对磁流密度也就行分解,重写麦克斯韦方程:
∇×H=ε∂E∂t+σeE+Ji∇×E=−μ∂H∂t−σmH−Mi\begin{aligned}\nabla\times H&=\varepsilon\frac{\partial E}{\partial t}+\sigma^{e}E+J_{i}\\\nabla\times E&=-\mu\frac{\partial H}{\partial t}-\sigma^{m}H-M_{i}\end{aligned}
∇×H∇×E=ε∂t∂E+σeE+Ji=−μ∂t∂H−σmH−Mi
上面的方程仅设计电磁场EEE和HHH,而为涉及通量密度矢量DDD和BBB。公式中出现了四个本构关系参量 ...
外网远程唤醒Windows--群晖
电脑平时虽然不关机,但有时候会因为一些原因关机了,之前设置了来电自启。但是短时间断电或者其他原因造成的关机并不会自动唤醒,故而打算通过群晖实现远程Wake-on-LAN。
准备
一、一台群晖
二、本文的步骤会很详细,但是仍然假设你有一定Windows和Linux使用经验。
BIOS开启WOL
具体操作根据主板厂商操作不同,可自行百度。
Windows设置
右击Windows徽标找到设备管理器
找到网络适配器,双击网卡–>电源管理–>打开图中设置
到这里,Windows的设置基本完成,有的还需要到电源计划里开启快速启动。
群晖通过docker部署WOL
群晖使用docker
1.打开群晖套件中心搜索下载图中软件(docker)。
注册表搜索下载wol,这里我用的jazzdd/wol。
下载好后直接到映像运行。
这里注意不要勾选启用自动重新启动
这里需要设置两个东西,一个是环境里的mac地址,一个是网络使用host网络(忘记标注了图片)
max地址直接打开cmd输入命令ipconfig /all就能看到,但是注意网卡,不要选到虚拟机什么的。
之后直接一 ...
转发Windows远程桌面远程连接--群晖
由于教研室路由器烧了,用了老路由器,并不支持ipv6,但是想实现Windows远程桌面访问,想到还有一台群晖,故用dockers来部署frp实现。
准备
一、三台设备
设备 A, Windows, 为你用来远程连接的电脑。
设备 B, Linux, 有公网 IP,我这里用的是白群晖。
设备 C, Windows, 被远程连接的电脑。
如果不满足第二个条件,那么,拜拜~~
二、本文的步骤会很详细,但是仍然假设你有一定Windows和Linux使用经验。
FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,用于帮助用户快速地将本地服务暴露给互联网或其他网络。它主要用于内网穿透,允许从公网安全访问处于NAT或防火墙后的内网服务。FRP特别适合于个人或小型企业在没有公网IP或者无法进行复杂路由器配置的情况下,实现远程访问内网资源。
FRP的主要组件:
frps(Server端):部署在具有公网IP的服务器上,作为转发的中转。
frpc(Client端):部署在内网的机器上,用于连接frps,并将内网服务通过frps转发出去。
应该重点理解frpc和frps的作用 ...
成电813简答题
1.介质在外电场的作用下发生极化的物理机制是什么?受到极化的介质一般具有什么样的宏观特征(6次)
物理机制:在外电场的作用下,无极分子中的正电荷沿电场方向移动,负电荷逆电场方向移动,导致正负电荷中心不再重合形成许多沿外电场方向有序排列的电偶极子,它们对外产生的电场不再为0。对于有极分子,它的每个电偶极子在外电场的作用下要产生转动,使每个电偶极子沿外电场方向有序排列,它们对外产生的电场也不再为0。
宏观特征(2次):在电介质内部和表面上就可能会出现宏观电荷分布。
2.简述静电场边值问题的唯一性定理,它的意义何在?(3次)
唯一性定理(静电场):在场域VVV的边界面SSS上给定电位函数φ\varphiφ的值或电位函数φ\varphiφ的法向导数∂φ∂n\frac{\partial \varphi}{\partial n}∂n∂φ的值,则电位函数φ\varphiφ的泊松方程或拉普拉斯方程在场域VVV内具有唯一解。
意义:首先,它指出了静电场边值问题具有唯一解的充分必要条件,只要在边界面 SSS上的每一点给定电位函数φ\varphiφ的值或法向导数∂φ∂n\frac{\partial ...
wslg安装gnome和Qt
前言
在win10安装wsl中我们安装了Ubuntu,这时安装qt会报错
1Full message -- "./gpt4all-0.1.0-Linux.run: error while loading shared libraries: libxcb-xinerama.so.0: cannot open shared object file: No such file or directory"
这时我们运行命令
1sudo apt install libxcb-xinerama0 libxcb-cursor0
并没有任何作用,这时我通过安装gnome桌面解决了此问题。
安装gnome
开启systemd
由于gnome依赖systemd,所以我们应先安装systemd,在新版wsl2中已经支持了systemd,我们可以通过如下方式开启:
方法一:这里我安装之后遇到了其他问题,最后解决了,参考
方法二:
1sudo nano /etc/wsl.conf
添加下述文本
12[boot]systemd=true
关闭wsl
1wsl --shutdown
重新开 ...
wslg在win10的安装
前言
WSLg(Windows Subsystem for Linux GUI)是Windows Subsystem for Linux(WSL)的一个增强功能,允许在Windows操作系统上运行Linux图形用户界面(GUI)应用程序。WSLg的目标是提供更好的性能和兼容性,以使Linux GUI应用程序在Windows上的运行更加流畅和自然。
以下是WSLg的一些主要特点和功能:
完整的Linux图形支持: WSLg提供了完整的X服务器支持,允许Linux GUI应用程序在Windows桌面上运行。这包括支持X11和Wayland等图形协议。
性能优化: WSLg针对图形性能进行了优化,以提供更快的图形渲染和更流畅的用户体验。它还支持硬件加速,以进一步提高性能。
集成Windows和Linux桌面: WSLg允许在Windows和Linux之间共享剪贴板内容,并支持文件拖放操作,使得在两个操作系统之间传输数据更加方便。
跨发行版兼容性: WSLg不限于特定的Linux发行版,因此可以在各种不同的WSL发行版上运行。这意味着用户可以选择自己喜欢的Linux发行版,并在其中运行GU ...
github+cloudflare搭建图床并实现加速
前言
当处于小图床容易跑路,云服务商oss储存又不想花钱的尴尬处境上,故想用GitHub作为免费图床托管,cloudflare进行代理加速实现图床搭建。
方案的主要思路是使用 Cloudflare 的 Workers 来代理 github 私有仓库中文件的地址,并绑定自己的域名进行使用。该方案主要优势是:
Github 服务稳定,不会跑路。
使用的是 Github 的私有仓库,存储里的文件列表并不会像公开仓库一样全部对外暴露,有一定的安全性。
使用自己的域名,方便以后可能的服务迁移。
免费:GitHub和Cloudflare都提供免费的基本服务,这意味着你可以使用它们搭建图床而不需要额外的费用。
稳定性和可靠性:GitHub和Cloudflare都是知名的服务提供商,拥有稳定的基础架构和高可用性。GitHub 文件托管服务,在稳定性和可靠性方面表现良好。Cloudflare的CDN服务可以加速图像加载,提高用户体验。
全球分发:通过使用Cloudflare的CDN,你的图片可以在全球范围内快速分发,减少加载时间并提升访问速度。
自定义域名:你可以使用自己的域名来访问图床,这为你的图 ...
smms图床图片导出——Python爬虫
前言
由于最近smms不太稳定,有时候会访问慢、加载慢,故决定迁移图床,但是smms没有提供批量操作的功能,故从开发者文档寻找突破,采用爬虫爬取。
coding
开发者文档,从开发者文档我们拿到了请求头部 headers 、url以及返回的数据,这对于我们编写程序就很容易了。
代码
123456789101112131415161718192021222324252627282930313233import requests# 替换为你的smms图床API Tokenapi_token = "****"# API请求地址api_url = "https://sm.ms/api/v2/upload_history?page=1"# 设置请求头部headers = { "Authorization": f"{api_token}", "Content-Type": "multipart/form-data"}# 发 ...
CMake的一些用法(教程)
CMake
本笔记参照于Youtube博主LearnQtGuide的教程CMake-Episode,源码。
Cmake官方网站
文档
cmake_minimum_required
设置项目最低cmake版本,必须有,官方文档
语法
1cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])
project
用于定义项目的基本信息和属性。官方文档
语法
123456project(<PROJECT-NAME> [<language-name>...])project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [DESCRIPTION <project-description-string>] [HOMEPAGE_URL <url-string>] ...
力扣674.最长连续递增序列
674.最长连续递增序列
力扣题目链接
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。
示例 1:
1234输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。
示例 2:
123输入:nums = [2,2,2,2,2]输出:1解释:最长连续递增序列是 [2], 长度为1。
提示:
1 <= nums.length <= 10^4
-10^9 <= nums[i] <= 10^9
来源:力扣(LeetCode)
链接:https://leetcode.cn/pro ...
















