自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据库精选(从入门使用到底层结构)

基本使用MySQL通用语法及分类DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限DDL(数据定义语言)数据定义语言数据库操作查询所有数据库:SHOW DATABASES;查询当前数据库:SEL...

2024-01-26 18:20:00 1020

原创 JUC并发编程原理精讲(源码分析)

1. JUC前言知识JUC即 java.util.concurrent涉及三个包:java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks普通的线程代码:ThreadRunnable 没有返回值、效率相比入 Callable 相对较低!Callable 有返回值!【工作常用】1....

2023-05-04 17:57:00 594

原创 Java多线程(一篇从0讲透)

多线程思维导图看天下:1. 概述并行与并发并行 :指两个或多个事件在同一时刻发生(同时发生)并发 :指两个或多个事件在同一个时间段内发生。(交替执行)线程与进程进程:是指一个内存中运行的程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程记忆:进程的英文为Process,Process也为过程,所以进程可以大概理解为程序执行的过程。(进程也是程序的一次执...

2023-04-01 15:24:00 284

原创 JavaSE基础 (全网最全知识点)

背景介绍java运行机理(即使编译型语言,又是解释型语言)编译型语言(如:c语言)源代码需要通过预编译形成可执行文件,再由系统执行该文件形成可识别的二进制文件解释型语言边执行边转换。源代码先翻译成中间代码,解释器(类似于JVM)再对中间代码进行解释运行,每执行一次都要翻译一次。标识符规则:标识符只能由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能...

2023-02-27 10:57:00 674

原创 多级缓存降低高并发压力

多级缓存简介1. 传统缓存传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:存在下面的问题:•由于redis的承受能力大于tomcat,所以请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈•Redis缓存失效时,会对数据库产生冲击2.多级缓存理论多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,...

2023-02-15 14:05:00 263

原创 Seata分布式事务 (理论与部署相结合)

分布式事务——Seata分布式事务1. 本地事务与分布式事务1.1 本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:1.2 分布式事务问题分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:跨数据源的分布式事务跨服务的分布式事务综合情况在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如...

2023-02-14 15:15:00 222

原创 Sentinel入门到实操 (限流熔断降级)

微服务保护——Sentinel介绍Sentinel1.背景Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.htmlSentinel 具有以下特征:•丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰...

2023-02-13 15:41:00 731

原创 Ribbon负载均衡 (源码分析)

Ribbon负载均衡SpringCloud已经删除了ribbon组件,所以需要手动导入依赖。(要学是因为很多项目业务已经使用了ribbon)服务拉取的时候添加了@LoadBalanced注解,实现负载均衡1.负载均衡原理SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。那么我们发出的请求明明是http://userservice/user/1...

2023-02-12 14:45:00 107

原创 Gateway服务网关 (入门到使用)

Gateway服务网关Gateway也要作为微服务注册到nacos中Zuul也是网关但比较老是一种阻塞式编程;Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API ...

2023-02-11 15:24:00 202

原创 Feign远程调用 (介绍与使用)

Feign远程调用Feign是代替RestTemplate进行远程调用的组件,避免了RestTemplate手写复杂的url容易出错的问题,并提高代码的可读性使用Feign步骤1)引入依赖哪个服务要发送远程请求就导入在哪个服务<dependency> <groupId>org.springframework.cloud</groupId> ...

2023-02-10 14:29:00 440

原创 Nacos配置中心 (介绍与配置)

Nacos配置中心当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。启动微服务时的流程:如图微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启...

2023-02-09 22:12:00 3623

原创 Nacos注册中心 (介绍与配置)

Nacos注册中心和Euraka一样都是注册中心,但Nacos不需要注册Nacos,因为阿里巴巴已经注册在好了。只需要下载安装后打开即可Windows安装开发阶段采用单机安装即可1.1.下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHu...

2023-02-08 13:45:00 172

原创 HashMap源码分析 (基于JDK1.8)

HashMap本文讲解的HashMap以及源代码都是基于JDK1.8背景引入数组优:读取修改快 劣:增加删除慢原因:数组可以根据下标直接定位到指定位置的数据进行读取和修改,但增加和删除需要开辟一个新数组并移动增加和删除后的数据到新数组并返回。链表优:增加删除快 劣:读取修改慢原因:链表增加和删除只需断开指定位置的两端节点,但读取的时候只能从头/尾开始往另一方向读取。...

2023-02-07 17:36:00 96

原创 RabbitMQ消息队列入门及解决常见问题

RabbitMQ消息队列同步通讯和异步通讯微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。同步通讯同步调用的优点:时效性较强,可以立即得到结果同步调用的问题:耦合度高性能和吞吐能...

2023-02-07 11:23:00 855 1

原创 Docker容器使用 (入门到精通)

Docker容器CentOS安装DockerDocker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为 stable test 和 nightly 三个更新频道。官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。Docker C...

2023-02-07 11:22:00 547

原创 ElasticSearch分布式搜索引擎——从入门到精通

ES分布式搜索引擎注意: 在没有创建库的时候搜索,ES会创建一个库并自动创建该字段并且设置为String类型也就是text什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elast...

2023-02-05 21:14:00 1062 1

原创 Eureka注册中心

Eureka注册中心Eureka是充当一个分配者的角色。为每一个服务注册分类,然后有服务A需要调用服务B的时候,eureka就分配多个服务B中的一个响应给服务A前置知识:提供者和消费者在服务调用关系中,会有两个不同的角色:服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)但是,服...

2023-02-05 15:49:00 81

原创 设计模式——23种设计模式

Java设计模式设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。面向对象设计原则都是为了高内聚低耦合原则。编程时基本都要遵守单一职责原则分类原则:一种人只干一种事。举例:(比较简单就不代码了)人可以干的事情有很多:敲代码、唱歌、跳舞、打篮球....以人设置成一个类,里面的方法就太多太杂了。所以可以有多个类:程序员(敲代码)、音乐人(唱歌)、爱豆...

2022-12-06 18:12:00 158

原创 MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)

CRUD官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)【本文章使用的mybatisplus版本为3.5.2】条件构造器一般都是用service层的方法,因为比mapper层的全。十分重要:Wrapper 记住查看输出的SQL进行分析相当于创建一个构造器对象,然后讲需要查询or更新的条件写在里面,最后打包给mapper or se...

2022-08-20 15:48:00 786 2

原创 MybatisPlus拓展——实现多数据源操作

多数据源适用:一般工作时候会有多个数据库,每个库对应不同的业务数据。程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢。官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)【本文章使用的mybatisplus版本为3.5.2】约定本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。配...

2022-08-20 14:48:00 486

原创 MybatisPlus——全网配置最全的代码生成器

MybatisPlus代码生成器这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)配置这里的配置表格和官方文档一致数据源配置(DataSource)属性说明示例urljdbc路径jdbc:mysql://127.0.0.1:3306/m...

2022-08-19 23:39:00 2695

原创 设计模式——行为型设计模式

行为型设计模式针对对象之间的交互解释器模式java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此解释器:对语言进行解释,根据不同语义来做不同的事情。举例:双栈计算器public class 双栈实现计算器 { //设置两栈 private static Deque<Character> opr = new Li...

2022-08-17 16:20:00 90

原创 设计模式——结构性设计模式

结构性设计模式针对类与对象的组织结构。(白话:类与对象之间的交互的多种模式类/对象适配器模式当需要传入一个A类型参数,但只有B类型类时,就需要一个A类型的适配器装入B类的数据,来将B数据转成A类型,然后作为参数传入适配器,在生活中又称转换器。现在的手机基本都割去了3.5mm的耳机接口,此时只有有线耳机,要听歌就需要一个转换器将3.5mm接口转成手机有的type-c的接口类适配器...

2022-08-17 04:52:00 92

原创 设计模式——创建型设计模式

创建型设计模式争对对象/类创建时的优化工厂方法模式(了解)通过定义顶层抽象工厂类,通过继承的方式,针对于每一个产品都提供一个工厂类用于创建。情况:只适用于简单对象,当我们需要生产许多个产品族的时候,这种模式就有点乏力了创建对象不再使用传统的new,而是创建一个工厂类,作为all实体类创建对象的一个封装类。(避免了更改类名、构造方法时,需要修改大量的代码)简单工厂模式:(不灵活...

2022-08-16 13:55:00 74

原创 设计模式——面向对象设计原则

面向对象设计原则都是为了高内聚低耦合原则。编程时基本都要遵守单一职责原则分类原则:一种人只干一种事。举例:(比较简单就不代码了)人可以干的事情有很多:敲代码、唱歌、跳舞、打篮球....以人设置成一个类,里面的方法就太多太杂了。所以可以有多个类:程序员(敲代码)、音乐人(唱歌)、爱豆(跳舞)、NBA球员(打篮球)。这样类就具体化了,可以干的事情也就具体了,一旦需要用哪个方法就知道...

2022-08-12 17:21:00 117

原创 Linux入门操作介绍

Linux是由unix衍生而来(小知识:mac也是使用unix核心),由全世界的程序员一起开发的开源系统。如今基于linux已经有了很多版本,我们后面使用的就是衍生版本之一的Ubuntu。Ubuntu安装:https://cn.ubuntu.com/download/server/step1VMware虚拟机安装:https://www.vmware.com/cn/products...

2022-08-07 15:04:00 81

原创 后端编写Swagger接口管理文档

Swagger接口管理文档访问接口文档的网页:http://localhost:8080/swagger-ui/index.html导入依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifact...

2022-08-06 17:29:00 116

原创 JPA作持久层操作

JPA(Hibernate是jpa的实现)jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。虽然jpa可以直接通过编写java代码来操作数据库表结构,避免了sql的编写,但别忘了需要先建立jpa需要操作的数据库并更改配置文件到该数据库,jpa不能建库!!!国外比较流行jpa,国内更加流行mybatis,因为mybatis直接操作数据库容易懂和后期维护一点。(其实是国内程序...

2022-08-05 15:44:00 340

原创 通过过滤器实现前后端分离的跨域问题

创建过滤器解决跨域问题(就是前后端在不同服务器上运行)注意:局部和全局只能选择一种!!!本文只讲述了解决跨域问题的方法,不提供源码讲解。开启跨域配置如果使用了springsecurity则需要在securityconfig中添加 .cors()全局开启:SecurityConfig:(随便一个config都行,这里就先放在securityconfig里)@Beanpub...

2022-08-04 15:21:00 251

原创 spring boot实现不同生产环境下的文件配置

配置不同生产环境本文适用于开发环境下需要打包项目至生产环境,避免开发环境的配置文件泄露。设置maven作用:1. 手动调节运行时的不同环境 2. 打包时可以不会有其它环境的文件注:每次换环境前(打包前)记得手动clean清楚,因为idea不会在换环境后自动清除另一个环境的文件在pom文件中加在依赖前加<!--分别设置开发,生产环境--><profi...

2022-07-30 14:12:00 150

原创 实现邮箱发送验证码功能

邮箱验证步骤本文使用了redis数据库做验证码的缓存,不想用redis数据库也可以直接将验证码放入mysql中,设置验证码有效期即可。导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-ma...

2022-07-29 16:28:00 383

原创 基于spring security创建基本项目框架

SpringBoot建项目步骤建表新建项目(package name可以自定义,整个项目只能在该包下)选择可能有到的依赖(别忘了勾选SQL中的Mybatis Framework,创建项目如果没有勾选mybatis框架,就需要手动加下面代码<dependency> <groupId>org.mybatis.spring.boot</gro...

2022-07-25 15:16:00 72

原创 spring boot设置日志打印为控制台输出和文件输出

日志打印sources里建logback-spring.xml<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 导入其他配置文件,作为预设 --> <include resource="org/springframework/boot/l...

2022-07-25 14:44:00 959

原创 Redis做Mybatis的二级缓存

Redis做mybatis的二级缓存作用提升速度,保证多台服务器访问同一数据库时不会崩注意:保证本地有下载redis且已经打开,否则无法使用。【本文只讲述了实现步骤,并没有原理讲解】保证有导入mybatis依赖和Redis依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> ...

2022-07-25 14:22:00 279

原创 Servlet 学习总结

Servlet学习笔记Servlet学习学习视频为:https://www.bilibili.com/video/BV1Ta4y1H7VcIDEA的使用IDEA的简介IDEA 全称 IntelliJ IDEA,由JetBrains公司开发,是java编程语言开发的集成环境。在业界被公认为最 好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(g...

2022-06-08 22:14:00 208

原创 Servlet学习笔记

Servlet学习学习视频为:https://www.bilibili.com/video/BV1Ta4y1H7VcIDEA的使用IDEA的简介IDEA 全称 IntelliJ IDEA,由JetBrains公司开发,是java编程语言开发的集成环境。在业界被公认为最 好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn 等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA的特色功能智能选取

2022-05-10 19:48:37 442

原创 百钱买百鸡问题

百钱买百鸡问题题目:公元前5世纪末,中国古代数学家张丘建在他的《算经》中提出了著名的 “百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?即一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,雏鸡一钱3只,问一百只鸡中公鸡、母鸡、雏鸡各多少?三种解法O(n)思路:利用高中的参数方程求解/** * x + y + z = 10...

2022-03-10 18:36:00 1332

原创 MySQL知识点总结(完整版)

MySQL学习笔记登录和退出MySQL服务器# 登录MySQL$ mysql -u root -p12345612# 退出MySQL数据库服务器exit;基本语法-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;--...

2022-03-10 17:50:00 190

原创 MySQL 知识点总结(简易版)

MySQL 总结(简易版)基本语法0. 1基本语法# 登录MySQL$ mysql -u root -p12345612# 退出MySQL数据库服务器exit;-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;--...

2022-03-10 17:48:00 85

原创 汉诺塔Hanoi

汉诺塔Hanoi一个圆盘if (n==1){ System.out.println(a+" -----> "+c); //a ---> c }两个圆盘else{ hanoi(n-1,a,c,b); //a ---> b System.o...

2022-02-07 21:03:00 46

空空如也

空空如也

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

TA关注的人

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