202107-01 带大家深入了解Spring事务 目录一、数据库事务简介二、事务的特性三、事务的隔离级别四、Spring事务五、PlatformTransactionManager简介六、Spring事务隔离级别和传播级别一、数据库事务简介构成单一逻辑工作单元的操作集合称作事务(transaction)。即使有故障,数据库系统也必须保证事务的正确执行——要么执行整个事务,要么属于该事务的操作一个也不执行。以资金转账为例,应该保证支票账户支出金额的操作和储蓄账户的存入金额的操作在同一个逻辑工作单... 继续阅读 >
202106-29 浅谈Java中File文件的创建以及读写 目录1.创建一个文件2.创建一个文件夹3.创建同目录下文件4.删除文件或空文件夹5.递归删除所有文件(包括子文件)6.读取txt文件内容,流操作要用try-catch(字符流)7.读取文件内容升级方法(字符流)8.文件的写入(字符流)9.从一个文件读取然后写入到另一个文件(字符流)10.从一个文件读取然后写入到另一个文件(字节流图片)11.缓冲流(开发时使用速度更快,效率更高)1.创建一个文件@Testpublicvoidtest6()throwsIOExc... 继续阅读 >
202106-28 通过Java 程序获取Word中指定图片的坐标位置 之前给大家介绍过Java解析word,获取文档中图片位置的方法,感兴趣的朋友点击查看下,今天给大家介绍如何通过Java程序获取Word中指定图片的坐标位置,感兴趣的朋友一起看看吧!程序运行环境:Word测试文档:.docx2013FreeSpire.doc.jar3.9.0IntelliJIDEAJDK1.8.0方法步骤:1.指定文件路径,本次测试代码路径为项目文件夹路径。即在IDEA项目文件下存入用于测试的Word文档,如:C:\Users\Administrator\IdeaPr... 继续阅读 >
202106-23 Java Swing实现坦克大战游戏 一、引言90坦克大战,很经典的一款游戏,当年与小伙伴一人一个手柄,搬上小板凳坐在电视机前,身体时不时跟随手柄摇晃着,时而表情严肃、眉头紧锁,时而欢呼雀跃、喜笑颜开,全身心投入到游戏中,在消灭一只只坦克、守住关卡、坦克升级、晋级通关的时候,更是手舞足蹈、击掌庆祝,如今想想也是记忆犹新、回味无穷!于是乎就我就自己用java写了一个,找一下当年的感觉,顺便虐一下电脑,嘻嘻嘻嘻嘻(ming式笑声)。二、效果图三、实... 继续阅读 >
202106-23 Java CAS机制的一些理解 多线程实践publicclasstest{privatestaticintx;publicstaticvoidmain(String[]args)throwsInterruptedException{Threadtask1=newThread(){@Overridepublicvoidrun(){super.run();for(inti=0;i<1000;i++){x=x+1;}}};Threadtask2=newThread(){@... 继续阅读 >
202106-23 Java cglib动态代理原理分析 本文分下面三个部分来分析cglib动态代理的原理。cglib 动态代理示例代理类分析Fastclass机制分析一、cglib动态代理示例 publicclassTarget{publicvoidf(){System.out.println("Targetf()");}publicvoidg(){System.out.println("Targetg()");}}publicclassInterceptorimplementsMethodInterceptor{@OverridepublicObjectintercept(Objectob... 继续阅读 >
202106-23 浅谈Java8新特性Predicate接口 一、前言Java8中引入了Predicate功能接口。JavaPredicate表示一个参数的谓词。Predicate是一个布尔值的函数。JavaPredicate是一个功能接口,属于java.util.function包。Predicate的功能方法是test(Tt)。Predicate的其他方法是test、isEqual、and、or、negate和not。not方法在Java11中被引入。在本文章,我们将提供Predicate的例子及其所有方法。二、test(Tt)booleantest(Tt)test是Predicate的功能方法。它在给定的参数上... 继续阅读 >
202106-23 Java实用工具之StringJoiner详解 背景在平时的业务开发中,我们可能会遇到字符串列表根据分隔符进行拼接的需求。比如:输入:数组:[“a”,“b”,“c”]分隔符:","输出:“a,b,c”处理通常我们可以使用StringBuilder根据下标位置决定是否需要添加分隔符以达到目的,比如:publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder();String[]strings=newString[]{"a","b","c"};Stringdelimiter=",";... 继续阅读 >
202106-23 JAVA并发中VOLATILE关键字的神奇之处详解 并发编程中的三个概念:1.原子性在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。2.可见性对于可见性,Java提供了volatile关键字来保证可见性。当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。而普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不... 继续阅读 >
202106-23 详解java中BigDecimal精度问题 一、背景在实际开发中,对于不需要任何准确计算精度的属性可以直接使用float或double,但是如果需要精确计算结果,则必须使用BigDecimal,例如价格、质量。为什么这么说,主要有两点1、double计算会有精度丢失问题2、在除法运算时,BigDecimal提供了丰富的取舍规则。(double虽然可以通过NumberFormat进行四舍五入,但是NumberFormat是线程不安全的)对于精度问题我们可以看下实际的例子publicstaticvoidmain(String[]args){... 继续阅读 >
202106-23 Java实现NIO聊天室的示例代码(群聊+私聊) 功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</versi... 继续阅读 >
202106-23 详解java设计模式之六大原则 一、单一职责原则1、单一职责定义单一职责原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的... 继续阅读 >
202106-23 Java Stack与Queue详解 一、Stack示例:packageStackPack;importjava.util.Stack;publicclassStackDemo{publicstaticvoidmain(String[]args){Stack<Integer>stack=newStack<>();for(inti=0;i<10;i++){stack.push(i*2);}//[0,2,3,4,6,8,12,14,16,18]System.out.println(stack.peek());//18System.out.println(stack.search(14));//以1为基数,... 继续阅读 >
202106-23 java算法之静态内部类实现雪花算法 目录概述一、概念1、原理二、静态类部类单例模式生产雪花ID代码1、代码2、测试结果3、为什么说41位时间戳最长只能有69年概述在生成表主键ID时,我们可以考虑主键自增或者UUID,但它们都有很明显的缺点主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。UUID:1、太长,并且有索引碎片,索引多占用空间的问题2、无序。雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序。为了提高生产雪花ID的... 继续阅读 >
202106-23 java算法之余弦相似度计算字符串相似率 概述功能需求:最近在做通过爬虫技术去爬取各大相关网站的新闻,储存到公司数据中。这里面就有一个技术点,就是如何保证你已爬取的新闻,再有相似的新闻或者一样的新闻,那就不存储到数据库中。(因为有网站会去引用其它网站新闻,或者把其它网站新闻拿过来稍微改下内容就发布到自己网站中)。解析方案:最终就是采用余弦相似度算法,来计算两个新闻正文的相似度。现在自己写一篇博客总结下。一、理论知识先推荐一篇博客,对于余弦... 继续阅读 >
202106-23 Java项目有中多个线程如何查找死锁 当项目有中多个线程,如何查找死锁?最近,在IDEA上进行多线程编程中老是在给线程加锁的时候,总是会遇到死锁问题,而当程序出现死锁问题时,编译器不能精确的显示错误的精确位置。当项目代码很多的时候,往往会给自己添加不必要的麻烦,今天,我就分享分享几个解决方法。1.编译环境IDEA2020,windows10,jdk8及以上版本一、死锁是什么?死锁指A线程想使用资源但是被B线程占用了,B线程线程想使用资源被A线程占用了,导致程序无... 继续阅读 >