自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 C++服务器方向

服务器包括数据结构与算法、操作系统原理、计算机网络、数据库原理等基础课程。服务器涉及网络编程、并发编程、并行计算、分布式计算和数据库设计等通用技术。

2023-05-28 13:20:30 173

原创 C/C++参考资料

C++参考手册推荐书籍“准”标准库并行库Lua参考手册

2023-05-11 13:57:00 665

原创 编译依存性

在改动源文件之后,源文件只需要单独编译并链接。而在改动头文件之后,直接或者间接引用头文件的源文件都需要重新编译并链接,这是文件间的编译依存性。降低编译依存性之构想:相依于声明式,不相依于定义式。编译依存性最小化的本质是接口与实现分离,其关键在于以声明依存性替换定义依存性。接口与实现分离用于隐藏实现细节,而内联的前提是显示实现细节,二者相互矛盾。采用实现细节隐藏技巧,意味着仅限定义式所在源文件定义与调用内联函数。编译器优化策略可以无视内联局限性。

2021-06-28 13:44:05 262

原创 C++17 强化条件变量类模板

条件变量只激活进入等待队列的线程,无法确保激活在阻塞之后,存在激活先于阻塞问题。结合条件变量、谓词和临界区,封装强化条件变量。以谓词决定阻塞和激活,两种操作分别放于临界区,确保操作互斥。似此只存在两种情况,一种是激活在阻塞之后,另一种是谓词为真而线程不必阻塞,足以应对激活先于阻塞问题。

2021-06-25 03:48:09 820 1

原创 Node.js 12.18.3连接MySQL 8.0.21之验证模式错误

软件版本软件版本Ubuntu20.04 LTSnode.js12.18.3 LTSMySQL8.0.21错误及原因使用node的mysql模块连接MySQL,出现以下错误:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client.错误详情如下

2020-09-01 18:08:25 321

原创 Visual Studio 2013安装使用方法

Visual Studio 2013安装步骤装载镜像安装过程开发环境启动注册项目创建程序运行安装步骤装载镜像下载之后的文件是.iso格式的镜像,Windows 8/10都能够双击装载镜像,而Windows 7不能直接装载,可以使用解压软件对.iso文件进行解压。以双击方式装载,会直接进入镜像文件夹。也可以右击镜像,在右键菜单中选择装载,之后调出“文件资源管理器”,找到装载之后的虚拟盘,双击...

2020-04-23 14:10:30 22077

原创 Visual Studio 2017编译Lua 5.3.5

下载地址官方网站:http://www.lua.org/ftp/创建项目静态库动态库解释器编译器

2020-04-22 22:16:30 758

原创 Visual Studio 2017安装使用方法

Visual Studio 2017安装步骤前期准备安装过程开发环境启动注册项目创建程序运行安装步骤前期准备首先下载Visual Studio 2017的安装包。如果有微软账号,可以下载Community版本,适用于个人学习和开发。如果对开发环境有更高要求,或者进行团队开发,可以下载Professional版本或者Enterprise版本,此两个版本需要使用密钥注册激活。安装过程由于官网...

2020-04-14 10:59:55 64486 12

原创 Visual Studio 2015安装使用方法

Visual Studio 2015安装步骤装载镜像安装过程开发环境启动注册项目创建程序运行安装步骤装载镜像下载之后的文件是.iso格式的镜像,Windows 8/10都能够双击装载镜像,而Windows 7不能直接装载,可以使用解压软件对.iso文件进行解压。以双击方式装载,会直接进入镜像文件夹。也可以右击镜像,在右键菜单中选择装载,之后调出文件资源管理器,找到装载之后的虚拟盘,双击虚拟...

2020-04-13 21:14:22 20633

原创 Ubuntu搭建SFTP服务器

Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。SSH默认不允许root用户登录,修改ssh配置文件,以允许root用户登录。单独配置指定用户或者用户组,并且覆盖全局配置。查看说明文档,了解配置项含义。重启SSH,使配置生效。连接与输出用户必须具有所访问目录或者文件的写权限,否则上传文件出错。

2020-04-02 11:42:07 1780

原创 快速排序之代码问题

快速排序的问题 无限循环 错误赋值 不同形式 最大容量实现快速排序之时,如果不注意细节,可能遗留一些漏洞。无限循环有一种实现看似能够正常排序,其实存在无限循环的隐患。当左右游标索引元素与中轴元素相等,由于无法进入内层循环,左右游标无法移动,导致无限循环。

2020-03-13 16:38:18 264

原创 git命令之提交更改

显示目录树状态查看文件变动情况。git status添加文件至索引为记录更改内容提供支持,用以检索变动文件。git add relative-path记录更改内容提交索引列举的文件内容。git commit -m "description"展示提交日志查看提交历史记录,包括提交编号、作者、日期等。编号可用于切换版本、比较各版本的文件差异。git log [--stat]...

2019-11-29 17:35:27 982

原创 Ubuntu搭建SVN服务器

Ubuntu搭建SVN服务器安装检查是否已安装svn help更新软件源sudo apt-get update安装软件sudo apt-get install subversion部署创建存放路径创建库目录修改库目录权限创建版本库切换至库目录修改数据库目录权限配置修改服务配置修改密码配置修改权限配置服务启动服务查看服务停止服务防火墙查看规则添加规则删除规则...

2019-11-20 15:17:56 248

原创 C++17 线程池类

线程池是一种池化资源技术,也是一种多线程模式。线程池调度线程执行任务,通常序列化任务,形成任务队列。调度的关键在于条件变量。当不满足执行条件时,阻塞线程以让出处理器,在满足条件之前,不占用处理器,以提高资源利用率。线程池提供设置容量方法,由守护线程异步增删工作线程。当任务队列非空时,一次性增加工作线程;当存在闲置工作线程时,逐个删减工作线程。

2019-10-23 04:18:46 2370 2

原创 智能指针std::shared_ptr之循环引用

类的成员变量包含共享指针,假设类的两个实例由共享指针管理,分别称为此实例与彼实例,此实例的共享指针指向彼实例,而彼实例的共享指针指向此实例。上述情况可以视为,由共享指针管理的外层对象持有内层对象,而内层对象以共享指针形式直接或者间接引用外层对象。销毁外层对象的前提是内层对象不再引用外层对象,而内层对象在析构之时才解除引用,即必须先销毁外层对象。似此对象之间跨层级相互引用,而无法解除引用关系,形成循环引用。

2019-10-23 03:46:59 2555 2

原创 程序设计技巧

程序设计技巧编译依存性源文件改动之后,单独编译并且链接。而头文件改动之后,所有直接或者间接引用此头文件的文件会重新编译并链接,这是文件间的编译依存性。线程泄漏线程执行任务时,若任务发生错误抛出异常,而未处理异常,线程被强制打断,无法正常执行,导致资源泄漏。虚假唤醒当一个线程通过条件变量发送唤醒信号,唤醒单个或者多个阻塞于此条件变量的线程,然而对于被唤醒的线程来说,存在不满足执行条件的情况。唤醒先于阻塞一线程通过条件变量发出唤醒信号可能先于另一线程等待条件变量。...

2019-10-18 14:02:59 345

原创 C++17 线程类

线程类提供线程重用方案,支持销毁再创建,一次创建反复使用。线程类灵活性高,既作为独立模块,也作为线程池的线程,既可以配置单任务,也可以配置任务队列。线程类支持配置任务队列,可以实现单线程独占任务队列,按照出队列之顺序执行任务;也可以实现多线程共享任务队列,不过需要确保队列接口线程安全。

2019-10-14 23:14:53 3658 2

原创 C++修饰符之数据篇

数据符号修饰符signed、unsigned数据类型修饰符short、long

2019-08-05 19:22:57 279

原创 C++遍历方法

下标迭代器STLfor_each基于范围循环forfor eachforeach

2019-07-18 20:10:14 9621 1

原创 C++17 if/switch初始化语句块

对于C++17标准,if和switch语句有以下新形式:if (init; condition)switch (init; condition)初始语句支持定义多个相同类型的变量,条件语句可以是任何条件,不限于以变量值作为判断条件。对于初始语句定义的变量,在if-else及switch-case部分都可见,而在if和switch的外层作用域不可见,如此能够缩小变量作用域。...

2019-06-24 13:49:56 1499

原创 C++与lua之互调问题

C++与lua互调的问题lua加载C++动态库出错C++链接lua动态库出错C++与lua互调的多虚拟机错误lua加载C++动态库出错PANIC: unprotected error in call to Lua API (error loading module ‘sqlconnector’ from file ‘./sqlconnector.so’:./sqlconnector.so:...

2019-06-11 01:02:18 465

原创 Linux配置运行环境

Linux配置环境配置环境变量拷贝相关文件至用户目录全局目录本地目录配置环境变量.bashrcLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lua-5.3.5/libexport LD_LIBRARY_PATH拷贝相关文件至用户目录全局目录头文件拷贝至/usr/include/lua库文件拷贝至/usr/lib执行文件拷贝至/usr/...

2019-06-11 00:10:23 4150

原创 Ubuntu 18.04编译lua-5.3.5(生成动静态库)

Ubuntu编译lua准备工作进入下载目录移动压缩包切换目录解压缩进入lua根目录更改配置根目录进入源码目录源码目录切换回根目录编译步骤安装依赖编译创建头文件目录创建库文件目录创建执行文件目录进入源码目录复制头文件至头文件目录移动库文件至库文件目录将解释器和编译器移动至执行文件目录于lua官网:http://www.lua.org/versions.html#5.3点击链接,下载lua-5.3...

2019-06-06 17:16:29 1481 2

原创 线程池性能测试

Eterfree线程池以一个基于Boost程序库的线程池为参照线程池,分别在不同硬件、不同操作系统的计算机对两种线程池进行性能测试。最近一次以Visual Studio 2019编译x64 Release版本的测试程序,一共进行10次测试,每次测试以100个线程执行300000个相同任务。记录线程池执行的任务数和所用时间,计算每毫秒执行的任务数,最终取执行任务的平均速度。

2019-05-15 13:05:18 1965

原创 C++17 双缓冲队列类模板

双缓冲队列分为入口队列与出口队列,在访问两个队列之时,分别采用入口互斥元和出口互斥元。其优势在于仅当取出元素而出口队列为空时,访问两个队列才相互影响,如此可以提高元素出入队列的效率。

2019-05-15 13:03:05 1582 1

原创 Ubuntu 18.04在线安装MySQL 5.7.26

Ubuntu安装MySQL更新软件源安装服务修改密码修改密码连接服务更新软件源sudo apt-get update安装服务sudo apt-get install mysql-server修改密码查看默认生成的配置文件vim /etc/mysql/debian.cnf配置文件内容如下所示:# Automatically generated for Debian scri...

2019-05-13 19:07:49 1291

原创 线程池设计原理

线程实现方式线程有三种实现方式,分别是内核级线程、用户级线程和组合型线程。内核级线程:拥有一个内核对象和一个栈,占据着操作系统的一块内核空间,其创建、阻塞、切换和销毁都访问操作系统接口,由内核来完成,应用程序不进行线程管理。每个用户线程在其生命周期内被绑定到一个内核线程,一旦用户线程终止,两个线程都被系统销毁。这种模式称为“一对一”线程映射。用户级线程:在用户空间实现,对于线程的创建、销...

2019-01-31 21:14:26 456

原创 C++11 once_flag与call_once组合,实现只调用一次函数

std::once_flag实例的状态,指示所关联的函数尚未被调用。其构造函数拥有constexpr指定符,以带有静态存储时间段的实例,作为静态初始化阶段的一部分被构造,避免竞争条件和初始化顺序问题。

2019-01-28 20:57:27 2650

原创 Visual Studio环境与合并环境属性

在解决方案资源管理器中,右击项目,弹出右键菜单,选择属性,打开项目属性页,在窗口左边依次展开配置属性-->调试,右边有环境和合并环境两个设置。环境$(QTDIR)\bin;$(OutDir)\ffmpeg;$(OutDir)\qt;$PATH合并环境先前不小心设置为否在Visual Studio中,调试执行生成的应用程序,出现以下问题:QDesktopServices::openUrl出错,提示ShellExecute failed (error 2)按Shift键不

2019-01-24 21:14:20 644

原创 无损数据于多个硬盘之间移动系统

于多个硬盘之间移动Windows系统时,先用通用PE制作启动优盘,再以启动优盘引导进入Win8PE系统。之后打开桌面的磁盘精灵,进行以下操作:在目标硬盘,按照原硬盘创建分区在源硬盘,单独备份各个分区分区格式备份分区GPT系统引导EFI分区、保留MSR分区、恢复OEM分区、OS系统分区、软件分区在目标硬盘中用备份文件还原各个分区...

2019-01-12 20:47:57 362

原创 Microsoft Visual Studio快速运用教程

此教程涵盖Visual Studio 2013, 2015, 2017三个版本的安装步骤、使用方法和调试技巧。Visual Studio快速使用教程简介版本下载地址安装步骤和使用方法调试技巧调试菜单断点设置调试运行单步调试查看窗口停止调试简介Microsoft Visual Studio是一个完整开发工具集,包括整个软件的生命周期所需的大部分工具,如统一建模语言(UML)工具、代码管控工具、...

2019-01-08 13:01:49 40468 2

原创 Windows调出开始菜单

这里提供两种方法:点击桌面下边任务栏最左边的Windows图标,即开始,此方法适用于Windows 7/8.1/10按Windows键,此方法适用于Windows 7/8/10

2019-01-07 19:13:39 3430

原创 Windows打开文件资源管理器

这里提供三种方法:按Windows键+E在桌面双击我的电脑或者计算机点击桌面下边任务栏的文件夹图标,即文件资源管理器

2019-01-07 18:40:40 5651

原创 Windows安装MySQL压缩版

MySQL有msi安装程序,这种图形界面安装方式容易出错。一旦安装出错,需要把C盘中MySQL残留文件以及注册表中残留项清理干净,才能再次安装。所以这里推荐使用压缩版,虽然以命令方式安装MySQL,但是安装快,不易出错。Windows安装MySQL压缩版前期准备下载地址下载提示解压操作步骤创建配置文件安装服务初始化数据启动服务登录并修改密码重启并测试密码卸载服务重新安装服务访问方法前期准备...

2018-12-30 18:24:05 922

原创 Visual Studio引用MySQL库

Visual Studio配置MySQL库创建项目添加源文件引用外部库方式以绝对路径方式引用MySQL库以相对路径的方式引用MySQL库测试配置创建项目打开Visual Studio,点击菜单栏的文件,出现下拉菜单,依次选择新建–>项目。此时弹出新建项目窗口,在左边依次展开已安装–>模板–>C/C++,于右边,Visual Studio 2017选择空项目,Visual S...

2018-12-29 21:06:32 2471

原创 Visual Studio编译Boost

Visual Studio编译Boost前期准备下载解压配置环境编译步骤引导编译命令参数介绍测试Boost库创建项目导入库测试代码前期准备下载进入Boost官网,点击Boost的最新版本,进入选择下载页面,若使用Windows操作系统,下载Boost源码的7z压缩包。Boost官网:https://www.boost.org解压Boost源码压缩包下载之后,解压至指定位置。我把Boos...

2018-12-28 16:54:20 1953

原创 Visual Studio配置EGE图形库

EGE(Easy Graphics Engine)其实是对Windows API的简单封装,适合图形库初学者。由于目前EGE是以C++风格进行封装,因此项目源文件应该使用.cpp文件。Visual Studio配置EGE图形库前期准备下载图形库目录组织结构配置方法创建项目添加源文件构建项目环境配置项目属性测试图形库前期准备下载图形库通过以下任一链接地址下载EGE图形库。EGE图形库主站下...

2018-12-26 17:32:53 6567 13

原创 C语言scanf匹配用法

不同系统的换行符制定不同系统之间传递文本文件函数scanf参数列表及返回值输入缓冲区清除剩余字符指定字符串的输入长度输入支持含空格的字符串灵活指定输入长度和格式

2018-12-26 12:41:52 2452

原创 Windows打开记事本

利用搜索框查找记事本Windows 7/8.1可以点击桌面下边任务栏最左边的Windows图标,即开始,打开开始菜单,之后利用搜索框查找记事本,找到后双击即可打开。Windows 10的搜索框如在任务栏,直接输入搜索记事本;若未显示搜索框,先单击圆圈图标,再搜索记事本。使用运行窗口打开记事本打开运行窗口,输入notepad,按Enter键或者点击确定按钮打开记事本。若不知如何打开运行窗口,...

2018-12-22 10:35:14 898 2

原创 Windows显示与隐藏文件扩展名

按Windows键+E,也可以点击桌面任务栏的文件夹图标,即文件资源管理器,还可以双击桌面的我的电脑或者计算机打开文件资源管理器。针对不同Windows操作系统,显示文件扩展名步骤如下:Windows 8/10直接点击窗口左上角菜单栏中查看,在展开的工具栏中勾选文件扩展名即可。Windows 7点击窗口左上角菜单栏中工具,在弹出菜单中选择文件夹选项以打开文件夹选项窗口,接着点击窗口中查看展...

2018-12-22 10:24:55 1138

空空如也

空空如也

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

TA关注的人

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