Docker学习:
Docker概述:
容器是什么?
容器就是运行环境和,容器基础镜像的集合;
容器与虚拟机的区别
**启动速度:**每个虚拟都机是一个完整的操作系统包括操作系统和内核,所以它是一个重量级的系统;而容器是轻量级的,因为容器只打包了操作系统的基础文件和库文件、还有应用程序及所有的依赖,他的运行速度就如同在系统中创建一个进程一样快,所以启动速度较快。
**运行性能:**由于虚拟机增加了虚拟化层用于虚拟化硬件,势必会增加一定的开销,所以运行性能有所损失;而容器是直接运行在物理操作系统上的,他本身与系统上其他进程并没有太大区别,所以运行性能是接近原生的。
**磁盘占用:**虚拟机是一个完整的操作系统,是 GB 级别的,而容器只包含了一些系统启动的必要组件和程序依赖,是 MB 级别的。
**数量:**运行一个操作系统的开销较大,运行一个进程的开销较小,同样的服务器资源可以运行更多的容器。
**隔离性:**虚拟机是一个完整的操作系统级别的隔离,要比容器好很多;容器是进程级别的隔离,隔离的不彻底,因为多个容器之间使用的是同一个宿主机的操作系统内核。
**封装速度:**虚拟机封装会包含操作系统, ...
CountDownLatch
CountDownLatch介绍
CountDownLatch概述
CountDownLatch一般用作多线程倒计时计数器,强制它们等待其他一组(CountDownLatch的初始化决定)任务执行完成。
有一点要说明的是CountDownLatch初始化后计数器值递减到0的时候,不能再复原的,这一点区别于Semaphore,Semaphore是可以通过release操作恢复信号量的。
CountDownLatch使用原理
使用原理
创建CountDownLatch并设置计数器值。
启动多线程并且调用CountDownLatch实例的countDown()方法。
主线程调用 await() 方法,这样主线程的操作就会在这个方法上阻塞,直到其他线程完成各自的任务,count值为0,停止阻塞,主线程继续执行。
使用模板
1234567891011121314151617181920212223242526272829303132333435363738394041public class CountDownLatchModule { //线程数 pri ...
静态常量池&运行常量池&字符串常量池的区别
静态常量池&运行时常量池&字符串常量池区别_哔哩哔哩_bilibili
本文以案例拆分
硬盘中的class常量池,被加载到内存后分为 运行时常量池 和 字符串常量池。
静态常量池
+ 定义与位置: 静态常量池也称为类文件常量池,是存在于**.class** 文件(Java字节码文件)内部的一个数据结构。它是编译器在编译源代码时生成的,与具体的类或接口关联,存储了该类或接口在编译期间能确定的各类常量信息。
+ 每个class文件有对应的一个 Class常量池 ,里面包含符号引用和字面量。
运行时常量池
定义与位置: 运行时常量池是JVM在运行时为每个已加载的类或接口动态创建的一个内存区域,位于方法区(Method Area)内。它是对.class文件中静态常量池内容的 runtime 实现。
当class被加载后,class常量池中的内容会被加载到方法区的运行时常量池中,但是并不包含 字面量中字符型 内容。
字符串常量池
定义与位置: 字符串常量池是运行时常量池的一个子集,专门用于存储字符串字面量。在JDK 6及之前,字符串常量池位于永久代(PermGen)中;从J ...
计算机网络总结
[计算机网络基础](https://javaguide.cn/cs-basics/network/other-network-questions.html#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80)
[网络分层模型](https://javaguide.cn/cs-basics/network/other-network-questions.html#%E7%BD%91%E7%BB%9C%E5%88%86%E5%B1%82%E6%A8%A1%E5%9E%8B)

[TCP/IP 四层模型是什么?每一层的作用是什么?](https://javaguide.cn/cs-basics/network/other-network-questions.html#tcp-ip-%E5%9B%9B%E5% ...
表去重
测试表:
使用Distinct:
+ 去除某列相同的数据,或者某几列都相同的数据。
+ 根据单个字段去重,能精确去重;
+ 作用在多个字段时,只有当这几个字段的完全相同时,才能去重;
+ 关键字distinct只能放在SQL语句中的第一个,才会起作用
123// 去除id,class,score都重复才去除SELECT DISTINCT class, id,score FROM drc_student;
12SELECT DISTINCT class FROM drc_student;// class列去重
2.使用groupby

使用groupby()会直接对括号里面的列去重
使用groupby的时候,select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。也就是这里的select后面查询的列只能出现在group ...
虚拟机连接Docker中的mysql报10060错
MySQL错误:Can’t connect to MySQL server (10060) 解决方案 - Felix-Zhang - 博客园
错误

检测虚拟机中的ip能否ping通
检测Docker中的mysql是否允许用户远程访问
1234567-- mysql -u root -p-- show databases;-- use mysql; -- select host,user from user
12345-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库 -- FLUSH PRIVILEGES; //需要输入次命令使修改生效 -- EXIT //退出
12345-- use my ...
缓存
[https://www.youtube.com/watch?v=HiBDZgTNpXY](https://www.youtube.com/watch?v=HiBDZgTNpXY)
服务端缓存
CDN
**CDN** 全称是 Content Delivery Network/Content Distribution Network,翻译过的意思是 **内容分发网络** 。
我们可以将内容分发网络拆开来看:
内容:指的是静态资源比如图片、视频、文档、JS、CSS、HTML。
分发网络:指的是将这些静态资源分发到位于多个不同的地理位置机房中的服务器上,这样,就可以实现静态资源的就近访问比如北京的用户直接访问北京机房的数据。
所以,简单来说,CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。
全站加速(不同云服务商叫法不同,腾讯云叫 ECDN、阿里云叫 DCDN)既可以加速静态资源又可以加速动态资源,内容分发网络(CDN)主要针对的是 静态资源 。
CDN 工作原理是什么?
静态资源是如何被缓存到 CDN 节点中的?
你可 ...
线程异常和spring异常扩散机制
java中的异常
[Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常)_声明异常的关键字是 ,抛出异常的关键字是 ,捕捉异常的关键字是-CSDN博客](https://blog.csdn.net/m0_46316970/article/details/119898445)
在程序运行过程中,如果 JVM 检测出一个不可能执行的操作,就会出现运行时错误(runtime error)。
异常就是程序在运行过程中出现的一些错误,我们通过面向对象的思想,把这些错误也用类来描述,那么一旦产生一个错误,即就是创建了某一个错误的对象,这个对象就是我们所说的异常对象。
RuntimeException 的任何子类都无需在 throws 子句中进行声明,指的就是这些问题不需要提前被预防(本质上也可以的,只不过没必要),因为只有在真正运行的时候才能发现是否发生问题,一旦在运行期间发生了问题,则一般不会修正,程序直接终端。
系统錯误(system error) 是由 Java 虚拟机抛出的,用 Error 类表示。Error 类描述的是内部系统错误。这样的错误很少发生,Error不能被 ...
方法引用method reference
写在前面
我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口。
很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类的方法来实现一个函数式接口呢?答案是可以的。我们称之为方法引用(method reference)。
方法引用
一个典型例子,向一个Map中写入单词以及它的长度:
123456789public static void simpleMethodReference() { Map<String, Integer> wordMap = new HashMap<>(); // 等同于 wordMap.computeIfAbsent("hello", s -> s.length()); wordMap.computeIfAbsent("hello", String::length); // 输出为 {hello=5} System.out.println(wordMap) ...
打包的jar上传到服务器找不到主清单解决方法
解决方法1:
在maven中添加如下配置,让每次打包后的jar包包含其他依赖:
123456789101112131415161718192021222324252627282930313233343536373839404142434445<repositories> <repository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release< ...