Git
作用
git config --list
三个区域:工作区,暂存区,本地仓库
git init
git clone url
git status
git add
.gitignore
git diff
git diff staged
git commit -m "commit说明"
git commit -am "commit说明"
git rm 文件
git rm --cached 文件
git mv 旧文件 新文件
git log --shortstat --pretty=oneline --committer
git commit --amend
git checkout -- 文件名
git remote -v
git fetch
git pull 仓库名 远程分支名:本地分支名
git remote rename 旧名 新名
git remote rm 远程仓库名
git tag -a tag名 -m "tag说明"
git push 仓库名 tag号 //推送单个tag
git branch
git checkout
git checkout -b
git branch -d
git push 仓库名 本地分支:远程分支
git fetch 仓库名
git checkout -b 本地分支名 origin/分支名
git push 仓库名 :远程分支
内部原理
commit对象:tree对象,祖先对象,author和committer
tree对象:真实目录
blob对象:真实文件
git add:每个文件计算hash值,得到blob对象,存储在.git
git commit:创建tree对象,也就是项目的目录结构,创建commit对象,存储在.git
分支:分支本质上是指向commit对象的可变指针
git reset --soft
maven
作用
安装目录
.m2目录
依赖:
groupId
artifactId
version
scope-test compile
exclusions
仓库:
本地仓库
远程仓库
settings:
认证
镜像
生命周期和插件
声明和执行
mvn clean
mvn compile
mvn test
mvn package
mvn install
mvn deploy
-D:配置插件参数
-P:激活profile
mybatis
作用:持久层框架,负责数据的访问和操作
配置文件:配置mybatis的行为,包括数据源设置,属性,映射配置文件等
typeHandlers:java类型和数据库类型之间的转换,处理非标准类型
映射文件mapper:
resultMap:是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
insert:映射插入语句
update:映射更新语句
delete:映射删除语句
select:映射查询语句
sql:可重用的SQL代码段
id:在命名空间中唯一标示,用来引用这条语句
parameterType:传入语句的参数类型,可以省略
resultType:返回类的名称,如果是集合,那应该是集合包含的类型,而不是集合本身
resultMap:使用外部的结果集resultMap,resultType和resultMap不能同时使用
映射器dao:绑定映射语句
实体类model:映射sql语句
generator
MyBatis Generator是Mybatis的代码生成器,根据数据库表结构,生成xml映射文件,映射器接口,实体类以及帮助类。
动态sql
spring
作用:Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,通过ioc和aop来简化企业应用程序的开发,它使得开发者只需要关心业务需求
IOC:
控制反转:某一接口具体实现类的选择控制权,从调用类中移除,转交给第三方控制,即由Spring容器通过Bean配置进行控制。
依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
Spring容器启动时,读取应用程序提供的Bean配置信息,并在Spring容器中建立Bean注册表,然后根据注册表实例化Bean,建立Bean和Bean之间的依赖关系,最后将这些Bean放到Bean缓存池中,供外层的应用程序调用。
依赖注入
Spring有两种依赖注入方式:属性注入和构造函数注入;其实就是设置成员变量值
属性注入是指通过setter方法注入Bean的属性。实现类提供默认构造方法、以及相应的set()方法
使用构造函数来完成属性值的注入,Bean要提供带参的构造函数
@Service:对Service实现类进行标注
Spring容器会识别标注,自动将实现类转换为容器管理的Bean
@Autowired
进行依赖注入,@Autowired默认按类型匹配的方式在容器中查找Bean,当有且仅有一个匹配的Bean时,将其注入被标注变量中
@Resource默认按照名称
压测
压测流程
压测目的
方案内容
压测准备
压测注意事项
影子表
QPS
响应时间
并发量
关注的指标:业务,系统,jvm
数据库
基础:
主键
外键:某表的外键另一表的主键
客户端-服务端
连接mysql需要的信息show
show databases
show tables
show columns from 表
show create database 库
show create table 表
show grants增删改查
select distinct 列 from 表 where 条件 order by 列, 列 desc limit 2,3 (distinct作用于所有列,desc只作用于直接位于其前面的列)
insert into 表() values()
update 表 set 列=值 where 条件
delete from 表 where 条件通配符 正则
like '%' 任意个任意字符
like '_' 一个任意字符
\\
正则表达式regexp
'abc'
*重复前一个字符任意次
.一个任意字符
|
[]
[^]
'^$'函数
concat()
trim()
算术运算
left() right() lower() upper() length()
Date() Now()
Abs()
avg() count() max() min() sum()分组
分组 group by having
select from where group by having order by limit;联结
联结:用第一个表的每一行,去匹配第二个表的每一行,如果没有where条件,返回的行数是两个表行数乘积
内部联结inner join:只包含匹配的行
外部联结outer join:包含没有关联的行
select 列 from 表1 left outer join 表2 on 条件
left outer join 除了匹配的行,还包含左边表所有行
right outer join 除了匹配的行,还包含右边所有行表
create table 表名() ;
alter table 表 change 列名 列名 属性;
alter table 表 add 列 属性
alter table 表 drop column 列
drop table 表用户
create user 用户名 identified by 密码
drop user 用户名权限
show grants for 用户名
grant 操作 on 库名.表名 to 用户
revoke 操作 on 库名.表名 from 用户数据类型
date
time
datetime
int
double
varchar事务
数据库事务
start transaction
rollback
四个特性:原子性,一致性,持久性,隔离性
事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
https://www.cnblogs.com/fjdingsd/p/5273008.html锁
https://blog.csdn.net/C_J33/article/details/79487941
共享锁:当一个事务执行select语句时,数据库系统会为这个事务分配一把共享锁
独占锁:当一个事务执行insert、update或delete语句时,数据库系统会自动对SQL语句操纵的数据资源使用独占锁。
独占锁不能和其他锁兼容,如果数据资源上已经加了独占锁,就不能再放置其他的锁了。同样,如果数据资源上已经放置了其他锁,那么也就不能再放置独占锁了。
更新锁:当一个事务执行update语句时,数据库系统会先为事务分配一把更新锁。当读取数据完毕,执行更新操作时,会把更新锁升级为独占锁。索引
https://blog.csdn.net/weiliangliang111/article/details/51333169
作用:通过缩小一张表中需要查询的记录/行的数目来加快搜索的速度。
索引是一种数据结构,存储了这一列的所有值,同时存储了指向表中的相应行的指针
索引使用最常用的数据结构-B-Tree-那么其中的数据是有序的。有序的列值可以极大的提升性能
其它
http thrift
Thrift是一种跨语言的RPC服务协议,采用不同的语言开发客户端代码和服务器端代码,且性能优越。
接口定义描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件
http位于应用层,rpc位于传输层。RPC基于socket,socket基于TCP协议,比http服务少了应用层、表示层、会话层,比http服务快一点。-
垃圾回收
栈:每个线程执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包括局部变量区和操作数栈,用于存放此次方法调用过程中的临时变量、参数和中间结果
堆:堆存放对象
分为新生代、年老代和持久代。新生代分为Eden区、Survivor1区和Survivor2区
新生代垃圾回收
- 大多数新生对象都被分配在Eden区。
- 第一次GC过后Eden中还存活的对象被移到其中一个Survivor1区。
- 再次GC过程中,Eden和Survivor1区中还存活的对象会被移到Survivor2区。
- 重复这个过程
- 经过数次(默认是15次)在两个Survivor区域移动后还存活的对象最后会被移动到老年代。
- 线上问题
- 可测性改进
java
- Arrays.asList方法
1.不能把基本数据类型转化为列表
2.asList方法返回的是数组的一个视图,视图意味着,对这个list的操作都会反映在原数组上
https://www.cnblogs.com/zheyangsan/p/6910476.html - 三元运算符
- switch
接受一个int或char,查找case,匹配就执行,知道break语句。否则,执行default - 异常
声明异常,抛出异常,捕获异常
方法要抛出必检异常,必须在方法头中声明异常
捕获异常:
1.try中某条语句抛出异常,跳过try剩余语句,按顺序匹配catch块
2.匹配上,执行catch块,然后继续执行函数
3.未匹配上,退出本方法,异常传递给调用本方法的方法,继续上面流程 - finally子句
任何情况,finally子句都会执行
try{
}catch() {
}finally {
}
1.try块没有出现异常:执行完try,执行finally,继续
2.try块有异常,被catch捕获:跳过try块其它语句,执行catch,执行finally,继续
3.try块有异常,没有被catch捕获:跳过try块其它语句,执行finally,然后将异常传递给调用本方法的方法 - jdbc原理
jdbc是Java数据库连接技术的简称
JDBC连接数据库的步骤
1.加载驱动(jdbc驱动,用于链接数据库)
2.获取连接对象(url,name,pass)
3.创建命令对象
4.执行sql
5.处理结果集
6.关闭链接 - FileInputStream类与FileReader类的区别
FileInputStream:以字节流方式读取,字节为单位
FileReader:把文件转换为字符流读入,字符为单位
压测平台
数据构造、场景管理、动态调控、过程监控、压测报告
计算机基础
- 协议体系结构由哪几部分组成:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层
- IP地址与硬件地址的区别
- TCP连接建立的过程(三次握手)
- 简要域名解析的过程
1.先在浏览器缓存,本机host文件中查找,如果找到,解析结束
2.主机提出域名解析请求,发送给本地域名服务器
3.本地域名服务器进行查询,缓存中有记录,本地域名服务器就把结果返回
4.如果没查到,本地域名服务器把请求发给根域名服务器
5.跟域名服务器返回结果,或者下一个应查询的域名服务器地址 - 浏览器输入url之后发生了什么
https://www.cnblogs.com/tisikcci/p/5866753.html
1.DNS域名解析
2.浏览器与网站服务器建立连接(三次握手)
3.请求和传输数据
4.浏览器渲染页面 - 死锁的四个必要条件
1.互斥条件:一个资源每次只能被一个进程使用
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺
4.循环等待条件:若干进程间,形成一种头尾相接的循环等待资源关系
http协议
- http
超文本传输协议,基于TCP/IP通信协议来传递数据的 - 请求结构
请求报文:方法+URI+版本+首部字段+主体 - 响应接口
响应报文:版本+状态码+原因短语+首部字段+主体 - 缺点
1.不加密
2.不验证通信方身份
3.无法验证报文的完整性
加密,证书,签名
HTTP+加密+认证+完整性保护=HTTPS - 方法
1.get:请求数据
2.post:上传数据
3.put:上传文件
4.delete:删除文件
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp - get post区别
1.数据长度的限制,
get,URL 的长度是受限制的(URL 的最大长度是 2048 个字符)
post,无限制
2.安全性
get,所发送的数据是 URL 的一部分,所有人可见
post,数据不会显示在 URL 中 - 状态码
1.2xx:成功,请求正常处理完毕
2.3xx:重定向,
3.4xx:客户端错误,服务端无法处理请求
4.5xx:服务端错误,服务端处理请求出错
400:请求语法错误
401:需要认证信息
403:没有权限
404:资源不存在
500:服务器内部错误
502:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
504:网关超时