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

升级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

# 升级nodejs到指定版本
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安装目录

阅读全文 »

数据仓库的概念

数据仓库提供集成化的和历史化的数据,它集成种类不同的应用系统,数据仓库从事物发展和历史的角度来组织和存储数据,以提供信息化和分析处理之用,是面向主题的、集成的、具有时间特征的、稳定的数据集合,用以支持经营管理中的决策制定过程

特征

  • 数据仓库的数据是面向主题的。传统数据库是面向应用而设计的,它的数据为了处理具体应用而组织到一起的。而主题是一个在较高层次将数据进行归类的标准,每个主题基本对应一个宏观的分析领域,满足该领域分析决策的需要。因此,主题的抽取是按照分析的要求来确定的,数据在进入数据仓库之前必须要经历加工和集成,将原始数据结构做一个从面向应用到面向主题的转变
  • 数据仓库的数据是集成性的。数据仓库中的数据来自于多个应用系统,要将这些数据统一到数据仓库的数据模式中来
  • 数据仓库的数据具有时间特征。数据仓库随着时间变化要不断增加新的内容,将数据库的数据变化追加到数据仓库中
  • 数据仓库的数据是相对稳定的。数据仓库是随时间而变化的,但又是相对稳定的。这种稳定是指数据仓库中的数据主要供企业决策分析之用,决策人员所涉及的数据操作主要是数据查询,一般情况下并不进行数据修改
阅读全文 »

URL访问工具

有时候想在命令行下通过http访问接口/网页,可以使用curl来进行操作

发起请求

1
curl www.baidu.com

会返回网页内容

参数选项

-i参数

使用-i参数,会返回响应header

1
curl -i www.baidu.com

-I参数

使用-I参数,只会返回响应header

1
curl -I www.baidu.com
阅读全文 »

SpringBoot打成jar包的结构

springboot通常会打成jar包,然后使用java -jar来进行执行,那么这个jar包里的结构是什么样的呢

springboot打成jar包的结构

其中

阅读全文 »

搜索引擎重要概念

倒排索引

倒排索引(inverted index),也称为反向索引,是搜索引擎中最常见的数据结构,几乎所有的搜索引擎都会使用到倒排索引,它将文档中的词作为关键字,建立词与文档的映射关系,通过对倒排索引的检索,可以根据词快速获取包含这个词的文档列表,这对于搜索引擎来说至关重要

存储的结构大概是这样的

单词 文档ID
this 1,2,3
people 5
love 13
阅读全文 »

ConcurrentSkipListMap

底层使用的是SkipList结构,也就是跳表

SkipList

SkipList让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过以时间换空间,在每个节点中增加了向前的指针,在插入、删除、查找时可以忽略一些不可能涉及到的节点,从而提高效率

SkipList具备如下特性:

  • 由很多层结构组成,level是通过一定的概率随机产生的
  • 每一层都是一个有序的链表,默认是升序,也可以根据创建映射时所提供的Comparator进行排序,具体取决于使用的构造方法
  • 最底层(Level 1)的链表包含所有元素
  • 如果一个元素出现在Level i 的链表中,则它在Level i 之下的链表也都会出现
  • 每个节点包含两个指针,一个指向同一链表中的下一个元素,一个指向下面一层的元素
跳表搜索
阅读全文 »

Feign显示fallback异常原因

我在最一开始使用Feign的时候,是使用FallBack类去实现的FeignClient接口,就像这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@FeignClient(name = "SPRINGCLOUD2-PROVIDER",contextId = "DeptClient",
fallback = DeptClient.DeptClientFallBack.class)
public interface DeptClient {

@GetMapping(value = "/dept/get/{id}")
CommonResult<Dept> get(@PathVariable("id") long id);

@GetMapping("/timeout")
String timeout();

@Component
class DeptClientFallBack implements DeptClient{

@Override
public CommonResult<Dept> get(long id) {
return null;
}

@Override
public String timeout() {
return null;
}
}
}

但是这样的话,我怎么查看是因为什么原因造成的fallback呢,这种方法肯定是不行的

阅读全文 »