- 博客(70)
- 收藏
- 关注
原创 使用easypoi和原生poi接口实现导出excel时控制复选框选中或不选中
**工程需求:**导出excel时,设置复选框选中或不选中**解决方案:**使用excel模板导出,在模板中设置复选框的值true/false,来设置选中或不选中步骤一:插入复选框此时点机复选框,就可以设置选中或不选中,但是我们希望通过java接口来操作步骤二:为复选框设置单元格连接此时点机复选框为选中/不选中,链接的单元格的值也会变为true/false修改链接复选框的值为true或...
2019-07-12 19:16:22
9461
原创 XXX三面
- 对策:以上每个能力需要去了解对应的方法论,再结合实际工作来解答。3、您在这份工作中的贡献和角色?比如你来了之后业绩变化提示了多少?5、你工作中遇到过哪些棘手或困难,你的处理方式是怎样的?-- 对策:结合工作/生活的实际案例解答,不能直说理论。6、你热爱的事,为他做了什么,有什么成果?1、为什么选择XX?你对我们有什么了解?4、上一份工作中您遇到的最大困难是什么?3、你与团队、企业文化的契合度。2、遇到冲突怎么解决?7、谈谈你的工作经历。
2026-03-28 11:44:03
193
原创 JVM堆内存查看命令
jstat -gcuil -h20 pid 1000jmap -histo pid | head -n20jmap -dump:format=b,file=heap_pid
2026-03-22 16:19:02
44
原创 网络IO模型?什么是多路复用IO?select和epoll 的差别?
- 1024 -- 需要遍历fd集合,才能找到就绪的描述符。如果涉及到IO操作,那么当前的线程不会被阻塞,而是会去处理其他业务代码,然后等过段时间再来查询 IO 交互是否完成。在Linux中,操作系统提供了select、poll 和 epoll 三种 IO多路复用机制。实际使用场景:在Java中使用线程池的方式去连接数据库,使用的就是同步阻塞IO模型。poll机制:和select差不多,需要遍历fd集合,才能找到就绪的描述符。同步非阻塞 IO-NIO(New IO)同步阻塞IO-BIO。
2026-03-19 16:08:52
34
原创 java死锁排查
思路:主要依靠命令行工具 jstack;先通过jps找到进程ID (PID),然后执行 jstack -l <PID>然后根据deadlock关键字搜索:这里可以看到有两个线程相互等待锁。>>> 先使用jps找到java的进程号。
2026-03-19 14:26:16
31
原创 java面试题总结2
当检测到逻辑过期时,尝试获取分布式锁,由拿到锁的线程去更新缓存,其他线程直接返回旧数据(短暂的脏读),保证系统可用。缓存空对象: 即使数据库查询结果为空,也在缓存中设置一个空值(例如 null 或特殊标识),并设置一个较短的过期时间(如30-60秒)。添加图形验证码:用户发送短信前,需要先输入正确的图形验证码,或拖动验证码等验证,验证通过之后,才能正常发送短信验证码。兜底:同时保留一个定时任务(频率可以很低,比如每小时跑一次),扫描那些因为各种原因(如MQ消息丢失、消费失败)漏掉的订单,进行状态补偿。
2026-03-17 21:54:46
185
原创 java面试题整理
4、分布式的cap了解么,分别指什么?当线程获取资源失败时,AQS会将当前线程以及等待状态等信息构造成一个节点(Node),并加入队列的尾部,同时阻塞该线程。核心数据结构:过期字典 -- Redis在保存Key-Value的内存结构之外,额外维护了一个字典,称为过期字典,Value:是一个long类型的整数,保存了该Key的精确过期时间。操作 --------------> try(预留资源) --------------> Confirm(确认) --------------> Cancel(取消)
2026-03-17 15:06:31
199
原创 [算法][力扣110]平衡二叉树
分析: 平衡二叉树的任意节点的左右子树高度差(平衡因子)绝对值不超过1。给定一个二叉树,判断它是否是 平衡二叉树。
2026-03-16 15:03:19
30
原创 [算法][力扣226]翻转一颗二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。方式一:递归,自底向上。方式二:递归,自顶向下。
2026-03-14 12:12:45
555
原创 [算法][力扣219]存在重复元素2
满足 nums[i] == nums[j] 且 abs(i - j) <= k。如果存在,返回 true;否则,返回 false。给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,输入:nums = [1,2,3,1,2,3], k = 2。输入:nums = [1,2,3,1], k = 3。输入:nums = [1,0,1,1], k = 1。解法二:使用Map,记录每个元素的值和位置。解法一:双重for循环。
2026-03-13 18:10:09
37
原创 [算法][力扣242]有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。输入: s = "anagram", t = "nagaram"输入: s = "rat", t = "car"解法二:使用HashMap统计每次字符出现的次数。解法三:使用数组统计字符个数。
2026-03-13 16:59:21
32
原创 [算法][力扣350]两个数组的交集2
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]
2026-03-13 15:59:14
16
原创 [算法][力扣3]无重复字符的最长子串
我们可以使用一个数组,这个数组一共有125个位置,freq[k]存储的anscal为k相应的字符他在子串中出现的评率,如果为0就是没有重复,为1就是重复了。解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: s = "abcabcbb"
2026-03-13 14:58:18
19
原创 [算法][力扣209]长度最小的子数组
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。给定一个含有 n 个正整数的数组和一个正整数 target。
2026-03-13 13:08:55
17
原创 [算法][力扣167]Two Sum II
给定一个有序整型数组和一个整数target,在其中寻找两个元素,使其和为target。返回这两个数的索引。思路二:对撞指针,即用两个指针,left = 0, right = length - 1从两边出发。1、如果 sum == target,则成功找到目标数据。2、如果 sum > target,则right --target和两个指针的和(sum)对比,分三种情况。3、如果 sum < target,则left++思路一:使用暴力解法,两重for循环。
2026-03-13 12:28:16
34
原创 [算法][力扣75]Sort Colors
给定一个有n个元素的数组,数组中元素的取值只有0, 1, 2三种可能。思路:计数排序,先统计每个数的数量,再依次放回原数组中。
2026-03-13 11:40:27
18
原创 [算法][力扣283]Move Zeros
给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,而维持其他所有非0元素的相对位置。解法一:统计法,先统计非0的数,把非零的数放到数组前,然后后面的位置设置为0。解法二:使用两个指针。
2026-03-13 11:05:56
32
原创 Java面试题整理01
2、高效的 I/O 模型 (I/O Multiplexing & Single-Threaded Event Loop) :Redis 使用单线程事件循环配合 I/O 多路复用技术,让单个线程可以同时处理多个网络连接上的 I/O 事件(如读写),避免了多线程模型中的上下文切换和锁竞争问题。3、设计层面,重构,数据分配处理/分配查询。需要获取多个数据源交集、并集和差集的场景:共同好友(交集)、共同粉丝(交集)、共同关注(交集)、好友推荐(差集)、音乐推荐(差集)、订阅号推荐(差集+交集)等等。
2026-03-12 09:30:59
204
原创 JVM面试题(一)
2.新生代 又被划分为:Eden、From Survivor(From区)和To Survivor(To区)三个区域,默认情况下其中 Eden 区占8/10 的新生代空间,from 和to 占 1/10 的新生代空间.(Eden: from : to = 8 : 1 : 1)Major GC/Full GC:一般会回收老年代 ,年轻代,方法区的垃圾,Major GC的速度一般会比Minor GC的慢10倍以上。第4步,使用jstack命令查找线程的运行轨迹,可以直接看到死循环的代码的问题。
2026-03-07 20:28:40
209
原创 银行场景面试题 (java)
1、在执行任务前,先在数据库或缓存中记录任务执行的状态,当一个服务器开始执行任务时,将任务状态设置为“进行中”,其他服务器在执行任务之前先查询任务状态,如果任务状态为“进行中”,则放弃任务执行。方向一:1、对比数据条数(可能是插入数据存在跨天的情况)、(分布式事务导致的问题:对比两个系统的交易条数差集,你有我无,我无你有的数据)、分析统计算法是否一样(是否包含了手续费,是否只统计了成功的交易)日志分析:聚合日志平台,搜索error级别的日志,看看能不能看出问题,比如:空指针异常、数据校验不通过?
2026-03-05 11:43:50
309
原创 Java面试(三)
/ 等价于 String str4 = new StringBuilder().append(str1).append(str2).toString();CountDownLatch : 当前线程调用await()进入阻塞状态,等待其他指定数量的线程调用countDown()方法之后,当前线程才会继续执行。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。CyclicBarrier 是一群线程等待,等待到指定的数量时,一起执行各自的代码。
2026-03-04 16:51:04
235
原创 redis实现分布式锁注意事项
解决方案2:设置过期时间和抢占锁这两步需要是原子操作,不能一个成功一个失败,只能同时成功或同时失败, redis支持使用setnx ex命令 ---> set k111 v111 EX 300 NX -- EX 300表示过期时间300秒,NX表示不存在数据才会插入,可以使用ttl k111查看锁的时间。问题4:删除锁时,如果判断是当前用户的锁,下一步正要删除锁的时候,删除之前之前锁已经过期,别人已经设置到了新的值。Redis锁的时间,可以设置长一点,避免锁过期了业务还没执行完,也可以给锁续期。
2026-03-02 17:19:42
279
原创 Java实现快速排序(一)单路快排
这里的L为第一个元素,之后遍历L右边所有没有被访问的元素,在遍历的过程中,我们将逐渐的整理整个数组,使得一部分元素大于v,一部分元素小于v;接下来我们来看i这个位置的元素e,当前的元素e究竟要怎么变化,才能使得整个数组还保持这样的性质,分两种情况讨论。遍历完成之后的数组如下:此时整个数组被分成了三部分,红色部分是元素V,橙色部分的元素小于V,紫色部分的元素>V。如果e < v,此时需要把e放入橙色的部分,j后面的元素(紫色元素j+1)和e元素交换,然后j++这样,4之前的数都比4小,4之后的数都比4大。
2026-02-28 17:00:39
246
原创 PG数据库,Mybatis实现批量插入数据(常用三种方案)
常见有三种实现方案表结构:CREATE TABLE test01 ( id varchar(64) NOT NULL, "name" varchar(64) NULL, CONSTRAINT pkey_test01 PRIMARY KEY (id));方案一:dao接口关键代码void insertBatch01(List<Test01> test01List);xml关键代码<insert id="insertBatch0...
2021-10-07 13:57:21
7245
1
原创 PG常用操作笔记(二)_字符串常用函数
-- 常用字符串函数select 100 || 'A' || null || 'B' -- 只要含有一个null,那么结果全都是nullselect concat(100, 'A', null, 'B') -- 会省略null,输出select char_length(100) -- 报错,不支持对整形求长度select length(100) -- 报错,不支持对整形求长度select length(100::text) --将100转为文本后求长度(方式一),返回3select l...
2021-10-07 11:37:46
2485
原创 PG常用操作笔记(一)
一、并集、交集、差集1.1并集,分union和union all两种情况union 会去重示例一:select 1union allselect 1只输出一个1:1union all 不会去重示例二:select 1union allselect 1输出两个1:111.2交集intersect示例:select 1intersectselect 1输出:11.3差集 except示例:select 2except...
2021-10-07 11:27:12
3151
原创 ArrayList和LinkedList删除所有重复元素
方案:使用removeIf()方法LinkedList测试代码:public class TestLinkedList { public static void main(String[] args) { LinkedList<String> linkedList = new LinkedList<>(); linkedList.add("A"); linkedList.add("B"); lin
2021-07-26 12:35:42
1024
原创 ArrayList堆栈存储结构解析
疑问:两个ArrayList指向相同的对象,修改一个ArrayList的值时,另一个ArrayList的值是否会发生变化?答案:会发生变化分析:存储JVM内存结构如下可以看出,userList1和userList2虽然指向两个不同的数组对象,但是数组1和数组2的下标为0的指向是相同的UserEntity(name="zs")对象,因此,在修改UserEntity(name="zs")对象的属性name="zs_new"时,遍历两个数组,得到的UserEntity的name值是相同的.
2021-07-24 15:20:55
564
原创 HashMap添加元素时发生hash冲突,最大链表长度是多少?
疑问:往HashMap添加元素时发生hash冲突,最大链表长度是多少?答案:往HashMap中添加元素时,如果key的hash值都是一样的情况下,那么链表最大长度可以达到10HashMap添加元素发生Hash冲突时源码如下static final int TREEIFY_THRESHOLD = 8;注意点一:这里的binCount是从0开始,计算的是添加新元素之前链表的长度;TREEIFY_THRESHOLD的常量值为8,if(binCount >= TREEIFY_THRE
2021-07-24 14:46:13
1772
1
原创 Java连接MySQL出现CommunicationsException和SSLHandshakeException问题处理
在搭建Spring boot整合Mybatis的时候,出现了如下错误:报错信息:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 217 milliseconds ago. The last packet sent successfully to the serv.
2021-07-23 21:35:48
1855
1
转载 设计模式的六大原则(SOLID)
设计模式的六大原则有:Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitution Principle:里氏替换原则 Law of Demeter:迪米特法则 Interface Segregation Principle:接口隔离原则 Dependence Inversion Principle:依赖倒置原则1 单一职责原则(SRP)一个对象应该只包含单一的职责,并且该职责被完
2021-07-22 12:53:04
397
原创 Windows环境安装postgresql
Windows环境安装postgresql一、下载windows版postgresql官网下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads根据自己的需要选择对应版本下载即可,这里我选择window 64位版本如上面地址无法访问,也可以从下面地址找到需要的版本后下载:https://renwole.com/tags/postgresql-12-3-windows%E4%B8
2021-07-18 19:53:03
732
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅