西安人的歌 - 范炜|程渤智

西安人的歌 - 范炜与程渤智

词:程渤智

曲:范炜

有一座城市它让人难以割舍

有一种怀念它叫做曾经来过

有一种旋律它扯着嗓子唱歌

在他的中心人们叫它鼓楼钟楼

有人说西安水土让人变得懒惰

来打把挖坑我教你撒叫生活

是谁对西安印象留在黄土高坡

来跟我唱一首咱西安人的歌

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连的一座一座

在西安人的心中这是西安人的歌

600 年的城墙

如今让你随便触摸

西安的小吃足够让你变成吃货

在你的脚下曾经埋着王孙显赫

和平门下马陵是最低调的一个

西安的女娃喜欢有话撒都直说

就像这城门儿娄子四四方方的洒脱

给你说西安地灵说话不敢胡说

背后说谁坏话可小心不好过

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

西安城的故事想说的太多太多

西安城的历史也不会难以琢磨

看夕阳西下 就坐在护城河

怀里再抱上一本贾平凹的小说

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

西安人的城墙下是西安人的火车

西安人不管到哪都不能不吃泡馍

西安大厦高楼是连地一座一座

在西安人的心中这是西安人的歌

00:00 / 00:00
  1. 1 西安人的歌 范炜|程渤智
  2. 2 武汉!武汉 刘涛|黄晓明|平安|尚雯婕
  3. 3 我要你平安归来 崔姝声
  4. 4 我和我的祖国 中央乐团合唱团

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 其他选项
本站总访问量52020 | 本文总阅读量18550