- 博客(32)
- 收藏
- 关注
原创 Optional.ofNullable()方法
解释代码含义:如果list集合不为空,将list集合赋值给newList;如果list集合为空创建一个空对象集合赋值给newList,保证list集合永远不为空,也就避免了空指针异常。
2024-02-23 16:44:27
707
原创 classpath到底是什么
顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构。这样,我们才好分析、理解classpath。
2024-02-22 15:21:09
961
原创 3分钟看懂设计模式01:策略模式
那我们知道了策略模式怎么实现,也就是已经有了一把锤子在手上了,那什么时候用这把锤子呢?1. 系统中需要动态地在几种算法中选择一种。2. 一个对象有很多的行为,如果不用策略模式就只能用一大堆的if…else…来实现。3. 不希望客户端知道复杂的、与算法相关的数据结构。在具体策略类中封装算法和相关的数据结构,提高算法的保密性与安全性。1.假设平台支持多种支付方式,比如微信、支付宝、银行卡等。2.如果你有一个应用程序,它可以以多种格式输出数据,比如XML、JSON或CSV。3.
2024-02-22 15:06:37
1193
原创 CORS就是跨域吗?
同源策略(Same-Origin Policy)是浏览器中的一项安全机制,用于保护用户的隐私和安全。它限制了一个网页或者脚本只能从同一个源加载的资源进行访问,而不能访问其他来源的资源。这样做可以防止恶意网站利用用户身份信息进行跨站请求伪造(CSRF)攻击,保护用户的数据安全。跨站请求伪造(CSRF,Cross-Site Request Forgery)是一种网络攻击方式。在 CSRF 攻击中,攻击者利用已认证的用户身份(例如用户在银行网站上登录后的会话信息)来伪造请求,以执行未经授权的操作。
2024-02-20 17:23:10
1418
原创 复习一下JVM内存结构
程序计数器内存很小,可以看作是所执行字节码的。有了它,程序就能被正确的执行。因为有的存在,则每个线程必须有各自独立的程序计数器,即的内存。这里再解释一下什么是,线程切换指的是:单处理器在执行多线程时所进行的线程切换,多线程的会产生同时运行的错觉。程序计数器不会发生OOM原因:占用内存非常小,当线程结束时程序计数器也会随之回收。
2024-02-20 09:35:44
920
原创 翻译,师爷师爷什么叫事务!
然后在计算机领域进行引申扩展,尤其在数据库管理和分布式系统中,含义为一系列操作作为一个整体被执行,要么全部成功,要么全部失败,以保证数据的完整性和一致性。也就是说,倒退200年,英文语境中的 transaction 并没有当前 transaction 作为计算机术语所包含的概念。当英文的 apple 翻译过来时,我们把对应脑海里的概念移植过去就可以很轻易的理解什么是 apple。我们学习 apple 如此简单,就是因为我们对苹果这个概念的理解已经通透到不能再通透。哇,终于舒服了,透气了!
2024-02-18 17:15:07
371
原创 消息队列使用的四种场景介绍
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。
2024-02-06 16:49:21
2061
原创 Java锁到底是个什么东西
尽管java实现的锁机制有很多种,并且有些锁机制性能也比synchronized高,但还是强烈推荐在多线程应用程序中使用该关键字,因为实现方便,后续工作由jvm来完成,可靠性高。只有在确定锁机制是当前多线程程序的性能瓶颈时,才考虑使用其他机制,如ReentrantLock等。
2024-02-06 16:45:21
1134
原创 聚簇索引、回表与覆盖索引
就是把单列的非主键索引修改为多字段的联合索引,在一棵索引树上就找到了想要的数据,不需要去主键索引树上,再检索一遍这个现象,称之为。在 innodb 中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。而可以想象,回表就意味着更多磁盘IO,也就意味着慢。辅助索引叶子节点存储的不再是行的物理位置,而是。,从名字上也应该可以猜出什么是覆盖索引了。聚簇索引就是将数据存储与索引放到了一块,当然这样也会导致索引的存储空间,相当于。(如果存在主键索引的话)。
2024-02-04 18:12:23
445
原创 各类型判空操作
开发中经常遇到需要判空的地方,比如对字符串进行判空操作。而有时候工具包太多不知道用哪个。就像下图,光一个 StringUtils 就有十几个包弹出来。怎么选?其实用哪个都行。有了自己专属的开发习惯,不管客观上这个习惯是否是最优的,但一定要有一套,然后随着经验积累和实践,将这套习惯不断修整精进,达到个人开发效率的最高程度。
2024-02-01 18:50:06
420
原创 纪念JDBC
我们是学 java 的,我们要操作数据库,我们怎么办?聪明的 Sun 公司想了个办法,我们定义一套 java 接口,一套标准的操作数据库的 API,你们各家数据库公司都按我的来,不按我来的都给我滚。于是就有了 JDBC,JDBC 就是这套接口的名字,全称叫(Java 数据库连接)。我们也就应该知道,你光有接口是操作不了数据库的,所以你要用 MySQL 数据库,就得装上 MySQL 驱动。用谁家的数据库,就装谁家的数据库驱动。比如:</</</</
2024-01-30 15:37:25
424
原创 SpringBoot实现动态数据源配置
DynamicDataSource继承AbstractRoutingDataSource。@Override这里的determineCurrentLookupKey方法,需要返回一个数据源。又有同学问了:DynamicDataSourceContextHolder 又是什么东西?看到 Context 应该很熟悉了,跟程序上下文有关。它的作用就是你查询数据库的时候用哪个数据源,就 setDataSource 哪个。还有点懵?没事,继续往下看。
2024-01-29 16:11:50
2068
原创 师爷,翻译翻译什么叫AOP
也就是抽离出功能模块。先随便写个类。然后就直接一个@Aspect就行了,那这个类就是一个切面类。还要再加一个@Component将该类纳入Ioc容器。就这么简单,狗来了都会写。@Aspect@Component也就是确认功能代码加在哪。先随便写一个方法。然后就直接一个@Pointcut就行了,那这个方法就是一个切点。还要再加上表达式,让系统知道代码加到什么位置。@Aspect@Component这时候有同学问:啊这个execution是什么?里面那又是一坨什么?根本看不懂。
2024-01-18 13:52:28
1011
原创 0.o?让我看看怎么个事儿之SpringBoot自动配置
是用来简化 Spring 原生的复杂的 xml 配置的进阶框架。我们用另外一个问题回答这个问题。在新手村时期,我们照着教程生搬硬抄的时候可能也想过这个问题,今天就来简单探究一下。再次强调:看明白本篇内容需要前置知识点,尤其是注解。这一切都要从注解讲起。
2024-01-17 16:47:58
815
原创 Arrays.asList()是个坑
当你向这个List添加或删除一个元素时,程序就会抛出异常(java.lang.UnsupportedOperationException)。用此方法得到的List的。
2024-01-10 16:39:46
344
原创 @Conditional+@Configuration有没有搞头?
首先明确第一点:@Conditional 是 Spring 提供的。其次明确第二点:Conditional 中文译为:有条件的,依...而定的。
2024-01-08 15:11:14
407
原创 SpringBoot项目搭建
创建项目如下:5. 启动项目在浏览器中输入地址:http://localhost:8080/index浏览器输出如下,则说明项目搭建成功!
2024-01-04 13:49:51
378
原创 学会@ConfigurationProperties月薪过三千
我们在讲 @Value 时知道了如何将配置文件的属性注入到变量中,废话不多说,直接上代码。麻烦?写完之后整整齐齐,帅!如果有人觉得帅,一定还没成长成一个合格的程序员。我们程序员追求什么?优雅。优雅最重要的一条原则是什么?不写重复代码!所以怎么办?有办法。下面我们讲一下。
2024-01-04 13:44:32
1050
原创 学一点关于JVM类加载的知识
Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称作虚拟机的类加载机制。
2023-12-27 15:36:32
340
原创 mysql新建一张表
USE database01;CREATE TABLE IF not EXISTS setmeal(id int(11) PRIMARY KEY AUTO_INCREMENT,name VARCHAR(32),code VARCHAR(32),helpCode VARCHAR(32),sex VARCHAR(32),age VARCHAR(32),price float(5,2),remark VARCHAR(128),attention VARCHAR(128),img VARCH.
2022-02-06 15:19:37
805
原创 数据库date格式返回前端为一串数字
问题描述:mysql数据库中存储字段类型为date,当从数据库中查出来打印日志是没问题的,但是不经操作直接set到对象中返回前端显示不是yy-mm-dd格式的日期,而是一串长数字。修改操作:1. 改变日期格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String format = sdf.format(date);2. 将返回对象中orderDate数据类型改为String然后返回前端(因为
2022-02-06 15:02:08
2988
原创 Mybatis/Mybatis-Plus驼峰式命名映射
方法一:在springboot配置文件application.yml中写入配置信息如下:mybatis-plus: configuration: #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook map-underscore-to-camel-case: true方法二:通过mybatis配置文件:<?xml version="1.0" encoding="UT
2022-02-05 22:19:45
4510
原创 mysql添加数据的同时返回自增主键id
方法一(实测可用):<insert id="add" useGeneratedKeys="true" keyProperty="id" parameterType="com.zhengfeng.health.pojo.Order"> insert into t_order (id, member_id, orderDate, orderType, orderStatus, setmeal_id) VALUES(null, #{memberId}, #{ord
2022-02-05 21:58:46
2522
原创 查询mysql某时间段内数据
需求:前端发送ajax请求,参数为int year, int month, 需要返回给前端对应月份下的数据。实现方法一(利用工具类静态方法实现):public class DayofMonthUtils { /** * 获取某年某月的第一天 * @param year * @param month * @return */ public static String getFisrtDayOfMonth(int year,i
2022-01-28 12:19:53
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人