Docker步步实践
目录文档:
①Docker简介
②基本概念
③安装Docker
④使用镜像:
⑤操作容器:
⑥访问仓库:
⑦数据管理:
⑧使用网络:
⑨高级网络配置:
⑩安全:
⑪底层实现:
⑫其他项目:
{1, 11, 21, 31…991}
{2, 12, 22, … 992}
…
{10, 20, 30, … 1000}
由于两种方式没有本质的区别,为了简便,本文中使用第一种方式作为拆分方式实现。
1 最简单版本的实现
public static void main(String[] args) throws InterruptedException {
AtomicInteger sum = new AtomicInteger();
List threadList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
final int cur = i;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int j = cur * 100 + 1; j <= cur * 100 + 100; j++) {
sum.addAndGet(j);
}
}
});
thread.start();
threadList.add(thread);
}
for (Thread thread : threadList) {
thread.join();
}
System.out.println(sum.get());
}
代码没啥亮点,但也没什么漏洞。改进点是可以使用线程池代替线程数组,使用CountDownLatch来判定结束。改进版的实现如下:
2 线程池版
public static void main(String[] args) throws InterruptedException {
AtomicInteger sum = new AtomicInteger();
ExecutorService pool = Executors.newCachedThreadPool();
final CountDownLatch latch = new CountDownLatch(10);
for (int i = 0; i < 10; i++) {
final int cur = i;
pool.execute(new Runnable() {
@Override
public void run() {
for (int j = cur * 100 + 1; j <= cur * 100 + 100; j++) {
sum.addAndGet(j);
}
latch.countDown();
}
});
}
latch.await();
System.out.println(sum.get());
}
用到了线程池,一定会想到java的future类和callable,正好适合解决这种问题。
3 future版
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService pool = Executors.newCachedThreadPool();
List<Future> futureList = new ArrayList<>();
int sum = 0;
for (int i = 0; i < 10; i++) {
final int cur = i;
futureList.add(pool.submit(new Callable() {
@Override
public Integer call() {
int segSum = 0;
for (int j = cur * 100 + 1; j <= cur * 100 + 100; j++) {
segSum += j;
}
return segSum;
}
}));
}
for (int i = 0; i < 10; i++) {
sum += futureList.get(i).get();
}
System.out.println(sum);
Spring全套教学资料
Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。
目录:
部分内容:
Spring源码
- 第一部分 Spring 概述
- 第二部分 核心思想
- 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
- 第四部分 Spring IOC 高级应用
基础特性
高级特性 - 第五部分 Spring IOC源码深度剖析
设计优雅
设计模式
注意:原则、方法和技巧 - 第六部分 Spring AOP 应用
声明事务控制 - 第七部分 Spring AOP源码深度剖析
必要的笔记、必要的图、通俗易懂的语言化解知识难点
脚手框架:SpringBoot技术
它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
- SpringBoot入门
- 配置文件
- 日志
- Web开发
- Docker
- SpringBoot与数据访问
- 启动配置原理
- 自定义starter
微服务架构:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
Spring MVC
目录:
部分内容:
片转存中…(img-O9GKbiek-1715663069414)]
部分内容:
[外链图片转存中…(img-DzfCWTm4-1715663069414)]
[外链图片转存中…(img-sP5GDFF7-1715663069415)]