自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌套对象Object转Map

可以先转成JSON然后在转成map。

2022-08-15 14:59:55 421 1

原创 redis缓存雪崩

Redis缓存雪崩什么是缓存雪崩?简介:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。有哪些解决办法?1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个 key 只允许一个线程查询数据和写缓存,其他线程等待。2:不同的 key,设置不同的过期时间,让缓存失效的时间点尽量均匀...

2021-12-27 12:42:21 560

原创 几句话记住Mybatis中#{} 和 ${} 的区别

#{} 和 ${} 的区别是什么${} 是 Properties 文件中的变量占位符,它可以用于 XML 标签属性值和 SQL 内部,属于字符串替换。 例如将 ${driver} 会被静态替换为 com.mysql.jdbc.Driver ${} 也可以对传递进来的参数原样拼接在 SQL 中,实际场景下,不推荐这么做。因为,可能有 SQL 注入的 风险。 #{} 是 SQL 的参数占位符,Mybatis 会将 SQL 中的 #{} 替换为 ? 号,在 SQL 执行前会使用 PreparedStateme.

2021-12-26 16:21:53 508

原创 SpringBoot集成MongoDB

环境1.安装好MongoDB2.maven改造成SpringBoot项目或者直接创建SpringBoot项目集成springboot依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3&lt

2021-12-26 16:15:08 508

原创 SoringBoot自动装配原理

简单总结SpringBoot自动配置主要是通过@EnableAutoConfiguation,@Conditional,@EnableConfigProperties,@ConfigurationProperties等注解实现的。具体流程如下:当我们写好一个启动类后,我们会在启动类上加一个@SpringBootApplication,我们可以点开这个注解可以看到它内部有一个@EnableAutoConfiguation的注解,我们继续进入这个注解可以看到一个@Import的注解,这个注解引入了一个Aut

2021-12-24 11:20:37 244

原创 Redis持久化机制

Redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF)快照(snapshotting)持久化(RDB):Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis主从结构,主要用来提高Redis性能),还可以将快照留

2021-12-23 14:25:26 96

原创 Redis内存淘汰机制

Redis 内存淘汰机制Redis中通过maxmemory参数来设定内存的使用上限,当Redis使用内存达到设定的最大值的时候,会根据配置文件中的策略选取要删除的key来删除,从而给新的键值留出空间;redis 提供 6种数据淘汰策略:(默认策略no-eviction)volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过

2021-12-23 14:24:13 120

原创 什么是缓存击穿

缓存击穿缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。不同场景下的解决方式可如下:若缓存的数据是基本不会发生更新的,则可尝试将该热点数据设置为永不过期。若缓存的数据更新不频繁,且缓存刷新的整个流程耗时较少的情况下,则可以采用基于 Redis、zookeeper 等分布式中间件的分布式互斥锁,或者本地互斥锁以保证仅少量的请求能请求数据库并重新构建缓存,其余线程则在

2021-12-23 14:22:11 1161

原创 什么是缓存穿透

什么是缓存穿透?缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层。举个例子:某个黑客故意制造我们缓存中不存在的 key 发起大量请求,导致大量请求落到数据库。1)缓存无效 key如果缓存和数据库都查不到某个 key 的数据就写一个到 redis 中去并设置过期时间,具体命令如下:SET key value EX 10086。这种方式可以解决请求的 key 变化不频繁的情况,如果黑客恶意攻击,每次构建不同的请求key,会导致 redis 中缓存

2021-12-23 14:21:43 566

原创 elasticsearch&SpringBoot集成elasticsearch

认识elasticsearch搜索引擎搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上采集信息,在对信息进行组织和处理后,为用户提供检索服务,将检索的相关信息展示给用户的系统。搜索引擎是工作于互联网上的一门检索技术,它旨在提高

2021-12-22 17:02:39 1772

原创 Spring中常见注解@configuration@Bean@import等

spring中常见注解@configuration“@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。”@import 通过快速导入的方式将实例导入到Spring的IOC容器中@Bean 将一个创建的实例对象,通过注

2021-12-22 14:39:51 495

原创 Redis缓存介绍

RedisNOSQL数据库分类键值存储:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署代表: Redis列存储数据库:这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。代表: HBase文档型数据库:文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化

2021-12-21 14:30:58 691

原创 Vue框架简单入门

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。Vue项目开始之前要把相关的插件跟问价导入进来,引用文件的时候还要注意路径的问题,项目中如果遇到了404,那就是文件的路径引用不对,或者是项目配置的时候路径没配置好Vue常见指令属性{{}}vue一直解析数据的指令v-bind除了使用插

2021-12-21 14:13:40 678

原创 Restful风格&前后端概念

api概念一种:某个软件系统将自己的功能通过打包然后发给另一个软件系统使用,这种叫SDK一种:某个软件或者系统通过对外暴露接口(请求映射),然后其他的软件直接调用该接口然后使用功能,这种叫应用接口前后端分离模式先来说一下传统的开发模式,前端写好页面,后端拿过来需要改成模板,然后进行调试,后端如果是发现问题需要把问题返给前端,然后前端在进行修改,之后再返回给后端,这样浪费时间,浪费人力传统的开发模式代码耦合性太高,出现bug改的话很麻烦,前端需要安装一套后端的开发工具来调试,要是后端更换了一套语言,

2021-12-21 14:12:46 703

原创 MyBatis-plus&SpringBoot集成Mybatis-plus

MyBatis跟Mybatis-plus的区别优点:1>SQL语句自由控制,较为灵活2>SQL与业务代码分离,易于阅读与维护3>提供动态SQL语句,可以根据需求灵活控制缺点:1>简单的crud操作也必须提供对应SQL语句2>必须维护大量的xml文件3>自身功能有限,要拓展只能依赖第三方插件MyBatis-plus 是在Mybatis的基础上进行二次开发的具有MyBatis所有功能, 也添加了不少好用的功能Mybatis-plus是My

2021-12-21 14:09:14 1009

原创 lambda认识

Java8新特性为什么学习java8新特性?1.代码简洁,函数式编程写出的代码简洁且意图明确,⽐如使⽤stream接⼝让你告别for循环。2.多核友好,Java函数式编程使得编写并⾏程序如此简单,只需要调⽤⼀下parallel()⽅法即可。什么是lambda表达式?“->”被称为lambda操作符或者箭头符。----固定语法他把lambda分为两个部分:左侧:指定人lambda表达式需要的所有参数------参数,run方法不需要呀参数可以直接写()右侧:指定了lambda体,即lam

2021-11-04 16:36:27 147

原创 反射机制&内省机制

反射机制&内省机制构造器对象获取的方法1.Class.forName(类路径)2.Person person = new Person(); person.getclass();3.Person.class;// 1. 字节码对象的获取: Class<?> person = Class.forName("_01_getclass.Person1"); //第二种方法// Class<Person1> p

2021-11-04 16:27:30 106

原创 求数组元素平均值int 类型

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

2021-07-29 10:12:31 727

原创 飞机大战小游戏

实现思路首先创建我们要创建我们需要的类,比如我方战机,敌方战机等等,然后再主程序里面创建一个surfaceview,用来实现飞机背景图等的绘制,在主程序里面把当前的类中的方法被实现或者是把父类中的方法所重写,在主程序中还用到了线程,在启动线程的时候一定要用new Thread().start来调用,在飞机子弹那些子类中把需要贴的图全调用出来,最后只要在主程序里面调用一下,如果在调用时出先不...

2018-05-31 23:46:05 1158

原创 字符流和字节流区别

字符流和字节流区别1)字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。 2)字节流默认不使用缓冲区;字符流使用缓冲区。 3)字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。4)底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成...

2018-05-25 08:32:21 10632

原创 线程

什么是线程线程是程序在执行过程中,能够执行程序代码的一个执行单元。多线程使用多线程有两种常用方法 继承Thread类,重写run()方法。 实现Runnable接口,并实现该接口的run)方法。public class Test { public static void main(String[] args) { int count = 0; ...

2018-05-23 22:03:53 391

原创 实现文件复制思路和步骤

要想实现文件复制有好几种,在这我自己认为比较好用的是字节流。 因为这个可以复制任何文件 这个方法步骤很简单, 首先创建字节输入流对象,然后创建字节输出流对象,一次读写一个字节,一次读写一个字节数组,最后退出/** * 文件复制(可以复制任何文件) */import java.io.FileInputStream;import java.io.FileNotFoundExcep...

2018-05-23 21:52:04 1357

原创 如何使用字符流进行文件读写

使用字符流进行读取import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class Test01 { public static void main(String[] arg...

2018-05-23 21:37:37 4937

原创 IO流

一、什么是IO流早期用于UNIX中管道的概念。。二、IO流的分类IO流分为两种,一种是字符流,一种字节流。1、字节流包含和定义字节流包含:InputStresm和Outputstream 字节流是由字节组成的,字节流是最基本的,所有InputStresm和Outputstream的子类都是字节流,主要用在处理二进制数据,它是按字节来处理的。2、字符流含义字符流半酣...

2018-05-23 20:34:18 106

原创 Java中File的用法

一、什麽是File1、文件和文件夾:文件夾是用來组织和磁盘文件单位一种数据结构。 2、文件是在电脑中。以实现某种功能、或者某个软件的部分功能为目的的定义的一个单位。文件是由文件名和图标组成,一种类型的文件具有相的图标。二、File类的功能1、获取文件或文件的属性信息。 2、创建、删除、重命名文件等。 File中常用方法以及解释 添加加文件方法package com.le...

2018-05-23 20:19:18 703

原创 面向对象之多态与接口

一、多态1、什么是多态多态是指两个或多个属于不同类的对象对于同一信息做出不同响应的方式2、引用类型有几种状态有两种:编译时;运行时3、产生多态的条件1、父类对象名=子类(); question.getSex(); 2、调用重写方法,即可产生多态二、接口1、接口关键字implement是接口的关键字2、为什么使用接口接口可以精简程序结构,免除重...

2018-05-17 16:00:24 160

原创 面向对象之抽象方法

面向对象之抽象方法一、什么是抽象方法用关键字abstract来修饰,抽象方法中没有方法体二、什么是抽象类抽象类是有抽象方法的类,关键字是abstract。抽象类特点:1、抽象类不可以实例化。 2、继承一个抽象类,必须要实现抽象类中的抽象方法,除非子类也是抽象类。三、抽象类的好处是什么抽象方法是一个模板或约束,避免了子类的随意性,需要实现它的类必须重...

2018-05-16 18:15:45 296

原创 面向对象之继承

一、面向对象之继承1、什么是继承继承是从已有的类中派出来新的类能吸收已有的数据属性和行为,并能扩展新的能力。`public class parent { } public class child extends parent { } `2、继承有什么特点1.只支持单继承,即一个子类只允许有一个父类。 2. 子类可以拥有父类的属性和方法 3. 子类可以拥有自...

2018-05-15 16:27:04 92

原创 面向对象一

一、什么是类具有相同方法和属性的一组对象的集合二、什么是对象用来描述客观事物的一个实体,由一组属性和方法构成三、方法和属性是什么属性:对象具有的特征方法:对象执行的操作四、什么是方法重载(附码)重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。在java中同一个类中的2个或2个以上的方法可以有同一个名字,只要它们...

2018-05-09 21:23:27 188 1

原创 Java入门

1:java的基本数据类型byte(字节型):         数据类型是8位、有符号的,以二进制补码表示的整数;占用字节1,取值范围-128~127short(短整型):        short 数据类型是 16 位、有符号的以二进制补码表示的整数;占用字节2,取值范围-32768~3276int(整型):int 数据类型是32位、有符号的以二进制补码表示的整数;占用字节4,取值范围-2的31...

2018-05-08 21:35:31 399

空空如也

空空如也

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

TA关注的人

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