- 博客(61)
- 收藏
- 关注
原创 【Java】枚举类映射
当数据库的介质类型要存储数字,前端可以任意传参,通过枚举转换后端都会转成数字对应类型。在数据库中常用数字来代替字符串类型,编写一个枚举映射类。
2024-11-14 16:12:40
429
原创 Java替换${xxx}模板字符串
String template = "用户名称:${userName},用户密码:${password}";System.out.println("替换后的值(方式二):" + newValue2);System.out.println("替换后的值(方式一):" + newValue);* 方式二:借助org.apache.commons.lang3。* 方式一:利用正则替换。
2024-09-21 16:42:17
1077
原创 com.alibaba.fastjson与net.sf.json相互转换
【代码】com.alibaba.fastjson与net.sf.json相互转换。
2024-07-16 09:55:34
522
原创 多线程-锁的种类
共享锁和排它锁多用于数据库中的事物操作,主要针对读和写的操作。自旋锁认为:如果持有锁的线程能在很短的时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞、挂起状态,只需等一等(也叫作自旋),在等待持有锁的线程释放锁后即可立即获取锁,这样就避免了用户线程在内核状态的切换上导致的锁时间消耗。锁从乐观和悲观的角度可分为乐观锁和悲观锁,从获取资源的公平性角度可分为公平锁和非公平锁,从是否共享资源的角度可分为共享锁和独占锁,从锁的状态的角度可分为偏向锁、轻量级锁和重量级锁。
2023-09-11 22:26:15
666
原创 深入解析Java中的instanceof关键字
由此我们可以确定instanceof前面的对象所属的类是后面类型的类或者是其子类的话,判断结果为true,否则为false。把instanceof后面的类型换成Father类型时会发现 控制台输出结果前两个为false最后一个是true。把instanceof后面的类型换成Father类型时会发现 控制台输出结果第一个为false后两个是true。因为所有的类都直接或者间接的继承了Object,都算是Object类的子类,所以控制台输出结果都为true。关键字发挥作用的地方。
2023-08-21 08:50:29
599
原创 linux系统的JDK11安装详细教程
2.命令:tar -zxvf +需要解压的包名 -C +指定目录。(命令#source /etc/profile )(我这里是解压到/usr/local目录下了)(命令# vim /etc/profile)④通过source命令让刚才修改的文件生效。①(输入命令#java -version)shift+G(快捷键)定位文件末尾插入。②如果出现如下图,JDK已经安装成功!1、上传linux 系统的jdk。①获取JDK的路径(后面会用到)打开/etc/profile文件。切换linux系统需要安装路径。
2023-07-24 15:17:18
6369
1
原创 Spring Security OAuth 2.0
OAuth2通常用于构建安全的API和Web应用程序,使用户能够授权其他应用程序访问其数据,同时提供了更好的安全性和用户控制。除了OAuth2之外,Spring Security还提供了其他身份验证和授权机制的支持,例如基于表单的身份验证和基于角色的授权。OAuth 2.0是一种授权框架,提供了一套规范和协议,用于实现授权流程和访问令牌的管理,而非单个的授权协议。简化模式的优点是简单易用,适用于客户端是浏览器的应用程序,但缺点是安全性较低,因为访问令牌直接传递给浏览器,容易被恶意攻击者截获。
2023-07-15 11:44:22
2582
2
原创 SpringBoot集成MongoDB
一、集成简介一、集成简介spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。2、添加MongoDB配置。
2023-06-29 22:47:37
4079
原创 MongoDB常用操作
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。Objectld是、id”的默认类型。在 MongoDB 中使用 limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据。4. 计数器:前9个字节保证了同一秒钟不同机器不同进程产生的Objectld是唯一的。3. PID:为了确保在同一台机器上并发的多个进程产生的Objectld是唯一的,
2023-06-29 22:41:29
750
原创 MongoDB简介
NoSQL(NoSQL = Not Only SQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。对于此类应用,数据仓库可能是更合适的选择。
2023-06-23 23:38:54
3110
1
原创 JWT代码实现
前后端传输数据时,一般是使用 session 或是 cookie,但是都相对有自己的弊端,JWT 是利用 token 来对用户身份进行验证的方式,具体流程是前端使用用户名和密码来登录,服务器收到请求后验 证用户名和密码,验证成功后,服务器会签发一个 token ,将 token 返回给前端,前端将收到的 token 存储起来,在每次请求资源时都必须携带 token,服务器收到请求,会先验证 token 是否有效,验证成 功就给前端返回请求的数据。JWT 的组成 JWT 由 3 部分组成,用.拼接。
2023-06-13 11:40:48
749
原创 我用 ChatGPT 写 2023 高考语文作文:全国卷(一)
同时,好的故事也可以触动我们的心灵,让我们感受到人类情感的深刻和复杂,让我们更加关注人类的命运和未来。在当今社会,好的故事仍然具有重要的意义,它可以帮助我们更好地表达和沟通,可以触动心灵、启迪智慧,甚至可以改变一个人的命运,展现一个民族的形象。总之,好的故事具有重要的意义,它可以帮助我们更好地表达和沟通,可以触动心灵、启迪智慧,甚至可以改变一个人的命运,展现一个民族的形象。“好的故事,可以帮我们更好地表达和沟通,可以触动心灵、启迪智慧:好的故事以改变一个人的命运,可以展现一个民族的形象故事是有力量的。
2023-06-11 12:00:50
7148
9
原创 如何对待工作中的失误
在日复一日的工作中,我们免不了会产生一些失误,会因此感到沮丧和失望。但如何正确地对待和处理这些失误才是最重要的,它直接影响到我们的工作表现和个人成长。一起来谈谈作为职场人的你时如何处理工作中的失误的吧!
2023-06-10 17:49:05
955
原创 mybatis-plus用法(二)
条件构造器中提供了多个方法用于构造SQL语句中的WHERE条件,而其子类额外提供了select方法,可以只选取特定的列,子类额外提供了set方法,用于设置SQL中的SET语句。除了普通的Wrapper,还有基于lambda表达式的Wrapper,如,它们在构造WHERE条件时,直接以方法引用来指定WHERE条件中的列,比普通Wrapper通过字符串来指定要更加优雅。另,还有链式Wrapper,如,它封装了BaseMapper,可以更方便地获取结果。条件构造器采用链式调用来拼接多个条件,条件之间默认以。
2023-06-10 09:03:34
2252
原创 mybatis-plus用法(一)
当mp提供的方法还不能满足需求时,则可以自定义SQL。原生mybatis示例如下注解方式/****/xml方式使用xml时,若xml文件与mapper接口文件不在同一目录下,则需要在中配置mapper.xml的存放路径若有多个地方存放mapper,则用数组形式进行配置测试代码如下@Test结果也可以使用mp提供的Wrapper条件构造器,来自定义SQL示例如下注解方式。
2023-06-10 09:02:06
1567
原创 SpringCloudAlibaba
Spring Cloud Alibaba 是 Spring Cloud 的一个子项目,它是由阿里巴巴开发的一套微服务解决方案,旨在为微服务架构提供一站式解决方案,包括服务注册与发现、配置中心、消息总线、负载均衡、熔断器、限流器、分布式事务等组件。1. 更加完善的微服务解决方案:Spring Cloud Alibaba 提供了更加完善的微服务解决方案,包括服务注册与发现、配置中心、消息总线、负载均衡、熔断器、限流器、分布式事务等组件。首先,需要创建一个 Spring Boot 项目。
2023-06-05 08:42:27
521
原创 Kafka、RabbitMQ和RocketMQ对比
Kafka、RabbitMQ和RocketMQ都是流行的消息队列系统,它们都有自己的优势和缺点,适用于不同的应用场景。- 系统解耦:RabbitMQ可以作为系统解耦的基础设施,将不同的系统解耦开来,提高系统的可维护性和可扩展性。- 无法保证消息的顺序性:RabbitMQ只能保证消息在队列内的顺序性,无法保证全局的顺序性。- 高吞吐量和低延迟:Kafka是一个高性能的消息队列系统,能够处理大量的消息并保证低延迟。- 无法保证消息的顺序性:Kafka只能保证消息在分区内的顺序性,无法保证全局的顺序性。
2023-06-05 08:30:38
1406
原创 哨兵机制的应用
哨兵机制(Sentinel)是一种常用的分布式系统中的容错机制,它可以用于监控系统中的关键资源,如数据库连接、缓存、消息队列等,一旦发现资源出现异常,就会触发相应的处理逻辑,以保证系统的稳定性和可用性。2. 监控资源:哨兵会按照配置的频率对指定的资源进行监控,如检查数据库连接是否正常、缓存是否可用等。3. 触发处理逻辑:一旦发现资源出现异常,哨兵会触发相应的处理逻辑,如重启资源、切换到备份资源等。1. 配置哨兵:在系统中配置哨兵,指定需要监控的资源和监控的频率等参数。3. 监控资源:```
2023-06-04 22:15:00
171
原创 单点登录CAS实现
当用户尝试访问其他应用程序或系统时,这些应用程序或系统会向身份提供者发送身份验证请求,并使用之前获得的授权令牌进行授权。单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户使用一组凭据(如用户名和密码)登录到多个应用程序或系统中,而无需在每个应用程序或系统中单独登录。当用户尝试访问其他应用程序或系统时,这些应用程序或系统会检查Cookie中的身份验证信息,并使用该信息进行身份验证和授权。使用单点登录技术,员工可以在这些应用程序之间无缝地切换,而无需在每个应用程序中单独登录。
2023-06-04 16:23:51
8855
2
原创 Spring注解
5. `@RestController`:结合`@Controller`和`@ResponseBody`,用于标识一个类为RESTful风格的控制器。21. `@Qualifier`:用于指定要注入的Bean的名称或限定符,解决多个相同类型的Bean的注入问题。7. `@Qualifier`:与`@Autowired`配合使用,指定要注入的Bean的名称或限定符。9. `@Configuration`:用于标识一个类为配置类,通常与`@Bean`一起使用。
2023-06-01 08:59:50
630
原创 哈希Hash
5. 键值对存储:HashMap的每个键值对被封装在一个Entry对象中,包含键、值和指向下一个Entry的指针(在链表中)。否则,将新的键值对添加到桶中。扩容会创建一个更大的数组,并将所有键值对重新分配到新的桶中,以减少哈希冲突,保持查找性能的稳定。6. 键的查找:当我们根据键来获取值时,HashMap会根据键的哈希码找到对应的桶,然后在桶中遍历链表(或红黑树)进行查找。总体而言,HashMap通过哈希算法将键值对分散存储在数组的不同位置上,通过链表或红黑树解决哈希冲突,并提供高效的存储和检索功能。
2023-05-31 21:13:40
371
原创 解决高并发
单体系统即一个应用程序,所有的业务代码都在这一个应用程序中,所有的表也都在一个数据库中,所涉及的相关文件都在同一个服务器上。在企业初创期,为了快速进入市场,一般企业都采用单体系统。淘宝等电商平台在初创期也都采用的是单体系统。在企业初创期,用户量不多,业务场景也不复杂,这正是验证技术和业务模式可行性之时,系统越简单越好搭建过程越快越好。于是,可以在同一台服务器上构建“1个应用程序+1个数据库+1个文件服务器”的单体系统,如下图所示。
2023-05-28 15:02:17
910
原创 什么是高并发?
在每年的京东618及淘宝的双十一活动中,平台商家会有很多促销商品,而且商品价格对于用户来说吸引力巨大。面对这么巨大的流量,技术上如何保证这些商品不被“超卖”,同时还能给用户一个良好的购物体验?12306网站在刚开始对外在线售票时,经常出现系统瘫痪的现象,后来经过系统优化,现在已经可以支持上千万人同时抢票且不损害系统本身。这些技术的背后都离不开高并发技术,需要利用高并发技术的方法论及设计原则,再结合业务本身进行架构设计,以应对系统面临的流量冲击。1.1 什么是高井发。
2023-05-28 14:38:15
1554
1
原创 软件开发模型
一、简介软件开发模型(Software Development Model)是指软件开发全部过程、活动和 任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维 护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完 成的主要活动和任务,用来作为软件项目工作的基础。 开发模型分为 11 种,分别有边做边改模型,瀑布模型,快速原型模型,增 量模型,迭代模型,螺旋模型,敏捷开发,演化模型,喷泉模型,智能模型,混 合模型。二、常用模型(一)敏捷开发模型1.
2023-05-23 18:53:13
3178
原创 一种异步延迟队列的实现方式
轮询时间久,如30分钟一次,03:01插入一条数据,正常3:31执行过期,但是3:30执行轮询时,扫描3:00-3:30的数据,是扫描不到3:31的数据的,需要4:00的时候才能扫描到,相当于多延迟了29分钟!可能出现的情况: 因一个应用公用一个disruptor,拥有64个消费者线程,如果某一个事件消费过慢,导致64个线程都在消费这个事件,会导致其他事件无消费线程消费,生产者线程也被阻塞,导致所有事件的消费都被阻塞。优点:依靠jmq,可以有效的监控、消费记录、重试,具备多机同时消费能力,不惧怕宕机。
2023-05-23 18:16:02
178
原创 用好Java 8的日期时间类,少踩一些“老三样”的坑
今天,我来和你说说恼人的时间错乱问题。在 Java 8 之前,我们处理日期时间需求时,使用 Date、Calender 和 SimpleDateFormat,来声明时间戳、使用日历处理日期和格式化解析日期时间。但是,这些类的 API 的缺点比较明显,比如可读性差、易用性差、使用起来冗余繁琐,还有线程安全问题。因此,Java 8 推出了新的日期时间类。每一个类功能明确清晰、类之间协作简单、API 定义清晰不踩坑,API 功能强大无需借助外部工具类即可完成操作,并且线程安全。
2023-05-22 14:26:30
653
1
原创 srpingcloud2022.x新特性
容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。
2023-04-11 17:31:37
249
原创 spirngboot2.7迁移3.0指南
注意:基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过泛型限定,可以检查出要克隆的对象是否支持序列化,这项检查是编译器完成的,不是在运行时抛出异常,这种是方案明显优于使用Object类的clone方法克隆对象。2.实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,代码如下。1.实现Cloneable接口并重写Object类中的clone()方法;
2023-04-08 14:14:57
533
原创 springboot3.0带来的新特性
Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
2023-04-05 09:30:00
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人