自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

迷失在代码的海洋里

比你优秀的人都那么努力,你努力又有什么用。

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

原创 docker registry web ui 及私有镜像仓库 安装配置记录

docker-registry-web,docker registry web ui,容器化部署

2022-11-02 13:14:27 1389

原创 k8s重启后kubectl get nodes: Unable to connect to the server: x509: certificate has expired or is not ye

执行 kubectl get nodes报错 Unable to connect to the server: x509: certificate has expired or is not yet validk8s/kubelet 证书过期解决

2022-08-29 12:01:00 973

原创 ThreadLocal面试核心

并发编程是一项非常重要的技术,它让我们的程序变得更加高效。但在并发的场景中,如果有多个线程同时修改公共变量,可能会出现线程安全问题,即该变量最终结果可能出现异常。为了解决线程安全问题,出现了很多技术手段,比如:使用或,给访问公共资源的代码上锁,保证了代码的。但在高并发的场景中,如果多个线程同时竞争一把锁,这时会存在大量的锁等待,可能会浪费很多时间,让系统的响应时间一下子变慢。因此,还提供了另外一种用空间换时间的新思路:。它的核心思想是:共享变量在每个都有一个,每个线程操作的都是自己的副本,对另外的线程没有影

2022-06-06 16:45:57 438

原创 ubuntu20.04配置(网络、ssh、nfs)记录

静态ip配置:network: ethernets: ens33: addresses: [192.168.5.200/24] dhcp4: no gateway4: 192.168.5.1 nameservers: addresses: [8.8.8.8,114.114.114.114]openssh配置:sudo apt-get install openssh-servervim /etc/ssh/ssh_con...

2022-05-10 14:49:50 440

原创 docker 安装jenkins

jenkins工作原理:1,docker pull jenkins/jenkins2,创建Jenkins挂载目录并授权权限(在服务器上先创建jenkins工作目录 /usr/local/docker_jenkins,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改)...

2022-02-11 15:13:06 692

原创 Hystrix 原理分析

认识HystrixHystrix是Netflix公司开源的一款容错框架。 它可以完成以下几件事情:资源隔离,包括线程池隔离和信号量隔离,避免某个依赖出现问题会影响到其他依赖。 断路器,当请求失败率达到一定的阈值时,会打开断路器开关,直接拒绝后续的请求,并且具有弹性机制,在后端服务恢复后,会自动关闭断路器开关。 降级回退,当断路器开关被打开,服务调用超时/异常,或者资源不足(线程、信号量)会进入指定的fallback降级方法。 请求结果缓存,hystrix实现了一个内部缓存机制,可以将请求结果进

2021-07-27 17:41:54 1171

原创 spring boot 启动过程

main方法进入:SpringApplication.run 静态方法一,初始化SpringApplication实例,构造器内执行: 1,判断应用程序的类型(none,servlet,reactive) 1,加载所有初始化容器(获取默认类加载器:AppClassLoader,通过反射创建实例) 1,加载所有监听器 1,找到程序运行的主类,并通过反射创建实例二,调用SpringApplication 实例 的run方法 1,创建并启动StopWatch计时器 2,...

2021-07-23 16:27:31 82

原创 linux下maven私服 nexus2.x oss 搭建

nexus 版本有两类:pro 收费、oss开源本文基于nexus-2.14.20-02oss编写安装好jdk和maven环境的前提下:1,官网下载nexus2.x oss (3.x 版本需要最低jdk1.8):http://www.sonatype.org/nexus/go如果下载不了的同学可以直接点击这里nexus-2.14.20-02-bundle.tar.gz v0ud2 解压到指定目录:tar -zxvf nexus-2.14.20-02-bundle.tar.gz...

2021-07-21 10:00:20 391

原创 如何保证线程的顺序执行的四种方法

1使用jointhread.join();使主线程等待thread执行完毕。2使用Executors.newSingleThreadExecutor()。

2021-06-03 17:42:32 1758

原创 java中的线程池

线程池的创建方式ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) ...

2021-05-29 18:08:13 501

原创 java中创建线程的方式和区别

ThreaddRunnableCallable

2021-05-29 15:40:14 72

转载 缓存一致性协议MESI

缓存一致性协议发展背景:现在的CPU基本都是多核CPU,服务器更是提供了多CPU的支持,而每个核心也都有自己独立的缓存,当多个核心同时操作多个线程对同一个数据进行更新时,如果核心2在核心1还未将更新的数据刷回内存之前读取了数据,并进行操作,就会造成程序的执行结果造成随机性的影响,这对于我们来说是无法容忍的。而总线加锁是对整个内存进行加锁,在一个核心对一个数据进行修改的过程中,其他的核心也无法修改内存中的其他数据,这样对导致CPU处理性能严重下降。缓存一致性协议提供了一种高效的内存数据管理方案,它只

2021-04-15 11:27:23 105

原创 String.intern()

对于String.intern()清楚以下几点便能完全理解其作用:1,new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用(内存地址)。调用str1.intern(),编译器会将"abc"字符串添加到常量池中,并返回指向该常量的引用。此后再调用str2.intern(),因常量池中已有"abc"存在,因此就直接返回常量池中的"abc"的引用。2,通过字面量赋值创建字符串(如:S

2021-04-13 14:33:58 3156

原创 JVM内存模型

运行时数据区域java虚拟机规范,java虚拟机管理的内存将分为下面五大区域统称运行时数据区:其中方法区(也叫非堆)、堆线程共享,虚拟机栈、本地方法栈、程序计数器线程私有。程序计数器程序计数器是一块很小的内存空间,它是线程私有的,可以认作为当前线程的行号指示器。对于一个处理器,在一个确定的时刻都只会执行一条线程中的指令,一条线程中有多个指令,为了线程切换可以恢复到正确执行位置,每个线程都需有独立的一个程序计数器,不同线程之间的程序计数器互不影响,独立存储。这块内存区域是虚拟机规范中唯一没

2021-04-12 11:05:16 330

原创 BIO、NIO和AIO

BIO(Blocking I/O)我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端线程会等待请求结束后才继续执行。NIOIO流是阻塞的,NIO流是不阻塞的。 IO 面向流(Stream oriented),而 NIO 面向缓冲区(Buffer orie

2021-04-07 17:00:28 98

原创 五种IO模型梳理

5中IO模型:阻塞I/O(blocking IO) 非阻塞I/O(noblocking IO) I/O复用 (IO multiplexing ) 信号驱动I/O (signal driven IO) 异步I/O (asynchronous IO)缓存 I/O  缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓存( page cache )  中,也就是...

2021-04-07 16:24:21 95

原创 synchronized和lock底层原理整理

在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,而ReetrantLock的性能能维持常态。synchronized锁不释放,其他线程将一直等待。JVM层面上实现的,异常自动释放锁它有多个队列,当多个线程一起访问某个对象监视器的时候,对象监视器会将这些线程存储在不同的容器中。 Contention List:竞争队列,所有请求锁的线程首先被放在这个...

2021-04-07 11:15:25 1335 2

原创 Mysql索引原理整理

整体概念在学习索引之前,先了解下数据库的整体概念。逻辑架构MySQL的逻辑结构分为三层:客户端层、核心服务层、存储引擎层。客户层:连接处理、授权认证、安全等功能均在这一层处理。 核心服务层:包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现,如:存储过程、触发器、视图等。 存储引擎层:其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些A...

2021-04-06 16:31:21 126

原创 Spring Cloud学习整理

Netflix 在Spring Cloud项目中占着重要的作用,Netflix 公司提供了包括Eureka、Hystrix、Zuul、Archaius等在内的很多组件,在微服务架构中至关重要,Spring在Netflix 的基础上,封装了一系列的组件,命名为:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等常用组件Spring Cloud Eureka注册中心。负责服务的注册与发现,维护服务生产者、注册中心、服务消费者三者.

2021-04-01 14:19:18 155 2

转载 服务治理的概念

架构演进微服务微服务就是一些协同工作的小而自治的服务,两个特性:简单连接:1、在连接通道方面,微服务很轻,一般采用轻量级的通讯协议(如HTTP)和简单数据格式(如JSON)。2、无需中心节点提供复杂业务处理,把业务的职责还给服务端,更灵活地响应业务变化。分散管理:1、分散业务-业务高内聚、低耦合,简化依赖关系2、分散数据-微服务数据块内部的表紧密相关,块间数据相关性弱。在实施层面,数据逻辑上分离,或者使用独立数据库,物理上隔离。3、分散物理资源-借助虚拟机和容器技术,

2021-04-01 11:05:41 949

原创 springMVC原理整理-初始化过程

Web应用的初始化过程当一个Web应用部署到tomcat容器内时,在Web应用开始响应执行用户请求前,以下步骤会被依次执行:部署描述文件(所有web应用启动的初始位置都在web.xml)中由<listener>元素标记的事件监听器会被创建和初始化。 对于所有事件监听器,如果实现了ServletContextListener接口,将会执行其实现的contextInitialized()方法。 部署描述文件中由<filter>元素标记的过滤器会被创建和初始化,并调用其init

2021-03-25 18:16:06 276

原创 SpringMVC原理-请求处理

MVC原理图M-Model 模型层(完成业务逻辑:有javaBean构成,service+dao+entity)V-View 视图层(做界面的展示 jsp,html……)C-Controller 控制器层(接收请求—>调用模型—>根据结果派发页面)springMVC重要组件springMVC是spring的一个子模块。DispatcherServlet:前端控制器。用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的.

2021-03-24 16:45:56 247

原创 Tomcat原理整理

目录接口功能组件Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其中连接器和容器相辅相成,多个 Connector 和一个 Container 一起构成了基本的 web 服务 Service。每个 Server可以管理多个 Service,整个 Tomcat 的生命周期由 Server 控制。Connector:负责对外接收反馈请求。是tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递

2021-03-23 12:23:36 470

原创 SpringAOP笔记

代理模式静态代理,动态代理代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色,Proxied)以及代理类角色(Proxy)抽象主题角色:可以是接口,也可以是抽象类;委托类角色:真实主题角色,业务逻辑的具体执行者;代理类角色:内部含有对真实对象RealSubject的引用,负责对真实主题角色的调用,并在真实主题角色处理前后做预处理和后处理。静态代理:静态代理需要自己人工编写代理类代码,常用的如,接口、继承,XXX.java-XXXImpl.java.

2021-03-22 16:21:00 72

转载 HTTP协议原理

简介HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。HTTP是一种无状态(stateless..

2021-03-18 18:37:58 378

原创 JAVA常用数据结构

collectionList接口元素按插入顺序保存,元素可重复ArrayList实现:数组实现,查询快,增删慢,线程不安全LinkedList实现:链表实现,查询慢(要移动指针),增删快,线程不安全Vector(矢量数组)接口:数组实现,查询快,增删慢,线程同步,Stack实现Set接口顺序和元素的hash值有关,元素唯一,HashSet:和HashMap的key存储实现一样,可以为null,线程不安全 LinkedHashSet:链表+h...

2021-02-25 11:49:30 80 1

原创 正则表达式基础用法总结

元字符:. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d匹配数字\b匹配单词的开始或结束(一般用于校验整个字符串)^ 匹配字符串的开始(整个字符串最开头)$ 匹配字符串的结束(整个字符串最后)字符转义如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\...

2021-02-20 17:21:21 79

原创 二进制

基本类型:byte:1字节,8位,有符号,包装类Byteshort:2字节,16位,有符号,包装类Shortint:4字节,32位,有符号,包装类Integerlong:8字节,64位,有符号,包装类Longfloat:4字节,32位,单精度,包装类Floatdouble:8字节,64位,双精度,包装类Doubleboolean:1位,包装类Booleanchar:2字节,16位,包装类Character二进制:原码:第一位为符号位,0负,1正,2的原码: 00000

2021-02-20 15:43:56 773

原创 docker 常规使用命令整理

查看各镜像版本:docker search xxx拉取镜像:docker [image] pull xxx[:version] (默认拉取最新版)查看已安装的镜像:docker images,docker image ls查看运行中的容器:docker ps查看运行过的容器:docker ps -a删除镜像:docker rmi name运行容器:nginx:...

2020-04-17 17:43:44 222

原创 centos7 安装mysql8(在线安装)

完全卸载mysql方法:可以使用rpm -qa | grep -i mysql 查看是否安装过mysql。1,删除mysql:(一般用rpm -e 的命令删除mysql,这样表面上删除了mysql,可是mysql的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而yum命令比较强大,可以完全删除mysql。用rpm删除后再次安装的时候会提示已经安装了,这就是rpm没删除干净的原因)...

2019-11-27 11:32:09 139

原创 记一次linux下mysql 5.6安装(压缩包)

1,创建用户分配权限: 创建用户组: groupadd mysql 创建用户并且分配组: useradd -g mysql mysql 设置用户密码:passwd mysql 给用户组授权:chown -R mysql:mysql /usr/local/ (很重要,可能会导致启动不成功)2,解压mysql压缩包 解压命令:tar -...

2018-12-29 20:25:49 702

原创 linux 下rabbit mq 服务安装

1,安装依赖 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2,由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm...

2018-12-09 17:55:26 184

原创 记 linux 下搭建以太坊区块链

1,安装go语言(百度)。2,安装geth。     下载源码解压编译:https://github.com/ethereum/go-ethereum cd go-ethereum-master make geth   运行 /usr/software/go-ethereum-master/build/bin/geth version      显示如下表明安装成功...

2018-10-24 16:13:16 1521

转载 JVM原理讲解和调优

一、什么是JVM    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Ja...

2018-07-20 16:44:32 171

原创 linux-centos下手动编译安装nginx

1,下载:wget http://nginx.org/download/nginx-1.13.7.tar.gz2,解压:tar -xzvf nginx-1.13.7.tar.gz3,安装依赖:yum install gccyum install pcre-develyum install zlib zlib-develyum install openssl openssl-d...

2018-07-17 12:32:35 214

原创 linux-centos环境下 手动编译安装redis

1,下载安装包:wget http://download.redis.io/releases/redis-4.0.8.tar.gz2,解压安装包tar -xzvf redis-4.0.8.tar.gz3,编译cd redis-4.0.8makecd srcmake install PREFIX=/usr/local/redis编译完成之后会在/usr/local/...

2018-07-17 11:13:21 240

原创 spring boot整合spring cloud

本次使用spring boot-1.5.2.RELEASE,spring cloud-Dalston.RC1,集成。创建注册中心:创建test-register 项目,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xml...

2018-05-18 16:50:37 1704

原创 spring boot集成elasticsearch详细及报错修正

spring boot,es版本众多,经常遇到版本不兼容的问题,现在提供一个兼容的版本springboot-1.5.2.RELEASE,elasticsearch-2.3.5, 密码:mbzr,官网下载速度很慢,这里提供一个下载地址。安装linx 安装es: 解压压缩包 tar -xvf elasticsearch-2.3.5.tar.gz。 启动es ./ela...

2018-05-18 14:27:19 3224

空空如也

空空如也

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

TA关注的人

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