- 博客(111)
- 资源 (1)
- 收藏
- 关注
原创 com.alibaba.fastjson.JSONException: toJSON error的原因
第一个参数为HttpResponse,转换成json的时候报错。2.在aop判断里边 把ServletAPI过滤掉。导出接口报错,显示json格式化异常。1.调换两个参数的位置。
2024-02-19 15:32:19 1152
原创 凤凰架构之事务处理
从应用角度看,它是直接依赖于数据源本身提供的事务能力来工作的,在程序代码层面,最多只能对事务接口做一层标准化的包装(如 JDBC 接口),并不能深入参与到事务的运作过程当中,事务的开启、终止、提交、回滚、嵌套、设置隔离级别,乃至与应用代码贴近的事务传播方式,全部都要依赖底层数据源的支持才能工作,这一点与后续介绍的 XA、TCC、SAGA 等主要靠应用程序代码来实现的事务有着十分明显的区别。这种恢复方式不需要补偿,适用于事务最终都要成功的场景,譬如在别人的银行账号中扣了款,就一定要给别人发货。
2023-12-20 10:48:45 1442 1
原创 解决maven报错 ‘parent.relativePath‘ of POM
子模块的parent写的不是父模块,而是继承了springboot。
2023-12-13 17:01:28 2068
原创 Java集合知识总结
Java集合框架中的fail-fast机制是一种错误检测机制,它用于在迭代集合的过程中检测并抛出并发修改异常。当多个线程对同一个集合的内容进行操作时,可能会产生并发修改异常。例如,当一个线程正在通过迭代器遍历集合的过程中,如果该集合的内容被其他线程修改了,那么迭代器就不再合法,发生fail-fast事件,会抛出ConcurrentModificationException异常。这种机制一般仅用于检测bug,而不是用于处理并发修改的情况。
2023-11-27 14:32:35 245
原创 网络编程相关面试题
TCP协议的三次握手是建立TCP连接的重要步骤。第一次握手:客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包后,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。此包发送完毕后,客户端和服务器进入ESTABLISHED状态,完成三次握手。
2023-11-27 13:16:24 234
原创 微服务知识小结
Eureka:服务注册与发现组件,可以通过RESTFUL接口来实现服务注册与发现,并提供心跳检测机制来保证服务可用性。Ribbon:客户端的负载均衡组件,可以集成到RestTemplate、Feign等HTTP客户端中使用。Feign:基于Ribbon和Hystrix的声明式服务调用组件,可以让我们更方便地实现服务之间的调用。Hystrix:熔断器组件,可以在服务出现故障或异常时进行自动熔断,避免服务雪崩问题。Zuul:API网关组件,可以对外部请求进行统一的路由、过滤和转发。
2023-11-23 11:30:16 609
原创 常见的电商模式
B2C(business to consumer),商对客模式,商业零售。如:苏宁易购,京东,天猫,小米商城。O2O(online to offline),让互联网成为线下交易的前台。如:饿了么,美团,叮咚买菜,京东到家。C2B(consumer to business),即消费者对企业。消费者提出需求,企业按需求生产。C2C(consumer to consumer),客户之间自己把东西放到网上去卖。B2B(business to business),是指商家与商家建立的商业关系。
2023-11-23 10:50:51 93
原创 常见的 JVM 面试题
JVM(Java Virtual Machine)是 Java 虚拟机的缩写,它是 Java 语言的核心和关键。JVM 是一种能够执行 Java 字节码的虚拟计算机,它在实际的计算机上模拟了一个完整的计算机系统,包括处理器、内存、寄存器等。在 Java 程序运行时,Java 编译器将 Java 代码编译成字节码,JVM 将这些字节码解释执行或者编译执行,并负责管理程序的内存、线程、垃圾回收等方面。
2023-06-28 10:37:11 943
原创 React知识整合
React是一个用于构建用户界面的JavaScript库,由Facebook开发。它的核心特点包括:组件化:React将用户界面分解为可重用的组件,并提供了一种简单的方法来构建和组合这些组件。虚拟DOM:React使用虚拟DOM来跟踪页面上所需的更改,然后在必要时更新实际DOM以反映这些更改。这可以减少对实际DOM的操作次数,从而提高性能。单向数据流:React中的数据流是单向的,即数据从父组件传递到子组件,子组件不能直接修改父组件的数据。这使得代码更易于维护和调试。
2023-06-25 11:37:00 630
原创 kafka常见面试题
Kafka是一种分布式流处理平台,最初由LinkedIn开发,用于处理大量实时数据的传输和存储。它是一个高性能、高吞吐量的消息队列系统,可以在多台服务器之间分布数据,并提供了水平扩展能力,以支持大规模的数据处理应用。Kafka能够快速处理大量数据,支持实时数据流处理,同时也具有很好的可扩展性和容错性,因此被广泛应用于日志收集、事件处理、消息传递等场景。
2023-06-20 14:40:10 1015
原创 Java序列化
serialVersionlUID变量其实是一个静态的long型的常量,它的作用在序列化和反序列化的过程中,起到了一个辨别类的作用。java.io.Serializable接口是可以进行序列化的类的标志性接口,该接口本身没有任何需要实现的抽象方法,它仅仅是用来告诉JVM该类的对象可以进行反序列化的,并且它的序列化ID由静态的serialVersionlUID变量提供。序列化,又称为“串化”,可以形象的把它理解为把Java对象内存中的数据采编成一串二进制的数据,然后把这些数据持久化到内存或磁盘。
2023-04-27 11:31:52 541 1
原创 解决Oracle使用in语句不能超过1000的问题
Java中按1000分批查询,再把结果加起来,这种方式稍复杂,而且查询次数过多,对业务逻辑改动较大。
2023-03-28 10:06:13 820
原创 Spring中@NotNull、@NotEmpty、@NotBlank和@PositiveOrZero注解的使用
校验集合类参数(如String类、Collection、Map、数据Array)不能为null或empty。其中String的length、Collection和Map的size不能为0。校验String字符串不能为null,且不能是空字符串(” "),即调用trim()之后字符串的长度不能为0。校验参数一定不能为null,但是可以为" “。校验参数必须是正整数或0。
2023-03-28 09:47:25 791
原创 并发编程知识
解决办法:1.缓存空值的key,即使数据库中不存在这个值,第一次加载的时候也会 被记录,拿到这个key,使用布隆过滤器进行数据过滤,如果布隆过滤器中没查到这个数据,就并不会去数据库中查找;缓存雪崩:大量并发请求缓存中的多个key,这些key在缓存中同时失效,导致批量请求打到数据库上,造成数据库压力过大甚至宕机。AOF:将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序将指令都执行一遍,以日志追加的方式将数据持久化。例如:行锁,表锁,读锁,写锁,synchronized关键字的实现原理。
2023-03-27 22:49:24 350
原创 Spring知识整合
它主要就是通过内部的方法,扫描classpath的META-INF/spring.factories配置文件(key-value),将其中的。session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护;
2023-03-27 17:41:16 906
原创 Redis知识整合
数据集快照的方式半持久化模式记录,父进程先fork一个子进程,子进程进行写操作,完成后再同步到父进程,保证了redis的 高性能;大量的key过期时间过于集中,过期时容易出现短暂卡顿现象,一般需要在时间上加一个随机值,使过期时间分散一些。volititle-lru:从已设置过期时间的数据集中淘汰最近最少使用的数据。volititle-ttl:从已设置过期时间的数据集中淘汰将要过期的数据。allkeys-ttl:从全部的数据集中淘汰将要过期的数据集。高性能,丰富的数据类型,原子,丰富的特性。
2023-03-23 17:32:59 360
原创 JVM知识
内存泄漏(Memory Leak)是指本来无用的对象却继续占用内存,没有再恰当的时机释放占用的内存。由程序代码自由分配的内存,与栈内存做区分,在Java中堆内存主要用于分配对象的存储空间。CMS垃圾收集器 -XX:+UseConcMarkSweepGC。分为:新生代,存活区,老年代(新生代+存活区=年轻代)并行垃圾收集器 -XX:+UseParallelGC。串行垃圾收集器 -XX:+UseSerialGC。收集不同的指标(cpu,内存,磁盘IO,网络等等)5.内存溢出(OOM),内存泄漏。
2023-03-22 15:53:59 294
原创 Git 与 SVN 区别
Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。Git 与 SVN 区别点:1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
2022-11-04 17:52:46 744
原创 Java面试题三
如何保证 Redis 中的数据都是热点数据?Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。Redis 提供 6 种 数据淘汰策略:volatile-lru:(less recently used)从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的 数据淘汰volatile-ttl:(time to live)从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据 淘汰volatile-random:从已
2022-09-26 17:44:58 326
原创 Git_Github操作
6.1 Git_Github_创建远程库和创建别名Git_Github_推送本地库到远程库Git_Github_拉取远程库到本地库6.2.3 Git_Github_克隆远程仓库到本地Git_Github_团队内协作需要先加入团队Git_Github_跨团队协作找到要修改的项目,fork一个子进程commit到本地库pull request 推送到远程仓库–>new pull requestGit_Github_SSH免密登录C:\Users\用户名xxx
2022-03-30 10:33:30 890
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人