- 博客(49)
- 收藏
- 关注
原创 Java IO
缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性。对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作序列化就是一种用来处理对象流的机制,将对象的内容进行流化。可以对流化后的对象进行读写操作,可以将流化后的对象传输于网络之间。序列化是为了解决在对象流读写操作时所引发的问题。
2023-08-17 22:24:54
245
原创 java基础面试
反序列化:从IO流中恢复对象 序列化机制允许将实现序列化的java对象转化为字节序列,这些字节序列可以保存到磁盘或者网络传输上,以达到以后恢复成原来的对象,序列化机制使得对象可以脱离程序的运行而独立存在。在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,除了对基本数据类型的成员变量进行拷贝,对引用类型的成员变量进行拷贝时,创建一个新的对象来保存引用类型的成员变量。(1)序列化该对象,然后反序列化回来,就能得到一个新的对象了。
2023-08-15 14:06:16
534
原创 浅析MySQL InnoDB的隔离级别
隔离性主要是指数据库系统提供一定的隔离机制,意思就是多个事务并发执行时,一个事务的执行不应影响其它事务的执行。
2023-08-09 21:45:16
363
原创 spring事务和数据库事务是怎么实现
Spring事务的传播机制是基于数据库连接来做的,一个数据库连接一个事务, 如果传播机制配置为需要新开一个事务,那么实际上就是先建立一个数据库连接, 在此新数据库连接上执行sql。Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。并且修改数据库连接的autocommit属性为false, 禁止此连接的自动提交, 这是实现Spring事务非常重要的一步。Spring事务的传播机制是Spring事务自己实现的,也是Spring事务中最复杂的。
2023-08-09 21:08:40
383
原创 java多线程及
在java中,多线程得主要实现方式有四种:继承Thread类,实现Runnable接口、实现callable接口通过FutureTask包装器来创建Thread线程,使用ExecutorService、Callable、Future实现有返回结果的多线程。的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。线程池的核心参数决定了池的类型,进而决定了池的特性。
2023-08-08 22:41:57
179
原创 Propagation事务传播方式
文章目录Propagation属性值REQUIRED与REQUIRED_NEW使用场景UnexpectedRollbackException场景分析解决方案spring Transaction 中一个很重要的属性:Propagation,只要用来配置当前需要执行的方法,与当前是否有transaction之间的关系Propagation属性值@see org.springframework.transaction.annotation.Propagation事务传播方式说明PROP
2021-08-12 09:09:27
283
原创 Transactional
文章目录@Transactional属性@Transactional用法解决方案@Transactional属性@Transactional用法@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用
2021-08-12 08:35:17
287
原创 IP 内网 外网
文章目录IP地址分类公网、内网二级目录三级目录IP地址分类IP地址(0.0.0.0——255.255.255.254)分类:A类:0.0.0.0—127.255.255.255 (其中私有:10.0.0.0—10.255.255.255,保留:0.0.0.0,127.0.0.0—127.255.255.255)B类:128.0.0.1—191.255.255.254(其中私有:172.16.0.0—172.31.255.255,保留:169.254.0.0-169.254.255.255,191
2021-08-11 16:27:18
235
原创 MySQL驱动表
文章目录驱动表定义mysql关联查询的概念驱动表与被驱动表总结三级目录驱动表定义当进行多表连接查询时, [驱动表] 的定义为:1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]2)未指定联接条件时,行数少的表为[驱动表](重要)忠告:如果你搞不清楚该让谁做驱动表、谁 join 谁,请让 MySQL 运行时自行判断既然“未指定联接条件时,行数少的表为[驱动表]”了,而且你也对自己写出的复杂的 Nested Loop Join 不太有把握(如下面的实例所示),就别指定谁 left/rig
2021-08-02 16:28:46
2976
原创 2021-07-29
这里写目录标题content-type知识点介绍content-type常见类型content-type知识点介绍http协议是建立在tcp/ip协议之上的应用层协议,主要包括三个部分,状态行,头部信息,消息主体。对应一个http请求就是:请求行,请求头,请求体。协议规定post提交的数据,必须包含在消息主体中entity-body中,但是协议并没有规定数据使用什么编码方式。开发者可以自己决定消息主体的格式。数据发送出去后,需要接收的服务端解析成功,一般服务端会根据content-type字段来获取
2021-07-29 17:32:53
65
原创 springboot Elasticsearch
springboot web项目调用elasticsearch API 进行索引、文档操作pom.xml新增文件 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.9</
2021-07-05 09:38:25
137
原创 MySQL学习笔记(一)- explain
explain的执行结果mysql> explain select * from subject where id = 1 \G****************************************************** id: 1 select_type: SIMPLE table: subject partitions: NULL type: constpossible_keys: PRIMARY
2021-06-10 11:18:03
312
原创 MySQL学习笔记(二)- explain之extra
extra主要有几种情况:Using where、Using index、Using index condition、Using filesort、Using temporary、Us
2021-06-10 09:55:49
3473
原创 MySQL查询性能优化(七)- 优化特定类型的查询
1、优化count()查询count()聚合函数,以及如何优化使用了该函数的查询,很可能是mysql中最容易被误解的前10个话题之一count() 是一个特殊的函数,有两种非常不同的作用。它可以统计某个列值的数量,也可以统计行数。统计列值 要求列值是非空的。(不统计null,即null值计数为0)count()的另一个用处是统计结果集的行数。当mysql确认括号的表达式值不可能为空时,实际上就是统计行数。最简单的就是当我们使用count(*)的时候,这种情况下统配符*并不会像我们猜想的那样扩展
2021-06-09 10:03:55
138
原创 Javaweb学习笔记之HttpServletResponse(二):content-type 响应头的作用
content-type 响应头包含两部分内容:一、设置服务器发送给浏览器的数据类型;1、response.setContentType("text/html"):浏览器会将当前页面按照 html 进行解析
2021-06-07 10:38:15
2544
原创 Javaweb学习笔记之HttpServletRequest(一):获取客户端发送给服务器的数据
package com.demo.b_request; import java.io.IOException;import java.util.Enumeration; import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;im.
2021-06-07 10:29:14
917
原创 三种常见的http content-type详解
三种常见的http content-type详解介绍 http协议是建立在tcp/ip协议之上的应用层协议,主要包括三个部分,状态行,头部信息,消息主体。对应一个http请求就是:请求行,请求头,请求体。 协议规定post提交的数据,必须包含在消息主体中entity-body中,但是协议并没有规定数据使用什么编码方式。开发者可以自己决定消息主体的格式。 数据发送出去后,需要接收的服务端解析成功,一般服务端会根据content-type字段来获取参数是怎...
2021-06-07 09:34:02
10052
1
原创 HTTP报文
HTTP请求报文解剖①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这..
2021-06-04 16:55:33
5247
1
原创 vue elementui 存储全局变量
利用浏览器缓存存储变量 localStorage.setItem('superStatus',_this.superStatus) _this.superStatus = localStorage.getItem('superStatus')
2021-05-20 10:42:54
907
原创 MySQL查询性能优化(五)- 查询优化器的局限性
1.1 优化count()查询1.2 优化关联查询1.3 优化子查询1.4 优化group by 和 distinct1.5 优化limit分页1.6 优化sql_calc_found_rows1.7 优化union查询
2021-04-27 11:02:04
315
原创 MySQL千万级数据分区存储及查询优化
MySQL千万级数据分区存储及查询优化作为传统的关系型数据库,MySQL因其体积小、速度快、总体拥有成本低受到中小企业的热捧,但是对于大数据量(百万级以上)的操作显得有些力不从心,这里我结合之前开发的一个web系统来介绍一下MySQL数据库在千万级数据量的情况下如何优化提升查询速度。一、基本业务需求该系统包括硬件系统和软件系统,由中科院计算所开发的无线传感器网络负责实时数据的监测和回传到MySQL数据库,我们开发的软件系统负责对数据进行实时计算,可视化展示及异常事件报警监测。宫殿的温湿度等数据都
2021-04-27 10:26:53
992
原创 MySQL查询性能优化(三)-重构查询的方式
一:重构查询的方式一个复杂查询还是多个简单查询切分查询分解关联查询二:查询执行的基础希望mysql能够以更高的性能运行查询时,最好的办法弄清楚mysql是如何优化和执行查询的。很多查询优化工作实际上就是遵守一些原则优化器能够按照预想合理的方式运行msyql查询执行过程...
2021-04-25 11:27:00
156
原创 常用正则表达式最强整理
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
2021-04-25 10:54:51
331
原创 MySQL查询性能优化(二)-慢查询基础
查询性能低下最基本的原因是访问的数据过多,某些查询可能不可避免地需要筛选大量数据,大部分性能低下的查询都可以通过访问的数据量的方式进行优化对于低效的查询,下面两个改善步骤分析总是有效的1.1 是否向服务器请求了不需要的数据有些查询会请求超过实际需要的数据,后这些多余的数据会被应用程序丢弃,这会给MySQL服务器带来额外的负担,增加网络开销,也会消耗应用服务器的CPU和内存资源1.2 MySQL是否在扫描额外的记录在确定查询只返回需要的数据以后,接下来应该看看查询.
2021-04-23 11:13:39
67
原创 spring 注解
@Configuration注解该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。@Value注解为了简化从properties里取配置,可以使用@Value, 可以properties文件中的配置值@Controller, @Service, @Repository,@Component通过这些注解的类并把这些类纳入进spring容器中管理持久层、业务层和控制层.
2021-04-20 08:59:47
106
原创 MySQL架构(三)- 磁盘存储数据页
1 数据页数据页是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB。InnoDB为了不同的目的设计了不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等。下面这些类型的页,我们都不会说,只讲用于存放数据的页,也就是数据页(也叫索引页)。1.1 数据页结构从图中可以看出,一个InnoDB数据页的存储空间大致被划分7个部分,有的部分占用字节数是确定的,有的部分占用的字节数是不确定的1.2 数...
2021-04-13 10:12:40
656
原创 MySQL架构(四)- 磁盘存储行格式
MySQL服务器上负责对表中的数据的读取和写入工作的部分是存储引擎,而服务器又支持不同类型的存储引擎,真实数据在不同存储引擎存放的格式一般也是不同的1、InnoDB行格式每行数据在磁盘上的存放方式被称为行格式或者记录格式,InnoDB有4中不同的行格式,Compact、Redundant、Dynamic和Compressed行格式1.1 compact行格式上图分析出,一条完整的记录其实被分为额外信息和真实数据两部分1.1.1 额外信息 存储引擎为了描述这行...
2021-04-12 11:06:05
248
原创 MySQL架构(二)- InnoDB的存储结构
InnoDB页的简介InnoDB是一个将表中的数据存储到磁盘上的存储引擎,即使关机后重启我们的数据还是存在;而真正处理数据的过程是发生在内存中,所以需要把磁盘中的数据加载到内存中;如果处理写入 或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差几个数量级,所以当我们想从表中获取几条记录,InnoDB存储 引擎需要一条一条的把记录从磁盘中读出来?不是,那样会慢死的,InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间的交互的基本单位,InnoDB
2021-04-09 23:38:58
735
原创 位 字节 字
位(bit)表示二进制位,位是计算机内部数据储存的最小单位,11010100是一个 8 位二进制数。一个二进制位只可以表示 0 和 1 两种状态;两个二进制位可以表示 00、01、10、11 四种状态;三位二进制数可表示八种状态……。 2.字节(byte)字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即 1 个字节等于 8 个比特(1Byte=8bit)。八位二进制数最小为 00000000,最大为 11111111;通常 1 个...
2021-04-08 23:15:06
283
原创 MySQL schema设计中应避免的陷阱
太多的列 MySQL 的存储引擎API 工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转换成行数据结构的操作代价是非常高的。MyISAM 的定长行结构实际上与服务器层的行结构正好匹配,所以不需要转换。然而,MyISAM 的变长行结构和InnoDB 的行结构则总是需要转换。转换的代价依赖于列的数量。当我们研究一个CPU 占用非常高的案例时,发现客户使用了非常宽的表(数千个字段),然而只有一小部分列会实际用到,这时转换的代价就非常高
2021-04-01 09:24:32
70
原创 MySQL数据类型-选择标志符(identifier)
为标识列fdenier clum选择合适的数据类型非常重要。般来说更有可能用标识列与其他值进行比较(例如, 在关联操作中),成者通过标识列寻找其他列,标识列也可能在另外的表中作为外键使用,所以为标识列选择数据类型时,应该选择限关联表中的对应列样的类型 (正如我们在本在早些时候所论述的样, 在相关的表中使用相同的数据类型是个好主意,因为这些列很可能在关联中使用)。当选择标识列的类型时,不仅仅需要考虑存储类型,还需要考虑MySOL对这种类型怎么执行计算和比较。例如,MySQL在内部使用整数存储ENUM和SE
2021-04-01 08:43:57
660
原创 MySQL数据类型--字符串类型
字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set。char类型和varchar类型两种最主要的字符串类型,怎么存储在磁盘和内存中,跟存储引擎的具体实现有关char类型长度是固定,在创建表时就指定了,其长度可以是0-255的任意值 MySQL会剔除所有的末尾空格 char值会根据需要采用空格进行填充,以方便比较 char适合存储很短的字符串,或者所有值都接近于同一个长度(MD5,因为这是定长的值) 对于经常变更的数据,cha
2021-03-31 16:56:55
2282
原创 MySQL数据类型-整数类型
MySQL提供了多种数据类型,包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型、二进制数据类型;不同的数据类型有各自的的类型,使用范围也各不相同,而且存储方式也不相同整数类型参考:各种整数类型的取值范围、存储的字节数上图分析如下:1,int类型和integer类型的字节数和取值范围是一样的,其实在MySQL中int类型和integer类型是一样的。 2,tinyint类型占用的字节最小,只需要一个字节。取值范围也是最小的。 3,bigint类型占用的字节最大,需要
2021-03-30 23:19:31
3755
原创 Schema与数据类型优化
4.1 选择优化的数据类型简单的原则:更小的通常更好简单就好尽量避免null在为列 选择数据类型时,第一步需要确定合适的大类型:数字、字符串、时间等,下一步,选择具体类型:很多MySQL的数据类型可以存储相同类型的数据,只是存储长度和范围不一样,允许的精度不同,或者需要的物理空间(磁盘或内存空间)不同;相同大类型的不同子类型数据有时也有一些特殊的行为和属性比如:TimeStamp 和DATETIME列都可以存储相同类型的数据:时间和日期,精确到秒,然而TimeStamp只使用
2021-03-29 10:44:07
64
原创 创建高性能的索引
5.1 索引基础索引的类型5.2 索引的有点5.3 高性能的索引策略独立的列 前缀索引和索引选择性 多列索引 选择合适的索引列顺序 聚簇索引 覆盖索引 使用索引扫描来做排序 压缩(前缀压缩)索引 冗余和重复索引 未使用的索引 索引和锁5.4 索引案例学习支持多种过滤条件 避免多个范围条件 优化排序5.5 维护索引和表找到并修复损坏的表 更新索引统计信息 减少索引和数据的碎片...
2021-03-28 00:13:31
49
转载 Java 8 学习笔记
1. Java 81.1 生态Lambda 表达式 函数式接口 方法引用 / 构造器引用 Stream API 接口中的默认方法 / 静态方法 新时间日期 API 其他新特性1.2 新特性速度更快 代码更少 强大的 Stream API 便于并行 最大化减少空指针异常 Optional (Kotlin ?)1.3 温故而知新Hashmap 底层结构/原理 老话题不再阐述 … 并发hashmap … Java虚拟机 … Java内存模型 …2. Lambda2.
2021-03-12 10:45:40
197
原创 定位及优化SQL语句的性能问题
一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len列,索引长度rows列,扫描行数。该值是个预估值extra列,详细说明。注意常见的不太友好的值有:Using filesort, Using temporary二、..
2021-03-12 09:21:43
244
原创 MySQL优化常见Extra分析——慢查询优化
数据准备:create table user ( id int primary key, name varchar(20), sex varchar(5), index(name))engine=innodb;数据说明:用户表:id主键索引,name普通索引(非唯一),sex无索引;四行记录:其中name普通索引存在重复记录lisi;一、【Using where】实验语句:explain select * from user where sex='no
2021-03-12 09:07:17
301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人