Java 异常 java.net.UnknownHostException 的原因和解决 前言 同事最近部署服务,遇到java.net.UnknownHostException异常,最后排查的问题原因是在系统的 Hostname中配置了主机名,而在/etc/hosts文件中没有相应的配置 异常概述 在Java编程中,java.net.Unknown…
java.security.InvalidKeyException: Illegal key size错误 前言 最近技术替换国密算法,项目上线后发现生产在加密的时候报java.security.InvalidKeyException: Illegal key size错误,而本地和测试环境都是没问题的。 问题原因 因为密钥长度是受限制的, jav…
Java 诊断工具 Arthas 常见命令 基本概念 云原生这么多微服务,当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供…
/etc/profile.d 和 /etc/profile 配置环境变量的区别 在 /etc/profile 这个文件中有这么一段 shell, 会在每次启动时自动加载 /etc/profile.d 下的每个配置 for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ "${-#*i}…
设计一个高质量的 API 接口 你是否也感同身受? 对接XX业务时,XX业务具备的功能和API全靠跑业务负责人那反复逐个询问、确认。用哪个API;怎么用;有没有限制;等等 各个业务间,甚至同一业务内,API风格不统一。 API命名: 按自然语义全翻译的;按属性角度定义的;按操作角度定义的;动宾、非动宾的;复数、非复数的;等等 API入参: 带Map…
HashMap 的 7 种遍历方式与性能分析 HashMap 遍历 HashMap 遍历从大的方向来说,可分为以下 4 类: 迭代器(Iterator)方式遍历; For Each 方式遍历; Lambda 表达式遍历(JDK 1.8+); Streams API 遍历(JDK 1.8+)。 但每种类型下又有不同的实现方式,因此具体的遍历方式又可以…
关于Apache Log4j2 RCE漏洞后出现的CVE-2021-4104/CVE-2021-45046 1.Apache Log4j JMSAppender反序列化代码执行漏洞(CVE-2021-4104)临时防护: 1.注释掉或删除 Log4j 配置中的 JMSAppender。 2.使用下列命令,从log4j jar包中删除 JMSAppe…
Shiro框架快速学习札记 ⼀、权限的管理 1.1 什么是权限管理 基本上涉及到⽤⼾参与的系统都要进⾏权限管理,权限管理属于系统安全的范畴,权限管理实现对⽤⼾访问系统的控制,按照安全规则或者安全策略控制⽤⼾可以访问⽽且只能访问⾃⼰被授权的资源。 权限管理包括⽤⼾⾝份认证和授权两部分,简称认证授权。对于需要访问控制的资源⽤⼾⾸先经过⾝ 份认证,认证通…
解决Non-resolvable parent POM: Could not find artifact 出现的问题 在编译spring boot 多模块项目的时候,往往出现 Non-resolvable parent POM: Could not find artifact 后面跟一串其它信息,网上大部分解决方案是修改pom.xml文件的rela…
解释 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 单例类只能有一个实例。 …
解释 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 优点: 当一个产品族中的多个对…
简单工厂模式,虽然不在23种设计模式中。但是可以认为是工厂模式的一种特殊实现,并且在日常中使用广泛,所以还是值得我们去学习的。 解释 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,是一种创建型的设计模式,关注于实例对象创建。 由一个工厂对象通过判断传入的参数,决定…
介绍 模板方法是一种行为类设计模式。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 模板方法是一个定义在父类的方法(抽象类),具体实现由子类实现 优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。 缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大…
一、设计模式的分类 总体来说设计模式分为三大类: (1)创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 (2)结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 (3)行为型模式,共十一种: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录…
这里推荐一种不容易出错的 “安装” 方法:二进制。 说是安装,其实并不涉及到任何向导程序,总的来说只有两步: 下载并解压 配置环境变量 1.OpenJDK 与 Oracle JDK 的区别 直接说结论好了,基本上可以认为 OpenJDK 在性能、功能和执行逻辑上都和官方的 Oracle JDK 是一致的。 2.以 Centos下安装 JDK 11 …
因为最近自己练手一个项目,需要用到全国省份市区数据,但是呢网上很多都不全或者需要收费才行。 于是就找到了民政局的网站,民政局的全国省份市区数据会定期更新,如果这个都不全那么还有那全对不对,所以就爬取民政局省市区数据,用于地市下拉框三级联动~确保数据的完整性. url:http://www.mca.gov.cn/article/sj/xzqh/198…
Java 15 它不是一个长久支持(LTS)版本。虽然该版本并不是长期版本,但即使再发布新版本也是在此基础上的。 在JDK15中新增了以下新特性: 密封类的使用 隐藏类的理解 instanceof模式匹配 ZGC的功能转正 文本块的功能转正 Records二次预览 EdDSA签名算法重新实现SocketAPI禁用偏向锁定 ShenandoahGC转…
Java 14 它不是一个长久支持(LTS)版本。虽然该版本并不是长期版本,但即使再发布新版本也是在此基础上的。 在JDK14中新增了以下16个新特性: 305: instanceof的模式匹配 (预览) 343: 打包工具 (Incubator) 345: G1的NUMA内存分配优化 349: JFR事件流 352: 非原子性的字节缓冲区映射 3…
Java 13 它不是一个长久支持(LTS)版本。 重点特性列表: 动态应用程序类-数据共享 增强 ZGC 释放未使用内存 Socket API 重构 Switch 表达式扩展(预览功能) 文本块(预览功能) 动态应用程序类-数据共享 JDK5引入了Class-Data Sharing可以用于多个JVM共享class,提升启动速度,最早只支持sys…
Java 12 它不是一个长久支持(LTS)版本。 重点特性列表: Switch 表达式(预览特性) 文件对比增强 Switch 表达式(预览特性) 在 Java 12 中,对 Switch 表达式的写法进行了改进,虽然是一个语法糖的改进,也让 Switch 的代码编写变得更加优雅,如再Java12之前的switch: String day = "…