加载中...
Java反射学习
一个需求引出反射 1.根据配置文件re.properties指定信息,创建Cat对象并调用方法hi(Cat类在com.hj包下,里面有hi方法) 12classfullpath=com.hj.Catmethod=hi 传统方法是直接new Cat对象,然后调用。但现在是要从配置文件得到信息,再得到对象。 2.这样的需求特别多,即通过外部文件配置,在不修改源码的情况下,来控制程序,也符合设计模式的ocp原则(开闭原则:不修改源码,扩容功能) 示例: 文件结构: re.properties 123classfullpath=com.hj.Catmethod=hi# 以后要调用cry方法,只需修改此处的配置文件即可 Cat.java 12345678910public class Cat { private String name = "招财猫"; public void hi() { System.out.println("hi" + name); } ...
Java枚举比较:为什么应该优先使用==而非equals?
问题来源:《Java 核心技术卷 Ⅰ》(第十版)P196 在 Java 开发中,枚举(Enum)类型的使用非常普遍。但很多开发者对枚举值的比较方式存在疑惑:究竟应该用==还是equals()?本文将深入解析两者的区别与最佳实践。 一、枚举常量的单例性 Java 枚举本质上是一个语法糖,每个枚举常量都是单例对象。当定义枚举时: 12345678910enum HttpStatus { OK(200), NOT_FOUND(404); private final int code; HttpStatus(int code) { this.code = code; }} JVM 会保证: HttpStatus.OK 在内存中只有一个实例 所有对OK的引用都指向同一内存地址 枚举常量在类加载时初始化且不可变 二、==与 equals 的底层机制 1. ==运算符的行为 1234HttpStatus status1 = HttpStatus.OK;HttpStatus ...
equals中getClass和instanceof的选择依据
问题来源来自《Java核心技术卷Ⅰ》(11版)中P177。 不过,集合是非常特殊的一个例子,应该将AbstractSet.equals声明为final,这是因为没有任何一个子类需要重新定义集合相等的语义(事实上,这个方法并没有被声明为final。这样做是为了让子类实现更高效的算法来完成相等性检测)。 就现在来看,有两种完全不同的情形: 如果子类可以有自己的相等性概念,则对称性需求将强制使用getClass检测。 如果由超类决定相等性概念,那么就可以使用instanceof检测,这样可以在不同子类 的对象之间进行相等性比较 没有设计成final的解析 集合相等性语义统一:集合的相等性由元素内容决定(元素相同且顺序无关),与具体实现类无关。例如: 12345```javaSet<String> hashSet = new HashSet<>(List.of("A", "B"));Set<String> treeSet = new TreeSet<>(List.of(" ...
如何清理C盘
查看 C 盘使用情况 设置(win+i)->系统->存储 可以自行点击每一项查看使用情况,以便进行删除判断。 例子:比如安装的应用,可以自行卸载一些在 c 盘的应用,看是否能安装到其他盘;比如一些图片、音乐、视频文件,迁移到其他盘;或者直接删除。 临时文件清理 win+R,输入%TEMP%,这个文件夹下的文件都是 windows 的临时文件,可以全选删除。(临时文件夹里的都可以删除,但是有些可能删不掉,因为有些程序正在使用,你可以把所有程序都关掉,然后再删除。) 磁盘清理 win+s,搜索磁盘清理,选择 c 盘 接着按照自己需求勾选清理。(显示的全部文件,都可勾选删除) 开启存储感知 设置(win+i)->系统->存储->开启存储感知(启用存储感知并设置自动清理选项,如删除临时文件和回收站文件)
Java强制类型转换:为什么需要显示转换?
问题场景 123Object obj = new Integer(10);System.out.println(obj.getClass()); // 输出 class java.lang.IntegerInteger i = (Integer) obj; // 为什么必须强制转换? 明明obj的运行时类型是Integer,为什么赋值给Integer类型变量时需要强制转换?这与 Java 的编译时类型和运行时类型机制密切相关。 核心概念解析 1. 编译时类型 vs 运行时类型 编译时类型 运行时类型 定义 由变量声明决定 由实际创建的对象决定 作用阶段 编译阶段(静态检查) 运行阶段(动态绑定) 示例 Object obj → 类型为 Object new Integer(10) → 类型为 Integer 2. 强制转换的本质 编译时承诺:告诉编译器"我知道这个对象的具体类型" 运行时验证:JVM 会检查实际类型是否匹配,否则抛出ClassCastExce ...
2025-02-03-2025-02-09论文阅读周报
阅读论文: 目前存在的问题: SBOM 质量评估 An Empirical Study on Software Bill of Materials: Where We Stand and the Road Ahead {2023}, {Xia B, Bi T, Xing Z, et al.}, {ICSE} Xia B, Bi T, Xing Z, et al. An empirical study on software bill of materials: Where we stand and the road ahead[C]//2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE). IEEE, 2023: 2630-2642. Key Points SBOM Summary 文章针对软件物料清单(SBOM)展开实证研究,通过访谈和调查从业者,揭示其在实践应用、工具支持方面的现状及问题,并提出未来发展方向与目标模型。 Researc ...
2025-01-27~2025-02-02论文阅读周报
An Empirically Grounded Reference Architecture for Software Supply Chain Metadata Management {2024}, {Tran N K, Pallewatta S, Babar M A}, {EASE 2024} Tran N K, Pallewatta S, Babar M A. An Empirically Grounded Reference Architecture for Software Supply Chain Metadata Management[C]//Proceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering. 2024: 38-47. Key Points SSC SBOM SCM2 RA 关键点,看文章途中觉得很关键的词可以填写在此处 Summary 本文聚焦软件供应链(SSC)安全 ...
研究候选方向:面向零信任技术的安全认证或访问控制等方法-论文阅读笔记
该研究方向:面向零信任技术的安全认证或访问控制等方法研究。 基于零信任的动态访问控制机制研究 与实现 {2022}, {吴一楠}, {硕士论文} 吴一楠.基于零信任的动态访问控制机制研究与实现[D].北京邮电大学,2022.DOI:10.26969/d.cnki.gbydu.2022.001763. Key Points 零信任 动态访问控制 关键点,看文章途中觉得很关键的词可以填写在此处 Summary 写完笔记之后最后填,概述文章的内容,以后查阅笔记的时候先看这一段。注:写文章summary切记需要通过自己的思考,用自己的语言描述。忌讳直接Ctrl + c原文。 Research Objective(s) 作者的研究目标是什么? Background / Problem Statement 研究的背景以及问题陈述:作者需要解决的问题是什么? Method(s) 作者解决问题的方法/算法是什么? 是否基于前人的方法?基于了哪些? Evaluation setup: 软硬件环境 ...
研究候选方向:深度学习的方法和软件供应链安全检测-论文阅读笔记
该研究方向:把基于深度学习的方法和软件供应链安全检测结合起来研究。 软件供应链污染检测技术研究 {2019}, {武振华}, {硕士论文} 武振华.软件供应链污染检测技术研究[D].战略支援部队信息工程大学,2019.DOI:10.27188/d.cnki.gzjxu.2019.000053. Key Points 软件供应链 静默安装参数、控件识别和 OCR 识别 三类软件供应链下游的污染检测问题 LSTM 哈希比对 DNN Summary 软件供应链污染威胁用户隐私与财产安全,现有研究较少且不系统。本文聚焦软件供应链下游,分析众多安全事件,综述程序逆向分析技术应用现状与问题。提出污染分类模型与检测框架,创新自动化安装方法,并针对安装包捆绑、模块复用、恶意代码植入问题分别给出有效检测方案,经大量实验验证各方法的有效性,为软件供应链污染检测提供全面解决方案。 Research Objective(s) 全面综述程序逆向分析技术在软件供应链污染检测中的应用与问题,填补研究空白。 构建软件供应链污染分类模型与检测框架,解决检测问题分类不明、 ...
使用hexo c && hexo g && hexo d出现Segmentation fault错误的解决方法
个人经验:最近出现的一次是node版本的问题 问题版本:22.7.0 切换到22.12.0之后就可以了,问题发生时,22.7.0属于CURRENT,而22.12.0属于LTS(可能和这个有一点关系) 参考链接
研究候选方向:深度学习的方法和密码学分析—论文阅读笔记
该研究方向:把基于深度学习的方法和密码学分析结合起来,进行对称密码或轻量级密码算法的性能评估研究。 基于深度学习的密码算法识别研究 {2021}, {曹莉茹}, {硕士学位论文} 曹莉茹. 基于深度学习的密码算法识别研究[J]. 成都: 电子科技大学, 2021. Key Points 密文特征选择与识别 密文分割长度 随机森林算法 BP 神经网络、卷积神经网络和循环神经网络算法 Summary 本文主要开展了两项工作,一是密文特征分析与选取,NIST随机性检验中存在着多种随机性检测指标,探究了在各种指标下,不同加密算法产生的密文文件以及加密算法产生的密文文件与随机文件的特征值分布状况。同时也探究了不同密文分割长度对特征分布的影响。 二是基于深度学习的密码算法识别,作者基于一中选取的特征开展密码算法识别工作,采取了8种加密算法,并且在固定密钥和随机密钥两种情况下实验,分别进行了随机森林下的识别以及用BP神经网络、卷积神经网络以及循环神经网络等深度学习方法下的识别,得出了基于深度学习的密码算法识别平均准确率比基于随机森林的要好得多。最后分析了优 ...
Vue3学习
创建Vue3工程 基于vue-cli创建 点击查看官方文档 备注:目前vue-cli已处于维护模式,官方推荐基于 Vite 创建项目。 1234567891011121314151617## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上vue --version## 安装或者升级你的@vue/cli npm install -g @vue/cli## 执行创建命令vue create vue_test## 随后选择3.x## Choose a version of Vue.js that you want to start the project with (Use arrow keys)## > 3.x## 2.x## 启动cd vue_testnpm run serve 基于vite创建(推荐) vite 是新一代前端构建工具,官网地址:https://vitejs.cn,vite的优势如下: 轻量快速的热重载(HMR),能实现极速的服务启动。 对 TypeScript、JSX、CSS 等支持开箱即用。 ...