202109-18 一篇文章告诉你JAVA Mybatis框架的核心原理到底有多重要 目录持久层的那些事什么是JDBCJDBC原理什么是MybatisMybatis与JDBC的关系SqlSessionSqlSessionFactorySqlSessionFactoryBuilderConfigurationMappedStatementExecutorParameterHandlerStatementHandlerResultSetHandlerInterceptorMybatis关键词说明Mybatis架构设计基础支持层反射模块类型转换日志模块资源加载解析器模块核心处理层问题答疑Mybatis中分页如何实现SQL分页拦截器分页总结持久层的那些事什么是JDBCJDBC(J... 继续阅读 >
202109-18 Java源码解析之Gateway请求转发 Gateway请求转发本期我们主要还是讲解一下Gateway,上一期我们讲解了一下Gateway中进行路由转发的关键角色,过滤器和断言是如何被加载的,上期链接://www.jb51.net/article/211824.htm好了我们废话不多说,开始今天的Gateway请求转发流程讲解,为了在讲解源码的时候,以防止大家可能会迷糊,博主专门画了一下源码流程图,链接地址://www.jb51.net/article/211824.htm上一期我们已经知道了相关类的加载,今天直接从源码开始,大家... 继续阅读 >
202109-18 java中for循环执行的顺序图文详析 for循环基础for循环是最灵活也是最常用的循环结构,表达式一般如下:for(条件表达式1;条件表达式2;条件表达式3){语句块;}接下来详细介绍Javafor循环执行顺序的相关内容,先看看一道面试题,来自小米笔试staticbooleanfoo(charc){System.out.print(c);returntrue;}publicstaticvoidmain(String[]args){inti=0;for(foo('B');foo('A')&&(i<2);foo('C')){... 继续阅读 >
202109-18 总结一下关于在Java8中使用stream流踩过的一些坑 Java8的stream流第一个坑:Collectors.toAsList()其实是new了一个list,在向里面赋值。注意这里Collectors.toList()的写法,这里其实是底层newArraryList().筛选的数据放到一个新的list。虽然标1处和标2处是同一个变量,但是内存地址是不一样啊。下面的逻辑时把hldrPolVOList中的某些元素删除。但是这个方法执行完后其实是没有删除里面元素的。原因就是这里的newArraryList()更改了内存地址造成的。测试:解决办法:第二个坑... 继续阅读 >
202109-18 FP-Growth算法的Java实现+具体实现思路+代码 目录FP-Growth算法的Java实现第一次扫描代码第二次扫描挖掘频繁项集总结FP-Growth算法原理其他大佬的讲解FP-Growth算法详解FP-Growth算法的Java实现这篇文章重点讲一下实现。如果看了上述给的讲解,可知,需要两次扫描来构建FP树第一次扫描第一次扫描,过滤掉所有不满足最小支持度的项;对于满足最小支持度的项,按照全局支持度降序排序。按照这个需求,可能的难点为如何按照全局支持度对每个事务中的item排序。我的实现思路扫... 继续阅读 >
202109-18 详解Java实现数据结构之并查集 目录一、什么是并查集二、并查集解析2.1、初始化2.2、并union(inta,intb)2.3、查search(inta)三、优化四、代码实现五、结语一、什么是并查集对于一种数据结构,肯定是有自己的应用场景和特性,那么并查集是处理什么问题的呢?并查集是一种树型的数据结构,用于处理一些不相交集合(disjointsets)的合并及查询问题,常常在使用中以森林来表示。在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素... 继续阅读 >
202109-17 详解Java实现设计模式之责任链模式 目录一、模拟业务需求二、小步小跑的迭代开发三、系统对数据的校验要求四、新建一个抽象类五、子类的实现六、构建责任链和调用七、可维护性八、总结8.1、责任链模式8.2、责任链模式适用的场景一、模拟业务需求假设我们现在需要在我们的系统中导入一批关于学生信息的Excel的数据,其主要的信息有:学号、姓名、年龄、性别等等,在导入系统的时候,我们肯定不能直接的保存到数据库,我们肯定是先要对这个Excel的数据进行校验,看是否... 继续阅读 >
202109-17 Java使用poi导出ppt文件的实现代码 什么是poiApache POI 是用Java编写的免费开源的跨平台的JavaAPI,ApachePOI提供API给Java程式对MicrosoftOffice格式档案读和写的功能。POI为“PoorObfuscationImplementation”的首字母缩写,意为“简洁版的模糊实现”。poi常用的包HSSF -提供读写MicrosoftExcelXLS格式档案的功能。XSSF -提供读写MicrosoftExcelOOXMLXLSX格式档案的功能。HWPF -提供读写MicrosoftWordDOC格式档案... 继续阅读 >
202109-17 解析Java实现设计模式六大原则之里氏替换原则 目录一、什么是里氏替换原则1.1、里氏替换原则定义1.2、里氏替换原则有至少有两种含义二、使用里氏替换原则的目的三、里氏替换原则与继承多态之间的关系四、里式替换的规则4.1、子类方法不能违背父类方法对输入输出异常的约定4.2、子类方法不能违背父类方法定义的功能4.3、子类必须完全实现父类的抽象方法五、里氏替换原则的作用六、里氏替换原则的实现方法七、案例分析7.1、案例一:两数相减7.2、案例二:"几维鸟不是鸟"八、总结... 继续阅读 >
202109-17 Java并发编程之详解ConcurrentHashMap类 前言由于Java程序员常用的HashMap的操作方法不是同步的,所以在多线程环境下会导致存取操作数据不一致的问题,Map接口的另一个实现类Hashtable虽然是线程安全的,但是在多线程下执行效率很低。为了解决这个问题,在java1.5版本中引入了线程安全的集合类ConcurrentMap。java.util.concurrent.ConcurrentMap接口是Java集合类框架提供的线程安全的map,这意味着多线程同时访问它,不会影响map中每一条数据的一致性。ConcurrentMap接... 继续阅读 >
202109-17 Java中的byte & 0xff到底有什么作用? 如果写过通信类的代码,比如socket编程,应该对这个问题不陌生。先说结论byte&0xff是将byte从(-128至127)转化成int(转化后的数值范围:0至255)。其实就是1个byte有两种表示方法,我们既可以用-128-127这段范围来表示一个字节,也可以用0-255这个范围的数来表示一个字节。看一个demo用Java中的InetAddress类来获取我当前的ippublicclassInetAddressTest{publicstaticvoidmain(String[]args)throwsU... 继续阅读 >
202109-17 Java并发编程之详解CyclicBarrier线程同步 CyclicBarrier线程同步java.util.concurrent.CyclicBarrier提供了一种多线程彼此等待的同步机制,可以把它理解成一个障碍,所有先到达这个障碍的线程都将将处于等待状态,直到所有线程都到达这个障碍处,所有线程才能继续执行。举个例子:CyclicBarrier的同步方式有点像朋友们约好了去旅游,在景点入口处集合,这个景点入口就是一个Barrier障碍,等待大家都到了才一起进入景点游览参观。进入景点后大家去爬山,有的人爬得快,有的... 继续阅读 >
202109-16 分析设计模式之模板方法Java实现 目录一、什么是模板方法设计模式1.1、模板方法的用途1.2、模板方法的定义二、定义模板方法的步骤2.1、定义模板类2.2、定义具体子类2.3、定义客户端调用2.4下抽象类和子类之间的UML图和源码实现三、案例3.1、案例1:一日规划3.2、案例2:钩子方法四、模板方法的优缺点4.1、优点4.2、缺点五、使用场景六、对设计模式六大原则的应用思考一、什么是模板方法设计模式从字面意义上理解,模板方法就是定义出来一套方法,作为模板,也就... 继续阅读 >
202109-16 基于Java的MathML转图片的方法(示例代码) Maven依赖:<dependency><groupId>de.rototor.jeuclid</groupId><artifactId>jeuclid-core</artifactId><version>3.1.14</version></dependency>示例:@TestpublicvoidtestMathMlToImg()throwsIOException{//MathML字符串StringmathStr="<mathxmlns=\"http://www.w3.org/1998/Math/MathML\">\n"+"<mi>f</mi>\n"+"<mo>(</mo>\n"+"<mi>x</mi>\n"+"<mo>)... 继续阅读 >
202109-16 Java 中的 xx ≠ null 是什么新语法 奇怪的不等于(≠)最近,栈长用IntelliJIDEA看源码时发现:咦~这是什么鬼?Java不等于的写法不是一直都是!=么?什么时候可以写≠了??不科学啊~以为我是老花眼了,认真看了几遍,觉得应该是IDEA的特效吧,然后去点那个符号,发现也还原不了原样。。。然后互联网网冲浪了一翻,终于被我找到了这个开关:Preferences>Editor>ReaderMode>FontligaturesReaderMode:用于只读模式的编辑器设置。Fontligatures:... 继续阅读 >
202109-16 Java 中的 xx ≠ null 是什么新语法 奇怪的不等于(≠)最近,栈长用IntelliJIDEA看源码时发现:咦~这是什么鬼?Java不等于的写法不是一直都是!=么?什么时候可以写≠了??不科学啊~以为我是老花眼了,认真看了几遍,觉得应该是IDEA的特效吧,然后去点那个符号,发现也还原不了原样。。。然后互联网网冲浪了一翻,终于被我找到了这个开关:Preferences>Editor>ReaderMode>FontligaturesReaderMode:用于只读模式的编辑器设置。Fontligatures:... 继续阅读 >