当前位置: 首页 > news >正文

Linuxgit入门设计模式(常考点)

Git

学习资源:Git教程 - 廖雪峰的官方网站

摸清 Git 的门路,就靠这 22 张图

git init 初始化仓库

git clone 克隆仓库

git config user.name   查看用户名 

git config user.email   查看邮箱

git add  添加到暂存区

git commit -m "成功添加2个文件“  添加到本地仓库

git status  查看当前仓库以及文件的状态

git diff 查看文件具体是怎么修改的

git reset 回退到上个版本  --hard已提交状态,--soft未提交状态   +前7位

git checkout -- a.txt   让这个文件回到最近一次git commitgit add时的状态

git rm a.txt  暂存区删除,如果commit就真的删了

git  log  看日志,按q退出

git remote add  ogrigin 首次添加远程仓库

git remote  set-url ogrigin  重写设置远程仓库

git clone 直接clone远程仓库的东西         

git branch dev  创建分支dev

git checkout dev 切换到分支dev

git branch  查看当前分支

git merge dev   dev合并到当前分支上

git branch -d dev  删除dev分支

git switch -c feacher   切换到分支feacher(第二种写法)

git switch master  切换到master分支(第二种写法)

git merge --no-ff    保留合并分支历史

git stach 暂时存储状态

git stach list 查看存储列表

git stach apply stach@{0}   恢复指定的stach

git stash drop stash@{0}    删除编号为 0 的 stash

git cherry-pick  获取另一个分支上某次更改的代码

git push <远程仓库名称> <分支名>

git pull 拉取

git fetch origin  拉取分支列表

git checkout -b dev origin/dev  创建dev分支并与origin/dev绑定

git branch -- set-upstream-to <branch-name> origin/<branch-name>   本地与远程分支绑定

git tag <tagname>  打标签

idea实操流程:

先clone远程仓库代码,然后打开idea,基于master新建分支(比如feature)。

写完后push and commit (同名远程分支)  ,如果冲突了可以merge(此刻会把你本地的代码也更新)。

如果merge冲突了会弹窗,则沟通后选择一个使用,再push。

如果远程master更新了先本地master更新(常说的先pull一下),再切换会自己的分支将master代码merge过来。(有冲突再解决)

面试题:

git熟练吗?

git是版本控制工具,通常分为工作区,本地仓库、暂存区、远程仓库

我们开发首先用git pull拉取远程仓库代码,然后开发完用git  add将代码存到暂存区,git  commit提交到本地仓库,git push推送到远程仓库。

如果想撤回commit的修改可以使用git reset 命令撤回,如果想撤回push的修改,那我们再git reset 后再git push --force强制修改即可回退。

rebase和merge的区别

Rebase(变基)是将一个分支上的提交逐个地应用到另一个分支上,使得提交历史变得更加线性。

Merge(合并)是将两个分支上的代码提交历史合并为一个新的提交。在执行merge时,Git会创建一个新的合并提交,合并后的历史会保留每个分支的提交记录

不过我们通常还是用merge,它的历史记录更加直观一些

git冲突了怎么解决

我们用git status查看冲突状态,然后修改冲突文件,再add commit即可

Linux

常用命令

  • top 用来查看系统资源
  • ps -ef | grep java 查看 Java 进程
  • netstat  -nap 查看网络连接
  • ping 测试网络连通性
  • chmod 修改文件权限
  • kill 终止进程
  • df 查看磁盘空间
  • mkdir 创建目录、rm 删除文件、cp 复制文件、mv 移动文件
  • zip 压缩文件、unzip 解压文件等等这些。

文件操作

  • ls:列出目录内容。ls -l显示详细信息,ls -a显示隐藏文件。
  • cd:更改当前目录。cd ..回到上级目录,cd ~回到用户的主目录。
  • pwd:显示当前工作目录的完整路径。
  • mkdir:创建新目录。
  • find:在目录树中查找文件。find /directory/ -name filename
  • cat:查看文件内容
  • rm 文件名/目录名

    删除文件/目录

    cp 文件名 目录名

    复制文件到指定目录

    mv 文件名 目录名

    移动文件到指定目录

    vim 或 vi 文件名

    编辑文件

系统操作

  • ps:显示当前运行的进程。ps aux显示所有进程。
  • top:实时显示进程动态。
  • kill:终止进程。kill -9 PID强制终止。
  • df:显示磁盘空间使用情况。df -h以易读格式显示

网络管理

  • ping:检查与远程服务器的连接。
  • ifconfig:显示网络接口的配置信息。
  • netstat:显示网络连接、路由表和网络接口信息

压缩和解压

  • tar:打包或解包.tar文件。tar cvf archive.tar files打包,tar xvf archive.tar解包。
  • gzip / gunzip:压缩或解压.gz文件。
  • zip / unzip:压缩或解压.zip文件

设计模式

参考资料:柏码知识库 | 设计模式

单例:只有一个实例对象

饿汉式,在一开始类加载时就创建好了

public class Singleton {private final static Singleton INSTANCE = new Singleton();   //用于引用全局唯一的单例对象,在一开始就创建好private Singleton() {}   //不允许随便new,需要对象直接找getInstancepublic static Singleton getInstance(){   //获取全局唯一的单例对象return INSTANCE;}
}

懒汉式,在方法中进行的初始

public class Singleton {private static volatile Singleton INSTANCE;   //在一开始先不进行对象创建private Singleton() {}   //不用多说了吧public static Singleton getInstance(){   //将对象的创建延后到需要时再进行if(INSTANCE == null) {    //如果实例为空,那么就进行创建,不为空说明已经创建过了,那么就直接返回synchronized(Singleton.class){// 第二次校验:防止多线程等待锁时,已有线程创建实例if (INSTANCE == null) {INSTANCE = new Singleton(); // volatile 禁止指令重排,避免拿到未初始化的实例}}}return INSTANCE;}
}

简单工厂模式:通过工厂来获取不同的产品,但不满足开放封闭的设计原则,增添功能时要改源码

public class FruitFactory {public static Fruit getFruit(String type) {switch (type) {case "苹果":return new Apple();case "橘子":return new Orange();default:return null;}}
}

工厂方法模式:通过创建一个抽象工厂,每种对象单独继承它写一个工厂来返回对象,创建对象只需要调用对应工厂的方法即可

public abstract class FruitFactory<T extends Fruit> {   //将水果工厂抽象为抽象类,添加泛型T由子类指定水果类型public abstract T getFruit();  //不同的水果工厂,通过此方法生产不同的水果
}
public class AppleFactory extends FruitFactory<Apple> {  //苹果工厂,直接返回Apple,一步到位@Overridepublic Apple getFruit() {return new Apple();}
}

代理:代理类和被代理的类都实现同一个接口/抽象类,并在原有方法前后执行相关操作

public class Proxy extends Subject{   //为了保证和Subject操作方式一样,保证透明性,也得继承Subject target;   //被代理的对象(甚至可以多重代理)public Proxy(Subject subject){this.target = subject;}@Overridepublic void test() {   //由代理去执行被代理对象的方法,并且我们还可以在前后添油加醋System.out.println("代理前绕方法");target.test();System.out.println("代理后绕方法");}
}

策略:给定几种选择,根据实际需求调用其中的一种

public interface Strategy {   //策略接口,不同的策略实现也不同Strategy SINGLE = Arrays::sort;   //单线程排序方案Strategy PARALLEL = Arrays::parallelSort;   //并行排序方案void sort(int[] array);
}

模板方法:具体要完成的方法定义,实现交由子类完成

public abstract class AbstractDiagnosis {public void test(){System.out.println("去医院看病了~"); //由于现在不知道该开什么处方,所以只能先定义一下行为,然后具体由子类实现//大致的流程先定义好就行this.prescribe();this.medicine();  //开药同理}public abstract void prescribe();   //开处方操作根据具体病症决定了public abstract void medicine();   //拿药也是根据具体的处方去拿
}

责任链:通过将任务一级一级不断向下传递,来对我们所需要的任务进行过滤和处理。

public abstract class Handler {protected Handler successor;    //这里我们就设计责任链以单链表形式存在,这里存放后继节点public Handler connect(Handler successor){     //拼接后续节点this.successor = successor;return successor;  //这里返回后继节点,方便我们一会链式调用}public void handle(){this.doHandle();   //由不同的子类实现具体处理过程Optional.ofNullable(successor).ifPresent(Handler::handle);    //责任链上如果还有后继节点,就继续向下传递}public abstract void doHandle();   
}

观察者:对象发生改变时,观察者能够立即观察到并进行一些联动操作

public class Subject {private final Set<Observer> observerSet = new HashSet<>();public void observe(Observer observer) {   //添加观察者observerSet.add(observer);}public void modify() {   //模拟对象进行修改observerSet.forEach(Observer::update);   //当对象发生修改时,会通知所有的观察者,并进行方法回调}
}

http://www.dtcms.com/a/589204.html

相关文章:

  • Arbess CICD实践(3) - 使用Arbess+GitPuk+sourcefare实现Node.js项目自动化部署+代码扫描
  • 设计网站的流程网站如何做地推
  • 力扣154. 寻找旋转排序数组中的最小值 II
  • React构建工具升级
  • @Transactional注解的切点匹配
  • 建设网站 请示 报告淘宝网站制作公司哪家好
  • leetcode1770.执行乘法运算的最大分数
  • 本溪市城乡住房建设厅网站国外做网站侵权
  • 虚拟化入门笔记
  • 物联网设备运维中的自适应硬件老化监测与寿命预测技术
  • dede网站建设360商城官网
  • 【云运维】LNMP 架构部署与应用
  • 【最长连续序列】
  • FreeRTOS抢占调度与时间片调度
  • AI 编程翻车实录 - 智谱 GLM 4.6 给的自信
  • Anygrasp_sdk本地部署和使用
  • 系统设计 --- 多节点中按顺序处理消息
  • 深圳高端企业官方网站建设海创网站建设
  • 【C#】何时用ref?
  • STM32中ADC + DMA自动采集系统
  • 读书之《架构师的自我修炼》_个人笔记
  • 什么网站可以快速做3d效果图php网站维护
  • 迅速提高网站排名帮别人做网站收多少钱合适
  • 怎么做网站上的模拟动画做网站四百全包
  • 利用短整数类型和部分字符串优化DuckDB利用数组求解数独SQL
  • 营销型网站四大功能模版网站有源代码吗
  • 力扣81. 搜索旋转排序数组 II
  • WampServer安装教程(图文步骤)+ 下载+配置+解决图标红橙绿问题【附安装包】
  • 使用 dash 构建 mvvm 整洁架构应用
  • 跨时钟域处理