- 博客(23)
- 资源 (4)
- 收藏
- 关注
原创 Kubernetes数据持久化
本文主要讲解Kubernetes 数据如何持久化。如有错误请指正。Volume官网 : https://kubernetes.io/docs/concepts/storage/volumes/容器里面的数据都是临时,如果容器不存在了,数据也会跟着丢失。在docker中也有volume 的概念,但是它的volume 功能比较单一,并且无法管理,无法满足Kubernetes的需求。我们知道Pod里面的container是可以共享数据的,所以pod是如何解决数据存储的?Host 类型需求:定义一个.
2021-08-02 09:15:50 321
原创 Kubernetes 组件详析(持续更新)
Podpod 是包含一组容器,并且能使各个容器互相共享namespace,network,cgroups,数据卷等资源的一个容器运行环境。pod只是一个容器运行环境,不是一个线程。它会一直存在,除非是被删除了。pod的两种存在形式。只有一个容器的pod : 这种pod 可以认为是container 的一个wrapper一组容器的pod : 将紧耦合,需要共享资源的一组容器聚合在一起pod controller管理pod的组件DeploymentReplicaSetReplication
2021-07-20 17:28:08 197
原创 Docker Swarm
本片是根据阅读Docker 官网的swarm部分后做的笔记,如有错误请指正什么是Docker SwarmDocker Swarm 也是容器编排的一个工具。有兴趣的朋友可以阅读另外一篇文章 docker compose。docker compose 在单机环境下的一个容器编排工具,可以很容易帮我们部署多个容器。但是在集群环境下,compose就有点无能为力了。swarm 就是帮助我们在多机环境下一个容器编排技术。什么特点去中心化。分为两种类型节点managers和 workers扩缩容集群.
2021-07-04 17:15:00 241
原创 Docker Compose 学习笔记
此文章是在阅读了 docker compose 官网后做的笔记,如果错请指正。什么是docker composeCompose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create.
2021-07-03 16:12:57 611
原创 Docker Volume 使用
在docker部署容器的时候,难免会遇到容器需要持久化数据的时候。如果不知道持久化数据,当前容器被移除之后,里面的数据也会一起删除。这样就造成了数据的丢失。在docker,可以通过volume指定数据持久化的位置,这样数据会在相应的宿主机中也会存储一份。既不会丢失数据,启动之后重新指定数据路径还是继续使用。默认创建volume启动一个MySQL container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD=chihay123 mysql查
2021-07-01 10:14:43 483
原创 Docker单机网络
在docker中,每个container 都是一个独立的个体。Container是一种轻量级的虚拟化技术,不用模拟硬件创建虚拟机。Docker是基于Linux Kernel的Namespace、CGroups、UnionFileSystem等技术封装成的一种自定义容器格式,从而提供一套虚拟运行环境。Namespace : 用来做隔离的,比如pid[进程]、net[网络]、mnt[挂载点]等CGroups : Controller Groups用来做资源限制,比如内存和CPU等Unionfilesys
2021-06-30 10:12:37 111
原创 网卡原理浅析
网卡网卡查看ip link show 显示网络接口信息ip a 显示所有网卡详细信息状态:UP/DOWN/UNKOWN等link/ether:MAC地址inet:绑定的IP地址更多ip 命令可见 https://www.runoob.com/linux/linux-comm-ip.html网卡配置文件在Linux中网卡对应的其实就是文件,文件路径/etc/sysconfig/network-scripts/比如eth0 网卡的信息 cat /etc/sysconfig/netwo
2021-06-29 21:33:25 1328
原创 Docker 命令汇总
仓库相关获取镜像 docker pull [image]:[tag]推送镜像 docker push [image]:[tag]查找镜像 docker search [image]登陆登出仓库 docker login/logout -u username -p password显示Docker详细的系统信息,可查看仓库地址 docker info本地镜像管理列出本地镜像docker images查看镜像详情 docker inspect [image]删除本地镜像 docker
2021-06-28 15:48:03 86
原创 Dockerfile语法
描述镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像。Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。具体命令1. FROM 指定基础镜像定制每一个镜像都必须指定基础镜像,每一个修改命令的修改都是在这个基础镜像上改动。FROM 必须是第一条指令。FROM tomcat有时候定制的镜像可能不需要
2021-06-28 15:46:40 308
原创 VisualVM 之 SSL+JMX
JMX虽然可以使用密码来验证用户,但还是不够安全,只要获取到密码,在任何机器上都可以连接JVM。在生产环境这是一种危险的操作,所以需要使用到SSL,SSL需要提供证书才能访问,安全性较高。第一步:制作keystore 和truststore上述提到的证书,主要保存了public key,由于SSL是一个非对称加密协议,因此还有一个private key,在Java里,public key、private key是保存在keystore里面的。下面主要讲下client 和 server..
2020-09-07 15:15:47 540 1
原创 VisualVM 之 JMX
在VisualVM + Jstatd 监控的时候,是Java进程的CPU、线程、MBean信息。如果要获取这些信息那就需要用到JMX方式了。自JAVA6之后,java程序在启动之后都会在JVM内部创建一个JMX Agent,JMX Agent 会启动一个MBean server组件,把MBeans注册到它里面,然后暴露给JMX client。简单来说就Java程序可以通过JMX 暴露给JMX client。而这个JMX client 就是VisualVM。使用JXM在启动Java程序的时候.
2020-09-06 18:16:05 710
原创 VisualVM 之 Jstatd
在开发大型Java项目时,我们可能会遇到内存溢出、性能问题等诸多问题,比如文件、数据库的连接未释放,程序未优化等。今天介绍一下VisualVM的使用,如何通过VisualVM看到程序的运行状况,来帮助我们分析程序的缺陷。(VisualVM在这里就不做介绍了)第一步:服务端(需要监控的地方)Jstatd启动1、创建XXX.policy文件文件内容grant codebase "file:$JAVA_HOME/lib/tools.jar" { permission java.sec..
2020-09-06 11:39:45 651
原创 JDK动态代理缓存——WeakCache
在上一篇文章中分析了JDK动态代理的整体流程,但是并没有分析其中缓存实现。在这里将会对WeakCache进行一次具体分析。WeakCache是一个二级缓存实现。其存储方式主要使用ConcurrentMap。具体机制下面通过代码分析。JDK代理调用地方从代码可以看出,从WeakCache缓存获取的时候,需要两个参数,一个是class loader 和 interface 数组。这两个参数都是用来生成key的。 /** * Generate a proxy class. .
2020-05-26 18:20:13 533
原创 JDK动态代理从0到1+
什么是代理?就是代替被代理对象进行接收和传递消息。也就是在在被代理之前多干点事和代理之后再干点事。其实不管是静态代理还是动态代理,最终还是调用被代理对象的invoke方法(真正需要调用的方法)。代理模式:其实就是创建一个接口,然后被代理类实现接口的方法,代理类也同样需要实现相同的接口,并且持有被代理类对象(代理类和被代理类是关联关系),客户端通过代理类方法调用,间接调用被代理类实现的方法。...
2020-05-01 21:45:23 194
原创 spring boot整合lua 三步曲
1、编写.lua文件2、实例一个脚本执行器3、使用注意redis 命令和lua只能同时操作落在相同server上的可以,否者会抛出key不在slot上的异常。所以在对hash、list、set、zset数据结构设计key时候,可以将相同内容放着里面。设计可以的同时也要注意单个可以过多,导致机器压力过大。...
2020-04-26 10:51:42 1629
原创 synchronized 分析和使用
意义synchronized可以实现一个简单的策略来防止线程互相干扰和内存一致性的错误。如果一个对象对于多个线程是可见的,那么对该对象的读或者写都将使用同步的方式进行。具体体现如下:1、synchronized关键字提供锁的机制,能够确保共享变量的互斥访问,从而达到内存数据的一致性2、synchronized关键字提供monitor enter 和monitor exit两个JVM指令...
2020-04-14 12:08:21 257
原创 SimpleDateFormat multiple points异常
SimpleDateFormat是一个线程不安全的类,在多线程下使用的时候特别需要注意。如果在多线程情况下使用,每个线程都需要创建各自的实例,或者需要自行封装成一个线程安全的SimpleDateFormat 类(synchronized/ThreadLocal方式实现),否者会出现java.lang.NumberFormatException: multiple points异常。...
2020-04-09 18:01:05 281
原创 Java内存与volatile的分析
cpu cache的出现由于CPU直接访问主存的速度过慢,导致CPU资源受到很大限制,降低了CPU的整体的吞吐量。所以就有了CPU缓存的出现。现在的缓存一般有2-3级,最靠近CPU的是1级缓存。CPU的cache比较大,一般128KB,被分为多个固定大小的cache line,cache line通常是32byte或者64byte.因为CPU cache的访问主存的速度比CPU直...
2018-09-03 22:40:47 343
原创 Description Resource Path Location Type The project was not built due to "Could not delete .....
在项目出现红叉时,提示Description ResourcePath LocationTypeThe project was not built due to "Could not delete '/dkxt/web/WEB-INF/classes/com'.". Fix the problem, then try refreshing this project and buildi
2017-01-18 09:06:56 3831
转载 Target runtime com.genuitec.runtime.generic.jee50 is not defined
解决方法:1. 找到工程目录的.settings2. 找到org.eclisep.wst.common.project.facet.core.xml文件3. 打开该文件,去掉这句话4. 刷新工程
2017-01-14 21:36:49 687
原创 使用git来上传项目
最近在整理一些以前做的项目,想把一些做得比较的好项目把源码托管至github。以便共享。所有在此记录一下如何在window下通过git将代码托管至github。在这里的操作前提是你已经在github有自己的仓库。并在自己电脑成功安装git。注册github.com的账号官方网站: https://github.com/git下载网址: http://git-scm.com/downlo
2016-06-05 15:28:40 292
原创 activiti5.13.1在线流程设计器生成图片中文乱码
最近在学习工作流,在整合在线流程设计器的时候,发现在流程设计器编辑出的模型数据后,部署时生成图片会中文乱码。在这里总结一下我的解决方法。
2016-05-31 23:04:35 1979 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人