Java
Java笔记
张童瑶
现任某厂Java高级开发工程师,励志成为一名资深架构师,尽自己最大努力用有趣的方式让大家轻松汲取到底层原理知识!
展开
-
MyBatis 逻辑删除
在实体类中,将该注解标识在deleted字段上,并在yml文件中对其进行全局配置,即可通过removeById自动实现逻辑删除,使用@Delete即可,不需要再使用@Update手动修改。在配置该注解之前,使用removeById后,查看数据库,会将数据真实删除,数据库中该数据会消失,而在配置后,使用removeById,会只修改deleted字段为1,并且在使用mybatis-plus中的查询方法,如 .list() 等,会让deleted = 1的数据不显示。而注释掉注解和配置后,该方法能够生效。原创 2023-04-23 14:21:27 · 911 阅读 · 0 评论 -
Mybatis 全局配置文件 mybatis-config.xml
properties resource = "类入类路径下的资源" > < / properties > < properties url = "网络或者磁盘路径" > < / properties >原创 2023-04-23 13:36:56 · 776 阅读 · 0 评论 -
Java Jvm中的垃圾回收机制
java相较于c、c++语言的优势之一是自带垃圾回收器,垃圾回收是指不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc 方法来建议执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的缺点。当然相对于它给程序员带来的巨大方便性而言,这个缺点是瑕不掩瑜的。原创 2023-04-18 14:54:31 · 755 阅读 · 0 评论 -
Java lock和synchronized有什么区别?
震惊,我只能说震惊!根据当事人不知道叫什么,咱们况且先叫某猫吧!看到这个回答我也是惊掉下巴了,一本正经的回答,还tn的都挺对。天气晴朗,万里无云,我在群中随便了问了个问题。原创 2023-04-04 17:16:45 · 134 阅读 · 0 评论 -
Java synchronized详解
同步代码块简单来说就是将一段代码用一把锁给锁起来, 只有获得了这把锁的线程才访问,并且同一时刻,只有一个线程能持有这把锁, 这样就保证了同一时刻只有一个线程能执行被锁住的代码。跟Lock对象锁类似,但是synchronized是一个jvm中的函数,自动执行完锁里的任务后自动释放锁。原创 2023-04-04 11:22:32 · 511 阅读 · 0 评论 -
Java Lock锁使用场景
代码整体没有太大变化,只是在count–前后做了加锁和减锁操作,最后无论代码运行多少次,结果都是0(需要注意的是这里忽略了可见性),没有出现未加锁时的少减情况。首先,需要加锁的资源一定是临界资源,所谓临界资源就是在多线程的情况下,各个线程会进行抢占的资源。如果使用了tryLock(),他会在判断在使用锁的情况下,默认跳过count–操作,最终结果是51。这就是锁的使用场景,无论是数据库锁、java内置锁还是分布式锁,他们的使用场景都大同小异。其中,count就是临界资源,多线程就是我们常说的并发环境。原创 2023-04-03 16:25:29 · 864 阅读 · 0 评论 -
Java 双亲委派
2、避免核心类被串改:Java的核心API都是通过引导类加载器进行加载的,如果别人通过定义同样路径的类比如java.lang.Integer,类加载器通过向上委托,两个Integer,那么最终被加载的应该是jdk的Integer类,而并非我们自定义的,这样就避免了我们恶意篡改核心包的风险。一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到jvm中,其它类等到jvm用到的时候再加载。每个类加载器都有一个父加载器。转载 2023-03-30 22:20:03 · 113 阅读 · 0 评论 -
Java 内存结构和内存模型
新生代(Young Generation)主要是用来存放新生的对象。新生代又被进一步划分为Eden区(伊甸园区)和Survivor区(幸存区,包含空间相等的S0、S1区,或者说From、To区,没有先后顺序,是Copying算法的需要)。大多数情况下,java中新建的对象都是在新生代上分配的,通过Copying算法来进行分配内存和垃圾回收。原创 2023-03-30 21:29:43 · 604 阅读 · 0 评论 -
Java 在List<Map>中统计Map的key重复数量
【代码】Java 在List中统计Map的key重复数量。原创 2023-03-24 15:36:45 · 719 阅读 · 0 评论 -
Java 操作图片进行缩放旋转翻转加水印
谷歌开源框架处理图片实测性能较差,用起来比较方便,建议用Hutool因为只是对awt做的封装不用自己写,性能也高。原创 2023-03-02 14:04:00 · 1818 阅读 · 2 评论 -
Java 计算同比增长工具类
为了数据的严谨性,统一装换为BigDecimal,话不多说,看代码。原创 2023-02-27 16:38:40 · 440 阅读 · 0 评论 -
Java ThreadLocal线程本地类 - 并发编程
ThreadLocal类是作为线程内部的局部变量而提供的。让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量。通过ThreadLocal创建的变量只能被当前线程访问,对其他线程不可见,故别的线程无法访问和修改,也就是说:对线程公有化变成对线程私有化。事实上每个线程中都有一个ThreadLocal变量副本。相比于锁的性能:java在使用锁的使用中会导致运行效率降低,ThreadLocal的使用彻底避免对共享资源的竞争,同时又可以不影响效率。原创 2022-10-24 09:39:48 · 260 阅读 · 0 评论 -
Java 将文本文件压缩为 .tar.gz 并实现.tar.gz 文件的解压
Java 将文本文件压缩为 .tar.gz 并实现.tar.gz 文件的解压,需要引入如下依赖包。Java 实现方法及测试方法如下所示。原创 2022-07-06 11:20:39 · 1579 阅读 · 0 评论 -
Java 生成CSV文件
java生成csv文件原创 2022-07-05 09:45:59 · 8905 阅读 · 0 评论 -
Java 获取当前时间的三种方法
1.通过Util包中的Date获取Date date = new Date(); SimpleDateFormat dateFormat= newSimpleDateFormat("yyyy-MM-dd :hh:mm:ss");System.out.println(dateFormat.format(date));2.通过Util包的Calendar 获取Calendar calend...原创 2019-09-19 20:49:02 · 37793 阅读 · 1 评论 -
Java 获取文件的创建时间
直接上代码! File file = new File("D:\\22222.txt"); SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd"); FileTime t = null; try { t = Files.readAttributes(Paths.get("D:\\22222.txt"), BasicFileAttributes.class).creationTime原创 2020-05-18 21:26:21 · 7075 阅读 · 3 评论 -
Java 获取d盘 指定文件夹内容
public static void main(String[] args) { File file = new File("D:\\22222.txt"); recursion(file);}public static void recursion(File file){ if (file.exists()) { File[] files = file.listFiles(); if (files==null ) { System.out.println("文件夹下无目录(原创 2020-05-18 21:31:05 · 3195 阅读 · 0 评论 -
Java 打开指定文件
java.awt.Desktop.getDesktop().open(new File("D:/java"));就可以,舍去用依靠cmd命令来打开了原创 2020-05-21 10:35:49 · 1498 阅读 · 0 评论 -
Java 打开文件并选中
File file=new File("c://test.pdf"); Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ "Explorer.exe /select," + file.getAbsolutePath());人狠话不多,社会我瑶哥,直接上代码,淦!原创 2020-05-26 10:35:37 · 591 阅读 · 0 评论 -
Java 在linux或者tomcat下使用java.jwt.*这个类,报java.awt.headless 报空异常
在开发的过程中使用到了java.jwt.*包下的东西,在开发工具中使用没问题,但是如果到了单独的tomcat或Linux里就会报:java.awt.headless null空异常,再去配置java mv?非常麻烦,看我是如何解决的在使用到java.jwt.*包类的里面添加如下代码,就可以了,本人亲自使用非常完美。static { System.setProperty("java.awt.headless", "false");}......原创 2020-06-03 18:49:48 · 655 阅读 · 0 评论 -
Poi HSSFCellStyle.ALIGN_CENTER VERTICAL_CENTER 等爆红的解决办法
Apache POI是画excel工具,大家在接收旧代码时会出现以下问题:HSSFCellStyle.ALIGN_CENTER HSSFCellStyle.VERTICAL_CENTER 等爆红原因是版本出错:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2<原创 2021-05-31 16:52:24 · 3468 阅读 · 2 评论 -
Poi 4.0设置自定义背景颜色
/*设置背景颜色*/cellBoldStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);HSSFPalette palette = wb.getCustomPalette();cellBoldStyle.setFillForegroundColor(IndexedColors.LIME.getIndex());palette.setColorAtIndex(IndexedColors.LIME.getIndex(), (byte) 204,原创 2021-06-22 15:00:25 · 3447 阅读 · 0 评论 -
JavaSE 截取屏幕截图并打开
import java.awt.Desktop;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;public class CaptureScreen {public stat原创 2021-06-25 15:41:29 · 114 阅读 · 0 评论 -
Mybatis 在SpringBoot中打印log日志
第一种在application.yml中增加配置,在控制台打印sql:mybatis configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 参考类:org.apache.ibatis.session.Configurationlog-impl指定的值为org.apache.ibatis.logging.Log接口的某个实现类:其他配置参考官方说明。第二种在application.yml中增加配置原创 2021-10-25 10:25:21 · 6628 阅读 · 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 · 538 阅读 · 0 评论 -
Java 中获取Exception的详细信息
当代码出现异常时通常都需要将异常信息写入到日志中,异常信息越详细越有利于问题的排查。而通过的Exception.getMessage()方法只能获得异常的名称而不能获取哪里出现的异常,对于排错意义不大。这里罗列几个网上查到的还不错的可以获取详细信息的方法。//1public String getTrace(Throwable t) { StringWriter stringWriter= new StringWriter(); PrintWriter writer= new PrintWriter原创 2021-11-16 13:35:05 · 8033 阅读 · 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 · 2173 阅读 · 0 评论 -
Poi 自定义封装方法 合并excel中的单元格
之前都是使用sheet.addMergedRegion()方法一个一个计算合并单元格,还浪费大量时间,后来我自己特意封装了一个方法分享给大家,即拿即用,加几个就合并几个单元格方法。下面会给大家提供完整代码!本人辛苦封装的合并单元格方法,全网只有一个!欢迎转载,转载不需要作者同意,但需说明转载地址!!否则侵权必究!!!/** * 合并单元格 * @author tongyao * @param sheet sheet页 * @param titleColumn 标题占用行 * @param ce原创 2021-11-25 15:27:14 · 2264 阅读 · 5 评论 -
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 · 2686 阅读 · 0 评论 -
Java log4j2的漏洞修复
log4j2的漏洞修复简介Log4j是Apache的一个开源项目,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。Apache Log4j2是Log4j的升级版本,该版本与之前的log4j1.x相比带来了显著的性能提升,并且修复一些存在于Log原创 2022-01-17 11:28:34 · 711 阅读 · 0 评论 -
MyBatisPlus 内置构造器方法
LambdaQueryWrapper 的条件构造器方法对应Sql方法官方文档: 官方文档内容原创 2022-06-01 19:21:14 · 413 阅读 · 0 评论 -
Poi 中创建.docx文档
使用poi创建doc文档原创 2022-06-02 10:39:51 · 398 阅读 · 0 评论 -
Java Jsoup解析html
Jsoup可以用来做Java爬虫。参考文章:https://www.cnblogs.com/sam-uncle/p/10922366.html引入完整代码获取网页不用HttpClient也可以获取网页内容原创 2022-06-02 10:43:44 · 339 阅读 · 0 评论 -
Java html转图片
直接生成base64为编码,代码简洁引入pom完整示例第二种第二种可以读取本地html文件,并且把jpg写到指定位置引入原创 2022-06-02 10:46:37 · 7682 阅读 · 3 评论 -
Java 发送url请求
通过HttpClient方式获取接口信息需提前引入jar包原创 2022-06-07 11:56:21 · 1588 阅读 · 0 评论 -
Java 通过csv表格文件生成转换SQL文件
csv保存为SQL文件,java脚本原创 2022-06-08 17:19:46 · 1337 阅读 · 0 评论 -
Java 操作系统打开选中文件
java操作系统文件原创 2022-06-09 12:03:39 · 301 阅读 · 0 评论 -
Jpa 【已解决】Validation failed for query for method public abstract java.util.List
jpa @Query 注解错误记录原创 2022-06-10 15:05:06 · 1057 阅读 · 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 · 643 阅读 · 0 评论 -
MyBatis 下设置mysql批量执行update sql
本质上Mysql是不支持这种骚操作的但是不代表并不能实现,只需要在jdbc的url链接库地址上添加&allowMultiQueries=true即可然后在映射文件中的标签下将多条sql用;隔开即可,批量添加SQL 也是如此原创 2022-06-16 09:27:55 · 288 阅读 · 0 评论