Java
文章平均质量分 61
秋雨叶落
一个软件工程的大学生,编程萌新上路。坚持、努力,朝气蓬勃。
展开
-
Java中Bean和Bean集合的复制——解决BeanUtils.copyProperties不支持复制集合和map方案
这样可以得到复制后的bean集合,比for循环BeanUtils.copyProperties方法更快,更优雅。我们在项目中总是遇到实体类(entity)和视图类(vo)需要相互转换,可能是单个bean、可能是bean集合。优点:当需要set多个字段时可以使用BeanUtils.copyProperties方法,提高代码可读性。思路:单个bean可以用set方法修改属性字段,集合就循环set。可以将两个bean相同的字段属性复制给后者,即使是null。原创 2023-01-09 17:43:59 · 2660 阅读 · 1 评论 -
解决导出多个Excel表ZipOutputStream内存溢出问题——java heap space
在本地跑没有问题,但上传到服务器导出是,报错java heap space(内存溢出)。3、解决方案:先生成临时文件,然后再一点点写入压缩流里。1、检查错误,这段代码的问题。2、原因:流溢出导致程序报错。原创 2022-12-14 13:41:56 · 1938 阅读 · 0 评论 -
导出多个Excel表生成多级目录压缩包——ZipOutputStream+easypoi
ZipOutputStream是一种压缩流,是Java用来生成zip压缩包的应该类。下面熟悉一下主要内容:创建压缩流zip包下的目录词条,创建zip实体将实体推入压缩流里。原创 2022-12-14 11:33:17 · 1316 阅读 · 0 评论 -
easypoi——Excel表自定义模板样式(简单丝滑)
在网上浏览了很多其他的博客,发现如果想要实现自己的样式,就需要重新生成一个文本簿,然后再慢慢添加样式,添加表头,但浪费了我们写的实体类注解,很是麻烦。现在,把你想要的样式写入ExcelExportStylerUtil类即可实现,目前只是提供了单元格边框、字体居中的功能。这一篇文章可以与上一篇文章完美融合,使用起来非常丝滑,解决你Excel表的大部分问题。原创 2022-11-23 17:23:37 · 2006 阅读 · 0 评论 -
EasyPoi——导出导入表格数据工具(解决groupName无法获取数据问题)
Easypoi主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,PDF模板,通过简单的注解和模板语言,完成功能。@ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示。@Excel 作用到filed上面,是对Excel一列的一个描述。原创 2022-11-22 10:11:42 · 1729 阅读 · 1 评论 -
Mybatis——数据库交互数据的注解和标签
虽然mybatis只提供了if标签,没有提供else标签。但并妨碍我们使用判断标签,因为mybatis提供了另一个标签来代替了if-else——这时候我们只能在映射文件中实现判断是否完全相同数据这一功能。我们一般单表判断可以直接使用mybatis-puls的eq方法来判断。标签来完成功能,上面案例就一个判断是否相同数据的某一段判断。但它有一个缺陷,就是如果我们需要判断一条数据是否与数据库的。@Param的作用就是给参数命名,类似给一个别名。@Param一般用在传递了一个集合时使用。原创 2022-11-21 15:12:57 · 451 阅读 · 0 评论 -
力扣——12. 整数转罗马数字
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。由于题目给了很多限定,所以我们可以把会出现的罗马数字与对应的数值写在集合里,后面可以直接用。解释: M = 1000, CM = 900, XC = 90, IV = 4.I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。解释: L = 50, V = 5, III = 3.原创 2022-11-16 14:59:44 · 115 阅读 · 0 评论 -
力扣——11. 盛最多水的容器(双指针)
有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。首先我们要明确,越高的边约能容纳更多的水、约宽的边约能容纳更多的水。所以一开始以最宽的两边为指针向内缩,在移动时,我们保留更高的边。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]原创 2022-11-16 14:44:11 · 106 阅读 · 0 评论 -
spring注解使用习惯-Control层前后端交互
需要返回短字段或者少量字段,常用在select、delete需要返回大量字段,常用在update、create原因:get请求所带的数据是拼接在url后,长度是有限的;post请求所带的数据是不设限的,放在请求体里。原创 2022-11-15 10:14:15 · 288 阅读 · 0 评论 -
java输入问题——scanner问题
Scanner.hasnext()循环无法结束。Scanner.nextLine()方法被跳过。原创 2022-10-26 16:26:42 · 798 阅读 · 0 评论 -
秋招面经——上海汉得Java(9.27)
我:假设有A、B两表,通过连接筛选条件得到结果,左连接是:A表与B表的重合部分加上A表未重合的部分;全连接是:AB两表重合的部分,加A表未重合的部分、加B表未重合的部分。我:首先对象创建是先存放在新生代中,然后经历gc没有被回收会晋升到生存者区,然后经历gc还没被回收且达到晋升条件,那就晋升到老年代,如果当中被gc回收了,那就结束了。equals只能用于比较两个对象是否相等,在没有重写equals方法时,和==相同,但在String类中重写了equals方法,是比较两者中的值是否相等。原创 2022-10-15 16:18:27 · 907 阅读 · 0 评论 -
java面试——JVM(内存结构、垃圾回收、内存溢出)
对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XX:SurvvorRatiO=3具最小内存值和Survivor区总大小分别是?所谓的双亲委派,就是指优先委派上级类加载器进行加载,如果上级类加载器。GC的目的在于对无用的对象内存自动释放,减少内存碎片、加快分配速度。虚拟机栈:存储方法内的局部变量、方法参数、线程。除程序计数器外,都有可能产生内存溢出。方法区与永久代、元空间之间的关系。说说GC和分代回收算法。方法区:存放类的信息。类加载过程、双亲委派。原创 2022-09-19 11:17:54 · 238 阅读 · 0 评论 -
Java面试——单例模式(5种写法、可能存在的问题)
破坏单例:反射破坏单例、反序列化破坏单例(单例实现了序列化接口)、Unsafe破坏单例。反射破坏原理:获取单例的类名,用反射机制强行访问构造方法,生成新的对象。防止反射破坏:在构造方法中判断是否已经生成实例,如有则抛出异常。构造方法私有,提供一个静态的成员变量,提供公共静态方法访问。防止:写一个特殊方法 readResolve。枚举类单例可以防止反射破坏、反序列化破坏。定义:一个类只有一个实例。饿汉式:一开始就生成实例。懒汉式:需要时才生成实例。懒汉式多线程时会有问题。不用考虑线程安全问题。原创 2022-09-17 22:14:33 · 261 阅读 · 0 评论 -
Java面试——并发问题(sleep、synchronized、volatile等)
1.8之前ConcurrentHashMap使用了Segment+数组+链表的结构,每个Segment对应一把锁,如果多个线程访问不同的Segment,则不会冲突。1.8开始ConcurrentHashMap将数组的每个头节点作为锁,如果多个线程访问的头节点不同,则不会冲突。Hashtable并发度低,整个Hashtable对应一把锁,同一时刻,只能有一个线程操作它。Hashtable初始数组大小是11、扩容阈值是超过3/4,扩容数量是原容量*2+1。3.keepAliveTime 生存时间。原创 2022-09-16 20:27:28 · 464 阅读 · 0 评论 -
java面试——集合HashMap源码理解问题
hashCode 都有了,为何还要提供 hash()方法?数组容量为何是2的n次幂?key能否为null,作为key的对象有什么要求?介绍一下put方法流程,1.7和1.8有何不同?加载因子为何默认是0.75f。数据错乱(1.7、.18)多线程下会有什么问题?原创 2022-09-15 19:47:44 · 202 阅读 · 0 评论 -
java面试——集合(ArrayList、lterator、LinkedList)源码理解
了解源码,才能更了解方法的运行过程原创 2022-09-14 20:14:45 · 158 阅读 · 0 评论 -
剑指 Offer II 004. 只出现一次的数字
题目给出了一个数组,里面只有一个数值是唯一的,其他数值都有三个,我的思路是直接排序,然后遍历数组找唯一不同的数值。但这道题其实是用位运算解决的,目前不会,等会了再回来更新,或者有大佬可以评论教一下。...原创 2022-06-28 16:44:54 · 76 阅读 · 0 评论 -
力扣26. 删除有序数组中的重复项
用双指针来解决原创 2022-06-27 16:10:53 · 163 阅读 · 0 评论 -
ArrayList 和 LinkedList 的区别
ArrayList是基于动态数组实现的集合。LinkedList是基于链表实现的集合。原创 2022-06-27 15:22:44 · 229 阅读 · 0 评论 -
力扣 9. 回文数
从题目来看,可以看出负数肯定不是回文数,需要从左到右,再到从右往左要一模一样。因为给的数字,这道题有两种解法,分别是字符串解法、数学解法。注意:0也是回文数。可以将该数值转换成字符串,然后再用双下标判断,就是一个下标是最左边,一个是最右边,两下标向中间逼近,判断两下标的值是否相同。数学解法因为是数值,可以用取余再乘的方法将值倒转,然后两数值是否相等,如果相等,即是回文数。...原创 2022-06-25 15:32:04 · 1712 阅读 · 2 评论 -
力扣1. 两数之和
题解可以像冒泡排序一样遍历目标数组,找到数组内两个数相加等于目标数值,返回两个数值的下标,否在返回0;原创 2022-06-25 15:13:54 · 55 阅读 · 0 评论 -
Mybatis——typeAliases,全限定名,降低冗余
文章目录类型别名(typeAliases)typeAliases用在哪里?位置书写没使用前使用后类型别名(typeAliases)类型别名可为 Java 类型设置一个缩写名字。写过全限定名的知道,全限定名是真的长,如果再没有自动提示,估计痛苦程度还能再上升一个级别,现在有了typeAliases,可以用一个别名代替全限定名,大大减少了代码名字长度。typeAliases用在哪里?位置typeAliases标签用在mybatis的xml文件里,我们一般将这配置文件放在resources文件里,一.原创 2021-12-30 16:58:54 · 418 阅读 · 0 评论 -
java打印一维数组
文章目录前言System.out.println()语句直接打印数组出错Java打印一维数组的方法1.for 和for-each循环1.for循环2.for-each 循环示例:2. Arrays.toString() 方法3. Arrays.deepToString() 方法4. Arrays.asList() 方法前言System.out.println()语句直接打印数组出错int[] intArray = {1,2,3,4,5,6};System.out.println(intArray.原创 2021-12-27 19:24:48 · 1742 阅读 · 0 评论 -
力扣217. 存在重复元素
文章目录217. 存在重复元素题目链接题目示例 1:示例 2:示例 3:答案代码整体思路1.对待测数组进行排序2.遍历数组,判断是否存在重复元素可以尝试多种排序方法217. 存在重复元素题目链接传送门:题目题目给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:.原创 2021-12-27 10:04:00 · 246 阅读 · 0 评论 -
力扣53.最大子数组和
53. 最大子数组和传送门:题目给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23来源:力扣(LeetCode)链接:h原创 2021-12-27 09:50:05 · 262 阅读 · 0 评论