- 博客(37)
- 收藏
- 关注
原创 《Windows批处理脚本(.bat)从入门到精通:详细教程与实战案例》
Windows批处理脚本(.bat)是基于CMD命令解释器的自动化脚本,通过将多个DOS命令按逻辑组合成文本文件(扩展名为.bat或.cmd),实现自动化操作。批量文件处理系统维护任务软件自动安装定时任务调度优势:无需额外环境、执行快速、学习成本低call :sayHello "程序员"exit /b:sayHellogoto :eof。
2025-03-13 19:50:08
797
原创 Android调试工具之ADB
ADB(Android Debug Bridge)是Android开发与调试的必备工具,掌握它能极大提升开发效率。一、ADB下载二、ADB安装解压下载的安装包,以Windows版本为例;将执行文件的路径添加到系统环境变量中;打开命令行,输入adb --version;三、ADB基础使用命令设备连接与授权USB连接:通过Type-C/ Micro USB线连接主板与PC(优先选择靠近电源接口的USB口)。网络连接:主板需接入与PC同一局域网(有线/无线均可)。终端输入。
2025-03-12 20:19:23
713
原创 MySQL基础知识总结
方式一:计算机——右击管理——服务方式二:通过管理员身份运行net start 服务名(启动服务)net stop 服务名(停止服务)一、用户变量SET @变量名=值;SET @变量名:=值;SELECT @变量名:=值;方式一:一般用于赋简单的值SET 变量名=值;SET 变量名:=值;SELECT 变量名:=值;方式二:一般用于赋表 中的字段值SELECT 字段名或表达式 INTO 变量FROM 表;select @变量名;二、局部变量。
2024-12-26 14:58:08
640
原创 【C 基础】C语言代码编译过程
就像刚才的hello.c它使用到了C标准库的东西“printf”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,gcc -E hello.c -o a.c可以生成预处理后的文件。打个比方编译的过程就向你对你老婆说,我要吃雪糕。从一个源文件(.c)到可执行程序到底经历了哪几步,我想大多数的人都知道,到时到底每一步都做了什么,我估计也没多少人能够说得清清楚楚,明明白白。(2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些。
2024-12-25 10:17:46
627
原创 【C++ 基础】undef用法
其中“#define malloc”是为了防止用户直接调用库函数malloc,只要包含了这个头文件alloc.h,就不能直接调用库函数malloc,而只能调用自定义函数MALLOC,如果用户要调用库函数malloc编译器会发生错误。这种技巧还是比较有意思的,用于对已经存在的库函数进行封装。在一个头文件里定义的两个对象与分别在两个头文件里定义效果相同,但如果将相似的对象只用一个头文件申明,可以增强源代码的可读性。在同一个头文件中定义结构类型相似的对象,根据宏定义不同获取不同的对象,主要用于增强代码的可读性。
2024-12-25 10:12:18
652
原创 【C 语言】内存节省机制
比较两种代码风格,使用循环结构比较大小是一种较为基础的方法,在栈区开辟了一个名为min的int空间用于暂存中途比较结果,这样就比第二种使用三目比较,多消耗了内存。编写代码实质是通过指令对计算机内存进行操作,计算机的硬件设备往往十分有限,尤其是内存。如何使有限的存储空间利用效率达到最大,成为了代码优化首先要考虑的事情。比如,输入三个数比较大小并输出最小值。使用条件语句嵌套比较。
2024-12-25 10:04:47
300
原创 C/C++基础错题归纳
故最后sum=2+0+1…(每3次循环余数和为3,所以前65535(3的倍数)次循环余数和为65535,再加最后1次循环的余数1,最后sum=65536,而i=65535)False第65536次循环,i=65535,value=0,value%3=0;True只经历1次, i=65535,value=65536,value%3=1;False第1次循环,i=65534,value=65535,value%3=0;False第65535次循环,i=0,value=1,value%3=1;
2024-12-24 18:36:05
889
原创 【C++ 基础】构造和析构
2.在C++当中要完成对象的初始化工作,可以借助构造来完成,如果要完成对象的清理操作,借助析构来完成。1.养成一个习惯,只要是变量,定义后要初始化。
2024-12-24 16:19:36
204
原创 【C++ 基础】命名空间
2.using 指示 using namespace 命名空间名称(using namespace std;1.using 声明 using 命名空间标识符::空间成员名(using std::cout;2.命名空间可以在全局作用域,也可以在其他作用域内部定义,但不能在函数和类内部定义。放开这个空间所有成员的可见性(当这个空间中大部分成员需要经常被使用,用指示)命名空间:内有许多函数(相当于书柜的一个分区),对函数进行管理。只放开某一成员的可见性(推荐使用这种,比较容易避免命名污染)
2024-12-24 16:18:35
205
原创 【C++ 基础】内存管理
一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。free ( 动态释放 )由编译器自动分配释放, 存放函数的参数值,局部变量等.3、内存分配成功且也初始化了,但操作越界。2、内存分配成功,但没有初始化就引用它。 C语言 ( 函 数 ) C++ ( 运算符 )delete ( 动态释放 )1、内存分配未成功,却去使用它。4、忘记释放内存,造成内存泄漏。 全局数据区(静态区)5、释放了内存,却继续使用它。
2024-12-24 16:17:41
1083
原创 【C++ 基础】面向对象
数据用来描述对象的性质,状态。3、通过这些数据及行为在组装的时候,不断的完善类的具体数据和行为。是类的实体,这个实体将拥有具体的数据,能够执行具体的行为。一些具有共性的事物,把共性集合在一起抽象出来的概念。2、需要去考虑这个类的具体的数据和行为;提高了软件的可重用性,可靠性,安全性。1、就是不停去细化出新的有共性的类;抽象的概念它实体的反馈。抽象思维,不利于理解。
2024-12-24 16:12:35
125
原创 【C++ 基础】从C到C++有哪些变化
参数的缺省,在只有定义的情况下可以在写在定义上,如果有声明,只要在声明中缺省,不要在定义中缺省。在C++里面,除了指针拷贝之外,还可以使用引用。使用指针和引用效率是一致。-函数的参数缺省与重载混合使用时,一定要注意参数缺省导致重载的二义性。-参数的缺省只能从后往前,依次缺省,不能从前往后。函数的值拷贝,如果是一个结构变量,尽量使用指针。把代码的模块化为工具,以此增加代码的复用性。*三种:乘号,解引用,指针。&三种:位与,取地址,引用。注意:和函数返回值没有关系。
2024-12-24 16:11:49
1318
原创 Qt [获取Dump] 使用WindowsAPI实现生成MiniDump文件
客户现场的软件偶发崩溃是程序开发者,比较头疼的事情。如何更快速的定位到问题点和解决掉,是开发应该具备的基本能力。Windows提供了一系列的API,可以记录软件崩溃前的堆栈信息。下面就实现一个生成Dump文件的程序实例。
2024-04-22 14:15:18
563
原创 QtCreator编译CamkeLists工程文件的项目
最近遇到一个项目需要使用开源库,项目是在QtCreator下开发。项目源码工程文件使用CmakeLists,使用QtCreator打开需要先安装cmake,cmake版本要高于工程文件中版本。例如:工程文件中版本3.5>cmake版本3.21。。
2024-04-17 09:57:59
707
原创 从零搭建8位计算机
对于一个纯软件开发的人,想转行进入嵌入式领域,并计划长期深耕下去,电子电路要懂一些。我打算从零开始搭建一个8位计算机,边学边做加深对电路和计算机工作原理的理解。
2024-03-22 16:20:18
404
原创 Qt 【串口通信】跨线程导致问题及解决办法(跨线程接口的使用)
封装的串口类实例化对象,通过moveToThread移动到子线程中运行,想要在任务线程中使用这个串口对象的收发接口,可以使用QMetaObject::invokeMethod这个接口来实现。
2024-03-06 16:32:12
813
原创 【基础篇】初识VTK
VTK(Visualization Toolkit)是 Kitware 公司发布的开源免费软件系统,受到国内外高等院校与科研机构的欢迎,广泛地应用于计算机图形学、图像处理与三维可视化等领域。VTK 独立于系统的图形界面接口(GUI),可方便的嵌入到其他的相关软件中。同时开发人员可以基于 VTK 独立的基础类库开发自己的库函数,拓展 VTK 的应用范围。
2024-03-06 14:43:31
3117
5
原创 Qt 【串口通信】跨线程导致问题及解决办法(对外接口定义)
串口的初始化在serialportiml::Init()中实现通过impl->moveToThread(thread1);将impl对象放到thread1线程中执行。实现串口的QSerialPort类的定义和使用都在thread1中。
2024-02-28 15:08:19
2454
原创 Qt 【串口通信】跨线程导致问题及解决办法(串口类定义)
工作上遇到需要等待接收对端返回结果,才进行后续处理的情况,可以使用QEventLoop和QTimer::singleShot实现。
2024-02-28 14:30:47
548
原创 ThorlabsPM100x光功率计读取【环境搭建】(Qt)
上一章获取到了开发需要的依赖文件,本节将展开对项目环境搭建的介绍。本项目基于QtCreator+MSVC2017开发。
2024-01-25 17:01:12
992
原创 ThorlabsPM100x光功率计读取(Qt)
光学器件需要测量其光功率值,测量仪器选用Thorlabs PM100USB,吐槽一下,这个仪器德国进口的,真贵,只有一个硬盘那么大,卖到了1万人民币。本次项目使用了两个。
2024-01-25 14:18:16
1588
原创 VS远程调试
经常遇到现场问题需要定位,研发工作环境又无法复现。这个时候远程调试可以发挥它强大的功能,在工作机上就可以调试运行在现场环境的程序。
2022-09-20 10:50:35
3846
原创 使用sizeof()计算内存大小,所踩坑
1.问题出现场景软件在运行过程中,发现底层回调上来的字符串数据,会被截断。2.问题原因底层回调数据,经调试数据是完整的。问题出现在客户端软件,并且大概率是字符串拷贝出现的问题。因此找到几处对回调数据拷贝的操作,发现有一处拷贝,使用了sizeof计算字符串长度。问题可能出现在这个计算上,于是,我单独使用demo确认这个计算的结果,结果发现,当我使用未赋值变量进行长度计算时,结果都是32,但是我将变量赋值后进行计算,结果为字符串长度。可以确实是这里的问题。
2022-09-06 23:19:31
215
原创 QtCreator工程转化成VS工程(pro->sln)
默认情况下,即环境变量qmakespec为你装的qt for vs的版本,默认生成的为该版本的vs工程文件。例如,你装的是QT for vs2010,环境变量qmakespec=win32-msvc2010,默认情况下生成的是vc2010的工程文件。2、配置qmake环境变量,确认对应的qt版本。找到qt目录下qmake.exe的绝对路径,将其添加到系统变量中。1、在项目pro文件同级目录下,按下shift+鼠标右键,选择命令行打开。2、命令行输入qmake -tp -vc ***.pro。
2022-08-24 11:28:51
4241
原创 通过注册表修改Windows系统安全级别
4、打开Windows->CurrentVersion->Policies->Associations,删除ModRiskTypes键值。1、Win+R输入Regedit.修改Windows安全提示步骤。3、打开MicroSoft。2、打开SoftWare。
2022-07-15 16:20:17
1085
原创 客户端开发界面和任务分离
1、问题引入项目开发过程中,从界面触发某个事件,有网络模块响应处理。界面由高优先级线程处理,耗时逻辑由低优先级线程处理。由于界面弹窗是模态的,后续界面切换需要先关闭弹窗。我在其他线程中调用关闭函数,这样可以关闭模态弹窗,也可以该线程中处理其他耗时任务。但是会偶现崩溃。2、原因多线程中处理模态窗口时,界面线程处理界面事务,不可以跨线程处理。可能导致窗口崩溃,模态窗口显示的时候,除了父窗口不可用之外,其他的窗口都是可用的,如果需要的一个资源在别的地方被释放了,而在模态窗口中使用的时候,没有判断可能就
2022-03-02 13:15:23
142
原创 同一局域网不同网段ip实现通信
1.使用场景电脑使用网段ip为172.23.0.0/16,设备ip为192.168.1.0/24。将电脑和设备通过交换机连接起来,满足了电脑和设备处于同一局域网不同网段,不能进行网络通信。为了能够进行通信,比如,进行设备的密码重置等,都需要能够通信才能完成。2.参考方案可以在电脑的网络设置里的高级配置中,添加一个和设备处于同一网段的ip。需要注意的是,添加的ip之前要先使用ping命令判断局域网中是否存在相同ip的设备,为了避免ip冲突。有时你会发现ping不通的ip,添加之后也有不通的情况。这
2022-02-27 10:53:01
24957
原创 内存映射文件(memory mapped file)使用问题
1、问题使用win32编程时,发现通过"sys/mman.h"引用头文件时,系统提示:无法找到目标文件。2、原因查阅相关资料后,了解mmap函数是Linux上对于内存映射文件技术的实现,Windows上对应的API是CreateFileMapping、MapViewOfFile。所以包含头文件是windows.h,若报重复包含则去掉windows.h即可。3、扩展内存映射文件原理是直接将映射到磁盘省掉一次filesystem的抽象层拷贝,当然也失去了保护。项目中建议使用boo.
2022-02-26 10:17:35
929
原创 Windows 提供的两种字符串比较函数,CompareString、CompareStringOrdinal
我们常会比较两个字符串的大小,C++中,strin提供了strcomp函数用于比较ANSI编码下的字符串大小,Windows下会存在Unicode编码,所以提供CompareString、CompareStringOrdinal这两个函数。#include <iostream>#include "Windows.h"using namespace std;int main(){ ::string str1 = "123"; ::string str2 = "345"; in
2022-02-24 21:19:17
1212
原创 QT完成网络抓包工具Mindump
使用QT设计一个属于自己的WireShark工具,为了更好的完成项目,将项目分为几个阶段来完成1、项目环境的搭建1)采用vs2017+QT5.13.12)QT_Creator+QT5.13.12、工程框架的搭建1)以VS2017为例
2022-02-24 21:16:06
2727
原创 网络数据包(.pacp)文件格式
1、前言经常使用网络嗅探工具,抓取通过特定网卡上的数据包,用来分析网络问题。例如,使用Wireshark工具抓取电脑上的一张网卡的数据并保存,会发现生成的文件是.pacp格式。2、pacp文件格式文件头+ 数据包头+数据 +数据包头+数据 +数据包头+数据 +数据包头+数据+.........数据包格式 结构名称 字节数 作用 文件头 Global Header 24 整个数据流文件,只会有一个 Global Hea.
2022-02-22 23:16:44
3512
Thorlabs.OpticalPowerMonitor.5.0.4591.730-NSIS.zip
2024-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人