202010-08 详解java实践SPI机制及浅析源码 1.概念正式步入今天的核心内容之前,溪源先给大家介绍一下关于SPI机制的相关概念,最后会提供实践源代码。SPI即ServiceProviderInterface,属于JDK内置的一种动态的服务提供发现机制,可以理解为运行时动态加载接口的实现类。更甚至,大家可以将SPI机制与设计模式中的策略模式建立联系。SPI机制:从上图中理解SPI机制:标准化接口+策略模式+配置文件;SPI机制核心思想:系统设计的各个抽象,往往有很多不同的实现方案,在面向的... 继续阅读 >
202010-08 java RMI详细介绍及实例讲解 java本身提供了一种RPC框架——RMI(即RemoteMethodInvoke远程方法调用),在编写一个接口需要作为远程调用时,都需要继承了Remote,Remote接口用于标识其方法可以从非本地虚拟机上调用的接口,只有在“远程接口”(扩展java.rmi.Remote的接口)中指定的这些方法才可远程使用,下面通过一个简单的示例,来讲解RMI原理以及开发流程:为了真正实现远程调用,首先创建服务端工程rmi-server,结构如下:代码说明:1.... 继续阅读 >
202010-08 浅谈Java中spring 线程异步执行 多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了Java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说如何使用spring来处理并发事务:1.了解TaskExecutor接口Spring的TaskExecutor接口等同于java.util.concurrent.Executor接口。实际上,它存在的主要原因是为了在使用线程池的时候,将对Java5的依赖抽象出来。这个接口只有一个方法execu... 继续阅读 >
202010-08 Java下SpringBoot创建定时任务详解 序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled)二、基于接口(SchedulingConfigurer)前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。三、基于注解设定多线程定时任务一、静态:基于注解基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响... 继续阅读 >
202010-08 Java应用服务器之tomcat会话复制集群配置的示例详解 会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来;常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或通过给客户端响应首部加cookie这种方式来保持同一cookie或同一ip地址的请求始终发送到同一后端server进行响应;但是这样的会话绑定的方式存在一个问题,就是当后端某一server宕机,那么之前上面的所有会话信息将消失,那么后... 继续阅读 >
202010-08 Java遍历文件夹及子目录代码实例 主要逻辑使用scanner类获取输入的目录,并创建文件对象。新建一个遍历文件夹的方法,参数是已创建的文件对象,递归调用自己。importjava.io.File;publicclassBianLi{publicstaticvoidhuoQuMuLu(Filea){File[]fd=a.listFiles();//获取目录数组for(inti=0;i<fd.length;i++){//将文件对象数组转换为字符数组,并输出数组System.out.println(fd[i]);if(fd[i].isDirectory()){//判断是不是目录... 继续阅读 >
202010-08 Java爬虫技术框架之Heritrix框架详解 Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的、精确的站点内容的深度复制,具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑。一、Heritrix介绍Heritrix采用了模块化的设计,用户可以在运行时选择要用的模块。它由核心类(coreclasses)和插件模块(pluggablemodules)构成。核心类可以配置,但不能被覆盖,插件模块可以由第三方模块取代。所以我们就可以用实现了特定抓取逻辑的第三方... 继续阅读 >
202010-08 Java lastIndexOf类使用方法原理解析 lastIndexOf在字符串中根据搜索条件来返回其在字符串中的位置,空格也计数,如果字符串中没有这样的字符,返回-1。其方法主要有4个:lastIndexOf(intch),返回指定字符在此字符串中最后一次出现处的索引。lastIndexOf(intch,intfromIndex),返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。lastIndexOf(Stringstr),返回指定子字符串在此字符串中最右边出现处的索引。lastIndexO... 继续阅读 >
202010-08 Java反射框架Reflections示例详解 MAVEN坐标<dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.9.10</version></dependency>Reflections的作用Reflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。获取某个类型的所有子类;比如,有一个父类是TestInterface,可以获取到TestInterface的所有子类。获取某个注解的所有类型/字段变量,支持注解参数匹配。使用正则表达式获取所有匹配... 继续阅读 >
202010-08 Java byte数组操纵方式代码实例解析 字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位。坏处是计算机只将每个条目视为一个独立的8位数-这可能是你的程序正在处理的,或者你可能更喜欢一些强大的数据类型,如跟踪自己的长度和增长的字符串根据需要,或者一个浮点数,让你存储说3.14而不考虑按位表示。作为数据类型,在长数组的开头附近插入或移除数据是低效的,因为需要对所有后... 继续阅读 >
202010-08 JAVA 内存溢出案例汇总 写在前面作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。今天,我们就以Java代码的方式来列举几个典型的内存溢出案例,希望大家在日常工作中,尽量避免写这些low水平的代码。定义主类结构首先,我们创建一个名称为BlowUpJVM的类,之后所有的案例实验都是基于这个类进行。如下所示。publicclassBlowUpJVM{}栈深度溢出publicstatic... 继续阅读 >
202010-08 深入理解Java 线程池 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行... 继续阅读 >
202010-08 java中的switch case语句使用详解 java中的switchcase语句switch-case语句格式如下:switch(变量){case变量值1://;break;case变量值2://...;break;...casedefault://...;break;}swtich()变量类型只能是int、short、char、byte和enum类型(JDK1.7之后,类型也可以是String了)。当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况:情况一:若未找到,则执行默认的case。inti=5;switch(i){case0:System.out.printl... 继续阅读 >
202010-08 简单介绍java中equals以及==的用法 简单介绍equals方法是java.lang.Object类的方法有两种用法说明:一、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各... 继续阅读 >
202010-08 java使用URLDecoder和URLEncoder对中文字符进行编码和解码 摘要:URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencodedMIME字符串之间的相互转换。在本文中,我们以使用URLDecoder解决GET请求中文乱码问题为场景说明URLDecoder/URLEncoder的用法,并给出了application/x-www-form-urlencodedMIME字符串的编码规则。一.URLDecoder/URLEncoder使用场景概述URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded... 继续阅读 >
202010-08 java使用URLDecoder和URLEncoder对中文字符进行编码和解码 摘要:URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencodedMIME字符串之间的相互转换。在本文中,我们以使用URLDecoder解决GET请求中文乱码问题为场景说明URLDecoder/URLEncoder的用法,并给出了application/x-www-form-urlencodedMIME字符串的编码规则。一.URLDecoder/URLEncoder使用场景概述URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded... 继续阅读 >