- 博客(16)
- 资源 (3)
- 收藏
- 关注
原创 Docker安装frp实现远程桌面连接
文章目录前言安装1. 环境2. 步骤查看SELinux查看防火墙添加端口安装docker配置frps制作镜像配置目标主机测试远程连接3. 其他关于P2P模式关于远程桌面总结参考前言由于没有公网IP,无法远程连接家里的电脑,搜到了frp这个项目,尝试使用后发现效果不错,所以写出安装过程分享。frp是一个反向代理工具,可以将流量转发到目标主机,包括TCP,UDP,HTTP,HTTPS。其基本原理是目标主机安装客户端连接到代理服务器建立固定连接,客户主机通过代理服务器连接到目标主机进行访问。市面上有向日
2022-05-15 04:46:40 1819
原创 Windows下C++将Git版本信息保存到代码中
我搜了下网页,已经有类似的文章,主要是通过shell命令将git版本信息写入到模板文件中来实现这个目的。但我还是写这篇文章的目的在于1. 自己实现的过程,通过写文章的方式可以加深印象。2. 因为是在windows平台下开发,所以这里用batch脚本实现。3. 在Windows下开发的话,可能有朋友需要在exe的详细信息里也能看到版本信息,这里也整合了这个功能。4. 类似的文章只截图...
2018-08-18 17:57:24 1346
原创 Windows下C++打印堆栈
搜索了下在Windows下C++打印堆栈的相关资料,发现很多都是类似,且方法比较复杂,因此自己封装了一个接口。主要用到了CaptureStackBackTrace,SymFromAddr,SymGetLineFromAddr64这三个接口。CaptureStackBackTrace用于获取当前堆栈,SymFromAddr用于获取符号信息,SymGetLineFromAddr64用于获取文件和行号信...
2018-05-20 15:19:43 8686 1
原创 动态更新全局数据
想象这样一种场景,有一份全局数据在启动的时候加载,多线程并发访问这份全局数据,那么在运行过程中如何动态更新这份全局数据?前面说到的问题,究根结底在于读写操作是并发的,不可避免的会出现冲突。例如有一张物品价格表,多个线程并发查询这张表获取物品价格,另外一个线程想更新物品价格。这种场景,我们可以抽象为单生产者-多消费者的问题。通常的做法,就是直接重启程序一了百了,但是如果重启的
2017-09-22 11:27:38 1183
原创 vs2015编译mysql-connector-cpp-1.1.9
在下载的Connector.C++里面有提供lib和dll使用,不过如果项目用的是新的IDE开发,就需要自己编译connector。这里IDE是vs2015,操作系统是win10,mysql-connector-cpp的版本是1.1.9,同时会用到github和cmake。 下载源代码git clone https://github.com/mysql/mysql-connector-
2017-08-08 07:41:33 949
原创 C++优化之使用emplace
在C++开发过程中,我们经常会用STL的各种容器,比如vector,map,set等,这些容器极大的方便了我们的开发。在使用这些容器的过程中,我们会大量用到的操作就是插入操作,比如vector的push_back,map的insert,set的insert。这些插入操作会涉及到两次构造,首先是对象的初始化构造,接着在插入的时候会复制一次,会触发拷贝构造。但是很多时候我们并不需要两次构造带来效率的浪
2017-07-21 08:40:07 43314 7
原创 基于Jenkins-2.46.3进行持续集成
1. 持续集成概述持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。百度百科:http://baike.baidu.com/item/%E6
2017-06-14 00:49:35 2412
原创 Dota游戏匹配的所有组合
在Dota游戏中有一种匹配玩法,任意5人以下玩家组队,加入匹配系统,由系统组合出5人 vs 5人的组合进行游戏,比如2人+3人 vs 1人+4人。抽象出这个问题,就变成两边各有m个玩家,最多允许n个人组队(n void TestLadderRule(){#define OUTPUT_INFO printf("input max camp amount and max team a
2017-03-15 21:36:49 562
原创 单循环赛贝格尔编排法实现
单循环赛,是指所有参赛队伍都需跟其他队伍比赛一次,根据比赛得分,胜负场次来排列名次。比赛队伍为单数时,轮数等于队伍数,为双数时,轮数等于队伍数减一。如5支队伍需比赛5轮,6支队伍需比赛5轮。首先介绍下逆时针轮转法。将队伍用阿拉伯数字从1开始编号,编排时将参赛队伍平均分成左右两排,左边从1开始自上向下排,右边按号数自下向上排,形成一个U型结构。如果队伍数为奇数,则在最后加一个“0”,凑成偶数。与
2017-03-14 10:45:23 20432 1
原创 代码中写入SVN版本信息
在编译前将SVN版本信息写入代码中,就可以将SVN版本信息编译到程序中。 subwcrev命令行可以用来生成版本信息,用法如下:SubWCRevWorkingCopyPath [SrcVersionFile DstVersionFile]SubWCRev SVN路径 [源模板文件 目标生成文件]源模板文件定义如下: 生成的目标文件如下:
2017-01-07 03:32:17 1081
原创 Python动态更新服务器ip到dnspod
首先从dnspod获取初始的ip,然后获取服务器ip,两者比较,如果不同就更新新的服务器ip到dnspod。源代码: https://github.com/windpenguin/DynamicDNSPod#!/usr/bin/python#-*- coding:utf-8 -*-import httplib, urllibimport socketimport time
2017-01-05 11:04:13 2471
原创 fatal error C1061: 编译器限制 : 块嵌套太深
VisualStudio开发过程中碰到C1061报错,查了MSDN,文档说明如下从说明中我们明白这是由于我们的代码块嵌套太深,超过了编译器的限制。但我理解为应该是同一个域内块的数量太多,超过了编译器限制。示例代码如下:void Demo1(){ for( int i = 0; i < 10; ++i ) { cout << i << " "; } cout <
2016-12-25 00:44:10 7551
原创 使用mysqldump备份MySQL数据库
使用mysqldump备份MySQL数据库2016年11月24日18:39步骤找到MySQL的安装目录,在里面的bin目录运行cmdmysqldump -h172.23.8.15 -ulp -p -P3305 --databaseslobbyplatform --routines --add-drop-database --events > E:\lp_new.sql这里面
2016-11-25 01:28:44 752
原创 CentOS7安装Python3
CentOS7安装Python32016年11月17日1:15从官网下载源代码并解压。安装程序需要root权限,先切换到root账户。 创建安装目录 mkdir/usr/local/python3 进入解压目录,终端输入 ./configure--prefix=/usr/local/python3注意=两边不能有空格 如果你想使用idle3
2016-11-17 01:39:04 1967
原创 搭建通过路由器连接到光猫的服务器
搭建通过路由器连接到光猫的服务器2016年11月10日0:33用了光猫之后,通常会加上路由器,这样能增加连接口,还能使用WIFI。这时候连到路由器的服务器需要先经过光猫端口映射,然后再通过路由器端口映射才能实现外网访问。 让路由器能够连通光猫并上网首先用一台电脑通过LAN口连接到路由器,这时路由器的管理地址是192.168.1.1,这很可能跟光猫的管理地址冲突。但是不用担心
2016-11-13 14:21:25 8972 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人