自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring 定时任务 taskScheduler

spring 定时任务 taskScheduler详解 - 孙行者、 - 博客园

2022-02-09 17:41:22 255

原创 Mapstruct 遇坑 ---更改类里字段并不会重新生成实现类

mapstruct 是目前最为常用的对象属性转换利器,因为我们日常在CURD时,会写很多关于PO转VO、VO转DTO或Req相关的代码。具体如何使用,网上教程太多了。对象属性转换利器 mapStruct - 简书这里主要记录下遇到的坑,这个坑就是当我们去增加、删除、修改entity(或者称dto)的字段时,它并不会生成新的实现类,导致在启动项目或者代码运行过程中出错。解决方案:将生成的实现类删除,然后执行maven clean,再编译maven compile ,这样才能重新生成实现类。.

2022-01-20 21:20:44 3646 1

原创 MyBatisPlus 乐观锁注解@Version注解

MyBatisPlus 乐观锁注解@Version注解Version描述:乐观锁注解、标记 @Verison 在字段上MybatisPlus有一个乐观锁注解,在使用的时候遇到一些问题。乐观锁的字段在基类中,模型如下:@Datapublic class TblBase { @TableId(type = IdType.ASSIGN_ID) private Long id; private Date createTime; @Version priva

2022-01-16 11:40:58 2861

转载 深度剖析:Redis分布式锁到底安全吗?

深度剖析:Redis分布式锁到底安全吗?看完这篇文章彻底懂了!

2021-12-20 13:51:21 114

转载 java中Date日期类型的大小比较

https://blog.csdn.net/zhangyang_2015/article/details/88864480

2021-11-28 15:49:15 2567

原创 常用的 Linux 命令知识积累

常用的 Linux 命令知识积累查看系统/CPU信息# 查看系统内核信息uname -a# 查看系统内核版本cat /proc/version# 查看当前用户环境变量envcat /proc/cpuinfo# 查看有几个逻辑cpu, 包括cpu型号cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c# 查看有几颗cpu,每颗分别是几核cat /proc/cpuinfo | grep physical | uniq -c

2021-11-08 00:27:14 101

原创 《高性能MySQL》第六章读书笔记

本章围绕着查询性能优化这个话题展开,优化查询的目的:减少和消除查询操作所花费的时间。既然要去优化,首先必须去对整个查询的生命周期有个最基本的了解:结合下图简要来说就是**从客户端到服务器,然后再服务器上进行解析,生成执行计划,执行,并返回结果给客户端。**其中执行计划这个环节可以说是查询整个生命周期里最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序、分组等等。6.1查询执行的基础(明白查询操作到底做了什么)上图就是查询的整个过程,简单总结为以下几条:1.客户端

2021-10-24 22:58:56 216

原创 整理Mysql 琐碎知识点(持续更新)

一.Mysql join联表操作中on和where的区别1.结论1.on的优先级是高于where。on条件是在生成临时表时候执行,where是在临时表生成后对数据进行筛选的。2.当inner join联结两个表时,筛选条件放在on和where后面,结果是一样的。3.当left join 联结两个表时,就有区别了:筛选条件跟在on后面,无论on条件是否成立,都会返回左表(主表)的值;筛选条件在where后面,只有满足条件的记录才会返回。2.测试表1 table1idNo1n

2021-10-08 10:02:18 137

原创 高性能MySQL第五章 学习笔记

索引优化是数据库查询性能优化最有效的手段,索引能够轻易地将查询性能提高几个数量级。这本书的第五章就在讨论如何建立一个“最优”索引。一、索引类型在MySql中,索引是在存储引擎层而不是服务器层实现的。B-Tree索引[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VodbXBPN-1632586056831)(E:\study\个人学习笔记\高性能MySQL\6.png)]B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据。根节点的

2021-09-26 00:12:37 288 2

原创 高性能MySQL第四章

第四章 Schema与数据类型优化4.1 选择优化的数据类型1.应该尽量使用可以正确存储存储数据的最小数据类型。如能使用tinyint就不要使用int,能使用varchar(20),就不要使用varchar(100)。2.应该尽量使用尽可能简单的数据类型,如日期类型尽量使用date、time、datetime,而不是使用varchar存储日期数据,另外应该使用整形存储IP地址,而不是使用varchar。3.应该尽量避免null,可以保证不出错的情况下尽量把列指定为not null。一方面在于在查询时

2021-09-21 22:36:44 172

原创 高性能MySQL第三章

一、性能优化简介首先将性能定义为完成某件任务所需要的的时间度量,即响应时间。性能优化就是在一定的工作负载下尽可能降低响应时间。要想优化,就必须确定响应时间花在什么地方,就需要测量环节。优化有两个方面:1.执行时间,去除子任务,降低子任务频率,提升子任务效率等 2.等待时间,比如锁竞争等。1.通过性能剖析进行优化性能剖析两个方面:1.基于执行时间的分析 :什么任务执行时间最长2.基于等待的分析:任务在什么地方被阻塞时间最长具体操作:1.使用explain 语句可看是否走了索引(是否使用了索

2021-09-21 21:51:20 106

原创 Java字符串 正则表达式总结

在日常Java后端开发过程中,免不了对数据字段的解析,自然就少不了对字符串的操作,这其中就包含了正则表达式这一块的内容,这里面涉及Java包中Pattern类和Macher类,本篇博客就针对这一块内容和常见的用法进行总结,本博客主要的参考资料是《Java编程思想》第4版。以一个问题引出本博客的内容。问题是:检查一个字符串是否以大写字母开头,以句号结尾。String len="^[A-Z].*[\\.]$";System.out.println("Taaa.".matches(len));//true

2021-09-05 23:56:44 1095 2

原创 玩转Java8 Stream流

Java8中Stream流总结因为在工作后,发现项目代码里经常会出现Stream流以及和lambda表达式联合使用。但之前对于这块的学习有点一知半解,所以花了几天空闲时间将这些知识总结一下。一、概述**(参考百度)**Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Str

2021-08-29 13:56:30 8421 1

原创 高性能MySQL第二章学习笔记

一、基准测试的策略基准测试有两种主要的策略,一是针对整个系统的整体测试,另外是单独测试MySQL。这两种策略也被称为集成式和单组件式基础测试。测试指标1.吞吐量:吞吐量是指单位时间内的事务处理数。这类基准测试主要针对在线事务处理的(OLTP)吞吐量,常用的测试单位每秒事务数(TPS)或每分钟事务数(TPM),常见的标准有TPC-C。2.响应时间或延迟:这个指标用于测试任务所需的整体时间。,通常可使用百分比相应时间来替代最大响应时间,比如PCT95,PCT99等。3.并发性:并发性基准测试需要关注的

2021-08-19 23:52:56 94

原创 高性能MySQL第一章学习笔记

一.MySQL架构层级作用备注连接层连接处理、授权认证服务器工具都有类似的架构服务层查询解析、分析、优化以及缓存MySql核心服务和功能引擎层存储引擎主要负责Mysql中数据的存储和提取这一层不会解析SQL,不同引擎不在此层级上相互通信,只响应上层服务器的请求二.并发控制(锁)1.读写锁读锁是共享锁,相互之间并不阻塞。多个用户可以在同一时间读取同一个资源,并且他们相互之间并没有干扰。写锁是排他锁,相互之间是会阻塞的。一个写锁会阻塞其他的写锁和读锁

2021-08-19 23:40:31 138

原创 用两个线程交替打印数字和字母

今天字节一面面试官让我用两个线程交替打印数字和字母,一个线程打印1到52的数字,一次打印两个;另一个线程打印a到z的字母,一次打印一个。可以使用synchronized关键字和wait和notify方法去解决这个问题:public class P2 { static final Object object = new Object(); public static void main(String[] args) throws Exception{ new Thr

2020-09-01 15:49:51 687

原创 8.13哔哩哔哩笔试java开发

30个选择,3道编程题。1.24点给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利。leetcode上困难题import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class Solution { public boolean judgePoint24(int[] nums) { List<Dou

2020-08-14 14:14:46 495

原创 Maven工程搭建,以及基于spring的xml和注解配置

1.首先需要有maven包:2.本地仓库(有常用的jar包)3.设置好home、setting和本地仓库地址4.出现了运行时报错:Error : java 不支持发行版本5解决方案:这两个设置对应的JAVA编译器选择本地对应版本5.在setting中设置JAVA版本简单地写一个关于spring xml配置的小案例:1.写完之后的目录:2.在pom文件中配置相关jar包<?xml version="1.0" encoding="UTF-.

2020-06-24 10:08:24 481

原创 数据库sql基本语句刷题

1.很基础的一道多表查询题,因为题目要求:无论person是否有地址信息,都需要基于上述两表提供person,那很明显就是保留表1全部+加上表12公共部分,所有使用left join ...on...的结构select a.FirstName, a.LastName, b.City, b.State from Person as a left join Address as b on a.PersonId = b.PersonId;2.排序肯定是使用order by 关键字,默认

2020-06-08 19:44:00 295

原创 联系人案例添加三个复杂功能

一、删除选中的条目,全选和全不选功能 。实现逻辑图如下:1.首先要在list.jsp上修改,list界面如下:<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><!-- 网页使用的语言 -->&l.

2020-05-27 22:51:42 347

原创 案例练习:联系人CURD 连接数据库

技术选型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat1.导入必须用到的jar包2.先实现查询所有条目的功能(查询功能),真个代码逻辑思路如下图:3层结构,第一层是servlet(对客户端请求作出响应),第二层是service层(调用和组合dao层的一些基本操作),第三层是dao层(封装一些数据库基本操作)。3.因为联系人存在各种属性,编写一个User类package domain;public ..

2020-05-20 11:05:03 368

原创 简单案例:文件下载和验证码程序

文件下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载1.新建一个JAVA EE项目,配置tomcat相关设置。新建一个download.html,就是客户端访问的界面<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></...

2020-05-10 18:09:55 450 1

原创 Servlet、request、response服务器登录案例

写一下整个案例的过程,记录一下。目标:想完成如下的登录界面,不是前端网页设计,而是与数据库相连,当你输入正确的用户名和密码,可以成功登录到一个界面,而错误的则是另一个界面,并提示错误。整个实现思路如下图:3个大块1.最左边则是一个html简单的网页实现(很简陋)。2.中间则是当用户输入用户名和密码后,通过LoginServlet去获取这些信息,封装成一个对象,再传递给UserD...

2020-05-06 22:25:04 365

原创 剑指offer刷题记录(八)

1.其实就是在归并排序中,添加几行代码。首先归并排序的原理,其次是加的这几行代码的意义。class Solution { public int reversePairs(int[] nums) { if(nums == null || nums.length <= 2) return 0; return Mergesort(nums,0,...

2020-05-05 18:48:48 123

原创 Tomcat与idea集成 部署web项目 简单记录一下

一、Tomact部署项目的方式:1.直接将项目放到webapps目录下即可。* /hello:项目的访问路径-->虚拟目录* 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。* war包会自动解压缩2.配置conf/server.xml文件,并在<Ho...

2020-05-03 09:02:09 191

原创 剑指offer刷题记录(七)

1.我想到动态规划去了,但有点问题。看到大佬的递归解法很好,值得学习。class Solution { public int countDigitOne(int n) { return f(n); } private int f(int n ) { if(n <= 0) return 0; String...

2020-04-29 21:38:20 240

原创 MySQL 5.5安装配置过程记录

5.5官方下载地址下载:https://downloads.mysql.com/archives/community/下载之后,开始安装:这一步选择custom(自定义)2.选择安装的路径,不能带中文.3.进入配置窗口,选择第一个细节配置4.选择这台电脑的用处,是否是作为一台服务器电脑使用,这里选择第一个5.这里也选择第一个6.这里选择并发的人...

2020-04-24 11:54:20 111

原创 剑指offer刷题记录(六)

1.解法一:创建一个栈来模拟整个栈的压入和弹出,看看弹出的元素是否和弹出数组中的元素一一对应相等。代码如下:class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack = new Stack<...

2020-04-20 13:07:12 141

原创 剑指offer刷题记录(五)

1.这道题确实有难度,因为它的限制条件非常多了,所以难度大大提升了。我想到了递归,但这里不让用if语句来判断何时跳出递归。这里贴出一个大佬的解法,使用了一个&&短路的特性,就是比如(关系式a)&&(关系式b),如果a为真,就会去验证b;但是如果a为假,就不会去执行b了。所以就可以把递归主体放进b中,将递归跳出的条件放入a中。class Soluti...

2020-04-14 12:18:24 155

原创 JAVA编程思想 第18章IO

IO流总结:下面的博客已经讲得非常清楚了,自己的总结可能后面再写写。https://www.cnblogs.com/furaywww/p/8849850.htmlhttps://www.fangzhipeng.com/javainterview/2019/03/04/javaio.htmlNIOhttps://www.fangzhipeng.com/javainterview/...

2020-03-29 19:48:03 162

原创 剑指offer刷题记录(四)

1.我的解法很简答:1msclass Solution { public int search(int[] nums, int target) { if(nums.length == 0) return 0; if(target >nums[nums.length-1] || target<nums[0]) return 0; ...

2020-03-26 14:17:28 133

原创 《JAVA编程思想》第九、十、十一(泛型)、十五章节总结

第九章1.抽象类和接口的区别?说这个问题之前,必须得说明抽象类和抽象方法。首先抽象方法是必须在抽象类中,不能在普通方法中。但是,抽象类可以包含一个或多个抽象方法,也可以没有抽象方法。抽象方法中也可以存在不是抽象的方法。...

2020-03-19 18:46:27 170

原创 剑指offer刷题记录(三)

1.思路一:双栈的思路,就是一个valuestack,来存放值得,不管最小值。另一个是minstack,来存放最小值的20msclass MinStack { Deque<Integer> A, B; public MinStack() { A = new LinkedList<Integer>(); B =...

2020-03-14 22:26:03 98

原创 《JAVA编程思想》第十一章(容器)、十六章、十七章总结

一.十六章1.数组和集合的区别储存元素的区别:数组可以存放基本数据类型,也可以存放引用数据类型,基本数据类型存放的是数值,而引用数据类型存放的是地址值。集合只能存放引用数据类型(对象),基本数据类型会被JAVA的自动装箱机制,变成对象。储存长度:数组在创建时,就必须规定好长度,后不能改变。而集合可以随时改变它的长度。对元素的访问:数组使用的是[],而集合则是添加add,获取get等...

2020-03-13 21:11:57 109

原创 剑指offer刷题记录(二)

1.我的解法:将树中节点以递归的方式放入ArrayList这个容器中,然后调用Collection.sort()方法将其排序,然后输出第k大的节点。这种方法相当于没有利用好二叉查找树的特点,导致速度较慢。6ms/** * Definition for a binary tree node. * public class TreeNode { * int val;...

2020-03-06 21:05:55 102

原创 剑指offer刷题记录(一)

我的解法如下:class Solution { public String reverseLeftWords(String s, int n) { Solution solution = new Solution(); char value; char [] stringArr = s.toCharArray();//首先将Str...

2020-02-23 18:22:58 154

原创 《JAVA编程思想》第五、六、七、八章总结

第五章1.构造器是什么?构造函数(构造器)是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,没有返回值,但不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,可重载多个不同的构造函数。在JAVA语言中,构造函数与C++语言中的构...

2020-02-07 20:26:15 494 1

原创 《JAVA编程思想》前四章总结

这本书前四章非常的基础,所以就用一篇文章大略总结一下前四章一些重要知识点1.JAVA的8种基本数据类型2.static关键字的用法static关键字,可以修饰变量、方法和静态代码块。static关键字的基本作用,简而言之,就是方便在没有创建对象的情况下来进行调用(方法/变量)。static修饰变量(静态变量):静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类...

2020-01-30 16:21:26 309

原创 排序

一、冒泡排序和插入排序(简单的排序)冒泡排序原理:依次比较相邻的两个数,将更大的数移到右侧,这样进行一轮,被移到最右边的数肯定是这组数字里最大的。再进行一轮,倒数第二位置放的一定是第二大的数字...以此类推。时间复杂度分析:顺序 T=O(n) 逆序 JAVA语言: public static void bubbleSort(int[] arr){ //一定要记住...

2020-01-29 17:14:48 250

原创 堆(优先队列)

一、堆什么是堆?用完全二叉树表示的优先队列优先队列:取出元素的顺序依据优先级的大小 处理的问题思想类似于CPU处理任务时的优先级堆的特性:1.结构性 2.有序性如果最小键值元素拥有最高的优先级,那么这种优先队列叫作升序优先队列(即总是先删除最小的元素),类似的,如果最大键值元素拥有最高的优先级,那么这种优先队列叫作降序优先队列(即总是先删除最大的元素)。一般默认的优先队列为...

2020-01-17 17:34:02 283 1

空空如也

空空如也

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

TA关注的人

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