自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (5)
  • 收藏
  • 关注

原创 PMP备考图表汇总详解

文章目录前言一、亲和图二、因果图三、控制图四、流程图五、直方图六、矩阵图七、思维导图八、系统交互图九、逻辑数据模型十、散点图十一、影响图十二、迭代燃尽图十三、层级型十四、责任分配矩阵十五、文本型十六、帕累托图十七、横道图(甘特图)十八、里程碑图十九、项目进度网络图(逻辑横道图)二十、层级图二十、龙卷风图总结前言往项目管理的道路上发展与前进一、亲和图定义:用来对大量创意进行分组的技术,以便进一步审查和分析作用:可以对潜在缺陷成因进行分类,显示最应该关注的领域应用章节:5.2/8.2

2020-10-14 16:47:36 5065 2

原创 智能家居配网

配网

2023-07-18 15:43:41 306

原创 一条SQL在MySQL中是如何执行的

MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MyS

2022-03-07 13:43:31 270

原创 Mysql优化之Explain工具介绍与索引最佳实践

Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中Explain分析示例参考官方文档示例表: DROP TABLE IF EXISTS `classes`;CREATE TABLE `classes` ( `cla

2022-03-07 11:02:27 196

原创 Redis高频面试题

1、redis的几种数据类型?五大基本数据类型:String、List、Set、ZSet、Hash2、redis是单线程还是多线程?无论是什么版本的redis工作线程只有一个,在6.x高版本中出现了IO多线程(处理磁盘读写的是多线程,进行数据计算和操作的只有一个工作线程。类似netty的主从Reactor模式3、redis有线程安全性问题吗?为什么?redis是线程安全的,redis可以保证内部串行,外界使用时只需要保证业务顺序即可4、redis的缓存穿透、击穿、雪崩详述一下?穿透

2022-02-17 15:54:26 623

原创 多线程番外篇-CAS操作

1.1 什么是CAS?使用锁时,线程获取锁是一种悲观锁策略,即假设每一次执行临界区代码都会产生冲突,所以当前线程获取到锁的时候同时也会阻塞其他线程获取该锁。而CAS操作(又称为无锁操作)是一种乐观锁策略,它假设所有线程访问共享资源的时候不会出现冲突,既然不会出现冲突自然而然就不会阻塞其他线程的操作。因此,线程就不会出现阻塞停顿的状态。那么,如果出现冲突了怎么办?无锁操作是使用**CAS(compare and swap)**又叫做比较交换来鉴别线程是否出现冲突,出现冲突就重试当前操作直到没有冲突为止。1

2021-12-09 16:32:29 173

原创 多线程番外篇-锁升级、偏向锁

从JDK1.6开始,synchronized锁的实现发生了很大的变化;JVM引入了相应的优化手段来提升synchronized锁的性能,这种提升涉及到偏向锁,轻量级锁以及重量级锁,从而减少锁的竞争带来的用户态与内核态之间的切换;这种锁的优化实际上是通过java对象头中的一些标志位去实现的;对于锁的访问与改变,实际上都是与java对象头息息相关。对象实例在堆中会被划分为三个部分:对象头,实例数据与对其填充。对象头也是由三块内容来构成:1.Mark Word 2.指向类的指针 3.数组长度其中Mark W

2021-11-27 14:32:26 351

原创 JUC之共享模型无锁

导航1、多线程学习一6. 共享模型之无锁管程即monitor是阻塞式的悲观锁实现并发控制,这章我们将通过非阻塞式的乐观锁的来实现并发控制6.1 问题提出有如下需求,保证account.withdraw取款方法的线程安全 Test5.javapublic class Test5 { public static void main(String[] args) { Account.demo(new AccountUnsafe(10000)); }}class

2021-11-27 14:12:06 578

原创 JUC之共享模型内存

导航1、多线程学习一2、多线程学习二5. 共享模型之内存上一章讲解的 Monitor 主要关注的是访问共享变量时,保证临界区代码的原子性。这一章我们进一步深入学习共享变量在多线程间的【可见性】问题与多条指令执行时的【有序性】问题5.1 Java 内存模型JMM 即 Java Memory Model,它从java层面定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面原子性 - 保证指令不会受到线程上下文切换的影响可见性

2021-11-27 14:11:49 290

原创 线程池JUC

8.2 J.U.C8.2.1 AQS 原理概述:全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state 状态独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程

2021-11-27 14:10:47 514

原创 JUC之线程池ThreadPoolExecutor

8. 共享模型之工具8.1 线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线

2021-11-27 14:10:34 431

原创 JUC之synchronized详解

导航1、多线程学习一本节主要讲述synchronized的原理以及锁级别,锁变化4.1 线程出现问题的根本原因分析线程出现问题的根本原因是因为线程上下文切换,导致线程里的指令没有执行完就切换执行其它线程了,下面举一个例子 Test13.java static int count = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread

2021-11-27 14:01:03 288

原创 JUC之Thread详解

多线程学习一1 概述一般的工作当中是不需要接触并发,但是我们不能单纯的做一个CRUD大师,还是需要强化一下自己的技能,技术越好,后面的路越是平坦。新生代农名工让我们一起来深入学习吧!此内容来源于B站黑马程序员。仅用于学习记录2.1 进程与进程进程程序由指令和数据组成,但是这些指令要运行,数据要读写,就必须将指令加载到cpu,数据加载至内存。在指令运行过程中还需要用到磁盘,网络等设备,进程就是用来加载指令管理内存管理IO的当一个指令被运行,从磁盘加载这个程序的代码到内存,这时候就开启了一个进程

2021-11-27 13:46:37 212

原创 Spring原理讲解

Spring原理讲解1、什么是Spring框架,Spring框架主要包含哪些模块​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Sp

2021-11-11 11:30:24 1215

原创 SpringCloud微服务架构07-服务熔断

熔断概念:概述前面我们学过:Eureka实现了服务注册与发现服务间调用。Ribbon实现了客户端负载均衡Feign实现了声明式 API调用这节学习 微服务间的容错​ 在分布式系统下,微服务之间不可避免地会发生相互调用,但每个系统都无法百分之百保证自身运行不出问题。在服务调用中,很可能面临依赖服务失效的问题(网络延时,服务异常,负载过大无法及时响应)。因此需要一个组件,能提供强大的容错能力,为服务间调用提供保护和控制。我们的目的:当我自身 依赖的服务不可用时,服务自身不会被拖垮。防止微服

2021-11-05 11:46:24 1411

原创 SpringCloud微服务架构06-Feign声明式REST调用

1. Feign声明式REST调用1.1 概念OpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅地调用http api。OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。《Ribbon流程图》feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求。还可以集成Ribbon

2021-11-05 11:42:40 370 1

原创 Netty优化与源码

四. 优化与源码1. 优化1.1 扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[])反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下// 反序列化byte[] body = new byte[bodyLength];byteByf.readBytes(body);ObjectIn

2021-11-04 16:51:19 132

原创 Netty粘包与半包问题解析与处理

三. Netty 进阶1. 粘包与半包1.1 粘包现象服务端代码public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worke

2021-11-04 16:45:50 183

原创 Netty基本概念模型解析

二. Netty 入门1. 概述1.1 Netty 是什么?Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端1.2 Netty 的作者他

2021-11-04 16:41:03 172

原创 Netty三大组件详解

一. NIO 基础non-blocking io 非阻塞 IO1. 三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层#mermaid-svg-RNTOTLUZLfzEDN15 .label{font-family:'trebuche

2021-11-04 16:34:06 494

原创 SpringCloud微服务架构05-Ribbon负载均衡

Ribbon负载均衡1.1 两种负载均衡​ 当系统面临大量的用户访问,负载过高的时候,通常会增加服务器数量来进行横向扩展(集群),多个服务器的负载需要均衡,以免出现服务器负载不均衡,部分服务器负载较大,部分服务器负载较小的情况。通过负载均衡,使得集群中服务器的负载保持在稳定高效的状态,从而提高整个系统的处理能力。软件负载均衡:nginx,lvs硬件负载均衡:F5我们只关注软件负载均衡,第一层可以用DNS,配置多个A记录,让DNS做第一层分发。第二层用比较流行的是反向代理,核心原理:代理根

2021-10-27 09:48:49 292

原创 SpringCloud微服务架构04-服务间调用

服务间调用​ 微服务中,很多服务系统都在独立的进程中运行,通过各个服务系统之间的协作来实现一个大项目的所有业务功能。服务系统间 使用多种跨进程的方式进行通信协作,而RESTful风格的网络请求是最为常见的交互方式之一。http。​ 思考:如果让我们写服务调用如何写。硬编码。不好。ip域名写在代码中。目的:找到服务。根据服务名,找相应的ip。目的:这样ip切换或者随便变化,对调用方没有影响。Map<服务名,服务列表> map;加上负载均衡。目的:高可用。sprin

2021-10-27 09:28:22 338

原创 SpringCloud微服务架构03-服务注册与发现

2 服务注册与发现1.1 Eureka 单节点搭建pom.xml<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>有的教程中还引入spring-boot-starter-web,其实不用。因为上

2021-10-27 09:27:14 280

原创 SpringCloud微服务架构01-概述

1 微服务概述Spring Cloud技术点Eureka:服务注册与发现,用于服务管理。Feign: web调用客户端,能够简化HTTP接口的调用。Ribbon:基于客户端的负载均衡。Hystrix:熔断降级,防止服务雪崩。Zuul:网关路由,提供路由转发、请求过滤、限流降级等功能。Config:配置中心,分布式配置管理。Sleuth:服务链路追踪Admin:健康管理2 服务进化概述传统服务到微服务进化。《传统到分布式演进》单体应用-> SOA ->

2021-10-27 09:19:44 174

原创 Mybatis-plus的使用

04mybatis-plus的使用​ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。​ 特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持

2021-09-16 15:38:20 250

原创 SpringBoot,mysql,Mabatis整合

03mybatis框架整合及逆向工厂1、三大框架整合​ 在老期的项目中,一般都是使用ssm项目做开发的,虽然现在的主流开发是springboot来做开发,但是ssm的基本整合还是需要掌握的。1、导入pom文件1、导入spring的pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.

2021-09-16 15:38:11 80

原创 Mybatis SQL映射文件详解

02Mybatis SQL映射文件详解​ 在之前我们学习了mybatis的全局配置文件,下面我们开始学习mybatis的映射文件,在映射文件中,可以编写以下的顶级元素标签:cache – 该命名空间的缓存配置。cache-ref – 引用其它命名空间的缓存配置。resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。parameterMap – 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。sql – 可被其它语句

2021-09-16 15:38:02 258

原创 SpringBoot集成Mybatis应用

01Mybatis的介绍和基本使用0、数据库操作框架的历程(1) JDBC​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序优点:运行期:快捷、高效缺点:编辑期:代码量大、繁琐异常处理、不支持数据库跨平台(2) DBUtils​ DBUt

2021-09-16 15:37:52 117

原创 SpringMVC简单介绍及使用二

02SpringMVC的使用(1)SpringMVC的请求处理1、SpringMVC对请求参数的处理​ 在之前的servlet中我们可以通过request.getParameter()来获取请求中的参数,但是在我们编写的SpringMVC的应用程序中,在具体请求的方法中并不包含request参数,那么我们应该如何获取请求中的参数呢?​ 需要使用以下几个注解:​ @RequestParam:获取请求的参数​ @RequestHeader:获取请求头信息​ @CookieValue:获取

2021-09-16 15:37:43 72

原创 MyBatis 流程图

2021-09-16 15:37:27 124

原创 SpringMVC简单介绍及使用一

01SpringMVC简单介绍及使用1、什么是MVC?​ MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。​ **Model(模型):**数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Val

2021-09-16 15:37:06 72

原创 SpringMVC简单介绍及使用三

03SpringMVC的使用1、SpringMVC的返回JSON数据​ 到目前为止我们编写的所有Controller的方法的返回值都是String类型,但是大家应该都知道,我们有时候数据传递特别是在ajax中,我们返回的数据经常需要使用json,那么如何来保证返回的数据的是json格式呢?使用@ResponseBody注解pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apach

2021-09-14 16:38:51 74

原创 SpringMVC的请求流程-图解

2021-09-14 16:37:22 95

原创 SpringMVC源码解析

04SpringMVC源码解析​ 在讲解springmvc之前,其实是需要大家了解一点tomcat的源码知识的,但是大部分的初学者还只停留在应用的层面,所以,下面展示tomcat容器初始化的流程图和加载servlet的流程图,大家只需要先记住他们的执行顺序即可,等后续开始tomcat源码之后我们再做下一步深入了解。1、Tomcat容器初始化流程图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YfcU8ak0-1631608551669)(image\tomcat容器初

2021-09-14 16:36:17 375

原创 Spring MVC处理器适配器的详细处理过程

05 处理器适配器的详细处理过程​ 当把需要的处理器和适配器找到之后,下面就开始执行具体的处理过程了,通过下述代码进行调用:mv = ha.handle(processedRequest, response, mappedHandler.getHandler());找到RequestMappingHandlerAdapter的类中@Override protected ModelAndView handleInternal(HttpServletRequest request, Http

2021-09-14 16:35:41 342

原创 Spring AOP的高级应用

Spring AOP的应用配置1、Spring JdbcTemplate​ 在spring中为了更加方便的操作JDBC,在JDBC的基础之上定义了一个抽象层,此设计的目的是为不同类型的JDBC操作提供模板方法,每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务,通过这种方式,可以尽可能保留灵活性,将数据库存取的工作量讲到最低。1、配置并测试数据源pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="ht

2021-09-14 16:32:27 67

原创 Spring IOC的初始化过程图解

2021-09-14 16:29:52 182

原创 JDK、cglib动态代理详解

07动态代理1、jdk的动态代理​ 动态代理与静态代理的区别此处不再赘述,大家可以看马老师的设计模式视频,我们主要讲一下动态代理的实现原理,说明白原理的话肯定是要看源码了,大家不要慌,干就完了!!!​ 其实在使用动态代理的时候最最核心的就是Proxy.newProxyInstance(loader, interfaces, h);废话不多说,直接干源码。动态代理的样例代码:Calculator.javapackage com.mashibing;public interface Calc

2021-09-14 16:24:28 165

原创 Spring AOP介绍与使用

04Spring AOP介绍与使用AOP:Aspect Oriented Programming 面向切面编程OOP:Object Oriented Programming 面向对象编程​ 面向切面编程:基于OOP基础之上新的编程思想,OOP面向的主要对象是类,而AOP面向的主要对象是切面,在处理日志、安全管理、事务管理等方面有非常重要的作用。AOP是Spring中重要的核心点,虽然IOC容器没有依赖AOP,但是AOP提供了非常强大的功能,用来对IOC做补充。通俗点说的话就是在程序运行期间,将某

2021-09-14 16:23:17 74

原创 Spring原理讲解

06Spring原理讲解1、什么是Spring框架,Spring框架主要包含哪些模块​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从

2021-09-14 16:21:40 1104

两个集合比较(新增、编辑、删除)

两个集合比较(重新生成:新增集合、编辑集合、删除集合)

2022-07-14

netty-代码.zip

项目包

2021-11-05

MQTTDevice.zip

JAVA实现MQTT客户端订阅消息并消费

2021-09-16

PMP图表汇总统计与详解

PMP汇总与详解,详细的说明了POMBOK中提及的图表相关定义作用,以及对应图示,能够帮助大家梳理图表,更方便记忆

2020-10-14

DESCode.java

des对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法

2020-09-18

空空如也

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

TA关注的人

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