Visual Studio

远程Linux计算机

需要安装gcc/gcc-c++、gdb和gdb-gdbserver

在“gdbserver”模式中,GDB 在本地运行,连接到在远程系统上运行的 gdbserver。 请注意,这是 Linux 控制台窗口唯一支持的模式。

Promise

思想

promise代表异步操作的结果,有三种状态:

  • pending - 初始化状态
  • fulfilled - 代表一个成功操作
  • rejected - 代表一个失败操作

promise 变成fulfilled/rejected状态,状态就不会再改变

1
2
3
4
5
6
7
8
9
10
11
var Promise = require('promise');
var fs = require('fs');
function readFile(filename) {
return new Promise(function (fulfill, reject) {
fs.readFile(filename, function (err, res) {
if(err) reject(err);
fulfill(res);
})
});
};

promise.done 等待异步处理是成功还是失败

1
2
3
4
5
readFile('node.txt').done(function (res) {
console.log(res.toString());
}, function (err) {
console.log(err);
});

Promise转换和链式

promise.then可以对结果进行处理,返回新的promise

1
2
3
4
5
6
7
8
9
function readJSON(filename){
return readFile(filename).then(function (res){
return JSON.parse(res)
})
}
readJSON('node.txt').then(function (json) {
console.log(json);
});

zabbix

Problem

用docker-compose 安装zabbix, 一起安装的zabbix-agent用不了提示下面错误

Received empty response from Zabbix Agent at [107.172.105.140]. Assuming that agent dropped connection because of access permission

用docker logs zabbix_zabbix-agent_1看日志,发现拒绝信息
20322:20171117:051807.440 failed to accept an incoming connection: connection from "172.19.0.1" rejected, allowed hosts: "127.0.0.1"

需要在docker 数据卷挂载地方zbx_env/etc/zabbix/zabbix_agentd.d/ 创建zabbix_agentd.conf,把拒绝ip加入文件就可以了

Server=172.19.0.1

Blog-解决问题汇总

前后端分离

跨域问题

出现错误 No 'Access-Control-Allow-Origin' header is present on the requested resource.

只可以在后台项目接口响应请求头中,增加Access-Control-Allow-Origin的header值为*,允许所有跨域请求。例如:spring项目中,拦截器中统一增加这个header

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//在spring-servlet.xml配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.blog.server.client.interceptor.BaseHandlerInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
//编写拦截器
public class BaseHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse httpServletResponse, Object o) throws Exception {
httpServletResponse.setHeader("Access-Control-Allow-Origin","*");//让Angular可以跨域请求
return true;
}
}

出现错误 net::ERR_CONNECTION_REFUSED
不会走nginx代理,但服务器用localhost可以访问后台接口,在前端项目中用localhost不行。不知道原因,没有找到解决方法

  • 在前端项目,请求后台接口的URL指定为 /blog/xxx

通过nginx代理转发到后台接口,这样不会有跨域问题(推荐使用这个方式)

Docker

#angular-cli

docker run -it –rm -w /root/blog -v /root/blog/blog_front/blog-front:/root/blog alexsuch/angular-cli npm install
docker run -it –rm -w /root/blog -v /root/blog/blog_front/blog-front:/root/blog alexsuch/angular-cli ng build –prod –aot false

#nginx

docker run –name nginx -v /root/blog/conf/nginx:/etc/nginx/conf.d/ -p 80:80 -d nginx “-g” “daemon off;”

docker run –name nginx –link tomcat:tomcat -v /root/blog/conf/nginx:/etc/nginx/conf.d/ -v /root/blog/blog_front/blog-front/dist:/var/www/html:ro -v /root/blog/log/nginx:/var/log/nginx -p 80:80 -d nginx

#maven

docker run –rm -v /root/blog/blog_server/blog_server:/usr/local/src/blog_server -v /root/blog/m2:/root/.m2 -w /usr/local/src/blog_server maven:3.5.2-ibmjava-8 mvn clean install

docker run –rm -v /root/blog/blog_server/blog_server:/usr/local/src/blog_server -v /root/blog/m2:”$USER_HOME_DIR”/.m2 -w /usr/local/src/blog_server maven:3.5.2-ibmjava-8 mvn clean install

#mysql

docker run –name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -v /root/blog/data/mysql:/var/lib/mysql mysql:5.7.20 –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci

docker run -it –link mysql:mysql –rm mysql sh -c ‘exec mysql -h”$MYSQL_PORT_3306_TCP_ADDR” -P”$MYSQL_PORT_3306_TCP_PORT” -uroot -p”$MYSQL_ENV_MYSQL_ROOT_PASSWORD”‘

docker run -it –rm mysql mysql –default-character-set=utf8mb4 -h172.17.0.3 -uroot -p123456
docker run -it –rm –link mysql:mysql mysql mysql –default-character-set=utf8mb4 -hmysql -uroot -p123456

#tomact
docker run –name tomcat –link redis:redis –link mysql:mysql -v /root/blog/log/tomact:/usr/local/tomcat/logs -v /root/blog/data/tomcat:/usr/local/tomcat/webapps -v /root/blog/log/blog:/root/blog/logs -v /root/blog/data/blog:/root/blog/article -p 8080:8080 -d tomcat:8.5.23-jre8-alpine

#redis
docker run –name redis -d -v /root/blog/data/redis:/data -v /root/blog/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server –appendonly yes

docker run –name redis -d -p 6379:6379 -v /root/blog/data/redis:/data -v /root/blog/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf –appendonly yes

docker run -it –link redis:redis –rm redis redis-cli -h redis -p 6379 -a devin123456.

#cp
cp blog_server/blog_server/blog-webs/web-client/target/blog.war data/tomcat

#pyspider

mysql

docker run –name pyspider_mysql -d -v /root/blog/data/pyspider_mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:latest

rabbitmq

docker run –name rabbitmq -d rabbitmq:latest

phantomjs

docker run –name phantomjs -d binux/pyspider:latest phantomjs

result worker

docker run –name result_worker -m 128m -d
-v /root/blog/data/pyspider/worker:/opt/pyspider/data –link pyspider_mysql:pyspider_mysql –link rabbitmq:rabbitmq binux/pyspider:latest result_worker

processor, run multiple instance if needed.

docker run –name processor -m 256m -d –link mysql:mysql –link rabbitmq:rabbitmq binux/pyspider:latest processor

fetcher, run multiple instance if needed.

docker run –name fetcher -m 256m -d –link phantomjs:phantomjs –link rabbitmq:rabbitmq binux/pyspider:latest fetcher –no-xmlrpc

scheduler

docker run –name scheduler -d
-v /root/blog/data/pyspider/scheduler:/opt/pyspider/data –link pyspider_mysql:pyspider_mysql –link rabbitmq:rabbitmq binux/pyspider:latest scheduler

webui

docker run –name webui -m 256m -d -p 5000:5000
-v /root/blog/data/pyspider/webui:/opt/pyspider/data –link pyspider_mysql:pyspider_mysql –link rabbitmq:rabbitmq –link scheduler:scheduler –link phantomjs:phantomjs binux/pyspider:latest webui

Solr

命令

启动服务

./solr start -force

关闭服务

./solr stop -all

导入示例core

./solr -e techproducts -force

创建solr库(core)

solr create -c <name>

Kafka

启动服务器

Kafka依赖ZooKeeper,Kafka有脚本可以安装并启动一个全新的单节点ZooKeeper实例

bin/zookeeper-server-start.sh config/zookeeper.properties

启动Kafka服务器

bin/kafka-server-start.sh config/server.properties

Topic

查看所有Topic

bin/kafka-topics.sh --list --zookeeper localhost:2181

配置多节点集群

为每个broker准备配置文件config/server.properties, 修改下面信息

broker.id=1
listeners=PLAINTEXT://:9093
log.dir=/tmp/kafka-logs-1

查看broker情况

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test_topic

被动语态

语法

时态 一般语态 被动语态
动原 write be written
一般现在时 write/writes is/am/are written
一般过去时 wrote was/were written
一般将来时 will write will be written
一般将来时 is/am/are going to write is/am/are going to be written
情态动词 can/may/must write can/may/must be written
现在完成时 has/have written has/have been written
现在进行时 is/am/are writing is/am/are being written
过去进行时 was/were writing was/were being written

否定句 -> English is not spoken every day.
疑问句 -> Is English spoken every day?
特殊疑问 -> What is spoken every day?

Linux 命令

命令通用参数

-R

表示递归,例如:

cp -R 递归复制
chmod -R 递归修改权限

-m, -h

以M,K显示大小

ls -lh    查看当前目录下文件大小
df -m    查看磁盘空间

系统相关的

系统版本

lsb_release -a
cat /etc/issue
getconf LONG_BIT        查看系统位数
uname -a

防火墙

ufw status    
ufw disable
ufw enable

Ctrl+Alt+F1-F6 命令行模式
Ctrl+Alt+F7 回到桌面
Ctrl+Alt+T 打开终端

文档管理相关的

/etc/group文件中, 查看用户分组信息.

7z命令

安装方法:

sudo apt-get install p7zip

解压文件:

7z x manager.7z -r -o /home/xx
x 代表解压缩文件,并且是按原始目录解压(还有个参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的文件夹下)manager.7z 是压缩文件,这里大家要换成自己的。如果不在当前目录下要带上完整的目录
-r 表示递归所有的子文件夹
-o 是指定解压到的目录,这里大家要注意-o后是没有空格的直接接目录

压缩文件

7z a -t7z -r manager.7z /home/manager/*
a 代表添加文件/文件夹到压缩包
-t 是指定压缩类型 一般我们定为7z
-r 表示递归所有的子文件夹,manager.7z 是压缩好后的压缩包名,/home/manager/* 是要压缩的目录,*是表示该目录下所有的文件。

文件解压和压缩

zip文件

zip -r path         压缩
unzip xxx.zip -d path    解压

tar文件

tar -cvf  xxx.tar /xxx            打包不压缩
tar -zcvf xxx.tar.gz /xxx        打包gzip压缩
tar -jcvf xxx.tar.bz2 /xxx        打包bzip2压缩

7z文件

看7z命令

rar文件

sudo apt-get install rar    安装
rar x xxx.rar            解压
rar a xxx.rar xxx/        压缩

cp

-R, -r, --recursive       递归复制
-p            连同档案的属性一起复制过去,而非使用预设属性

执行运行文件

bin文件

chmod +x xxx.bin
./xxx.bin -d <install path>

deb文件

dpkg -i

命令本身相关的

type 命令来查看命令的类型,路径

http网络相关的

curl

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

语法:# curl [option] [url]

常见参数:
-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写入到该文件中
-e/--referer                                  来源网址
-f/--fail                                          连接失败时不显示http错误
-o/--output                                  把输出写到该文件中
-O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静音模式。不输出任何东西
-T/--upload-file <file>                  上传文件
-u/--user <user[:password]>      设置服务器的用户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
-#/--progress-bar                        进度条显示当前的传送状态

系统进程相关

top

PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

第一行

系统当前时刻、系统启动到现在的运作时间、终端的数目、当前系统负载的平均值,1分钟前、5分钟前、15分钟前进程的平均数

第二行

进程总数、运行中的进程数、等待状态中的进程数、被停止的系统进程数、被复原的进程数

时间

date

-R         以RFC 2822 format查看日期和时间,可以看到时区

其他命令

wc

wc -l    统计行数
wc -c    统计字节数
wc -m    统计字符数
wc -w    统计词数

file
查看文件类型