- 博客(37)
- 资源 (5)
- 收藏
- 关注
原创 微服务介绍-系统架构演变过程
1、微服务介绍1.1、系统架构演变随着互联网发展,网站应用的规模也在不断扩大,进而导致系统的架构也在不断的进行变化。从物联网早期发展到现在,系统架构大体经历了以下几个过程:单体应用内架构–》垂直应用架构–》分布式应用架构–》SOA架构–》微服务架构。当然还有悄然兴起的Service Mesh服务网格化。下面详细了解下每个过程的系统加过是什么样子的,各有什么优缺点。1.1.1、单体应用架构互联网早期,一般的网站应用流量比较少,只需要一个应用,将所有功能代码都部署在一起就可以了,这样可以减少开发,部署和
2022-04-16 08:57:00
550
原创 Spring MVC源码分析
1、MVC模型1.1、Model1模型Model1模型是很早以前开发项目的一种常见模型,项目主要由JSP和Java和Bean两部分组成。在Model1模型下,整个WEB应用几乎都由JSP页面组成,JSP页面负责接收客户端请求,对请求处理后直接做出下响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。优点: 结构简单,开发小型项目效率高。缺点:JSP的职责兼顾展示数据和处理数据(也就是干了控制器和视图的事)所有逻辑代码都写在JSP里面,导致代码重用性很低由于展示数据的代码和处理
2022-04-07 17:51:36
434
原创 详解java虚拟机:1-JVM与Java体系结构
一、问题:作为java工程师,是否曾被JVM伤害过?运行中的线上系统突然卡死,系统无法访问,甚至直接报OOM错误,什么原因引起的,不清楚想解决线上系统的JVM GC问题,但是却无从下手?新系统上线,对各个JVM参数设置一脸懵逼,直接默认吧,后期就JJ了?每次面试前都要背一次JVM的一些原理概念性的东西,然而面试经常被问在实际项目中如何调优JVM,如何解决JVM GC等问题,芭比Q了二、java程序和JVM关系:一般现在开发系统,都是在各种框架上进行开发(Spring,Spring MVC等
2022-01-19 14:42:24
371
转载 深入理解Java虚拟机到底是什么
什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处
2022-01-19 09:52:12
486
原创 发布Docker镜像
1、发布到Docker Hub1.1、注册账号https://hub.docker.com/1.2、在服务器上登录Docker Hub#需要在命令行登录才能提交镜像[root@localhost ~]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a Docker registry.If no server is specified, the default is defined by the d
2021-11-21 22:51:58
407
原创 Dockerfile
1、Dockerfile介绍Dockerfile是用来构建docker镜像文件的命令参数脚本。构建步骤:编写一个Dockerfile文件执行docker build构建成为一个镜像docker run 运行镜像为容器docker push 发布镜像(Docker Hub,阿里云镜像仓库)先来看以下官方是怎么做的,随便打开一个:比如点击一个centos7,跳转过来其实就是一个Dockerfile:很多官方镜像都是基础包,很多功能都没有,通常自己搭建添加。官方既然可以制作镜像,我们也可
2021-11-21 12:15:24
110
原创 实战:MySQL同步数据
思考:MySQL数据的持久化问题?1、获取镜像docker pull mysql:82、运行容器下载完成镜像后,运行mysql容器,为了MySQL数据持久化,需要做数据挂载。#官方启动命令docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag#我们启动挂载的命令docker run -d -p 3310:3306 --name mysql_guazai -v /home/mysql/con
2021-11-20 22:56:21
343
原创 Docker容器数据卷
1、什么是容器数据卷docker的理念: 将应用和环境打包成一个镜像。问题: docker将应用和环境打包成一个镜像,运行镜像时就启动容器应用,应用一般会有数据,如果数据都在容器中,那么我们删除容器,就会将数据也一起删除。比如一个mysql容器,容器删除了,如果mysql数据也在容器中,也会一并删除,那就真的是删库跑路了。需求: 数据可以持久化到本地或者数据可以在容器间共享。即容器和本地或容器之间,可以有一种数据共享技术,Docker容器中产生的数据,可以同步到本地或者容器间共享,这就是容器卷技术。
2021-11-20 22:28:09
142
原创 提交Docker容器
docker commit提交容器成为一个新的镜像:docker commit -m="提交的描述信息" -a="作者" 需要提交的容器ID 镜像名称:TAG这里以tomcat为例,因为tomcat镜像官方默认在webapp下是没有任何文件的,我们可以启动tomcat后,将webapps.dis下的文件拷贝到webapps以后就可以以这个为基础镜像。1、下载镜像2、启动容器docker run -d -it -p 9090:8080 43e421a14aec启动完成后,进入容器:do
2021-11-18 21:46:01
722
原创 Docker镜像
1、镜像是什么镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包成docker镜像,就刻意直接跑起来。如何获得镜像:从远程仓库下载自己制作一个镜像DockerFile从其他地方拷贝2、镜像的分层我们下载一个镜像的时候,注意观察下载的日志输出,可以看到是一层一层下载的:思考:为什么Docker镜像要采用这种分层的结构呢?最大的好处,莫过于资源共享,比如有多
2021-11-17 23:21:12
140
原创 Docker Run流程和原理
1、执行Docker Run命令在Docker在线安装中,测试的时候使用docker run hello-world运行hello-world镜像,如下图:如果找不到镜像:2、Run运行流程2、Docker底层原理2.1、Dcoker是怎么工作的Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问(有点像MySql).DockerServer接收到DockerClient的指令,就会执行相关命令。2.2、Doc
2021-11-17 20:55:59
546
原创 docker在线安装配置
帮助文档:https://docs.docker.com/打开帮助文档页面,可以按帮助文档一步一步操作,如下:根据版本进行选择,这里是按照在centos下:1、安装之前先卸载旧版本:yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-late
2021-11-14 22:41:59
1059
原创 docker配置java环境(dockerfile方式)
1、安装包准备准备Centos镜像:jdk和tomcat压缩包:2、构建容器2.1、编写构建文件在存放安装包的目录下创建构建文件:vi Dockerfile在Dockerfile添加以下代码:#依赖镜像名称和IDFROM daocloud.io/library/centos:6.8#指定镜像创建者信息MAINTAINER alinlx#切换工作目录ADD jdk-8u181-linux-x64.tar.gz /opt/jdkADD apache-tomcat-9.0.
2021-10-20 11:56:52
10488
原创 docker配置java环境(全手动方式)
1、docker下载centos镜像(用作配置jdk环境系统)如果docker安装的服务器有网络,可以使用下面的命令拉取centos镜像:docker pull centos #版本号可以自己加,默认拉取最新的本文使用离线下载好的centos镜像,将镜像文件放到对应目录,加载镜像:docker load -i centos-docker.tar2、创建容器容器是基于镜像创建的,执行镜像生成容器,方可进入容器启动容器命令: docker run <相关参数> <镜像
2021-10-20 09:49:24
12055
原创 docker离线安装mysql镜像
1、拷贝mysql离线包1.1、将mysql-57.gz 安装文件拷贝到linux2、安装mysql2.1、进入mysql安装包目录2.2、加载mysql镜像docker load -i mysql-57.gz2.3、查看镜像docker images2.4、创建mysql容器启动mysql镜像,创建一个mysql容器docker run -d --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 9e64d176cd
2021-10-15 09:30:00
5797
1
原创 IO多路复用
这些名词比较绕口,通俗的理解:一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就这样一个服务员服务好多人,有时没人喝酒,服务员处于空闲状态,可以干点别的玩玩手机。至于epoll与select,poll的区别在于后两者的场景中醉汉不说话,你要挨个问要不要酒,没时间玩手机了。io多路复用大概就是指这几个醉汉共用一个服务员。要想知道什么是IO多路复用,你需要首先知道什么是文件以及文件描述符。什
2021-09-18 10:20:41
122
原创 为什么需要Docker?
1、为什么需要Docker官方介绍(中文版)Docker 是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。1.1、环境(切换/配置)麻烦一般我们写程序的,能接触到好几个环境:自己写代码的环境叫做开
2021-09-17 14:07:58
656
原创 docker离线安装配置
1、下载docker的安装文件下载地址这里下载docker-20.10.8.tgz,将docker-20.10.8.tgz文件上传到系统上:将解压出来的docker文件内容移动到 /usr/bin/ 目录下进入/etc/systemd/system/目录,并创建docker.service文件编辑docker.service:打开docker.service文件,将以下内容复制:[Unit]Description=Docker Application Container Engin
2021-09-17 11:26:44
554
原创 Redis知识点
1、Redis 和 Memcached 的区别为什么选择 Redis 的缓存方案而不用 Memcached 呢?存储方式: Memcache 会把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。Redis 有部分数据存在硬盘上,这样能保证数据的持久性。数据支持类型: Memcache 对数据类型的支持简单,只支持简单的 key-value,,而 Redis 支持五种数据类型。使用底层模型不同: 它们之间底层实现方式以及与客户端之间通信的应用协议不一样。Redis 直接自己构建了 VM 机制
2021-09-10 09:51:12
135
原创 二、java基本语法
一、数据类型1.1、强类型语言要求变量的使用必须严格符合规定,所有变量度必须先定义后才能使用。1.2、弱类型语言1.3、java的数据类型分为两大类1.3.1. 基本数据类型生活中常用数据类型就是java基本数据类型,比如数字(整数和小数)、文字、是非对错。如下图://八大基本类型//整型byte num1 = 10;int num2 = 20;short num3 = 30;long num4 = 30L; //long类型要在数字后面加L//小数:浮点数float nu
2021-03-16 00:10:50
98
原创 一、java程序运行机制
在计算机高级程序语言里,分为两种类型:编译型和解析型。而java既有编译型也有解析型的特点。一、编译型二、解析型三、程序运行机制
2021-03-09 14:50:57
2017
原创 JDK、JRE、JVM的理解
一、JVM(Java Virtual Machine):Java虚拟机我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序首先被编译为.class文件,这种类文件可以在虚拟机上运行,也就是说class并不直接与机器的操作系统相对应。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。只有JVM还不能促成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库l
2021-01-27 14:38:31
562
原创 Java语言和特点
Java语言是一款面向对象的一款高级语言,全球已有上亿的系统是使用Java开发的。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,所以Java语言具有功能强大和简单易用两个特征。Java 语言具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点,下面针对这些特点进行逐一介绍。1. 面向对象Java 作为一种面向对象的语言,对对象中的类、实例、继承、封装、多态、接口等均有很好的支持。Java 只支持类之间的单继承,可以使用接口
2020-12-28 10:48:02
540
原创 CentOS7安装MySQL8图文教程
一、准备工作1、下载 MySQL 安装包,地址:https://dev.mysql.com/downloads/mysql/2.Select Operating System: 是在CentOS7安装Mysql8,选择如下图:说明:CentOS 是基于红帽的,Select OS Version: 选择 linux 73.选择 RPM Bundle 点击 Download,如下图:4.点击 No thanks, just start my download. 开锁下载,如下图:5.下载完成:二、
2020-12-09 15:18:00
954
原创 虚拟机网络:NAT(地址转换模式)
上篇https://blog.csdn.net/Alinlx/article/details/110638866说到,如果你的网络ip资源紧缺,但又希望你的虚拟机能够联网,NAT模式是更好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图:在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那为什么需要虚拟网卡VMware Network Adapter VMnet8
2020-12-05 14:33:27
510
原创 虚拟机网络:Bridged(桥接模式)
一、简介vmware三种网络工作模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。同时,在主机上对
2020-12-04 16:43:54
1887
原创 虚拟机自定义安装教程
每次安装虚拟机都会忘记具体过程,记录重新梳理一遍安装过程,希望对需要的朋友有所帮助。一、安装需要软件:Vmware,Linux系统镜像,此处以:Vmware14和CentOS-7-x86_64-DVD-1708.iso 为例。二、安装Vmware: 1、安装VMware,此软件安装简单,一步步向下执行完成就可以了。三、新建虚拟机步骤: 1、打开VMware,主页如下图: 2、选择“创建新的虚拟机”出现如下界面: 典型安装:VMare会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。
2020-12-03 14:33:28
2033
原创 达梦数据库理解
达梦数据库的逻辑结构和Oracle很相似,但和mysql、sqlserver有非常大的区别,达梦数据库没有库的概念,从上往下,依次为:实例-用户-表,具体看图;注意一对多的关系。建立各个对象的时候,需要搞清对象之间的关系,先建立什么,后建立什么,谁控制什么,管理什么。...
2020-09-28 15:55:54
2182
原创 达梦数据库创建表空间和用户
达梦数据库默认使用SYSDBA用户和默认表空间进行数据库操作。但是对于业务系统开发来说,使用自定义普通表空间和用户保证数据的区分。表空间:表空间就如同创建了一个文件夹。创建一个单独的文件夹给你来专门放DM资料,这样在查找时就可以只搜索这个文件夹,而不是整个硬盘搜索,从而提高效率。1、创建表空间创建表空间的语法:CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]<数据文件子句> :
2020-09-28 15:38:36
9925
原创 达梦数据库安装
1、达梦数据库安装包的下载从达梦官网下载所需的数据库安装包【下载需要注册登录账户】www.dameng.com2、安装步骤将下载的安装镜像加载到虚拟驱动加载完成如图:安装程序双击“setup.exe”启动安装程序语言与时区选择。根据系统配置,选择相应语言和时区。点击确定按钮,进入欢迎界面,继续操作。点击“开始”按钮,进入许可证协议界面,继续安装。在安装DM前,需要阅读许可证协议,仔细阅读,如果用户接受该协议,选择“接受”,并点击“下一步”继续安装。否则后面无法继续安装。点击“下
2020-09-23 11:45:03
1544
原创 redis理解
1、redis是什么Redis是完全开源免费的,遵守BSD协议,高性能,非关系、Key-Value数据库,通常称为数据结构服务器;它存储了五种不同类型值的键映射。用作数据库,缓存和消息代理。Redis和其他键值数据库之间的主要区别之一是Redis存储和操作高级数据类型的能力。这些数据类型是大多数开发人员熟悉的基本数据结构(列表,映射,集合和排序集)。Redis的卓越性能,简单性和数据结构的原子操作有助于解决使用传统关系数据库实现时难以实现或执行不佳的问题。2、redis使用场景2.1、redis可以
2020-07-11 10:15:14
345
原创 redis-cluster集群动态扩容
上一篇文章一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境。1、cluster集群增加操作主节点的操作和从节点的操作,因为主、从节点在操作上会有差异,所以分来说。增加节点的顺序是先增加master主节点,然后在增加slave从节点。1.1、增加主节点master1.1.1、正常配置完redis.confdaemonize yes #后台启动port 8000 cluster-enabled yes #配置
2020-07-10 15:31:46
1157
原创 redis-cluster集群搭建
安装redis参考:https://blog.csdn.net/Alinlx/article/details/1070663951、配置每台redis服务器:daemonize yes #后台启动port 8000 cluster-enabled yes #配置yes开启redis-cluster#下面这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端口命名cluster-con
2020-07-09 20:56:38
325
原创 redis-sentinel搭建
安装redis参考:https://blog.csdn.net/Alinlx/article/details/107066395redis主从搭建:https://blog.csdn.net/Alinlx/article/details/107187688在搭建好redis主从复制的基础上,搭建redis-sentinel系统:redis-sentinel说明:192.168.158.130:6800192.168.158.131:6800192.168.158.132:68001、首先复制配
2020-07-07 20:02:08
321
原创 redis主从复制搭建
安装redis参考:https://blog.csdn.net/Alinlx/article/details/1070663951、搭建环境准备准备3台服务器,每台服务器开启一个redis-server,redis-server端口配置为80003台redis服务器:192.168.158.130:8000 master(主)192.168.158.131:8000 slave(从)192.168.158.132:8000 slave(从)2、配置主从节点修改配置文件:vi redis6/
2020-07-07 18:47:48
321
原创 redis安装卸载
1、离线安装1.1、手动下载安装包进入官网找到下载地址: https://redis.io/download点击Download将安装包现在到本地。1.2、解压下载的安装包使用tar -zxvf 解压安装包:tar -zxvf redis-6.52.tar.gz1.3、编译进入解压的redis目录用make解压安装包:make解压成功结果:1.4、编译安进入解压的redis目录用make解压安装包:make PREFIX=/usr/local/redis/ install注意:
2020-07-01 17:06:29
1225
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人