自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 plsql查询Oracle数据库发现有的数据是乱码

客户端发送数据:数据 “一二三四五六” 以AL32UTF8字符集编码,即。数据传输:数据通过网络传输到数据库服务器。数据接收与转换:数据库接收到数据后,将其从AL32UTF8转换为ZHS16GBK,即。存储数据:转换后的数据以ZHS16GBK字符集存储在数据库中。

2024-10-17 10:02:06 1223

原创 双重检查锁定

第二次检查是因为,第一次检查可能有多个线程都进入了if和 synchronized之间,但只有一个线程可以获取锁进入到同步代码块,当第一个获取锁的线程缓存了Map,释放锁时,第二重检查可以防止其他进入了if和 synchronized之间的线程再次加载一次缓存Map。在加载缓存时,使用双重检查锁定机制,它可以完美缓存的懒加载。第一次检查,是为了快速判断缓存Map是否被初始化。

2024-09-23 14:45:30 231

原创 jdbc执行sql语句全流程

查询操作: 使用执行SELECT语句,获取ResultSet并处理结果。插入操作: 使用执行INSERT语句,检查受影响的行数。更新操作: 使用执行UPDATE语句,检查受影响的行数。删除操作: 使用执行DELETE语句,检查受影响的行数。

2024-09-19 18:10:29 432

原创 怎么用Map做缓存

思路:首先从数据库中获取结果集,然后依次遍历结果集每一行,将每一行的主键和数据行做一一映射,存储在HashMap中。

2024-09-18 16:26:26 231

原创 Springboot事务的回滚解决方案

当我们在方法sumitOrder上加了@Transactional,springboot会帮你生成代理类,代理类里面生成代理方法。到外层的事务代理方法中时,异常会被捕获,在回滚事务后,首先了解一下Spring事务自动回滚的基本原理。代理方法进过一系列处理才会调用原生方法。

2024-09-06 13:59:18 528

原创 关于导出excel

通过Content-Disposition设置(响应体)内容处理方式为。通过ContentType设置(响应体的)内容类型为。导出excel时,要注意设置以下响应的响应行。(附件下载) 以及设置文件名为。

2024-09-05 14:40:56 764

原创 后端怎么处理前端传入的参数应该做哪些处理?

自定义注解和 AOP+反射自定义注解 import java . lang . annotation . Retention;自定义注解 import java . lang . annotation . Retention;自定义注解 import java . lang . annotation . Retention;Retention;自定义注解 import java . lang . annotation . Retention;

2024-09-04 14:41:28 816

原创 编码和解码的理解

接着是中国的GB2312(国标2312),然后是中国的GBK,最后发展到万国码UTF-8,一套编码解决世界上各国的问题。一开始计算机是由美国人冯诺依曼发明的,美国人就发明了一套ASCII编码,把自己国家的字符和二进制数做了一一映射。后来计算机传到欧洲,这时欧洲有很多希腊字符无法输入了,于是他们发明了ISO 8859-1编码。“你好啊”三个字在ISO8859-1这个字符集中没有任何对应,最后编码的时候会给你存成问号。编码时用的是UTF-8,解码时用的却是GBK,“你好啊”最终被解码成“屋西窝”。

2024-08-29 18:14:34 262

原创 枚举类的创建与理解

1.写一个类,里面有私有的属性和私有的构造器,避免被外界使用,用来创建实例。2.写一个公开的方法,提供外界获取实例的属性的渠道。3.在最上方将想要创建的实例一个一个枚举出来。使用枚举类可以保证每个枚举常量只有一个实例。,他们在枚举类被加载的时候就已经创建好了。定义一个枚举类通常包括以下步骤。枚举类的每个枚举常量实际就是。

2024-08-29 14:31:20 207

原创 常量类的最佳实践

说明:将一个类定义为 final 可以明确表达类设计的意图,即该类的功能是固定的,不应被扩展或修改。例如,常量类的主要目的是为了提供一组常量值,不涉及复杂的业务逻辑或行为,因此不需要扩展其功能。

2024-08-20 16:28:16 115

原创 数据库建表规范

或idx_字段名1_字段名2…普通索引命名为idk_字段名。或uk_字段名1_字段名2…主键索引命名为pk_字段名。唯一索引命名为uk_字段名。pk_字段名1_字段名2…

2024-08-20 16:18:17 299

原创 后端如何接收前端发出的请求中的参数?

如果前端发出的参数在URL中,你可以使用注解。这样可以将请求中的参数自动绑定到实体类上。GET /users?

2024-08-13 13:56:57 745

原创 前后端中的日期格式转换问题

Date数据序列化为JSON发往前端时,按以下格式序列化。Java对象中的日期的序列化为JSON时会用到。JSON日期的反序列化为java对象时。从后端发送的日期转为想要的格式给前端。从前端接收到的日期转为想要的格式。

2024-08-01 14:08:51 415

原创 java正则表达式

在正则表达式之前,我们首先要知道,在java中,哪些字符不能够直接用,需要用转义字符才能表达出出他原本的意思。例如,如果要让字符串里有\n,那么我们。

2024-07-30 09:53:33 250

原创 git报错403,git项目拉取不下来

清除后再次拉取代码时,重新输入云效平台https用户账号及密码。解决办法,清除以下配置。

2024-07-25 15:48:08 684

原创 idea中项目目录,文件显示不全问题

idea中项目目录显示不全问题。用idea重新打开文件就行了。删除目录中的.idea文件。

2024-07-25 09:40:22 996

原创 mybatis的mapper.xml文件中表名爆红且没提示

如果连接时不给出这个数据库名,后面每个mapper.xml文件中的表名都会爆红且没提示。2.设置sql方言为mysql。1.idea中连接数据库。3.问题解决,不爆红了。注意:连接数据库时要。

2024-07-22 17:51:04 744

原创 mybatis-sql实战总结

动态条件查询总结注意点:1.可以用where 1=1 也可以用 防止出现后面没有条件的情况2.模糊查询用concat拼接3. 对于前端传来的日期参数,使用STR_TO_DATE来转为统一的格式4.对于String类型的字段,不但要判断是不是null,还要判断是不是空字符串””.对于集合类型的字段,如List,不但要判断是不是null,还需要判断是不是空的集合,用size判断就行。对于Date类型的字段,只需要判断是不是null就行了。

2024-07-19 17:55:32 461

原创 try-catch-finally使用注意事项

2.finally块在try和catch的return之前执行。(return时会暂存,执行finally后再return)如果finally中有return,那就直接return了。1.catch块和finally块可以省略其中一个。

2024-07-16 17:09:40 188

原创 java算法大礼包

检测有没有下一个数据,在他的内部会不停的循环检测。分别表示该名同学的语文、数学、英语成绩。人并列,则他们排名相同,并留空后面的。行,按输入同学的顺序,输出他们的排名。你需要输出每位同学的排名,如遇。注意:hasNext()方法会。StringBuilder相关。1.1不停的读取数据同时处理。,则后一名同学自动成为第。行,每行三个非负整数。1.2读取一行的数据。

2024-06-11 18:34:19 769 1

原创 word格式技巧

假设我们有这样一个需求,论文分为4个部分,封面3页,目录3页,摘要2页,论文正文40页。4.在引用的地方插入,具体引用选项卡–>交叉引用–>选择后插入。论文正文40页页面设为1,2,3,…目录3页页码设为1,2,3,我们要求封面3页不做页码,摘要2页页码设为1,2,1.取消文献原有的编号。

2024-05-07 11:27:01 857

原创 Android studio 无法安装SDK问题解决

在Windows操作系统的hosts文件中添加"203.208.41.97 dl.google.com"这样的条目的作用是将dl.google.com域名解析为IP地址203.208.41.97。当用户在浏览器或其他网络应用程序中输入一个网址时,操作系统会首先查找hosts文件,以确定对应的IP地址。需要修改你的hosts文件:C:\Windows\System32\drivers\etc\hosts。如果上面的ip行不通可以在这里找。在host文件中添加如下内容。这是在进行域名解析。

2024-04-28 08:42:05 756 2

原创 Lambda表达式

函数式接口可以使用Lambda表达式来创建接口实例。函数式接口是指只包含一个抽象方法的接口。如Runnable。}:Lambda表达式的主体部分,类似方法体。->:箭头符号,用于分隔参数列表和Lambda表达式的主体。parameters:参数列表,类似于方法参数。提交一个Runnable实例到线程池。Lambda表达式的形式。

2024-04-13 16:46:44 336

原创 双写一致性问题

2.这时切换到线程2中进行了数据查询操作,线程2未从缓存中查到数据,就从数据库中查到旧数据,并把旧数据存入缓存中,这时线程1把新数据更新入数据库,出现了双写不一致问题。当我们要进行更新操作时,先删除缓存,再更新数据库,延迟几百ms再删除一次redis的缓存数据。3.这时让线程1延迟几百ms后再删一次redis中的缓存。下次查询依旧会从数据库中得到新数据。双写一致性问题:同一份数据,需要写数据库、写缓存。数据库中的数据和缓存中的数据要一致。1.当我们在线程1中进行更新数据操作时,先删除了redis中的缓存,

2024-04-12 13:53:33 337

原创 bean的生命周期

​ BeanPostProcessor后置处理,主要是对bean进行增强,有可能在这里产生代理对象。​ 这个初始化方法可以是处理InitializingBean接口,调用他的接口方法。​ 也可以是XML 配置文件init-method这个属性指定的方法。​ 或@PostContruct注解标注的方法。​ 处理Aware接口,设置相关依赖。:Spring的bean的生命周期。2.bean的依赖注入和属性赋值。​ 调用bean的初始化方法。​ 3.1初始化之前的工作。​ 3.2初始化bean。

2024-04-10 15:06:55 253

原创 数据库面试题

readView,解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。undo log,主要的作用是记录回滚日志,存储老版本数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表。

2024-04-08 18:00:28 867

原创 Redis的三种部署方案

在Redis中提供的集群方案总共有三种:主从同步、哨兵模式、Redis分片集群。

2024-04-02 20:03:03 505

原创 Redission--分布式锁

4.Redission锁的红锁解决分布式锁的主从一致性问题,红锁:在多个redis实例上(n/2 + 1)创建锁,获取锁时要求在多个实例上都能获取锁成功。但这样性能太低了,如果业务中非要保证数据的强一致性,建议采用zookeeper实现分布式锁。,当业务逻辑执行时间超出了锁的过期时间,锁会自动续期,避免了因为业务逻辑执行时间过长而导致锁提前释放。Redission锁提供的看门狗,一个线程成功索取锁后,看门狗会给持有锁的线程续期。3.Redission锁支持等待锁,一个while循环不断等待,能提升性能。

2024-04-02 18:39:04 708

原创 redis的数据淘汰策略

当redis的内存不足时,此时在向redis中添加新的key,redis就会按照某种规则将内存中的数据淘汰。会统计每个key的访问频率,值越小淘汰优先级越高 一定时间内的使用次数。我们在项目设置的allkeys-lru,挑选最近最少使用的数据淘汰,把一些经常访问的key留在redis中。是可以在redis的配置文件中进行设置的,里面有两个非常重要的概念,一个是LRU,另外一个是LFU。LRU的意思就是最少最近使用,用当前时间减去最后一次访问时间,这个值越大则淘汰优先级越高。

2024-04-02 17:31:44 377

原创 Redission--布隆过滤器解决缓存穿透问题

添加 Redission 依赖:首先需要将 Redission 添加到你的 Java 项目中,你可以通过 Maven 来添加 Redission 的依赖。创建 Redission 客户端:在代码中创建 Redission 客户端,连接到 Redis 服务器。使用Redission的布隆过滤器步骤。布隆过滤器在缓存穿透问题中的使用。布隆过滤器的核心是一个位数组。

2024-04-02 15:41:18 548

原创 stlink烧录器怎么接

2024-03-30 22:04:04 124

原创 用USB转TTL下载器将固件烧写到STM32F103C8T6最小系统板中

2.下载ch340驱动。3.下载flymcu。

2024-03-30 18:51:04 746

原创 LED和蜂鸣器和面包板

长脚正极,短脚负极,正向通电亮,反向通电不亮。

2024-03-30 16:05:44 380

原创 新建stm32工程

project–>new uversion project–>选择存放所有stm32工程的目录(没有自建)–>新建本次工程的目录,选择本次工程的目录–>给工程文件起名,保存–>选择器件支持包。基于寄存器开发的工程,基于标准库函数方式开发,基于hek。编码格式调为UTF8,还有下面tab size改为4较好。

2024-03-30 15:25:41 221

原创 keil安装器件支持包

2.点击检查更新,下方有进度条,他会安装keil支持的所有器件支持包所以比较慢。

2024-03-30 11:19:23 848

原创 git基本使用

前提是你已经配置了 SSH,并且你的公钥已经添加到了你的 GitHub 或者 GitLab 账户中。通常情况下,如果你没有配置 SSH 或者你想直接从网页上复制仓库的 URL 进行克隆,可以选择这种方法。你可能需要输入用户名和密码来验证你的权限。git存在两种类型的仓库,本地仓库和远程仓库,常用的远程仓库有github,gitee,gitlab,公司中一般用gitlab需要自己搭建。无论你选择哪种方法,一旦克隆完成,你都会得到一个包含了远程仓库所有文件的本地副本,你可以在本地进行修改、提交和推送。

2024-03-29 17:06:09 760

原创 使用三级缓存解决bean创建过程中的循环依赖问题

实际上二级缓存就能解决问题,但是很多时候我们用到的不是真正的对象,而是代理类的对象,因为依赖注入先发送,创建代理对象后发生,此时用二级缓存Bean中注入的不是代理类对象,而是真正的对象,这样肯定不行,我们还指望用代理对象进行功能增强呢。因为bean的创建存在先后,创建beanA时依赖注入BeanB,但BeanB还没创建,我们就回去创建BeanB,但是BeanB又需要依赖注入BeanA,就会造成死循环。1.判断一级缓存中是否存在beanA,存在直接返回,不用再创建了。以类A为例,我们创建类A的bean。

2024-03-27 20:21:25 226

原创 静态代理,jdk动态代理,cglib动态代理

代理模式就是用代理对象代替真实对象去完成相应的操作,并且能够在操作执行的前后对操作进行增强处理。

2024-03-26 20:32:03 321

原创 一个切面类的定义

【代码】一个切面类的定义。

2024-03-26 18:05:34 141

原创 spring中的Singleton Bean(单例bean)是否为单例模式

单例模式的目的:确保一个类只有一个实例,并且提供一个全局的访问点(Ensure a class only has one instance, and provide a global point of access to it)singleton bean 只能保证每个容器内,相同 id 的 bean 单实例,所以他不是单例模式,spring中同一个类可以有多个id不同的bean实例。注入这个类的Bean,每次注入spring容器都会创建一个新的实例。定义一个类,Scope设置为prototype。

2024-03-26 16:32:49 711

空空如也

空空如也

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

TA关注的人

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