mysql配置文件

linux

my.cnf

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
[mysqld]
#server-id = 224
user = mysql
port = 3305
mysqlx_port = 33060
mysqlx_socket = /tmp/mysqlx.sock
datadir = /opt/mysql/data
socket = /tmp/mysql.sock
pid-file = /tmp/mysqld.pid
auto_increment_offset = 2
auto_increment_increment = 2
log-error = /opt/mysql/log/error.log
slow-query-log = 1
slow-query-log-file = /opt/mysql/log/slow.log
long_query_time = 0.2
log-bin = bin.log
relay-log = relay.log
binlog_format =ROW
relay_log_recovery = 1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect ='SET NAMES utf8mb4'
innodb_buffer_pool_size = 1G
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
log_timestamps = SYSTEM
lower_case_table_names = 1
default-authentication-plugin =mysql_native_password

win

my.ini

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
[client]
port=3306

[mysql]
default-character-set=utf8mb4


[mysqld]
port=3306
#password=123456
#character-set-client-handshake=FALSE
character-set-server=utf8mb4
#collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'


basedir="D:/360Downloads/mysql-5.7.20-winx64"
#Path to the database root
datadir="D:/360Downloads/mysql-5.7.20-winx64/data"

log-error="D:/360Downloads/mysql-5.7.20-winx64/log/mysqld_err.log"
#log-bin="D:/360Downloads/mysql-5.7.20-winx64/log/mysqld_bin.bin"

default-storage-engine=INNODB
#从 5.6开始,timestamp 的默认行为已经是 deprecated 了
explicit_defaults_for_timestamp=true

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

主从

doc https://dev.mysql.com/doc/refman/8.0/en/replication-howto-masterstatus.html

复制原理

  • 主服务数据变更记录保存到binlog
  • 从服务器的io线程请求主的binlog,写入到中继日志relaylog
  • 从服务器的sql线程从中继日志读取事件,并在本地执行事件,从而实现数据的同步

新帐号

1
CREATE USER 'repl'@'192.168.16.232' IDENTIFIED BY '123456';

只复制

1
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.16.232';

配置mysql.cnf

1
2
[mysqld]
server-id=1
1
2

show master status;

File: mysql-bin.000001
Position: 765

配置mysql.cnf

1
2
3
4
[mysqld]
server-id=2
#设置为只读状态,针对普通MySQL数据库用户
read_only=1

set global read_only=1;–针对普通MySQL数据库用户设置为只读
set global super_read_only=1;–针对super类MySQL数据库用户设置为只读,比如root用户
//flush tables with read lock;–设定全局锁,如果只是需要只读,并不需要加锁
show global variables like “%read_only%”;–查询全局变量表数据情况

备份

1
2
3
4
5
mysql -uroot -h 主 -p  database >back.sql;

#登陆从库
source back.sql;

1
2
3
4
5
6
7

stop slave;

reset slave;

reset master;

关键

把 show master status\G FilePosition对号入座

1
2
3
4
5
6
7
8
9
10
11
12
13

CHANGE MASTER TO

MASTER_HOST='master_host_name',

MASTER_USER='主用户名',

MASTER_PASSWORD='主密码',

MASTER_LOG_FILE='主status File',

MASTER_LOG_POS=主status Position;

开启从库

1
start slave;

检查状态

1
2
3

show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

故障

1
2
3
sudo ls -l /proc/`pidof mysqld`/fd | wc
MySQL数据库里统计已经打开的文件数查看状态参数
Open_table_definitions 和 Open_tables

进程

1
2
3
配置文件 /etc/security/limits.conf
检查进程的限制:
cat /proc/`pidof mysqld`/limits|grep "Max open files'

mariadb

https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.3.0

mariadb-11.2.1 mirrors.aliyun.com

mysql安装

linux

下载 https://downloads.mysql.com/archives/community/

Compressed TAR Archive, Minimal Install 不包含调试和测试工具

1
2
xz -d mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz
tar -xvf mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar

用户组

1
2
3
4
5
6
7
8
9
10
11
#添加组
sudo groupadd mysql
sudo useradd -r -M -s /sbin/nologin -g mysql mysql -d /opt/mysql

# cs 或 ${USER}
sudo chown mysql:${USER} -R /opt/mysql/*

cs@debian:~/data/software$ cat /etc/group | grep mysql
mysql:x:512:cs
cs@debian:~/data/software$ cat /etc/passwd | grep mysql
mysql:x:512:512::/home/mysql:/sbin/nologin

初始化数据库

1
$ sudo /opt/mysql/bin/mysqld  --initialize --user=mysql --console

……

—-2022-01-30T00:14:24.872326+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: bDB,fVSmt2/U

修改配置

默认/etc/my.cnf

1
2
3
4
url=/opt/mysql
sed -n "/^basedir=/s#=#==$url#"p ./mysql.server
sed -n "/^datadir=/s#=#=$url/data#"p ./mysql.server
sed -n "s#conf=.*#conf=$url/my.cnf#"p ./mysql.server

开机启动

1
2
3
4
5
sudo cp /opt/mysql/support-files/mysql.server  /etc/init.d/mysql
设置为开机自动运行
sudo update-rc.d mysql defaults
设置为取消开机自动运行
sudo update-rc.d -f mysql remove

密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
##### 临时密码登录,执行语句提示 You must reset your password using ALTER USER statement before executing this statement.
--- alter user user() identified by "123456"; ##密码字符串双引号

---低于版本8---SET PASSWORD FOR root@localhost = '123456';
---版本8以上---ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

##用户密码过期时间250天
ALTER USER ‘cs’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY;
###禁用过期 --恢复默认策略 PASSWORD EXPIRE DEFAULT----
ALTER USER 'cs'@'localhost' PASSWORD EXPIRE NEVER;

###密码过期的策略
show variables like 'default_password_lifetime';
---设置密码永不过期,需要把default_password_lifetime修改为 0
---set global default_password_lifetime = 0;

CREATE USER 'cs'@'localhost' IDENTIFIED BY '123456';


###修改执行生效语句
flush privileges;

win

下载地址:http://dev.mysql.com/downloads/mysql/

管理员权限运行cmd

1
E:\MySQL\MySQL Server 5.7\bin>mysqld install MySQL --defaults-file="E:\MySQL\MySQL Server 5.7\my.ini"

install/Remove of the Service Denied!

1
bin>mysqld --initialize --user=mysql --console

启动服务

1
net start MySQL

删除

1
sc delete MySQL

other

Permission denied

检查目录所属用户mysql

rm /tmp/mysql*

1
2
3
4
5
6
❯ ls -l /tmp/mysql*
-rw-r----- 1 mysql mysql 6 6月 4 21:08 /tmp/mysqld.pid
srwxrwxrwx 1 mysql mysql 0 6月 4 21:08 /tmp/mysql.sock
-rw------- 1 mysql mysql 6 6月 4 21:08 /tmp/mysql.sock.lock
srwxrwxrwx 1 mysql mysql 0 6月 4 21:08 /tmp/mysqlx.sock
-rw------- 1 mysql mysql 6 6月 4 21:08 /tmp/mysqlx.sock.lock

端口

1
2
/opt/mysql/bin/mysqld  --initialize-insecure --user=mysql  --lower-case-table-names=1
/opt/mysql/bin/mysqld --user=mysql &

╰─❯ 2023-06-04T11:50:10.086155Z 0 [System] [MY-010116] [Server] /opt/mysql/bin/mysqld (mysqld 8.0.32) starting as process 5008
2023-06-04T11:50:10.089112Z 0 [Warning] [MY-010122] [Server] One can only use the –user switch if running as root
2023-06-04T11:50:10.094189Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-06-04T11:50:10.195060Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-06-04T11:50:10.385679Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2023-06-04T11:50:10.385746Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2023-06-04T11:50:10.386292Z 0 [ERROR] [MY-010262] [Server] Can’t start server: Bind on TCP/IP port: Address already in use
2023-06-04T11:50:10.386343Z 0 [ERROR] [MY-010257] [Server] Do you already have another mysqld server running on port: 3306 ?
2023-06-04T11:50:10.386383Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-06-04T11:50:11.974477Z 0 [System] [MY-010910] [Server] /opt/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.32) MySQL Community Server - GPL.

1
sudo netstat -apn | grep 3306

pip包管理

安装

http://www.python.org/download/

1
2
3
4
5
6
7
 #指定python的安装路径
❯ ./configure --prefix=/home/cs/.local/py3.10 --enable-optimizations

❯ make -j8
❯ make install

❯ /home/cs/.local/py3.10/bin/python3.10 -m pip install --upgrade pip
1
2
3
4
5
6
7
8
#No module named ‘_ctypes’
sudo apt-get install libffi-dev
#No module named '_bz2'
❯ find /usr -type f -name _bz2*.so
cp /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so /home/cs/stable-diffusion-webui/venv/lib/python3.10/site-packages/_bz2.cpython-310-x86_64-linux-gnu.so

# gradio==3.32.0
pip install httpx==0.23.3
1
2
3
cs@debian:~/oss/typoraCracker$ sudo apt-get install python3-pip
cs@debian:~/oss/typoraCracker$ pip3 -V
pip 20.3.4 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

升级

1
2
3
4
5
6
7
8
cs@debian:~/oss/typoraCracker$ sudo pip3 install --upgrade pip
Collecting pip
Downloading http://mirrors.aliyun.com/pypi/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl (1.5MB)
100% |████████████████████████████████| 1.5MB 5.8MB/s
Installing collected packages: pip
Found existing installation: pip 9.0.1
Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Successfully installed pip-20.3.4

国内源

1
2
3
4
5
https://pypi.doubanio.com/simple/豆瓣 
https://mirrors.aliyun.com/pypi/simple/ 阿里
https://mirrors.bfsu.edu.cn/pypi/web/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学

设置

1
2
3
$ pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
Writing to ~/.config/pip/pip.conf

pip.ini

1
2
3
4
5
6
[global]
timeout = 6000
index-url = https://mirrors.aliyun.com/pypi/simple
extra-index-url = https://pypi.mirrors.ustc.edu.cn/simple/https://mirrors.aliyun.com/pypi/simple/https://pypi.tuna.tsinghua.edu.cn/simple/http://pypi.mirrors.ustc.edu.cn/simple/https://pypi.org/simple/
[install]
trusted-host = pypi.mirrors.ustc.edu.cnpypi.mirrors.ustc.edu.cnmirrors.aliyun.compypi.tuna.tsinghua.edu.cnpypi.mirrors.ustc.edu.cnpypi.org

extra-index-url 备用

trusted-host此参数是为了避免麻烦,否则使用的时候可能会提示不受信任

requirement

生成requirement.txt文件

pipreqs

在命令行中输入pip install pipreqs,然后进入项目目录,并执行pipreqs --encoding=utf8 --force命令

freeze

文件包含的包是当前环境所有的包

pip3 freeze > requirements.txt

install

安装 requirements.txt 文件

pip install -r requirements.txt

卸载

1
sudo apt-get remove python3-pip

debian 12

pipx会安装大量的依赖项

1
2
3
sudo apt install pipx

pipx install torch --include-deps

export PATH=$PATH:”/home/xxx/.local/bin”

https://www.yaolong.net/article/pip-externally-managed-environment/

强制删除此警告(不建议)

1
2
3
4
5
❯ ls -l /usr/lib/python3.11/EXTERNALLY-MANAGED
-rw-r--r-- 1 root root 645 2023年 3月13日 /usr/lib/python3.11/EXTERNALLY-MANAGED
❯ sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.bak

sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED.bak /usr/lib/python3.11/EXTERNALLY-MANAGED

和之前一样,现在您可以直接运行 pip

创建虚环境

1
python3 -m venv  /home/cs/oss/sd/sd-venv
1
2
3
4
5
6
7
8
9
❯ python3 -m venv  ./venv
❯ . ./venv/bin/activate
❯ pip list
Package Version
---------- -------
pip 23.0.1
setuptools 66.1.1
❯ pip install Flask

python setup

1
2
python setup.py install --record files.txt 记录安装后文件的路径
cat files.txt | xargs rm -rf 删除这些文件

tomcat优化

jvm参数

启动jvm参数

1
JAVA_OPTS="-server -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m "

-Xms:Java虚拟机初始化时堆的最小内存,一般与 Xmx配置为相同值,这样的好处是GC不必再为扩展内存空间而消耗性能;

-Xmx:Java虚拟机可使用堆的最大内存;

-XX:PermSize:Java虚拟机永久代大小;

-XX:MaxPermSize:Java虚拟机永久代大小最大值;

-XX:NewSize=:新生代空间初始化大小

-XX:MaxNewSize=:新生代空间最大值

jmap –heap $pid 可以看到MaxHeapSize 等参数已经生效

配置优化

connection并发优化

/tomcat-8.5.38/conf/server.xml

https://tomcat.apache.org/tomcat-8.5-doc/config/executor.html

1
2
3
4
5
6
7
8
9
10
<Executor   name="tomcatThreadPool"
namePrefix="req-thead-exc"
maxHttpHeaderSize="8192"
maxThreads="1000"
minSpareThreads="75"
maxQueueSize="Integer.MAX_VALUE"
maxIdleTime="60000"
threadPriority="5"
className="org.apache.catalina.core.StandardThreadExecutor"
/>

maxThreads: 服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量,压测计算,要排除单纯处理业务耗时方法,如果未指定,默认值为200

minSpareThreads:线程的最小运行数目,这些始终保持运行。如果未指定,默认值为10。

maxHttpHeaderSize:请求和响应的HTTP头的最大大小,以字节为单位指定。如果没有指定,这个属性被设置为8192(8 KB)。

1
2
3
4
5
6
sed -i '/connectionTimeout=/i\  executor="tomcatThreadPool"' /opt/apache/tomcat-8.5.38/conf/server.xml 

<Connector port="8080" protocol="HTTP/1.1"
executor="tomcatThreadPool"
connectionTimeout="20000"
redirectPort="8443" />

connectionTimeout代表连接超时时间,单位为毫秒,默认值为60000。通常情况下设置为30000。

https://tomcat.apache.org/tomcat-8.5-doc/config/http.html

cache缓存压缩优化

/tomcat-8.5.38/conf/context.xml

tomcat8以上对resource采取了cache,而默认的大小是10M

consider increasing the maximum size of the cache

1
sed -i '/^<\/Context>/i\<Resources cachingAllowed="true"  cacheMaxSize="102400" \/>'  /opt/apache/tomcat-8.5.38/conf/context.xml

context.xml文件内添加到节点内

cacheMaxSize值按需设置,单位K ,

安全优化

普通用户启动/修改端口号

清空站点目录下ROOT下管理页面等文件,ROOT下有一些站点的管理程序可以查看tomcat的各种信息及配置

关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值改为false:enableLookups="false"

设置session过期时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.在tomcat——>conf——>servler.xml文件中定义:  
<Context path="/test" docBase="/test"  
defaultSessionTimeOut="3600"
isWARExpanded="true"  
isWARValidated="false"
isInvokerEnabled="true"  
isWorkDirPersistent="false"/>   
defaultSessionTimeOut="3600"  
2. 项目所在目录下的 web.xml中定义:  
<session-config>  
<session-timeout>20</session-timeout>  
</session-config>  
3. 在程序中定义:  
session.setMaxInactiveInterval(30*60);设置单位为秒,设置为-1永不过期

apt

apt-get

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sed -i "s@http://\(deb\|security\).debian.org@https://mirrors.aliyun.com@g" /etc/apt/sources.list


deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib


sudo apt update && sudo apt upgrade -y

升级

1
2
apt-get update			   // 更新源文件,并不会做任何安装升级操作 
apt-get upgrade // 升级所有已安装的包

安装

1
apt-get install packagename		// 安装指定的包

查询包

1
apt-cache depends packagename   //该包依赖哪些包

列出所有已经安装

1
apt list --installed

删除

1
apt-get autoremove packagename --purge  //删除包及其依赖的软件包+配置文件等

清理

1
2
3
apt-get clean 						// 清理无用的包  
apt-get autoclean // 清理无用的包
apt-get check // 检查是否有损坏的依赖

apt-mark 标记

系统中禁用 Chrome 更新

1
2
cs@debian:~$ sudo apt-mark  hold google-chrome-stable
google-chrome-stable 设置为保留。

auto 标记指定软件包为自动安装
manual 标记指定软件包为手动安装
minimize-manual 将 meta 包的所有依赖项标记为自动安装
hold 标记指定软件包为保留(held back),阻止软件自动更新
unhold 取消指定软件包的保留(held back)标记,解除阻止自动更新
showauto 列出所有自动安装的软件包
showmanual 列出所有手动安装的软件包
showhold 列出设为保留的软件包

centos

1
echo 'exclude=google-chrome-stable' >> /etc/yum.conf

sudo

/etc/sudoers 只读

1
2
3
4
❯ ls -l /etc/sudoers
-r--r----- 1 root root 689 2月 20 21:59 /etc/sudoers

chmod +w /etc/sudoers

-输入命令 vi /etc/sudoers 进入sudoers文件;

-在vi命令模式中,

输入 /%sudo 搜索定位到 %sudo ALL = (ALL:ALL) ALL,或者手动定位

-在vi插入模式中(按一下 i 键),

在 %sudo ALL = (ALL:ALL) ALL 下面键入 cs ALL = (ALL:ALL) ALL

(同样,这里 cs代表我的普通用户名,大家根据实际修改)

-在vi命令模式中,输入 :x ,即可退出vi并保存文件

别忘了再吧sudoer改回只读模式 chmod -w /etc/sudoers

yum

下载安装包在指定目录

1
yum install --downloadonly --downloaddir=/mnt  zabbix-agent

yumdownloader yum install -y yum-utils

1
2
# 下载包时,同时下载相关依赖
yumdownloader --resolve --destdir=/apps/yumtmp/downloader php
1
2
3
4
5
> rpm -qa |grep httpd #找到安装的https包
xxxx

##卸载上面命令找到的包
> rpm -e --nodeps xxx

本地安装

一: yum -C install

把下载的包,拷贝进缓存包的默认目录/var/cache/yum/base/packages
使用命令yum -C install [packageName]从缓存中安装包

二: yum localinstall

直接指定本地包的文件

1
2
# 安装当前目录下所有的包
yum localinstall *.rpm

三: rpm -ivh –force

暴力安装当前目录下所有的包, 忽略依赖顺序, 简单又省事

1
rpm -ivh --force *.rpm

force就是强制安装

–nodeps就是安装时不检查依赖关系

强弱类型语言

弱类型语言

是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换 代表js,php,lua

js

+操作是将A的类型转化为了字符串,然后进行拼接

-操作是将B的类型转化为了数字,然后进行减法

lua

1
2
3
4
5
6
7
8
9
> a=5 
> b="5"
> print(b+a)
10.0
> print(b-a)
0.0
> print(a==b)
false

mongodb

linux 环境

下载

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian81-3.4.4.tgz

1
2
3
tar zxvf mongodb*.tar
mv /opt/mongo* /opt
cd /opt/mongodb* && touch mongodb.conf

配置文件

1
2
3
4
5
6
dbpath=/home/cs/Download/mongodb/data #数据库路径
logpath=/home/cs/Download/mongodb/data/logs/mongodb.log #日志输出文件路径
logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017 #端口号 默认为27017

启动

1
cs@debian:/opt/mongodb-3.4.4/bin$ ./mongod  --config  /opt/mongodb-3.4.4/mongodb.conf

后台运行

1
mongo  -f   mongo.conf   & 

使用 fork 必须加上logpath

1
2
mongo   --fork  --logpath=log/mongodb.log   

多条命令执行时 && 可以把 fork配置到conf

1
2
3
4
5
6
7
echo   { \
echo 'dbpath=/data/db'; \
echo 'port=27017'; \
echo 'logpath=/data/mongo.log'; \
echo 'logappend=true'; \
echo 'fork=true'; \
} > mongod.conf

启动

mongo-start.sh

1
2
3
4
5
#!/bin/bash
cd /opt/mongodb-3.4.4/bin
./mongod --config /opt/mongodb-3.4.4/mongodb.conf &
exit
!

win 环境

下载 http://dl.mongodb.org/dl/win32/x86_64
zip 免安装包

启动

1
E:\MongoDB\Server\bin>mongod.exe --config  E:\MongoDB\mongo.conf

mongo.conf

1
2
3
4
5
6
dbpath=E:\MongoDB\data #数据库路径
logpath=E:\MongoDB\logs\mongodb.log #日志输出文件路径
logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017 #端口号 默认为27017

打开 http://127.0.0.1:27017/
It looks like you are trying to access MongoDB over HTTP on the native driver port.

安装服务

管理员cmd
E:\MongoDB\Server\bin>mongod --install --serviceName "MongoDB" --config “E:\MongoDB\mongo.conf”
E:\MongoDB\Server\bin> net start MongoDB

删除服务

sc delete MongoDB

https://www.runoob.com/mongodb/mongodb-connections.html

singleton单例模式

懒汉

第一次调用时实例化

1
2
3
4
5
6
7
8
9
10
11
12
13
public class LHanDanli {
//定义一个私有类变量来存放单例,私有的目的是指外部无法直接获取这个变量,而要使用提供的公共方法来获取
private static LHanDanli dl = null;
//定义私有构造器,表示只在类内部使用,亦指单例的实例只能在单例类内部创建
private LHanDanli(){}
//定义一个公共的公开的方法来返回该类的实例,由于是懒汉式,需要在第一次使用时生成实例,所以为了线程安全,使用synchronized关键字来确保只会生成单例
public static synchronized LHanDanli getInstance(){
if(dl == null){
dl = new LHanDanli();
}
return dl;
}
}

双重判断

不用每次获取对象都加锁
volatile 屏蔽虚拟机代码优化(代码执行顺序),运行效率会成问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class SLHanDanli {
private static volatile SLHanDanli dl = null;
private SLHanDanli(){}
public static SLHanDanli getInstance(){
if(dl == null){
synchronized (SLHanDanli.class) {
if(dl == null){
dl = new SLHanDanli();
}
}
}
return dl;
}
}
`

饿汉

加载类内就实例化

常用语法

1
2
3
4
5
sudo  service docker status

sudo service docker stop

sudo service docker start

搜索

1
2
docker search Python

拉取

1
2
docker pull python:2.7

查询

镜像 image

1
2
docker images

容器 container

1
2
3
4
docker ps  #run container

docker ps -a #all container

日志
1
2
3
4
docker logs -f  <container or id>


❯ docker logs -f --tail 10 jenkins
  • -f--follow 选项表示跟随日志输出,即持续显示新的日志条目。
  • -t--timestamps 选项会在每条日志前添加时间戳,以便于追踪日志的时间顺序。

--tail 参数用于限制返回的日志行数,只显示最新的 N 条日志记录

容器信息
1
2
3
4
5
6
7
docker inspect  <id>

#查看指定信息
docker inspect <id> --format '{{.Args}}'

docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID

sed替换查找

参数

1
2
3
sed [options] 'command' file(s) 

sed [options] -f scriptfile file(s)

g 表示行内全面替换。 global 全局
p 表示打印行。 P 打印模板第一行
r 读文件
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端
w 表示把行写入一个文件。
x 表示互换模板块中的文本和缓冲区中的文本。
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记元字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

  • 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
    [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
    [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
    (..) 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。
    & 保存搜索字符用来替换其他字符,如s/love/&/,love这成love
    < 匹配单词的开始,如:/\ 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
    x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
    x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
    x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

批量替换

把目录下所有格式文件内容进行批量替换

1
sed -n "s#$src#$dest#g"p `grep $src -rl --include=\*.{yaml,md} $path`

扫描path路径对应格式的文件,把src替换成dest,

sed

-n p 结合打印改变内容,不执行变更

grep

-r 表示查找当前目录以及所有子目录

-l 表示仅列出符合条件的文件名

–include=”*.[ch]” 表示仅查找.c、.h文件

上面不适用大多数情况,推荐下面

–include=*.{yaml,md}

载入天数...载入时分秒... ,