摘要:
任何技术的发展都是经过不断的演变迭代的,同样IO模型的演变代表着人们在计算机世界对效率的追求,对不同场景的解决方案,从某种方面来说IO模型的演变也一定程度见证着互联网的发展,随着学习的不断深入,也需要对底层实现原理不断加强。 接下来主要针对计算机网络、网络分层模型、网络协议以及重点的IO模型进行探讨 阅读全文
摘要:
概述 什么是ElasticSearch? 也可简称为ES,顾名思义,可伸缩搜索,主要用来做检索的,再看看官网解释。 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完 阅读全文
摘要:
Loki简介 Loki是Grafana出品的一个轻量级日志系统,熟悉ELK的都知道ELK使用起来的成本,而且仅仅是日志检索使用ELK的话有点大材小用了。Loki技术栈中使用了以下组件。 Promtail 用来将容器日志发送到 Loki 或者 Grafana 服务上的日志收集工具,该工具主要包括发现采 阅读全文
摘要:
事务是基于数据库本身功能实现控制的,因此Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。 相比于传统事务处理的模板式重复的编码过程,Spring提供了灵活的声明式事务使用形式,可以通过极少的代 阅读全文
摘要:
基本认识 LinkedHashMap位于java.util包,于JDK1.4引入,属于Java Collections Framework的成员。查看其UML关系如下图所示: HashMap在很多场景下都满足K-V的存取,而且在非多线程的场景下也能保持不错的性能,但是HashMap有一个缺点就是不能 阅读全文
摘要:
前言 HashMap是是Java Collections Framework的成员,位于java.util包,在JDK1.2引入。其数据存储形式是基于K-V键值对形式进行存储,HashMap中的key不能重复,允许且只能存在一个null值。如果多次put同一个key会进行值覆盖,对于value则没有 阅读全文
摘要:
基本认识 事务(Transaction)在数据库中一般是指包含了一组原子性操作的步骤组合,这些操作要么都成功,要么都失败,事务一般包含了ACID四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。这也是数据库区别于 阅读全文
摘要:
基本使用 ReentrantLock,位于java.util.concurrent包,于JDK1.5引入,一种可重入互斥Lock ,其基本行为和语义与使用synchronized方法和语句访问的隐式监视器锁相同,但具有扩展功能。 ReentrantLock的使用也很简单,在源码注释中可以看到使用的推 阅读全文
摘要:
基本概念 字节码动态代理运用了代理模式、字节码操作、反射等技术,在介绍常见字节码操作类库前,先了解一下一些基本概念。 名词解释 字节码文件:Java源代码经过编译后生成的二进制流文件,通常一个接口或者一个类对应一个class文件,但是由于动态字节码技术的存在一个字节码并不一定对应一个真实的磁盘文件。 阅读全文
摘要:
简介 Kubernetes这个名字源于希腊语,意为"舵手"或"飞行员”。k8s这个缩写是因为k和s之间有八个字符。Google在 2014年开源了Kubernetes项目,Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。同样类似的容器编排工具还有docker swarm 阅读全文
摘要:
基本概念 CAS(Compare And Swap)是一种比较交换算法,很多人会把CAS和自旋锁混为一谈,两者还是有差别,前者是一种原子算法,目的是在不使用操作系统互斥信号量的重量级锁的前提下提供一种原子操作,后者基于CAS算法实现。 操作系统底层对CAS的都提供了不同的指令级实现: x86 cmp 阅读全文
摘要:
在计算机的发展历史中,有这样两大定律Amdahl定律和摩尔定律,这两个定律的更替代表了近年来硬件发展从追求CPU频率到追求多核心并行处理的发展过程。 Amdahl定律通过系统并行化与串行化的比重来描述多CPU系统能获得的运算加速能力。 摩尔定律用于描述CPU晶体管数量与运行效率之间的关系。 多任务处 阅读全文
摘要:
元数据型资源 HPA HPA全称HorizontalPodAutoscaler,Pod水平自动扩缩,可以根据CPU利用率自动扩缩RC、Deployment、RS或StatefulSet中的Pod数量,目的是自动扩缩工作负载以满足需求。 水平扩缩意味着对增加的负载的响应是部署更多的Pod。 与"垂直( 阅读全文
摘要:
K9s 是一个基于终端的 UI,用于与 Kubernetes 集群进行交互。 该项目的目的是让您在野外更轻松地导航、观察和管理已部署的应用程序。 K9s 持续监视 Kubernetes 的变化并提供后续命令来与您观察到的资源进行交互。 官方网址:https://k9scli.io k9s 会以特定时 阅读全文
摘要:
Kubernetes的安装过程还是比较繁琐的,网上也提供了不少的教程,总结下来安装方式大概可以分为三类。 二进制安装(上手难度高,不推荐) kubeadm安装(官方推荐,基于命令行形式,安装过程相对简化) 基于第三方工具(以容器安装容器,安装简单,但是也屏蔽了安装过程,快速体验可以采用这种方式安装) 阅读全文
摘要:
作为轻量级Kubernetes,k3s是经CNCF一致性认证的Kubernetes发行版,专为物联网及边缘计算设计。如果想学习k8s相关内容,又受限于资源限制,可以使用k3s来体验。 希望安装的Kubernetes在内存占用方面只是一半的大小。Kubernetes是一个10个字母的单词,简写为 K8 阅读全文
摘要:
名称空间级资源 名称空间在kubernetes中主要的作用是做资源隔离,因此名称空间级别的资源只在当前名称空间下有效。 工作负载型资源 工作负载(workload)是在Kubernetes上运行的应用程序,无论负载是单一组件还是由多个一同工作的组件构成,工作负载都可以在一组Pods中运行。 Pod 阅读全文
摘要:
资源 在kubernetes中包含很多中类型的资源,所有内容都可以抽象为资源,资源实例化之后称为对象。资源按照不同的类型可以划分为集群类、名称空间类、元数据类资源。 集群级资源 集群级别的资源是所有名称空间之间可以共享的资源。 Namespace Kubernetes中,名称空间(Namespace 阅读全文
摘要:
简介 Kubernetes这个名字源于希腊语,意为"舵手"或"飞行员”。k8s这个缩写是因为k和s之间有八个字符。Google在 2014年开源了Kubernetes项目,Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。同样类似的容器编排工具还有docker swarm 阅读全文
摘要:
前言 操作系统中,一个进程往往代表着一个应用程序实例,而线程是进程中轻量级的调度单元,也可以看作是轻量级的进程,可以共享进程资源。下面简单介绍在操作系统中线程通用实现方式。接下来内容主要对线程模型进行简单介绍,然后对Java线程实现Thread类进行了解。 线程模型 暂且抛开Java线程,先说明一下 阅读全文