加载中...
2025-04-14-2025-04-20论文阅读周报
2025-04-07-2025-04-13论文阅读周报
1+1>2: Integrating Deep Code Behaviors with Metadata Features for Malicious PyPI Package Detection {2024}, {Sun X, Gao X, Cao S, et al.}, {ASE} Sun X, Gao X, Cao S, et al. 1+ 1> 2: Integrating Deep Code Behaviors with Metadata Features for Malicious PyPI Package Detection[C]//Proceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering. 2024: 1159-1170. Key Points Adaboost 代码行为序列 元数据 FastText Bert Summary 本文提出了一种名为Ea4mp的新方法,用于检测PyPI(Pyt ...
redis-黑马点评学习
基础篇 初识Redis NoSQL NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 结构化与非结构化 结构化:传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名.字段数据类型.字段约束等等信息,插入的数据必须遵守这些约束。(缺点:表不能随意修改) 非结构化:对数据库格式没有严格约束,往往形式松散,自由。 键值型:Redis 文档型(字段约束非常松散):MongoDB 列类型:HBase 图格式:Neo4j 关联与非关联 传统数据库的表与表之间往往存在关联,例如外键。 而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合: 123456789101112131415161718{ id: 1, name: "张三", orders: [ { id: 1, item: { ...
System.out为什么是一个对象?
《Java 核心技术卷 Ⅰ》P248 在 Java 中,System.out 之所以是一个对象,是因为它是 System 类的一个静态成员变量,且该变量指向一个具体的实例对象(类型为 PrintStream)。以下是详细解释: 1. System 类的设计 System 类是 java.lang 包中的一个工具类,用于提供标准输入、输出和错误流。 它的关键成员如下: 123456public final class System { public static final InputStream in; // 标准输入 public static final PrintStream out; // 标准输出 public static final PrintStream err; // 标准错误 // ... 其他方法} out 是 System 类的一个静态(static)成员变量,类型为 PrintStream。 2. 为什么 out 是一个对象? PrintStream 是 ...
Java函数式编程学习
《Java核心技术卷Ⅰ》P242 概述 为什么要学函数式编程? 易于使用并发编程,大数据量下,集合处理效率高:可以使用并行流,自动使用多线程方式处理。 代码可读性高 消灭嵌套地狱 12345678910111213141516171819202122// 查询未成年作家评分在70分以上的书籍,由于流的影响所以作家和书籍可能会重复出现,所以要去重List<Author> authors = new ArrayList<>();List<Book> bookList = new ArrayList<>();Set<Book> uniqueBookValues = new HashSet<>();Set<Author> uniqueAuthorValues = new HashSet<>();for (Author author : authors) { if (uniqueAuthorValues.add(author)) { ...
Java中protected详解——以clone为例
问题来源:《Java 核心技术卷 Ⅰ》(第十版)P238 描述:《Java 核心技术卷 Ⅰ》的原话:Object类中的clone方法声明为protected,所以你的代码不能直接调用anObject.clone()。但是,不是所有的子类都可以访问受保护的方法吗?不是所以的类都是Object的子类吗?辛运的是,受保护访问的规则比较微妙。子类只能调用受保护的clone方法来克隆它自己的对象。必须重新定义clone为public才能允许所有方法克隆对象。 Protected的可见性 对本包和所有子类可见——protected 更准确的规则还要加上: 基类的 protected 成员是包内可见的,并且对子类可见; 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。 例子说明 我们可以通过以下几个关于protected方法可见性的例子来进一步掌握protected关键字。在碰到涉及protected成员的调用时,首先要确定出该protected成员来自何方,其 ...
快排模板中比较值的选取问题
存在问题 快排模板中, int mid = (l + r + 1) / 2,q[mid]与q[i]、q[j]比较 int x = q[(l + r + 1) / 2],x与q[i]、q[j]比较 这两者看起来等价,但前者是错误的。 错误样例: 分析过程 数据: 0 1 2 3 4 5 6 7 8 9 49 59 88 37 98 97 68 54 31 3 i j mid q[mid] 初始 0 9 5 97 quick_sort(q, 0, 9) i、j指针移动到i:4 j:9 0 1 2 3 4 5 6 7 8 9 49 59 88 37 98 ==97== 68 54 31 3 交换->swap(q[4], q[9]) 由于i小于j(i:4 j:9),继续移动 ...
为什么要通过Constructor对象创建实例?
问题来源:《Java核心技术卷Ⅰ》(第11版)P200 在《Java核心技术卷Ⅰ》中提到的反射实例化方式,引发了笔者一个常见疑问:为什么不能直接使用cl.newInstance(),而需要先获取Constructor对象再调用newInstance()?本文将深入探讨其背后的设计逻辑和技术演进。 历史原因与过时方法 Class.newInstance() 是早期设计(Java 1.0 引入),它存在以下问题: 只能调用无参构造方法,如果类没有无参构造器,会直接抛出 InstantiationException。 异常处理不透明:如果构造方法本身抛出异常,Class.newInstance() 会将其包装成 InvocationTargetException 的父类异常,导致调试困难。 安全性问题:无法通过反射权限检查时,会直接抛出异常,而不会像 Constructor 方法那样提供更细粒度的控制。 Constructor.newInstance() 是改进方案(Java 1.2 引入): 支持调用任意参数类型的构造方法(需通过 getConstructor(Class ...
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)->系统->存储->开启存储感知(启用存储感知并设置自动清理选项,如删除临时文件和回收站文件)