自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 问答 (2)
  • 收藏
  • 关注

原创 【笔记】零散的经验记录

零散的经验记录。

2022-12-05 11:29:16 511 1

原创 【笔记】cJSON 的使用经验记录

工作中使用 cJSON 的经验记录

2022-12-05 10:41:29 2024

原创 【笔记整理 - 网络编程】

重要的调试方法查看端口号为5000的连接情况netstat -ano | grep 5000直接查看server程序使用的端口号及其端口号状态netstat -anp | grep server查看系统的一些限制ulimit -a查看CPU的使用情况top查看内存使用情况free -m-m:以MB为单位主要用好socket函数。socket提供了流(stream)和数据报(datagram)两种通信机制。流基于TCP,数据报基于UDP。代码事后补充:Linux 不

2021-09-23 17:56:09 388

原创 【笔记整理 - 多线程编程】

线程编译多线程程序时,要注意参数g++ -g 源文件.cpp -o 目标文件 -lpthread[root@localhost coding]# g++ -g test.cpp -o test -lpthread或者g++ -g -o 目标文件 源文件.cpp -lpthread[root@localhost coding]# g++ -g -o test test.cpp -lpthread关于线程的注意事项(经常忘)1、虽然能按顺序创建线程,但实际上的线程运行顺序是未知的。2、主线

2021-09-23 17:53:32 392

原创 【笔记整理 - shell】

资料来源:《Linux命令行与shell脚本编程大全》使用的是CentOS的bash shell。shell是什么用户与linux内核之间的一个“代理”,让用户能高效、安全、低成本地使用 Linux 内核。除了作为中介,shell还能进行编程。也可将shell看做一种编程语言,shell程序本身就是编译器。shell就是脚本语言,一边执行一边翻译,不会生成任何可执行文件。命令shell的命令可分为内置命令和外部命令。内置命令可视为函数,外部命令可视为另一个程序。一个例子:getsum

2021-09-23 17:50:05 699

原创 【笔记整理 - C语言基础】

编程基础进制转换二、八、十六进制转十进制将八进制数字 423.5176 转换成十进制423.5176 = 4×8^2 + 2×8^1 + 3×8^0 + 5×8^-1 + 1×8^-2 + 7×8^-3 + 6×8^-4 = 275.65576171875(十进制)总之任何一种进制转十进制,都可参考二进制的转换。转换的次方:……543210.(-1)(-2)(-3)(-4)(-5)……十进制转二、八、十六进制整数部分也都可参考已熟悉的十进制转二进制(除以进制数,取余,从下往上排)。

2021-09-23 13:41:23 810

原创 【笔记整理 - GDB】

gdb 调试程序linux环境的调试,可以使用printf语句跟踪程序的运行,也可以使用调试工具。用gcc编译源程序的时候,编译后的可执行文件不会包含源程序代码,如果您打算编译后的程序可以被调试,编译的时候要加-g的参数:gcc -g -o test test.c然后就能使用gdb指令调试了gdb test命令命令缩写命令说明set args设置主程序的参数。breakb设置断点,b 20 表示在第20行设置断点,可以设置多个断点。runr开始运

2021-09-22 18:08:03 214

原创 【笔记整理 - Git】

重装电脑时忘了备份Typora在C配置系统配置git config --system -l用户配置必须先创建用户名和密码后才会生成用户配置文件git config --global -l目前只能登记一个user信息,后续再执行登记用户名和邮箱的指令,是执行修改操作。环境变量配置环境变量只是为了能全局使用,即在电脑的任何位置使用git。但右键->Git Bash Here已经能实现这功能了,所以配不配置无所谓。Git基本理论Workspace:工作区,平时放代码的文件夹。I

2021-09-22 18:06:43 127

原创 【笔记整理 - Linux环境C语言编程】

:`·只记录不熟悉、不了解、不确定的知识点。VC 和 Visual Studio 的界面开发都属于 MFC 。Linux环境的C编程先安装gcc软件。yum install gcc -y用vim编写代码(必须是.c后缀),然后编译gcc -o 生成的文件名 源代码文件需要修改的习惯h.c: 在函数‘main’中:h.c:4:2: 错误:只允许在 C99 模式下使用‘for’循环初始化声明 for(int i = 0; i < 10; ++i) ^h.c:4:2: 附.

2021-09-22 18:02:30 1959

原创 【笔记整理 - Lua】

资料来源:《Lua程序设计》使用的版本:5.4.3设计目的嵌入应用程序中,为程序提供灵活的扩展和定制功能。Lua中不用花括号({})表示代码块,而是用do...end或是循环语句...end的方式替代。– 运行lua程序 –1、进入交互编程模式到达应用的安装目录,运行lua程序。2、将源代码文件作为lua程序的参数将lua代码保存到一个文本文件中(通常以lua作为后缀,但不是必须的),运行lua程序,将该文件作为参数:文件内容:print("hello, world")[root

2021-09-22 18:00:08 591

原创 【笔记整理 - MySQL】

资料来源:《MySQL必知必会》错误记录登录时报错ERROR 1045 (28000)打开my.ini文件,添加一行:...[mysqld]# skip-grant-tables 这一行# 设置3306端口port = 3306...可以跳过登录密码。然后再修改root用户的密码。修改密码是用了下方代码ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';未及时断开连接错误:将数据库断开函数mysql_close放在MyDB

2021-09-22 17:58:22 621

原创 【笔记整理 - Windows编程】

资料来源:《Windows程序设计》2、WIN32程序的运行原理基础知识占有CPU时间片执行指令的是线程,线程是进程内代码的执行单元。每个进程都有自己的私有地址空间,线程运行时只能访问属于它的进程的内存。例如:不同进程内的线程都可以访问0x12345678地址,但实际上访问的物理地址是不同的。32位weindows系统可寻址4GB(232)的地址空间,即一个指针能有 4,294,967,296 个不同的取值。补充:win10的32位仍是4GB,但64位家庭版达到了128 GB,其它版本是2T

2021-09-22 17:55:55 484

原创 【笔记整理 - 操作系统】(时间较早)

绪论部分一些名词解释硬件:计算机系统的基本计算资源。应用程序:用户要使用计算资源解决问题,应用程序决定了使用资源的方式。操作系统:控制硬件、协调各个应用程序、确保程序对硬件的真确使用且互不干扰。内核:操作系统中最基本的部分(并不是I/O的全部),除此以外还有系统程序和用户程序。引导程序:计算机开机时运行的第一个程序。引导程序通常位于计算机的ROM或EEPROM中。初始化系统各个组件(CPU寄存器、设备控制器、内存……),加载并执行操作系统。以上阶段完成后,系统就启动完成,等待事件发

2021-09-22 17:53:28 1358

原创 【笔记整理 - 计算机网络】

资料来源:《计算机网络 自顶向下方法》应用程序通信的本质:不同的端系统间的进程交换报文。套接字:应用层与运输层之间的接口,应用程序通过它发送报文。在因特网中,主机通过IP地址标识,而主机中的进程通过端口号标识。————应用层协议————HTTP和Web超文本传输协议(HyperText Transfer Protocol,HTTP),是Web的核心。HTTP使用TCP作为它的支撑运输协议。客户端向套接字接口发送HTTP请求报文,从中接收HTTP响应报文。服务器同理。HTTP有自己的任务,

2021-09-22 17:42:27 633

原创 【笔记整理 - 设计模式】

资料来源:力扣的“深入浅出设计模式”按照自己的阅读习惯做的笔记。一些提到但没展开讲的原则开闭原则软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的。合成 / 聚合复用原则优先使用合成 / 聚合,而不是类继承。接口隔离原则客户端不应依赖它不需要的接口。如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖自己需要的接口方法。构建型模式工厂模式在平时编程中,构建对象最常用的方式是 new 一个对象,这种方法属于一种硬编码。每 ne

2021-09-22 17:23:10 245

原创 【笔记整理 - 数据结构】树 图 KMP 排序 查找

树层次遍历辅助变量:1个队列思路:根节点入栈,while(队列非空):出队,访问,左孩子入队、右孩子入队。void level(BTNode* bt){ int front, rear;//rear指向元素、front指向位置 front = rear = 0; BTNode* que[MaxSize]; BTNode* p; if (bt) { rear = (rear + 1) % MaxSize; que[rear] = bt; while (front != rea

2021-09-22 17:16:01 295

原创 将模板类的声明和实现分别放在不同的文件中

参考:http://www.cs.technion.ac.il/users/yechiel/c+±faq/templates-defn-vs-decl.htmlhttps://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file如果像一般函数那样处理,简单地将模板声明、定义分别放在 .h 和 .cpp 文件中,会报错“无法解析的外部命令”。错误原因3个前提:模

2020-11-09 16:37:36 893

原创 “源文件与模块生成时的文件不同”问题记录

起因项目中文件有 list.h、list.cpp、main.cpp。在单独对 list.cpp 中的代码进行修改后,发现修改后的效果没有实现,运行的仍是修改前的代码。使用断点调试时出现以上错误。解决方法网上搜到的普遍答案:将“要求源文件和版本匹配”和“地址级的调试”2个选项的勾选都去掉结果:只是不会出现提示,仅针对 list.cpp 代码的修改仍然无法生效。右键项目->清理;或清除 DeBug 目录下的所有文件结果:仅对 list.cpp 代码的修改生效,但每次都得重新..

2020-11-09 15:23:27 946 1

原创 【C++学习记录】运算符重载

以“+”为例作为成员函数重载:Entity operator+(Entity e)const;作为全局函数重载:Entity operator+(Entity e1, Entity e2);//需要将该函数声明为Entity类的友元重载后的运算符使用:Entity e1, e2;e1 + e2;作为成员函数重载, e1 + e2; 等价于 e1.operator+(e2);作为全局函数重载, e1 + e2; 等价于 operator+(e1,e2);自己的理解:重载函数可以看做

2020-09-19 22:47:03 498

原创 【C++学习记录】继承和派生:同名隐藏、二义性、虚基类、多态、纯虚析构函数

同名隐藏派生类中与基类同名的成员会将基类的所有同名成员隐藏。可以通过Base::i的方式访问被隐藏的基类成员。同名成员函数会被全部隐藏。例如:基类中重载了多个名为func的函数,派生类中有一个func()函数,对于派生类,它只知道一个名为func的无参函数,所有基类的其他有参重载版本都得通过Base::func(i)的方式调用。代码如下class Base{public: void func(); void func(char c); void func(int i); void f

2020-09-19 21:02:19 537

转载 【C++ 记录】delete和delete[]的混用(未定义行为)、Visual Studio debug模式下堆内存的填充值

在写合并数组的代码时忘了语法规范,将释放堆内存的代码写成了“delete temp[]”,在改正后发现,直接使用“delete temp”也能将堆内存完全释放,如下图所示。使用delete temp;的效果使用delete[] temp;的效果可见在本例中delete和delete[]的效果相同。原因参考:https://stackoverflow.com/questions/47111302/deleting-array-from-heap对于int* temp = new int[

2020-09-14 18:27:12 490

原创 【C++学习记录】类

类类的成员函数可以在类外定义,方便代码共享。例如,要从一个文件中(设为A.cpp)使用另一个文件(设为B.cpp)中定义的类(设为Entity)。方法一、将该B.cpp中的Entity类复制到A.cpp中,且Entity类的所有成员函数,包括构造函数、析构函数都得在类外定义,Entity类中只有类成员的声明。这样就与函数的声明与定义分离一样,在A.cpp中使用Entity类成员函数,编译器在本文件中识别到该函数的声明,然后在链接阶段到其他文件中寻找函数定义。补充://A.cpp class E

2020-09-13 22:33:54 110

原创 【C++学习记录】函数、链接器与函数的声明和定义、函数默认参数、函数重载、内联函数

函数定义:编写的代码块,被设计用来执行特定的任务。函数在类中被称作方法(methods)主要目的:防止大量代码重复。在需要复制粘贴大量代码的地方改为使用函数可提高效率、减少错误。太多的函数调用会减慢运行速度(非内联(inline)函数时):每次调用函数,编译器产生一个调用指令。为了调用一个函数,需要为该函数创建一个栈框架(stack frame),将参数、返回地址等推(push)到栈上;然后跳到程序的相应位置,执行那个函数;函数执行完后返回保存在栈上的数据,回到调用函数的地方。因此反复地调用函数

2020-09-06 19:12:54 469 1

原创 【C++学习记录】数组、指针、引用

数组对于int array[3]; int* ptr = array;以下三行代码等价。array[2];*(ptr + 2);*(int*)((char*)ptr + 8);数组名有时可看做一个指针,(但数组名 != 指针) array = ptr; //报错,数组名不能做修改 int* ptr = &array ; //报错,类型不匹配 cout << &array ; //可查看数组首个元素的地址数组没有越界检查,在使用数组时要时刻注意数

2020-09-05 20:17:05 560

转载 【C++学习记录】基础知识2——头文件、#include、变量、调试程序

头文件不会参与编译。可以随便在头文件中放飞自我,虽然会有语法错误警告但完全不会影响项目生成(前提是该头文件没有被任何cpp文件include)。编译单元(translation unit):项目中的cpp文件经编译器编译后形成的,obj文件。每个cpp文件都会被单独编译成object文件,链接器(linker)将object文件链接成一个exe文件。#include#:预处理指令#include的作用:找到一个文件,将文件中所有内容复制粘贴到当前#include语句的位置。所以也可以inclu

2020-08-30 20:09:10 334

原创 【C++学习记录】基础知识1——浮点数、初始化、extern、左值、逗号运算符、类型转换

主要内容来自《全国计算机等级考试二级C++》和B站视频最好的C++教程视频搬运自油管,大部分视频只有英文机翻字幕216取值范围:-32768~32767(215 = 32768)232 = 4 294 967 296 unsigned int取值范围:0~ 4,294,967,295;默认int取值范围: -2,147,483,648~2,147,483,647VS中int默认为有符号形式浮点表示3.23E5 = 3.23×105 (Ex = 10x)标准化浮点数:将小数点调整到最左边第一

2020-08-30 18:59:46 586

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除