- 博客(113)
- 问答 (10)
- 收藏
- 关注
原创 Java 8 Lambda表达式详解
总的来说,Java 8的Lambda表达式为我们的编程提供了一种新的、简洁的方式。它改变了Java的面向对象编程方式,带来了函数式编程的可能。这是Java语言的一大进步,使得我们在处理一些特定的问题时,可以编写出更简洁、更优雅的代码。然而,也要注意到,尽管Lambda表达式有很多优点,但它并不适合所有的场景。例如,如果一个方法的逻辑非常复杂,那么使用传统的方法可能会更好,因为这样的代码通常更易于理解和调试。因此,合理地使用Lambda表达式,可以使我们的代码变得更好。
2023-06-13 23:09:19
839
原创 Linu环境下替换jar中的class文件
mkdir -p BOOT-INF/classes/com/alibaba/ipi/portal/provider/dubbo/provider/implcp aa.class BOOT-INF/classes/com/alibaba/ipi/portal/provider/dubbo/provider/impljar -uf alibaba-portal-provider-1....
2023-06-08 09:11:00
234
原创 Dubbo远程调用在IDEA无法打断点怎么破
以下是如何在IDEA中在Dubbo的分布式环境中设置远程调试的步骤:1、首先,你需要在启动提供者服务时,加入一些JVM参数以开启调试服务。这些参数应该在你的启动脚本或者命令中。以下是一个常见的示例:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005这行命令开启了调试,并设置了远程调试端口为5005...
2023-06-06 15:00:00
286
原创 【Spring】三级缓存解决循环依赖问题
1、什么是循环依赖 顾名思义“循环依赖”,举一个简单的例子A中依赖B,B中依赖A,在实例化对象过程中,填充属性阶段A需要B对象,就去创建B对象,创建B对象的时候,发现B依赖了A,于是又去创建A对象,但此时A对象又没有创建结束,一级缓存中找不到,于是线程又去创建一个新的A对象,如此一来,就出现了重复创建的现象,最终会导致内存溢出,JVM报错终止。2、解决方案 直接说Spring的...
2023-04-23 11:13:00
163
原创 Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?...
索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降。为此,可以采取以下几种方式来减缓这种影响:1. 限制索引的大小:可以考虑为索引指定大小限制,在存储时仅存储指定大小内的数据。例如,在创建索引时可以使用“INDEX col_name(length)”的语法,其中length表示应该存储的字符数。这样...
2023-04-23 10:48:00
472
原创 确保Redis缓存一致性的N种方法
确保Redis缓存一致性的N种方法1、及时失效法当程序需要update该数据时,先更新数据库数据数据,若数据库update成功,则重新为Redis该key值设置一个极短的过期时间,当过期之后,下一个请求自然会去数据库获取最新版本的数据2、互斥锁当程序需要update数据时,更新完数据库,再去更新缓存,当然这里会有一个逻辑漏洞:A线程在update数据时,刚擦除缓存。还没来得及写入缓存,此...
2023-04-21 21:53:00
922
原创 聊一下你对拦截器、过滤器的认识
Java 中的拦截器和过滤器都是常见的用于拦截和处理系统请求的技术手段,它们的主要作用是在系统的关键点上增加通用的处理逻辑,以达到代码的复用和系统的解耦等目的。相同点:- 都可以对请求进行拦截和处理,增加通用的处理逻辑。- 都可以实现系统的安全控制、日志记录、性能优化、缓存控制等功能。- 都可以通过配置来使用,灵活性高,易于维护和扩展。不同点:- 拦截器通常针对于应用程序级别的请求处理,例如...
2023-04-21 21:52:00
44
原创 Java中处理高精度数据计算
1、为什么要使用高精度计算拿整数举例:在 Java 中,int 和 long 是两种基本数据类型,而 BigInteger 是一个对象类型。它们的取值范围如下:- int:32 位有符号整数,取值范围为 -2^31 ~ 2^31-1 (即 -2147483648 ~ 2147483647)。- long:64 位有符号整数,取值范围为 -2^63 ~ 2^63-1 (即 -92233...
2023-04-21 21:49:00
202
原创 为什么一个对象重写了equals必须也重写hashCode
一言以蔽之:重写 equals 方法是为了比较对象的内容是否相等,重写 hashCode 方法是为了保证对象在哈希表等数据结构中的正确性。1、在 Java 中,如果一个类重写了 equals 方法,则必须同时重写 hashCode 方法。这是因为在 Java 中,对象的 hashCode 值用于在哈希表(Hash Table)等数据结构中进行快速查找,而哈希表的实现原理是根据对象的 hash...
2023-04-02 20:16:00
57
原创 详解mysql隔离级别
MySQL 隔离级别是指在并发环境下控制并发访问数据的一种机制,它可以保证多个事务同时对数据库进行访问时,数据的正确性和一致性。MySQL 支持四种隔离级别,分别是 READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交)、REPEATABLE READ(可重复读)和 SERIALIZABLE(串行化)。本文将分别介绍这四种隔离级别的特点、优缺点和应用场景,帮助读者...
2023-04-02 19:39:00
81
原创 请编写一个程序,使用两个线程分别输出数字和字母,要求输出的结果为:1A2B3C4D5E6F7G8H9I10J。...
请编写一个程序,使用两个线程分别输出数字和字母,要求输出的结果为:1A2B3C4D5E6F7G8H9I10J。提示:可以使用Java中的wait()和notify()方法来实现线程间的通信。public class NumberLetterPrinter { // 定义一个静态的锁对象 private static final Object lock = new Objec...
2023-04-02 13:16:00
115
原创 关于 join、not exists、not in的用法和性能差异
好的,以下是关于JOIN、NOT EXISTS和NOT IN的用法和性能差异的长总结:1. JOINJOIN是将两个或多个表中的行连接起来形成一个新的表的操作,通常使用JOIN可以比使用NOT EXISTS和NOT IN更高效。使用JOIN时,可以选择INNER JOIN、LEFT JOIN、RIGHT JOIN等不同类型的JOIN操作符,根据需求来选择合适的JOIN类型。内连接(INNE...
2023-03-22 23:07:00
253
原创 针对一个数组的排序,面试官会这样问
问:你写一个排序算法吧,顺便说一下其他的方式,可以吧?题目:对数组 {1,3,6,1,8,22,0,1}进行排序答: public static void main(String[] args) { String[] arr = {"1", "1", "7", "3", "9", "11", "7"}; Arrays.sort(arr); ...
2023-02-07 22:26:00
37
原创 定制Mybatis拦截器开发【含源码追溯】
1、需求分析需求:在代码层面获得Mybatis执行的SQL,修改SQL,并执行修改后的SQL方案:Mybatis 拦截器:注意:添加拦截器后,会拦截所有的方法思考:其实拦截器就等同于Spring的AOP编程细粒度:Mybatis框架中,sql最后都会交给Sqlsession执行,拦截器拦截的其实就是:1、Executor执行阶段2、ParameterHandler参数处...
2022-01-14 15:57:00
53
原创 剖析ApplicationRunner、CommandLineRunner
需求:SpringBoot项目启动成功后执行某方法方案:在spring-boot中提供了两种Runner接口:ApplicationRunner和CommandLineRunner,编写自己的类实现这两种接口的run方法,均可实现需求 不同的是实现的两个run方法接收的参数不同,这也是他俩唯一的不同, ApplicationRunner 接收的是 Appl...
2021-12-06 10:45:00
64
原创 jdbcType使用错误导致mapper注入失败,导致项目启动失败
项目突然起不来..Cause: org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.DATETIME怀疑包扫描路径扫描...
2021-11-30 11:13:00
86
原创 swagger文档遇到For input string: ""报错
打开文档时遇到 java.lang.NumberFormatException: For input string: "" 的异常,原因是swagger文档上每个参数都会设定一个默认值,包装类型的默认值是"",所以会出现转换异常。2020-09-05 11:38:24.040 WARN 6484 --- [ XNIO-1 task-4] i.s.m.p.AbstractSerializa...
2021-11-26 09:39:00
139
原创 NFS + Nginx搭建小型文件服务器(实现上传和下载)
一、需求分析:所有文件均存储在A服务器目录下,实现文件的上传下载。 代码部署在C服务器,A服务器共享目录给C服务器,实现文件的上传;B服务器挂载A服务器目录,借助Nginx代理实现Http方式的文件下载。二、网络流程图: 三、具体实施:1、实现上传A服务器相关配置①A服务器安装NFS服务yum install nfs-utils# 修改配置...
2021-11-18 14:36:00
131
原创 把Jar包打包为docker镜像
使用Dockfile来创建镜像试验的jar包是用httpServer写的一个简单web服务,访问/test就返回helloworld,下面先拉取一个java:8的基础镜像:docker pull java:8,再用docker images检查一下:下面是Dockfile的内容:FROM java:8MAINTAINER xxxCOPY httpServerDemo.jar /u...
2021-11-11 14:49:00
54
原创 【设计模式】单例
单例模式(Singleton Pattern)是 Java 中名气最大的设计模式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。什么是创建型模式?请看下图组件的生命周期分为4个阶段的话,那么单例就属于组件的创建阶段的一种模式。应用实例:方式1:懒汉式,线程不安全public class Singleton { private static Singleton instance; private Singleton (){} ...
2021-08-29 11:23:29
166
原创 no matching manifest for linux/arm64/v8 in the manifest list entries
M1芯片Mac环境下,安装docker,pull mysql 的时候no matching manifest for linux/arm64/v8 in the manifest list entries解决方案:docker pull --platform linux/x86_64 mysql
2021-08-14 19:25:41
691
原创 org.apache.maven.model.building.ModelBuildingRequest.setRawModel
java.lang.NoSuchMethodError:'org.apache.maven.model.building.ModelBuildingRequest org.apache.maven.model.building.ModelBuildingRequest.setRawModel(org.apache.maven.model.Model)'升级idea版本到2021.1之后新建项目或者原有的项目报错,更新一个maven版本即可。使用3.6.3之后就没有报错了。下载完新版本的ma...
2021-08-03 13:23:21
2000
转载 POI3.17与POI旧版本对比
最近使用EasyExcel写导入导出Excel,需要POI版本是3.17,之前是3.9,必须升级jar包,升级之后发现很多代码报错,需要修改调整,以下用于记录调整的代码。颜色定义变化旧版本 : HSSFColor.BLACK.index新版本 : IndexedColors.BLACK.index获取单元格格式旧版本 : cell.getCellType 与之应对的单元格格式 HSSFCell.CELL_TYPE_BLANK新版本 : cell.getCellTypeEnum 与之对应的单
2021-07-28 15:22:04
1283
原创 【并发】Java中为什么notify()可能导致死锁,而notifyAll()则不会(针对生产者-消费者模式)
1、先说两个概念:锁池和 等待池锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。 等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池中2、然后再来说notify和notifyAl...
2021-07-20 10:08:35
892
转载 Java工资技术地图,照这个学,你可以的
JAVA初级工程师 9k-15k 一般是1-3年的经验要求:掌握JAVA基础,spring springmvc mybatis servlet restful,webservice,h5 css3 JavaScript jquery angular vue。常用的服务器技术:tomcat,apache nginx。git maven redis dubbo zookeeper同时还有 多线程,设计模式,JAVA io nio网络方面:tcp,udp,nettyJAVA中级工程师 15k-25k
2021-07-18 23:10:50
94
原创 20道Java实习生笔试面试选择题(内附答案解析)
1、以下对继承的描述错误的是(A)A.Java中的继承允许一个子类继承多个父类B.父类更具有通用性,子类更具体C.Java中的继承存在的传递性D.当实例化子类时会递归调用父类中的构造方法解析:众所周知,JAVA类只支持单继承,一个子类只允许集成一个父类, 但是Java通过一个接口可以继承多个接口解决了这个问题, 就好比一个儿子只能继承他的亲生父亲的财产,但是概念上的“儿子”却可以逾越道德的鸿沟认很多干爹 一旦哪个儿子实现了这个概念上的“儿子”,那么他就..
2021-07-14 23:18:07
7437
2
原创 【源码分析】- SpringBoot 处理http请求映射原理
举例 发一个请求测试一般请求和首页请求看代码 打断点引入handler 处理器 根据路径和请求方式
2021-06-24 23:11:31
342
原创 【源码分析】- 在SpringBoot中你会使用REST风格处理请求吗?
工作中面试中,我们总能提到REST风格的请求提交和处理?但是你真的会使用它吗?你知道它真正的形式吗?知道怎么去修改底层配置吗?是不是在繁杂的业务代码中早就迷失了呢?
2021-06-23 21:35:42
350
2
原创 【源码分析】 - SpringBoot 自动配置原理
1、@SpringBootConfiguration@Configuration。代表当前是一个配置类2、@ComponentScan指定扫描哪些,Spring注解;3、@EnableAutoConfiguration
2021-06-20 20:20:20
134
2
原创 【并发】记一次项目中解决 -- 并发减库存超卖问题过程(Java)
起因项目中要做预约功能,首先每天的余票都是有上限的,自然不能出现超卖的情况解决过程一波三折解决方案思考
2021-06-20 13:14:06
1217
原创 SpringBoot框架的优点
1、创建独立的Spring应用2、内嵌web服务器3、自动starter依赖,简化构建配置4、自动配置Spring以及第三方功能5、提供生产级别
2021-06-14 14:10:32
9093
13
原创 SprignBoot中的一些小知识点(二)
1、SpringBoot 集成SpringMVC 底层,表单提交REST风格请求,后端GET/POST/PUT/DELETE 四种方式处理细节首先,前端表单只能发起 GET 和 POST 请求,但后端四种请求均可处理。那么前端如何发起DELETE 和 PUT 请求呢?如下图所示,四种请求,在后端不作任何配置的情况下,同样是 /user 路径,get 和 post 能找到对应的后端请求,但是 delete 和 put 却都跑到了 后端的 get 请求里面我们看一下SpringBoot.
2021-05-23 11:58:25
282
原创 SprignBoot中的一些小知识点(一)
1、@Configuration 的 proxyBeanMethods 属性,是不是代理bean的方法。 proxyBeanMethods 属性默认为true,则为代理bean,且代理bean中的方法。所以,无论获取多少遍该配置类或者该配置类中的方法,均为单例。 若为 false,则Spring容器中不会保留该配置类的dailiduixi9ang,每次获取的配置类对象不同,方法也不同。 总结:配置类组件之间无依...
2021-05-21 15:55:25
200
1
原创 mac 终端木有 ll 命令
新mac没有在终端执行ll命令:zsh: command not found: ll在根目录创建 .bash_profile 文件新增内容 alias ll='ls -alF'同目录下并执行 source .bash_profile,会暂时生效但是重启mac终端窗口,再执行 ll 又是:zsh: command not found: ll解决方案:根目录下创建.zscrc 文件touch .zshrc新增内容:vim .zshrcsource ~/.bas.
2021-05-13 09:58:37
814
原创 Java 开发 Mac必备软件,百度网盘资源下载
链接: https://pan.baidu.com/s/1aYcjaz73KD13Bt8h1PC9CQ 密码: ebop
2021-05-11 11:13:24
590
转载 Linux环境下搭建FastDFS文件管理系统
目录一、FastDFS介绍2、FastDFS的存储策略3、FastDFS的上传过程4、FastDFS的文件同步5、FastDFS的文件下载二、安装FastDFS环境0、前言1、下载安装 libfastcommon2、下载安装FastDFS3、配置FastDFS跟踪器(Tracker)4、配置 FastDFS 存储 (Storage)5、文件上传测试三、安装Nginx1、安装nginx所需环境 2、安装Nginx3、访问文件四、FastDF
2021-04-28 15:08:47
436
原创 wget 经常无法正常安装?什么鬼
执行:yum -y install wgetPackage wget-1.14-18.el7_6.1.x86_64 already installed and latest versionNothing to do
2021-04-27 11:13:40
783
空空如也
Java大数据开发技术栈收集
2022-08-05
关于sharding分表的疑问
2022-06-07
当面对大数据量web应用时,我的Mysql数据库架构该如何设计?
2022-05-08
mysql 左关联用索引优化
2022-04-25
【Mysql 多表关联优化】
2022-04-23
Java & Mysql 百万数据从一个系统迁移到另一个库,求优化策略
2022-04-20
catalina.out 文件越来越大怎么办?
2022-04-20
zuul网关报超时的错误
2021-07-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人