自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深拷贝和浅拷贝工具整理

前几天写代码的时候,需要拷贝对象,就使用了的拷贝对象,后面又修改了新对象的属性,就导致原对象也被修改了,仔细一研究才发现这个工具只是进行了浅拷贝。索性整理一下现在比较常用的一些深拷贝和浅拷贝工具。......

2022-06-30 17:18:36 820 1

原创 求质因子数

描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )数据范围: 1 <= n <= 2 x 10^9 + 14输入描述:输入一个整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc

2022-05-28 14:11:17 200

原创 各种进制的字符串转数字

本文以Integer为例。需要注意的点:正负数处理越界,Integer.MAX_VALUE为2147483647,Integer.MIN_VALUE为-2147483648。正数的容量比负数小1(因为正数包括0),所以计算的时候得使用负数计算,如果是正数再取反对每一位转换的时候考虑范围必须在进制之内package demo;public class Solution { public static void main(String[] args) { int inpu

2022-03-10 10:08:53 209

原创 Mysql学习6-架构

Mysql架构上来先看Mysql架构图(摘自《MySQL技术内幕 InnoDB存储引擎》)。Mysql主要包括以下组件:连接器 Connectors系统管理&控制工具连接池Sql接口Sql解释器Sql优化器缓存池存储引擎文件系统接下来介绍一下每个组件的简要功能,由于每个组件都可以展开讲很多,这篇文章只会对组件做一个简要的描述,有一个简单的概念。连接器 Connectors...

2022-03-05 14:19:18 92

原创 Mysql学习5-InnoDB插入缓存

我们都知道MySql有一个缓存池,但是insert buffer与缓存池不太一样,insert buffer也是物理页的一个组成部分(insert buffer属于缓存池的一部分)。聚集索引(primary key)一般是顺序的,插入的时候不需要随机读取,但是对于辅助索引(非聚集索引),其叶子节点的插入不是顺序的(因为非B+树的特性,导致非顺序的索引插入是离散的),需要离散地读取非聚集索引页,由于随机读取而导致了插入性能下降,如果每次插入都直接更新索引,对性能的影响更大。因此,InnoDB引入了Inser

2021-03-07 23:20:17 225

原创 Mysql学习4-InnoDB缓存

InnoDB是基于磁盘存储的,其中的存储记录按照页的方式进行管理,可将其视为基于磁盘的数据系统。由于磁盘读写速度与CPU计算速度之间的鸿沟,InnoDB对数据库的读写操作都要通过缓存来实现。在数据库进行读取操作时,先将从磁盘读取到的数据放到缓存池中,这个过程称为将页“FIX”到缓存池,下一次再读取相同的页时,会先读取缓存中的页,没有命中才读取磁盘。在写操作时,先修改缓存中的页,再以一定的频率刷到磁盘中。1. 缓存池Mysql通过innodb_buffer_pool_size设置InnoDB的缓存池大小:

2021-02-21 19:52:12 978

原创 Mysql学习3-binlog

Mysql数据库的日志可以分为服务层和存储引擎层日志。服务层日志主要包含二进制日志(binlog)、慢查询日志和通用日志;存储引擎层日志(以InnoDB为例)包含重做日志(redolog)和回滚日志(undolog)。binlog中只存储执行成功的日志。binlog的三种格式设置binlog日志格式的参数:set binlog_format=[statement|row|mixed];查看binlog文件:show binary logs;刷新log文件:flush logs;查看b

2021-02-21 17:03:53 230

原创 Mysql学习2-服务器参数

查看Mysql服务器读取参数的顺序:mysqld --help --verbose | grep -A 1 'Default options'# 另外,通过启动参数设置的参数的优先级最高设置全局参数:set global name=value;set @@global.name=value;设置会话参数set [session] name=value;set @@session.name=value;查看参数show variables like 'Innodb_log_files

2021-02-16 18:44:07 129 1

原创 Mysql学习1-常用存储引擎的特征

MyISAM的特性表级锁对表中的数据进行修改时,要对表进行加锁;读取表中的数据时要对表加共享锁。读取和写入是互斥的,读取时只能在表末进行插入。不支持事物对MyISAM进行修复会导致数据丢失。存储文件tableName.frm 存储表结构信息tableName.MYD 存储数据信息tableName.MYI 存储索引信息修复表check table tableName;repaire table tableName;使用mysql工具:myisamchk支

2021-02-14 19:49:58 118

原创 Spring boot不可以在子线程里注入bean

今天发布的时候遇到了一个NPE,最开始还有点摸不着头脑。代码是这样的,实现了一个Callable接口,在里面注入了一个bean:public class MyCallable implements Callable { @Resource private MyService myService; @Override public Object call() { myService.doSomething() }}使用: threadPool.sub

2021-01-13 14:51:02 395 1

原创 如何优雅地加载配置文件

这篇博客是记一次故障的总结。故障的原因是发布完了修改配置文件的时候,配置属性转换类型失败,导致线上商品全部不展示。故障部分关键代码:if (StringUtils.isNumeric(value)) { confMap.put(key, Integer.valueOf(value))}配置的时候value没有配,传入了一个空串"",然后StringUtils.isNumeric没有进行数字校验,导致Integer.valueOf(value)的时候报错。public static bo

2020-11-10 11:01:58 177

原创 spring mvc请求参数中带有json,导致参数异常(RFC 7230 and RFC 3986)

使用get请求时,参数会直接带到url后面,导致java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986原因是url中包含了RFC 7230 和 RFC 3986标准中的保留字段,而且没有转义.有关RFC 7230 和 RFC 3986标准,欢迎大家补充,太费时间,我就不去搞了,我就

2020-10-26 11:47:22 231 1

原创 java 日期相关

粒度精确到天有时候我们的日期只需要精确到天,比如数据库的索引中使用到了日期,更新的时候很难于原来的日期匹配上,尤其是联合索引中的时候(要不然就需要在sql中使用DATE_FORMAT(t1.data_time, '%Y-%m-%d')进行转化)。这时候我们需要数据库里的日期粒度为天import java.time.LocalDate;import java.util.Calendar;import java.util.Date;Date date = Date.valueOf(LocalDa.

2020-09-14 16:22:32 90

原创 Jackson序列化日期相关问题

1. 接收请求参数的时候当接收前端传会的日期的时候,不需要接收字符串然后再手动转为json(当然日期的合法性需要自己再检查一遍),可以使用DateFormat按指定的格式反序列化为Date:@DateTimeFormat(pattern = "yyyy-MM-dd")Date dataTime;2. 序列化日期序列化日期的时候,可以在application.yml里进行配置,尤其是时区一定不要忘记配置,否则序列化的日期可能会跟实际的日期不一样。jackson默认的时区是 GMTspring:

2020-09-09 11:14:21 608

原创 Spring boot事务失效的几种情况

这几天在写项目的时候遇到了Spring boot中事务失效的情况,这里做一下记录,后面遇到了其他情况再继续更新。1. 内部调用使用一个没有事务的方法调用一个有事务的方法,失败后不会进行回滚:@Transactionalpublic int update(Admin admin) { int update = mapper.update(admin); return update;}@Overridepublic int invokeUpdate(Admin admin) {

2020-08-21 20:59:26 5549

原创 认识maven项目--以Spring boot项目为例

首先当然是新建一个项目了,为了避免idea会产生一下多余的文件,我从网上新建项目。今天不知道https://start.spring.io是什么情况上不去,所以我用https://start-scs.cfapps.io新建了一个demo项目,一切按照默认设置先看一下这个项目里面有些什么文件:├─.mvn│ └─wrapper│ ├─maven-wrapper.properties│ └─maven-wrapper.jar├─src│ ├─test│ │ └─jav

2020-07-26 23:34:59 243 1

原创 Git操作速查

Git仓库的结构Git 仓库分为三个部分:工作区:也就是我们对项目进行直接操作的区域。暂存区:可以理解成一个缓存区,add后的文件都存在这里,等待push。保存在.git/index中,因此也叫index区。版本库:远程仓库,push以后的代码都放在这里。工作区和暂存区都存在本地,只有自己可以访问和查看;版本库存在远程服务器上,是一个公共的仓库,大家都可以在上面进行clone、push和pull等操作。另外还要介绍一个概念:HEAD是一个指向我们当前所处的分支的指针,而且是指向当前分支的最先

2020-07-25 11:53:03 127

原创 Java实现四则运算表达式求值(逆波兰法)

笔试或面试中经常遇到的一个题:给定一个字符串的表达式,计算出其结果我们通常使用的是中缀表达式,如:9+(3-1)*3+10/2。为了计算,我们需要转换为后缀表达式:9 3 1 - 3 * + 10 2 / +。因此我们将表达式求值分为两步:中缀表达式转为后缀表达式,后缀表达式求值。中缀表达式转为后缀表达式规则:遍历中缀表达式中的数字和符号,如果是数字就直接输出;如果是符号,就与栈顶符号...

2020-05-01 01:18:42 695

原创 ArrayList删除元素以后会缩小容量吗?

我们都知道ArrayList的初始容量为10,当装满以后扩容为原来的1.5倍: private int newCapacity(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; // elementData就是存储元素的数组 in...

2020-04-30 18:16:27 3745 2

原创 学习笔记(01):Java并发编程精讲-ThreadLocal的实现原理

课程会讲解Java中并发相关技术的基础、原理和应用,从线程安全、线程(池),锁实现和并发容器等高并发Java实现,去深入理解在并发编程中,一些最容易被忽视的点,这些点也是我在多年编程经验中实际用到,对于每个小节小课均会有实际的场景应用为你呈现。同时这些也是面试过程中面试官考察的重点,掌握这些点,面试和工作时,做到心中有货,不慌不乱,能够胜任。...

2020-02-14 23:57:34 126

原创 Jquery通过ajax获取Http Response Header里的字段

$.ajax({ type: 'HEAD', url: window.location.href, complete: function (xhr) { = xhr.getResponseHeader("uuid"); }

2019-11-20 16:21:51 3816 1

原创 Spring boot 2 + freemarker模板渲染

今天写网站的时候用到了模板渲染,刚开始的时候搜了Spring MVC + ModelAndView的很多博客,很乱而且不完整,走了很多弯路。现在整理一下Spring boot + freemarker渲染模板的完整项目。引入依赖:<dependency> <groupId>org.springframework.boot</groupId> ...

2019-11-12 15:52:58 178

原创 TopN问题

思路: 使用堆排序  对于最大的topN,采用小顶堆,先将数组里面的前N个树构建小顶堆,后来的数num如果大于根节点,则将根节点取出,将num压入,一遍以后堆里面的数据就是最大的TopN。时间复杂度为O (nlogn)。  最小的TopN则与刚才的相反Tip: Java可以使用PriorityQueue实现大顶堆和小顶堆// 大顶堆PriorityQueue<Integer>...

2019-09-28 11:16:42 265

原创 Mysql创建索引的原则,索引失效的情况,sql调优

Mysql创建索引的原则

2019-09-25 21:07:31 272

原创 二叉树的遍历与重构

先序遍历: 1,2,7,4,5,3,6,8中序遍历:7,2,5,4,1,6,3,8后序遍历:7,5,4,2,6,8,3,1根据先序遍历和中序遍历重构二叉树先序遍历的第一个节点为根节点1在中序遍历中找到根节点1,其左侧的就是这个节点的左子树的中序遍历7,2,5,4,右侧的就是右子树的终须遍历6,3,8在先序遍历中找到左右子树的先序遍历2,7,4,5,3,6,8递归左右子树重构二叉树(...

2019-09-24 17:23:22 229

原创 java 文件及文件夹操作

获得指定目录下特地后缀的文件import java.io.File;import java.io.FileFilter;public class suffixFiles { public static void main(String[] args) { new suffixFiles(); } public suffixFiles() { File file = new...

2019-04-17 20:37:49 157

空空如也

空空如也

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

TA关注的人

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