0%

Mongo使用shell操作

创建数据库

1
use DATABASE_NAME

如果数据库不存在,则会创建数据数据库,否则会切换到该数据库

查看数据库

1
show dbs

创建用户

1
2
3
4
# root用户
db.createUser({user:"root",pwd:"root",roles:["root"]})
#读写权限 readWrite表示读写权限,对yapi有读写权限,对admin有读权限
db.createUser({user:"work",pwd:"work",roles:[{role:"readWrite",db:"yapi"},{role:"read",db:"admin"}]})

MongoDB 数据库默认角色

角色描述 角色标识
数据库用户角色 read、readWrite
数据库管理角色 dbAdmin、dbOwner、userAdmin
集群管理角色 clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色 backup、restore
所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
超级用户角色 root

查看该数据库下用户

1
show users

删除用户

1
db.dropUser("work")

修改用户密码

1
db.updateUser("work",{pwd:"123456"})

登录

1
db.auth("work","work")
阅读全文 »

MongoDB安装

导入包管理系统使用的公钥。

在终端上,发出以下命令以从https://www.mongodb.org/static/pgp/server-3.2.asc导入MongoDB公共GPG密钥:

1
wget -qO - https://www.mongodb.org/static/pgp/server-3.2.asc | sudo apt-key add -

该操作应以响应OK

但是,如果收到指示gnupg未安装的错误,则可以:

  1. gnupg使用以下命令安装及其所需的库:

    1
    sudo apt-get install gnupg
  2. 安装完成后,重试导入密钥:

    1
    wget -qO - https://www.mongodb.org/static/pgp/server-3.2.asc | sudo apt-key add -
阅读全文 »

jinfo报错

1
2
jinfo -flags 23765
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 23765: Operation not permitted

这是因为新版的Linux系统加入了 ptrace-scope 机制. 这种机制为了防止用户访问当前正在运行的进程的内存和状态, 而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统, 默认情况下不允许

临时开启

1
sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope

使用这种方法当系统重启的时候就会失效

永久开启,可以修改/etc/sysctl.d/10-ptrace.conf文件

1
kernel.yama.ptrace_scope = 0

升级nodejs版本

前段时间部署一个开源项目,结果服务器上的nodejs版本与开源项目所需的版本不符,故而需要进行nodejs升级

有两种方式

方式一:使用n进行nodejs升级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 清除npm缓存
npm cache clean -f

# 全局安装n
npm install -g n

# 安装对应版本
n v7.6.0

# 切换使用版本(和安装对应版本命令一样)
n 7.6.0

# 删除指定版本
n rm 5.9.1

# 如果不想切换默认环境,可以使用指定版本执行脚本
n use 7.6.0 app.js

这里可能会有修改之后版本没生效的情况,是因为node的默认安装目录和n安装的目录不同导致的,可以指定N_PERFIX变量来修改n的默认node安装目录

阅读全文 »

编解码器

数据在网络中传输时都是二进制字节码数据,在发送数据时需要编码,接收数据时需要解码,所以就需要解码器(decoder)和编码器(encoder)来完成该操作

encoder编码器是将指定的消息对象转为二进制流,负责处理出站数据;decoder解码器是将二进制流转为指定的消息对象,负责处理入站数据

Netty本身提供了一些编解码器

  • StringEncoder、StringDecoder 对字符串数据进行编解码
  • ObjectEncoder、ObjectDecoder 对java对象进行编解码

Netty本身提供的ObjectEncoder、ObjectDecoder 底层使用的是Java序列化技术,而Java序列化技术本身效率不高,序列化后太大,且无法跨语言,所以可以使用Protobuf

编解码器本身也是ChannelHandler

阅读全文 »