小参林八股

本文介绍了git的基本操作如添加、配置、提交和分支管理,还涵盖了解决git冲突、git与远程仓库的关系、git使用规范、冷热数据处理、Nacos与Eureka的区别、锁粗化策略以及JavaOOM排查和面向对象编程的理解。
摘要由CSDN通过智能技术生成

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)运行时多态 编译时体现在同名的方法不同参数。 运行时的多态体现在父类子类继承重载方法,父类引用子类对象,执行子类的方法

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值