自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

转载 我给你说select from table where 1=1让您茅塞顿开

本本章作为学习记录自用where 1=1 详解

2022-04-21 09:35:41 204

原创 springboot结合quartz框架完成定时任务开发(注解+xml)

文章目录Quartz简介核心组件创作初衷配置类注解开发导入坐标第一个定时任务XML配置文件开发boot主类job类重头戏:applicationContext-quartz.xml配置文件编写Quartz简介Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。核心组件

2022-04-20 09:40:41 2022

原创 gradle踩坑——Gradle不是内部或外部命令的报错提示(环境变量没问题的情况)

今天mentor说公司gradle用的多,maven只是很少的一部分,所以我自己配置一下gradle的生产环境,于是就出现了标题中的错误我检查了好几遍环境变量并没有问题,,,于是想起来在之前还没有安装gradle的时候用svn拉了公司的项目,idea自动帮我配置了很多,于是我就怀疑是不是idea自动下载了一堆东西的问题。打开idea默认下载gradle文件的地方——C:\Users\Administrator\.gradle把里面的文件全部删除了然后再重启了电脑一次最后去cmd中——为了

2022-04-12 20:16:47 1908 1

原创 springboot踩坑日记——@RestController与@Controller

今天想起一个简单的web项目,进行页面跳转的时候总是报404This application has no explicit mapping for /error, so you are seeing this as a fallback.在网上搜了一下,有说版本问题的,也有说包路径问题的,都没有解决看知乎发现是两个注解的问题@RequestMapping("/demo")@Controllerpublic class DemoController { @GetMapping("/t

2022-04-09 16:34:03 893

原创 CAS算法、自旋锁、悲观锁、乐观锁

文章目录AtomicInteger原理乐观锁和悲观锁AtomicInteger原理自旋锁+CAS算法CAS算法:有3个操作数(内存值V,旧的预期值A,要修改的值B)当旧的预期值A==内存值此时修改成功,将V改为B当旧的预期值A!=内存值此时修改失败,不做任何操作。并重新获取现在的最新值(这个重新获取的动作就是自旋)cas算法的实质就是在修改共享数据的时候,把原来的旧值记录下来了。如果现在内存中的值跟原来的旧值一样,证明没有其他线程操作过内存值,则修改成功。如果现在内存中的值跟原来的旧值不

2022-03-18 16:53:50 499

原创 Java中volatile关键字详解

文章目录背景从JVM的角度理解问题所在volatile关键字的作用与用法使用synchronized同步代码块实现相同功能背景假如有两人往同一个账户存钱,当其中一个人从账户中取走一部分时,另一方在不查看账户的情况下是不知道账户的金额有变动的,会认为账户中的金额并未发生变化,于是就有了这个问题(共享数据的变化不透明)从JVM的角度理解问题所在在jvm中,堆内存是唯一的,而栈内存并不唯一,每个线程都有自己的线程栈当一个线程(A)要获取共享变量的值时,会访问堆内存,拿到共享变量的值,然后将这个值存储到

2022-03-18 11:29:39 625 1

原创 Java线程池的理解与实现

文章目录基本原理使用Executors创建线程池使用步骤代码实现创建指定线程数量使用ThreadPoolExecutor创建线程池参数详解代码实现:任务拒绝策略基本原理和j2ee的连接池技术很像,都属于池化技术。在手写多个线程的过程中,经常会new好几个thread对象,也就是为线程对象申请资源,然后在线程运行完相应的代码后再释放资源这一过程只有两三个还好,而当高并发的情形下,很有可能有几百上千个线程需要频繁的创建、销毁。这就导致了非常严重的系统资源浪费。于是线程池技术应运而生,有一个容器一开始就装

2022-03-16 21:36:42 956

原创 Java中的Lock锁

文章目录背景知识具体用法背景知识在synchronized实现线程锁中,锁默认是开启的,当线程进入同步代码块/方法之后,锁自动关闭,当线程执行完同步代码块/方法后,锁又自己打开。这种方法使用简单,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象LockLock的实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作Lock中提供了获得锁和释放锁的方法(手动完成,非自动)void lock():获得锁vo

2022-03-14 06:00:00 1044

原创 synchronized关键字的两种用法

文章目录用法一: 加到代码块上注意好处和弊端用法二:加到具体的方法上使用格式以及和加在代码块上用法的区别如何保证锁对象是相同的this同步静态方法的锁对象用法一: 加到代码块上注意在这种用法中,synchronized的括号里可以填入任意对象(作为锁对象),哪怕是一个最简单的object对象,但是当有多个需要访问同一代码块的线程时,这些线程的锁对象必须是一样的默认情况是打开的,只要有一个线程进去执行代码了,锁就会关闭当线程执行完出来了,锁才会自动打开好处和弊端好处:解决了多线程的数据安全问题

2022-03-13 19:22:17 497

原创 Java实现多线程的三种方法

继承Thread类的方式进行实现实现步骤定义一个类MyThread继承Thread类在MyThread类中重写run0方法public class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("thread is opened..." + i); }

2022-03-13 13:49:42 1879

原创 springboot的profile功能

文章目录什么是profile功能profile的配置多profile文件方式yml多文档方式profile激活方式配置文件虚拟机参数命令行参数什么是profile功能我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是来进行动态配置切换的。profile的配置多profile文件方式我们模拟生产环境中,配置三个properties文件,分别

2022-03-08 23:54:37 951

原创 Redis的企业级解决方案【缓存预热、雪崩、击穿、穿透】

文章目录缓存预热缓存雪崩概念:崩溃过程:问题排查:问题分析:解决方案:错峰策略调整缓存击穿概念崩溃过程问题排查问题分析解决方案:预防与监控缓存穿透(注意和击穿区分开)概念崩溃过程问题排查问题分析解决方案缓存预热场景:redis一经启动,很快宕机对应问题:请求数量较高、主从之间数据的吞吐量较大,数据同步操作频度较高(相当于用户需要大量访问数据库的时候,数据库中没有数据)解决方案:思路主要是将数据提前加入到数据库中(预热的意思),把访问量高的数据先加,编写脚本来加缓存雪崩概念:数据库服务器崩溃(

2022-03-06 11:40:15 826

转载 Java并发编程:volatile关键字解析

https://www.cnblogs.com/dolphin0520/p/3920373.html

2022-03-05 16:35:34 112

原创 Redis持久化技术

文章目录Redis持久化的两个方向什么是持久化方向1、保存数据(快照)——RDB方向2、记录过程(日志)——AOFRDBRedis持久化的两个方向什么是持久化利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化持久化。用于防止数据的意外丢失,确保数据安全性对于Redis,就是将内存中的数据,保存到硬盘(外存)的过程方向1、保存数据(快照)——RDB将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据。其实就是原封不动的保存某一时刻的数据。

2022-03-05 15:29:44 447

原创 一文理解redis的数据存储类型

文章目录Redis数据类型(5种常用)string类型基本操作扩展操作(主要是对数字)注意事项key命名约定hash类型hash类型的存储特点基本操作扩展操作(主要是对数字)注意事项list类型存储特点基本操作扩展操作注意事项set类型存储特点基本操作扩展操作(主要是集合间的基本运算)应用场景Redis数据类型(5种常用)redis本身是k-v形式存储数据的,而下文所指的数据类型都是对value进行修饰的。key永远是字符串常用的五种value的数据类型stringhashlistset

2022-03-03 15:42:32 2257

原创 Redis简介

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-03-02 16:17:01 602

原创 使用left join时,and和where的区别

1,and条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。若和右边的表关联不上,右边对应的字段显示null2,where条件是临时表生成以后,再对临时表进行过滤的条件。临时表生成以后,也就没有left join的意义了,where后条件不为真的全都过滤掉...

2022-02-25 00:10:36 436

原创 数据库的各种join

左联结和右联结这样描述更加通俗易懂:左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值。内部联结和外部联结inner join(等值连接) 只返回两个表中联结字段相等的行。inner join并不以谁为基础,它只显示符合条件的记录。inner join返回两个表基于连接条件实际匹配的行,即两个表交集。outer join返回两个表的并集结果,即匹配条件不满足的两个表的记录也将返回。关键字on和whereon是

2022-02-24 23:24:51 459

原创 力扣206. 【反转链表】的三种实现方式:头插法,迭代法,递归法(附带Java实现和讲解视频链接)

文章目录题目描述头插法实现迭代与递归的预备知识迭代的实现递归的实现参考资料题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。头插法实现对链表有了解的小伙伴应该对头插法建立单链表的方法有所了解,头插法的特征是,建立好的单链表的顺序和我们输入节点的顺序是相反的,按这个特种,我们就可以借助头插法对链表进行逆置public ListNode reverseList(ListNode head) { ListNode ans = null; //遍历

2022-02-24 16:06:38 655

原创 力扣No.121——初识动态规划思想(Java实现)

文章目录动态规划策略的定义一、问题描述二、暴力法(将会超出时间限制)二、动态规划动态规划策略的定义动态规划和备忘录共同作用。动态规划和分治法的主要区别在于:对于后者,子问题是相互独立的,而在动态规划中,子问题可能是重叠的,通过使用备忘录(用于保存已解决子问题的答案)。对于大部分问题,动态规划是能够将问题的时间复杂度由指数级如O(n2)、O(n3)降低为多项式级别的一、问题描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天

2022-02-17 21:42:34 333

原创 spring mvc的工作流程和技术架构简述

2022-02-12 21:14:11 245

原创 HashSet与HashMap的区别

文章目录HashSet:HashMap:HashSet与HashMap的区别:先了解一下HashMap跟HashSetHashSet:HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现:public boolean add(Object obj)方

2022-02-10 17:16:32 168

转载 HashMap与HashTable的区别

文章目录1. HashMap不是线程安全的2. HashTable是线程安全的总结1. HashMap不是线程安全的HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2. HashTable是线程安全的HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),

2022-02-10 16:29:42 209

原创 AOP注解实现中,为什么@Pointcut要写在一个空方法上,而不能写在某个变量上?【懂点细节】

在AOP的xml配置实现中,我们经常使用以下语句:<!--原始共功能需要配置成spring控制的资源--> <bean id="userService" class="com.ych.service.impl.UserServiceImpl"/><!-- 抽取的功能也要配置--> <bean id="myAdvice" class="com.ych.aop.AOPAdvice"/><!-- AOP的配置-->

2022-02-10 10:43:01 1292 1

原创 spring aop切入点表达式的 * 和 ..的区别

*表示通配符::前提是必须有参数而…表示有无参数均可,有参数时可以是任意类型

2022-02-08 18:47:38 759 1

原创 spring aop八大核心概念的通俗简洁理解,一看就明白

帮你理清八大核心概念的关系,更好的理解AOP的核心思想

2022-02-06 19:48:30 2908

原创 Spring IoC底层核心原理浅尝

文章目录前言一、IoC核心接口1.BeanFactory2.HirarchicalBeanFactory3.AutowireCapableBeanFactory4.ListableBeanFactory二、bean加载过程解析三、bean初始化过程解析总结前言ioc的底层核心原理理解难度大,但面试能用得上,编码少,理解多,值得认真学习和记录一、IoC核心接口1.BeanFactory概述:提供bean的基本操作bean获取:按名称获取 & 按类型获取bean的提供者(provi.

2022-02-05 11:05:30 351

原创 bean的引用类型的注入

@Autowired类型:属性注解位置:属性定义上方作用:设置对应属性的对象说明:@Autowired默认按类型装配,指定@Qualifier后可以指定自动装配的bean的id相关属性:required:定义该属性是否允许为null//范例@Autowired(required = false)@Qualifier类型:方法注解位置:方法定义的上方作用:对方法进行引用类型传参@Autowired(required = false)@Qualifier("userDao")

2022-02-02 18:43:34 540

原创 Mybatis多表操作

文章目录前言一、一对一操作数据库环境Mapper.xml文件的编写功能实现遇到的问题二、一对多操作数据库环境Mapper.xml的编写功能实现小结三、多对一操作总结前言mybatis的多表操作是最接近实际业务需求的操作,因此开一篇文章记录一下一、一对一操作使用mysql数据库数据库环境CREATE DATABASE db2;USE db2;CREATE TABLE person( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20

2022-01-27 00:27:40 3252 1

原创 Spring框架学习记录——IoC

文章目录前言一、IoC是什么?二、IoC配置1.beanbean的重要属性——scopebean的重要属性—— init-method & destroy-methodbean的属性——factory-bean,factory-method(了解)总结前言Spring框架脱胎于工厂模式。在工厂模式的发展过程中,实际上是应用程序和资源之间不断解耦合的过程一、IoC是什么?通过数次的迭代,最终将应用程序和资源之间的耦合转换成了配置文件和资源之间的耦合,这样以来可以通过直接修改配置文件.

2022-01-15 23:43:56 331 1

原创 力扣No.283移动零

283、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。文章目录一、双循环暴力法二、官方答案——双指针。三、直接覆盖填充总结提示:以下是本篇文章正文内容,下面案例可供参考一、双循环暴力法借鉴了冒泡排序的思想,每次把一个零移动到最末尾,最坏需要移动n次,时间复杂度较高。只用一个指针,判定所指向的元素是否为0,如果是,则和右边的元素交换位置。public static void moveZeroes(int[] nums) { int

2022-01-15 15:16:45 120

原创 力扣 No.977 有序数组的平方 & No.189轮转数组

提示:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]文章目录前言一、双指针问题是什么?对撞指针快慢指针二、解题代码总结前言力扣双指针问题

2022-01-14 21:34:38 136

转载 静态方法和非静态方法

静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在,当你创建一个对象时,程序为其在堆中分配内存,一般是通过this指针来指向该对象。静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。因此在对象未存在时非静态方法也不存在,静态方法自然不能调用一个不存在的方法。非静态描述:

2022-01-14 10:44:36 642

原创 力扣 No.35搜索插入位置

文章目录前言一、代码总结前言给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-insert-position著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。必须使用时间复杂度为 O(log n) 的算法。一、代码这题没啥好说的,直接.

2022-01-12 22:16:01 121

原创 力扣 No.278 二分法的简单应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、暴力法(会报错——超出时间限制)二、自己用折半查找的优化(超出内存限制)总结前言你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接

2022-01-11 23:07:51 389

原创 Java的二分查找

文章目录前言一、迭代方法(非递归方法)总结前言给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-search一、迭代方法(非递归方法)通过设置数组头尾的两个指针,对数组进行二分查找。public static int search(int[] num.

2022-01-10 23:39:36 91

原创 力扣第一题——求和问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、暴力求解二、使用HashMap(后续再更)总结前言有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。一、暴力求解对数组进行两次循环,先

2022-01-09 22:27:37 276 2

原创 入门算法 day1——笨拙的手(笨拙的我)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档进制转换、集合、遍历总结代码如下:package com.company;import org.omg.CORBA.WStringSeqHelper;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.Scanner;/** * @author True楚 * @createT

2022-01-06 20:19:27 297

spring的相关注解

spring的相关注解

2022-01-29

空空如也

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

TA关注的人

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