202009-25 一键配置jdk环境变量的批处理代码 第一步:肯定是下载JDK并且安装好,记住路径创建java环境变量批处理cheng步骤:1、新建txt文本后选择编辑。2、输入如下代码@echooffecho正在设置Java环境变量pausewmicENVIRONMENTcreatename="JAVA_HOME",username="<system>",VariableValue="C:\ProgramFiles(x86)\Java\jdk1.7.0_79"wmicENVIRONMENTcreatename="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib\tools.jar"wmicE... 继续阅读 >
202009-25 Java事件机制要素及实例详解 java事件机制中包含下述三要素:1、事件,发生了什么事,比如用户在界面上的一个操作(手势滑动屏幕),当一个事件发生的时候,该事件用一个事件对象表示,每一个事件对象都有其对应的事件类。Java中事件一般继承自java.util.EventObject类,封装了事件源对象,以及事件的相关信息。每一类事件有一个相应的事件监听器接口,该接口定义了接收和处理事件的抽象方法。实现该接口的类,就是监听器类。其对象可作为监听器对象向相应的组... 继续阅读 >
202009-25 Java Lock接口实现原理及实例解析 1、概述JUC中locks包下常用的类与接口图如下:图中,Lock和ReadWriteLock是顶层锁的接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。ReadWriteLock接口以类似方式定义了读锁而写锁。此包只提供了一个实现,即ReentrantReadWriteLock。Condition接口描述了可能会与锁有关联的条件变量。这些变量在用法上与使用Object.wait访问的隐式监视器类似,但提供了更强... 继续阅读 >
202009-25 Java动态代理语法Proxy类原理详解 1、前言写动态代理的代码涉及了一个非常重要的类Proxy,通过Proxy的静态方法newProxyInstance才会动态创建代理对象。2、newProxyInstance方法publicstaticObjectnewProxyInstance(ClassLoaderloader,Class<?>[]interfaces,InvocationHandlerh)三个参数分别表示:loader表示类加载器,interfaces表示代码要用来代理的接口,h表示一个InvocationHandler对象,前面两个参数容易理解,最后一个InvocationHandler是什... 继续阅读 >
202009-25 Java操作Redis2种方法代码详解 Java操作Redis的方式有下面两种:一、jedis(1)maven配置<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency>(2)相关类单节点:redis.clients.jedis.Jedis集群:redis.clients.jedis.JedisCluster(3)说明使用的类和api不一样,导致对redis单节点和集群要特地区别对待。无法集成springCache。JedisCluster没有对象序列化/反序列化... 继续阅读 >
202009-25 简单了解java类型转换常见的错误 类型转换虽然很简单,但是还是有些小细节要多注意。String转化为int:Stringtest="123";intnumber=Integer.parseInt(test);String转化为Integer,可以如下所示。也适用于int转化为Integer:Stringtest="123";//Stringtest="abc";//会报错:NumberFormatException:ForinputstringIntegernumber=Integer.valueOf(test);注意:不管是使用Integer.parseInt(),还是使用Integer.valueOf()将字符串转换成数字,如果是非数字... 继续阅读 >
202009-25 Java基于jeeplus vue实现简单工作流过程图解 jeeplus是一款基于代码生成器的快速开发平台。前后端分离、maven多模块开发,方便多人协同开发后端选型:springboot2+mybatis+shiro+jwttoken+flowable前端选型:vue+element-ui+es6+webpack代码生成器支持连接不同的数据库,生成的模块可以连接指定的数据库,支持自定义模板,可以无限扩展,生成各种复杂的代码一套代码支持mysql,oracel,postgresql,sqlserver数据库html5工作流设计器+动态表单+数据权限+... 继续阅读 >
202009-25 Java加权负载均衡策略实现过程解析 加权轮询后端集群每台机器都分配一个权重,权重高得会承担更多的流量,相反权重低的分配的流量也会少,这种策略允许后端集群机器配置差异化java实现importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importorg.springframework.stereotype.Controller;@ControllerpublicclassIpMapControllerextendsLogBaseControllerimple... 继续阅读 >
202009-25 java多线程之Phaser的使用详解 前面的文章中我们讲到了CyclicBarrier、CountDownLatch的使用,这里再回顾一下CountDownLatch主要用在一个线程等待多个线程执行完毕的情况,而CyclicBarrier用在多个线程互相等待执行完毕的情况。Phaser是java7引入的新的并发API。他引入了新的Phaser的概念,我们可以将其看成一个一个的阶段,每个阶段都有需要执行的线程任务,任务执行完毕就进入下一个阶段。所以Phaser特别适合使用在重复执行或者重用的情况。基本使用在Cyclic... 继续阅读 >
202009-25 java结合email实现自动推送功能 1、获取表中最后一条数据publicstaticStringdemo()throwsSQLException{Stringsql="select*FROMbaoxiuORDERBYidDESCLIMIT0,1;";PreparedStatementptmt=conn.prepareStatement(sql);ResultSetrs=ptmt.executeQuery();Stringstr=null;if(rs.next()){str=rs.getString("bt");}returnstr;}2、使用模糊查询,获取符合条件的所有数据publicstaticList<DuibiModel>getBaoX(Stringbt)throws... 继续阅读 >
202009-25 Java成员变量默认值原理详解 如果我们不做任何初始化工作,变量具有什么默认值,或者是否具有默认值呢?其实,成员变量在创建时,系统会为其分配一个默认值。不同类型的变量,默认值也不相同,下面来看看各种类型的默认值分别是什么。用例子来说明:先输入一个java代码(这里只包括了实例变量)classText1{//实例成员变量privatebooleanbool;privatebyteb;privateshorts;privatecharc;privateinti;privatelongl;privatefloat... 继续阅读 >
202009-25 通过实例解析java String不可变性 一、原理1、不变模式(不可变对象)在并行软件开发过程中,同步操作似乎是必不可少的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步操作对系统性能是相当的损耗。为了能尽可能的去除这些同步操作,提高并行程序性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然始终保持内部状态的一致性和正确性。这就是不变模式。... 继续阅读 >
202009-24 通过实例解析java过滤器和拦截器的区别 区别1.使用范围和规范不同filter是servlet规范规定的,只能用在web程序中.拦截器即可以用在web程序中,也可以用于application,swing程序中,是Spring容器内的,是Spring框架支持的2.触发时机不同顺序:Filter-->Servlet-->Interceptor-->Controller过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前过滤器处理。拦截器是方法到达Controller层之前生效的3.... 继续阅读 >
202009-24 Java 线程状态和等待唤醒机制和线程池的实现 1.概念线程一共有6中状态,相互之间可以互相转换。等待唤醒案例(线程之间的通信)实现:等待唤醒案例:线程之间的通信创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子注意:顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行同步使用的锁对象必须保证唯... 继续阅读 >
202009-24 Java IO流常用字节字符流原理解析 Java的流体系十分庞大,我们来看看体系图:这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:一:字节流1:字节输入流字节输入流的抽象基类是InputStream,常用的子类是FileInputStream和BufferedInputStream。1)FileInputStream文件字节输入流:一切文件在系统中都是以字节的形式保存的,无论你是文档文件、视频文件、音频文件...,需要读取这些文件都可以用FileInputStream去读取其保存在存储介质(磁盘等... 继续阅读 >
202009-24 Java Springboot如何基于图片生成下载链接 现有一些图片在服务器上的链接,在浏览器中打开这些链接是直接显示在浏览器页面的形式。现在需要生成这些图片的单独下载以及打包下载链接,即在浏览器中打开下载链接后弹出下载框提示下载。由于前端存在跨域问题,所以图片下载由后台接口完成。首先编写文件下载工具类:importjava.net.URL;importjava.net.MalformedURLException;importorg.apache.commons.io.FileUtils;publicclassFileDownloadUtil{/***下载文件---返... 继续阅读 >