1. 什么是消息队列
消息队列(Message Queue) 是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接收消息,并且不需要直接连接到对方。
消息(Message) 是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
队列(Queue) 可以说是一个数据结构,可以存储数据。先进先出。
2. 队列有哪些作用和应用场景2.1 应用解耦
本文主要对 Collection - ArrayList 进行源码解析。
概述ArrayList 实现了 List 接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入 null 元素,底层通过数组实现。除该类未实现同步外,其余跟 Vector 大致相同。每个 ArrayList 都有一个容量 (capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素时,如果容量不足,容器会自动增大底层数组的大小。前面已经提过,Java 泛型只是编译器提供的语法糖,所以这里的数组是一个Object 数组,以便能够容纳任何类型的对象。
![Collection - ArrayList 源码解析_概述](https://imgbed.yeyulemon.top/uploads/Collection - ArrayList 源码解析_概述.png)
size(), isEmpty(), get(), set() 方法均能在常数时间内完成,add() 方法的时间开销跟插入位置有关,addAll() 方法的时间开销跟添加元素的个数成正比。其余方法大都是 ...
本文主要介绍 JDK 中 Collection 和 Map 相关知识体系,后续章节将对主要对类进行源码解读。
知识体系结构![Collection 类关系图_知识体系结构](https://imgbed.yeyulemon.top/uploads/Collection 类关系图_知识体系结构.png)
介绍容器,就是可以容纳其它 Java 对象的对象。Java Collections Framework(JCF) 为 Java 开发者提供了通用的容器,其始于 JDK1.2,优点是:
降低编程难度
提高程序性能
提高 API 间的互操作性
降低学习难度
降低设计和实现相关 API 的难度
增加程序的重用性
Java 容器里只能放对象,对于基本类型(int, long, float, double 等),需要将其包装成对象类型后(Integer, Long, Float, Double, 等) 才能放到容器里。很多时候拆包装和解包装能够自动完成。这虽然会导致额外的性能和空间开销,但简化了设计和编程。
Collection
容器主要包括 Collection 和 Map 两种,Col ...
本教程只说实操不说原理,需要你对 GitHub Actions 有一定的了解。
一、大概步骤
创建 GitHub 账号
创建放博客的私有仓库
创建工作流文件
获取服务器 SSH 密钥
创建 secret
提交代码
验证
步骤1和步骤2比较简单,在此省略。
二、详细步骤2.3 创建工作流文件博客根目录下创建一个文件: .github/workflows/deploy.yml 文件,deploy.yml 文件名任意,但必须是 yml 文件。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465# 当有改动推送到main分支时,启动Actionname: Hexo博客自动部署on: push: branches: - main release: types: - publishedjobs: deploy: runs-on: ubuntu-late ...
GitHub Actions 文档: https://docs.github.com/zh/actions阮一峰的网络日志: https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html掘金宅小年: https://juejin.cn/post/6960126908180725773
什么是 GitHub Actions ?GitHub Actions 是 GitHub 推出的持续集成(Continuous Integration,简称 CI)服务,它提供了整套虚拟服务器环境,基于它可以进行构建、测试、打包、部署项目等等操作。
我们可以看到,CI/CD 是由很多操作组成的,比如执行自动化测试、分支合并、服务部署等,而 GitHub 把这一系列的操作都称为 Actions。
当然 GitHub 创新点还不仅于此,不同的项目可能都会使用到相类似的 Action,GitHub 允许开发者把 action 写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。
GitHub ...
引用站外地址
力扣算法
代码随想录
704 二分查找定义两个指针, left 和 right, 值取左闭右闭,即 left = 0, right = nums.length - 1
while 循环条件则要遵循上面定义好的边界, 左闭右闭, 所以 left 可以 = right, 则 while (left <= right)
while 循环中要严格按照区间的定义来写, 符合 left right 区间, 就是对的
middle = (left + right) / 2 为了防止溢出, 可以写为 middle = left + ((right - left) / 2)
27 移除元素我这里用了左指针和右指针, 区间也是闭合的, 所以 while (left <= right), co ...
引用站外地址
微信公众号官方文档
腾讯
获取 Access token获取 Access token
1234567891011121314151617181920212223import cn.hutool.http.HttpUtil;import cn.hutool.json.JSONArray;import cn.hutool.json.JSONObject;// 换成自己的公众号 AppIDprivate static final String APP_ID = "";// 换成自己的公众号 AppSecretprivate static final String APP_SECRET = "";private static final String API_URL = "https://api.weixin.qq.com/cg ...
CentOS7 安装 Docker
在 CentOS 上安装 Docker 引擎
1. 确定你是 CentOS7 及以上版本1sudo cat /etc/redhat-release
2. 卸载旧版本12345678sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
3. yum 安装 gcc 相关
CentOS7 能上外网
sudo yum -y install gcc
sudo yum -y install gcc-c++
4. 安装需要的软件包1sudo yum install -y yum-utils
5. ...
引用站外地址
Java基础入门80问
CoderLeixiaoshuai
版权归属原作者,如涉侵权,请联系删除。
1.一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。
2.Java有没有goto?没有,但是 goto 是 java 中的保留字。
3.说说&和&&的区别&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals( ...