
Java
Java笔记
张童瑶
现任某厂Java高级开发工程师,励志成为一名资深架构师,尽自己最大努力用有趣的方式让大家轻松汲取到底层原理知识!
展开
-
MyBatis 逻辑删除
在实体类中,将该注解标识在deleted字段上,并在yml文件中对其进行全局配置,即可通过removeById自动实现逻辑删除,使用@Delete即可,不需要再使用@Update手动修改。在配置该注解之前,使用removeById后,查看数据库,会将数据真实删除,数据库中该数据会消失,而在配置后,使用removeById,会只修改deleted字段为1,并且在使用mybatis-plus中的查询方法,如 .list() 等,会让deleted = 1的数据不显示。而注释掉注解和配置后,该方法能够生效。原创 2023-04-23 14:21:27 · 992 阅读 · 0 评论 -
Mybatis 全局配置文件 mybatis-config.xml
properties resource = "类入类路径下的资源" > < / properties > < properties url = "网络或者磁盘路径" > < / properties >原创 2023-04-23 13:36:56 · 842 阅读 · 0 评论 -
Java Jvm中的垃圾回收机制
java相较于c、c++语言的优势之一是自带垃圾回收器,垃圾回收是指不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc 方法来建议执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的缺点。当然相对于它给程序员带来的巨大方便性而言,这个缺点是瑕不掩瑜的。原创 2023-04-18 14:54:31 · 793 阅读 · 0 评论 -
Java lock和synchronized有什么区别?
震惊,我只能说震惊!根据当事人不知道叫什么,咱们况且先叫某猫吧!看到这个回答我也是惊掉下巴了,一本正经的回答,还tn的都挺对。天气晴朗,万里无云,我在群中随便了问了个问题。原创 2023-04-04 17:16:45 · 159 阅读 · 0 评论 -
Java synchronized详解
同步代码块简单来说就是将一段代码用一把锁给锁起来, 只有获得了这把锁的线程才访问,并且同一时刻,只有一个线程能持有这把锁, 这样就保证了同一时刻只有一个线程能执行被锁住的代码。跟Lock对象锁类似,但是synchronized是一个jvm中的函数,自动执行完锁里的任务后自动释放锁。原创 2023-04-04 11:22:32 · 547 阅读 · 0 评论 -
Java Lock锁使用场景
代码整体没有太大变化,只是在count–前后做了加锁和减锁操作,最后无论代码运行多少次,结果都是0(需要注意的是这里忽略了可见性),没有出现未加锁时的少减情况。首先,需要加锁的资源一定是临界资源,所谓临界资源就是在多线程的情况下,各个线程会进行抢占的资源。如果使用了tryLock(),他会在判断在使用锁的情况下,默认跳过count–操作,最终结果是51。这就是锁的使用场景,无论是数据库锁、java内置锁还是分布式锁,他们的使用场景都大同小异。其中,count就是临界资源,多线程就是我们常说的并发环境。原创 2023-04-03 16:25:29 · 960 阅读 · 0 评论 -
Java 双亲委派
2、避免核心类被串改:Java的核心API都是通过引导类加载器进行加载的,如果别人通过定义同样路径的类比如java.lang.Integer,类加载器通过向上委托,两个Integer,那么最终被加载的应该是jdk的Integer类,而并非我们自定义的,这样就避免了我们恶意篡改核心包的风险。一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到jvm中,其它类等到jvm用到的时候再加载。每个类加载器都有一个父加载器。转载 2023-03-30 22:20:03 · 133 阅读 · 0 评论 -
Java 内存结构和内存模型
新生代(Young Generation)主要是用来存放新生的对象。新生代又被进一步划分为Eden区(伊甸园区)和Survivor区(幸存区,包含空间相等的S0、S1区,或者说From、To区,没有先后顺序,是Copying算法的需要)。大多数情况下,java中新建的对象都是在新生代上分配的,通过Copying算法来进行分配内存和垃圾回收。原创 2023-03-30 21:29:43 · 641 阅读 · 0 评论 -
Java 在List<Map>中统计Map的key重复数量
【代码】Java 在List中统计Map的key重复数量。原创 2023-03-24 15:36:45 · 801 阅读 · 0 评论 -
Java 操作图片进行缩放旋转翻转加水印
谷歌开源框架处理图片实测性能较差,用起来比较方便,建议用Hutool因为只是对awt做的封装不用自己写,性能也高。原创 2023-03-02 14:04:00 · 2021 阅读 · 2 评论 -
Java 计算同比增长工具类
为了数据的严谨性,统一装换为BigDecimal,话不多说,看代码。原创 2023-02-27 16:38:40 · 498 阅读 · 0 评论 -
Java ThreadLocal线程本地类 - 并发编程
ThreadLocal类是作为线程内部的局部变量而提供的。让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量。通过ThreadLocal创建的变量只能被当前线程访问,对其他线程不可见,故别的线程无法访问和修改,也就是说:对线程公有化变成对线程私有化。事实上每个线程中都有一个ThreadLocal变量副本。相比于锁的性能:java在使用锁的使用中会导致运行效率降低,ThreadLocal的使用彻底避免对共享资源的竞争,同时又可以不影响效率。原创 2022-10-24 09:39:48 · 290 阅读 · 0 评论 -
Java 将文本文件压缩为 .tar.gz 并实现.tar.gz 文件的解压
Java 将文本文件压缩为 .tar.gz 并实现.tar.gz 文件的解压,需要引入如下依赖包。Java 实现方法及测试方法如下所示。原创 2022-07-06 11:20:39 · 1702 阅读 · 0 评论 -
Java 生成CSV文件
java生成csv文件原创 2022-07-05 09:45:59 · 9140 阅读 · 0 评论 -
Poi 分析POIword导出利器,PoiUtils!
我们在日常开发过程中,碰到poi导出word文档,会碰到各种导出,例如word中带表格,word中带折线图等,这是我自己封装的一些工具类,给大家展示设置表格边框属性:创建文档中换行:设置页面边距:设置word中表格单元居中:创建一个单数据折线图:创建一个表格:创建标题:..................原创 2022-06-28 17:54:52 · 515 阅读 · 0 评论 -
Java 中 int和Integer比较
下文笔者讲述java中int和Integer类型的比较,如下所示int和Integer类型比较1:Integer是int的包装类,int则是java的一种基本数据类型2:Integer变量必须实例化后才能使用,而int变量不需要3:Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4:Integer的默认值是null,int的默认值是0一:由于Integer变量实际上是对一个Integer对象的引用 所以两个通过new生成的Int原创 2022-06-27 13:34:37 · 4252 阅读 · 0 评论 -
Java 关于使用map存放数据乱序”问题“
今天做项目中遇到了一个比较低级的错误,如果没注意将会变的更麻烦。。。其实吧,也不难,要求就是将list中的值转为map后,再顺序输出map中的值,list的顺序怎样,加入到map的顺序也应怎样,不能乱序!一开始做之前没注意那么多,习惯性使用Map jsonMap = new HashMap();这样做之后的结果可想而知,虽然说查询数据快,但数据肯定是乱序的,毕竟它是根据hashcode码来排序,之后使用TreeMap,但依然没有得到想要的结果,而HashTable就更不用............原创 2022-06-24 18:07:54 · 2241 阅读 · 1 评论 -
Java 中if else、多重if、switch效率对比详细讲解
你真的会使用if else、多重if、switch语法吗???原创 2022-06-23 09:48:58 · 3634 阅读 · 4 评论 -
Poi 为word 添加页眉 获取页眉
百度真是越来越难用了,***!还是推荐大家用必应吧再贴一个获取word页眉的方案转自:https://blog.csdn.net/made_in_zhong/article/details/90476112原创 2022-06-21 17:16:54 · 1746 阅读 · 0 评论 -
Poi 设置word文档中的表格边框样式全代码
Poi 设置word文档中的表格边框样式全代码原创 2022-06-21 09:52:39 · 1481 阅读 · 0 评论 -
Poi 设置word文档中的表格边框
https://blog.csdn.net/qq_31189355/article/details/80438506原创 2022-06-21 09:43:58 · 3053 阅读 · 0 评论 -
Poi 生成word设置页边距
相关代码取值规则规则是磅数 * 20例设置上、下、左、右的页边距为1CM,1 * 28.5 * 20 = 567原创 2022-06-20 15:36:11 · 1728 阅读 · 0 评论 -
Poi 操作Word文档设置页边距 解决CTPageMar类找不到
Poi操作Word文档设置页边距 CTPageMar类找不到 已解决在百度上搜了一顿,找到了相关的解决方案,但是缺失了一个类,在百度怎么也找不到!给大家一个参考数据 1厘米≈567特意去google上搜了一番,找到了具体的解决方法:添加依赖..................原创 2022-06-20 15:30:18 · 901 阅读 · 0 评论 -
Poi 如何使用Java和POI技术生成折线图,柱状图,饼状图导出到word文档
这篇文章主要介绍POI生成图表并导出word文档的基本操作。主要介绍三种图表:折线图、柱状图、饼状图。使用Java和POI技术生成的折线图,柱状图,饼状图的效果如下图所示:主要使用的技术有如下两个:Apache POI依赖代码如下所示:三、具体实现(1)折线图折线图主要有X轴,Y轴,图表,图例,数据集等相关设置。使用POI生成图表到word文档中,具体步骤如下(代码几乎每句都有注释,方便阅读和理解):具体实现代码如下所示:(2)柱状图柱状图主要有X轴,Y轴,图表,图例,数据集等相关设置,具体实现原创 2022-06-18 10:29:42 · 9089 阅读 · 13 评论 -
MyBatis 下设置mysql批量执行update sql
本质上Mysql是不支持这种骚操作的但是不代表并不能实现,只需要在jdbc的url链接库地址上添加&allowMultiQueries=true即可然后在映射文件中的标签下将多条sql用;隔开即可,批量添加SQL 也是如此原创 2022-06-16 09:27:55 · 335 阅读 · 0 评论 -
Java map 遍历顺序
https://blog.csdn.net/qq_42000661/article/details/121345984https://www.cnblogs.com/fczjuever/archive/2013/04/07/3005997.html原创 2022-06-13 10:26:25 · 676 阅读 · 0 评论 -
Jpa 【已解决】Validation failed for query for method public abstract java.util.List
jpa @Query 注解错误记录原创 2022-06-10 15:05:06 · 1283 阅读 · 0 评论 -
Java 操作系统打开选中文件
java操作系统文件原创 2022-06-09 12:03:39 · 331 阅读 · 0 评论 -
Java 通过csv表格文件生成转换SQL文件
csv保存为SQL文件,java脚本原创 2022-06-08 17:19:46 · 1417 阅读 · 0 评论 -
Java 发送url请求
通过HttpClient方式获取接口信息需提前引入jar包原创 2022-06-07 11:56:21 · 1644 阅读 · 0 评论 -
Java html转图片
直接生成base64为编码,代码简洁引入pom完整示例第二种第二种可以读取本地html文件,并且把jpg写到指定位置引入原创 2022-06-02 10:46:37 · 7958 阅读 · 3 评论 -
Java Jsoup解析html
Jsoup可以用来做Java爬虫。参考文章:https://www.cnblogs.com/sam-uncle/p/10922366.html引入完整代码获取网页不用HttpClient也可以获取网页内容原创 2022-06-02 10:43:44 · 374 阅读 · 0 评论 -
Poi 中创建.docx文档
使用poi创建doc文档原创 2022-06-02 10:39:51 · 419 阅读 · 0 评论 -
MyBatisPlus 内置构造器方法
LambdaQueryWrapper 的条件构造器方法对应Sql方法官方文档: 官方文档内容原创 2022-06-01 19:21:14 · 627 阅读 · 0 评论 -
Java log4j2的漏洞修复
log4j2的漏洞修复简介Log4j是Apache的一个开源项目,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。Apache Log4j2是Log4j的升级版本,该版本与之前的log4j1.x相比带来了显著的性能提升,并且修复一些存在于Log原创 2022-01-17 11:28:34 · 858 阅读 · 0 评论 -
Mybatis 一个update标签中执行多条update sql语句
本质上Mysql是不支持这种骚操作的但是不代表并不能实现,只需要在jdbc的url链接库地址上添加&allowMultiQueries=true即可driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true原创 2021-12-17 16:35:27 · 2288 阅读 · 0 评论 -
MyBatisPlus 优雅的自定义SQL实现表联查并且使用IPage分页
一直追求优雅代码和逻辑,一般正常自定义SQL使用分页工具分页,还得再写一个查询行数的接口,业务性能不说,感觉多此一举。参考文章:https://www.cnblogs.com/jiaozhang/p/14473344.htmlmapper//自定义查询数据IPage<Map<String,Object>> query(@Param("page") Page<Map<String,Object>> page,@Param("params") Map<原创 2021-12-16 17:57:24 · 2777 阅读 · 0 评论 -
Poi 自定义封装方法 合并excel中的单元格
之前都是使用sheet.addMergedRegion()方法一个一个计算合并单元格,还浪费大量时间,后来我自己特意封装了一个方法分享给大家,即拿即用,加几个就合并几个单元格方法。下面会给大家提供完整代码!本人辛苦封装的合并单元格方法,全网只有一个!欢迎转载,转载不需要作者同意,但需说明转载地址!!否则侵权必究!!!/** * 合并单元格 * @author tongyao * @param sheet sheet页 * @param titleColumn 标题占用行 * @param ce原创 2021-11-25 15:27:14 · 2327 阅读 · 5 评论 -
Java 中获取Exception的详细信息
当代码出现异常时通常都需要将异常信息写入到日志中,异常信息越详细越有利于问题的排查。而通过的Exception.getMessage()方法只能获得异常的名称而不能获取哪里出现的异常,对于排错意义不大。这里罗列几个网上查到的还不错的可以获取详细信息的方法。//1public String getTrace(Throwable t) { StringWriter stringWriter= new StringWriter(); PrintWriter writer= new PrintWriter原创 2021-11-16 13:35:05 · 8250 阅读 · 0 评论 -
Java It is illegal to call this method if the current request is not in asynchronou
废话不多说,一针见血,狠不狠你说了算!!public static Object filterParams(Object object){ if(object instanceof HttpServletRequest){ object = "请求格式为Request类型,实例化失败,已经转换为字符串:("+object.toString()+")"; } if(object instanceof HttpServletResponse){ obje原创 2021-11-15 18:00:36 · 573 阅读 · 0 评论