Java
文章平均质量分 87
Cloud-Future
这个作者很懒,什么都没留下…
展开
-
Java Runtime 类详解
Java Runtime 类详解Java Runtime 类使用Java Runtime.exec 方法的使用Java Runtime.getRuntime().exec() 的使用Java Runtime.exec 详解原创 2022-11-18 10:59:34 · 7606 阅读 · 1 评论 -
Java 生成X.509 V3证书
Java 生成 X509 V3证书使用Java 语言生成 X.509 V3证书pem格式证书生成使用Java 语言生成 X.509 V3 pem格式证书原创 2022-10-24 17:07:45 · 5900 阅读 · 6 评论 -
IDEA中强大的Maven依赖管理工具
IDEA中强大的maven依赖管理工具“Denpendencies”点击一下IDEA底部工具栏的“Dependencies”按钮,出现下面的标签视图:注意:只有是maven项目才有这个按钮第1部分:maven项目的modules,点击不同的“module”,在视图第2部分会切换对应“module”的依赖。第2部分:对应maven项目“module”的依赖列表。列表分为4列,分别为依赖名称、依赖scope(test,compile等)、依赖版本号和升级操作。...原创 2022-08-09 18:28:24 · 5646 阅读 · 9 评论 -
Spring Boot+Spring Security+JWT实现系统认证与授权
Spring Boot+Spring Security+JWT实现系统认证与授权Spring Boot整合Spring Security实现JWT认证Spring Boot项目使用JWT认证JWT认证OAuth2 JWT认证原创 2022-08-03 22:37:22 · 3032 阅读 · 0 评论 -
使用Netty实现静态Web服务器
以学习为目的,基于Netty实现一个简单的静态web服务器。使用到的技术及开发环境:基于netty实现静态web服务器。能够提供基本的http服务,仅支持静态资源服务即可。支持静的态资源包括:HTML、JS、CSS、常见的图片(包括但不限于jpeg、png、svg、webp、gif等格式)、字体文件以及其他文件。以上资源在响应到客户端时必须给与正确的MimeType(http中称MediaType),例如:html文件响应时,必须指定响应头。其他资源文件:非web资源文件,例如压缩文件,返回响应头。原创 2022-06-09 21:56:26 · 1290 阅读 · 0 评论 -
基于Servlet的web应用如何防止XSS攻击
Servlet 使用jsp作为视图模板,jsp本身存在XSS漏洞,如果Web应用是基于Servlet技术并且使用jsp作为视图模板,也没有引入任何安全框架,那么你的应用就存在XSS漏洞。本文主要介绍了基于Servlet的web应用如何防止XSS攻击。1. XSS漏洞的类型反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。存储型XSS:<持久化> 代码是存储在服务原创 2021-07-31 12:55:06 · 1156 阅读 · 1 评论 -
源码编译安装OpenJDK
源码编译安装OpenJDK1. 前置条件1.1 操作系统要求1.2 构建必要工具及库安装1.2.1 autoconf1.2.2 zip&unzip1.2.3 gcc&g++1.2.4 X111.2.5 FreeType1.2.6 CUPS1.2.7 ALSA1.2.8 libffi1.2.9 Boot JDK2. 构建OpenJDK2.1 执行configure2.2 make2.3 校验构建的JDK拉取源码,执行命令:get clone https://github.com/open原创 2021-07-18 22:00:05 · 1333 阅读 · 0 评论 -
什么是 JWT -- JSON WEB TOKEN
什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。转载 2021-07-10 17:03:06 · 99 阅读 · 0 评论 -
JVM类加载机制
JVM类加载机制类的生命周期类的加载时机类的加载过程类加载器类的生命周期一个类被加载到内存到拆卸出内存为止,它的整个生命周期包括7个阶段:加载–>验证–>准备–>解析–>初始化–>使用–>拆卸。其中验证、准备和解析3个阶段称为连接(Linking)。类的加载时机什么时候触发类的加载?其实JVM规范并没有严格规定类加载的时机,而是由具体的虚拟机实现自由把我时机。但是虚拟机规范严格规定了有且只有5中情况必须立即对类进行“初始化”(加载、验证、准备自然在此之前)。遇原创 2021-06-11 16:06:36 · 1079 阅读 · 3 评论 -
使用JDK9提供的模块化系统,来定义自己的模块
JDK9提供的模块化系统Java模块化系统的背景模块是什么模块化的目标可靠的配置强封装增强可扩展性能和可维护性可定制的运行环境模块的类型1.具名模块(Named Module)2.无名模块(Unnamed Module)3.自动模块(Automatic Module)查看JDK划分的所有模块如何模块化自己的项目模块相关指令requires 指令exports 和 exports to 指令use 指令provides…with 指令open, opens, opens…to 指令自从JDK9开始,Java原创 2021-05-16 14:55:08 · 1259 阅读 · 0 评论 -
Java 中的enum类
在Java中可以使用enum来定义一个枚举类。枚举类属于类,是一种特殊的类。enum类的基类enum还有基类?是的!每一个enum类都默认有一个基类java.lang.Enum,通过javap -v反编译enum类的class文件可以得到验证:> javap -v com.company.TestEnumClassfile /C:/Users/gyb_c/IdeaProjects/test/out/production/test/com/company/TestEnum.class Las原创 2021-04-13 12:06:03 · 5465 阅读 · 0 评论 -
Java中的Class类
Class类的作用Class类是一个特殊类,它用于表示JVM运行时类或接口的信息。Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。你知道吗?在每一个基本类型的包装类中都有一个共有的静态变量,例如Integer:原创 2021-03-23 15:32:25 · 21501 阅读 · 3 评论 -
JDK9新特性
我相信JDK8仍然是java开发者生产环境的首选。但是作为开发者始终跟上技术的更新迭代的脚步是很有必要的。Oracle以每年两次发版的速度对JDK进行更新迭代,每次发版都带来了诸多特性,这些特性甚至能够颠覆你对java的认识。所以我们有必要停下脚步,重新认识一下新的JDK了。JDK发布时间10 (GA 2018/03/20)11 (GA 2018/09/25)12 (GA 2019/03/19)13 (GA 2019/09/17)14 (GA 2020/03/17)15 (GA 2020/0原创 2021-03-22 12:20:38 · 641 阅读 · 0 评论 -
基于Zookeeper Java API实现服务注册与发现功能
基于Zookeeper Java API实现服务注册与发现功能需求描述设计思路相关概念实现方案服务注册实现方案服务发现实现方案编码实现zookeeper环境Maven依赖配置文件属性配置实现应用配置实现zookeeper配置实现服务注册实现服务发现实现启动类实现(测试)最后通过使用zookeeper提供的java API更好的学习和理解zookeeper。需求描述大致满足服务注册与发现的基本功能服务的注册功能服务上线自动注册到zookeeper服务离线自动从zookeeper中删除服务动态发原创 2021-02-27 17:34:59 · 1093 阅读 · 2 评论 -
JVM运行时数据区总结
JVM在运行时将不同的数据分别存储到不同的内存中,运行时数据区包括方法区、虚拟机栈、本地方法栈、程序计数器和堆,其中方法区和堆是线程间共享的区域,其他是线程私有的。 线程私有的区域随着线程的创建而创建随着线程的结束而销毁。1、程序计数器 程序计数器(ProgramCounter Register)指向当前线程正在执行的字节码指令。 是线程私有的。2、虚拟机栈 虚拟机栈是Java执行方法的内存模型。每个方法被执行的时候...原创 2020-12-31 14:29:30 · 129 阅读 · 0 评论 -
JVM垃圾收集器常用的垃圾收集算法
JVM垃圾收集器常用的垃圾收集算法有引用计数法、标记-整理算法、复制算法、标记-压缩算法、增量算法和分代收集算法,其中标记-整理算法和复制算法是比较基础的算法,其他的收集算法都是在其基础上改进而来的。下面是每一个算法的介绍和工作原理。目录1、引用计数法 (Reference Counting)2、标记-清除算法 (Mark-Sweep)3、复制算法 (Copying)4、标记-...原创 2020-01-05 19:45:09 · 210 阅读 · 0 评论 -
Runtime.getRuntime.exec的陷阱
近期在项目有一个需求,需要通过Java的Runtime.getRuntime().exec()执行外部的一个批处理脚本,发现在执行的时候,出现各种诡异的问题,脚本执行一半出现卡死。而脚本在终端上运行没有任何问题。Java代码: public final static void process1(String[] cmdarray) { Process p...转载 2020-01-03 09:55:42 · 1322 阅读 · 0 评论 -
使用策略模式干掉代码中的if...else...
需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的ifelse:策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文...转载 2020-01-01 16:09:51 · 295 阅读 · 0 评论 -
FreeMarker简单总结
!对输出的空值做处理,只输出无返回值输出name的值:${name}。如果name为null,就会报错。输出name的值:${name!}。如果name为null,就不会报错,什么也没输出。(重点)输出name的值:${name!"默认值"}。如果name为null,就输出”默认值”字符串。(重点)输出name的值:${name!100}。如果name为null,就输出100。...转载 2019-11-26 14:31:20 · 293 阅读 · 0 评论 -
最全的JDK发布历史轨迹
到目前为止jdk已经发布了13个版本,从jdk1.0到jdk13经历了23年之久,随着每一个版本的发布,jdk都带来了新的功能与特性。在jdk14即将发布之际,一起来了解一下jdk的发布历史轨迹吧!Java语言的相关组织和规范(其他语言也有类似的组织):JCP:(Java Community Process)由世界上各个为 Java 发展操心的人士组成的社区,参与定义 Java 新特性和新...转载 2019-10-23 09:50:44 · 964 阅读 · 0 评论 -
深入理解volatile
作者:风过无痕 https://www.cnblogs.com/tangyanbo原文标题:你真的了解volatile吗?很早就接触了volatile,但是并没有特别深入的去研究它,只有一个朦胧的概念,就是觉得用它来解决可见性的,但可见性又是什么呢?最近经过查阅各种资料,并结合自己的思考和实践,对volatile有了比较深刻的认识,在此总结并分享给大家。可见性如何理解...转载 2019-03-17 11:00:34 · 185 阅读 · 0 评论 -
动态代理(java)
动态代理是Java中最重要的设计模式之一,学习动态代理有利于更深入的学习Java框架原理,例如Spring和MyBatis,它们底层的实现得益于Java的动态代理。下面的方式演示了Java代理的实现过程,以一个Dao的操作为例:/** * 必须为代理提供的接口 * @author Administrator * */public interface Dao { i原创 2017-11-29 17:23:01 · 255 阅读 · 0 评论 -
HashMap的实现原理
作者:奋进的小样 原文:https://www.cnblogs.com/fenjyang/p/11486403.html一,前言1.1,概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射(K-V)。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 Col...转载 2019-09-09 20:58:14 · 218 阅读 · 0 评论 -
Java 中***.class.getResource(name) 与***.class.getClassLoader().getResource(name)的区别
***.class.getResource(name) 与***.class.getClassLoader().getResource(name)都是Java中获取资源的方法。相同点: ***.class.getResource(name) 与***.class.getClassLoader().getResource(name)都返回java.net.URL来表示资源的路径,...原创 2019-04-29 17:43:35 · 334 阅读 · 0 评论 -
生产者与消费者模式之烧饼店铺
生产者与消费者模式是Java线程同步问题中的一个非常经典的例子,以一个故事开始: 话说,在江南的一个小镇上,有一个烧饼铺,这儿的老板人做烧饼堪称一绝,非常好吃,最重要的是他人不仅长得帅,而且善良大方,镇上的人都喜欢来店铺吃烧饼,烧饼铺美名满天下。 这天风和日丽,鸟语花香,一切都是那么美好。突然,来个三个人,第一个叫属驴,第二个叫田小四,第三个老羊。属驴这人,黑...原创 2018-04-09 16:57:13 · 279 阅读 · 0 评论 -
Java 中的异常
PS:这是我看过对Java中异常总结最好的文章。原文地址:http://www.importnew.com/26613.htmlJava标准裤内建了一些通用的异常,这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Ex...转载 2018-03-16 16:41:54 · 263 阅读 · 0 评论 -
Java 实现简单的Http服务器
Java 实现简单的Http服务器 首先需要说明的是,这个HTTP服务器真的超级简单,简单到只有一个Java类,它只能返回一个特定的HTML文本。写这个HTTP服务器程序是为了探究Web服务器到底是如何提供HTTP服务的。 要搞清这个问题,你最好先简单了解一下HTTP协议,起码要知道HTTP请求和HTTP响应是什么,HTTP报文格式是怎样的。HTTP报文有两种:请求报文原创 2018-02-02 11:11:25 · 9726 阅读 · 0 评论 -
Java volatile关键字
使用Java编写线程安全的程序关键在于正确的使用共享对象,以及安全的对其进行访问管理。Java的内置锁可以保障线程安全,对于其他的应用来说并发的安全性是在内置锁这个“黑盒子”内保障了线程变量使用的边界。谈到线程的边界问题,随之而来的是Java内存模型另外的一个重要的含义,可见性。Java对可见性提供的原生支持是volatile关键字。volatile关键字 volati原创 2018-01-15 12:34:33 · 499 阅读 · 0 评论 -
Java 设计模式之单例实现与分析
Java 实现单例模式的方式有好多种,具体请看单例模式下面这种实现方式是最安全高效的public class Singleton { private static Singleton instance; //定义一个静态类变量的引用 private Singleton(){ } //构造函数私有化 public static Singleton getInstance(){ //原创 2017-07-17 19:05:56 · 268 阅读 · 0 评论 -
Java多线程同步:生产者与消费者
生产者与消费者问题问题是线程同步里边一个很经典的问题。用通俗的语言来描述这个过程:一群生产者不断的生产产品,并将产品放到一个容器里边;同时一群消费者不断从容器里边消费产品。容器的容量是有限的。如果容器满了,生产者不能再往容器放产品,必须进入等待状态。等待产品被消费者拿走了,再往容器放产品。同样,如果容器空了,消费者也必须进入等待状态。等待生产者往里边放产品,再将消费者唤醒。原创 2017-07-16 17:00:45 · 515 阅读 · 0 评论 -
Java IO流关闭问题的深入研究
前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记录下,本文主要研究两个问题:包装流的close方法是否会自动关闭被包装的流?关闭流方法是否有顺序?包装流的close方法是否会自动关闭被包装的流?平时我们使用输入流和输出流一般都会使用buffer包装一下, 直接看下面代码(这个代码运行正常,不会报错)import java.io.Buff转载 2017-07-04 17:51:33 · 713 阅读 · 0 评论 -
Java 实现多线程的方式
Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的转载 2017-07-04 17:49:27 · 309 阅读 · 0 评论 -
jvm 常用参数
几个开发人员会用到的标准参数-client :设置JVM使用client模式,特点启动较快(神机不明显(I5/8G/SSD))-server :设置JVM使用server模式。64位JDK默认启动该模式-agentlib:libname[=options] :用于加载本地的lib-agentlib:hprof :用于获取JVM的运行情况-agentpath:pathnamep[=options] ...转载 2018-06-29 16:51:20 · 182 阅读 · 0 评论 -
什么是JNDI?
JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。1.命名的概念与应用 JNDI中的命名(Naming),就是将Java对象以某个名称的形式绑定(bindi...原创 2018-09-15 20:51:35 · 35364 阅读 · 7 评论 -
浅谈spring为什么推荐使用构造器注入
原文:https://cloud.tencent.com/developer/article/1126880【Spring】浅谈spring为什么推荐使用构造器注入一、前言 Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器...转载 2019-04-23 10:10:22 · 922 阅读 · 2 评论 -
MySQL 报错java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GE
有这样一种场景,在插入数据之后需要获取生成的数据主键,在使用Spring JDBC的JdbcTemplate的update(PreparedStatementCreator,KeyHolder)方法获取生成的主键,出现下面的异常:java.sql.SQLException: Generated keys not requested. You need to specify Statement....原创 2019-03-27 15:13:47 · 984 阅读 · 0 评论 -
HashMap和TreeMap的内部结构
原文:https://www.cnblogs.com/wzj4858/p/8206037.html一、HashMap1、基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2、Hash...转载 2019-04-10 10:44:04 · 111 阅读 · 0 评论 -
JSONP实现跨域原理
浏览器只对XMLHttpRequest请求有同源请求限制,而对script标签src属性、link标签ref属性和img标签src属性没有这这种限制,利用这个“漏洞”就可以很好的解决跨域请求。JSONP就是利用了script标签无同源限制的特点来实现的。当然需要后端服务器的配合,返回一个合法的JS脚本,一般是一条调用js函数的语句,数据作为函数的入参。 看下面的例子:...原创 2019-03-07 13:43:37 · 1080 阅读 · 0 评论 -
Java中到底有没有必要使用StringBuilder#append方法代替使用‘+’来拼接字符串
对具有一定编程经验的java开发者,在编码的时候遇到字符串拼接的情况,一般不会使用‘+’号来拼接,认为这样做效率低,使用StringBuilder的append方法取而代之。在这之前我也觉得这种观点是对的,并且深信不疑。在Java中到底有没有必要使用StringBuilder#append方法代替‘+’来拼接字符串,在代码中使用‘+’号来拼接字符串真的会产生效率问题吗?答案是否定的!要...原创 2019-02-25 17:28:44 · 1223 阅读 · 0 评论 -
Tomcat 与Servlet对应关系
Tomcat 与Servlet 技术对应关系tomcat 版本 servlet版本 JSP版本 tomcat 6 Servlet2.5 JSP2.1 tomcat 7 Servlet3.0 JSP2.2 tomcat 8 Servlet3.1 JSP2.3 tomcat 9 Servlet4.0 ...原创 2018-09-15 14:05:24 · 2275 阅读 · 0 评论