自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

2022-06-28 15:29:25 93

原创 策略模式与模板模式的区别

策略模式的核心在于使用者的策略,按照自己的策略进行扩展,即横向扩展模板模式的核心在于骨干的定义,父类将执行的流程已经定义好,父类实现通用的逻辑处理,通过钩子方法,子类对个性化操作进行相应的实现,也就是个性化操作延时到子类实现,即纵向扩展......

2022-06-27 16:31:14 503

原创 springboot整合xxl-job

一、什么是xxl-jobxxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。官网:https://www.xuxueli.com/xxl-job/1.特性简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;

2021-09-27 15:40:46 4794

原创 Java线程池详解

一、为什么使用线程池降低资源消耗,提高线程使用率,降低创建线程和销毁线程的消耗提高响应速度,线程来了,直接有线程可执行,而不是创建线程在执行提高线程的可管理性,线程是稀缺资源,使用线程池可以统一分配调优二、七种线程池的核心参数corePoolSize :核心线程数大小maxinumPoolSize :最大线程数大小keepAliveTime:表示超出核心线程数之外的线程的空闲存活时间unit:表示超出核心线程数之外的线程的空闲存活时间的单位workQueue:阻塞队列,用于存放待执行

2021-09-18 11:15:12 253 1

原创 如何生成分布式系统全局唯一Id

一、合理的全局唯一Id的一些要求1. 全局唯一不能出现重复的id,也即唯一标识2. 趋势递增MySQL中的InnerDB存储引擎使用的是聚簇索引,多数使用Btree的数据结构来存储索引,在主键的选择上,我们尽可能选择有序的唯一id3. 单调递增保证下一个id一定大于上一个id,例如事务版本号,排序等场景4. 信息安全如果id连续的,恶意用户的爬取工作就会很容易做到,在一些应用场景下需要id无规则不规则5. 含时间戳能快速排查这个id什么时候生成的二、分布式全局唯一I

2021-08-10 09:37:15 325

原创 Java之归并排序

代码public class Sort { public static void MergeSort(int[] array){ int[] temp = new int[array.length]; MergeSort(array,0,array.length-1,temp); } public static void MergeSort(int[] array,int left, int right, int[] temp){ .

2021-03-24 21:39:10 70

原创 生产者和消费者模式

一、wait/notify实现商品类class Goods{ Integer maxcount; Integer count; public Goods(Integer maxcount, Integer count) { this.maxcount = maxcount; this.count = count; } public synchronized void consumers() { if(coun

2021-03-24 16:21:38 66

原创 JavaWeb三大组件之过滤器

一、什么是过滤器Filter 过滤器它是 JavaWeb 的三大组件之一,三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器Filter 过滤器它是 JavaEE 的规范。也就是接口Filter 过滤器它的作用是:拦截请求,过滤响应...

2021-03-02 00:37:40 137

原创 Cookie和Session详解

一、Cookie1. 什么是CookieCookie是服务器通知客户端保存键值对的一种技术客户端有了Cookie后,每次请求都发送给服务器每次Cookie的大小不能超过4kb2. 如何创建Cookie Cookie cookie = new Cookie("key1","value1"); resp.addCookie(cookie);3. 服务器如何获取CookieCookie[] cookies = req.getCookies();4. Cookie值

2021-02-25 23:50:09 94

原创 SpringMVC RESTful CRUD

一、首先创建一个web项目,导入SpringMVC所需要的jar包AOP所需jar包Spring日志jar包JSTL所需jar包二、配置web.xml1. 配置前端处理器 <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</

2021-02-25 13:26:26 96

原创 JSTL标签库

一、什么是JSTL标签库JSTL标签库全称是指JSP Standard Tag Library JSP标准标签库,是一个不断完善的开放源代码的JSP标签库。EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本,这样使得整个jsp页面变得更佳简洁。1. JSTL由五个不同功能的标签库组成功能范围URI前缀核心标签库http://java.sun.com/jsp/jstl/corec格式化http://java.sun.com/jsp/jstl

2021-02-24 16:53:16 96

原创 EL表达式详解

一、什么是EL表达式EL表达式的全称是:Expression Language是表达式语言EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出EL表达式输出数据的时候,要比jsp的表达式脚本要简洁很多EL表达式的格式:${表达式}EL表达式在输出null值的时候,输出的是空串,jsp表达式脚本输出为null值的时候,输出的是null字符串二、EL表达式搜索域数据的顺序EL表达式主要是在jsp页面中输出数据主要是输出域对象中的数据当四个域都有相同的key的

2021-02-23 19:49:52 1769 4

原创 JavaWeb三大组件之监听器

一、什么是Listener监听器Listener监听器是JavaWeb的三大组件,JavaWeb的三大组件分别为Servlet程序、Filter过滤器、Listener监听器Listener它是JavaEE的规范,就是接口监听器的作用是,监听某种事物的变化,然后听你刚刚回调函数,反馈给客户去做一些相应的处理二、ServletContextListener监听器ServletContextListener 它可以监听 ServletContext 对象的创建和销毁。ServletContex

2021-02-21 13:23:32 221 5

原创 JSP详解

一、什么是jspjsp的全称是java server pages,java的服务器页面jsp的主要作用是代替Servlet程序回传html页面的数据因为Servlet程序回传html页面数据是一种非常繁琐的事情,开发成本和维护成本都极高二、jsp如何访问jsp页面和html页面一样,都是存放在web目录下,访问也跟访问HTML一样http://ip:port/工程路径/a.htmlhttp://ip:port/工程路径/b.jsp三、jsp的本质是什么jsp页面本质

2021-02-21 00:25:10 589

原创 Servlet详解

一、Servlet技术1. 什么是ServletServlet是JavaEE规范之一,规范就是接口Servlet是Javaweb三大组件,三大组件分别为:Servlet程序、Filter过滤器、Listener监听器Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端2. Servlet的生命周期执行Servlet构造器方法第一次访问的时候创建Servlet程序会调用执行init方法第一次访问的时候创建Servlet程序会

2021-02-19 18:23:14 293 2

原创 Spring 事务

一、什么是事务事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败事务添加带JavaEE三层结构的Service层二、事务四个特性(ACID)原子性一致性隔离性持久性三、Spring支持事务添加事务tx的名称空间<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmln

2021-02-16 20:05:47 80

原创 Spring JdbcTemplate

一、什么是JdbcTemplateSpring框架对jdbc进行封装,使用JdbcTemplate方便实现对数据库操作二、如何使用1. 导入相关jar包2. 配置数据库连接池 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${jdbc.url}"></property> &lt

2021-02-15 16:49:55 75

原创 Spring IOC详解

一、IOC1. 什么是IOC控制反转,把对象创建核对对象之间的调用过程,交给Spring进行管理2. IOC的目的为了耦合度降低3. IOC的底层原理xml解析工厂模式反射4. IOC过程创建xml配置文件,配置创建的对象 <bean id="user" class="com.github.entity.User" > </bean>创建工厂类class UserFactory{ public static User

2021-02-12 16:01:38 493 4

原创 基于注解方式操作Bean管理

一、什么是注解注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)使用注解,注解作用在类上面,方法上面,属性上面使用注解目的:简化xml配置二、Spring针对Bean管理中创建对象提供注解@Component@Service@Controller@Repository注意:上面四个注解的功能是相同的,都可以用来创建bean实例三、注解方式实现对象创建1.引入jar包aop2.开启组件扫描首先引入context命名空间<?xml ver

2021-02-11 00:10:33 176

原创 Bean的作用域和生命周期

一、Bean的作用域1. 在Spring里面,设置创建的bean实例是单实例还是多实例?public void test1(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user = context.getBean("user",User.class); User user1 = context.getBean("user",Use

2021-02-10 17:49:43 613 1

原创 Spring框架概述

一、IOC1.什么是IOC控制反转,把对象创建核对对象之间的调用过程,交给Spring进行管理2.IOC的目的为了耦合度降低

2021-02-09 20:37:18 167

原创 Spring jar 包如何下载

首先我们进入spring的官网,spring.io进来官网之后,点击projects按钮点击第三个Spring

2021-02-08 12:19:58 441

原创 MySQL批量生成数据

一、批量生成数据

2021-02-07 23:36:19 1142

原创 MySQL show profiles 分析

一、定义是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优的测量默认情况下参数处于关闭状态,并保存最近15次的运行结果查看是否支持show variables like 'profiling'开启show profileset profiling = on查看profilesshow profiles诊断SQLshow profile cpu,block io for query --上面查出来的query_id结论–s

2021-02-07 10:35:43 117

原创 MySQL锁机制

一、定义锁是计算机协调多个进程或线程并发访问某一资源的机制在数据库中,除传统的计算资源的争用以外,数据也是一种共许多用户共享的资源,如何保证并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤为重要,也更加复杂。二、锁的分类1.从对数据操作的类型分类读锁:针对同一份数据,多个读操作可以同时进行而不会相互影响写锁:当前写操作没有完成时,它会阻塞其它的写锁和读锁2.从对数据操作的粒度分类表锁行锁

2021-02-06 15:09:36 117 1

原创 MySQL慢查询日志

一、慢查询日志是什么MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中,long_query_time的默认值为10,意思是运行10秒以上的语句由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的SQL,结合之前expl

2021-02-05 21:29:44 302

原创 MySQL架构简介

    这里我们主要讲讲MySQL高级内容,基础部分我们之前已经说过,可以查看之前的博客。一、高级MySQL概述—这些需要很深的功底MySQL内核SQL优化MySQL服务器的优化各种参数常量设定查询语句优化主从复制软硬件升级容灾备份SQL编程二、MySQL配置文件二进制日志log-bin -----主从复制错误日志log-error ----默认关闭,记录严重的警告和错误信息,每次启动和关闭的详细信息查询日志log ----默认关闭,记录查询的SQL语句,开启会降低MyS

2020-11-26 16:08:24 159 1

原创 MySQL索引及索引优化分析

目录一、前言1. SQL慢性能下降,执行时间长,等待时间长的原因?2. SQL执行顺序2.1 手写2.2 机读2.3 7种join二、索引简介1. 定义2. 索引的优缺点2.1 优势2.2 劣势3. 索引分类4. MySQL索引结构5. 基本语法5.1 创建5.2 删除5.3 查看6. 哪些情况需要创建索引7. 哪些情况不需要创建索引三、索引优化1. MySQL常见瓶颈2. explain关键字2.1 定义2.2 如何使用2.3 执行计划包含的信息2.4 名称解释3.索引失效如何避免4.如何解决like索引

2020-11-26 12:41:11 194

原创 Java IO与NIO区别

NIO1.定义Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。...

2020-11-15 16:51:36 214

原创 JavaIO--BIO操作

核心五个类(File Outputstream Inputstream Reader Writer)与一个接口(Serializable)File文件(真实文件、或路径)操作类java.io包中唯一一个与文件本身操作有关(创建、删除、取得信息),与文件内容无关的程序类File类的基本使用File类的实例化方式public File(String pathname)public File(String parent, String child)创建新文件public boolean c

2020-11-14 15:27:39 180

原创 MySQL视图详解

定义mysql5.1版本出现的新特性,本身是一个虚拟表,它的数据来自于表,通过执行时动态生成。优势简化sql语句提高了sql的重用性保护基表的数据,提高了安全性视图的创建与使用创建 create view 视图名 as 查询语句修改方式一create or replace view 视图名as查询语句;方式二alter view 视图名as查询语句删除 drop view 视图1,视图2查看.

2020-11-13 08:58:50 131

原创 与数据库的第一次接触

一、引言我们经常听到有人讲数据库,那么数据库到底是什么呢?       顾名思义,数据库是存储和管理数据的仓库,即存储数据的容器,而我们时常听到的MySQL、Oracle这些都为数据库管理系统,我们简称为数据库概念DB:数据库,存储数据的容器DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DBSQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言数据库的优势

2020-11-12 17:16:30 255

原创 数据库之存储过程与函数

定义: 都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字优势提高重用性sql语句简单减少了和数据库服务器连接的次数,提高了效率一、存储过程创建create procedure 存储过程名(参数模式 参数名 参数类型)begin 存储过程体end注意参数类型:in、out、inout,其中in可以省略存储过程体的每一条sql语句都需要用分号结尾调用call 存储过程名()举例调用in模式的参数:

2020-11-11 08:55:35 113

原创 MySQL之流程控制结构

顺序结构:程序从上往下依次执行分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行if函数功能:实现简单双分支语法if(条件,值1,值2)位置可以作为表达式放在任何位置case结构功能:实现多分支语法1case 表达式或字段when 值1 then 语句1;when 值2 then 语句2;..else 语句n;end [case];语法2:casewhen 条件1 then 语句1;when 条件2 then 语句2;..

2020-11-10 16:44:38 108

原创 MySQL事务详解

定义:一条或多条SQL语句组成的一个执行单位,一组SQL要么都执行,要么都不执行特点原子性:一个事务是不可再分割的整体,要么都执行要么都不执行一致性:一个事务可以使数据从一个一致状态切换到另外一个一致的状态隔离性:一个事务不受其他事务的干扰,多个事务互相隔离的持久性:一个事务一旦提交了,则永久的持久化到本地分类隐式事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete显示事务:具有明显的开启和结束事务执行步骤.

2020-11-05 19:34:04 105

原创 MySQL之变量

MySQL的变量分为系统变量与自定义变量一、系统变量变量由系统提供的,不用自定义,属于服务器层面查看所有的系统变量 show [global|session] variable like '%%';查看指定的系统变量的值 select @@【global|session】.变量名; 如果没有显式声明global还是session,则默认是session为系统变量赋值方式一:set 【global|session 】 变量名=值; 如果没有显式声明global还是se

2020-11-04 09:57:25 1031

原创 数据库的常见约束

我们常见的数据库约束有六种,分别为非空、主键、外键、唯一键、default、cheak六大约束NOT NULL:非空,该字段的内容必填UNIQUE:唯一,该字段的内容不可重复,可以为NULL,但是只能有一条为NULLDEFAULT:默认,该字段的内容不用手动插入有默认值Cheak:检查,mysql不支持PAIMARY KEY:主键,该字段的内容必填且不可重复,not null + uniqueFOREIGN KEY:外键,该字段的值引用了另外的表的字段,且该字段必须为主键、外键或唯一键添

2020-11-03 11:50:54 2275

原创 Redis的主从复制

定义 Redis的主从复制就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master写为主,Slaver以读为主配置方式配从不配主从库配置:slaveof 主库ip 主库端口每次与master断开之后,都需要重新连接,除非配置在redis.config文件中修改配置文件细节操作拷贝多个redis.config文件开启daemonize yespid文件名字指定端口log文件名字Dump.rdb名字常见方式一主二仆i.

2020-09-08 18:30:57 121

原创 Redis的事务详解

定义:可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞一个队列中,一次性、顺序性、排他性的执行一系列命令常用命令:multi,标记一个事务块的开始,返回 okexec,执行所有事务块内,事务块内所有命令执行的先后顺序的返回值,操作被,返回空值 nildiscard,取消事务,放弃执行事务块内的所有命令,返回 okwatch,监视 key 在事务执行之前是否被其他指令改动,若已修改则事务内的指令取消执行,返回

2020-08-03 22:04:03 169 1

原创 Redis的持久化机制详解

Redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。为此,Redis提供了来着持久化的机制,分别为RDB和AOF。RDB机制-半持久化模式RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。既然RDB机制是通过把某个时刻的所有数据生成一个快照来保存,那么就应该有一种触发机制,是实现这个过程。对于RDB来说,提供了三种机制:save

2020-08-03 00:54:30 278

空空如也

空空如也

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

TA关注的人

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