05-day02品优购
一.dependencyManagement:依赖管理
作用不是让所有的子项目依赖这里的配置,不是配置jar包的依赖关系,而是配置锁定jar包的版本号
二.classpath 和 classpath* 的区别
classpath:加载本项目下的指定目录的配置文件
classpath*:加载本项目下和本项目所依赖的所有项目的指定目录下的配置文件
三.soa架构:也叫分布式架构,给互联网项目使用
互联网项目主要解决的三高问题:高并发、高性能、高可用
定义:soa架构就是分布式架构,是一种设计,主要实现就是将传统项目中的一个模块拆分成一个一个项目;
这样可以降低模块间代码的耦合度,利于维护扩展,利于维护。
优点:低耦合,利于扩展,利于维护
缺点:结构复杂,对于小型项目成本比较高
四.dubbo
1) 什么是dubbo:dubbo是阿里巴巴公司产生的一个rpc实现框架
dubbox是当当网维护的dubbo代码的版本
2) dubbo作用:跨项目调用方法,例如从A项目中的controller调用B项目中的service方法
3) dubbo同类型的技术有哪些:
rpc协议实现框架:dubbo、dubbox、springCloud
优点:传输效率快;
缺点:controller 和 service 两个项目必须是java语言实现
五.idea 将项目打包成.war包,将来可以放到tomcat 中运行
1.方式1,直接用maven的package命令,可以在maven视图上点击项目的Lifecycle中的package 命令
方式2.参考博客:https://blog.csdn.net/zhang135687/article/details/84101524
六.linux 下安装zookeeper
1) 解压zookeeper压缩包: sudo tar -zxvf xxxxxx.zookeeper.tar.gz -C ./
2) copy配置文件:进入解压目录后,sudo cp conf/zoo_simple.cfg zoo.cfg
3) 启动zookeeper:sudo ./bin/zkServer.sh start
4) 查看启动状态:sudo ./bin/zkServer.sh status
5) 关闭zookeeper:sudo ./bin/zkServer.sh stop
注意:1. 原来从目前的最新版本3.5.5开始,带有bin名称的包
才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包
里面是只是源码的包无法直接使用
2. zookeeper需要java运行时环境,需要先安装jdk,并配置环境变量,如果设置好了启动报错:not set JAVA_HOME.....,
这时可以尝试修改zkServer.sh 中手动添加export JAVA_HOME=jdk路径
七.ubuntu下防火墙设置
1.查看防火墙状态 sudu ufw status
2.开启防火墙 sudo ufw enable
3.关闭防火墙 sudo ufw disable
八.mybatis 逆向工程
mybatis官方推出的逆向工程,用来连接数据库根据表结构生成pojo实体类,生成映射文件和接口文件,但只有单表的增删改查;
如果多表增删改查还是需要自己手动写。
注意:mybatis生成这些文件的方式是追加而不是覆盖,如果想重新生成需要将原来文件全部删除再重新运行。
九.在npm项目命令中安装插件
npm install --save xxx : npm 安装插件
--save 参数是默认将插件配置到package.json当中
十.jwt (json web token)
十一.docker 常用命令
docker run:创建并启动容器
-di:开后台进程运行容器
--name:指定容器名称(不应重复)
-p:指定端口映射 当前端口:容器端口
-e: 指定容器环境变量
docker rm 容器id/容器名 :根据容器id/容器名 删除容器
docker images : 查看下载的所有镜像
docker search 镜像名 : 去中央仓库搜索镜像
docker pull 镜像名 :下载镜像
docker ps: 查看当前启动的容器
docker ps -a:查看所有创建的容器
docker start 容器id/容器名称 : 启动容器
docker restart 容器id/容器名称 : 重启容器
docker stop 容器id/容器名称 : 停止容器
docker logs 容器id/容器名称 : 查看容器的log
十二.分布式id生成器
雪花算法(时间戳+机器id+...)
十三.SpringCache spring自带的缓存框架
十四.monogo 命令
1.选择和创建数据库
use 库名 :如果库名已经存在则直接使用,如果不存在则创建再使用
例如:use articledb 创建一个articledb数据库
2.插入文档:在当前使用的库中操作
db.集合名.insert(json)
例如:db.article.insert({name:"tom",age:NumberInt(18)});
3.查询
查询所有:db.集合名.find()
例如:db.article.find();
条件查询:db.集合名.find(json类型的查询条件)
例如:查询文章访问数为1023的文档
db.article.find({visits:NumberInt(1023)})
4.指定查询条数:返回查询结果的前n条文档
db.集合名.find(条件).limit(查询条数)
例如:db.article.find().limit(2)
5.修改文档:修改整条记录
db.集合名.update(查询json,修改json);
例如:修改id为999的文档整体为{name:"满分作文"}
db.article.update({_id:"999"},{name:"满分作文"});
6.局部修改:只改变修改的字段,其他字段不变
db.集合名.update(查询json,{$set:修改json})
例如:修改id为999的文档name字段为"满分作文"
db.article.update({_id:"999"},{$set:{name:"满分作文"}});
7.删除文档
db.集合名.remove([查询json]) 条件为空时表示删除所有
例如:删除id为999的文章
db.article.remove({_id:"999"})
删除所有article文档:db.article.remove({});
8.统计条数
db.集合名.count([查询json]) 条件为空时表示统计所有
例如:
查询所有数量:db.article.count({});
查询文章访问数大于1000的数量:db.article.count({visits:{$gt:1000}});
9.模糊查询:本质是调用find方法,查询条件为正则表达式
db.集合名.find(带正则表达式的查询条件)
例如:查询content属性中包含手机的文档
db.article.find({content:/手机/});
查询content属性以"完美"结尾的文档
db.article.find({content:/完美$/});
查询content属性以"2020"开头的文档
db.article.find({content:/^2020/});
10.查询中的逻辑条件
大于:$gt : db.article.find({visits:{$gt:1000}});
大于等于:$gte : db.article.find({visits:{$gte:1000}});
小于:$lt : db.article.find({visits:{$lt:1000}});
小于等于:$lte : db.article.find({visits:{$lte:1000}});
不等于:$ne : db.article.find({visits:{$ne:1000}});
包含:$in : db.article.find({_id:{$in:[1000,2000]}});
不包含:$nin : db.article.find({_id:{$nin:[1000,2000]}});
11.条件连接
$and : 交集条件 :
例如 : 查询id在等于1或等于2并且visits大于1000的文档
db.article.find({$and:[{_id:{$in:["1","2"]}},{visits:{>:1000}}]});
$or : 并集条件
例如 : 查询id在等于1或等于2或者visits大于1000的文档
db.article.find({$or:[{_id:{$in:["1","2"]}},{visits:{>:1000}}]});
12.列值增长
$inc
可以使某个文档的字段在每次查询的时候自增,是monoge的一个快捷功能
例如:db.article.update({_id:"1"},{${inc:{visits:NumberInt(1)}}});
Last updated
Was this helpful?