自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

原创 停车管理系统

停车管理系统,包括车位管理、费用管理、用户停车、车辆驶出等功能非常适合java初学者学习使用

2023-11-25 22:48:29 555

原创 在线考试系统

在线考试系统,包括试卷管理、试卷配置、学生答题、考试统计等功能

2023-11-24 10:49:45 472

原创 超市管理系统

超市管理系统,包括商品管理、进销存、基础权限管理,很全面的小系统

2023-11-16 23:05:03 401

原创 flowable 工作流

1.2 基本操作1.2.1 编码准备这里一官网请假流程案例为例resources 目录下 新建一个 holiday-request.bpmn20.xml 文件1.2.2 初始化 DB运行脚本后会初始化相关表,后面一点点介绍查看 act_re_deployment 表查看 act_ge_bytearray,记录 xml 文本字节数组,通过 deployment_id 关联,查看相关的 api 有列表查询、分页查询等1.2.4 发起流程修改 holiday-request.bpmn2

2022-06-11 23:04:20 831 1

原创 安全认证框架

Spring 技术栈的组成部分。通过提供完整可扩展的认证和授权支持保护你的应用程序。https://spring.io/projects/spring-securitySpringSecurity 特点:Apache 旗下的轻量级权限控制框架。特点:Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下。相对于 Shi

2022-06-04 17:05:38 658

原创 Netty学习五-线程模型

1 Reactor 线程模型讨论 Netty 线程模型的时候,一般会想到经典的 Reactor 线程模型。尽管不同的 NIO 框架对 Reactor 线程模型实现不太一样,但本质上还是遵循 Reactor 基础线程模型1.1 单线程模型所有的 IO 操作都在一个 NIO 线程完成,NIO 线程职责如下作为 NIO 服务端,接收客户 TCP 连接作为 NIO 客户端,向服务端发起 TCP 连接读取通信对端请求或应答消息向通信对端发送请求或应答消息单线程模型存在如下问题:性能问题:一个

2022-05-22 19:21:55 208

原创 Netty学习四-WebSocket协议开发

1 HTTP 协议弊端HTTP 协议为半双工协议,半双工协议是指数据可以在客户端和服务端两个方向传输,但是不能同时传输。意味着同一时刻只有一个方向上的数据传送HTTP 消息冗长且繁琐,HTTP 消息包含消息头、消息体、换行符等,通常情况下采用文本方式传输,相对于其他二进制协议效率低下实时性不高没有 WebSocket 之前,很多网站进行消息推送都是客户端轮询,服务端返回最新的数据给客户端。这种方式浏览器需要不停地向服务端发送请求,HTTP 的 header 数据比较冗长,有用数据占用比较少,浪

2022-05-22 18:38:02 543

原创 Netty学习二-核心类简介

1 ByteBufnetty中的ByteBuf主要是为了替换JDK自带的 ByteBuffer。 ByteBuffer有如下缺点:ByteBuffer 长度固定,一旦分配完成不能动态扩容缩容。ByteBuffer 只有一个标识位置的指针position,读写的时候需要手动调用flip()和rewind()等。开发者必须小心地使用这些API,否则很容易出现程序处理失败ByteBuffer 功能有限,一些高级特性不支持,需要开发者自己实现1.1 工作原理ByteBuf维护了读指针(readerI

2022-05-22 17:40:25 1330

原创 Netty学习三-编解码技术

1 编解码简介编解码技术,说白了就是java序列化技术,可以持久化对象或网络传输。虽然可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤太多,比如java序列化没法跨语言、序列化后码流量太大、序列化性能太低等等;主流的编解码框架:JBoss的Marshalling包,google的Protobuf,基于Protobuf的Kyro(dubbo),MessagePack框架2 前置工作2.1 NettyUtil工具类@Slf4jpublic class NettyUtil {

2022-05-17 16:49:59 284

原创 hadoop学习五-MapReduce

1 概述1.1 定义Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析应用”的核心框架。Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 hadoop 集群上。1.2 优缺点1.2.1 优点MapReduce 易于编程。它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的 PC 机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。

2022-04-23 14:46:11 2148

原创 hadoop学习四-HDFS概述

1 概述1.1 产生背景和定义随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS 的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应

2022-04-23 09:39:48 203

原创 hadoop学习三-安装启动

下载hadoop解压1 本地启动运行官方案例,统计单词出现次数。输入路径:LICENSE.txt,输出路径:output/wordcounthadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount LICENSE.txt output/wordcount然后再输出目录查看结果2 伪分布式启动2.1 修改配置文件(1)core-site.xml:<property>&lt

2022-04-23 09:39:26 480

原创 hadoop学习二-相关概念

1 HDFS概述NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限)以及每个文件的块列表和块所在的DataNode等DataNode:在本地文件系统存储文件数据块以及块数据的校验和Secondary NameNode:每隔一段时间对NameNode元数据进行备份2 MapReduce概述MapReduce将计算过程分为两个阶段:Map和ReduceMap阶段并行处理输入数据Reduce阶段对Map结果进行汇总3 YARN架构概述Ye

2022-04-23 09:39:01 1546

原创 hadoop学习一-hadoop简介

1 hadoop简介1.1 hadoop是什么hadoop是一个由apache基金会开发的分布式系统基础架构,主要解决海量数据存储和分析计算。广义地说hadoop通常代表hadoop生态圈。1.2 hadoop发展历程Lucene–DougCutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎2001年年底成为apache基金会的一个子项目对于大数量的场景,Lucene面对与Google同样的困难学习

2022-04-05 17:55:15 4311

原创 大数据学习一-shell解释器

1 概述shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核shell还是一个功能强大的编程语言,易编写,易调试,灵活性强linux提供的shell解释器有[root@server ~]$ cat /etc/shells/bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh在我们的linux系统中,sh是bash的一个软链接[root@server bin]$ ll | grep bash-rw

2022-04-03 12:20:57 1262 1

原创 java10新特性

1 局部变量的类型推断ava开始引用像脚本语言JavaScript中的var类型(弱类型),允许你通过var定义任何类型的变量。对于开发人员来说,这是唯一和你密切相关的特性。它可以帮助你极大的简化代码。Object objList = new ArrayList<String>();objList.add("hello,world!");//这句代码会出现编译异常 var varList = new ArrayList<String>();varList.add("hel

2022-03-31 11:58:11 604

原创 java9新特性

1 模块系统1.1 产生背景解决越来越臃肿的java运行环境,主要目的在于减少内存的开销,只须必要模块,而非全部jdk模块。每个公共类都可以被该项目中别的类访问,这样会导致使用了并不想访问的API本质上来讲,模块的概念是在package外再裹上一层,用模块来管理各个package的暴露和隐藏。使得代码组织上更安全1.2 具体用用项目结构如下1.2.1 模块提供方在src目录下添加module-info.java文件module demo { import com.demo;}

2022-03-24 16:44:01 498

原创 java8新特性

1 lambda表达式java8中引入了 -> 操作符,该操作符将表达式拆成了两部分:左侧:lambda表达式参数列表右侧:lambda需要执行的功能语法格式一:无参数,无返回值() -> System.out.println(“abc”);语法格式二:一个参数,无返回值(x) -> System.out.println(x);() 可以省略: x -> System.out.println(x);语法格式三:两个以上参数,有返回值,且lambda中有多

2022-03-13 11:53:05 381

原创 k8s学习十一-数据持久化

docker通过配置数据卷可以实现本地存储。1 nfs网络存储1.1 安装nfs服务端1 安装nfsyum install -y nfs-utils2 设置挂载路径vim /etc/exports挂载路径需要提前创建出来3 启动nfs服务systemctl start nfs1.2 客户端配置1 node 节点安装nfsyum install -y nfs-utils2 yaml文件配置nfs2 pv&pvcnfs实现持久化需要知道nfs服务端ip,ip地址暴露出

2022-01-03 18:17:21 435

原创 k8s学习十-helm

1 helm概述之前部署应用需要编写yaml文件,然后执行文件。这种方式部署少量的服务可以,但是如果部署几十个,上百个微服务需要维护大量yaml文件,特别不方便。通过helm可以解决如下问题把多个yaml作为一个整体管理实现yaml高效复用使用helm应用级别的版本管理helm是一个k8s的包管理工具,就像linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到k8s上2 相关概念helm:一个命令行客户端工具,主要用于 Kubernetes 应用 cha

2022-01-03 17:42:23 4126

原创 k8s学习九-ingress

1 Ingress概述在前面使用Service中的NodePort将服务端口号暴漏以供外部访问,这样显然会存在一些弊端:通过ip+端口的方式对外提供服务每个节点上都会其端口,访问时通过ip+端口进行访问每个端口对应一个应用服务但是在实际中是通过域名来访问应用的,根据域名跳转到不同端口服务中,所以需要在Service之上再添加一层访问入口,这一层就是Ingress。2 Ingress工作流程ingress和pod通过service进行关联,实际访问中ingress作为一个统一的入口,由se

2022-01-03 11:52:47 1438

原创 k8s学习八-安全机制

1 安全机制概述访问k8s集群的时候,需要经过三个步骤完成具体操作1 认证传输安全:对外不暴露8080端口,只能内部访问,对外使用6443端口,客户端认证常用方式:https证书认证,基于CA证书http token认证,通过token识别用户http基本认证,用户名+密码认证2 鉴权基于RBAC进行鉴权操作基于角色访问控制3 准入控制就是准入控制器的列表,如果列表中有请求内容则通过,没有则拒绝访问过程中,都需要经过apiserver,apiserver做统一协调。同时需

2022-01-02 22:13:41 3406

原创 k8s学习七-配置管理

1 SecretSecret可以加密数据存在etcd里,让Pod容器以挂载Volumn的方式进行访问1 yaml文件配置2 创建并查看pod3 以挂载方式进行访问以变量形式挂载1 编写yaml文件2 创建并查看pod3 测试以数据卷方式挂载1 编写yaml文件2 创建并查看pod3 测试2 ConfigMap用于存储非加密数据。通常用于配置文件1 查看并创建configMap2 挂载以数据卷的方式挂载1 编写yaml文件3 启动并查看pod

2022-01-02 20:35:34 257

原创 k8s学习六-核心技术~Service

1 Service存在意义1.1 防止pod失联(服务发现)pod每次启动后ip是不固定的,这样就会造成访问pod的ip频繁发生变化。引入Service后,Pod会先把ip地址注册到Service上。不再直接访问pod,而是访问Service的vip(虚拟ip),然后找到具体功能对应的ip,再用最新的ip进行访问。1.2 定义一组pod的访问策略(负载均衡)2 Pod和Service关系同Controller一样,也是通过label标签和selector选择器关联3 Service类型

2022-01-02 16:54:06 1293

原创 k8s学习五-核心技术~Controller

controller是在集群上管理和运行容器的对象,pod通过controller来实现应用的运维比如伸缩,滚动升级等。pod和controller之间通过label标签建立联系。1 deployment控制器1.1 应用场景部署无状态应用,如web服务、微服务管理Pod和ReplicaSet部署、滚动升级等功能1.2 部署应用1 导出yaml文件kubectl create deployment web --image=nginx --dry-run -o yaml > w

2022-01-02 16:16:09 2644

原创 k8s学习四-核心技术~Pod

1 Pod 概述Pod 是 k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在 k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展 Pod 对象功能的,比如控制器对象是用来管控 Pod 对象的,Service 或者Ingress 资源对象是用来暴露 Pod 引用对象的,PersistentVolume 资源对象是用来为 Pod 提供存储等等,k8s 不会直接处理容器,而是 Pod,Pod 是由一个或多个 container 组成Pod

2022-01-01 21:36:00 648

原创 k8s学习三-集群命令行工具 kubectl

kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。1 命令语法kubectl 命令的语法如下kubectl [command] [type] [name] [flags]comand:指定要对资源执行的操作,例如 create、get、describe 和 deleteTYPE:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的 形式。例如:NAME:指定资源的名称,名称也大

2022-01-01 16:55:40 312

原创 k8s学习二-集群部署

1 前置知识点目前生产部署 Kubernetes 集群主要有两种方式:(1)kubeadmKubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/(2)二进制包从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。Kubeadm 降

2022-01-01 16:04:27 212

原创 k8s学习-k8s简介

1 k8s核心功能1.1 自动装箱基于容器对运行环境的资源配置要求自动部署容器1.2 自我修复容器失败时会对容器进行重启当所部属的node节点有问题时,会对容器进行重新部署或重新调度当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务1.3 水平扩展通过简单的命令,用户ui界面或基于CPU等资源的使用情况,对容器进行规模扩大或规模裁剪1.4 服务发现用户不需要使用额外的服务发现机制就可以基于k8s自身能力实现服务发现和负载均衡1.5 滚动更新可以根据应用变化,对应

2021-12-31 22:46:27 666

原创 docker学习-docker入门

1 docker简介docker是dotcloud公司开源的一个基于LXC的高级容器引擎,源代码托管在github上,基于go语言编写并遵从apache2.0协议开源,主要是基于PAAS平台为开发者提供服务容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源docker设想交付运行环境如同海运,OS如同一艘货轮,每一个在OS基础上的软件如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱内容可以用户自定义,也可以由专业人士制造2 与传统虚拟化的区别传统虚拟化技术

2021-12-12 20:41:54 1687

原创 虚拟化技术学习一-虚拟化概述

1 引入虚拟化的必要性美国环境保护署研究服务器和数据中心的能源效率时发现,实际上服务器只有5%的时间实在工作的,其他时间服务器一直在休眠状态引入虚拟化技术前每台主机只有一个操作系统软硬件紧密结合在同一个主机上运行多个应用程序通常会发生冲突(端口)系统资源利用率低硬件成本高昂且不够灵活引入虚拟化技术后打破操作系统和硬件的互相依赖通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体强大的安全和故障隔离虚拟机是独立于硬件的,它们能在任何硬件上运行2 虚拟化技术分类虚拟化

2021-12-11 23:20:57 815

原创 RocketMQ学习五-工作原理

1 消息的生产1.1 消息生产过程Producer可以将消息写入到某Broker中的某Queue中,其经历了如下过程:Producer发送消息之前,会先向NameServer发出获取消息Topic的路由信息的请求NameServer返回该Topic的路由表及Broker列表Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息Produer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩Producer向选择出的Queue所在的Br

2021-12-05 23:53:35 864

原创 RocketMQ学习四-集群部署

1 集群部署理论1.1 数据复制与刷盘策略1.1.1 复制策略复制策略是broker的master与slave间的数据同步方式,分为同步复制和异步复制同步复制:消息写入master后,master会等slave同步数据成功后才向procedure返回ACK异步复制:消息写入master后,master会直接向procedure返回ACK,无需等待slave同步完成1.1.2 刷盘策略刷盘策略是broker中的消息落盘方式,即消息发送到broker内存后消息持久化到磁盘的方式,分为同步刷盘

2021-12-05 19:47:03 1528

原创 RocketMQ学习三-java代码应用

1 消息发送分类1.1 普通消息1.1.1 同步发送原理同步发送是指消息发送方发出一条消息后,会在收到服务端返回响应之后才发下一条消息的通讯方式。测试代码 public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException { // procedureGroup全局唯一 St

2021-12-04 13:24:04 997

原创 RocketMQ学习二-控制台操作

1 启动命令启动nameservernohup sh mqnamesrv &启动brokernohup sh mqbroker -n localhost:9876 &关闭nameserversh bin/mqshutdown namesrv关闭brokersh bin/mqshutdown broker2 控制台使用https://github.com/apache/rocketmq-externals下载,解压出rocketmq-console配置src/mai

2021-12-04 11:31:12 272

原创 RocketMQ学习一-RocketMQ简介

1 基本概念1.1 消息(Message)消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。1.2 主题(Topic)Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 topic:message 1:n message:topic 1:1一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。 producer

2021-12-01 23:57:10 2053 2

原创 分布式事务-seata

1 seata简介1.1 概述Seata是阿里开源的分布式事务解决方案中间件,对业务侵入小,在应用中Seata整体事务逻辑基于两阶段提交的模型,核心概念包含三个角色:TC-事务协调者,维护全局和分支事务状态,驱动全局事务提交或回滚TM-事务管理器,定义全局事务的范围,提交或回滚全局事务RM-资源管理器,管理分支事务处理的资源,与TC交谈已注册事务报告和分支事务处理状态,并驱动分支事务提交或回滚1.2 三种模式1.2.1 AT 模式AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式

2021-11-28 14:55:26 504

原创 redis学习十-分布式锁

1 手写分布式锁1.1 定义注解@Target(value={ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface DistributeLock { /** * lock key */ String key(); /** * expire time */ long expire(); /** * every thread max try times */ int tr

2021-11-24 00:06:12 859

原创 spring-cloud学习八-sentinel

1 Sentinel简介Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。2 入门案例下载sentinel和nacos后本地启动2.1 maven配置 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-n

2021-11-20 18:49:14 528

原创 spring-cloud学习七-nacos

1 nacos注册中心网上下载nacos,本地启动即可1.1 maven配置文件 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>1.

2021-11-20 00:00:11 437 2

空空如也

空空如也

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

TA关注的人

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