自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Springboot Starter机制

starter机制

2022-06-04 00:57:54 261

原创 (3)数组模拟环形队列

数组模拟环形队列对前面的数组模拟队列的优化,充分利用数组. 因此将数组看做是一个环形的。(通过取模的方式来实现即可)分析说明:尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意 (rear + 1) % maxSize == frontrear == front [空]分析示意图代码实现import java.util.Scanner;public class CircleDemo { public static void ma

2022-05-10 17:13:58 109

原创 (2) 数组实现队列

队列队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)数组模拟队列思路1.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图:其中 maxSize 是该队列的最大容量。2.因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear 则是随着数据输入而改变,如图所示:3

2022-05-09 18:00:21 219

原创 (1)线性结构和非线性结构+稀疏数组

文章目录一、线性结构和非线性结构线性结构非线性结构二、稀疏数组 sparsearray一、线性结构和非线性结构数据结构包括:线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组、队列、

2022-05-08 00:42:58 430

原创 为什么重写equals方法,还必须要重写hashcode方法

原因:1.为了提高效率采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用。我们都知道java中的List集合是有序的,因此是可以重复的,而set集合是无序的,因此是不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠equals方法一样比较的话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所

2022-04-26 23:25:47 12654 3

原创 JWT鉴权

文章目录一、什么是JWT二、JWT能做什么三、JWT介绍以及和传统Session的区别1)基于传统的Session认证2)基于JWT认证四、JWT的构成和认证流程五、JWT的优缺点一、什么是JWTJSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a

2022-04-25 23:04:25 910

原创 死锁问题(产生条件、解决问题)

什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。则会陷入死锁产生死锁的原因?可归结为如下两点:a. 竞争资源系统中的资源可以分为两类:1.可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU和主存均属于可剥夺性资源;2.另一类资源是不可

2022-04-25 10:40:42 443

原创 处理高并发问题思路

文章目录1.先考虑一个最简单的系统架构2.系统集群化部署3.数据库分库分表 + 读写分离4.缓存集群引入5.引入消息中间件集群结语1.先考虑一个最简单的系统架构假设刚刚开始你的系统就部署在一台机器上,背后就连接了一台数据库,数据库部署在一台服务器上。我们甚至可以再现实点,给个例子,你的系统部署的机器是4核8G,数据库服务器是16核32G。此时假设你的系统用户量总共就10万,用户量很少,日活用户按照不同系统的场景有区别,我们取一个较为客观的比例,10%吧,每天活跃的用户就1万。按照28法则,每天高峰

2022-04-21 16:52:16 501

原创 Java常见异常

遇到过异常吗,如何处理?在Java中,可以按照如下三个步骤处理异常:捕获异常 try将业务代码包裹在try块内部,当业务代码中发生任何异常时,系统都会为此异常创建一个异常对象。创建异常对象之后,JVM会在try块之后寻找可以处理它的catch块,并将异常对象交给这个catch块处理。处理异常 catch在catch块中处理异常时,应该先记录日志,便于以后追溯这个异常。然后根据异常的类型、结合当前的业务情况,进行相应的处理。比如,给变量赋予一个默认值、直接返回空值、向外抛出一个新的业务异常交给调用者

2022-04-21 16:16:26 71

原创 Spring 中的 bean 为什么默认单例?

文章目录单例bean与原型bean的区别单例bean的优势单例bean的劣势Spring提供了5种scope分别是singleton、prototype、request、session、global session。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype。官方文档:https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html单例bea

2022-04-21 16:06:35 107

原创 springboot启动失败:APPLICATION FAILED TO START

启动mian遇到APPLICATION FAILED TO START问题:如下图@SpringbootApplication注解包含的内容,可以扫描包中的类、自动配置等等。所以在包中没有数据源或者url,会显示启动失败APPLICATION FAILED TO STARTDescription:** Failed to configure a DataSource: ‘url’ attribute** is not specified and no embedded datasource co

2022-04-17 22:39:40 1264

原创 Redis

redisredis是什么?Remote Dictionary Server(Redis): key-value的存储系统,非关系数据库意大利: Salvatore Sanfilippo ANSI C 语言, 基于内存、分布式、可持久化的键值对数据仓库。redis的特点 支持持久化->内存–>磁盘 开源BSD协议,高性能key-value Redis实现单线程(目前版本) 五大类型:string, list,set,hash,zset 性能极高- 读速度 1100

2022-04-15 18:36:05 666

原创 springboot优雅的解决异常问题(demo)

需求:主要处理用户登录异常用户名不存在用户名密码不为空自定义异常/** * 定义系统异常 */public class AeipfException extends RuntimeException{ public AeipfException(String message) { super(message); }}/** * 用户名、密码不能为空 */public class AccountNotNulException extends A

2022-04-15 17:44:42 256

原创 什么是ORM框架?

ORM概念什么是“持久化”即把数据(如内存中的对象)保存的磁盘的某一文件中。常用的ORM半自动框架如Mybatis,全自动ORM框架JPA。JPA详解什么是持久层持久层(Persistence Layer),即实现数据持久化应用领域的一个逻辑层面,将数据使用者和数据实体相关联。持久化过程把数据永久载入数据库在载入磁盘中比如下面的代码,Springboot中的jpa框架添加居民信息residentsDao.save(residents)相当于把新创建的residents居民对象添加到数

2022-04-15 12:25:10 4658

原创 构造简易版hashmap(acm模式)

import java.util.Scanner;public class Test3 { static class hashmap{ private int key; private String value; private String[] arr = new String[10]; int count; public hashmap() { } public void put(int key, Strin

2022-04-14 20:56:39 154

原创 java list、map、数组的迭代

list迭代for循环、foreach、Interatorpublic class Test2 { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); Random ran=new Random(); //循环添加元素 for (int i = 0; i < 10; i++) {

2022-04-13 16:36:11 152

原创 java比较器的使用

ComparableComparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。接口中通过x.compareTo(y)来比较x和y的大小。若返回负数,意味着x比y小;返回零,意味着x等于y;返回正数,意味着x大于y。ComparatorComparator 是比较器接口。若需要控制某个类的次序,而该类本

2022-04-11 20:03:04 373

原创 ConcurrentHashMap与Hansmap的区别

ConcurrentHashMap与Hansmap的区别HashMap是线程不安全的,因此为了解决线程安全问题,提出了两个类:HashTable和CurrentHashMap。HashTable相关操作都是对方法加synchronized的大锁,效率比较低。ConcurrentHashMap避免了对全局加锁改成了局部加锁操作,这样就极大地提高了并发环境下的操作速度。jdk1.7在JDK1.7中ConcurrentHashMap采用了数组+Segment+分段锁的方式实现。ConcurrentHa

2022-04-09 15:31:43 809

原创 为什么HashMap是非线程安全的?

HashMap 是非线程安全的, HashTable 是线程安全的,因为里面的方法使用了 synchronized 进行同步。但是 HashMap 为什么是非线程安全的呢?难道仅仅就是因为内部的方法没有 synchronized 关键字修饰吗?哒咩HashMap 底层是一个 Entry 数组,当发生 hash 冲突的时候,HashMap 是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了

2022-04-09 14:49:23 617

原创 sprngboot常用注解

文章目录标题@SpringBootApplication标题@Component、@Service、@Controller、@Repository@ResponseBody@RestController标题@AutoWired、@Qualifier、@Resource@RequestMapping、@GetMapping、@PostMapping@Value、@ConfigurationProperties、@PropertySource@Configuration、@Bean@RequestParam、@

2022-04-03 11:29:44 469

原创 java的锁机制

文章目录常见锁公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁熟悉几个概念以后再细说一下java中的锁:Synchronized的实现:Lock锁常见锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。可重入锁可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁

2022-04-02 21:00:14 171

原创 Java中Stack和Deque的比较

在刷到leetcode84的单调栈解法,栈使用了Deque而不是Stack。leetcode 84为什么用Stack 不用Deque?确实如果没有对API有很仔细的研究,单纯从使用上来说,很难仔细发现他们中间的区别,虽然他们有很大不同。而实际在Java Doc里是建议用Deque替代Stack接口完成栈的功能,我们仔细看下Java Doc里对Stack是这样描述的:A more complete and consistent set of LIFO stack operations is prov

2022-04-02 12:55:20 797

原创 http和https的比较

一、HTTP 和 HTTPS 的基本概念HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。它可以使浏览器更加高效。HTTP 协议是以明文方式发送信息的,如果黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息。HTTP 原理:① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,一般 TCP 连接的

2022-04-02 12:26:59 250

原创 mybatis日志、缓存

mybatis详解mybatismybatis日志log4j日志配置src下log4j.propertieslog4j.rootLogger=debug,stdout,logfile#console outputlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayoutlog4j.appender.stdout.Pattern

2022-03-31 16:23:55 97

原创 Java的MessageDigest类、MD5算法

什么是MD5算法MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。原理:MD5是一种不可逆的算法,是一种散列函数,使用的是hash算法。输入任意长度的信息,经过处理,输出为128位的信息(数字指纹),不同的输入得到的不同的结果(唯一性)。在计算过程中原文的部分信息是丢失了的。所以不能从密文(散列值)反过来得到原文,即没有解密算法。MD

2022-03-27 14:26:19 871

原创 redis持久化机制:RDB,AOF和混合式

Redis做为一种高性能缓存数据库,是如果实现的?总结持久化机制:RDB,AOF,混合式。RDB是快照文件,反映的是Redis在某一时刻的数据状态,缺点是当数据继续变化时,RDB无法持久化新的数据变化。AOF记录的是所有的操作日志,当从AOF持久化文件中恢复数据到REDIS时,会依次执行所有日志记录,但是缺点是多条hset或者set记录仅有最后一条能反映最终状态,(set多个人名,get一下只能获取到最后一个人的)因此中间状态有浪费内存之嫌,当然可以通过设置rewrite的阀值,压缩多余的中间状态记

2022-03-23 22:54:12 1179

原创 springboot的多模块开发

文章目录springboot的多模块开发1.创建项目springboot-high2.在项目中添加模块1)springboot-common模块2)springboot-domain模块3)springboot-service模块4)springboot-web模块多模块开发引入jpa的实体类问题springboot的多模块开发springboot-high​ |–springboot-common 模块 (DTO)​ |–springboot-domain 模块 (ent

2022-03-23 22:28:18 4143

原创 springboot的开发流程

springboot的开发流程1.创建maven项目新建maven项目配置maven环境2.引用依赖1)起步依赖 <parent> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version&

2022-03-22 22:06:29 3832

原创 TCP三次握手和四次挥手

TCP和UDP协议TCP和UDP协议都工作在传输层,都是一种数据传输协议。两种的区别主要在于TCP 是可以双向传输数据的,也就是全双工协议。所以双方都可以主动断开连接,断开连接后主机中的资源将被释放。UDP协议基于非连接,单工。TCP报文序号: Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。确认号: Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Se

2022-03-22 14:27:58 767

原创 spring、springmvc和springboot的比较

一、spring和springMvc的比较1.spring关键词:控制反转(IOC) /面向切面(AOP)spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC) 和面向切面(AOP) ,针对于开发的WEB层(springMvc)、业务层(loc)、 持久层(jdbcTemplate)等都提供了多种配置解决方案。Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。2.springMvc:关键词:spring框架中WEB层开发部分springMvc是spring基

2022-03-20 23:58:33 4256

原创 Springboot整合JPA

文章目录JPA技术Springboot整合JPA引入JPA配置启动类实体类定义接口和数据库交互(dao)JPA技术Java Persistence Api– ORM 全自动化框架Springboot整合JPA引入JPA<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artif

2022-03-19 01:31:06 946

原创 线程的三大特性

文章目录线程的三大特性原子性CAS可见性volatile关键字有序性线程的三大特性原子性即一个操作或多个操作要么全部执行并且执行过程中不被任何因素打断,要么就不执行。package com.wdy.thread;import java.util.concurrent.atomic.AtomicInteger;public class ThreadAtomicDemo { public static int i=0; public static class AtomicThre

2022-03-19 01:02:10 447

原创 线程池基础

文章目录线程池线程池的好处:创建线程池的四种方式newSingleThreadExecutor 单线程化的线程池newFixedThreadPool 定长线程池线程池可以理解为线程的存储仓库。创建、销毁线程消耗系统资源(内存、CPU)。通过线程池减少线程对象的创建、回收次数,提高服务效率。(也叫池化(pool)技术)**线程池的好处:1) 降低资源销毁通过重复利用已经创建的线程,降低线程创建和销毁造成的消耗。2) 防止服务器过载形成内存溢出,或者CPU耗尽3)提高响应速度当任务到达时,任务

2022-03-18 23:48:51 205

原创 SpringBoot整合mybatis

文章目录SpringBoot整合mybatis引入依赖配置mybatis实体类mapper接口mapper.xmlservice单元测试Controllerspringboot处理时间问题返回时间,缺了8个小时前端传输数据有时间接口测试工具Swagger3引入swagger的框架配置swagger3SpringBoot整合mybatis引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apa

2022-03-18 22:28:50 324

原创 springboot配置、入口类

文章目录springboot进阶pom基本配置起步依赖定义项目依赖版本项目依赖打包插件项目模型(结构)SpringBoot的入口类@SpringBootApplication配置bannerspringboot配置环境部署名称springboot进阶pom基本配置起步依赖引用起步依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo

2022-03-18 22:23:40 937

原创 SpringBoot(1)

springBootspringboot概念The primary goals of Spring Boot are:To provide a radically faster and widely accessible ‘getting started’ experience for all Spring development.To be opinionated out of the box, but get out of the way quickly as requirements sta

2022-03-18 22:20:58 388

原创 Spring AOP(面向切面开发)

文章目录Spring AOPAOP概念面向对象:继承问题AOP思想AOP的实现原理-代理模式静态代理动态代理cglib代理spring aopaop的相关概念advise(增强)aop实例spring的事务管理事务的隔离级别Spring AOPAOP: 面向切面的开发AOP概念面向对象:继承继承: 软件复用(代码复用),A类 a()方法, B extends A问题升级class A{ public void a(){ before(); 语

2022-03-17 00:24:22 488

原创 maven(项目管理)

文章目录maven为什么使用maven什么是maven?maven的作用项目构建依赖管理配置本地参考配置本地仓库创建本地仓库定位配置文件位置更新本地仓库路径配置镜像仓库sts构建maven项目配置sts的maven插件maven 构建javase项目STS 图形化引入maven依赖maven构建javaee项目配置tomcat创建maven项目基于maven的javaee项目开发构建maven项目单例类 MybatisUtil加载数据库maven为什么使用maven如果jar包都到各个官网网站下载,

2022-03-17 00:02:38 599

原创 SSM框架

文章目录SSM框架整合创建maven(javaee)项目引用maven依赖相关依赖POM配置SSM框架配置(结构)结构配置项目结构(包+前端)配置mvc容器配置业务容器扫描类创建对象放入容器读取数源的配置信息、配置数据源配置SqlSessionFactory配置mybatis的辅助事务配置实体类mapper接口mapper配置service测试servicceControllerSSM框架整合SSM整合:S: SpringMVCS: SpringM: Mybatis[外链图片转存失败,源站

2022-03-16 23:54:04 666

原创 Spring框架(2)—IOC、MVC

文章目录一、Spring的loC容器IOC的概念DI是什么?set注入(推荐)构造方法注入接口注入(少)二、springmvc框架springmvc-helloworldmaven项目(javaee)引入springmvc框架完成Controller层的代码配置springmvc框架配置IoC容器(mvc 容器)配置servlet一、Spring的loC容器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7thD44cJ-1647445462666)(D:\dyit\202

2022-03-16 23:45:32 814

空空如也

空空如也

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

TA关注的人

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