自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十二、Redis持久化机制有哪些?各有什么优缺点?

优点:数据安全,aof 持久化可以配置 appendfsync 属性为 always,记录每个命令操作到 aof 文件中一次;RDBRedis DataBase:指用数据集快照的方式半持久化模式,记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据。缺点:数据安全性低,RDB 是每间隔一段时间进行持久化,若期间 redis 发生故障,可能会发生数据丢失。缺点:AOF 的持久化文件比 RDB 大,恢复速度慢。

2024-06-25 22:39:28 199

原创 十一、Spring mvc 与 Spring boot 有什么区别?

提供了丰富的功能:JDBC 层抽象、事务管理、MVC、Java Mail、任务调度、JMX、JMS、JNDI、EJB、动态语言、远程访问、Web Service... 基于 Spring 衍生出 mvc、boot、security、jpa、cloud 等产品,组成了 Spring 家族产品。Spring 的配置非常复杂,同时每次开发都需要写很多模板代码与配置,为了简化开发流程,官方推出了 Spring Boot,实现了自动配置,降低项目搭建的复杂度。

2024-06-25 22:38:56 226

原创 十、spring中事务的传播特性

事务传播特性,就是多个事务方法调用时如何定义方法间事务的传播。

2024-06-25 22:38:24 154

原创 九、spring mvc运行流程?

1、在 web 项目的 web.xml 文件配置 DispatcherServlet,启动 web 项目完成初始化动作。4、根据 HandlerExecutionChain 获取 HandlerAdapter、执行 handler。7、DispatcherServlet 进行视图渲染,将 Model 数据在 View 中填充。6、DispatcherServlet 进行结合异常处理 ModelAndView。8、DispatcherServlet 返回结果。

2024-06-25 22:37:54 199

原创 八、写一些常见的Javascript正则表达式?

身份证:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ 数字:/[0-9]/ 英文:/^[a-z]+$/i 中文:/[\u4e00-\u9fa5]/gm 数字逗号:/^[\d,]*$/ 手机号:/^[1][3,4,5,7,8][0-9]{9}$/ 新能源车牌(长度为8):/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}

2024-06-25 22:37:19 85

原创 七、Map的实现类中,哪些是有序的,哪些是无序的,如何保证其有序性?

Map 的实现类有 HashMap、LinkedHashMap、TreeMap HashMap是有无序的 LinkedHashMap 和 TreeMap 是有序的。LinkedHashMap 记录了添加数据的顺序;TreeMap 默认是升序 LinkedHashMap 底层存储结构是哈希表+链表,链表记录了添加数据的顺序 TreeMap 底层存储结构是二叉树,二叉树的中序遍历保证了数据的有序性

2024-06-25 22:36:47 129

原创 六、LinkedHashMap、LinkedHashSet、LinkedList哪个最适合当作Stack使用?

LinkedList。

2024-06-25 22:36:16 180

原创 五、HashSet和HashMap有什么区别?

HashMapHashSet

2024-06-25 22:35:33 134

原创 四、HashMap的键值需要注意什么?

所以自定义类作为 HashMap 的 key,需要注意按照自己的设计逻辑,重写自定义类的 hashCode() 方法和 equals() 方法。HashMap 的 key 相等的条件是,条件 1 必须满足,条件2和3必须满足一个。

2024-06-25 22:34:56 218

原创 三、什么是Java的垃圾回收机制?

Java 语言不需要程序员直接控制内存回收,由 JVM 在后台自动回收不再使用的内存;JVM 需要跟踪程序中有用的对象,确定哪些是无用的,影响性能。垃圾回收机制,简称 GC。

2024-06-25 22:34:03 123

原创 二、方法重载和重写是什么?有什么区别?

重写:在子类中将父类的成员方法的名称保留,重新编写成员方法的实现内容,更改方法的访问权限,修改返回类型的为父类返回类型的子类。重载:一个类中允许同时存在一个以上的同名方法,这些方法的参数个数或者类型不同。重载条件:方法名相同;参数类型不同 或 参数个数不同 或 参数顺序不同。声明为 private 的方法不能被重写。声明为 static 的方法不能被重写。声明为 final 的方法不能被重写。

2024-06-25 22:33:32 146

原创 一、Java中基本类型的转换规则

等级低到高: byte、short、int、long、float、double。强制转换:高级需要强制转换为低级,可能会丢失精度。自动转换:运算过程中,低级可以自动向高级转换。

2024-06-25 22:32:55 176

原创 想学习网络安全

有没有大佬会网络安全的小白想了解一下。

2024-05-29 10:20:22 72

原创 十、哪些因素影响oracle查询性能?

initial 参数:表或索引的 initial 参数配置不同,导致数据扩展区大小不一,也可能导致查询速度降低。碎片:表碎片和索引碎片,生产库长时间运营,碎片可能导致查询使用错误的执行计划,导致查询速度变慢。硬件:处理器速度,内存大小,磁盘读写速度,网络传输速度等。慢SQL:编写的 SQL 执行效率低,查询速度慢。索引:是否建立了索引,索引是否合理。负载:数据库负载过大。

2024-05-28 20:55:53 150

原创 九、说一些索引失效的情况

如果条件中有 or,即使其中有部分条件是索引字段,也不会使用索引。复合索引,查询条件不使用索引前面的字段,后续字段也将无法使用索引。MySQL 引擎估算使用全表扫描要比使用索引快,则不使用索引。where 子句里对索引列有数学运算。where 子句里对索引列使用函数。以 % 开头的 like 查询。索引列的数据类型存在隐形转换。

2024-05-28 20:55:21 71

原创 八、为什么Java中一个类可以实现多个接口,但只能继承一个类?

从 JDK1.8 开始,接口中允许有静态方法和方法默认实现。当检测到实现类中实现的多个接口中有相同的默认已实现的方法,编译报错。假设这些接口中存在相同方法(方法名与参数相同),在实现接口时,这个方法需要实现类来实现,并不会出现二义性的问题。对于类 B、C 重写的类 A 中的方法,类 D 会继承哪一个?类 B 和类 C 继承自类 A,且都重写了类 A 中的同一个方法。接口中的方法是抽象的,一个类实现可以多个接口。类 D 同时继承了类 B 和类 C。多继承会产生钻石问题(菱形继承)Java 支持类实现多接口。

2024-05-28 20:54:51 202

原创 七、什么是死锁?

线程死锁是指由于两个或者多个线程互相持有所需要的资源,导致这些线程一直处于等待其他线程释放资源的状态,无法继续执行,如果线程都不主动释放所占有的资源,将产生死锁。当线程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。持有系统不可剥夺资源,去竞争其他已被占用的系统不可剥夺资源,形成程序僵死的竞争关系。持有资源的锁,去竞争锁已被占用的其他资源,形成程序僵死的争关系。

2024-05-28 20:54:09 76

原创 六、Java中的锁之间的区别是什么?

JDK 1.6 开始,对 synchronized 方式枷锁进行了优化,加入了偏向锁、轻量级锁和锁升级机制, 性能得到了很大的提升。性能与 ReentrantLock 差不多。synchronized 和 java.util.concurrent.lock.Lock 之间的区别。读多写少的情况下,考虑使用 ReadWriteLock。

2024-05-28 20:53:39 167

原创 五、synchronized关键字的作用是什么?

Java 中关键字 synchronized 表示只有一个线程可以获取作用对象的锁,执行代码,阻塞其他线程。控制等待和唤醒需要结合加锁对象的 wait() 和 notify()、notifyAll()同步代码块是通过 monitorenter 和 monitorexit 指令获取线程的执行权。同步方法通过加 ACC_SYNCHRONIZED 标识实现线程的执行权的控制。在加锁代码块执行完或者出现异常,自动释放锁。阻塞未获取到锁、竞争同一个对象锁的线程。锁的功能是 JVM 层面实现的。指定对象,修饰代码块。

2024-05-28 20:53:07 119

原创 四、Java 程序中怎么保证多线程的运行安全?

JDK Atomic开头的原子类、synchronized、LOCK,可以解决原子性问题。synchronized、volatile、LOCK,可以解决可见性问题。原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性。可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到。Happens-Before 规则可以解决有序性问题。有序性:程序执行的顺序按照代码的先后顺序执行。线程切换带来的原子性问题。编译优化带来的有序性问题。缓存导致的可见性问题。

2024-05-28 20:52:14 205

原创 三、Map的实现类中,哪些是有序的,哪些是无序的,如何保证其有序性?

LinkedHashMap 和 TreeMap 是有序的。LinkedHashMap 记录了添加数据的顺序;TreeMap 默认是升序。LinkedHashMap 底层存储结构是哈希表+链表,链表记录了添加数据的顺序。Map 的实现类有 HashMap、LinkedHashMap、TreeMap。TreeMap 底层存储结构是二叉树,二叉树的中序遍历保证了数据的有序性。HashMap是有无序的。

2024-05-28 20:44:47 86

原创 二、this和super关键字的作用

可以调用父类的构造方法,只限构造方法中使用,且必须是第一条语句。可以调用父类的非 private 成员变量和方法。在静态方法当中不允许出现 this 关键字。代表对当前对象的直接父类对象的引用。解决成员变量和局部变量同名问题。在普通方法中可以省略 this。对象内部指代自身的引用。

2024-05-28 20:44:15 67

原创 一、可变参数的作用和特点是什么?

通过对 class 文件反编译可以发现,可变参数被编译器处理成了数组。作用:在不确定参数的个数时,可以使用可变参数。可变参数可以设置为任意类型:引用类型,基本类型。无法仅通过改变 可变参数的类型,来重载方法。参数的个数可以是 0 个、1 个或多个。特点:每个方法最多只有一个可变参数。可变参数必须是方法的最后一个参数。可变参数也可以传入数组。语法:参数类型...

2024-05-28 20:41:26 69

原创 十、Redis有哪些优缺点?

丰富的数据类型,String(字符串)、List(列表)、Hash(字典)、Set(集合)、Sorted Set(有序集合)原子性:Redis 的所有操作都是原子性的,多个操作通过 MULTI 和 EXEC 指令支持事务。支持数据的持久化,对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上。丰富的特性:key 过期、publish/subscribe、notify。数据库容量受到物理内存的限制,不能用作海量数据的高性能读写。支持数据的备份,快速的主从复制。

2024-05-23 18:39:00 518

原创 九、MySQL中如何避免死锁?

业务上能够接受幻读和不可重复读,考虑降低锁的级别到 Read committed,降低死锁发生的概率。尽量避免同时并发对同一表进行读写操作,特别是执行加锁且操作数据量较大的语句。在事务中一次锁定所需要的所有资源,如 MyISAM 引擎的表锁。添加合理的索引,走索引避免为每一行加锁,降低死锁的概率。避免大事务,尽量将大事务拆成多个小事务来处理。尽量以相同的顺序来访问索引记录和表。

2024-05-23 18:37:17 107

原创 八、什么是触发器,MySQL都有哪些触发器?

触发器是指一段代码,当触发某个事件时,自动执行这些代码。注意:滥用会造成数据库及应用程序的维护困难。可以通过数据库中的相关表实现级联更改。实时监控表中字段的更改做出相应处理。

2024-05-23 18:36:44 115

原创 七、简单工厂和抽象工厂有什么区别?

简单工厂模式:是由一个工厂对象创建产品实例,简单工厂模式的工厂类一般是使用静态方法,通过不同的参数的创建不同的对象实例,可以生产结构中的任意产品,不能增加新的产品。抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类,生产多个系列产品。生产不同产品族的全部产品,不能新增产品,可以新增产品族。

2024-05-23 18:36:12 385

原创 六、什么是守护线程?

setDaemon(true) 必须在 start() 之前设置,否则会抛出IllegalThreadStateException异常,该线程仍默认为用户线程,继续执行。守护线程不应该访问、写入持久化资源,如文件、数据库,因为它会在任何时间被停止,导致资源未释放、数据写入中断等问题。Java中把线程设置为守护线程的方法:在 start 线程之前调用线程的 setDaemon(true) 方法。所有用户线程停止,进程会停掉所有守护线程,退出程序。Java线程分为用户线程和守护线程。

2024-05-23 18:35:22 126

原创 五、List、Set和Map接口的特点与常用的实现类

HashMap、LinkedHashMap、指定 Comparator 的 TreeMap 的 key 可以为 null。ArrayList,它提供了使用索引的随意访问,LinkedList 更合适经常添加或删除元素的场景。Map 的 每个 Entry 都持有两个对象,key 和 value,key 唯一,value 可为 null 或重复。Map 接口常用的实现类有 HashMap、LinkedHashMap、Hashtable 和 TreeMap。是有序容器,保持了每个元素的插入顺序。

2024-05-23 18:34:41 189

原创 四、Map的遍历方式

Map 的 keySet() 方法,单纯拿到所有 Key 的 Set Map 的 values() 方法,单纯拿到所有值的 Collection keySet() 获取到 key 的 Set,遍历 Set 根据 key 找值(不推荐使用,效率比下面的方式低,原因是多出了根据 key 找值的消耗) 获取所有的键值对集合,迭代器遍历 获取所有的键值对集合,for 循环遍历

2024-05-23 18:34:10 85

原创 三、Java跨平台运行的原理

.java 源文件要先编译成与操作系统无关的 .class 字节码文件,然后字节码文件再通过 Java 虚拟机解释成机器码运行。 .class 字节码文件面向虚拟机,不面向任何具体操作系统。 不同平台的虚拟机是不同的,但它们给 JDK 提供了相同的接口。 Java 的跨平台依赖于不同系统的 Java 虚拟机。

2024-05-23 18:32:33 79

原创 二、动态代理是什么?应用场景?

Spring的 AOP 功能模块就是采用动态代理的机制来实现切面编程。动态代理:在运行时,创建目标类,可以调用和扩展目标类的方法。校验被调用的 api 是否已经登录和权限鉴定。统计每个 api 的请求耗时。Java类库 CGLib。JDK 中的动态代理。

2024-05-23 18:32:02 104

原创 一、什么是反射?有什么作用?

Java的动态就体现在反射。通过反射我们可以实现动态装配,降低代码的耦合度;反射的过度使用会严重消耗系统资源。JDK中java.lang.Class 类,就是为了实现反射提供的核心类之一。一个jvm中一种 Class 只会被加载一次。Java 反射,就是在运行状态中。

2024-05-23 18:31:32 135

原创 索引的种类有哪些?

主键索引:特殊的唯一索引,不允许有 null,一张表最多一个主键索引。唯一索引:和普通索引类似,但是具有唯一性约束,可以有 null。组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并。覆盖索引:查询列要被所建的索引覆盖,不必读取数据行。普通索引:最基本的索引,没有任何约束限制。全文索引:对文本的内容进行分词、搜索。

2024-05-17 18:57:45 92

原创 Redis各数据类型最大容量是多少?

Sorted sets类型:同 Sets,元素个数最多为 2^32-1 个,即 4294967295 个。Hashes:键值对个数最多为 2^32-1 个,即 4294967295 个。Strings:一个 String 类型的 value 最大可以存储512M。Lists:元素个数最多为 2^32-1 个,即 4294967295 个。Sets:元素个数最多为 2^32-1 个,即 4294967295 个。

2024-05-17 18:57:14 484

原创 Redis使用单线程模型为什么性能依然很好?

避免了线程切换的资源消耗 单线程不存在资源共享与竞争,不用考虑锁的问题 基于内存的,内存的读写速度非常快 使用非阻塞的 IO 多路复用机制 数据存储进行了压缩优化 使用了高性能数据结构,如 Hash、跳表等

2024-05-17 18:56:21 76

原创 truncate和delete的异同?

truncate 和 delete 都可以将数据实体删掉,truncate 的操作并不记录到 rollback 日志,操作速度较快,删除数据不能恢复。truncate 不能对视图等进行删除;delete 可以删除单表的视图数据(本质是对表数据的删除)truncate 命令永久地从表中删除所有数据;delete 命令从一个表中删除某一行或多行数据。truncate 是数据定义语言(DDL);delete 是数据操纵语言(DML)delete 操作不释放表空间。

2024-05-17 18:55:45 115

原创 并发编程的缺点?

Java 中的线程对应是操作系统级别的线程,线程数量控制不好,频繁的创建、销毁线程和线程间的切换,比较消耗内存和时间。 容易带来线程安全问题。如线程的可见性、有序性、原子性问题,会导致程序出现的结果与预期结果不一致。 多线程容易造成死锁、活锁、线程饥饿等问题。此类问题往往只能通过手动停止线程、甚至是进程才能解决,影响严重。 对编程人员的技术要求较高,编写出正确的并发程序并不容易。 并发程序易出问题,且难调试和排查;问题常常诡异地出现,又诡异地消失

2024-05-17 18:55:14 79

原创 tcp粘包是怎么产生的?

如 TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方。接收方不及时接收缓冲区的包,造成多个包接收。如应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取 整个长度的包字节数据,保证读取的是单个包且完整。发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。3、处理方法:发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法。

2024-05-17 18:54:28 208

原创 TreeSet的原理是什么?使用需要注意什么?

使用方式:TreeSet 默认构造方法,调用 add() 方法时会调用对象类实现的 Comparable 接口的 compareTo() 方法和集合中的对象比较,根据方法返回的结果有序存储。TreeSet 默认构造方法,存入对象的类未实现 Comparable 接口,抛出 ClassCastException。特点:有序,无重复,添加、删除元素、判断元素是否存在,效率比较高,时间复杂度为 O(log(N))TreeSet 基于 TreeMap 实现,TreeMap 基于红黑树实现。

2024-05-17 18:53:53 152

空空如也

空空如也

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

TA关注的人

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