自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

散步的博客

散步的博客

  • 博客(216)
  • 收藏
  • 关注

原创 对象的内存布局

对象的内存布局

2023-01-03 22:29:48 469 1

原创 synchronized底层原理

synchronized底层原理

2023-01-02 20:53:54 1962 1

原创 Netty核心模块组件

netty

2022-06-04 19:22:57 283

原创 Netty线程模型介绍

线程模型基本介绍:不同的线程模式,对程序的性能有很大影响,为了搞清Netty 线程模式,我们来系统 的讲解下 各个线程模式,最后看看Netty 线程模型有什么优越性.目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现:单 Reactor 单线程;单 Reactor 多线程;主从 Reactor 多线程Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中

2022-06-04 15:45:28 916

原创 Netty核心技术NIO介绍

Netty的介绍:Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目。Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可 靠性的网络 IO 程序。Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下 的大量数据持续传输的应用。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景要透彻理解Netty , 需要先学习 NIO , 这样我们才能阅读 Netty 的源码。

2022-05-27 16:04:22 1441

原创 Linux高级命令

find命令:# find 搜索路径 [选项 选项的值] ...选项说明:-name :根据文件的名称搜索文件,支持*通配符-type :f代表普通文件、d代表文件夹案例:搜索计算机中的所有文件,然后找到httpd.conf文件# find /etc -name "httpd.conf" -type f*星号通配符:在Linux操作系统中,我们想要查找的文件名称不是特别清晰(只记住了前面或后面的字符),这个时候就可以使用*星号通配符了。案例:获取/etc目录下,所有后缀名为.conf的

2022-05-23 10:06:13 156

原创 Linux网络基础

IP地址基础知识IP和MAC地址简介1. 以太网上的两台计算机之所以能够交换信息就是因为每个设备都有一块网卡,并且每块网卡拥有唯一的物理地址(称为MAC地址)和唯一的逻辑地址(称为IP地址)。2. MAC地址是由生产厂商烧录好的,一般不能改动,并且全球唯一;IP地址需要绑定在网卡上,并且同一个IP地址不能绑定在多个网卡上。3. MAC地址和IP地址的区别如下:MAC地址和IP地址结构长度不一样。MAC地址是48位的十六进制数,IPv4地址是32位的二进制数,IPv6地址是128位,通常写成

2022-05-20 15:48:44 574

原创 Linux进程的优先级

进程的优先级:Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。哪些进程先运行,哪些进程后运行,就由进程优先级来控制思考:什么时候需要用到进程的优先级呢?答:当CPU负载过高时,如CPU的使用率>=90%以上。这个时候进程的优先级就会起作用。查看进程的优先级:PR 优先级,数值越小优先级越高。NI 优先级,数值越小优先级越高,可以人为更改。(NI = NICE = Nice)讲个小故事:Nice值 = 0,Nice值越高,代表这个人越绅士(Nice值越高,优先级

2022-05-19 10:46:47 2062

原创 Linux计划任务以及进程检测与控制

计划任务权限:黑名单:crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。提出问题:如果我们想限定某个用户(如hruser)使用计划任务,如何处理呢?答:可以使用计划任务的黑名单,黑名单文件路径 => /etc/cron.deny文件案例:把普通账号itheima加入到cron.deny黑名单中,禁止其创建计划任务第一步:切换到超级管理员root# su - root第二步:使用vim打开/etc/cron.deny文件# v

2022-05-18 22:08:30 981

原创 Linux系统自有服务

Linux中防火墙firewalld防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。防火墙选择让正常请求通过,从而保证网络安全性。Linux中的防火墙分类:CentOS5、CentOS6 => 防火墙 => iptables防火墙CentOS7 => 防火墙 => firewalld防火墙firewalld = fire火 wall墙 daemon守护进程firewalld防火墙:区域:firewalld增加了区域(zone)的概念,所谓区域是指,f

2022-05-18 21:36:18 180

原创 Linux自有服务与软件包管理

服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客户发出请求,这些进程就自动为他们提供服务,windows系统中,把这些自动运行的进程,称为"服务"举例:当我们使用SSH客户端软件连接linux的时候,我们的服务器为什么会对连接做出响应?是因为SSH服务开机就自动运行了。所谓自有服务,简单来说,可以理解为Linux系统开机自动运行的服务(程序)。systemctl管理系统服务:systemctl概述:CentOS6版本:service命令(管理服务开启、停止以及重启)+ c

2022-05-18 21:08:57 172

原创 Linux的权限管理操作

权限概述:权限的基本概念:在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利。在Linux 中分别有读、写、执行权限:注:一般给予目录读权限时,也将会给其执行权限,属于“套餐”组合可读权限 read => r(简写),可写权限 write => w(简写),可执行权限 excute => x(简写)为什么要设置权限:1)服务器中的数据价值2)员工的工作职责和分工不同3)应对自外部的攻击(挂马)4)内部管理的需要Linux用户身份类别:Li

2022-05-17 21:04:36 295

原创 Linux文件管理与用户管理、网络管理

more分屏显示文件内容:基本语法:# more 文件名称特别注意:more命令在加载文件时并不是一点一点进行加载,而是打开文件时就已经把文件的全部内容加载到内存中了。如果打开文件较大,则可能会出现卡顿情况。more命令拥有一些交互功能,可以通过快捷键进行操作这个more的阅读器。less分屏显示文件内容(重点):基本语法:# less 文件名称特别注意:less命令不是加载整个文件到内存,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。另外:less可以通过上下方向键显示

2022-05-17 18:11:44 409

原创 Linux VIM编辑器

VIM编辑器:vi概述:vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。vim编辑器:Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。vim编辑器的安装:Centos通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了有网的前提下,可以使用yum工具对vim

2022-05-16 22:08:48 1748

原创 Linux文件管理

Linux下文件命名规则:可以使用哪些字符?理论上除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,不建议使用某些特殊字符,例如, <、>、?、* 等,尽量避免使用。工作时文件的命名规则:① 由于linux严格区分大小写,所以尽量都用小写字母② 如果必须对文件名进行分割,建议使用"_",例如:yunwei_bj_2020.log_ 下划线,在Linux操作系统中,可以使用Shift键 + 减号文件名的长度:目录名或文件名的长度不能超过 255 个字符

2022-05-16 17:36:57 359

原创 Linux基础命令

Linux 中的一些特殊文件还是要求写 "扩展名" 的,但 Linux 不依赖扩展名来识别文件类型,写这些扩展名是为了帮助运维人员来区分不同的文件类型。这样的文件扩展名主要有以下几种:压缩包:Linux 下常见的压缩文件名有 *.gz、*.bz2、*.zip、*.tar.gz、*.tar.bz2、*.tgz 等。为什么压缩包一定要写扩展名呢?很简单,如果不写清楚扩展名,那么管理员不容易判断压缩包的格式,虽然有命令可以帮助判断,但是直观一点更加方便。就算没写扩展名,在 Linux 中一样可以解压缩,

2022-05-16 16:05:09 172

原创 Kubernetes 应用商店-Helm

一、简介自己写yaml一个应用:(博客程序,wordpress+mysql)Deployment.yamlService.yamlPVC.yamlIngress.yamlxxxxcharts:图表 发布charts;docker发布镜像二、安装1、用二进制版本安装每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。下载 需要的版本解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)在解压目中找到helm程序,

2022-05-11 18:51:16 946

原创 Kubernetes ResourceQuota 及 调度原理

资源配额:当多个用户或团队共享具有固定节点数目的集群时,人们会担心有人使用超过其基于公平原则所分配到的资源量。资源配额是帮助管理员解决这一问题的工具。资源配额,通过 ResourceQuota 对象来定义,对每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命令空间中的 Pod 可以使用的计算资源的总上限。资源配额的工作方式如下:不同的团队可以在不同的命名空间下工作,目前这是非约束性的,在未来的版本中可能会通过 ACL (Access Control

2022-05-11 13:56:16 906

原创 Kubernetes 配置与存储

Secret:Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 将这些信息放在 secret 中比放在 Pod 的定义或者 容器镜像 中来说更加安全和灵活。Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。用户可以创建 Secret,同时系统也创建了一些 Secret。Secret种类:Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kub

2022-05-10 16:14:29 655

原创 Kubernetes NetworkPolicy

网络策略(网络隔离策略)https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/指定Pod间的网络隔离策略,默认是所有互通。Pod 之间互通,是通过如下三个标识符的组合来辩识的:其他被允许的 Pods(例外:Pod 无法阻塞对自身的访问)被允许的名称空间IP 组块(例外:与 Pod 运行所在的节点的通信总是被允许的, 无论 Pod 或节点的 IP 地址)1、Pod隔离与非隔离默认情况下,

2022-05-06 21:33:29 496

原创 Kubernetes Ingress基本使用

Ingress:为什么需要Ingress?Service可以使用NodePort暴露集群外访问端口,但是性能低下不安全缺少Layer7的统一访问入口,可以负载均衡、限流等ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。、我们使用Ingress作为整个集群统一的入口,配置Ingress规则转到对应的Servicenginx ingress:这是nginx官方做的,适配k8s的,分为开源版和nginx p

2022-05-06 21:01:15 1887 1

原创 Kubernetes 网络和负载均衡

Service:只需要访问这个Service,Service还会基于Pod的探针机制,(ReadinessProbe:就绪探针)完成Pod的自动剔除和线上工作。Service 即使是无头服务,别人pod不能用ip访问,但是可以用service名当成域名访问。Service的名字还能当成域名被pod解析将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。service中的type可选值:ClusterIP: 通过集群的内部 IP 暴露服务,选择该值时服务只能够在集群内部访问。 这也是

2022-05-06 15:57:20 568

原创 K8S RC RS DaemonSet StatefulSet Job CronJob

RC、RSRC: ReplicasController:副本控制器RS: ReplicasSet:副本集;Deployment【滚动更新特性】默认控制的是他RC是老版,RS是新版(可以有复杂的选择器【表达式】)。## RS支持复杂选择器 matchExpressions: key: pod-name value: [aaaa,bbb] # In, NotIn, Exists and DoesNotExist # In: value: [aaaa,bbb]必须存在,表示

2022-04-29 14:31:36 284

原创 K8S Deployment

Deployment:一个 Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力。你负责描述 Deployment 中的 目标状态 ,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态不要管理 Deployment 所拥有的 ReplicaSet我们部署一个应用一般不直接写Pod,而是部署一个DeploymentDeploy编写规约:https://kubernetes.io/zh/docs/concepts/w

2022-04-28 15:03:36 833

原创 kubernetes之Pod

工作负载:工作负载能让Pod能拥有自恢复的能力Pod:Pod 是一组(一个或多个) 容器(docker容器)的集合 (就像在豌豆荚中);这些容器共享存储、网络、以及怎样运行这些容器的声明。我们一般不直接创建Pod,而是创建一些工作负载由他们来创建PodPod形式:1.Pod对容器有自恢复能力(Pod自动重启失败的容器)2.Pod自己不能恢复自己,Pod被删除就真的没了(100,MySQL、Redis、Order)还是希望k8s集群能自己在其他地方再启动这个Pod3.多容器协同Pod。

2022-04-27 19:10:28 404

原创 kubernetes Object k8s对象概念

基础概念理解:集群:masterworker --nodePod:应用最终以pod为一个基本单位部署Label:很多资源都可以打标签Deployment:应用部署它,deployment最终会产生podService:负载均衡机制。理解 Kubernetes 对象1.k8s里面操作的资源实体,就是k8s的对象,可以使用yaml来声明对象。然后让k8s根据yaml的声明创建出这个对象;kubectl create/run /expose…2.操作 Kubernetes 对象

2022-04-26 17:18:55 808

原创 Kubernetes基础入门

# docker run --name hello-pod alpine 是跑一个容器,容器的粒度有点小kubectl run hello-pod --image=alpine #跑一个Pod。Pod里面其实也是容器# kubectl get pod #以前的docker ps -akubectl get pod -o wide #查看部署那个节点## 所有kubectl在master节点运行,把命令请求发给api-server。api-server一系列处理## master只

2022-04-21 19:50:29 1230

原创 Kubernets原理分解

主节点(master):快速介绍:master也要装kubelet和kubeproxy前端访问(UI\CLI):kube-apiserver:scheduler:controller manager:etcdkubelet+kubeproxy每一个节点的必备+docker(容器运行时环境)工作节点(node):快速介绍:Pod:docker run 启动的是一个container(容器),容器是docker的基本单位,一个应用是一个容器kubelet run 启动的一个

2022-04-16 20:09:24 1387

原创 Kubernetes基础

容器优势:**敏捷性:**敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。**及时性:**持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的 容器镜像构建和部署。**解耦性:**关注开发与运维的分离:在构建/发布时创建应用程序容器镜像,而不是在部署时。 从而将应用程序与基础架构分离。**可观测性:**可观察性不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他指标信号。**跨平台:**跨开发、测试和生产的环境一致

2022-04-16 19:51:50 135

原创 Docker网络

是什么:docker不启动,默认网络情况:ens33lovirbr0在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚机网卡提供 NAT访问外网的功能。我们之前学习Linux安装,勾选安装系统的时候附带了libvirt服务才会生成的一个东西,如果不需要可以直接将libvirtd服务卸载,y

2022-04-09 22:16:00 271

原创 Docker微服务实战

通过dockerfile发布微服务部署到docker容器:1.idea工具打包好jar包2.编写Dockerfile:# 基础镜像使用javaFROM java:8# 作者MAINTAINER zzyy# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmpVOLUME /tmp# 将jar包添加到容器中并更名为zzyy_docker.jarADD docker_boot-0.0.1-SNAPSHOT.jar zzy

2022-04-09 21:44:02 207

原创 DockerFile解析

是什么:Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网:https://docs.docker.com/engine/reference/builder/构建三步骤:1.编写Dockerfile文件2.docker build命令构建镜像3.docker run依镜像运行容器实例DockerFile构建过程解析:Dockerfile内容基础知识:1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数2:指令按照从上到下

2022-04-09 17:36:25 983

原创 docker安装3主3从redis集群

1.关闭防火墙+启动docker后台服务systemctl start docker2. 新建6个docker容器redis实例docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381 docker run -d --name

2022-04-09 16:27:31 157

原创 Redis亿级数据存储方案哈希槽分区

1~2亿条数据需要缓存,请问如何设计这个存储案例?单机单台100%不可能,肯定是分布式存储,用redis如何落地?一般业界有3种解决方案:第一种:哈希取余分区:2亿条记录就是2亿个k,v,我们单机不行必须要分布式多机,假设有3台机器构成一个集群,用户每次读写操作都是根据公式:hash(key) % N个机器台数,计算出哈希值,用来决定数据映射到哪一个节点上。优点:简单粗暴,直接有效,只需要预估好数据规划好节点,例如3台、8台、10台,就能保证一段时间的数据支撑。使用Hash算法让固定的一部分

2022-04-09 15:54:24 1133 3

原创 docker搭建mysql主从复制

第一步:新建主服务器实例3307docker run -p 3307:3306 --name mysql-master \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7第二步:进入/mydata/m

2022-04-09 15:36:22 118

原创 Docker常规安装简介

安装tomcat:docker hub上面查找tomcat镜像:docker search tomcat从docker hub上拉取tomcat镜像到本地:docker pull tomcatdocker images查看是否有拉取到的tomcat使用tomcat镜像创建容器实例(也叫运行镜像):docker run -it -p 8080:8080 tomcat解决:可能没有映射端口或者没有关闭防火墙把webapps.dist目录换成webapps先成功启动tomcat:

2022-03-26 18:47:25 1553

原创 Docker容器数据卷

坑:容器卷记得加入–privileged=true为什么?Docker挂载主机目录访问如果出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个–privileged=true参数即可如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题

2022-03-26 18:12:03 152

原创 本地镜像发布到私有库

本地镜像发布到私有库流程:是什么:1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。Docker Registry是官方提供的工具,可以用于构建私有镜像仓库将本地镜像推送到私有库:1. 下载镜像Docker Registry2. 运行私有库

2022-03-26 18:03:01 1968

原创 本地镜像发布到阿里云

本地镜像发布到阿里云流程:镜像的生成方法:OPTIONS说明:-a :提交的镜像作者;-m :提交时的说明文字;将本地镜像推送到阿里云本地镜像素材原型阿里云开发者平台:https://promotion.aliyun.com/ntms/act/kubernetes.html创建仓库镜像:选择控制台,进入容器镜像服务选择个人实例命名空间继续:仓库名称:继续:进入管理界面获得脚本:将镜像推送到阿里云将镜像推送到阿里云registry管理界面脚本:

2022-03-26 17:45:00 1382

原创 Docker镜像

是什么:是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。分层的镜像:以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载UnionFS(联合文件系统): Union文件系统(UnionFS)是一种分层、轻量级

2022-03-26 17:32:13 264

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除