Java大厂技术面试题汇总!docker搭建本地仓库

1、上下文切换

上下文定义

cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。

引发问题

对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。

如何减少上下文切换
  • 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。
  • CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。
  • 使用最少线程,减少不必要的线程创建,自定义线程池。
  • 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用很强大。

2、死锁

死锁定义

死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。
系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。

产生死锁原因
  • 系统资源不足
  • 进程推进顺序不当
  • 资源分配不合理
死锁产生的必要条件
  • 互斥条件:一个资源只能被一个进程或者线程使用。
  • 请求和保持条件:一个进程或者线程,请求资源的时候发生阻塞,对已经获取的资源保持不放。
  • 不可剥夺条件:进程或者线程以获得的资源,在未使用完成时,不能强行剥夺。
  • 循环等待条件:若干进程或者线程形成一种头尾相接的循环等待的资源关系。

这四分条件是死锁产生的必要条件,只要发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

如何避免死锁
  1. 以确定的顺序获得锁
  2. 加锁时限

Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,该方法可以按照固定时长等待锁,因此线程可以在获取锁超时以后,主动释放之前已经获得的所有的锁。

最后

每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。

如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份限量版的Java零基础宝典能够对你有所帮助。

领取这份Java零基础宝典只需要点击这里即可免费下载

4888/java-p7)**

[外链图片转存中…(img-T7U0xuta-1627093020767)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建本地Docker镜像仓库的步骤如下: 1. 首先,你需要安装Docker,并确保Docker服务已经启动。 2. 创建一个用于存储镜像的目录,可以使用以下命令创建一个名为registry的目录: ``` mkdir registry ``` 3. 接下来,你需要启动一个私有镜像仓库容器,使用以下命令: ``` docker run -d -p 5000:5000 --restart=always --name registry -v /path/to/registry:/var/lib/registry registry:2 ``` 这将在本地启动一个名为registry的容器,并将端口5000映射到主机的5000端口。你可以根据需要修改端口号和目录路径。 4. 确保私有仓库容器已经成功启动,可以运行以下命令来检查容器的状态: ``` docker ps ``` 5. 现在,你可以将你的镜像推送到本地私有仓库。假设你的镜像名称是myhellodocker,使用以下命令将镜像推送到本地仓库: ``` docker push localhost:5000/myhellodocker ``` 这将把镜像推送到本地私有仓库,并可以在之后通过该地址进行访问。 6. 想要查看本地仓库中的镜像,你可以通过以下命令查看: ``` curl http://localhost:5000/v2/myhellodocker/tags/list ``` 这将返回镜像的标签列表。 注意:在这个过程中,我们使用了一个名为registry的容器来搭建本地私有仓库。你也可以使用其他的工具或平台来搭建本地私有仓库,但步骤可能会有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker镜像制作与仓库搭建](https://blog.csdn.net/qq_45752401/article/details/120547832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值