自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010502101的博客

成长中的菜鸟程序员

  • 博客(317)
  • 资源 (4)
  • 论坛 (2)
  • 收藏
  • 关注

原创 4、执行引擎

文章目录1. 执行引擎介绍2. 指令理解3. Hotspot虚拟机中解释器为什么与JIT编译器并存4. JIT热点代码探测方式5. HotSpot中解释器、编译器设置方式6. AOT编译器1. 执行引擎介绍执行引擎是java虚拟机和核心组件之一。JVM的主要任务是负责装载字节码到内部,但字节码不能直接运行在操作系统上,因为字节码不等同于机器指令,它内部包含的仅仅只是一些能被JVM识别的字节码指令、符号集,以及其他辅助信息。执行引擎(Execution Engine)的任务就是将字节码指令解释/编译

2021-08-05 01:22:57 34

原创 3、直接内存

文章目录直接内存(Direct Memory)并不是虚拟机运行时数据一部分,也不是《Java 虚拟机规范》中定义的内存区域。如果这部分内存被频繁使用,也会导致OOM。在JDK4中新引入的NIO(New Input/Output)类,其引入了一种基于通道(Channel)与缓冲区(Buffer)的方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。这在一些场景中可以显著提高性能,避免了java堆和Nativ

2021-07-28 00:47:15 10

原创 java对象实例化内存布局与访问定位

文章目录1. 对象实例化方式2. 对象创建的步骤3. 对象的内存布局4. 对象的访问定位1. 对象实例化方式通过new的方式,例如Persion p = new Persion()通过Class的newInstance()该方式已经被标记过时,这种创建对象的方式有一定局限性:只能创建构造函数为无参的对象;只能创建构造函数为pulic类型的。通过Constructor的newInstance这种方式正好弥补了Class.instance的两种局限性,可以实例化非public、带有参构

2021-07-25 15:06:22 13

原创 2、JVM运行时数据区

文章目录运行时数据区介绍1、程序计数器2、虚拟机栈2.1、虚拟机栈介绍2.2、虚拟机栈异常运行时数据区介绍上节讲解了JVM的类加载机制,class字节码文件经类加载子系统加载后存放到运行时数据区的方法区中。而运行时数据区就是Java虚拟机在执行Java程序的过程中会把它管理的内存分为若干个不同的数据区域。这些区域有着各自的用途,一级创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》中规定,jvm所管理的内存大致包括以下几个运行

2021-07-05 01:22:44 27

原创 JVM方法介绍

文章目录1、静态引用与动态引用2、虚方法与非虚方法1、静态引用与动态引用在JVM中,将符号的引用转换为调用方法的直接引用与方法的绑定机制有关静态引用(静态链接)当字节码文件被装入JVM内部时,如果被调用的方法在编译期确定,且运行期保持不变,这种情况下将调用方法的符号引用转换为直接引用的过程称为静态引用,或静态链接;动态引用(动态链接)如果被调用的方法在编译期不确定,在运行期将调用方法的符号引用转换为直接引用的工程称为动态引用,或动态链接。如下代码所示,有一个基类Persion,子类

2021-06-13 11:49:25 28

原创 1、JVM类的加载子系统

文章目录1、加载2、链接2.1 验证2.2 准备2.3 解析3、初始化如下图所示,JVM类的加载系统负责从文件系统、网络中或者压缩包中加载Class字节码文件。整个类加载子系统主要由三大步骤完成:加载 -> 链接 -> 初始化。经过类加载系统加载后,Class文件被加载到内存中并对类进行初始化(注意只是初始化了类的静态变量或者静态代码块,并不是执行对象的初始化方法,可以参考后续介绍)。1、加载类加载子系统的加载阶段主要由三类加载器进行加载Class文件:引导类加载器、扩展类加载器、系统类

2021-05-08 22:49:02 32 1

原创 3.6 控制器之Service

文章目录二、Service类型1. ClusterIP类型2、NodePort类型3. ExternalName类型服务二、Service类型1. ClusterIP类型如上图所示,ClusterIP把客户端的请求通过负载均衡路由到集群后端的pod中,ClusterIP类型的service主要在每个node节点上使用ipvs,将发到ClusterIP service端口的数据,转发到后端pod的kube-proxy中,然后kube-proxy内部实现负载均衡方法,查询到ClusterIP servi

2021-03-21 13:26:24 22

原创 并发读源码——并发读源码Striped64/LongAdder/DoubleAdder/LongAccumulator/DoubleAccumulator

文章目录1、LongAdder原理介绍2、LongAdder源码介绍3、LongAdder并发时应用4、DoubleAdder分析1、LongAdder原理介绍LongAdder是JDK8中新增加的一个并发类,LongAdder主要用于对long型变量进行CAS(CAS可以参考前面系列文章)操作,但AtomicLong也是对long型变量进行CAS操作,两者什么区别呢?AtomicLong内部维护了一个volatile long类型的变量,多个线程并发CAS操作该变量,而LongAdder把一个lon

2021-03-16 00:08:23 39

原创 并发读源码——AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray

文章目录1、AtomicIntegerArray介绍2、AtomicIntegerArray原理3、AtomicIntegerArray源码详解4、AtomicIntegerArray多线程用法5、AtomicLongArray/AtomicReferenceArray介绍6、保证数组元素另一用法1、AtomicIntegerArray介绍AtomicIntegerArray提供了数组元素的原子操作,前面章节介绍的AtomicInteger,是对其中的一个int类型的值保证原子性,而AtomicInte

2021-02-27 18:11:10 41

原创 并发读源码——AtomicIntegerFieldUpdater/AtomicLongFieldUpdater/AtomicReferenceFieldUpdater

文章目录1、AtomicIntegerFieldUpdater介绍2、AtomicIntegerFieldUpdater原理3、AtomicIntegerFieldUpdater源码解析4、AtomicIntegerFieldUpdater多线程用法1、AtomicIntegerFieldUpdater介绍AtomicIntegerFieldUpdater与AtomicInteger什么区别呢?AtomicInteger可以保证内部的属性的操作时原子性的;AtomicIntegerFieldUpdate

2021-02-21 00:06:20 49 2

原创 并发读源码——AtomicStampedReference/AtomicMarkableReference

文章目录1、AtomicStampedReference介绍2、AtomicStampedReference原理分析3、AtomicStampedReference源码分析4、AtomicStampedReference多线程用法1、AtomicStampedReference介绍前面两节介绍的AtomicBoolean、AtomicInteger、AtomicLong都是解决的CAS问题,即拿读取的变量和内存变量比较,如果相同就把要更新的值更新到内存中。但有一种情况:假设一个对象O中一个变量的值为1,

2021-02-06 21:12:39 44

原创 并发读源码——AtomicBoolean

文章目录1、AtomicBoolean介绍2、源码解析3、多线程用法1、AtomicBoolean介绍上一节介绍了AtomicInteger加减操作的原子性,通过乐观锁实现,本节介绍AtomicBoolean,该类实现了对布尔类型比较和设置封装为原子操作。AtomicBoolean的源码以及用于都与AtomicInteger类似,可以参考上篇文章。例如如下操作if(flag == true){ flag = false;}该操作是线程不安全的,如果用AtomicBoolean类型封装布尔类型,

2021-01-30 22:01:44 36 2

原创 并发读源码——AtomicInteger/AtomicLong/AtomicStampedReference

文章目录1、AtomicInteger描述2、源码解析3、AtomicInteger演示示例4、多线程用法1、AtomicInteger描述AtomicInteger从名字上看是操作Integer整数的,但Integer是线程不安全的,AtomicInteger是线程安全的。AtomicInteger的作用可以把两个Integer对象的加减乘除等操作变成一个原子操作,如果对Integer的操作不用AtomicInteger,也可以选择用synchronized锁住两个Integer对象的操作,synch

2021-01-26 23:34:36 69 1

原创 3.17 节点网络安全

文章目录一、pod使用宿主节点的linux命名空间一、pod使用宿主节点的linux命名空间linux支持6类命名空间:进程通信(IPC)命名空间、进程PID命名空间、网络命名空间、挂载命名空间、UTS命名空间、用户命名空间。pod通过命名空间与其他pod或宿主机默认命名空间隔离。每个pod有自己的命名空间,比如每个pod有自己的网络命名空间...

2020-12-16 00:06:22 115

原创 failed to create kubelet: misconfiguration: kubelet cgroup driver: “systemd“ is different from docke

在k8s集群中调度pod时,发现调度到其中一个节点的pod都是pending状态,怀疑该节点有问题。通过kubectl get node -o wide发现该节点为notReady状态。在该问题节点上执行命令journalctl -f -u kubelet查看日志状态[root@k8s-node02 docker.service.d]# journalctl -f -u kubelet-- Logs begin at 二 2020-09-01 00:02:17 CST. --12月 13 12:31

2020-12-13 16:45:51 180

原创 docker镜像加速

安装docker后,从docker hub下载镜像非常缓慢,经常执行好几次docker pull才能下载成功,可以选择国内镜像加速下载镜像,编辑/etc/docker/daemon.json,内容如下:{ "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ]}其中http

2020-12-12 11:10:26 121

原创 3.16 StatefulSet 部署有状态应用

文章目录一、认识StatefulSet二、StatefulSet原理1、提供稳定的pod网络标识2、为每个pod提供稳定的存储三、StatefulSet应用1、部署StatefulSet2、可以为StatefulSet管理的pod创建一个ClusterIP service3、StatefulSet处理时效节点一、认识StatefulSetStatefulSet可以与ReplicaSet对应来看,ReplicaSet通过模板可以创建多个pod副本,多个pod名字和IP地址不同外,其它都相同,他们共享持久卷

2020-12-08 01:00:54 117

原创 3.15 Helm功能

文章目录一、什么是Helm二、Helm的安装三、helm自定义模板四、helm基本操作一、什么是Helm在未使用helm之前,k8s部署deployment、service等资源需要分别定义资源清单文件,每一个单独进行部署,尤其是微服务多应用后,步骤繁多,helm通过使用一键打包方式,支持版本已经发布部署以及管理,简化了k8s的应用部署和管理。helm是官方提供的类似于linux中yum包管理,对整个部署流程进行封装。helm包含两个重要概念:chart和release。chart即为把k8s部署步骤

2020-11-22 22:23:13 52

原创 3.14 k8s API安全机制

文章目录一、安全机制二、认证(Authentication)三、鉴权(Authorization)四、准入控制五、案例一:对ServiceAccount认证和鉴权1、创建ServiceAccount2、创建引用ServiceAccount的pod3、通过ServiceAccount认证k8s API证书以及获取API服务器授权4、通过RBAC插件为ServiceAccout授权六、案例二:对User用户进行认证和授权ClusterRole角色1、首先创建用户名为xxy的User用户2、创建证书请求3、下载c

2020-11-14 00:18:16 112

原创 3.13 与k8s API交互

文章目录1、查询K8S API服务器地址2、访问K8S API服务器上一节中介绍了可以通过环境变量或者Downward API的方式传递元数据,该方法简洁易用,但时只可以向容器传递部分元数据,如果想获取更多的信息可以本节介绍的k8s API方式,可以与K8S API服务器进行访问来获取更多关于元数据的信息。我们创建查询各种k8s 资源,包括创建、查询和删除pod 、service、job等各种资源信息,都是通过与K8S API服务器进行交互执行的。1、查询K8S API服务器地址通过执行kubectl

2020-10-23 00:34:47 76

原创 3.12 访问Pod元数据

文章目录一、通过环境变量形式传递元数据在ConfigMap和Secret章节中可知,可以通过ConfigMap和Secret向应用中传递Pod创建前可预先知道的数据,但不能传递Pod创建后未知的一些元数据,比如pod的名字,pod的ip,因为这些信息都是pod创建后才会知道,在创建pod时不可以通过ConfigMap和Secret传递数据,可以通过下列方式传递pod的一些元数据信息:环境变量和Downward API。Pod中可传递的元数据包括如下数据:pod的名称pod的IPpod所在的命名空

2020-10-20 00:14:17 69

原创 3.11 污点和容忍度

文章目录一、污点和容忍度介绍1、显示污点信息2、显示容忍度信息3、污点因子二、污点应用三、污点容忍度应用上一章节介绍了,pod的调度方式有选择器、节点亲和性、pod亲和性和反亲和性,本章节继续介绍pod的其他调度方式:污点和容忍度。一、污点和容忍度介绍污点是相对于节点说的,一旦给某个节点上打了污点了标签,pod调度时就会阻止pod调度在该节点上,如果pod设置了容忍这个节点的污点的话,pod也可以调度在有污点的节点上。1、显示污点信息在集群上部署pod时经常发现,pod一般被调度在各个子节点上进行

2020-10-05 00:46:31 104

原创 3.10 node的亲和性和pod的亲和性/反亲和性

文章目录一、通过标签选择器调度pod到指定节点二、通过node节点亲和性调度pod1、requiredDuringSchedulingIgnoredDuringExecution 用法2、preferredDuringSchedulingIgnoredDuringExecution 用法当集群的每个节点的配置不一样时,需要把特定功能的pod调度到指定的节点上,可以通过以下几种方式指定pod的调度方式。比如一个集群中有一个master节点,两个node节点,分别为k8s-node01和k8s-node,为k

2020-09-27 23:06:24 469

原创 3.9 共享数据卷volume

文章目录一、emptyDir类型volume二、hostPath类型volumepod中每个容器都有自己独立的文件系统,文件系统来自镜像,每个容器都是通过在构建镜像时加入的详细配置文件来启动,所以在容器中添加的文件,在容器重启后又会从镜像中重新加载,导致新添加的文件会丢失。k8s提供了volume卷,用于容器之间进行共享文件,容器重启后重新加载卷中的文件数据,所以文件不会丢失。Voume的生命周期同pod的生命周期,当pod不存在时,volume也会丢失,所以重新启动pod也会导致volume卷中的数据

2020-09-22 23:50:26 58

原创 3.8 Secret传递敏感数据

文章目录一. Opaque Secret1 创建Secret1.1 通过yaml创建Secret1.2 通过文件创建Secret2 利用Secret2.1 将Secret挂载到Volume中2.2 将Secret导入到容器环境变量中二、service account Secret前文介绍的都是通过镜像或者ConfigMap向容器传递数据或配置,都是明文进行传递的数据或配置是敏感的,比如账户密码等密钥之类的数据,用Secret加密方式传递可以保证数据安全性。Secret结构与ConfigMap类似,都是键值

2020-09-02 00:23:09 152

原创 解决vmware主机模式下不能访问外网

文章目录1、恢复默认设置2、设置主机模式下的虚机的网段3、设置vmnet1的网关地址4、设置宿主机网络共享到vmnet1上5、设置虚机的静态IP以及网关信息6、以前全部设置完毕后,重启网络之前vmware设置的主机模式,从虚机可以ping www.baidu.com,但是一段时间没用,电脑重启,虚机不能连接外网了,查找了网上的所有常见解决办法,均已失败告终,苦恼之际,恢复默认设置后,重新设置了一番成功了。心法如下(本次测试用的centos7)1、恢复默认设置点击下图中的恢复默认设置,会把之前设置的所有

2020-08-31 00:16:30 493 2

原创 3.7 ConfigMap解耦配置文件

文章目录1、在docker镜像中定义命令行与参数2、在k8s的pod资源清单中定义容器执行的命令和参数2.1、通过pod定义传递命令参数2.2、通过pod定义传入环境变量2.3、pod定义的环境变量引用其他环境变量3、利用ConfigMap解耦配置3.1、创建ConfigMap3.2 通过ConfigMap给容器传递环境变量3.2.1 向容器传入ConfigMap单个key环境变量3.2.2 向容器传递ConfigMap的所有环境变量3.2.3 通过ConfigMap向容器传递命令行参数3.2.4 通过Co

2020-08-16 21:03:42 173

原创 3.5 控制器之CronJob

文章目录1、CronJob实例2、CronJob属性参数上一篇文章演示了Job的用法,Job建立后会立即运行,批处理了任务或定时任务需要在指定的时间运行或指定的间隔时间运行。k8s提供的CronJob就支持批处理场景,就像Linux中的CronTab命令,可以指定时间运行任务。CronJob运行时,通过创建Job资源的任务,然后通过Job创建并管理pod处理定时任务。1、CronJob实例下面以每1分钟运行一次任务为例。yaml文件如下apiVersion: batch/v1beta1kind:

2020-07-06 23:08:30 85

原创 3.4 控制器之Job

文章目录1、Job管理创建单个pod2、Job创建多个Pod3、设置job运行时间k8s 提供了Job资源,Job可以控制pod只启动一次,等pod中内部进程结束后,容器不在重启,pod完成状态。Job控制的pod资源适合做一次任务。当Job控制的Pod发生故障时,可以选择restartPolicy的重启策略进行重启,OnFailure失败时才会重启,或者不重启,不运行设置Always,因为Job适合只做一次就结束的任务。1、Job管理创建单个pod下面以job.yaml为例apiVersion:

2020-07-05 22:24:39 118

原创 3.3控制器之DaemonSet

文章目录1、在集群中所有node节点上创建一个pod副本2、在集群中指定的node上创建一个pod副本DaemonSet可以确保每个node节点或者指定的节点上运行一个Pod副本。当集群中增加node节点时,就会为node节点创建一个副本pod,当节点从集群中移除时,Pod也会被回收。删除DaemonSet会删除他创建的所有DaemonSet。作用:DaemonSet适合在每个节点上运行一个pod,运行日志收集器或者资源管理器监控的工作。1、在集群中所有node节点上创建一个pod副本以如下yaml

2020-07-04 16:56:11 129

原创 3.2 控制器之Deployment

文章目录1、Deployment的创建2、deployment管理应用升级3、deployment管理应用回滚4、滚动失败,deployment自动回滚Deployment是一种高阶控制器资源,在部署时,Deployment创建并管理ReplicaSet,由ReplicaSet创建管理pod。目的方便应用升级时,Deployment便于通过ReplicaSet管理一组pod进行应用升级。1、Deployment的创建与pod、replicaset一样,deployment在k8s中也是一种资源,可以通

2020-07-03 00:18:24 114

原创 3.1 控制器之ReplicaSet/ReplicationController

文章目录ReplicaSet使用1、创建ReplicaSet2、删除一个pod3、修改pod标签4、标签选择器4、修改ReplicaSet标签选择器5、水平缩放pod6、删除ReplicaSet控制器在新版本k8s中,ReplicaSet取代了ReplicationController,ReplicaSet除了满足ReplicationController,其强大之处还在于支持标签选择器。所以本文主要以ReplicaSet为主。ReplicaSet主要用来监控k8s中的pod,使其数量与副本数保持一致,

2020-06-27 18:32:24 171

原创 pod状态CrashLoopBackOff

文章目录1、问题2、原因3、解决办法1、问题pod启动或者通过ReplicaSet等控制器启动pod后,pod的状态一瞬间呈现Completed状态,随后一直显示CrashLoopBackOff状态,导致pod一直重启失败,如下所示[root@k8s-master01 sc_work]# kubectl create -f replica_set_example.yaml replicaset.extensions/nginx-relica created[root@k8s-master01 sc

2020-06-23 23:41:09 2269 2

原创 2、pod详解

文章目录一、pod基本介绍1、pod的名称空间2、pod的网络空间3、pod优点二、pod基本操作1、创建pod2、查询pod3、pod标签4、标签选择器5、对pod添加注解三、pod生命周期一、pod基本介绍pod是一组容器,一组容器可以是多个容器也可以是单个容器(不包括系统内置的容器),当一个pod包含多个容器时,多个容器运行在同一个工作节点上,一个pod中的多个容器绝不会跨多个节点。1、pod的名称空间pod中可以包含多个容器或单个容器,pod中包含多个容器时,多个容器是共享命名空间的,pod

2020-06-21 21:26:24 330

原创 1、k8s安装与配置

文章目录一、初始化安装系统1、设置主机名以及配置映射2、安装依赖包3、设置防火墙规则4、关闭虚拟内存5、关闭SELINUX6、调整内核参数7、关闭系统不需要的服务8、设置rsyslogd和systemd journald日志,只启动systemd journald10、升级内核,并设置从新内核启动二、kubeadm安装部署1、kube-proxy开启ipvs的前置条件2、安装docker3、安装kubeadm4、下载google镜像5、初始化主节点(只在主节点中执行)三、验证k8s集群:k8s-maste

2020-06-10 01:10:55 536

原创 10、Hadoop切片机制

一个超大文件在HDFS上存储时,是以多个Block存储在不同的节点上,比如一个1G的文件,HDFS默认一个Block为128M,那么1G的文件分成8个Block存储在集群中8个节点上。Hadoop在map阶段处理上述1G的大文件时分成几个MapTask进行处理呢?...

2020-03-31 22:19:56 1094

原创 9、Hadoop序列化(自定义传输对象)

文章目录1、建立输入数据对应的bean2、建立Mapper分割处理数据3、建立Reducer合并数据4、建立job的启动类5、测试序列化就是把内存中的对象转化成字节序列,便于网络间传输和持久化到硬盘上,避免数据掉电丢失。在Haoop中定义的最常用的基本对象,都已经实现了org.apache.hadoop.io.Writable接口,比如BooleanWritable、ByteWritable、...

2019-12-12 00:07:54 203

原创 8、MapReduce实现WordCount单词统计

文章目录一、Mapper阶段二、Reduce阶段三、Driver阶段四、集群测试MapReduce分布式计算包含两个阶段:Mapper和Reduce。一个完整的MapReduce程序在分布式计算时包括三类实例进程:MrAppMaster:负责整个程序的过程调度及状态协调;MapTask:负责Map阶段整个数据处理流程;ReduceTask:负责Reduce阶段整个数据处理流程。Map...

2019-12-01 23:26:40 281

原创 7、HDFS输入输出流

文章目录1、HDFS IO文件写入2、HDFS IO文件读取3、HDFS IO定位读取HDFS的输入输出流用于对HDFS文件进行字节的读取或写入。1、HDFS IO文件写入把windows本地文件通过HDFS的输出流写到HDFS文件中。@Testpublic void testHDFSIoOutput() throws IOException, InterruptedException,...

2019-10-20 22:27:57 374

原创 6、eclipse + HDFS参数优先级

文章目录1、采用集群中配置2、采用classpath下的文件中配置的3、采用代码中的配置总结配置集群时,关于HDFS的配置都在/etc进行了相关配置,用eclipse客户端进行开发时,可以用更高优先级的配置覆盖掉集群中的配置。下面以设置副本为例。在hadoop集群中hdfs-site.xml的配置如下:<?xml version="1.0" encoding="UTF-8"?>...

2019-10-19 11:25:19 76

kubeadm-basic.images.tar.gz

安装kubeadm时,需要登录到google才能下载google镜像,由于国内不能登录google,所以上传google的镜像

2020-06-10

helm-tiller.tar

由于谷歌被强,无法下载谷歌镜像,特此提供Helm的服务器端Tiller的镜像,该镜像可以在k8s中用于创建pod

2020-11-19

STC的详细介绍

该文档400多页,全面细致的介绍了STC单片机,是新手学习的好资料,也是技术人员备用查阅的好资料。档

2013-10-07

android入门教程

对于没了解过android开发的同学非常适合。

2015-10-04

苍鹰蛟龙的留言板

发表于 2020-01-02 最后回复 2020-01-02

spring boot工程中获取不到DataSource的bean,提示依赖有问题

发表于 2017-12-31 最后回复 2018-02-05

空空如也

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

TA关注的人 TA的粉丝

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