自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Golang在终端上输出彩色文字

Golang在终端上输出彩色文字

2023-02-20 11:18:26 523

原创 mysql索引数据结构

在讲解mysql索引之前什么是索引,mysql索引就是一个排好序的数据结构排好序我们先姑且不论,数据结构我们应该都很清除,我们需要先知道常用于索引的数据结构有那些?二叉树红黑树B-Tree(b树)B+Tree(b+树)这里我们应该都知道mysql既不是使用二叉树也不是使用红黑树,而是使用的B+Tree。下面我们逐一分析,为什么mysql使用b+tree而不使用另外三种。附上一个数据结构演示网站:https://www.cs.usfca.edu/~galles/visualization/A

2021-11-24 10:32:32 370

原创 一个github使用最多的Git分支模型

本篇文章以帮助更多的人使用正确的git分支模型,这是一个非常成功的git分支模型,在github上广为流传。本篇文章不是一个基础文章,你需要先有一定的git基础知识。主分支从核心上说,开发模型很大程度上受到现有模型的启发。中央仓库拥有两个具有无限生命周期的主要分支:master developgit用户应该都非常熟悉在origin仓库的master分支,与master分支并行,存在另一个分支称为develop.我们认为origin/master是HEAD的主分支,它的源代码总是反映生

2021-11-11 13:46:36 670

原创 syslog协议

1. 简述该文章参考rfc5424,并对其内容进行了简练。在开始之前,有必要简单解释下什么是syslog。做过linux开发和运维的同学肯定经常使用syslog。syslog是一个规定的协议,规定了什么呢?用于传送事件通知消息。该协议允许使用多种传输协议去发送syslog消息。它还允许供应商以结构化的方式扩展消息格式。2. syslog定义rfc5424规定syslog是一个分层架构,它有以下三层:"syslog content" syslog消息内容 "syslog appli.

2021-10-14 19:47:56 3820 1

原创 理解和管理systemd

目录 理解systemd 启动、停止和查询systemd服务 修改已有systemd服务 创建新的systemd服务 将SysVinit服务转换为systemd服务 公共服务参数 Unit Parameters Install Parameters Service Parameters 将runlevels对应到targets 学习systemd init系统的基本原理:如何配置它并使用它来管理系统。理解systemdSystemd是Linux的..

2021-10-11 10:36:34 2076

原创 linux系统文件描述符详解

首先我们需要知道操作系统内维护了三个系统文件表:文件描述符表(file descriptor table),打开文件表(open file table),inode table。这三个表的结构见Table-1我们知道在like-unix系统中所有的IO操作(包括socket等)都是基于文件描述符的。程序刚刚启动的时候已经默认帮我们分配了三个文件描述符,就是我们常用的0标准输入,1标准输出,2标准错误。如果此时进程再打开新的文件,它的文件描述符会加1也就是3。POSIX标准要求每次打开文件时(含soc

2021-09-29 17:56:43 3212

原创 UDP数据报格式详解

源端口(Source Port): 该UDP数据报的来源主机的端口目标端口(Destination Port) : 目标主机端口长度(Length): UDP数据报长度,包含payload部分校验和(checksum): 校验和负载(payload): 数据包,发送的数据...

2021-09-28 16:04:15 1636

原创 IP数据报格式详解

使用IP在互联网上传输的数据是在被称为IP数据报的消息中携带的. 就像所有的网络协议消息一样,IP对它的数据报使用一种特定的格式。这里我们使用的是IPv4,所以我们将研究IPv4的数据报格式。IPv4数据报在概念上分为两部分:header和payload。头部包含地址和控制字段。而payload携带在网络上发送的实际数据。尽管IP是相对简单的,无连接的不可靠协议。IPv4报头包含了相当多的信息,这使得它相当的大。至少它是20个字节长,并且携带其他选项的话会更长。IP数据包格式将在表Table 1和图

2021-09-28 15:53:21 1548

原创 字符集和编码

字符 Character: 文字符号字符集 Charset:字符的集合,规定一系列的字符与数字的对应关系(编码)字符集都是由一些组织制定和发布的,例如ISO/IEC就负责制定字符集每个字符集都有一个标准编号,例如:ASCII字符集的编号为ISO/IEC 646(即由ISO/IEC发布的第646号标准文档)拉丁字符集(Latin)拉丁字符集收录了欧洲各个国家的字符,例如希腊字母 Aα Bβ拉丁字符集的编号为ISO 8859系列例如:ISO8859-1字符集,也就是Latin-1,是西欧常用字符

2021-09-26 14:31:19 1449

原创 openssl密码套件详解

说起加密套件(CipherSuite)这个词可能会比较陌生,但是说起ssl/tls可能就是一个众所周知的词汇了,我们知道ssl/tls是经常被用在http协议上以使http协议升级为安全的https协议,ssl协议呢也有自己的握手协商的过程,而这个握手协商的过程呢。就会使用到很多的加密算法,MAC算法,认证算法等等,而加密套件呢就可以理解为是这一些列密码算法的打包形式,其实密码算法的实现有很多,但是目前最主流的实现还是openssl,该文是以openssl来讲解的,有兴趣的可以了解一下其他的实现。先说用法

2021-09-24 17:51:03 9944

原创 最最详细sudo命令详解

sudo允许一个被批准的用户以超级用户或者另外一个用户的身份去执行命令,执行该命令的真实用户id被用于确定查询安全策略的用户名sudo提供了一个插件架构用于安全策略和输入输出日志,第三方可以开发和发布自己的策略和I/O日志插件,sudo默认的安全策略插件是sudoers,它使用/etc/sudoers文件进行配置安全策略决定了一个用户运行sudo的权限,该策略可能要求用户认证它自己(密码或者其他的身份认证机制),如果需要身份认证则用户必须在配置的时间内输入用户的密码,这个限制是特定于策略的,对于sudo

2021-09-22 17:09:25 14566

原创 Pylint静态代码检查使用指南

前言初学编码标准?Pylint可以作为您的向导,揭示幕后真正发生了什么,并帮助您成为一名更有见识的程序员。如果人们发现你的代码难以使用或理解,你的良好意图可能不会得到预期的结果。Python社区已经正式确定了一些推荐的编程风格,以帮助每个人以一种对共享代码最有意义的共同的、商定的风格编写代码。这种风格在PEP 8中被捕获,即“Python代码的风格指南”。:Pylint是一种快速而简单的方法,可以查看您的代码是否捕获了PEP 8的精髓,因此对其他潜在用户是友好的。简单一句话就是Pylint可以让你的

2021-09-10 08:51:09 1967

原创 Linux lsof命令入门教程

sof Linux命令用于列出打开的文件。在Linux系统上,所有东西都被认为是一个文件。这意味着文件、目录、套接字、管道、设备等都是文件,因此如果其中任何一个正在使用,lsof命令将列出所有这些东西。除了显示哪些文件正在使用之外,它还将提供关于哪个用户和进程正在使用该文件的详细信息。可以想象,在许多情况下,这是非常方便的,例如,当试图找出哪些连接正在连接到您的系统,或哪些进程占用了您试图卸载的磁盘时,等等。...

2021-09-03 08:45:06 402

原创 Linux如何检查磁盘空间

目的是为读者提供关于如何在Linux上检查磁盘空间的信息。从命令行检查磁盘空间下面的命令列表将告诉你如何在Linux上检查磁盘空间。首先,我们将使用du命令检查单个目录的磁盘空间使用情况,例如我们的主目录/home/zhangboqi:[root@localhost ~]# du -sh /home/zhangboqi17G /home/zhangboqi-s选项表示仅显示每个参数(路径)的总数如果我们对/home/zhangboqi中每个目录的大小感兴趣,我们可以执行:[root@

2021-08-19 15:58:45 761

原创 如何检查和监控Linux系统的CPU利用率

作为Linux管理员,密切关注服务器(或多个服务器)的运行情况非常重要。衡量其性能的一种方法是跟踪CPU使用情况。这将使您深入了解系统的性能,并显示硬件资源是如何在不同的运行服务中分配的。在本指南中,我们将介绍几种检查和监控Linux系统上CPU利用率的方法。无论您是管理服务器还是只是管理您的个人桌面,计算机的CPU使用情况都是很容易获得的有用信息。在本教程中,您将学习:如何使用top命令检查cpu利用率理解top和htop的输出使用systat包监控cpu使用情况如何配置cpu监控报警如

2021-08-19 15:47:55 12957

原创 怎么监控Linux系统的内存使用

了解系统的RAM使用量是有几个好处的。首先,它可以让你了解是否有必要升级服务器或者计算机的内存量。如果你看到内存使用率经常接近满容量,它可能表明你的系统需要升级。另一方面,他还可以帮助你跟踪系统上的问题。内存使用量的激增可能表明计算机上运行的进程有问题。在这篇针对Linux管理员的教程中,我们将介绍一些检查和监控Linux上RAM使用情况的方法。在这个教程你将要学习:使用free命令检查内存用量使用free命令持续监控内存用量free命令是怎么工作的?使用top命令检查内存用量使用htop命

2021-08-19 14:43:59 8224

原创 linux ps命令VSZ和RSS内存使用的区别

ps命令是linux系统上一个默认的命令行工具,它可以让我们深入了解正在运行的进程。它给我们提供了关于这些进程的很多有用的信息,包括它们的PID(process ID),TTY,运行命令或者运行程序的用户,等等。ps命令输出中有两列字段没有被过多的讨论过,它们是VSZ(Virtual Memory Size)和RSS (Resident Set Size)列。这两列都提供了关于进程使用多少内存的信息。在这个指南,我们将介绍它们的含义,以及如何解释它们在linux上的ps命令中显示的数据。VSZ and

2021-08-19 11:03:15 12756

原创 CAP定理的一个图解证明

CAP定理的一个图解证明CAP定理是一个分布式系统的基本定理,它声明任何分布式系统最多可以有以下三种属性中的两种:ConsistencyAvailabilityPartition tolerance本指南将用图文的方式总结Gilbert 和Lynch对CAP定理的说明和证明什么是CAP定理CAP定理指出一个分布式系统不能同时保持一致,可用和分区容错。听起来似乎简单,但是一致,可用,和分区容错是什么意思呢?见鬼,你说的分布式系统到底是什么意思?在这部分,我将介绍一个简单的分布式系统并且解释

2021-08-18 15:28:42 209

原创 linux内存统计之谁吃了我的内存

统计应用的RSS内存$ cat RSS.sh#/bin/bash for PROC in `ls /proc/|grep "^[0-9]"`do if [ -f /proc/$PROC/statm ]; then TEP=`cat /proc/$PROC/statm

2021-07-30 15:41:11 3095

原创 nginx怎样处理一个请求

基于服务名的处理方式nginx首先决定哪一个server应该处理请求,下面是三个虚拟服务器的配置,他们都监听端口 *:80server { listen 80; server_name example.org www.example.org; ...}server { listen 80; server_name example.net www.example.net; ...}server { listen

2021-07-01 14:41:21 602

原创 linux内核参数

在linux内核中有许多参数可以有用户进行配置。可以通过sysctl -a命令来查看。本文主要讲一些与内存相关的参数,会根据不断需要进行补充。关于内存相关的参数可以通过命令sysctl -a | grep "vm."进行查看,其中各个参数在官方文档1中也有详细描述。pagecache# 当系统脏页的比例或者所占内存数量超过 dirty_background_ratio(百分数)/dirty_background_bytes(字节) 设定的# 阈值时,启动相关内核线程(pdflush/flush/kd

2021-05-11 16:25:39 1863

原创 kubernetes安装部署dashboard

安装社区提供了kubernetes-dashbaord的YAML资源定义文件,直接下载YAML文件安装即可实现dashboard的安装接入#在master节点上执行:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml开放访问kubernetes-dashbaord安装完毕后,kubernetes-dashboard默认service的类

2021-02-08 15:02:34 528

原创 kubernets生产安装教程(单master)

kubernets生产环境安装CGroup驱动程序CGroup控制组是用来约束分配给进程的资源。当某个 Linux 系统发行版使用 systemd 作为其初始化系统时,初始化进程会生成并使用一个 root 控制组 (cgroup), 并充当 cgroup 管理器。 Systemd 与 cgroup 集成紧密,并将为每个 systemd 单元分配一个 cgroup。 你也可以配置容器运行时和 kubelet 使用 cgroupfs。 连同 systemd 一起使用 cgroupfs 意味着将有两个不同的

2021-02-03 15:03:43 280

原创 linux之cgroups

cgroups(Control Groups)是linux内核提供的一种机制,这种机制可以根据需求把一系列系统任务整合到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架,,简单的说,cgroups可以限制,记录任务组所使用的物理资源,本质上,cgroups是系统内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源限制和追踪的目的。cgroups是容器化时代必须了解的技术,使用cgroups我们可以很方便的限制容器可以使用的cpu,内存等资源。cgro

2021-01-15 17:03:32 584

原创 Jenkins安装及使用

使用Jenkins自动部署微服务在之前Docker的讲解中,整个微服务项目都是通过手动部署的,但在实际开发过程中,代码会不断更新,这时就需要不断地进行项目部署和测试,所以下面我们介绍一种持续集成工具Jenkins来完成微服务项目的持续集成和自动化部署Jenkins进行项目集成管理的流程如下:(1)开发人员将代码提交到代码仓库中(github)(2)持续集成工具Jenkins会定期(或人工)从代码仓库拉取指定的项目。(3)Jenkins工具会根据具体配置,自动化打包,构建镜像,推送镜像,并最终生成D

2021-01-12 14:33:12 152

原创 超详细Docker应用

DockerDocker的特点更快的交付和部署更高效的虚拟化更轻松的迁移和扩展更简单的管理Docker和虚拟机的区别虚拟机是运行在每个应用层级的客户端操作系统上的,对操作系统依赖性强Docker容器是基于进程的隔离,多个容器可以共享单个内核,并且创建Docker容器的镜像所需要的配置不依赖于宿主机系统,真是因为这种隔离性,使Docker的应用可以运行在任何地方Docker的安装#安装yumutils库$ yum install -y yum-utils#添加docker仓库

2021-01-08 14:23:59 1423

原创 springmvc的GenericFilterBean和DelegatingFilterProxy和OncePerRequestFilter过滤器

DelegatingFilterProxy这时一个filter的代理类,什么意思呢? 我们知道:当我们实现Filter接口并配置到web.xml中这个filter就会生效,但是在这个filter中我们是无法使用自动注入功能的,因为这个filter并没有被spring管理,那么如果我们想实现一个自定义的filter并且可以进行自动注入spring管理的bean那该多好,spring给我们提供了DelegatingFilterProxy类,注意这是一个过滤器,实现了Filter接口,怎么使用呢?我们需要在

2020-11-20 16:55:21 2061

原创 Spring5.2.x源码Gradle编译问题记录

在使用Gradle编译spring5.2的时候,遇到以下错误从上面的错误信息可以看到gradle在构建的时候需要下载一些插件,但是确下载不下来,我们看这一行PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target其实这是java在发送ssl连接的时候,站点的证书不是受

2020-11-12 17:24:38 373

原创 C语言编译过程详解

编译过程C语言是一种编译型语言,需要把源文件进行编译之后才能运行,它的编译过程如下:预处理:展开头文件、宏替换,去掉注释,条件编译编译:检查语法,生成汇编汇编:把生成的汇编文件汇编成机器码链接: 链接到一起生成可执行程序 a.out创建hello.c文件,用于测试:#include <stdio.h>#define PI 3.14int main(){ printf("Hello C %f\n",PI); return 0;}预处理预处理会做展开头文

2020-11-11 09:48:43 1698

原创 最详细RedisCluster集群环境搭建与原理详解

上篇文章我们介绍了redis主从复制和哨兵模式搭建附上 链接地址现在我们介绍下RedisCluster模式,我们知道redis 哨兵模式已经可以实现redis的主从自动故障切换,但是哨兵模式无法实现水平扩展,也就是我们只能有一个master节点提供服务,如果我们要缓存的数据非常多,那单机的master就无法满足我们的需求,redis给我们提供了一种更好的方式也就是Redis Cluster。Redis cluster实现了所有的哨兵模式的功能并且还可以支持水平扩展先说明下环境,我们将完全实现生产环境的模

2020-11-06 17:42:23 628 1

原创 Redis主从复制及哨兵模式详解

说明:主从复制和哨兵模式我都会在一台机器上进行搭建,Redis的安装这里不做说明了,官网上都有特别简单,其实主从复制和哨兵模式搭建也非常简单,Redis版本:6.xRedis主从复制说明:我这里会搭建一主节点一个从节点,主节点启动在6379端口,从节点在6380端口首先我们新建一个config文件夹用来存放redis的配置文件,新建data目录用来存放redis的数据文件,目录随便,我这里是在redis目录下,把redis.conf文件复制两份到config目录下[root@localhost

2020-11-06 09:04:09 323

原创 Redis的持久化存储方式详解

redis的两种持久化方式rdb和aof,这两种方式是可以同时启用的,如果同时启用则redis在重新启动时会加载aof文件,因为aof文件具有更好的持久化保证RDB是以内存快照的方式进行持久化,每次持久化都会把当前内存中的所有数据重新写到dump.rdb文件.可以根据一些配置策略去触发内存的持久化::save 900 1 # 900秒内至少有一次key修改操作save 300 10 # 300秒内至少有10次key修改操作save 60 10000 # 60秒内至少有10000次key修改操作

2020-11-05 15:48:02 168

原创 使用openssl创建CA和申请证书

在开始申请证书之前,我们都知道要申请自己的数字证书必须向CA(certficate authority)机构提交CSR(Certficate Signing Request)证书申请,下面我们就自己创建CA并利用创建好的CA给客户颁发证书注意:如果对各证书文件名或者openssl不太了解的,可以先看我另一篇文章 https://editor.csdn.net/md/?articleId=109294856创建CA首先我们要先知道一个配置文件,就是/etc/pki/tls/openssl.cnf ,该配

2020-10-27 14:58:25 1865

原创 史上最全数字证书及openssl命令详解

数字证书相关文件说明PEM,DERX509证书标准定义的两种编码格式PEM纯文本文件格式,以-----BEGIN xxx-----开头,以----END xxx—结尾可以通过文本编辑器打开查看文本结构,如果要查看原始数字证书的信息需要命令:openssl x509 -in xxx.pem -text -nooutDER二进制文件格式,可以通过命令工具提取其中的信息或进行编码转换:命令:openssl x509 -in xxx.der -inform der -text -noout..

2020-10-27 13:59:12 1593 1

原创 idea常用快捷键-逐步完善

CTRL+ALT+方向键 返回上一个或者下一个查看点CTRL+N 查找类CTRL+SHIFT+F 搜索CTRL+ALT+T 快速生成代码块Ctrl+”+/-”,当前方法展开、折叠Ctrl+Shift+”+/-”,全部展开、折叠

2020-09-30 09:20:37 119

原创 空间分配担保机制

在JDK 6 Update 24之后,HandlePromotionFailure参数不会再影响到虚拟机的空间分配担保策略,观察OpenJDK中的源码变化(见代码清单),虽然源码中还定义了HandlePromotionFailure参数,但是在代码中已经不会再使用它。JDK 6 Update 24之后的规则变为只要老年代的连续空间大于新生代对象总大小或者历次晋升的平均大小就会进行Minor GC,否则将进行Full GC。...

2020-09-30 09:19:18 283

原创 cms垃圾收集的阶段

cms垃圾收集的阶段初始标记: 标记gc root,且仅标记gc root,不会向下找 ,触发stw,单线程执行的,但是时间非常的短并发标记: 根据gc root向下标记所有引用对象为非垃圾对象,不触发stw所以可能会导致已经标记过的对象状态发生变化,标记时间较长,基本gc整个的耗时都在这个阶段,大概占80%重新标记: 修正并发标记阶段因为没有stw导致标记产生变动的那部分对象,该阶段的停顿时间一般比初始阶段稍长,但远比并发标记阶段时间短,主要用三色标记里的增量更新算法并发清理: 开启用户线程,同时

2020-09-30 09:18:53 333 1

原创 常用jvm参数详解

###JVM参数规则说明-XX:+ 启用option,例如:-XX:+PrintGCDetails启动打印GC信息的选项,其中+号表示true,开启的意思-XX:- 不启用option,例如:-XX:-PrintGCDetails关闭启动打印GC信息的选项,其中-号表示false,关闭的意思-XX:= 设定option的值为数字类型,可跟单位,例如 32k, 1024m, 2g。例如:-XX:MaxPermSize=64m-XX:= 设定option的值为字符串,例如: -XX:HeapDumpP

2020-09-30 09:18:03 314

原创 最新openjdk15编译和调试(window10)

安装cygwin在window平台编译jdk必须借助cygwin工具,cygwin是一款在window上模拟linux环境的工具,相当于在window上运行一个子系统在cygwin上安装必须的依赖工具,运行下面的命令安装cygwin上的工具/setup-x86_64 -q -P autoconf -P make -P unzip -P zip安装visual studio 2017注意:这里一定要下载英文版的,否则会有问题...

2020-09-30 09:03:33 1240

tomcat7 for linux

tomcat7安装包 for linux

2014-10-18

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

TA关注的人

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