自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)

原创 MySQL深度解析--锁

Ⅰ.MySQL中的锁1.全局锁概念对整个数据库实例加锁。让整个库处于只读状态。开启全局锁后,其他线程的数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句将被阻塞。命令(FTWRL)Flush tables with read lock 使用场景全库逻辑备份(对于使用了不支持事务引擎的表或库)使用FTWRL命令使全库进入只读状态,然后对整个库进行备份。防止备份过程中各表视图不一致的问题。存在的问题:如果你在主库上备份,那么在备份期间都不能执行更新

2020-10-26 14:39:59 6

原创 MySQL深度解析--索引

Ⅰ.索引索引的作用索引的出现就是为了提高查询效率,相当于数据的一个目录。索引的模型选择提高数据读写效率的模型主要有Hash、有序数组、搜索树。Hash 数据结构由Hash函数、数组和链表组成。在写入数据时可以直接找到对应位置存放数据,或者直接在对应位置链表后追加数据。写入效率高。但是查询的时候只有第一层数组的时候较快,如果同一个Hash位置有多个值组成的链表,那么就需要遍历该位置所有链表数据,在范围查询时效率低。所以Hash只适用于只有等值查询的场景,比如NoSQL引擎。有序数组中所有元素都是

2020-10-26 10:48:08 4

原创 MySQL深度解析--事务隔离级别

MySQL事务隔离Ⅰ.四种隔离级别1.读未提交一个事务还没提交时,它做的变更就能被别的事务看到。2.读已提交一个事务提交之后,它做的变更才会被其他事务看到。3.可重复读一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。4.串行化顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。Ⅱ.隔离机制分析读未提交直接返回记

2020-10-23 16:13:05 6

原创 MySQL深度解析---日志系统

一、日志系统redo log (重做日志)1.功能作用InnoDB引擎特有的日志,用来临时的记录数据库的更新操作。记录的是“在某个数据页上做了什么修改”。2.原理解析redo log 是物理日志,它分为两部分,一部分是在内存中的日志缓冲redo log buffer,另一部分是在磁盘上的重做日志文件 redo log file。而每次把日志从内存持久化到磁盘都需要经过操作系统内核空间os buffer 并且调用一次操作系统的fsync()操作,调用fsync()的作用就是将OS buffer中的日

2020-10-23 15:20:37 6

原创 MySQL深度解析----基础架构

一、MySQL基础架构大体来说MySQL可分为Server层和存储引擎层1、Server层Server层包含了所有跨存储引擎的功能,比如存储过程、触发器、视图、还有所有内置函数(如日期、时间、数学等),此外Server层还包含了几个重要的组件,下面会逐个介绍它们的功能。连接器功能和客户端 建立连接、获取权限、维持和管理连接。特点在连接建立时一次性的获取权限,之后 此连接的权限都将取决于建立连接时获取的权限。常用命令mysql -h$ip -P$port -u$user -p --建

2020-10-22 14:37:11 3

原创 API开发实战----调用高德API实现轨迹纠偏里程校准

一、前言在一些和车辆设备有关的项目中需要用到回显车辆的运行轨迹、或者是显示车辆的详细信息(比如里程值、速度等等),但是有些时候,安装在车辆上的GPS上报设备上报的数据并不是百分之百的精准,可能的情况有:个别点的经纬度有偏差(并没有在道路上),车辆的里程值有误等等。本实例要解决的就是车辆的轨迹点偏移和里程值的更新校准。二、 总体思路在了解实现流程之前,需要对几个属性进行说明。设备号:安装在车...

2020-08-06 10:41:41 36

原创 SpringBoot热部署(108)

108-devtools开发热部署只需要引入Spring-devtools依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>引入依赖后 重新编译

2020-08-04 15:35:08 33

原创 SpringBoot与分布式(102-107)

分布式一般使用zookeeper+dubbo或者Spring Boot+Spring Cloud102、103-Dubbo简介、安装关于Dubbo详见Dubbo篇docker安装zookeeperdocker pull zookeeper104-分布式-SpringBoot整合Dubbo、zookeeper服务提供者:1.引入dubbo、zkClient依赖 <dependency> <groupId>com.alibaba.boot</grou.

2020-08-04 15:24:19 42

原创 SpringBoot安全相关(99-101)

99~101-安全-登录&认证&授权&权限控制&注销&记住我&定制登录页安全部分内容主要以演示功能为主,实际项目中用户信息和权限都存在数据库中。1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId>

2020-08-02 17:51:16 48

原创 SpringBoot任务相关(95-97)

95-任务-异步任务在处理与第三方进行交互的时候,可以使用异步任务来交互,避免过长的等待时间。Spring在3.x之后就使用了@Async来使用异步。在主程序上开启异步注解@EnableAsync //开启异步注解功能@SpringBootApplicationpublic class Springboot04TaskApplication { public static void main(String[] args) { SpringApplication.run(Springbo

2020-08-02 16:42:53 49

原创 SpringBoot与ElasticSearch整合(91-94)

91、92-ES安装、入门详见ES篇。93-检索-SpringBoot整合Jest操作ESSpringBoot默认是用Spring-Data-ElasticSearch模块进行操作1.使用Jest来操作ES导入依赖 <dependency> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>5.3.3</ve

2020-08-02 16:06:07 59

原创 SpringBoot与消息中间件RabbitMQ(84-89)

84-JMS&AMQP消息协议1.消息队列一般用来解决:异步处理应用解耦流量削峰(秒杀)2.消息队列的两种主要形式:点对点发布/订阅3.两种不同的消息协议JMS(Java Message Service)基于JVM消息代理的规范,ActiveMQ是JMS实现AMQP(Advanced Message Queuing Protocol)高级消息队列协议,也是一个消息代理的规范,兼容JMS,RabbitMQ是AMQP的实现两种消息协议的对比4.Spring支持

2020-08-02 14:47:50 51

原创 SpringBoot学习笔记-多技术栈场景整合start(72-83)

72-JSR107缓存规范JSR是一种缓存规范1.Java Caching定义了5个核心接口CachingProvider: 定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。CacheManager: 定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。Cache: 是一个类似Map的数

2020-07-27 22:45:09 21

原创 SpringBoot学习笔记(67-70)

67-启动原理-创建SpringBootApplication对象的初始化几个重要的事件回调机制:配置在META-INF/spring.factories—(代表重写时需要在静态文件夹下新建META-INF/spring.factories文件,参照源码的配置格式配置重写的类)ApplicationContextInitializerSpringApplicationRunListener只需要放在ioc容器中—(代表重写时需要在重写类上加@Compont注解)ApplicationRu

2020-07-21 20:37:15 46

原创 SpringBoot学习笔记(59-66)

59-SpringBoot数据访问简介SpringBoot中的数据访问都是使用了Spring全家桶中的SpringData。启动器中带data的就表示使用了SpringData。数据访问主要介绍:JDBC、MyBatis、JPA60-JDBC&自动配置原理构建项目时勾选MySql和JDBC等等,导入依赖。1.JDBC依赖:<dependency> <groupId>org.springframework.boot</groupId> &

2020-07-21 09:37:19 29

原创 SpringBoot学习笔记(51-58)

51- web开发-外部Servlet容器启动SpringBoot应用原理1.使用外部Servlet容器的启动过程SpringBoot打成jar包的执行过程:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器;SpringBoot打成war包的执行过程:启动服务器,服务器启动SpringBoot应用【SpringBootServletInitializer】,最后启动ioc容器;war包的执行具体流程:启动Tomcat(先启动Servlet容器)服务

2020-07-18 15:57:52 57

原创 SpringBoot学习笔记(41-50)

41-【实验】-员工修改-重用页面-修改完成1.回显员工信息:用get的方式获取单个员工信息Controller中使用@GetMapping("emp/{id}")使用@PathVariable("id")来获取请求路径中的id获取后把获取到的对象放入model的数据对象中:model.setAttribute("emp",employee);2.重用页面:使用以下标签实现重用th:value="${emp!=null}?${emp.lastName}"//如果回显对象不为空就

2020-07-17 12:17:17 59

原创 SpringBoot学习笔记(29-30)

SpringBoot推荐使用thymeleaf页面模板引擎MVC的Controller一、引入thymeleafthymeleaf2 适配 layout1thymeleaf3 适配 layout2<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId>

2020-06-22 23:27:57 62

原创 SpringBoot学习笔记(27-28)

SpringBoot的web开发一、使用SpringBoot进行web开发1.创建SpringBoot应用,选中我们需要的模块2.SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来。3.自己编写业务代码二、SpringBoot对静态资源的映射规则:ResourceProperties.java所有有关静态资源的相关配置类。webMvcAutoConfiguration.java静态资源自动配置类。webMvcAutoConfiguration

2020-06-12 00:12:55 34

原创 SpringBoot学习笔记(19-26)

注解:@Conditionnal作用:判断某个状态是否成立,才给容器中添加组件,配置类里面的内容才生效。它有很多派生注解:判断容器中是否存在指定bean判断容器中是否存在指定class判断是web项目等等。自动配置类只有在一定条件下才能生效,所以就算导入自动配置,每个配置类也只有在条件满足的情况下自动配置。那么如何查看当前哪些类的自动配置生效了呢?主配置中配置:debug=true让控制台打印自动配置报告,这样就可以看到哪儿些配置类生效。Positive matches:生效的配置类

2020-06-10 23:28:31 63

原创 SpringBoot学习笔记(16-18)

SpringBoot配置配置文件加载位置有多个按照下列位置的优先级 由高到低 高优先级覆盖低优先级Spring会从这四个地方全部加载主配置文件,互补配置!1.file(当前项目文件根目录):./config/2.file:./3.classpath(类路径):/config/4.classpath:/也可以通过spring.config.location 来改变默认配置项目打包后,可以使用命令行参数的方式,启动项目时显式指定配置文件位置:java -jar xxx.jar --sp

2020-06-09 00:29:08 57

原创 SpringBoot学习笔记(11-15)

YMAL的配置在properties中也可以重新配置例如:person.age=18person.maps.k1=v1person.maps.k2=v2person.dog.name=kele需要注意的是,properties文件需要修改文件编码,默认是UTF-8,需要设置 在运行时把中文转为ACLL码。@value获取值和@ConfigurationProperties获取值的比较value必须一个一个指定config则是批量指定config支持松散绑定,大写可以用"-"/"_"(横杠

2020-06-07 23:28:06 47

原创 SpringBoot学习笔记(1-10)

Demo版本:JDK1.8SpringBoot:1.5.9Maven:3.3.9Idea:2020.01HelloWorld:创建一个Maven项目1.引入依赖2.编写启动器,用@SpringBootApplication标注主程序3.编写一个Controller,这个Controller需要在启动类的所在包内才能被扫描Controller使用的是Spring的注解来做寻址和返回json等等SpringBoot程序可以打成一个Jar包。在服务器上直接用java -jar 直接运行。因

2020-06-04 23:32:03 61

原创 Dubbo通信协议特性对比

通信协议是RPC框架中网络传输的基础,在不同的场景下应用不同的通信协议也是dubbo灵活性和易用性的一种体现。

2020-05-25 23:57:52 70

原创 Dubbo的一些思考

总览众所周知,dubbo是一个分布式RPC框架,主要解决服务间互相调用的问题。调用其实类似接口调用,如果想要调用不同服务器上的接口可以使用HTTP直接调用的方法,但是这种方法的开销很大,并且不好处理远程调用中出现的各种问题(超时重试、负载均衡等等),也不方便监控服务端的存活情况,接口调用的次数等等。而dubbo有着自己的监控中心来监控服务端和消费端之间交互的次数、注册中心来引导消费端均衡、高可用的调用服务端的服务。并且支持多种网络编码方式,在特定的使用场景可以灵活配置为更适合的网络编码方式。dubbo可以

2020-05-21 22:26:52 111

原创 Redis进阶--常见问题整理

一、在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?1)项目中缓存是如何使用看具体项目的应用场景,比如说:我的项目是一个和车辆上报的信息有关的项目,车的数量很多,上报很频繁,但是上报数据到项目时,需要拿到该车辆的信息(最大限速、规定的活动范围等等),来进行一些是否超速,是否越界的判断。这时候,如果从数据库中取,那么给数据库的压力会非常大,所以用缓存来缓解数据库压力。2)为啥在项目里...

2020-04-01 10:15:16 115

原创 Dubbo--入门学习笔记

一、为什么需要 dubbo很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的,那么,dubbo是怎么被提上日程的呢?在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但是,随着流量的增大,常规的垂直应用架构已无法应对...

2020-03-09 19:54:56 48

原创 Zookeeper---概念性认知

一、什么是ZookeeperZookeeper是一个,分布式应用程序协调服务。为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。官网:http://zookeeper.apache.org/源码:https://github.com/apache/zookeeper二、zookeeper的特性顺序一致性:从同一个客户端发起的事务请求,最终将会...

2020-03-09 15:08:01 48

原创 SSM框架---小结

一、Mybatis1.概述MyBatis是对JDBC进行了简单的封装,帮助用户进行SQL参数的自动化映射,以及结果集与Java对象的映射。与Hibernate相比,更加配置简单、灵活、执行效率高。但是正因为此,所以没有实现完全自动化,需要手写SQL,这是优点也是缺点。由于SQL可见的,可以根据业务来进行优化。因此,对性能要求较高的电商类项目,一般会使用MyBatis,而对与业务逻辑复杂,对执行...

2020-03-03 14:58:11 150

原创 MySQL常用知识

一、数据库优化思路1.SQL语句优化1)尽量不要在where子句中使用 != 和 <> 操作符,否则引擎将放弃使用索引而进行全表扫描。2)尽量不要在where子句中对字段进行null值判断,否则引擎将放弃使用索引而进行全表扫描。解决方法: select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后...

2020-02-27 13:20:24 97

原创 服务器BUG汇总

1.awt异常如果报错需要在tomcat的bin下的启动脚本cataliina.sh上加配置:CATALINA_OPTS=-Djava.awt.headless=true

2020-02-18 14:39:48 144

原创 ActiveMQ--简介、安装、Hello Word

一、什么是消息中间件消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。说白了,就是实现在两个系统或两个客户端之间进行消息传送的中间应用。特点为:利用 高效可靠 的 消...

2020-01-31 20:53:58 359

原创 Redis应用--在Java和Spring中使用Redis

一、Java使用Redis1.导入Redis依赖在pom文件中添加Jedis(Java Redis)依赖:(具体版本根据实际使用情况而定)<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <ve...

2020-01-30 19:43:49 106

原创 Redis入门--简介、安装、配置

一、Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储...

2020-01-29 18:41:46 148 1

原创 面向对象概述

一、面向对象与面向过程的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。举个例子:如果要实现一个五子棋游戏时面向过程的设计思路就是首先分析下棋的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判...

2020-01-28 14:49:37 179

空空如也

空空如也

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