Zzzang
发布于 2019-08-16   9人围观   0条评论

1.0 安装kong + postgresDB

  1. docker network create kong-net
  1. docker pull postgres:latest
  1. docker run -d --name kong-database \
  2. --network=kong-net \
  3. -p 5432:5432 \
  4. -e "POSTGRES_USER=kong" \
  5. -e "POSTGRES_DB=kong" \
  6. postgres:latest

压缩版:docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" postgres:latest

docker pull kong:latest

  1. docker run --rm \
  2. --network=kong-net \
  3. -e "KONG_DATABASE=postgres" \
  4. -e "KONG_PG_HOST=kong-database" \
  5. kong:latest kong migrations bootstrap

压缩版:docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" kong:latest kong migrations bootstrap

  1. docker run -d --name kong \
  2. --network=kong-net \
  3. -e "KONG_DATABASE=postgres" \
  4. -e "KONG_PG_HOST=kong-database" \
  5. -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  6. -e "K
查看更多
发布于 2019-07-17   5人围观   0条评论

fastdfs-springboot-starter

未完成 未测试 ↓ 仅供参考

1.pom.xml add autoconfigure

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-autoconfigure</artifactId>
  4. <version>1.5.10.RELEASE</version>
  5. </dependency>

2.配置映射参数实体

  1. @ConfigurationProperties(prefix = "auto")
  2. public class AutoProperties{
  3.     private String msg = "default";
  4.     public String getMsg() {
  5.         return msg;
  6.     }
  7.     public void setMsg(String msg) {
  8.         this.msg = msg;
  9.     }
  10. }
查看更多
发布于 2019-07-17   3人围观   0条评论

season/fastdfs https://blog.csdn.net/weixin_43683052/article/details/84792338
morunchang/fastdfs https://www.jianshu.com/p/8ed3bbc2c9f7

常用的分布式文件存储系统
1.FastDFS(适合存储小文件)
. . .> Tracker 文件跟踪
. . .> Storage 文件存储 (组:storage名称一致,为同一组; 同一组,文件相同,文件备份; 不同组:文件不相同,主要做负载)
title
.
2.Hdfs(适合存储大文件)
3.gfs(适合存储大文件)

morunchang版fastdfs 镜像 start:15...title

  1. docker pull morunchang/fastdfs
  2. ###运行tracker port:22122
  3. docker run -d --name DFS-tracker-01 --net=host morunchang/fastdfs sh tracker.sh
  4. ###运行storage port:23000/nginx_port:8080
  5. docker run -d --name DFS-storage-02 --net=host -e TRACKER_IP=[本机ip]:22122 -e GROUP_NAME=img morunchang/fastdfs sh storage.sh
  6. ###开放[安全组 /防火墙]端口
  7. firewall-cmd --zone=public --add-port=22122/tcp --permanent
  8. firewall-cmd --reload

springboot 2.0 fastdfs-client

1.pom.xml

  1. <dependency>
  2. <groupId>com.github.tobato</groupId>
  3. <artifactId>fastdfs-client</artifactId>
  4. <version>1.26.2</version>
  5. </dep
查看更多
发布于 2019-07-12   3人围观   0条评论

查看文件 过滤排斥注释

cat redis.conf |grep -Ev '^$|#'

Docker 按条件删除镜像

  • 没有打标签
    docker rmi docker images -q | awk '/^<none>/ { print $3 }'
  • 镜像名包含关键字
    //其中doss-api为关键字
    docker rmi --force docker images | grep [keyword] | awk '{print $3}'
查看更多
发布于 2019-07-05   28人围观   0条评论

MongoDB v4.0 命令

官方文档 > 点这里 <

操作系统库

  1. #操作管理员库
  2. use admin
  3. #鉴权
  4. db.auth("root","admin");
  5. #用户查看(格式美化)
  6. db.system.users.find().pretty();
  7. #新增用户
  8. db.createUser({
  9. user: 'root1',
  10. pwd: 'admin1',
  11. roles: [ { role: "dbOwner", db: "yapi" }]
  12. });
  13. #更新用户信息/密码/权限
  14. db.updateUser("root1",{
  15. pwd: "admin2",
  16. roles:
  17. [{
  18. role: "root",
  19. db: "admin"
  20. },{
  21. role: "userAdminAnyDatabase",
  22. db: "admin"
  23. },{
  24. role: "readWriteAnyDatabase",
  25. db: "admin"
  26. },{
  27. role: "dbAdminAnyDatabase",
  28. db: "admin"
  29. }]})
  30. #删除数据库所属用户
  31. db.dropUser("root1");

操作自定义库

  1. #操作自定义库
  2. use persionalDB
  3. #鉴权
  4. db.auth("user","pwd");
  5. #创建数据库所属用户
  6. db.createUser({
  7. user: 'username1',
  8. pwd: 'password1',
  9. roles: [ { role: "dbOwner", db: "yapi" }]
  10. });
  11. #更新用户信息/密码/权限
  12. db.updateUser("username1",{
  13. pwd: "NEW pass",
  14. roles:
  15. [{
  16. role: "root",
  17. db: "admin"
  18. },{
  19. role: "userAdminAnyDatabase",
  20. db: "admin"
  21. },
查看更多
发布于 2019-06-27   8人围观   0条评论

注解使用 Redis分布式锁的实现方式

注1:动态传参数

扩展文档1:注解方式集成redis分布式锁 - xiewenfeng520的CSDN博客
扩展文档2:redis 分布式锁 - 博客园

Aop类自行定义实现

方式一:
title

title

方式二: 注解实现动态参数,细化锁粒度
title

title

查看更多
发布于 2019-06-24   12人围观   0条评论

redis 的6种过期策略

  • volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
  • volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
  • allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
  • allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
  • no-enviction(驱逐):禁止驱逐数据

title

IDEA两种设置SpringBoot配置启动参数方式

Idean的Edit configurations中编辑应用,
第一种,配置虚拟机参数VM options时:使用 -Dxxx.yyy.key=value 格式设置参数。
第二种,配置程序参数program arguments时,使用 --xxx.yyy.key=value 格式,也能设置程序参数。
title

查看更多
发布于 2019-05-21   14人围观   0条评论

集群概念

erlang 通过统一cookie 进行集群通讯 (故:文件.erlang.cookie为核心基础配置)
端口讲解:
5672 程序默认使用端口
15672 控制台端口 (需安装rabbitmq管理插件 rabbitmq-plugins enable rabbitmq_management)

1.Erlang集群 统一配置cookie

读取(拷贝)其中一个节点的cookie, 并复制覆盖到其他节点node_2/3/4...(节点之间通过cookie确定相互是否可通信)。
修改只读权限为读写也可

  • chmod 600 .erlang.cookie
  • scp -P [端口] .erlang.cookie [root/其他用户名]@[ip]:/root

推荐复制主节点node1的cookie到其他节点下覆盖原有cookie
cookie存放在 /var/lib/rabbitmq/.erlang.cookie$HOME/.erlang.cookie
设置好之后重启rabbitmq即可 rabbitmqctl [stop/start]_app

原理Tips:rabbitmqctl首先会启动erlang节点,然后会从erlang分布式系统尝试连接RabbitMQ,
而这时候需要erlang cookie和合适的节点名称,erlang节点通过交换作为秘密令牌的erlang cookie以获得认证,
.erlang.cookie中存储的就是此令牌信息,所以集群所以erlang节点的erlang.cookie令牌信息必须一致。
由于Rabbitmq的集群依赖erlang的集群,所以需要构建erlang集群,erlang集群之间是通过magic cookie实现的,这个cookie存放在$HOME/.erlang.cookie,随便选取一个节点的cookie复制到另外两个节点使三台保持一致

2.逐个启动节点

rabbitmq-server -detached

3.查看各节点的状态:

rabbitmqctl status, rabbitmq

查看更多
SQL    发布于 2019-05-20   20人围观   0条评论

转载----原创: 58沈剑 架构师之路 2017-07-16
[这几天在写索引,想到一些有意思的TIPS,希望大家有收获。]

一、一些常见的SQL实践

(1)负向条件查询不能使用索引

  • select * from order where status!=0 and stauts!=1

not in/not exists都不是好习惯
可以优化为in查询:

  • select * from order where status in(2,3)

(2)前导模糊查询不能使用索引

  • select * from order where desc like '%XX'

而非前导模糊查询则可以:

  • select * from order where desc like 'XX%'

(3)数据区分度不大的字段不宜使用索引

  • select * from user where sex=1

原因:性别只有男,女,每次过滤掉的数据很少,不宜使用索引。
经验上,能过滤80%数据时就可以使用索引。对于订单状态,如果状态值很少,不宜使用索引,如果状态值很多,能够过滤大量数据,则应该建立索引。

(4)在属性上进行计算不能命中索引

  • select * from order where YEAR(date)< = '2017'

即使date上建立了索引,也会全表扫描,可优化为值计算:

  1. select * from order where date < = CURDATE()
  2. #或者:
  3. select * from order where date < = '2017-01-01'

二、并非周知的SQL实践

(5)如果业务大部分是单条查询,使用Hash索引性能更好,例如用户中心

  • select * from user where uid=?
  • select * from user where login_name=?

原因:
B-Tree索引的时间复杂度是O(log(n))
Hash索引的时间复杂度是O(1)

(6)允许为null的列,查询有潜在大坑

单列索引不存null值,复合索引不存全为null

查看更多
发布于 2019-05-16   10人围观   0条评论

基本网络拓扑图

title

1. 准备阶段。配置云主机,模拟简单的ssh登录爆破入侵行为

  • 步骤一:登录阿里云管理控制台。打开云主机。
  • 步骤二:打开VMware,将kali虚拟机的网卡模式设置为NAT,打开kali。打开终端,测试ping云主机,需成功ping通,如下图所示
    title
  • 步骤三:通过SSH访问云主机,通过root账户登录云主机,前两次输入错误的密码,第三次输入正确的密码,并成功访问,如下图所示
    title
  • 步骤四:创建新用户hack,如下图所示
    title
  • 步骤五:为新用户设置密码“123456”,如下图所示
    title
  • 步骤六:再次打开一个终端,使用hack用户连接云主机,并输入错误的密码,如下图所示
    title

自行配置hack账户的其他重要权限,或添加其他的账户,如空密码账户等等。并尝试远程登录使用。

2. Linux云主机ECS应急响应排查

1)账号安全

  • 步骤一:查看账号,尝试找出异常账号,并分析账号的权限,并记录在实操报告中,如下图所示
    title
  • 步骤二:查看影子文件,并分析账号密码的设置情况,并记录在实操报告中,如下图所示
    title
  • 步骤三:使用下列命令,进一步分析账号信息,并记录在实操报告中,
    • who 查看当前登录用户(tty本地登陆 pts远程登录)
    • w       查看系统信息,想知道某一时刻用户的行为
    • uptime 查看登陆多久、多少用户,负载who 查看当前登录用户(tty本地登陆 pts远程登录)
    • w       查看系统信息,想知道某一时刻用户的行为
    • uptime 查看登陆多久、多少用户,负载
      title

2)入侵排查:

  • 步骤一:查询特权用户(特权用户,uid为0)
    [root@hostserver ~]# awk -F: '$3==0{print $1}' /etc/passwd
    title
  • 步骤二:查询可以远程登录的帐号信息
    [root@hostserver ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
  • 步骤三:除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
    [root@localhost ~]# more /etc/sud
查看更多