
Java
文章平均质量分 86
编程语言是一种工具。拥抱它,变得更有效率!
坐望云起
专注人工智能、深度学习、机器学习、计算机视觉、图像处理等领域
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
若依spring框架升级到JDK17 + spring boot3 + spring framework6的趟坑记录
1、jakarta.servlet-api升级之后,需要把所有的controller或其它类相关的HttpServletResponse、HttpServletRequest,都用jakarta.servlet.http.HttpServletResponse;(2)/**/*.css要改成/*/*.css,/druid/**改成/druid/*,总之不能有两个**4、maven-compiler-plugin要加上这个。主要配置如下,出现的问题也都是版本原因。5、下面是版本的主要记录。原创 2025-02-26 11:50:45 · 890 阅读 · 0 评论 -
Hadoop概览以及编译hadoop说明
Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据,即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库,因为它们的用途不同,架构也不同。Hadoop 是一个跨分布式计算机集群存储和处理大量非结构化和半结构化数据的框架。它专为处理大数据而设计,并支持使用 HDFS 和 MapReduce 等技术对大型数据集进行批处理。而数据仓库是针对查询和分析进行了优化的结构化数据集中存储库。原创 2024-05-26 15:35:43 · 1112 阅读 · 0 评论 -
Java多线程学习笔记 - 三、Thread类源码内的方法概览
查看了基于JDK1.8版本的Thread类中的绝大多数方法的概览。原创 2022-03-16 10:45:22 · 469 阅读 · 0 评论 -
Java多线程学习笔记 - 五、Java中线程的生命周期
在Java中,多线程是由Thread的核心概念驱动的。在它们的生命周期中,线程会经历各种状态:java.lang.Thread类包含一个静态的 State 枚举——它定义了线程的状态。包括以下几种状态:NEW – 新创建的尚未开始执行的线程RUNNABLE –正在运行或准备好执行,但它正在等待资源分配BLOCKED –等待获取监视器锁以进入或重新进入同步块/方法WAITING –等待其他线程执行特定操作,没有任何时间限制原创 2022-03-17 20:25:48 · 494 阅读 · 0 评论 -
Java基础知识点汇总 三 集合
Collection 框架的层次结构。java.util包包含Collection 框架的所有类和接口。Java 集合框架的核心元素——接口、实现、聚合操作和算法。Java的集合类定义在java.util包中,支持泛型,主要提供了3种集合类,包括List,Set和Map。Java集合使用统一的Iterator遍历,尽量不要使用遗留接口。原创 2022-04-02 14:50:07 · 666 阅读 · 0 评论 -
Java Demo示例:Springboot解决Access-Control-Allow-Origin跨域问题、浏览器同源策略详解
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。同源策略是一种关键的安全机制,它限制一个源加载的文档或脚本如何与另一个源的资源进行交互。跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。...原创 2020-05-04 09:59:09 · 14461 阅读 · 1 评论 -
Java加密:六、爱德华兹曲线数字签名(EdDSA)算法
在公钥密码学中,爱德华兹曲线数字签名算法( EdDSA ) 是一种数字签名方案,它使用基于扭曲爱德华兹曲线的Schnorr 签名变体。它被设计为比现有的数字签名方案更快而不牺牲安全性。在Java中,EdDSA(爱德华兹曲线数字签名算法)[RFC 8032 ] 是在Java 15中通过JEP 339添加的另一种附加数字签名方案。它不会取代 JDK 中现有的椭圆曲线数字签名算法(ECDSA)。原创 2022-04-19 06:00:00 · 5210 阅读 · 0 评论 -
Java多线程学习笔记 - 十、可重入锁ReentrantLock
在Java 5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。Java 5.0增加了一种新的机制:ReentrantLock。在大多数情况下,内置锁都能很好地工作,但在功能上存在一些局限性,例如,无法中断一个正在等待获取锁的线程,或者无法在请求获取一个锁时无限地等待下去。内置锁必须在获取该锁的代码块中释放,这就简化了编码工作,并且与异常处理操作实现了很好的交互,但却无法实现非阻塞结构的加锁规则。原创 2022-04-04 20:29:01 · 677 阅读 · 0 评论 -
Java Demo示例:springboot下使用ehcache/JSR实现缓存机制
Ehcache 是一种开源的、基于标准的缓存,可提高性能、卸载数据库并简化可扩展性。它是最广泛使用的基于 Java 的缓存,因为它健壮、经过验证、功能齐全,并且与其他流行的库和框架集成。Ehcache 从进程内缓存扩展到具有 TB 级缓存的混合进程内/进程外部署。Ehcache也提供分布式集群,不过就易用性和成熟度相比之下redis可能更适合大型应用做分布式缓存。另外它提供了JSR-107缓存管理器的实现。原创 2022-05-17 16:24:05 · 559 阅读 · 0 评论 -
身份验证协议和java安全框架
在开发应用程序时,安全性是一个主要问题。在 JAVA 中,有多个安全框架旨在使保护应用程序的过程更快、更容易、更成功。下面是一些通常用于 JAVA 程序、网站和 Web 应用程序的用户身份验证和授权的安全框架。原创 2022-05-16 20:36:25 · 1903 阅读 · 0 评论 -
Java基础知识点汇总 四 泛型
泛型意味着参数化类型。允许类型(整数、字符串等,以及用户定义的类型)作为方法、类和接口的参数。使用泛型,可以创建使用不同数据类型的类。对参数化类型进行操作的实体(例如类、接口或方法)是泛型实体。Object是所有其他类的超类,Object 引用可以引用任何对象。这些功能缺乏类型安全性。泛型添加了这种类型的安全功能。Java 中的泛型类似于 C++ 中的模板。比如HashSet、ArrayList、HashMap等类,就很好的使用了泛型。原创 2022-04-03 11:34:33 · 6552 阅读 · 1 评论 -
Java开发常见问题汇总一
1、mybatis.type-aliases-package的作用2、spring boot启动就关闭的原因3、application.properties和application.yml的区别4、mybatis中$和#区别5、springboot遇到定时任务@Scheduled不启动解决方案6、IDEA添加getter、setter方法的快捷键7、MyBatis使用大于等于之类的时候需要转义8、MyBatis批量插入9、Java中Service和DAO有必要每个类都加上接口......原创 2022-05-09 05:30:00 · 817 阅读 · 0 评论 -
Java多线程学习笔记 - 二、自增(减)不是原子操作
1、Java自增(减)不是原子操作。自增自减不是原子性操作,也就是说不是线程安全的运算。因此,在多线程下,如果你要对共享变量实现自增自减操作,就要加锁,或者使用JDK提供的原子操作类(如AtomincInteger,AtomicLong等)提供的原子性自增自减方法。2、使用原子类和synchronized都能保证线程安全,但是其实现原理不同。3、Synchronized 是仅适用于方法和块但不适用于变量和类的修饰符。原创 2022-03-15 13:23:24 · 1289 阅读 · 0 评论 -
Java虚拟机(JVM) - 字节码
Java 字节码是 Java 虚拟机的指令集。它的作用类似于汇编器,汇编器是 C++ 代码的别名表示。一旦编译了 java 程序,就会生成 java 字节码。用更恰当的术语来说,java 字节码是 .class 文件形式的机器码。在 java 字节码的帮助下,我们在 java 中实现了平台独立性。原创 2022-03-22 17:13:12 · 3841 阅读 · 1 评论 -
Java基础知识点汇总 二 类和对象
声明类声明成员变量定义方法为您的类提供构造函数将信息传递给方法或构造函数嵌套类原创 2022-03-20 15:38:17 · 368 阅读 · 0 评论 -
Java多线程学习笔记 - 九、Java多线程中的死锁
java中的每个对象都有一个唯一的锁。在任何时刻,最多只允许一个线程拥有这把锁。当我们使用synchronized关键字时,锁的概念就会出现。synchronized关键字用于使类或方法成为线程安全的,这意味着只有一个线程可以拥有同步方法的锁并使用它,其他线程必须等待锁释放并且其中任何一个获得该锁。 如果我们的程序在两个或多个线程同时执行的多线程环境中运行,则使用它很重要。但有时它也会导致一个称为死锁的问题。原创 2022-04-04 16:57:50 · 850 阅读 · 0 评论 -
Java加密:四、非对称加密算法
非对称加密算法与对称加密算法的主要差别在于非对称加密算法用于加密和解密的密钥不相同,一个公开,称为公钥;一个保密,称为私钥。RSA算法实现易于理解,对于RSA算法的测试只需要注意经公钥加密的数据是否可以通过私钥将其解密,反之,经私钥加密的数据是否可以通过公钥将其解密。与DH算法不同,RSA算法仅需要一套密钥即可完成加密/解密操作,并且公钥的密钥长度明显小于私钥的密钥长度,更便于发送和携带。原创 2022-03-03 17:49:02 · 2547 阅读 · 0 评论 -
Java基础知识点汇总 五 日期和时间
原有的 Date 和 Calendar 类不提供线程安全。因此,它会导致开发人员需要注意的难以调试的并发问题。Java8 的 Date-Time API 中的大多数类都创建了 不可变的对象,这意味着对象创建后就无法修改。要更改不可变对象的值,必须将新对象构造为原始对象的修改副本。这也意味着 Date-Time API 根据定义是线程安全的。原创 2022-04-25 17:42:52 · 592 阅读 · 0 评论 -
centos7.6下使用Docker安装Elasticsearch8.2.0 测试三
之前的两篇一个是使用使用 Docker 启动单节点集群,然后添加其它节点,另一个是使用官方提供的docker-compose来运行的。不过都是在一台服务器上,适合开发。所以这里又基于三台虚拟机重新搭建了一次。Elasticsearch有两个级别的通信,传输协议和http协议。传输协议用于Elasticsearch节点之间的内部通信,http 协议用于从客户端到 Elasticsearch 集群的通信。这里最麻烦的就是配置安全证书。原创 2022-05-14 11:49:36 · 2037 阅读 · 0 评论 -
Java加密:三、对称加密
一、对称加密概述对称加密算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施但凡涉及安全需求,都会优先考虑对称加密算法。对于大多数对称加密算法而言,解密算法是加密算法的逆运算,加密密钥和解密密钥相同。对称加密算法易于理解,便于实现,根据加密方式又分为密码和分组密码,其分组密码工作模式又可分为ECB、CBC、CFB、OFB和CTR等,密钥长度决定了加密算法的安全性。二、DES、3DES、AES、P...转载 2022-03-03 16:13:14 · 1919 阅读 · 0 评论 -
Java加密:五、SM2国密算法
Java实现的SM2国密算法。SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。SM2算法是在国际标准的ECC椭圆曲线密码理论基础上进行自主研发设计,具备ECC算法的性能特点并实现优化改进。转载 2020-05-16 20:45:33 · 26104 阅读 · 3 评论 -
Java基础知识点汇总 六 点滴Java语言基础问题
实例初始值设定项是类中的代码块,可用于初始化其成员。每次创建类的对象时以及在调用构造函数之前都会调用它。int legs;输出字符串重复数据删除可帮助我们节省 Java 应用程序中重复字符串对象占用的内存。它通过使重复或相同的字符串值共享相同的字符数组来减少 Java 堆内存中字符串对象的内存占用。12. 您可以使用“super”关键字调用已实现类中接口的静态方法吗?无法编译!!但是,您可以使用“super”关键字调用继承类中类的静态方法。原创 2023-07-02 19:50:58 · 314 阅读 · 0 评论 -
Java Demo示例:实现动态编译的demo
位于javax.tools的JavaCompiler类提供了从程序调用 Java™ 编程语言编译器的接口。编译器可能会在编译期间生成诊断信息(例如,错误消息)。 如果提供了诊断侦听器,则诊断将提供给侦听器。 如果未提供侦听器,则诊断将被格式化为未指定的格式并写入默认输出,即 System.err,除非另有说明。 即使提供了诊断侦听器,某些诊断也可能不适合诊断,并将被写入默认输出。原创 2022-05-18 09:08:26 · 863 阅读 · 0 评论 -
Java多线程学习笔记 - 六、使用Thread.join()方法
与wait()和notify() 方法一样,join()是另一种线程间同步机制。当调用join()方法时,调用线程进入等待状态。它一直处于等待状态,直到被调用的线程终止。join(): 即join(0),主线程无限等待子进程结束,主线程方可执行。join(long millis):主线程需等待子进程*毫秒,主线程方可执行。原创 2022-03-18 12:06:09 · 863 阅读 · 0 评论 -
Java多线程学习笔记 - 十二、并发工具
了解并发包内一些工具的作用和使用方法。包括原子变量、信号量、Exchanger、CountDownLatch、CyclicBarrier、Phaser、CompletableFuture、ThreadLocal、ThreadLocalRandom。原创 2022-04-07 20:02:14 · 798 阅读 · 0 评论 -
Java基础知识点汇总 一 String、算数运算符、位运算符、数据类型、访问修饰符
1、String、StringBuffer、StringBuilder区别2、== 和 equals 有什么区别?3、类的成员(包括内部类)的修饰符。4、&和&&的区别5、instanceof 运算符6、<<左移、>>右移、>>>无符号右移、&位与、|位或、~位非、^位异或原创 2022-03-20 10:43:54 · 577 阅读 · 0 评论 -
API接口安全思考和最佳实践
应用程序编程接口 (API) 允许软件应用程序相互交互。它是现代软件模式的基本组成部分,例如微服务架构。API 安全是保护 API 免受攻击的过程。由于 API 非常常用,而且它们可以访问敏感的软件功能和数据,因此它们正成为攻击者的主要目标。API 安全性是现代 Web 应用程序安全性的关键组成部分。API 可能存在身份验证和授权损坏、缺乏速率限制和代码注入等漏洞。组织必须定期测试 API 以识别漏洞,并使用安全最佳实践解决这些漏洞。本文介绍了 API 安全测试的几......原创 2022-05-16 16:06:12 · 4004 阅读 · 0 评论 -
Java多线程学习笔记 - 四、如何完美的中断线程
如果想要中断一个线程。1、如果中断标志位不会被多个线程使用,则可以使用boolean标志位,否则使用AtomicBoolean标志位。2、在正常运行任务时,经常检查本线程的中断标志位,如果被设置了中断标志就自行停止线程。3、在调用阻塞方法时正确处理InterruptedException异常。(catch异常后就结束线程。)原创 2022-03-16 20:56:11 · 398 阅读 · 0 评论 -
Java基础知识点汇总 六 Buffer缓冲区
从Buffer类的Java文档中可以发现,Buffer类是一个抽象类,它具有7个直接子类,分别是ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer,也就是缓冲区中存储的数据类型并不像普通I/O流只能存储byte或char数据类型,Buffer类能存储的数据类型是多样的。1、适合使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。原创 2022-10-09 10:20:21 · 1462 阅读 · 0 评论 -
GraphQL是更好的REST吗?
根据需要,GraphQL 和 REST API 开发生命周期方法都很有用,并且都有其优点和缺点。GraphQL 正以指数方式获得普及,主要是因为它的“没有过度和不足”的能力。它为客户端提供了更有效的协作机制,并且被证明是一个强大的工具,尤其是在软件行业正在采用敏捷框架的情况下。简而言之,GraphQL 是实现特定查询导向目标的工具;然而,它并不是解决所有 API 相关问题的解决方案,当然也不能替代 REST。原创 2022-05-16 11:25:36 · 249 阅读 · 0 评论 -
使用java.lang.Record类删除样板代码
在编程世界中,样板代码是代码的一部分,项目里面使用的地方很多,但是通常创建完成之后就很少或者就不会更改了。在Java中,不可变的数据载体类用于与数据库,Web服务进行通信,会创建许多样板代码,其中包括构造函数,访问器,equals(),hashCode()和toString()等。需要注意的一点是,记录中不会有任何 setter 方法,因为所有记录类都是不可变的,您无法修改它们。您可以使用记录中的小快捷方式覆盖记录中的规范构造函数,称为“紧凑构造函数”,我们不需要提及参数,下面的代码就是一个比较典型的类。原创 2023-07-03 22:01:53 · 210 阅读 · 0 评论 -
JavaCPP初体验
JavaCPP Presets模块包含用于广泛使用的C / C ++库的Java配置和接口类。 解析器使用org.bytedeco。<moduleName> .presets包中的配置文件从C / C ++头文件中创建以org.bytedeco。<moduleName>包为目标的Java接口文件。 生成器和本机C ++编译器,以生成所需的JNI库。 此外,帮助程序类使它们的功能更易于在Java平台(包括Android)上使用。有关如何创建新预设的更多信息,请参考Wiki页面。 由原创 2020-07-12 11:02:22 · 4073 阅读 · 0 评论 -
Java多线程学习笔记 - 十一、线程池
线程池重用先前创建的线程来执行当前任务,并为线程周期开销和资源抖动问题提供了解决方案。由于请求到达时线程已经存在,因此消除了线程创建引入的延迟,使应用程序更具响应性。由新线程完成的任务(由其Runnable对象定义)与线程本身(由Thread对象定义)之间存在密切联系。这适用于小型应用程序,但在大型应用程序中,将线程管理和创建与应用程序的其余部分分开是有意义的。封装这些函数的对象称为executors。原创 2022-04-05 15:21:12 · 679 阅读 · 0 评论 -
Java各版本的主要新增内容一览
Java 语言和平台在不断发展。Java 的新版本现在大约每 6 个月发布一次。我将尽可能快地使用最新功能更新本教程。此特定教程仅涵盖核心 Java 语言功能。它不包括 Java API。本教程站点的其他地方介绍了许多 Java API 。如果您只是在寻找每个 Java 版本的新功能,以下部分将列出最新 Java 版本的主要新增内容。原创 2022-04-16 11:47:54 · 2794 阅读 · 0 评论 -
Java多线程学习笔记 - 八、Java中的wait和sleep的区别
简单地说,wait()是一个用于线程同步的实例方法。它可以在任何对象上调用,因为它是在java.lang.Object 上定义的,但它只能从同步块调用。它释放对象上的锁,以便另一个线程可以跳入并获取锁。另一方面,Thread.sleep()是一个可以从任何上下文调用的静态方法。Thread.sleep()暂停当前线程并且不释放任何锁。转载 2022-03-18 15:55:55 · 239 阅读 · 0 评论 -
centos7.6下使用Docker安装Elasticsearch8.2.0 测试一
Elasticsearch 也可以作为 Docker 镜像使用。www.docker.elastic.co上提供了所有已发布的 Docker 映像和标签的 列表。源文件位于 Github中。从 Elasticsearch 8.0 开始,默认启用安全性。启用安全性后,Elastic Stack 安全功能需要对传输网络层进行 TLS 加密,否则您的集群将无法启动。原创 2022-05-12 15:43:50 · 2096 阅读 · 1 评论 -
centos7.6下使用Docker安装Elasticsearch8.2.0 测试二
上一篇记录了单独启动一个节点,然后再注册其他节点的过程,官方提供了使用docker-compose编排启动三个节点和Kibana的yml文件。这次测试以这种方式来运行集群,依然还是在一台虚拟机上使用Docker Compose编排进行集群的启动还是十分方便的。不过就官方的原话翻译之后“此配置提供了一种启动安全集群的简单方法,您可以在构建具有多个主机的分布式部署之前将其用于开发。”,适合开发时使用,方便快捷。下一步准备copy出3台虚拟机,测试一下如何多主机启动运行/组成集群/重启操作等。原创 2022-05-12 21:02:59 · 754 阅读 · 0 评论 -
Java加密:二、消息摘要算法
消息摘要算法包含MD、SHA和MAC共3大系列,常用于验证数据的完整性,是数字签名算法的核心算法。消息摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和HmacMD5(MessageAuthentication Code,消息认证码算法)。MD5、SHA和HMAC都属于消息摘要算法,它们是三大消息摘要算法的主要代表。MD系列算法包括MD2、MD4和MD5共3种算法...原创 2022-03-03 15:39:23 · 700 阅读 · 0 评论 -
Web安全漏洞及安全防护
搭建一个Web应用不仅要考虑其功能与性能的完善性,更要考虑其安全性。Web应用搭建好以后,在暴露于外网的情况下是否是安全的?是否会遭受攻击者的攻击?是否对敏感数据、敏感代码及敏感后台等敏感信息都进行了安全防护?若这些都做到了,是否就万无一失了?若出现了网络攻击事件,是否又有人愿意为其买单?攻防是一个不断演进的对抗过程。随着黑客攻击技术的发展,其危害足以使一个正常运行的网站遭受灭顶之灾。为了保障Web系统的正常运行,网站所有者及运维人员均希望通过良好的防护手段,抵御来自互联网的攻击行为。...原创 2022-05-17 09:44:56 · 3211 阅读 · 0 评论 -
Java Demo示例:Spring WebClient 、RestTemplate、JDK11的HttpClient等http调用方式比较
对其他服务进行 HTTP 调用是 Web 应用程序中的常见要求。所以,我们需要一个网络客户端工具。1、RestTemplate也是阻塞的长期以来,Spring 一直提供RestTemplate作为 Web 客户端抽象。在底层,RestTemplate使用 Java Servlet API,它基于每请求线程模型。2、WebClient 是非阻塞的WebClient使用 Spring Reactive 框架提供的异步、非阻塞解决方案。3、JDK11的HttpClient......原创 2022-05-10 20:07:27 · 1575 阅读 · 1 评论