自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码开发小技巧

使用Arrays.asList方法转换后的ArrayList,是Arrays类的内部类,并非java.util包下我们常用的ArrayList。这个例子中有两层循环,如果userList和roleList数据比较多的话,需要循环遍历很多次,才能获取我们所需要的数据,非常消耗cpu资源。比如:为了性能考虑,从数据库查询某张表的所有数据,一次性加载到内存的某个集合中,然后做业务逻辑处理。因为数组的长度是固定的,不太好扩容,而List的长度是可变的,它的长度会根据元素的数量动态扩容。

2023-12-01 10:40:26 92

原创 JAVA - DES对称加密解密工具类

package com.digitenjoy.server.base.job.util;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.*;import javax.crypto.spec.DESKeySpec;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmExceptio.

2021-09-08 11:12:33 328

原创 Cannot determine value type from string ‘xxxxxx‘

无法从字符串确定 'xxxxxx' 值类型1. 检查属性名与字段名是否对应2.在实体类中添加全参构造和无参构造(本人通过这种做法解决)

2021-08-17 17:06:01 811 2

原创 Java时间戳与日期格式字符串的互转

import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { /** * 时间戳转换成日期格式字符串 * @param seconds 精确到秒的字符串 * @param formatStr * @return */ public static String timeStamp2Date(String seconds,Str.

2021-06-29 10:53:30 1674

原创 idea中springboot插件安装(JBLSpringBootAppGen)

1.点击左上角file2.点击Settings...3.点击Plugins4.在右侧的的输入框内输入JBLSpringBootAppGen5.最后Install - - ->>>>ok , 安装完成 !!!

2021-05-20 10:49:19 4851 1

原创 swagger2常用注解剖析

1.@Api:请求类的说明@Api:放在 请求的类上,与 @Controller 并列,说明类的作用,如用户模块,订单类等。 tags="说明该类的作用" value="该参数没什么意义,所以不需要配置"示例:@Api(tags="订单模块")@Controllerpublic class OrderController {}@Api其它属性配置:属性名称 备注 value url的路径值 tags 如果设置这个值、value的值会被覆盖 .

2021-05-19 11:15:33 182

原创 GetMapping和@PostMapping的使用场景

1.当方法中的参数为@RequestParam、@PathVaiable、无参的情况下使用@GetMapping2.当方法中的参数为@RequestBody、多参、对象参数的情况下使用@PostMapping

2021-05-14 15:41:13 3691

原创 RabbitMQ工作模式

RabbitMQ工作模式:1、简单模式 HelloWorld P:生产者,也就是要发送消息的程序 C:消费者:消息的接受者,会一直等待消息到来。 queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。 一个生产者、一个消费者,不需要设置交换机(使用默认的交换机)2、工作队列模式 Work QueueWork Queues与入门程序的简单模式相比,多了一个或一些消费端,多个消费端共同消费同一个队列中的消息。

2021-04-05 03:12:32 295 1

原创 RabbitMQ优点和劣势

MQ的优势1. 应用解耦使用了MQ之后 ,订单系统的数据只需要放到MQ里面,其他的系统想请求获取数据只需要去MQ里面消费即可,如果突然不想请求了,就取消对MQ的消费就行了,订单系统根本不需要考虑给谁去响应这个数据,也不需要去维护代码,也不用考虑其他系统是否调用成功,失败超时等情况。总结:通过MQ发布订阅消息的模型,订单系统就成功的跟其他系统解耦了。使用 MQ 使得应用间解耦,提升容错性和可维护性。2. 异步提速当我们的用户访问我们的订单系统,只需要保存数据库,然后在向MQ发送一个

2021-03-17 16:01:27 2151 1

原创 MYSQL存储引擎InnoDb与MyIsam的区别

MYSQL存储引擎InnoDb与MyIsam的区别1.InnoDb支持事务而MyIsam不支持事务2.InnoDb是一个聚集索引(在它的叶子节点存在具体的数据的)而MyIsam是一个非聚集索引(它的叶子节点只存储了主键的id,如果你想查询到它还需要进行一次回表操作)3. InnoDb中不保存表中具体的一些行数,在进行select...

2021-03-16 23:58:47 98

原创 MYSQL之存储引擎

MYSQL结构MySQL存储引擎分类1. MyISAM引擎MyISAM引擎特点: 1.不支持事务 事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败。 2.表级锁定 数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。 3.读写互相阻塞 不

2021-03-16 10:56:10 90

原创 正确理解MYSQL中having与where的区别

having与where的区别:having是在分组后对数据进行过滤 where是在分组前对数据进行过滤 having后面可以使用聚合函数 where后面不可以使用聚合where和having的执行顺序where子句在聚合前先筛选记录,也就是说作用在group by 子句和having子句前,而 having子句在聚合后对组记录进行筛选 where在group by之前执行,having 在group by 之后执行。where和having 可以同时存在一个SQL语句中...

2021-03-16 09:04:33 207

原创 MYSQL的存储过程

存储过程和函数存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开 发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。使用存储过程和存储函数的优势:可以减少我们应用程序和我们数据库之间的交互,应用程序和数据库之间存在网络传输,交互的次数越多性能越低,这个时候就可以将所有的sql语句都封装到一个集合当中,应用程序只需要调用一次就可以执行集合当中所有的sql语句存储过程和函数的区别...

2021-03-15 14:43:13 128

原创 索引的优缺点以及索引的设计原则

索引概述 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。 在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引的优缺点优势:提高数据检索的效率,降低数据库的IO成本。 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗;劣势:索引本身也是表,因此会占用...

2021-03-15 12:20:23 811

原创 缓存预热、缓存雪崩、缓存击穿、缓存穿透的解决方案

企业级解决方案缓存预热场景:“宕机”服务器启动后迅速宕机问题排查:1.请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有,此时从数据库中查找数据然后将数据再存入缓存,造成了短期内对redis的高强度操作从而导致问题2.主从之间数据吞吐量较大,数据同步操作频度较高解决方案: 前置准备工作: 1.日常例行统计数据访问记录,统计访问频度较高的热点数据2.利用LRU数据删除策略,构建数据留存队列例如:storm与kafka配合 准备工作:

2021-03-09 23:39:52 1564

原创 Cluster集群

集群cluster现状问题:业务发展过程中遇到的峰值瓶颈 redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到10万/秒 内存单机容量达到256G,当前业务需求内存容量1T 使用集群的方式可以快速解决上述问题 集群简介集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果集群作用: 分散单台服务器的访问压力,实现负载均衡 分散单台服务器的存储压力,实现可扩展性 降低单台服务器宕机带来的业

2021-03-09 22:41:35 1178

原创 redis哨兵以及工作原理

哨兵模式哨兵哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。哨兵作用监控:监控master和slave不断的检查master和slave是否正常运行master存活检测、master与slave运行情况检测通知(提醒):当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知自动故障转移:断开master与slave连接,选取一个slave作为mas

2021-03-09 15:43:03 507

原创 redis主从复制以及主从复制的原理

概述在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风险。面临问题1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的。而数据是最重要的,如果你不在乎,基本上也就不会使用 Redis 了。2. 容量瓶颈。当我们有需求需要扩容 Redis 内存时,从 16G 的内存升到 64G,单机肯定是满足不了。当然,你可以重新买个 128G 的新机器。解决办法要实现分布式数据库的更大

2021-03-09 11:28:03 871 2

原创 redis的两种持久化方式详解

RDBRDB简介RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。在 Redis 运行时, RDB 程序将当前内存中的数据库快照保存到磁盘文件中, 在 Redis 重启动时, RDB 程序可以通过载入 RDB 文件来还原数据库的状态。工作方式当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:Redis 调用forks。同时拥有父进程和子进程。 子进程将数据集

2021-03-08 17:04:18 343

原创 redis数据淘汰策略

数据淘汰策略(逐出算法)第一类:检测易失数据(可能会过期的数据集server.db[i].expires )volatile-lru:挑选最近最少使用的数据淘汰volatile-lfu:挑选最近使用次数最少的数据淘汰volatile-ttl:挑选将要过期的数据淘汰volatile-random:任意选择数据淘汰第二类:检测全库数据(所有数据集server.db[i].dict )allkeys-lru:挑选最近最少使用的数据淘汰allkeLyRs-lfu::挑选最近使用次数最少的数据

2021-03-08 16:14:17 151

原创 redis数据删除策略

TTL指令获取数据状态返回时间:具有时效性的数据 返回-1:表示永久有效的数据 返回-2:表示已经过期的数据或被删除的数据或未定义的数据时效性数据的存储结构过期数据是一块独立的存储空间,Hash结构,field是内存地址,value是过期时间,保存了所有key的过期描述,在最终进行过期处理的时候,对该空间的数据进行检测, 当时间到期之后通过field找到内存该地址处的数据,然后进行相关操作。数据删除策略的目标在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能

2021-03-08 15:35:52 275

原创 Spring框架优点

Spring框架面试题汇总1、 简述Spring框架概念Spring致力于Java EE应用的各种解决方案,是一款轻量级框架,大大简化了Java企业级开发,提供了强大、稳定的功能。Spring主要有两个目标:一是让先有技术更易于使用,二是促进良好的编程习惯(或者称为最佳实践)优点轻量级: Spring在大小和透明性方面绝对属于轻量级的,基础版本的Spring框架大约只有2MB控制反转(IOC): Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对

2021-03-08 14:50:16 378 1

空空如也

空空如也

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

TA关注的人

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