1、git常用代码
git add. 将文件放入暂缓区
git config 配置git信息
git commit 提交内容
git diff -查看对文件的修改情况
git init 创建一个新的仓库
git checkout -b 分表名 创建分支
2. 如何解决git冲突
识别冲突文件
对文件进行修改
git add.放入缓冲区
git commit 提交文件
3.如果发现一个分支是否被合并了?
git branch -merged 返回已经合并到当前分支的分支列表
git branch - no - merge 返回还没有合并的分支列表
4.git remote 和git clone 什么的区别
git remote 是在你的git配置中创建了一个条目,指定了一个特定URL的名称,git clone 过复制位于该URL的现有仓库来创建一个新的git仓库。
5.git的使用规范
在开发动手之前,要git -pull一下,防止有人晚上提交了代码,和版本不一致
在本地开发好后,git add . -----> git commit -m “xx” 然后,再使用一次git pull,拉取远程仓库代码过来比对,防止你开发过程中,有人又提交了代码。如果有冲突就合并,没有就继续下一步。
此时就可以git push了,这样操作能最大程度减少代码冲突或者代码覆盖的情况。
6.怎么处理冷热数据
关于冷热数据,我们可以使用三种方式,一种是业务处理,针对问题处理简单,并且不是根据时间划分的。
通过binlog进行,,针对问题处理复杂,并且不是根据时间划分的。
通过定时任务,可以将冷热数据。
然后关于热数据的预热则是用过redis存放。
7.Nacos和Eurake都可以用作服务发现,他们有啥区别
Nacos支持AP,CP,但是Eruck只支持AP.
Nacos是长连接、Eurake是短连接
Nacos client 通过心跳上报方式告诉 nacos注册中心健康状态,默认心跳间隔5秒,nacos会在超过15秒未收到心跳后将实例设置为不健康状态,可以正常接收到请求超过30秒nacos将实例删除,不会再接收请求
Eureka client在默认情况每隔30s想Eureka Server发送一次心跳,当Eureka Server在默认连续90s秒的情况下没有收到心跳, 会把Eureka client 从注册表中剔除,在由Eureka-Server 60秒的清除间隔,把Eureka client 给下线,也就是在极端情况下Eureka 服务 从异常到剔除在到完全不接受请求可能需要 30s+90s+60s=3分钟左右(还是未考虑ribbon缓存情况下)
Nacos服务异常剔除效率高于Eureka
提供了nacos console可视化控制话界面,可以对实例列表进行监听,对实例进行上下线,权重的配置,并且config server提供了对服务实例提供配置中心,且可以对配置进行CRUD,版本管理
仅提供了实例列表,实例的状态,错误信息,相比于nacos过于简单
8.锁粗化
我们任何事情都有个度,有些情况下我们反而希望把很多次锁的请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗。
进化流程是:无锁-偏向锁-轻量级锁-重点级锁
9怎么排查oom
oom:当jvm没有足够的内存为对象分配空间,并且垃圾回收器已没有空间回收时,会发生。
常见的可能是
永久区错溢出、一般出现大量class对象,跳着perSize大小就行
StackOverFlowError 是死循环或者是深度调用,也有可能是栈分片过小 -Xss配置栈空间
jmap -heap查看内存分片分配过小
jmap -histo 查看是否有明显的对象分片过多且没有释放情况。
jmap-dump:导出jvm当前快照,使用jdk和mat等工具
10面向对象的理解
面向过程:直白的理解就是按照事情发生的步骤,一步一步进行,每步用函数实现,使用的时候再依次调用。
面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为看到网上有个例子,将面向对象和面向过程分析的十分生动,很好理解,如下:
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
继承:继承是从已有类得到继承信息创建新类的过程封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
多态分为:(1)编译时多态(2)运行时多态 编译时体现在同名的方法不同参数。 运行时的多态体现在父类子类继承重载方法,父类引用子类对象,执行子类的方法