- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 C# Socket通讯简单Demo
C#中的Socket类是用于网络编程的重要类之一,其Available属性是指当前Socket缓冲区中可用的字节数。当Socket接收到数据时,它会存储在缓冲区中,而Available属性可以让我们知道缓冲区中有多少数据可供读取。通过检查Available属性,我们可以确定是否需要读取缓冲区中的数据,以及可以读取多少数据。该属性可以用于检查接收缓冲区中是否有可用的数据,以便进行相应的处理。
2024-06-16 17:25:12
469
原创 WPF 中Canvas图像缩放和平移
图像上放一个图元,同时实现缩放和平移操作缩放操作:使用滚轮实现缩放,缩放原点以鼠标为中心平移操作:按住鼠标右键,随鼠标平移缩放和平移时图元和图像的相对位置不变
2024-06-02 11:23:21
384
原创 C++ 插件管理
- 插件开发是一种高内聚低耦合的软件开发方式- 通过独立的插件开发能够将不同的插件功能进行组合,从而实现灵活的即插即用以适应不断变化的需求和技术- 为用户提供一个便捷的方式来管理和使用这些插件,从而推动应用程序的功能不断丰富和完善
2024-05-26 15:45:51
885
原创 C++ 优化字符串的使用
改动后平均每次调用花费 1.47 微秒,相比 remove_ctrl_mutating() 提高了 17%改动后平均每次调用花费 1.72 微秒,相比remove_ctrl() 性能提升了 13 倍。测试结果是每次调用 remove_ctrl_cstrings() 的时间为 0.15 微秒。使用包含C++11标准的编译器,因为有移动构造函数和右值引用,可以减少一些不必要的复制。:解析字符串和按标记将字符串分段方面格外优秀,且兼容 std::string。通过几种方式对其进行优化。
2023-11-11 18:48:36
221
原创 设计模式 -- 建造者模式
将一个复杂对象的构建与它的表示分离(将复杂对象分解成多个相对简单的部分,根据不同需要分别创建,最后组合成该复杂对象),使得同样的构建过程可以创建不同的表示
2023-09-17 18:40:54
136
原创 C#从入门到精通(第四版)学习记录-- 第17(抽象类、抽象方法)、18章(迭代器、分布类)
C#从入门到精通(第四版)学习记录-- 第17(抽象类、抽象方法)、18章(迭代器、分布类)
2022-12-17 15:47:58
86
原创 C++11 lambda函数
C++运算符重载lambda表达式介绍捕捉列表lambda表达式介绍lambda表达式是C++11引入的一项新技术,表示一个一个可调用的代码单元。可以理解为一个未命名的内联函数,表示形式: [capture](parameters) mutable -> return type { fuction body};#include <iostream>auto f = [] {return 42; }; //[] {return 42; }就是lambda表达式,f()表
2022-05-22 19:37:49
635
原创 C++中常用的运算符重载
C++运算符重载重载现有的运算符+运算符+在类内重载运算符+在结构体内重载运算符==在结构体内重载,使用算法在容器中查找运算符<<在类内重载,实现变体流C++ 中的内置运算符大部分都可以重载成员访问运算符(.:)、成员指针访问运算符(., ->)等不能重载,具体参考C++ 重载运算符和重载函数重载后运算符的调用就像是函数的调用运算符重载定义形式:返回值的类型 operator重载的符号(参数){ ...... //具体的实现}重载现有的运算
2022-05-16 20:36:30
155
原创 右值引用和移动构造函数
移动构造函数和右值引用C++左值和右值C++右值引用拷贝构造函数和右值引用移动构造函数介绍当类中有指针类型的成员变量时,复制构造函数需要使用深拷贝,若申请了大量的堆空间,那么深拷贝操作会影响 对象初始化的执行效率,c++11标准引入了右值引用(一种新的 C++ 语法)和移动构造,可以用来提高效率。C++左值和右值C++右值引用拷贝构造函数和右值引用参考:C++移动构造函数#include <iostream>class demo {public: demo() /
2022-05-02 14:51:09
245
原创 浅谈stringstream的用法
static std::string GenerateSVCLog(const std::string& szKeyWord, unsigned long long int szErrorId) { std::stringstream ssLog; ssLog << kszLBracket << szKeyWord << kszRLBracket; ssLog.setf(std::ios::showbase.
2022-04-22 10:18:49
816
原创 函数放在头文件中时被多次包含,编译报错:重定义
场景分析头文件Main函数包含头文件XLog.h,正常输出添加PrintLog1.h头文件包含头文件XLog.h,正常输出添加PrintLog2.cpp文件包含头文件XLog.h,编译出错函数放在头文件中时被多次包含,编译出错原因解决方法头文件假设有头文件XLog.h#pragma once#include <string>std::string LogTest(const std::string& szLog) { return szLog;
2022-04-20 11:32:19
1953
原创 使用宏区别不同的VS和C++标准的版本
__cplusplus__cplusplus(_MSVC_LANG)__cplusplus(_MSVC_LANG)区别是C++还是C,C中没有定义这个宏#include <stdio.h>int main() {#ifndef __cplusplus printf("C program.\n");#else printf("C++ program.\n");#endif return 0;}程序在C和C++兼容,编译出的C目标文件和C++目标文
2022-04-13 15:57:14
1690
原创 C++ 递归函数调用
#include <iostream>void Call(int n){ std::cout << "Call: " << n << std::endl; if (n > 0) { Call(n - 1); //调用自己 }}int main(){ Call(10); system("pause"); return 0;}结果
2021-09-27 19:55:07
109
原创 Qt+VS报错This application failed to start because no Qt platform plugin could be initialized.
运行exe,报错:原因:发布的exe找不到Qt依赖的环境,两种方案解决:设置环境变量:变量名:QT_QPA_PLATFORM_PLUGIN_PATH变量值:D:\Qt5.12.0\install\5.12.0\msvc2017_64\plugins\platforms不同用户,变量名一致,变量值随文件位置变。最后,保存变量后,一定要重启电脑,因为新的环境变量要重启后才能被系统识别!亲测有效,一招解决错误:This application failed to start because no
2021-09-22 15:24:47
1175
原创 文件常用操作
可能需要用到宽字节,可以在工程属性值设置为多字节:右键选择属性–选择高级–高级属性中的字符集选择多字节字符集用到的头文件:#include “Windows.h”1.判断文件是否存在int main(){ std::string szPath = "E:/Test.xml"; struct stat buffer; //文件是否存在,存在返回0 if (0 == stat(szPath.c_str(), &buffer)) { std::cout << "File
2021-09-22 10:45:33
135
原创 系统时间获取方式
boost库获取系统当前时间#include<iostream>#include<string>#include "boost/date_time/posix_time/posix_time.hpp"int main(){ using namespace boost::posix_time; ptime ptimeCurretTime = second_clock::local_time(); std::string tstCalibTime = to_iso_ext
2021-08-27 17:38:27
168
原创 C++11 智能指针与垃圾回收
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如:有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多。C++ 虽然从来没有公开得支持过垃圾回收机制,但 C++98/03 标准中,支持使用 auto_p
2021-08-27 17:29:58
1701
4
WPF 中Canvas图像缩放和平移
2024-06-02
WPF 中Canvas图像缩放和平移
2024-06-02
c++插件管理框架、插件接口及插件实现
2024-05-26
C++日志打印功能需求及实现
2024-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人