- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 一个简单可执行队列(ExecutableQueue)实现的注意事项
#ifndef EXECUTABLE_QUEUE_H#define EXECUTABLE_QUEUE_H#include <condition_variable>#include <mutex>#include <queue>#include <thread>class ExecutableQueue final {public: void start() { thread_ = std::thread([this]() {
2021-04-11 21:22:35 166
转载 解决VMware虚拟机桥接模式无法上网
步骤1:查看本地以太网属性是否安装VMware Bridge Protocol控制面板>>网络和Internet>>网络连接>>以太网右键属性>>查看是否有安装VMware Bridge Protocol步骤2:查看VMware虚拟网络编辑器的VMnet0桥接模式设置编辑>>虚拟网络编辑器>>桥接模式>>桥接到默认自动,修改为你本地实际的Controller步骤3:禁用并启动虚拟机本地连接.
2020-10-11 11:56:55 1892
原创 vscode 配置g++ 逗号参数
"args": [ "-g", "${file}", "-std=c++17", "-Wall", "-static", "-Wl,--whole-archive", "-lrt", "-lpthread", "-Wl,--no-whole-archive", "-o", "${fileDirname}/a.out"],网上搜了很久没找到正确了,隔了几天自己试成功了,给大家参考。...
2020-10-07 20:32:53 486 1
原创 vscode 远程 Ubuntu 静态连接 pthread,执行报错:segmentation fault
参考链接:https://stackoverflow.com/questions/58848694/gcc-whole-archive-recipe-for-static-linking-to-pthread-stopped-working-in-recvscode task.json 设置:"args": [ "-g", "${file}", "-std=c++17", "-Wall", "-static", "-Wl,--whole-archive", "-lrt",
2020-10-07 20:30:39 353
原创 lock_guard 与 unique_lock 区别
lock_guard 非常简单,源码没超过20行。就是相当于 mutex 自动资源管理器。unique_lock 功能多一些,可以进行 lock, unlock, try_lock 等。源码也不复杂。其实觉得没必要搞一个lock_guard,用一个不就行了,还能减少程序员记忆负担。...
2020-09-21 16:10:21 255
原创 undefined reference to `mysql_init‘
出现这个错误原因是没有连接到mysql开发库。如果没有安装,网上可以搜索怎么安装。我遇到的情况是把源文件放到了库文件的后边:gcc $(mysql_config --include) $(mysql_config --libs) xxx.c这样编译就会出问题。如果像下面这样写,就可以解决这个问题,如下:gcc $(mysql_config --include) conn_mysql.c $(mysql_config --libs)...
2020-09-18 12:08:38 606
原创 C++ 单例模式
static Singleton& instance() { static Singleton s; return s; }这种方式在 C++11 之前是有线程安全问题的,C++ 11 之后没有线程安全问题。具体编译哪个版本开始这次这个特性,可以在网上搜索。当有多个线程同时进入这个函数的时候,只有一个线程会构造 Singleton 对象,其他线程会阻塞等待,等对象构造完后,唤醒所有等待的线程。...
2020-09-17 14:30:48 103
原创 关闭另一个线程的窗口
PostThreadMessage 发送的消息都不会发送到窗口,因为没有窗口句柄。只有 WM_QUIT 起作用,除非消息循环自己来写。SendMessage可以发送消息,然后当前线程阻塞,窗口(主线程)会在队列中得到这个消息,这个是看调用栈看的,具体原理有待研究。例如:SendMessage(dlgMain.m_hWnd, WM_COMMAND, (WPARAM)(IDCANCEL), 0);还有,在 WTL 中,如果发送 WM_DESTROY,会导致 dlgMain 析构的时候 m_hwnd 没有
2020-09-15 17:39:39 232
原创 makefile 后缀规则例子
今天看书讲 makefile 老式的“后缀规则”,没怎么看明白,在网上找例子找了半天也没找到,后来自己琢磨写了一个,记录一下:.SUFFIXES: .cxx.cxx.o: @echo 'suffix rule' gcc -c $<app: foo.outfoo.out: foo.o gcc foo.ofoo.o: foo.cxx这个规则已经被淘汰了,不推荐使用,只是看书的时候不弄明白心里难受。...
2020-09-10 21:18:00 657 1
原创 mysql source 语法错误
mysql 错误提示:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '---create table if not exists cd ( id INTEGER AUTO_INCREMENT NOT NULL' at line 1搜索有
2020-09-08 10:41:06 979
原创 Windows 设置程序开机启动
最近有一个需求,要在 windows 上设置一个 exe 开机启动。这个按照通常的做法,只需在注册表中添加一项即可实现。HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run具体可参考:How to Add, Delete, Enable, or Disable Startup Items in Windows 10写好代码后,把一个测试 exe 设置成开机启动,重启机器。测试 exe 顺利的开机重启了。一切都 ok 后,交个测
2020-08-21 16:46:49 733
转载 Linux下getopt()函数的简单使用
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。好了,虽然啰嗦了点,但确实是忠告。步入正题:我们的主角----getopt()函数。英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。再来看一下这家伙的原型(不是六耳猕猴):int getopt(int argc,char * const argv[ ],const char * optstring);前两个参数大家不会陌...
2020-08-19 13:18:43 142
原创 EINTR 在 Ubuntu 16.04 哪个文件中定义的?
/usr/include/errno.h -> /usr/include/x86_64-linux-gnu/bits/errno.h -> /usr/include/linux/errno.h -> /usr/include/x86_64-linux-gnu/asm/errno.h -> /usr/include/asm-generic/errno.h -> /usr/include/asm-generic/errno-base.h一路跟下去,找到在 /usr/include
2020-08-19 09:05:28 462
原创 sh 与 bash 执行 for 不一样
在 ubuntu 16.04 下,/bin/sh 指向 -> dash*,导致如果在脚本开头写 #!/bin/sh 执行的是 /bin/dash。我在脚本中写一个 for 遍历:for i in {1..5}do echo 'aa'done执行的时候提示语法错误。脚本开头改成 #!/bin/bash 执行就能成功。...
2020-08-16 13:53:34 250
原创 SQL 查找缺失的序号
SELECT D1.digit + (D2.digit*10) AS seqFROM Digits D1 CROSS JOIN Digits D2ORDER BY seq;SELECT D1.digit + (D2.digit10) + (D3.digit100) AS seqFROM Digits D1 CROSS JOIN Digits D2 CROSS JOIN Digits D3WHERE seq BETWEEN 1 AND 542ORDER BY seq;CREATE VIEW Se
2020-08-13 16:13:28 974
转载 How to search a non-ASCII character in a c++ string?
https://stackoverflow.com/questions/31396151/how-to-search-a-non-ascii-character-in-a-c-string
2020-07-21 17:22:24 134
转载 字符编码笔记:ASCII,Unicode 和 UTF-8
今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte
2020-07-21 16:58:31 114
原创 ubuntu 16.04 xinetd 无法通过配置文件关闭 telnet
通过命令安装 xinetd:sudo apt-get install xinetd -y通过命令安装 telnet:sudo apt-get install telnetd -y这两个安装好后,执行命令来重启 xinetd:sudo service xinetd restart其实这个时候 /etc/xinetd.d./ 目录下并没有 telnet 的配置文件,但是 xinetd 自己已经监视了 telnet(23) 端口号。通过如下命令查看某个端口号被某个进程监听:sudo nets
2020-07-05 09:38:36 800
原创 io_context.stop 后不要调用 io_context.reset
io_context.reset 内部会把 stopped_ 变量设置成 0,也就是没有 stop 的意思。等到 io_context.run 判断的时候就不会返回。#include <thread>#include <boost/asio.hpp>#include <boost/asio/io_context.hpp>#include <iostream>#include <memory>#include <Windows.
2020-06-11 15:56:37 973
原创 C++ 条件变量
条件变量的 wait 或者 wait_for 是理解条件变量的关键。wait_for 可以设置超时时间。所以只拿 wait 说。wait 调用后,先去判断后边的条件(lambda)是否满足,如果满足了直接就返回了,如果不满足就等待被唤醒。当被唤醒后,wait 先把第一个参数加锁,这样其他线程就不能进入关键区,也就不能再次唤醒这个条件变量。wait 检查条件是否满足,如果不满足,释放锁,并继续等待,让其他线程有机会执行。参考文章:https://segmentfault.com/a/1190000006
2020-06-11 12:29:07 740
原创 string 记录
string WavReader::toString(int8_t* bytes, unsigned int size) { return string{(char*)bytes, size};}来源于 《C++ 测试驱动开发》那本书,上边代码片段把一个buf 变成一个 string 类型。
2020-06-03 10:16:19 137
原创 记录 Visual Studio 隐式使用 dll
demo_dll.h#pragma once#ifdef DEMO_DLL #define DLL_API __declspec(dllexport) #else #define DLL_API __declspec(dllimport) #endif DLL_API int add(int a, int b);DLL_API int substract(int a, int b);demo_dll.cpp#include "demo_dll.h"DLL_API int ad
2020-06-01 21:00:50 208
原创 C++ regex 总结
regex_match 完整匹配一个字符串,如果字符串与正则完整匹配,那么函数返回 true,否则返回 false。这个是最简单常用的函数。
2020-05-21 15:52:25 230
原创 VMWare Ubuntu 虚拟机忘记 root 密码
https://blog.csdn.net/ezconn/article/details/89328024上述出现错误,可以参考下面网站解决问题:https://askubuntu.com/questions/91188/authentication-token-manipulation-error
2020-05-10 10:06:50 849
原创 VMWare Ubuntu 共享文件夹失效解决办法
sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1000我解决这个的时候找了半天,终于找到了,分享给需要的人。我当前的 Ubuntu 是 16.04。来源:https://askubuntu.com/questions/29284/how-do-i-mount-shared-folders-in-ubuntu-usin...
2020-05-06 12:25:56 2639 4
原创 stdafx.cpp 文件的预编译属性是创建 Create (/Yc)
如果重新创建stdafx.cpp 的话,直接编译工程会失败,提示没有找到预编译头文件生产的代码。这时候,右键 stdafx.cpp 文件,设置它的预编译属性为 Create,再次编译就会成功了。...
2019-09-16 10:31:56 228
原创 shared_from_this 崩溃问题
class foo : public enable_shared_from_this<foo>{public: shared_ptr<foo> test() { return shared_from_this(); }};int main(int argc, char* argv[]){ foo* p = new ...
2019-09-06 18:23:33 1939
转载 IO设计模式:Reactor和Proactor对比
转载地址:https://segmentfault.com/a/1190000002715832平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少;这里学习下其模型结构,重点对比下两者的异同点;反应器ReactorReactor模式结构Reactor包含如下角色:Han...
2019-07-25 19:48:46 105
转载 高性能IO模型浅析
转载地址:https://www.cnblogs.com/fanzhidongyzby/p/4098546.html服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOC...
2019-07-25 19:30:57 78
转载 linux下close 掉socket 之后 阻塞的recv 不会立即返回
转载地址:https://www.cnblogs.com/wainiwann/p/3942203.html在开发的一个基于rtmp聊天的程序时发现了一个很奇怪的现象。在windows下当我们执行 closesocket 的操作之后,阻塞的 recv 会立即返回 -1 。而在linux 下 当我们执行 close 操作之后 阻塞的recv 会出现不能立即返回的现象。后来在网上一搜发现很多遇到类...
2019-07-25 13:53:59 759
转载 窥探try ... catch与__try ... __except的区别
VC中的这两个东西肯定谁都用过, 不过它们之间有什么区别, 正好有时间研究了一下, 如果有错误欢迎拍砖.基于VC2005, 32位XP 平台测试通过. 估计对于其他版本的VC和操作系统是不通用的.try … catch这个是C++语言定义的, 每个C++都有对其的不同的实现. 使用也很简单. 比如我们有一个函数, 读入年龄. 如果<=0 或者 >=100, 抛出异常:int...
2019-07-04 18:17:33 855
原创 Windows 10 即时(Just-In-Time)调试器设置
参考文章:https://docs.microsoft.com/en-us/visualstudio/debugger/debug-using-the-just-in-time-debugger?view=vs-2019#jit_errors在注册表键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebu...
2019-07-04 09:48:53 3944
2013 duilib入门简明教程 整个工程(含资源、代码).zip
2019-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人