自定义博客皮肤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)
  • 收藏
  • 关注

转载 多线程的使用

【代码】多线程的使用。

2023-04-11 10:02:00 92 1

原创 解决Maven资源过滤问题

maven资源过滤问题

2022-06-08 00:55:47 273

原创 Mysql+Canal+ElasticSearch实现数据同步

1.canal简介canal主要用于对mysql的增量日志进行解析(请注意,只支持增量解析,不支持全量解析),提供增量数据的订阅和消费,对mysql增量数据进行实时同步,支持同步到mysql、elasticsearch、hbase等数据源1.1 canal常用组件canal-deployer(canal-server):监听mysql的binlog,把自己伪装成mysql slave,只负责接收数据,不做数据处理canal-adapter:canal客户端,从canal-server中获取数据

2022-04-06 21:18:46 3191 1

原创 Mycat的简单使用

1.简介mycat是国人开发的一款开源的数据库中间件,他的作用就是伪装成一个真的数据库,然后在它背后,连的是多种类型,集群分布式的真实数据库。1.1 mycat的几个概念schema: 逻辑库,与MYSQL中的Database(数据库)对应,一个逻辑库中定义了所包含的Tabletable: 表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode,这是这是通过表格的分片规则定义来实现的,table可以定义其所属的“子表(childTable)”,子

2022-04-05 11:54:41 3901

原创 SpringBoot 整合RabbitMQ

一、简介RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需

2022-04-02 21:43:46 2423

原创 面试题01

1.JDK和JRE有什么区别?JRE: Java Runtime Environment (Java运行时环境)。即是java程序的运行时环境,包含了java虚拟机,java基础类库。

2022-04-02 15:13:59 74

原创 SpringCloud Nacos配置中心

1.前言需上篇《SpringCloud Nacos服务注册发现中心》中讲述到了nacos的安装和nacos作为服务发现中心的使用,在本篇文章中继续讲述到nacos作为配置中心的使用,同时也作为服务注册发现中心2.工程目录2.1 pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3

2022-04-01 16:42:02 2411

原创 SpringCloud Nacos服务注册发现中心

1.什么是NacosNacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。2.下载和安装笔者使用的是1.4.2版本github官网:https://github.com/alibaba/nacos/releases/tag/1.4.2百度云:https://pan.baidu.com/s/1w6J7jXTZzB-

2022-03-31 17:42:36 865

原创 JVM学习(内存结构篇)

1.程序计数器程序计数器在整个JVM中的位置如下出所示定义程序计数器(Program Counter Register)作用是记住下一条jvm指令的执行地址。也就是说程序计数器当作但前线程所执行的字节码的行号指示器。是一种程序控制流的指示器,包括任何的分支、循环、跳转、异常处理、线程回复等操作都需要依赖于当前线程的程序计数器来指引;特点内存空间小,线程私有。不会存在内存溢出。2.虚拟机栈定义: 每个线程运行时所需的内存。描述的是Java方法执行的内存模型:每个方法在执行是都会创建一

2022-03-30 15:50:51 1410

原创 SpringBoot 实现邮件发送功能

1.知识点疏通邮件再项目中经常会被用到,比如邮件发送通知,比如通过邮件注册,认证,找回密码,系统报警通知,报表信息等。 接下来先了解一下邮件协议。1.1 SMTP、POP、IMAP4协议SMIP协议SMTP全称"SImple MAil Transfer Protocol",即简单邮件传输协议。它是一组用于从源地地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式,它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。POP协议POP邮局协议负责从邮件

2022-03-30 11:19:04 3389 1

原创 SpringCloud Config 配置中心

1.简介SpringCloud Config 服务配置中心,将所有的服务的配置文件放到本地或远程仓库,配置中心负责读取仓库的配置文件,其他服务向被指中心读取配置文件。2.项目目录3. 服务发现中心(eureka-server)3.1 pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w

2022-03-29 17:55:39 563

原创 SpringBoot 整合Mybatis

mybatis标签介绍:https://blog.csdn.net/weixin_40950778/article/details/786552881.简介Mybatis是一个半自动的ORM持久层框架,内部封装了JDBC。作为开发者只需要关注sql语句本身。MyBatis 是采用 ORM(Object Relational Mapping,对象关系映射)思想实现的持久化层框架。特点:MyBatis 是半自动 ORM 框架。将 SQL 定制抽取出来,以配置文件的方式交由开发人员编写。封装了 .

2022-03-28 12:02:36 325

原创 Mysql 常用命令

1. 数据库启动和连接1.1 启动net start mysql1.2 连接格式1 mysql -u用户名 -p密码mysql –uroot -proot格式2 mysql -u用户名 -p (回车键)密码格式3 mysql -h ip地址 -u用户名 -p密码mysql –h127.0.0.1 –uroot -proot1.3 退出exit1.4 修改密码连接权限数据库: use mysql; 改密码:update user set password=password("

2022-03-27 22:31:27 1100

原创 Redis缓存穿透、击穿、雪崩问题,分布式锁的简单运用

1.一般的缓存处理流程当前台收到请求后,后台先回冲缓存中读取数据,取到直接返回结果,当从缓存取不到结果时,就会访问数据库,从数据库取到数据更新到缓存中,并返回结果,如果数据库也没结果,就返回空。2. 缓存穿透缓存穿透流程图如下...

2022-03-27 12:54:41 1512

原创 SpringCloud Eureka服务注册发现中心

1.什么是EurekaEureka是Netflix公司开源的一个服务注册与发现的组件。和Consul、Zookeeper类似。2.项目结构父工程pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

2022-03-25 20:32:45 2396

原创 Springboot整合ElasticSearch

一.项目目录结构1.pom文件相关的maven依赖要注意到elasticsearch版本要和自己下载的版本一致;springboot使用版本为2.5.4<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo

2022-03-25 13:49:27 2025

原创 ElasticSearch + Kibana安装及使用(2)

9.基本使用ES 是RESTful 风格的系统,所以我们需要先掌握RESTful 的四个关键词:PUT(修改),POST(添加),DELETE(删除),GET(查询)。其中在ES里面PUT和POST的界限并不是很分明,有时候PUT也作为添加。不设置文档类型时,默认文档类型为_doc基本数据类型:字符串类型:text、keyword数值类型:long、integer、short、byte、double、float、half float、scaled float日期类型:date布尔类型:boo

2022-03-24 11:36:43 1044

原创 ElasticSearch + Kibana安装及使用(1)

1.ElasticSearch是什么?elasticsearch简写es,es是一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。2.Kibana是什么?是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快

2022-03-23 20:25:02 2705

原创 Request和Response相关方法

Request getContextPath(): 这个方法返回的是文本引用映射的虚拟目录地址: 如http://localhost:8080/dmsd-itoo-exam-log-web/course/index.jsp,工程名为/dmsd-itoo-exam-log-web为例: request.getContextPath(),得到工程名:/dmsd-itoo-exam-log-web; request.getServletPath(),返回当前页面所在目录

2022-03-22 21:32:29 143

原创 Dubbo监控中心Dubbo-admin安装

1.Dubbo-Admin是什么为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。下载地址Github:https://github.com/apache/dubbo-admin/Gittee:https://gitee.com/chc0618/dubboadmin2.安装在dubbo-admin\dubbo-admin-server\src\main\resources下的application.properties

2022-03-22 13:44:51 925

原创 Dubbo+Zookeeper远程调用服务

1、什么是Dubbo官网:https://dubbo.apache.org/zh/Dubbo 是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。服务发现:Dubbo 基于消费端的自动服务发现能力,其基本工作原理如下图:在本片中笔者将用到zookeeper为注册中心实现远程调用,zookee

2022-03-22 12:29:20 1715

原创 使用Docker部署web项目

1、简介本片文章主要介绍如何使用docker部署web项目。关于docker的安装及基本使用在笔者的另一篇文章中有相关的介绍。链接 https://blog.csdn.net/H_porridge/article/details/1236091202.准备一个web项目自己有项目的可以用自己项目来部署,笔者此处也有一个web项目https://pan.baidu.com/s/1l8ajTBvBU2Qw80JU-esbsw提取码:1234文件内容:接着存放到操作系统中3.部署mys

2022-03-20 19:06:28 11615 21

原创 Docker安装及使用

一、什么是Dockerdocker帮助文档:https://docs.docker.com/engine/reference/commandline/build/网易蜂巢镜像中心:https://c.163yun.com/hub#/homedocker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中.1.1 docker三要素镜像(image):doc

2022-03-20 15:01:03 3656 1

转载 Linux基本使用(学习笔记)

1.简介特点:多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户页面,出色的速度性能。linux目录结构:bin (binaries)存放二级制可执行文件sbin (super user binaries) 存放二进制可执行文件,只有root能访问etc (etcetera)存放系统配置文件usr (unix shared resoures)用于存放共享的系统资源home 存放用户文件的根目录root 超级用户目录dev (devices)用于

2022-03-19 10:57:56 86

原创 Zookeeper安装(window版)

1.下载zookeeper官网:https://zookeeper.apache.org/接着下载选择想要下载的版本(笔者下载的是(3.5.9)版本)这样就可以下载好了,接着解压。2.配置创建两个文件夹 (data 和 log)在conf目录下zoo.cfg进行配置修改两个路径。即是创建文件夹的路径dataDir=D:\Environment\apache-zookeeper-3.5.9-bin\apache-zookeeper-3.5.9-bin\datadata

2022-03-18 10:55:31 488

原创 Git的基本使用

1. Git是什么?Git是目前世界上最先进的分布式版本控制系统。下面是它的工作原理:workspace:工作区,就是你平时存放代码的地方。Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里有你提交到所有版本的数据。其中HEAD指向最新的版本。Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑数据交换。2.git的工作流程:3.gi

2022-03-14 13:57:49 133

原创 Vue.js的基本使用

Vue的官网:https://cn.vuejs.org/v2/guide/1.基本介绍:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。2.基本使用:使用Vue 只需在文件中引用以下两个脚本,十分的方便。引用脚本&l

2022-03-10 17:09:49 1481

原创 23种设计模式之单例模式

1.单例模式的应用场景单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛;例如,公司CEO、部门经理。J2EE标准中的ServletContext、ServletContextConfig 等、Spring框架应用中的ApplicationContext、数据库的连接池等也都说单例模式。1.饿汉式单例模式饿汉式单例模式在类加载时候就立即初始化,并且创建单例对象。它绝对线程安全,在线程还没出西安以前就实例化了,不可能存在

2022-03-06 14:29:39 203

原创 数据结构与算法之堆排序

1.基本思想堆排序是一种树型选择排序,是堆直接选择排序的进。堆是什么:堆中某个节点的值中是不大于或不小于其父节点的值;堆总是一棵完全二叉树。完全二叉树是由满二叉树而引用出来的。除最后一层无任何子节点外,每一层上的所有节点都有两个子节点的二叉树称为满二叉树。如果除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点,这样的二叉树被称为完全二叉树。通过图解来解释:此时就将一个无序序列构造成了一个大顶堆步骤二:将堆顶元素于末尾元素进行交换,使末尾元素最大。然后

2022-03-05 15:39:55 479

原创 数据结构与算法之希尔排序

1.基本思想希尔排序是基于插入排序的,又叫缩小增量排序。在插入排序中,标记符左边的元素是有序的,右边的是没有排过虚的这个算法取出标记符所指向的数据,存入一个临时变量,然后再缩编有序的数组红找到临时变量应该插入的位置,然后将插入位置之后的元素依次后移一位,最后插入临时变量中的数据,试想,假如有一个很小的数据项再靠近右端的位置上,把这个数据项插入到有序数组中时,将会有大量的中间数据项需要右移一位,这个步骤对每个数据项都执行了将近N次复制。虽然不是所有数据项都必须移动N个位置,但是,数据项平均移动了N/2个位

2022-03-04 21:50:22 410

原创 数据结构与算法之基数排序

1.基本思想基数排序是在同排序的基础上发展而来,两种排序都是分配排序的高级实现。分配排序的基本思想:排序过程无须比较关键字,而是通过“分配和“收集”过程来实现排序。它们的时间复杂度可达到线性阶:O(n)。先来看一下桶排序:桶排序也称为箱排序(Bin Sort),其基本思想是:设置若干个桶,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字在某个范围内的记录全都装入到第k个桶里(分配),然后按序号依次将各非空的桶首尾连接起来(收集)。例如,要将一副混洗的52张扑克牌按点数A<2

2022-03-04 17:06:09 515

原创 数据结构与算法之归并排序

1.基本思想该算法采用经典的分治策略(分支法讲问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的答案“补修”在一起,机分而治之)分治算法分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治算法的一般步骤:(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。归并排序是

2022-03-03 20:54:36 187

原创 数据结构与算法之快速排序

1.基本思想快速排序也是基于分支算法的,步骤大致如下:(1)选择一个基准元素,通常选择第一个元素或者最后一个元素;(2)通过一趟排序讲待排序的记录分割成独立的两个部分,其中一部分记录的元素值均比基准元素值小,另一部分记录的元素值比基准值大。(3)此时基准元素在其排好序后的正确位置;(4)然后分别对这两部分记录用同样的方法继续进行排序,知道整个序列有序。在上图中只是这排序中的第一趟,第二趟依旧按此方法进行排序,在57分为左右两段进行排序。2.实例public class Sort {

2022-03-03 13:00:47 362

原创 数据结构与算法之插入排序

1.基本思想在一组要排序的数中,假设前面有(n-1)[n>=2]个数已经拍好顺序的,现在要把第n个数找到相应位置并插入,使得这n个数也是排好顺序的。反复循环,直到拍好所有的数2.实例private int[] array; public Sort(int[] array) { this.array = array; } //排序打印格式 public void display(){ for (int i = 0; i <

2022-03-02 21:47:27 171

原创 数据结构与算法之直接选择排序

前言冒泡排序算法中的缺点:在两个数之间比较会进行多次交换位置才能得出最终结果。就比如第一个数A与第二个数B比较,只要A比B大就会进行交换,但不能确定的是否是最小的元素。1.基本思想而选择排序则可以避免这种耗时间的交换操作,从第一个元素开始,扫描整个待排序数组,找到最小元素之后再与第一个元素进行交换,然后再从第二个元素开始,继续寻找最小的元素与第二个元素进行交换位置,以此类推。2.实例public class Sort { private int[] array; pu

2022-03-02 13:34:05 283

原创 正则表达式

前言正则表达式是一种用来匹配字符串的强有力的武器。注意:java字符串用\表示\正则表达式语法(1)普通字符字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。简单的转义字符正则表达式语法(2)标准字符集–能够与 ‘多种字符’ 匹配的表达式–注意区分大小写,大写是相反的意思...

2022-03-01 11:15:19 161

原创 数据结构与算法之冒泡排序

前言冒泡算法的效率很低,但实现简单,适合作为入门的算法1.基本思想对当前的为排列好序的范围内的数进行排序,通过对比临近的两个数的大小进行比较调整;让大的数进行下沉,小的数进行上浮。既是:当每两个数比较后发现他们的排序与排序的要求相反时,将它们进行交换。每次遍历都可确定一个最大值放到待排序数组的末尾,下次遍历,对该最大值以及它之后的元素不再排序。2.实例public class Sort { private int[] array; public Sort(int[] ar

2022-02-28 20:37:27 205

原创 软件架构设计原则

一、开闭原则定义:开闭原则是指在一个软件实体(如类、模块和函数)因该对扩展开放,对修改关闭,所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定、灵活的系统。例如版本更新,我们尽可能不修改源代码,但是可以增加新功能。示例:首先创建一个课程类接口ICourse:public interface ICourse { Integer getId();

2021-12-19 15:44:36 150

空空如也

空空如也

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

TA关注的人

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