less
less分屏上下翻页浏览文件内容 补充说明less命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。 语法1less(选项)(参数) 选项123456789101112-b <缓冲区大小> 设置缓冲区的大小-e:文件内容显示完毕后,自动退出;-f:强制显示文件;-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;-l:搜索时忽略大小写的差异;-i 忽略搜索时的大小写-m 显示类似more命令的百分比-N:每一行行首显示行号;-o <文件名> 将less 输出的内容在指定文件中保存起来-s:将连续多个空行压缩成一行显示;-S:在单行显示较长的内容,而不换行显示;-x<数字>:将TAB字符显示为指定个数的空格字符。 交互命令less 命令执行的快捷键搜索快捷键总结 /字符串:向下搜索“字符串”的功能 ?字符串:向上...
拦截器模式
https://blog.csdn.net/qq_26899109/article/details/113838471 拦截器模式应用非常广泛,适用场景一般在框架代码中的固定业务逻辑,这部分逻辑通常不会变化,比如:服务调用的拦截处理,拦截服务的参数,参数国际化处理,拦截服务的异常,记录服务的调用结果等等。 之所以要讲这个,是因为后面讲SpringAOP的时候会参考到! 拦截器模式有三个重要的元素:调度器,拦截器,业务逻辑,只要充分理解这三个元素,拦截器模式就很简单了。 调度器一个业务逻辑可以有N个拦截器,这些拦截器是怎么运行的,自然是需要有一个调度器从中调度。 拦截器拦截器就只是负责拦截业务代码,在业务代码前后做一些操作,至于拦截器和业务代码的关系,拦截器不会直接调用业务代码,因为会耦合,拦截器在处理完自己的逻辑,会通知调度器,由调度器负责后续的操作,是继续拦截,还是调用业务逻辑。 业务逻辑业务代码这一块没啥好说的。 一个非常优秀的实例通过调度器实现了拦截器和业务逻辑的解耦。拦截器只需要负责注册到调度器,业务逻辑也只需要注册到调度器中。调度器会执行拦截器。通过地柜...
02.安装
# Kubernetes ## minikube 1. 安装步骤https://minikube.sigs.k8s.io/docs/start/ 2. 启动k8s集群 1minikube start 3. 启动仪表盘 1minikube dashboard 4. 查看启动插件 12345678910111213141516171819202122232425262728293031323334353637383940414243444546minikube addons list addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidi...
03.入门
基础概念介绍俗话说,磨刀不误砍柴工。上一章,我们成功搭建了k8s集群,接下来我们主要花时间了解一下k8s的相关概念,为后续掌握更高级的知识提前做好准备。 本文主要讲解以下四个概念: Pod Deployment Service Namespace 1 引入让我们使用 Deployment运行一个无状态应用来开启此章节吧,比如运行一个 nginx Deployment(创建文件:nginx-deployment.yaml): 123456789101112131415161718192021apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: ...
04-8.Configmap
配置应用程序 使用Docker部署应用程序时,一般常用的配置方式有: 配置内嵌 启动传参配置 环境变量 经过前面容器持久化存储的介绍,我们很容易能想到是以挂载卷的形式,比如: gitRepo hostPath NFS 再结合边车模式来进行配置文件的管控是可行的,然而有一种更加简便的方法能将配置数据置于Kubernetes的顶级资源对象中,那就是ConfigMap。 传递命令行参数在上一节容器持久化存储的emptyDir概念介绍部分,我们引入了一个fortune-pod的例子,再回顾一下之前的配置文件吧,如下: 1234567891011121314151617181920212223apiVersion: v1kind: Podmetadata: name: fortunespec: containers: - image: luksa/fortune name: html-generator volumeMounts: - name: html mountPath: /var/htdocs - image: nginx:alpine ...
04-9 PersistVolume
容器持久化存储 容器的本质是进程,对于进程,Linux系统有进程组的概念来将其组织在一起。在k8s里面,使用Pod这个逻辑概念来维护容器间的关系。 有了Pod后,我们的应用程序需要被创建和管理,这就引出了ReplicaSet和Deployment;然后需要将部署好的应用暴露给外部进行访问,Service可以提供一个固定的ip和端口让外部访问。 对于有状态的应用,可以使用StatefulSet来进行状态的恢复,在上一节概念介绍里面有提到,有状态的应用是离不开持久化存储的。 引子在Docker中,如果一个容器在运行过程中会产生数据并写入到文件系统,当关闭这个容器,用镜像再启动一个容器的时候,你就会意识到新容器并不会识别前一个容器写入文件系统内的任何内容。 对于有状态的应用,我们希望下次启动的应用可以保持住上次的状态;在k8s里面可以通过定义存储卷来满足这个需求,它们不像Pod这样的顶级资源,而是被定义为Pod的一部分,并和Pod共享相同的生命周期。因此在Pod里面容器重新启动期间,卷的内容是不变的, 卷emptyDir在Pod中如何定义卷?让我们从emptyDir开始。设想一个这样的...
06.容器设计模式
设计模式——基于容器的分布式系统 20世纪80年代末至90年代初,面向对象编程思想给软件开发带来了一轮技术革新,就像润物细无声的春雨那般,向全世界的程序员们快速普及了模块化构建应用程序的方法,一直流行至今。 当下,我们可以看到类似的革新出现在了分布式系统开发,具体特点如下: 基于容器的微服务架构体系日益流行 容器天然隔离的属性非常适合作为分布式系统中的基本对象 基于面向对象,四人帮基于经验提出和总结了对于一些常见软件设计问题的标准解决方案,其描述了一系列基于接口的模式,可以在各种环境中重用,这被称之为软件设计模式。历史一定程度上来说是重复的,随着这种架构模式的成熟,基于容器的分布式系统的设计模式也就自然而然地浮现了。 本篇主要阐述的是Brendan Burns在基于容器的分布式系统中发现的三种设计模式: single-container patterns for container management:容器管理之单容器模式 single-node patterns of closely cooperating containers:容器协调之单节点(多容器)模式 mult...
图解OSI七层网络模型
简单图解OSI七层网络模型 翻译自Bradley Mitchell的《The Layers of the OSI Model Illustrated》 Open Systems Interconnection(OSI)定义了一个网络框架,其以层为单位实现了各种协议,同时会将控制权逐层传递。目前OSI主要作为教学工具被使用,其在概念上将计算机网络结构按逻辑顺序划分为7层。 较低层处理电信号、二进制数据块以及路由这些数据以便在网络中的穿梭;从用户的角度来看,更高的层次包括网络请求和响应、数据的表示和网络协议。 OSI模型最初被认为是构建网络系统的标准体系结构,今天许多流行的网络技术都可以看出OSI的分层设计。 物理层(Physical Layer)物理层是OSI模型的第一层,其职责在于通过网络通信媒介将比特流数据从发送(源)设备的物理层传输到接收(终)设备的物理层。 第一层技术的例子包括以太网电缆和集线器。此外,集线器和其他中继器是在物理层起作用的标准网络设备,电缆连接器也是如此。 在物理层,数据通过物理介质支持的以下信号类型进行传输: 电压 无线电频率 红外脉冲 普通光 ...
14 语法糖
参考文献 1 Java语法糖语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。 Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是语法糖。 泛型与C#中的泛型相比,Java的泛型可以算是“伪泛型”了。在C#中,不论是在程序源码中、在编译后的中间语言,还是在运行期泛型都是真实存在的。Java则不同,Java的泛型只在源代码存在,只供编辑器检查使用,编译后的字节码文件已擦除了泛型类型,同时在必要的地方插入了强制转型的代码。泛型代码: 12345public static void main(String[] args) { List<String> stringList = new ArrayList<String>(); stringList.add("oliv...
01 Java编译原理
https://www.cnblogs.com/qingshanli/p/9281760.html 1 Java编译流程基本流程 前端编译主要指与源语言有关但与目标机无关的部分,包括词法分析、语法分析、语义分析与中间代码生成。把*.java文件转变成*.class文件 后端编译主要指与目标机有关的部分,包括代码优化和目标代码生成等。指把字节码转变成机器码 关键工具:词法分析器、语法分析器、语义分析器和代码生成器 读取源码,进行词法分析。也就是找出源码字节中的关键字,识别出合法的关键字,最后得出一些规范化的Token(中文意思是“标记“、”象征”等)流。 对Token流进行语法分析,检查关键词的组合是否符合语法,最后得到抽象的语法树(语法树是吧语言的主要此法用一个结构化的形式组合在一起) 进行语法分析,把难懂的,复杂的语法转化成更加简单的的语法(对计算机来说),最后得到一个注解过后的抽象语法树 通过字节码生成器将经过注解的抽象语法树生成字节码 2 Java前端编译java的前端编译(即javac编译)可分为解析与填充符号表、插入式注解处理器的注解处理、分析与字节码生成等...














