VSCODE配置C/C++最小配置

准备工具:

安装C/C++环境–MinGW

进入网站MinGW,点击如下图红框链接下载。

下载MinGW

解压出来MinGW放到你已知的目录下,我放在D:\Programs\下。

需将MinGW\bin目录添加到环境变量中,这样就能在vscode中访问到G++和GCC。

配置MinGW环境变量

测试g++

1
2
3
4
5
PS G:\github\c\vscode-cpp> g++ --version
g++.exe (GCC) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

vscode安装c/c++插件

测试

根据上面各项配置下来已经差不多了,写个简单c++程序测试一下。

test.cpp

1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main(int argc, char const *argv[])
{
cout << "Hello world";
return 0;
}

vscode终端(PowerShell)中执行:if ($?) { g++ test.cpp -o test } ; if ($?) { .\test }

1
2
PS G:\github\c\vscode-cpp> if ($?) { g++ test.cpp -o test } ; if ($?) { .\test}  
Hello world

成功生成test.exe并执行输出Hello world

配置文件

为方便配置vscode中c/c++环境配置,在根目录下创建.vscode。添加如下几个配置文件:

settings.json 主要为解决中文乱码问题

1
2
3
4
5
6
7
8
9
10
11
12
{
"editor.tabSize": 2,
"editor.detectIndentation": false,
"[cpp]": {
"editor.defaultFormatter": "ms-vscode.cpptools",
"files.encoding": "gbk"
},
"[c]": {
"editor.defaultFormatter": "ms-vscode.cpptools",
"files.encoding": "gbk"
}
}

c_cpp_properties.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"configurations": [
{
"name": "GCC",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "D:\\Programs\\MinGW\\bin\\g++.exe",//改路径!!MinGW中g++.exe路径
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}

launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Programs\\MinGW\\bin\\gdb.exe",//改成你的mingw中gdb.exe的路径!!
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}

tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "D:\\Programs\\MinGW\\bin\\g++.exe",//改为mingw中g++.exe路径
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: D:\\Programs\\MinGW\\bin\\g++.exe"//改为mingw中g++.exe路径
}
],
"version": "2.0.0"
}

github

将Nodejs程序发布为windows服务

利用node-windows,将nodejs程序发布为windows服务。

安装

安装 node-windows 的推荐方法是使用 npm,使用全局标志:

1
npm install -g node-windows

然后,在您的项目根目录中,运行:

1
npm link node-windows

生成文件

npm库介绍上有段说明。

node-windows 有一个实用程序可以将 Node.js 脚本作为 Windows 服务运行。请注意,像所有 Windows 服务一样,创建一个需要管理权限。要使用节点窗口创建服务,请准备如下类似脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var Service = require('node-windows').Service;

var svc = new Service({
name: 'myservice',
description: 'this is my windows service',
script: require('path').join(__dirname, 'client.js'),
nodeOptions: [
'--harmony',
'--max_old_space_size=4096'
]
});

svc.on('install', function () {
svc.start();
});

svc.on('uninstall', function () {
console.log('Uninstall complete.');
console.log('The service exists: ', svc.exists);
});

svc.on('error ', function () {

})

svc.install();

该Service对象发出以下事件:

  • install - 当脚本作为服务安装时触发。
  • alreadyinstalled - 如果脚本已知是服务则触发。
  • invalidinstallation - 如果检测到安装但缺少所需文件则触发。
  • uninstall - 卸载完成时触发。
  • alreadyuninstalled - 请求卸载但不存在安装时触发。
  • start - 新服务启动时触发。
  • stop - 服务停止时触发。
  • error - 在某些情况下发生错误时触发。

管理服务

安装

1
2
sc.exe create qqian binpath='./deamon/myservice.exe'  start=auto
[SC] CreateService 成功

删除

1
sc.exe delete "myservice.exe"

启动

1
net start myservice

停止

1
net stop myservice

封装axios网络请求

记录一次Vue中使用axios进行网络请求。起初封装很简单,只包含getpost两种请求接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// http.js
import axios from 'axios'

/**
* get方法,对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res);
}).catch(err => {
reject(err)
})
});
}
/**
* post方法,对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, QS.stringify(params))
.then(res => {
resolve(res);
})
.catch(err => {
reject(err)
})
});
}

使用时:

1
2
3
4
5
6
7
import { get, post } from './http/http'

var url = 'http://localhost:10119/idiom/queryStoryByWord?word=%E6%9C%9D%E4%B8%89%E6%9A%AE%E5%9B%9B';

get(url).then((response) => {
console.log(response)
})

后经过一次更新升级:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// request.js
import axios from 'axios'
//axios响应头,直接copy官方文档
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
//axios接口地址 本地就是localhost,使用时替换成后端的地址就行了
axios.defaults.baseURL = '//localhost:10119'

//声明一个function request 用于封装axios,他接受一个url,type和data
//
export default function request(url, type = 'GET', data = {}) {
return new Promise((resolve, reject) => {
let option = {
url,
method: type,
}
//tolowercase转换成小写===get的话
if(type.toLowerCase() === 'get') {
//`params` 是即将与请求一起发送的 URL 参数
option.params = data
//否则的话就等于自己输入的data
}else {
option.data = data
}
//如果有token
if(localStorage.token) {
axios.defaults.headers.common['Authorization'] = localStorage.token
}

axios(option).then(res => {
// console.log(res.data);

//如果res.data.status的状态为ok且本地的token和res.data.token一样那么就resolve
if(res.status===200 && res.data.code === 0) {
if(res.data.token) {
localStorage.token = res.data.token
}
resolve(res.data)
//否则的话就message错误然后reject
}else{
reject(res.data)
}
//捕获异常,如果什么都不是那就网络异常
}).catch(err => {
reject({ msg: '网络异常:'+err })
})
})
}
//使用方式
// request('/auth/login', 'POST', {username: 'hunger', password: '123456'})
// .then(data=>{
// console.log(data)
// })
1
2
3
4
5
6
7
8
9
10
11
12
13
// api.js
import request from './request.js'

//直接声明一个URL存储接口地址
const URL = {
GET_IDIOM_BY_ID: '/idiom/queryById'
};

export default {
queryById({ id }) {
return request(URL.GET_IDIOM_BY_ID, 'GET', { id });
},
};

使用时:

1
2
3
4
5
import api from './http/api.js'

api.queryById({id:3506}).then(data => {
console.log(data);
})

这样做的好处是后续只需要维护好业务访问接口api.js就好。

如何使mysql生成.db文件

1. 下载sqllite数据库

在本机中安装sqlite数据库。下载地址为(http://www.sqlite.org/download.html)。windows下载sqlite-tools-win32-x86-3380100.zip

加载完成后解压并添加到环境变量path中,cmd输入sqlite3,会有提示SQLite version等等的提示,表示安装成功;

1
2
3
4
5
6
7
8
9
Microsoft Windows [版本 10.0.19043.1586]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>sqlite3
SQLite version 3.38.1 2022-03-12 13:37:29
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

2. 创建准备装载数据的sqlite数据库(xxx.db)

进入指定文件夹,在此文件夹中运行cmd,输入命令sqlite3 chinese-idiom.db回车,然后输入.database,就会自动创建一个数据库(chinese-idiom.db);

1
2
3
4
5
6
C:\Users\Administrator\Documents\dumps\Chinese-idiom>sqlite3 chinese-idiom.db
SQLite version 3.38.1 2022-03-12 13:37:29
Enter ".help" for usage hints.
sqlite> .database
main: C:\Users\Administrator\Documents\dumps\Chinese-idiom\chinese-idiom.db r/w
sqlite>

3. 使用navicat连接sqlite数据库

点击连接,选中sqlite,连接名填写chinese-idiom.db,选择‘现有数据库文件’,选中数据库(chinese-idiom.db)的路径,连接测试。

4. 使用navicat把mysql数据传输数据到chinese-idiom.db中

用navicat连接mysql数据库,选中需要转移的数据库,右键选择数据传输常规选项中的,就是准备转移的数据源mysql。目标就是sqlite数据库,选中chinese-idiom.db,选中一个数据库(main),然后点击开始传输。

加油2021,期盼2022


写这篇总结时,正是西安疫情最紧张的时候,就今天公司所在大厦物业通知将关闭,即日起就要居家办公了,上次居家办公就是新冠疫情刚刚爆发时。现在看着每天新增病例,心情不是一般的沉重,扶好键盘准备写些什么,却也没了主意,就只能简单的总述下吧,多的也没心思写了。只“西”望你我都“安”然无恙,西安加油。

Linux上安装部署nginx

1 安装依赖包

安装Nginx需要依赖下面几个包:

  1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ )
  2. rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
  3. ssl 功能需要 openssl 库 ( 下载: http://www.openssl.org/ )

依赖包安装顺序依次为:openssl、zlib、pcre, 然后安装Nginx包

在线安装执行以下命令:

1
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2 下载Nginx并解压安装包

1
2
3
4
5
cd /usr/local 
mkdir nginx # 创建一个文件夹
cd nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz # 下载tar包
tar -xvf nginx-1.13.7.tar.gz # 解压

3 安装nginx

1
2
3
4
5
cd /usr/local/nginx # 进入nginx目录
cd nginx-1.13.7
./configure # 执行命令
make # 执行make命令
make install # 执行make install命令

4 配置nginx.conf

1
vi /usr/local/nginx/conf/nginx.conf # 打开配置文件

// TODO

5 启动nginx

1
/usr/local/nginx/sbin/nginx -s reload

查看nginx进程是否启动:

1
ps -ef | grep nginx

6 访问服务器ip查看

7 一般常用命令

进入安装目录中,命令:

1
cd /usr/local/nginx/sbin

启动,关闭,重启,命令:

1
2
3
./nginx           # 启动
./nginx -s stop # 关闭
./nginx -s reload # 重启

常见异常处理

1. nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed

如果出现报错:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed

则运行:

1
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

重新启动即可!

2. 外部主机访问虚拟机连接异常

若想使用外部主机连接上虚拟机访问端口192.168.131.2,需要关闭虚拟机的防火墙:

centOS6及以前版本使用命令:

1
systemctl stop iptables.service

centOS7关闭防火墙命令:

1
systemctl stop firewalld.service

随后访问该ip即可看到nginx界面。

参考

Windows 10 之设置URL汇总

在Win10系统中系统设置其实也是一个Modern应用,它与ms-settings:协议进行了关联,在设置应用中的每一个具体的设置页面都有一个URI(统一资源标识符)与之对应,通过这些URI就可以直达某个具体的设置页面。

如何使用这些URI

  1. 可以按Win+R打开运行,直接将URI粘贴到运行输入框回车即可;
  2. 可以新建快捷方式,将URI作为对象位置键入;
  3. HTML a标签href;

分类设置页面URI

设置页面 URL a标签示例
设置页 ms-settings: 设置页
系统显示 ms-settings:display ms-settings:screenrotation 系统显示
通知 ms-settings:notifications 通知
存储 ms-settings:storagesense 存储
节电模式 ms-settings:batterysaver 节电模式
节电模式—设置 ms-settings:batterysaver-settings 节电模式—设置
电池使用情况 ms-settings:batterysaver-usagedetails 电池使用情况
脱机地图 ms-settings:maps 脱机地图
设备蓝牙 ms-settings:bluetooth 设备蓝牙
已连接设备 ms-settings:connecteddevices 已连接设备
鼠标和触摸版 ms-settings:mousetouchpad 鼠标和触摸版
电源和睡眠 ms-settings:powersleep 电源和睡眠
飞行模式 ms-settings:network-airplanemode 飞行模式
拨号网络 ms-settings:network-dialup 拨号网络
以太网 ms-settings:network-ethernet 以太网
VPN ms-settings:network-vpn VPN
代理 ms-settings:network-proxy 代理
数据使用量 ms-settings:datausage 数据使用量
Wi-Fi ms-settings:network-wifi Wi-Fi
Mobile Hotspot ms-settings:network-mobilehotspot Mobile Hotspot
开始 ms-settings:personalization-start 开始
个性化锁屏 ms-settings:lockscreen 个性化锁屏
个性化 ms-settings:personalization 个性化
你的账户 ms-settings:emailandaccounts 你的账户
工作单位访问 ms-settings:workplace 工作单位访问
日期和时间 ms-settings:dateandtime 日期和时间
区域和语言 ms-settings:regionlanguage 区域和语言
语音 ms-settings:speech 语音
隐私日历 ms-settings:privacy-calendar 隐私日历
联系人 ms-settings:privacy-contacts 联系人
反馈和诊断 ms-settings:privacy-feedback 反馈和诊断
位置 ms-settings:privacy-location 位置
消息传送 ms-settings:privacy-messaging 消息传送
麦克风 ms-settings:privacy-microphone 麦克风
其他设备 ms-settings:privacy-customdevices 其他设备
无线电收发器 ms-settings:privacy-radios 无线电收发器
语音、默迹书写和键入 ms-settings:privacy-speechtyping 语音、默迹书写和键入
相机 ms-settings:privacy-webcam 相机
隐藏式字幕 ms-settings:easeofaccess-closedcaptioning 隐藏式字幕
高对比度 ms-settings:easeofaccess-highcontrast 高对比度
放大镜 ms-settings:easeofaccess-magnifier 放大镜
讲述人 ms-settings:easeofaccess-narrator 讲述人
键盘 ms-settings:easeofaccess-keyboard 键盘
鼠标 ms-settings:easeofaccess-mouse 鼠标
其他选项 ms-settings:easeofaccess-otheroptions 其他选项
本站总访问量 | 本文总阅读量