自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 配置.gitignore并生效

在创建的过程中未添加.gitignore文件,而在后续文件管理过程中需要添加或编辑,通过简单的添加.gitignore文件并不能直接生效,甚至会出现原先定义的.gitignore文件失效,大量不需要提交的文件显示出来。通过本文可以快速安全的解决这个问题。

2022-01-04 17:12:12 543 1

原创 《深入浅出MySQL》第九章 - 索引的设计与使用

一、索引概述索引是数据库中用来提高性能的常用工具,本章主要介绍 MySQL 5.7 支持的索引类型。添加索引索引在创建表的时候可以同时创建,也可以随时增加新的索引。创建新索引的语法如下:CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name[(length)] [ASC | DESC], ...) [index_option] [algorithm_

2021-02-28 00:54:58 285 1

转载 Linux系统安装Python3环境

本文直接转载《Linux系统安装Python3环境(超详细)》 – lebboop-L

2021-02-09 00:47:30 187 1

原创 python学习笔记 - 使用SMTP协议发送邮件

1、前序准备1.1、SMTPSMTP(Simple Mail Transfer Protocol),英文翻译过来就是“简单邮件传输协议”。SMTP是一个相对简单的、基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本就会被传输。SMTP协议的详细内容比较繁杂,本文不对其进行拓展,读者只需知道它是一种邮件的传输协议。用户在遵循这个协议的基础下可以实现邮件的收发功能。2、登录邮箱3、新建并编辑邮件3.1、设置正文内容3.2、设置附件内容3

2021-01-16 02:36:29 1627 1

原创 python学习笔记 - 读写CSV文件

CSV的英文全称为:Comma-Separated Values,翻译过来就是:用逗号分隔的值。时至今日,CSV已经不限于仅仅支持以逗号去分隔数据。那么CSV文件中的数据都是以什么样的方式存储的呢:CSV文件以纯文本的形式去存储表格数据。CSV文件由任意数目的记录组成,通常,所有记录都有完全相同的字段序列。记录之间以某种换行符分隔,如:’\n’。CSV中的每条记录由多个字段组成,每个字段之间以某种分隔符分隔,常见如:, 、|以及制表符。CSV文件为纯文本文件,建议使用记事本来开启;或者先另存新档

2021-01-05 18:00:03 1051 3

原创 python学习笔记 - 绘制折线图与条形图

在处理Excel表格数据时,我们经常会遇到需要分析表中数据,进而生成图表展示数据的变化。Excel中图表存在多种类型,本文主要介绍折线图与柱状图的使用方式。openpyxl库下提供了chart模块,提供了将Excel表格中的数据绘制成图表的功能。所以在绘制图表前,我们需要导入相应的模块。1、折线图1.1、创建折线图对象我们需要构建一个折线图,所以我们需要创建一个可以生成折线图的对象。openpyxl库下的chart模块为我们提供了LineChart类,去构造我们需要的折线图对象。我们首先观察一下

2021-01-01 01:21:52 2262 4

原创 python学习笔记 - Excel工作簿、工作页、行列、单元格介绍

在使用Python对Excel的单元格进行操作之前,我们需要确保本地python库中成功安装了openpyxl类库。若没有安装该类库,则需要在【终端】借助pip工具安装:# win:pip install openpyxl# macpip3 install openpyxl# 若提示下载超时,则用以下的方式安装pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl在Excel中,可将关注的对象分为:【工作簿】、【工作页

2020-12-27 23:43:34 643

原创 python学习笔记 - 设置Excel单元格样式

使用Python批量设置Excel样式

2020-12-25 19:47:20 862 8

原创 Linux操作笔记 - vim常用操作

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富。所以熟练使用vim中一些常见的命令会有效地提高我们在工作中的效率。本文记录一些常用的操作命令,作为作者自身而言的目的是时不时的拿出来联系一遍,读者有兴趣的也可以尝试多加练习。

2020-10-24 14:57:04 188

原创 并发编程 - 通过案例分析synchronized

1、进程与线程进程:表示正在运行的程序,一个应用可能同时开启一个或多个线程,它拥有一些静态资源,如:内存、CPU。进程之间也可以通过管道、信号量、共享存储、Socket、消息队列等方式相互通信。线程:表示执行指令的集合,一个进程对应一个或多个线程,而线程会使用或者共享所在进程的资源。同一个进程内的线程之间也可以通过管道、同步、wait、notify、信号量等方式相互通信。2、线程的创建2.1、继承Thread方式public class DemoThread extends Thread {

2020-09-29 01:19:03 142

原创 SpringBoot学习笔记17 - 自定义Starter

1、Spring Boot与Redis的整合在《SpringBoot学习笔记16 - 类的自动装配》的 3.2 段提到,框架需要装配的类存储都记录在spring-boot-autoconfigure依赖下的spring.factories文件中,该文件中记录了SpringBoot主动开发调用第三方的类。换言之,以Redis为例,Redis作为一个功能强大的缓存服务器,SpringBoot自然不会放弃它,而Redis也不会为了适应Java环境而为其单独开发。所以这个功能只能由SpringBoot自己实现,

2020-09-20 23:29:44 145

原创 SpringBoot学习笔记16 - 类的自动装配

1、剖析@SpringBootApplication注解创建一个SpringBoot工程后,SpringBoot会为用户提供一个Application类,该类负责项目的启动:@SpringBootApplicationpublic class SpringbootSeniorApplication { public static void main(String[] args) { SpringApplication.run(SpringbootSeniorApplication.class,

2020-09-19 23:47:59 236 2

原创 绝对路径与相对路径解析问题

1、路径的构成路径由两部分构成:资源路径与资源名称。即:路径 = 资源路径 + 资源名称资源路径与资源名称的分水岭为:路径中的最后一个斜杠。该斜杠的前面部分称为资源路径,后面部分称为资源名称。如:请求路径:http://localhost:8080/contextpath/filterpath/index资源路径:http://localhost:8080/contextpath/filterpath资源名称:index2、路径的分类根据该路径是否可以唯一的定位一个资源,可以将路径划分

2020-09-18 16:41:22 433

原创 SpringBoot学习笔记15 - Thymeleaf

Thymeleaf是一个流行的模板引擎,该模板引擎采用 Java 语言开发。Java 中常见的模板引擎有 Velocity、Freemaker、Thymeleaf 等。不同的模板引擎都会具有自己的特定的标签体系,而 Thymeleaf 以 HTML 标签为载体,在 HTML 的标签下实现对数据的展示。Thymeleaf 本身与 SpringBoot 是没有关系的,但 SpringBoot 官方推荐使用 Thymeleaf 作为前端页面的数据展示技术,SpringBoot 很好地集成了这种模

2020-09-13 23:28:21 386

原创 SpringBoot学习笔记14 - Filter应用

1、注解方式注意:该方案仅适用于Servlet3.0及其之后的版本。1.1、定义Filter为定义的Filter添加@WebFilter注解@WebFilter("/*") // 拦截所有请求public class DemoFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,

2020-09-13 02:04:05 79

原创 SpringBoot学习笔记13 - Servlet应用

1、注解方式注意:该方案仅适用于Servlet3.0及其之后的版本。1.1、定义Servlet为定义的Servlet添加@WebServlet注解@WebServlet("/demo")public class DemoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servle

2020-09-13 01:20:32 72

原创 SpringBoot学习笔记12 - Interceptor应用

1、定义拦截器通过实现接口HandlerInterceptor,并重写其中方法去定义拦截器,接口内容如下:public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; }

2020-09-13 00:11:33 101

原创 双重检查锁线程安全问题

1、说明在我们平时的开发过程中,双重检查锁的开发思路可以为我们解决一些问题,比如在解决Redis在高并发情况下可能会出现的热点缓存问题,就可以用双重检查锁的机制去解决;又比如说单例模式:@Component // 当前类也是单例public class SingletonFactory { private SingletonBean bean; private SingletonFactory(){} public SingletonBean getInstance()

2020-09-12 22:19:37 397

原创 SpringBoot学习笔记11 - Redis应用

1、Redis数据分类使用Redis缓存的数据可以划分为两类:DB更新后,redis中缓存的数据必须马上清除,以保证缓存中的数据与Redis中的数据绝对一致性。对数据实时性要求不是很高,只要与DB中的数据差别不大就可以。这类数据一般会为其设置过期失效。...

2020-09-12 00:00:19 128

原创 SpringBoot学习笔记10 - 控制日志输出

1、说明Spring Boot中使用的日志技术为logback。其与Log4J出自一人,其性能优于Log4J,是Log4J的替代者。2、添加依赖在Spring Boot中使用 logback,需要具有spring-boot-starter-logging依赖,而该依赖被spring-boot-starter-web所依赖,即不用直接导入spring-boot-starter-logging依赖。3、方式1: 在application.yml中配置属性# logback日志控制logg

2020-09-10 00:36:09 135

原创 SpringBoot学习笔记9 - 事务的支持

1、事务管理器若工程直接或间接依赖于spring-tx,则框架会自动注入DataSourceTransactionManager事务管理器;若依赖于spring-boot-data-jpa,则会自动注入JpaTransactionManager。2、准备数据库Teacher(id, name, age)接口TeacherDao#insertTeacher:添加teacher记录。3、发生运行异常时事务回滚当程序发生运行异常时,SpringBoot事务默认回滚:@Serv

2020-09-09 23:19:36 153

原创 SpringBoot学习笔记8 - SpringBoot中使用MyBatis

1、添加必要依赖<dependencies> ... <!-- mybatis 与 spring boot 整合依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</versio

2020-09-09 01:32:12 104 2

原创 SpringBoot学习笔记7 - SpringBoot中使用jsp

1、创建web资源目录在main下创建webapp目录将webapp设置为资源目录2、编写JSP文件在webapp下创建index.jsp编写JSP内容<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <meta charset="UTF-8" /> <title>Title&

2020-09-08 01:19:14 103

原创 SpringBoot学习笔记6 - 读取配置文件信息

1、读取配置属性假设在application.yml文件中,我们定义了如下属性:spring: profiles: active: devauthor: name: blairscott # 自定义属性---spring: profiles: devserver: port: 8081 # 系统属性 servlet: context-path: /devpath---spring: profiles: proserver: port: 8

2020-09-07 12:36:50 156

原创 SpringBoot学习笔记5 - 多环境选择实现

1、多环境选择1.1、场景描述以下两种场景下需要进行多环境选择:相同代码运行在不同环境在开发应用时,通常同一套程序会被运行在多个不同的环境,例如,开发、测试、生产环境等。每个环境的数据库地址、服务器端口号等配置都会不同。若在不同环境下运行时将配置文件修改为不同内容,那么,这种做法不仅非常繁琐,而且很容易发生错误。此时就需要定义出不同的配置信息,在不同的环境中选择不同的配置。不同环境执行不同实现类在开发应用时,有时不同的环境,需要运行的接口的实现类也是不同的。例如,若要开发一个具有短信发送功能

2020-09-05 01:28:09 220

原创 SpringBoot学习笔记4 - 单元测试与自定义异常页面

1、单元测试创建Service接口及其实现类:添加接口方法、实现类实现该方法public interface DemoService { String hello();}@Servicepublic class DemoServiceImpl implements DemoService { @Override public String hello() { return "Hello World!"; }}添加测试方法:

2020-09-04 22:40:47 143

原创 SpringBoot学习笔记3 - Actuator监控器

1、说明Actuator执行器是 Spring Boot 提供的一个可插拔模块,用于对工程进行监控。其通过不同的监控终端实现不同的监控功能。其功能与 Dubbo 的监控中心类似,不同的是,Dubbo 的监控中心是需要专门部署的,而 Spring Boot 的 Actuator 是存在于每一个工程,实现对每一个工程进行监控。2、导入依赖在 pom.xml 文件的<dependencies>标签中添加以下依赖:<dependency> <groupId>org

2020-09-04 14:00:06 308

原创 SpringBoot学习笔记2 - yml文件说明

1、application.properties在Spring项目中,我们通常将历史使用的多而冗长的配置文件复用过来,修改其中的参数,使之适配于新的项目。于是一个新的项目就此形成。在这些项目中,配置文件中的信息通常只有很少的一部分发生了修改。这种开发方式显得极其不优雅。SpringBoot克服了这些问题,它将一些通用的部分抽象并封装了起来,只留下不同的部分作为参数让使用者去配置。在创建SpringBoot项目的时候,项目默认生成的配置文件为:application.properties:在prop

2020-09-02 23:59:26 192

原创 SpringBoot学习笔记1 - HelloWorld

本文主要通过图文的方式一步一步的创建一个SpringBoot项目,并执行并运行Hello World程序。

2020-09-02 23:17:13 117

原创 MySQL - 浅谈分库分表

1、分库分表简介1.1、使用背景当表的数量达到了几百乃至上千张时,若众多的业务模块都访问该数据库,则会对该数据库造成较大的压力,此时需要考虑对其进行分库。当表的数据达到了数千万级别时,则对该表进行对许多操作性能都会损耗严重,此时需要考虑对其进行分库或分表。1.2、数据切分分类数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式:垂直切分:按照业务模块进行切分,将不同模块的表切分到不同的数据库中。水平切分:将一张大表按照一定的切分规则,按照行切分成不同的表或者切分到不

2020-08-26 16:40:23 185

原创 MySQL性能优化1 - 服务器层面优化

1、服务器硬件优化提升硬件设备,例如选择尽量高频率的内存(频率不能高于主板的支持)、提升网络带宽、使用SSD高速磁盘、提升CPU性能等。对于CPU的选择:对于数据库并发比较高的场景,CPU的数量比频率重要。对于CPU密集型场景和频繁执行复杂SQL的场景,CPU的频率越高越好。2、CentOS系统针对MySQL的参数优化2.1、内核相关参数可以通过在文件 sysctl.conf 中添加参数实现优化。该文件默认目录为:/etc/sysctl.conf。以下参数可以直接放到该文件的末尾。增

2020-08-18 23:21:30 309 1

原创 MySQL性能分析与优化 - Profile分析

1、Profile介绍Query Profiler是MySQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的硬件性能瓶颈在什么地方(如CPU、IO等),以及该SQL执行所耗费的时间等。不过该工具只有在MySQL 5.0.37以及以上版本中才有实现。默认的情况下,MySQL的该功能没有打开,需要自己手动启动。2、开启Profile2.1、查看开启状态Profile 功能由MySQL会话变量 profiling 控制,默认是关闭的(OFF)。首先查看是否开启了Profile功能

2020-08-16 22:29:21 164

原创 MySQL性能分析与优化 - 慢查询日志

1、设置慢查询日志1.1、配置参数说明在MySQL配置文件(my.cnf)中,慢查询日志包含四个重要参数:slow_query_log:是否开启慢查询日志,默认OFF,开启则设置为 ON。slow_query_log_file:慢查询日志文件存储位置。log_queries_not_using_indexes:是否把没有使用到索引的SQL记录到日志中,默认OFF,开启则设置为ON。long_query_time:超过多少秒的查询才会记录到日志中。1.2、配置参数设置全局设置方式

2020-08-16 20:49:16 226

原创 MySQL锁原理分析 - 死锁案例分析

本文通过案例分析【两个Session的两条SQL产生死锁情况】与【两个Session的一条SQL产生死锁情况】来展示死锁的形成过程,并综合两个案例对形成过程作出总结,通过提供解决与避免死锁的方式方法。

2020-08-15 02:02:17 204 1

原创 MySQL行锁 - 行锁原理实例分析

1、简单SQL的加锁分析1.1、数据准备1.2、RC隔离级别下DML条件1.2.1、主键1.2.2、非主键唯一索引1.2.3、非唯一索引1.2.4、无索引1.3、RR隔离级别下DML条件1.3.1、主键1.3.2、非主键唯一索引1.3.3、非唯一索引1.3.4、无索引

2020-08-13 00:09:02 763

原创 MySQL事务 - MVCC

1、当前读和快照读快照读:读取的是记录的可见版本 (有可能是历史版本),不用加锁。简单纯粹的查询操作,属于快照读。 SELECT * FROM student WHERE id=1;当前读:读取的是记录的最新版本,并且当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。特殊的读操作、插入、更新、删除操作,属于当前读。SELECT * FROM student WHERE id=1 LOCK IN SHARE MODE; //共享锁(S)SELECT * FROM student

2020-08-06 00:44:39 277

原创 MySQL事务 - ReadView

在隔离级别中提到:对于使用READ UNCOMMITTED隔离级别的事务来说,直接读取记录的最新版本就好了。对于使用SERIALIZABLE隔离级别的事务来说,使用加锁的方式来访问记录。对于使用READ COMMITTED和REPEATABLE READ隔离级别的事务来说,就需要用到版本链。核心问题就是:需要判断一下版本链中的哪个版本是当前事务可见的。所以设计InnoDB的设计者提出了一个ReadView的概念,这个ReadView中主要包含当前系统中还有哪些活跃的读写事务,把它们的事务id放到

2020-08-05 00:35:11 1560 3

原创 MySQL版本链 - Undo Log

1、前序准备# 测试表CREATE TABLE student ( id int PRIMARY KEY, name VARCHAR(100)) Engine=InnoDB CHARSET=utf8;# 测试数据INSERT INTO student VALUES (1, '张三');2、Undo Log分类2.1、insert undo loginsert undo log是在insert操作中产生的undo log。因为insert操作的记录只对事务本身可见,对于其它事务,此

2020-08-03 00:50:12 1184 2

原创 MySQL事务 - 隔离性中的隔离级别

1、前提概念隔离性(isolation)事务的隔离性意味着并发的事务之间是相互隔离的。即一个事务的内部操作及正在操作的数据必须封锁起来,不被企图进行修改的其他事务看到。隔离性是DBMS针对并发事务间的冲突提供的安全保证,DBMS可以通过加锁的方式在并发执行的事务间提供不同级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。DBMS可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较

2020-08-02 22:28:41 312 3

原创 MySQL事务 - 事务的基本概念与重要特性

1、事务概述在MySQL中,事务是由存储引擎实现的,支持事务的存储引擎不多,比较典型的就是InnoDB存储引擎。2、事务的四大特性数据库事务具有ACID四大特性:原子性(atomicity)事务的原子性意味着事务中包含的程序作为数据库的逻辑工作单位,被视作一个“原子”。在这个“原子”内,对数据的改操作要么全部执行(事务提交),要么全部不执行(事务回滚)。如果把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行。对于数据库层面而言,事务的操纵序列要么完全应用到数据库,要么完全不影响数

2020-08-02 17:12:48 397

空空如也

空空如也

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

TA关注的人

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