摘要:
Java集合/泛型面试题 1 、ArrayList和linkedList的区别 Array(数组)是基于索引 (index) 的数据结构,它使用索引在数组中搜索和读取数据是很快的。 Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据 阅读全文
摘要:
JavaOOP面试题 1 、什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2 、Java都有那些开发平台? JAVA SE:主要用在客户端开发 JAVA EE:主要用在web应用程序 阅读全文
摘要:
集群高并发情况下如何保证分布式唯一全局Id生成 问题 为什么需要分布式全局唯一ID以及分布式ID的业务需求 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识,如在美团点评的金融、支付、餐饮、酒店 猫眼电影等产品的系统中数据逐渐增长,对数据库分库分表后需要有一个唯一ID来标识一条数据或信息; 阅读全文
摘要:
Spring源码 Spring源码方面的知识 Spring bean的生命周期 Spring 工厂,Spring容器,上下文 Spring BeanPostprocessor Spring 和 主流框架的源码 Spring BeanFactory 和 FactoryBean的区别 谈谈你对Sprin 阅读全文
摘要:
Java NIO 概念 Java NIO(New IO),No Blocking IO 非阻塞IO,是从Java1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的,基于通道的IO操作。N 阅读全文
摘要:
NIO深入 BIO 概念 在提到NIO之前,我们说先看看BIO,也就是Blocking IO,阻塞IO,我们首先实现一个最基本的网络通信 /** * QQ客户端 * * @author: 陌溪 * @create: 2020-03-28-11:09 */ public class QQClient 阅读全文
摘要:
使用GithubAction构建蘑菇博客镜像提交DockerHub 前言 这阵子使用DockerCompose部署蘑菇博客, 但是还存在一些问题,就是每次我们需要下载 蘑菇博客 源码,然后进行编译,打包,部署。而因为蘑菇博客还是前后端分离项目,因此为了完成这一系列的操作,就需要在环境中安装maven 阅读全文
摘要:
使用DockerCompose制作蘑菇博客YAML镜像文件 前言 首先特别感谢群里的小伙伴 @touch fish 使用DockerCompose部署了蘑菇博客,并且提供了 搭建文档,本博客也是在上面的文档基础上进行修改~ 本文主要讲解的是,如果将蘑菇博客制作成多个Docker业务镜像,逐步讲解每个 阅读全文
摘要:
如何将镜像推送到阿里云容器镜像服务 前言 原来我都是将镜像推送到Dockerhub中的,因为Dockerhub是国外的软件,所以经常会各种超时的问题,这阵子研究了一下阿里云容器镜像服务,发现可以把一些常用的镜像推送到自己的容器镜像仓库里,然后就可以快速的进行拉取了~,所以我也打算将蘑菇博客的镜像也推 阅读全文
摘要:
对象存储MinIO入门介绍 常见的对象存储方式对比 直接将图片保存到服务的硬盘 优点:开发便捷,成本低 缺点:扩容困难 使用分布式文件系统进行存储 优点:容易实现扩容 缺点:开发复杂度稍大(尤其是开发复杂的功能) 使用nfs做存储 优点:开发较为便捷 缺点:需要有一定的运维知识进行部署和维护 使用第 阅读全文
摘要:
Docker图形化工具Portainer介绍与安装 介绍 Portainer是一款轻量级的图形化管理工具,通过它我们可以轻松管理不同的Docker环境。Portainer部署和使用都非常简单,它提供一个可以运行在任何docker引擎上的容器组成。Portainer提供管理docker的contain 阅读全文
摘要:
本文整理在 Ubuntu 16.04.x LTS 操作系统上容器相关部署手册 容器平台 Rancher Kubernetes Helm Docker 容器服务 prometheus grafana postgresql 1.Docker 1.1.apt source 更换apt源大多数情况下可以加快 阅读全文
摘要:
Docker操作系统之Alpine 前言 这阵子我发现只要带着alpine前缀的镜像,相比于其它的镜像,体积都相对较小,例如下面这些 java:alpine nginx:alpine 后面通过了解,发现了其实这些java镜像,或者nginx镜像都依赖于某个linux操作系统,我们常见的操作系统有 u 阅读全文
摘要:
DockerDesktop入门简介 参考 参考:https://segmentfault.com/a/1190000022059895 介绍 Docker Desktop是一款专门为Windows和Mac提供桌面化的容器开发环境,在Windows中,Docker Desktop使用了Windows的 阅读全文
摘要:
Docker Compose入门学习 简介 我们之前操作Docker的过程是:DockerFile build run 进行手动操作,单个容器,如果假设我们有100个微服务,并行微服务之间还存在依赖关系。这个时候,我们就可以使用Docker Compose来轻松高效的管理容器,定义运行多个容器。 官 阅读全文
摘要:
乐观锁和悲观锁 乐观锁 概念 乐观锁:顾名思义,就是十分乐观,它总是认为不会出现问题,无论干什么都不去上锁~,如果出现了问题,再次更新值测试,这里使用了version字段。 也就是每次更新的时候同时维护一个version字段 乐观锁实现方式 取出记录时,获取当前的version 更新时,带上这个ve 阅读全文
摘要:
Github学习 使用Github优秀框架 + 源码 提升自己 常用词含义 watch:会持续收到该项目的动态 fork:复制某个仓库到自己的Github仓库中 star:可以理解为点赞 clone:将项目下载至本地 follow:关注你感兴趣的作者,会收到他们的动态 in关键字限制搜索范围 公式: 阅读全文
摘要:
死锁编码及定位分析 概念 死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁的原因 系统资源不足 进程运行推进的顺序不对 阅读全文
摘要:
线程池(Java中有哪些方法获取多线程) 前言 获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口 实现Runnable接口 实现Callable接口 实例化Thread类 使用线程池获取 Callable接口 Callable接口,是一种让线程执行完成后,能够返回结果的 在说到 阅读全文
摘要:
Synchronized和Lock的区别 前言 早期的时候我们对线程的主要操作为: synchronized wait notify 然后后面出现了替代方案 lock await singal 问题 synchronized 和 lock 有什么区别?用新的lock有什么好处?举例说明 synchr 阅读全文