当前位置: 首页 > news >正文

面试题总结一

第一天

1. 快速排序

public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作,获取基准元素的最终位置int pivotIndex = partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, low, pivotIndex - 1);// 递归排序基准元素右边的部分quickSort(arr, pivotIndex + 1, high);}}private static int partition(int[] arr, int low, int high) {// 选择最后一个元素作为基准元素int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;// 交换 arr[i] 和 arr[j]swap(arr, i, j);}}// 将基准元素放到正确的位置swap(arr, i + 1, high);return i + 1;}private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {10, 7, 8, 9, 1, 5};int n = arr.length;System.out.println("排序前的数组:");for (int num : arr) {System.out.print(num + " ");}quickSort(arr, 0, n - 1);System.out.println("\n排序后的数组:");for (int num : arr) {System.out.print(num + " ");}}
}    

2. 插入排序

public static void insertionSort(int[] arr) {int n = arr.length;for (int i = 1; i < n; i++) {int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}

3. 解释java三大特征

  • 封装:指的是把对象的属性和方法捆绑在一起,同时隐藏对象的内部实现细节,仅对外提供必要的访问方式。这样做可以增强数据的安全性,避免外部随意修改对象内部数据。
  • 继承:指一个类(子类)可以继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。子类能够拥有父类的所有非私有成员,还能添加自己的独特属性和方法。
  • 多态:意味着同一方法可以根据调用对象的不同类型表现出不同的行为。多态主要通过方法重写和接口实现来达成(编译时多态是在编译阶段就确定要调用的方法,它主要通过方法重载来实现。方法重载指的是在一个类中可以定义多个同名的方法,但这些方法的参数列表(参数的类型、个数或顺序)不同;运行时多态是在运行阶段才确定要调用的方法,它主要通过方法重写和向上转型来实现。方法重写是指子类重写父类的方法,向上转型是指将子类对象赋值给父类引用。)

4. 反射机制

在 Java 中,反射机制允许程序在运行时动态地获取类的信息,并且可以调用类的方法、访问和修改类的属性等。下面将详细介绍 Java 反射机制的原理、关键类以及使用场景。
Java 反射机制的核心原理在于 Java 程序运行时,每个类都会在内存中生成一个 java.lang.Class 对象,该对象包含了这个类的完整结构信息,如类名、父类、接口、方法、字段等。通过这个 Class 对象,程序就能在运行时动态地获取和操作类的各种信息。

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;// 定义一个示例类
class Person {private String name;public int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void sayHello() {System.out.println("Hello, my name is " + name + ", I'm " + age + " years old.");}
}public class ReflectionExample {public static void main(String[] args) throws Exception {// 获取 Person 类的 Class 对象Class<?> personClass = Person.class;// 创建 Person 类的实例Constructor<?> constructor = personClass.getConstructor(String.class, int.class);Person person = (Person) constructor.newInstance("Alice", 20);// 调用 Person 类的方法Method sayHelloMethod = personClass.getMethod("sayHello");sayHelloMethod.invoke(person);// 访问和修改 Person 类的字段Field ageField = personClass.getField("age");ageField.set(person, 21);// 调用修改后的方法sayHelloMethod.invoke(person);}
}

5.深克隆和浅克隆

  • 浅克隆(Shallow Clone)
    定义:在浅克隆中,创建一个新对象,新对象的基本数据类型(如int、double等)会复制其值,而对于引用类型的成员变量,仅仅复制引用,即新对象和原对象的引用类型成员变量指向同一个内存地址。这意味着如果修改其中一个对象的引用类型成员变量所指向的对象内容,另一个对象也会受到影响。
  • 深克隆(Deep Clone)
    定义:深克隆会创建一个新对象,并且递归地复制原对象的所有成员变量,包括引用类型的成员变量。这意味着新对象和原对象的所有成员变量都有各自独立的内存空间,修改其中一个对象的任何成员变量都不会影响另一个对象。

6. 数据库和缓存如何保持一致性?

先更新数据库,再删除缓存(推荐)

此策略是先对数据库中的数据进行更新,更新成功后,将缓存中的对应数据删除。

  • 优点:
    数据一致性较高:在大多数情况下能保证数据的最终一致性。因为读请求在缓存未命中时会从数据库获取最新数据并更新缓存。
    性能较好:相比于更新缓存,删除缓存的操作更加轻量级。
  • 缺点:
    存在短暂不一致:在更新数据库后、删除缓存前,如果有读请求进来,会读取到旧的缓存数据。不过这种不一致的时间窗口通常较短。

保证一致性的额外措施

  1. 重试机制
    在使用 “先更新数据库,再删除缓存” 策略时,如果删除缓存失败,可以引入重试机制。可以将删除缓存的操作记录到消息队列中,通过消息队列的重试功能来保证缓存最终被删除。
  2. 异步更新
    对于一些对实时性要求不是特别高的场景,可以采用异步更新的方式。例如在更新数据库后,通过消息队列异步地更新或删除缓存,这样可以减少对业务逻辑的影响,提高系统的吞吐量。
  3. 分布式锁
    在高并发场景下,可以使用分布式锁来保证同一时间只有一个线程进行数据库和缓存的更新操作,避免并发问题导致的数据不一致。
  4. 缓存过期时间
    为缓存设置合理的过期时间,这样即使出现短暂的数据不一致,在缓存过期后也能从数据库获取到最新数据并更新缓存,保证数据的最终一致性。

7.HashMap 底层原理

  1. 数据结构
    在 Java 中,HashMap 底层数据结构是数组 + 链表 + 红黑树(JDK 1.8 及以后)。
  2. 扩容机制
    HashMap 有一个负载因子(默认为 0.75),当键值对数量超过数组长度乘以负载因子时,会触发扩容操作。扩容时,数组长度会变为原来的 2 倍,然后将原数组中的所有键值对重新计算哈希值并插入到新数组中。
  3. 线程安全
    HashMap 不是线程安全的。在多线程环境下,对 HashMap 进行并发操作可能会导致以下问题:
  • 数据不一致
    多个线程同时对 HashMap 进行插入、删除或修改操作时,可能会出现数据覆盖或丢失的情况。例如,线程 A 和线程 B 同时插入一个键值对,且它们计算得到的数组下标相同,可能会导致其中一个线程的插入操作被覆盖。
  • 死循环(JDK 1.7)
    在 JDK 1.7 中,HashMap 在扩容时采用头插法,当多个线程同时进行扩容操作时,可能会导致链表形成环形结构,从而引发死循环。
  • 解决方案
    如果需要在多线程环境下使用哈希表,可以考虑以下替代方案:
    ConcurrentHashMap:是线程安全的哈希表,它采用分段锁(JDK 1.7)或 CAS + synchronized(JDK 1.8)的方式来保证线程安全,并发性能较高。
    Hashtable:也是线程安全的哈希表,但它使用 synchronized 关键字对整个方法进行同步,并发性能较低。

8. ConcurrentHashMap和hashtable和hashmap区别和作用

区别
  1. 线程安全性
    HashMap:它并非线程安全的类。在多线程环境下,如果多个线程同时对 HashMap 进行读写操作,可能会引发数据不一致、死循环(JDK 1.7)等问题。因此,HashMap 适用于单线程环境。
    Hashtable:是线程安全的类。它的方法都被 synchronized 关键字修饰,这意味着同一时间只能有一个线程访问 Hashtable 的方法。这种实现方式虽然保证了线程安全,但在多线程高并发场景下,由于所有操作都需要获取锁,会导致性能严重下降。
    ConcurrentHashMap:同样是线程安全的类,但它的并发性能要比 Hashtable 高很多。在 JDK 1.7 中,ConcurrentHashMap 使用分段锁机制,将整个哈希表分成多个段(Segment),每个段都有自己的锁,不同段之间的操作可以并发进行。在 JDK 1.8 中,ConcurrentHashMap 摒弃了分段锁,采用 CAS(Compare-And-Swap)和 synchronized 来保证并发操作的线程安全,进一步提高了并发性能。
  2. 对 null 键和 null 值的支持
    HashMap:允许键和值为 null。也就是说,你可以向 HashMap 中插入一个键为 null 的键值对,也可以插入值为 null 的键值对。
    Hashtable:不允许键或值为 null。如果尝试插入 null 键或 null 值,会抛出 NullPointerException。
    ConcurrentHashMap:和 Hashtable 一样,不允许键或值为 null。这是因为 ConcurrentHashMap 主要用于多线程环境,null 值可能会导致歧义,例如在 get 方法返回 null 时,无法确定是键不存在还是值本身为 null。
  3. 性能
    HashMap:在单线程环境下,由于不需要考虑线程安全问题,HashMap 的性能是最高的。
    Hashtable:由于采用了全量同步机制,在多线程环境下,所有线程都需要竞争同一把锁,性能较低,尤其是在高并发场景下,会成为系统的性能瓶颈。
    ConcurrentHashMap:在多线程环境下,通过分段锁(JDK 1.7)或 CAS + synchronized(JDK 1.8)的方式,允许更多的线程同时进行读写操作,并发性能远远高于 Hashtable。
作用
  1. HashMap
    HashMap 适用于单线程环境,当你的应用程序不需要考虑线程安全问题,并且对性能有较高要求时,可以使用 HashMap。例如,在一个单线程的工具类中,需要存储一些临时数据,使用 HashMap 是一个不错的选择。
  2. Hashtable
    由于 Hashtable 的性能较低,现在已经很少被使用。但在一些对线程安全有要求,且并发程度不高的场景下,仍然可以考虑使用 Hashtable。不过,通常更推荐使用 ConcurrentHashMap 来替代 Hashtable。
  3. ConcurrentHashMap
    ConcurrentHashMap 主要用于多线程环境,特别是在高并发场景下。例如,在一个多线程的缓存系统中,多个线程可能会同时对缓存进行读写操作,使用 ConcurrentHashMap 可以保证线程安全,同时提供较高的并发性能。

9.分段锁

  • 原理
    ConcurrentHashMap 在 JDK 1.7 里将整个哈希表划分成多个相互独立的段(Segment),每一个段本质上就是一个小的 HashTable,并且每个段都有属于自己的锁。不同的段能够并发地进行操作,这样在多线程环境下,不同线程可以同时访问不同的段,进而提升了并发性能。

10.ThreadLocal

ThreadLocal 是 Java 里的一个类,它为每个使用该变量的线程都单独创建一个独立的副本,各个线程能够独立地改变自己的副本,而不会对其他线程的副本产生影响。

  • 原理
    ThreadLocal 的核心原理是借助每个线程内部的 ThreadLocalMap 来存储数据。ThreadLocalMap 是 ThreadLocal 的一个静态内部类,它以 ThreadLocal 对象作为键,以线程的变量副本作为值。当线程调用 ThreadLocal 的 set 方法时,实际上是把值存进了当前线程的 ThreadLocalMap 中;当调用 get 方法时,会从当前线程的 ThreadLocalMap 里获取对应的值。
  • 使用场景
    线程安全:当某些对象不是线程安全的,但又希望在多线程环境下使用时,可以借助 ThreadLocal 为每个线程创建一个独立的对象副本,以此保证线程安全。例如,SimpleDateFormat 不是线程安全的,使用 ThreadLocal 能为每个线程创建一个独立的 SimpleDateFormat 实例。
    上下文管理:在一个线程的执行过程中,需要在不同的方法之间传递一些上下文信息,此时可以使用 ThreadLocal 来存储这些信息,避免在方法参数中频繁传递。例如,在一个 Web 应用中,可以使用 ThreadLocal 来存储当前用户的信息。
import java.text.SimpleDateFormat;
import java.util.Date;public class ThreadLocalExample {// 创建一个 ThreadLocal 对象,用于存储 SimpleDateFormat 实例private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal<SimpleDateFormat>() {@Overrideprotected SimpleDateFormat initialValue() {return new SimpleDateFormat("yyyy-MM-dd");}};public static String formatDate(Date date) {// 从 ThreadLocal 中获取当前线程的 SimpleDateFormat 实例SimpleDateFormat dateFormat = dateFormatThreadLocal.get();return dateFormat.format(date);}public static void main(String[] args) {// 创建一个日期对象Date date = new Date();// 创建两个线程,分别格式化日期Thread thread1 = new Thread(() -> {String formattedDate = formatDate(date);System.out.println("线程 1 格式化的日期: " + formattedDate);});Thread thread2 = new Thread(() -> {String formattedDate = formatDate(date);System.out.println("线程 2 格式化的日期: " + formattedDate);});// 启动线程thread1.start();thread2.start();try {// 等待线程执行完毕thread1.join();thread2.join();} catch (InterruptedException e) {e.printStackTrace();}// 移除当前线程的 ThreadLocal 变量dateFormatThreadLocal.remove();}
}

11.索引

索引是一种数据结构,用于提高数据库表中数据的查询效率。它就像一本书的目录,能够帮助数据库快速定位到所需的数据行,而不必全表扫描。

  • 常见类型
    B-tree 索引:最常见的索引类型,适用于全值匹配、范围查询、前缀匹配等多种查询场景。
    哈希索引:基于哈希表实现,只能用于精确匹配,查询速度非常快,但不支持范围查询。
    全文索引:用于在文本类型的列中进行全文搜索,能够快速找到包含特定关键词的记录。
  • 使用场景和优化
    经常用于查询条件、连接条件的列上适合创建索引。
    索引并非越多越好,过多的索引会增加数据插入、更新和删除的成本,因为每次数据变更都需要同时更新索引。

12.事务

事务是一组数据库操作,这些操作要么全部成功执行,要么全部不执行,是一个不可分割的工作单元,以保证数据库的一致性。

  1. 特性(ACID)
  • 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不执行,不会出现部分执行的情况。
  • 一致性(Consistency):事务执行前后,数据库的完整性约束没有被破坏,数据从一个一致状态转换到另一个一致状态。
  • 隔离性(Isolation):多个事务并发执行时,相互之间不会干扰,就像每个事务都是独立执行一样。
  • 持久性(Durability):事务一旦提交,其对数据库的修改就会永久保存,即使数据库发生故障也不会丢失。

13.并发问题及隔离级别

  • 脏读:一个事务读取了另一个未提交事务修改的数据。
  • 不可重复读:在同一个事务中,多次读取同一数据时,由于其他事务对该数据进行了修改并提交,导致每次读取的结果不一致。
  • 幻读:在一个事务中,按照某个条件查询数据时,由于其他事务插入或删除了符合该条件的数据,导致前后两次查询的结果集不一致。
  • 隔离级别:包括读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。MySQL 的默认隔离级别是可重复读,通过 MVCC(多版本并发控制)来解决并发问题,避免脏读、不可重复读和部分幻读情况的发生。

14.MVCC(多版本并发控制)

MVCC 是 MySQL 在可重复读隔离级别下实现高并发的关键技术。它通过在每行数据后面保存两个隐藏的列来实现,一个是创建版本号,一个是删除版本号。
当事务读取数据时,会根据事务的版本号和数据的版本号来判断数据是否可见,从而实现了不同事务之间的并发访问控制,避免了数据的冲突和不一致。

15.三个日志

  1. redo log(重做日志)
    用于记录数据库的物理修改,即数据页的修改记录。当数据库发生故障时,通过 redo log 可以将数据库恢复到故障前的状态,保证事务的持久性。
    它是顺序写入的,写入性能很高,并且在事务提交时,会将 redo log buffer 中的数据刷新到磁盘上的 redo log 文件中。
  2. undo log(回滚日志)
    主要用于事务回滚和 MVCC。在事务执行过程中,如果需要回滚,就可以根据 undo log 中的记录来撤销对数据的修改。
    同时,undo log 也为 MVCC 提供了数据的历史版本信息,使得在不同事务中可以看到数据的不同版本。
  3. bin log(二进制日志)
    记录了数据库的所有更新操作,包括数据的插入、更新、删除等,不包含查询语句。它主要用于数据库的备份、恢复以及主从复制。
    前的状态,保证事务的持久性。
    它是顺序写入的,写入性能很高,并且在事务提交时,会将 redo log buffer 中的数据刷新到磁盘上的 redo log 文件中。
  4. undo log(回滚日志)
    主要用于事务回滚和 MVCC。在事务执行过程中,如果需要回滚,就可以根据 undo log 中的记录来撤销对数据的修改。
    同时,undo log 也为 MVCC 提供了数据的历史版本信息,使得在不同事务中可以看到数据的不同版本。
  5. bin log(二进制日志)
    记录了数据库的所有更新操作,包括数据的插入、更新、删除等,不包含查询语句。它主要用于数据库的备份、恢复以及主从复制。
    在主从复制中,主库将 bin log 中的日志发送给从库,从库根据这些日志来重新执行相应的操作,从而实现主从库的数据一致性。

相关文章:

面试题总结一

第一天 1. 快速排序 public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作&#xff0c;获取基准元素的最终位置int pivotIndex partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, …...

Ubuntu24.04下安装ISPConfig全过程记录

今天在网上看到ISPConfig&#xff0c;觉得不错&#xff0c;刚好手里又有一台没用的VPS,就顺手安装一个玩玩。具体安装步骤如下&#xff1a; 一、配置服务器hosts及hostname 【安装时候需要检查】 使用root账号登录VPS后 先安装vim编辑器&#xff0c;然后编辑hosts&#xff0…...

【NGINX】 -10 keepalived + nginx + httpd 实现的双机热备+ 负载均衡

文章目录 1、主架构图1.1 IP地址规划 2、web服务器操作3、配置nginx服务器的负载均衡4、配置keepalived4.1 master4.1 backup 5、测试双机热备5.1 两台keepalived服务器均开启5.2 模拟master节点故障 1、主架构图 1.1 IP地址规划 服务器IP地址web1192.168.107.193web2192.168.…...

NC016NC017美光固态芯片NC101NC102

NC016NC017美光固态芯片NC101NC102 在存储技术的演进历程中&#xff0c;美光科技的NC016、NC017、NC101与NC102系列固态芯片&#xff0c;凭借其技术创新与市场适应性&#xff0c;成为行业关注的焦点。本文将从技术内核、产品性能、行业动向、应用场景及市场价值五个维度&#…...

C++(22):fstream的一些成员函数

目录 1 遍历读取文件 1.1 eof()方法 2 读取文件大小 2.1 seekg() 2.2 tellg() 2.3 代码实例 3 存取文字 3.1 read() 3.2 write() 3.3 代码实例 3.3.1 存取文字 3.3.2 特殊方法存储 3.3.3 特殊方法读取 4 重载的输入输出 4.1 重载的输出 << 4.2 重载的输…...

【网络】Wireshark练习3 analyse DNS||ICMP and response message

ip.addr 172.16.0.100 && ip.addr 172.16.0.5 && (dns || icmp) 包号 22–31 之所以被选中&#xff0c;是因为在整个抓包文件里&#xff0c;与执行 ping cat.inx251.edu.au 这一事件相关的所有报文&#xff0c;恰好连续出现在第 22 到第 31 条记录中。具体分…...

GBS 8.0服装裁剪计划软件在线试用

1、全新升级内核8.0&#xff0c;分床更合理&#xff0c;铺布床数更少&#xff1b; 2、支持SS AUTONESTER排料引擎切换 3、支持ASTM AAMA及国产CAD&#xff08;如布衣&#xff09;导出的DXF&#xff0c;Prj文件等 4、核心引擎优化 拖料优化 省料优化 5、经实战对比人工&…...

顺 序 表:数 据 存 储 的 “ 有 序 阵 地 ”

顺 序 表&#xff1a;数 据 存 储 的 “ 有 序 阵 地 ” 线 性 表顺 序 表 - - - 顺 序 存 储 结 构顺 序 表 的 操 作 实 现代 码 全 貌 与 功 能 介 绍顺 序 表 的 功 能 说 明代 码 效 果 展 示代 码 详 解SeqList.hSeqList.ctest.c 总 结 &#x1f4bb;作 者 简 介&#xf…...

#Redis黑马点评#(七)实战篇完结

目录 一 达人探店 1 发布探店笔记 2 查看探店笔记 3 点赞功能 ​编辑 4 点赞排行榜&#xff08;top5&#xff09; ​编辑 二 好友关注 1 关注与取关 2 共同关注 3 Feed流实现关注推送 4 实现滚动分页查询 三 附近商店 1 GEO数据结构 2 附近商户搜索功能 四 用户…...

初始C++:类和对象(中)

概述&#xff1a;本篇博客主要介绍类和对象的相关知识。 1. 类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;在不写任何代码的情况下编译器会默认生成以下六个默认函数&#xff0c;在六个默认…...

Java开发经验——阿里巴巴编码规范实践解析3

摘要 本文深入解析了阿里巴巴编码规范中关于错误码的制定与管理原则&#xff0c;强调错误码应便于快速溯源和沟通标准化&#xff0c;避免过于复杂。介绍了错误码的命名与设计示例&#xff0c;推荐采用模块前缀、错误类型码和业务编号的结构。同时&#xff0c;探讨了项目错误信…...

ChatGPT:OpenAI Codex—一款基于云的软件工程 AI 代理,赋能 ChatGPT,革新软件开发模式

ChatGPT&#xff1a;OpenAI Codex—一款基于云的软件工程 AI 代理&#xff0c;赋能 ChatGPT&#xff0c;革新软件开发模式 导读&#xff1a;2025年5月16日&#xff0c;OpenAI 发布了 Codex&#xff0c;一个基于云的软件工程 AI 代理&#xff0c;它集成在 ChatGPT 中&#xff0c…...

iOS 内存分区

iOS内存分区 文章目录 iOS内存分区前言五大分区static、extern、const关键字比较conststaticextern与.h文件的关系extern引用变量extern声明 static和const联合使用extern和const联合使用 前言 笔者之前学习OC源码的时候,发现对于这里的几个static,extern,const的内容有遗忘,所…...

LWIP的Socket接口

Socket接口简介 类似于文件操作的一种网络连接接口&#xff0c;通常将其称之为“套接字”。lwIP的Socket接口兼容BSD Socket接口&#xff0c;但只实现完整Socket的部分功能 netconn是对RAW的封装 Socket是对netconn的封装 SOCKET结构体 struct sockaddr { u8_t sa_len; /* 长…...

【Linux笔记】——线程同步条件变量与生产者消费者模型的实现

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux笔记】——线程互斥与互斥锁的封装 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、线程同步的…...

Popeye

概览与定位 Popeye 是由 derailed 团队开源的 Kubernetes 集群资源 “Sanitizer”&#xff0c;它以只读方式扫描集群内的各种资源&#xff08;如 Pod、Service、Ingress、PVC、RBAC 等&#xff09;&#xff0c;并基于社区最佳实践给出问题等级及修复建议&#xff0c;覆盖配置误…...

ES(ES2023/ES14)最新更新内容,及如何减少内耗

截至2023年10月,JavaScript(ECMAScript)的最新版本是 ES2023(ES14)。 ES2023 引入了许多新特性,如findLast、toSorted等,同时优化了性能。通过减少全局变量、避免内存泄漏、优化循环、减少DOM操作、使用Web Workers、懒加载、缓存、高效数据结构和代码压缩,可以显著降低…...

电子数据取证(数字取证)技术全面指南:从基础到实践

为了后续查阅方便&#xff0c;推荐工具先放到前面 推荐工具 数字取证基础工具 综合取证平台 工具名称类型主要功能适用场景EnCase Forensic商业全面的证据获取和分析、强大的搜索能力法律诉讼、企业调查FTK (Forensic Toolkit)商业高性能处理和索引、集成内存分析大规模数据处…...

【通用智能体】Serper API 详解:搜索引擎数据获取的核心工具

Serper API 详解&#xff1a;搜索引擎数据获取的核心工具 一、Serper API 的定义与核心功能二、技术架构与核心优势2.1 技术实现原理2.2 对比传统方案的突破性优势 三、典型应用场景与代码示例3.1 SEO 监控系统3.2 竞品广告分析 四、使用成本与配额策略五、开发者注意事项六、替…...

基于 STM32 的手持式安检金属探测器设计与实现

一、硬件设计:芯片与功能模块选型及接线 1. 主控芯片选型 芯片型号:STM32F103C8T6 核心优势: 32 位 Cortex-M3 内核,主频 72MHz,满足实时数据处理需求64KB Flash+20KB SRAM,支持程序存储与数据缓存丰富外设:2 路 USART、2 路 SPI、1 路 I2C、12 位 ADC,适配多模块通信…...

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系1.Default Pawn与Camera的关系1.1. Default Pawn 是什么&#xff1f;1.2. Default Pawn 的主要组件1.3. Default…...

Spring源码主线全链路拆解:从启动到关闭的完整生命周期

Spring源码主线全链路拆解&#xff1a;从启动到关闭的完整生命周期 一文看懂 Spring 框架从启动到销毁的主线流程&#xff0c;结合原理、源码路径与伪代码三位一体&#xff0c;系统学习 Spring 底层机制。 1. 启动入口与环境准备 原理说明 Spring Boot 应用入口是标准 Java 应…...

飞帆控件:可配置post/get接口

先上链接&#xff1a; post_get_ithttps://fvi.cn/796看一下这个控件的配置&#xff1a; 当 url 有某个 get 参数时&#xff0c;例如某些接口回传的参数。使用这个接口会发生这些&#xff1a; 如果检测到 url 中有该 url 参数则继续执行选择是否从 url 中删除该参数将这个参数…...

Android 自定义悬浮拖动吸附按钮

一个悬浮的拨打电话按钮&#xff0c;使用CardViewImageView可能会出现适配问题&#xff0c;也就是图片显示不全&#xff0c;出现这种问题&#xff0c;就直接替换控件了&#xff0c;因为上述的组合控件没有FloatingActionButton使用方便&#xff0c;还可以有拖动和吸附效果不是更…...

Spring AI Alibaba集成阿里云百炼大模型应用

文章目录 1.准备工作2.引入maven依赖3.application.yml4.调用4.1.非流式调用4.2.流式调用 阿里云百炼推出的智能体应用、工作流应用和智能体编排应用&#xff0c;有效解决了大模型在处理私有领域问题、获取最新信息、遵循固定流程以及自动规划复杂项目等方面的局限&#xff0c;…...

UI-TARS本地部署

UI-TARS本地部署 UI-TARS本地部署 UI-TARS 论文&#xff08;arXiv&#xff09; UI-TARS 官方仓库&#xff1a;包含部署指南、模型下载链接及示例代码。 UI-TARS-Desktop 客户端&#xff1a;支持本地桌面应用的交互控制。 模型部署框架&#xff1a;vLLM本地部署 1.下载项目…...

如何利用内网穿透实现Cursor对私有化部署大模型的跨网络访问实践

文章目录 前言1.安装Ollama2.QwQ-32B模型安装与运行3.Cursor安装与配置4. 简单使用测试5. 调用本地大模型6. 安装内网穿透7. 配置固定公网地址总结 前言 本文主要介绍如何在Windows环境下&#xff0c;使用Cursor接入Ollama启动本地部署的千问qwq-32b大模型实现辅助编程&#x…...

Linux的进程概念

目录 1、冯诺依曼体系结构 2、操作系统(Operating System) 2.1 基本概念 ​编辑 2.2 目的 3、Linux的进程 3.1 基本概念 3.1.1 PCB 3.1.2 struct task_struct 3.1.3 进程的定义 3.2 基本操作 3.2.1 查看进程 3.2.2 初识fork 3.3 进程状态 3.3.1 操作系统的进程状…...

(10)python开发经验

文章目录 1 cp35 cp36什么意思2 找不到pip3 subprocess编码错误4 导出依赖文件包含路径5 使用自己编译的python并且pyinstall打包程序 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1f448; 1 cp35 cp36什…...

什么是时间戳?怎么获取?有什么用

时间戳的定义 时间戳&#xff08;Timestamp&#xff09;是指记录某个事件发生的具体时间点&#xff0c;通常以特定的格式表示。它可以精确到秒、毫秒甚至更小的单位&#xff0c;用于标识某个时刻在时间轴上的位置。 获取时间戳的方法 在不同的编程语言中&#xff0c;获取时间…...

Zookeeper 入门(二)

4. Zookeeper 的 ACL 权限控制( Access Control List ) Zookeeper 的ACL 权限控制,可以控制节点的读写操作,保证数据的安全性&#xff0c;Zookeeper ACL 权 限设置分为 3 部分组成&#xff0c;分别是&#xff1a;权限模式&#xff08;Scheme&#xff09;、授权对象&#xff08…...

[创业之路-361]:企业战略管理案例分析-2-战略制定-使命、愿景、价值观的失败案例

一、失败案例 1、使命方面的失败案例 真功夫创业者内乱&#xff1a;真功夫在创业过程中&#xff0c;由于股权结构不合理&#xff0c;共同创始人及公司大股东潘宇海与实际控制人、董事长蔡达标产生管理权矛盾。双方在公司发展方向、管理改革等方面无法达成一致&#xff0c;导致…...

dijkstra算法加训上 之 分层图最短路

来几个分层图的题练习下哈 P4568 [JLOI2011] 飞行路线 P4568 [JLOI2011] 飞行路线 - 洛谷https://www.luogu.com.cn/problem/P4568 题目描述 Alice 和 Bob 现在要乘飞机旅行&#xff0c;他们选择了一家相对便宜的航空公司。该航空公司一共在 n 个城市设有业务&#xff0c;设这…...

赋予AI更强的“思考”能力

刚刚&#xff01;北大校友、OpenAI前安全副总裁Lilian Weng最新博客来了&#xff1a;Why We Think 原文链接&#xff1a;Why We Think by Lilian Weng 这篇文章关注&#xff1a;如何让AI不仅仅是“知道”答案&#xff0c;更能“理解”问题并推导出答案。通过赋予AI更强的“思…...

微服务项目->在线oj系统(Java版 - 1)

相信自己,终会成功 目录 C/S架构与B/S架构 C/S架构&#xff08;Client/Server&#xff0c;客户端/服务器架构&#xff09; 特点&#xff1a; 优点&#xff1a; 缺点&#xff1a; 典型应用&#xff1a; B/S架构&#xff08;Browser/Server&#xff0c;浏览器/服务器架构&a…...

【深度学习】使用块的网络(VGG)

虽然 AlexNet 证明深层神经网络卓有成效&#xff0c;但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。 也就是说尽管我知道了更深更大的网络更有效&#xff0c;但是不清楚怎么让它更深更大&#xff0c;从而起到一个更好的效果。 于是&#xff0c;研究人员开始从单…...

Python数据可视化 - Pyecharts绘图示例

文章目录 一、Pyecharts简介及安装1. Pyecharts简介2. 安装Pyecharts 二、准备数据三、饼图示例1. 初始化选项配置2. 饼图相关设置3. 全局配置项3.1 标题配置项3.2 图例配置项3.3 提示框配置项3.4 工具箱配置项3.5 视觉映射配置项 4. 系列配置项4.1 标签选项配置4.2 图元样式配…...

Day29

复习日 知识点回顾 类的装饰器装饰器思想的进一步理解&#xff1a;外部修改、动态类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工具的理…...

Python列表全面解析:从入门到精通

文章目录 Python列表全面解析&#xff1a;从入门到精通一、列表基础1. 什么是列表&#xff1f;2. 列表特性总结表 二、列表的基本操作(基础)1. 访问元素2. 修改列表 三、列表的常用方法(基础)1. 添加元素的方法2. 删除元素的方法3. 查找和统计方法4. 排序和反转 四、列表的高级…...

Nacos数据写入流程

在 3 节点的 Nacos 集群中&#xff0c;数据写入流程和主节点&#xff08;Leader&#xff09;的角色基于 Nacos 的分布式一致性协议&#xff08;通常使用 Raft 协议&#xff09;来实现。以下以 Markdown 格式详细说明 3 节点 Nacos 集群的数据写入流程以及主节点的角色和确定方式…...

《P4551 最长异或路径》

题目描述 给定一棵 n 个点的带权树&#xff0c;结点下标从 1 开始到 n。寻找树中找两个结点&#xff0c;求最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 输入格式 第一行一个整数 n&#xff0c;表示点数。 接下来 n−1 行&#xff0c;给出…...

Ansible模块——文件属性查看,文件或目录创建和属性修改

ansible.builtin.stat 可以查看文件信息。 选项 类型 默认值 描述 pathstrnull 要检查的文件或目录的完整路径&#xff08;必需&#xff09;。 followboolfalse 如果是符号链接&#xff0c;是否跟随到目标路径上获取其状态。 get_attributesbooltrue 是否返回扩展属性&#…...

【图像生成大模型】Wan2.1:下一代开源大规模视频生成模型

Wan2.1&#xff1a;下一代开源大规模视频生成模型 引言Wan2.1 项目概述核心技术1. 3D 变分自编码器&#xff08;Wan-VAE&#xff09;2. 视频扩散 Transformer&#xff08;Video Diffusion DiT&#xff09;3. 数据处理与清洗 项目运行方式与执行步骤1. 环境准备2. 安装依赖3. 模…...

AGI大模型(25):LangChain提示词模版

我们也可以创建prompt template, 并引入一些变量到prompt template中,这样在应用的时候更加灵活。 1 代码实现 # 我们也可以创建prompt template, 并引入一些变量到prompt template中,这样在应用的时候更加灵活 from langchain_core.prompts import ChatPromptTemplate from…...

mybatis中的resultMap的association及collectio的使用

目录 1.reusltmap的说明 2.association的使用 3.collection的使用 4.总结 1.reusltmap的说明 resultmap定义了数据库的结果映射到java对象的规则&#xff0c;resultmap包含4个属性&#xff1a; id: ResultMap 的唯一标识 type: 映射到的 Java 类型&#xff08;全限定类名或…...

静态网站部署:如何通过GitHub免费部署一个静态网站

GitHub提供的免费静态网站托管服务可以无需担心昂贵的服务器费用和复杂的设置步骤&#xff0c;本篇文章中将一步步解如何通过GitHub免费部署一个静态网站&#xff0c;帮助大家将创意和作品快速展现给世界。 目录 了解基础情况 创建基础站点 在线调试站点 前端项目部署 部署…...

Android 手写签名功能详解:从原理到实践

Android 手写签名功能详解 1. 引言2. 手写签名核心实现&#xff1a;SignatureView 类3. 交互层实现&#xff1a;MainActivity 类4. 布局与配置5. 性能优化与扩展方向 1. 引言 在电子政务、金融服务等移动应用场景中&#xff0c;手写签名功能已成为提升用户体验与业务合规性的关…...

【iOS(swift)笔记-9】WKWebView无法访问网络

对于iOS 在info中添加App Transport Security Settings&#xff0c;然后在App Transport Security Settings里添加Allow Arbitrary Loadstrue 对于macOS 除了上面的操作&#xff0c;还需在项目信息的App Sandbox里有个Network打钩选项...

Adapter适配器模式

Adapter适配器模式是一种结构设计模式&#xff0c;用于解决接口不兼容的问题&#xff0c;通过适配器类&#xff0c;可以将一个类的接口转换为客户渴望的另一个接口&#xff0c;从而使原来无法协作的对象能够一起工作。 角色和职责&#xff1a; 目标接口&#xff08;Target&…...

七、xlib窗口渲染

文章目录 1.渲染图片2.双缓冲3.混合图片4.渐变窗口 1.渲染图片 在上篇文章中的最后&#xff0c;我们使用libpng加载了一个png图片&#xff0c;并显示到窗口上&#xff0c;但是我们可以看到显示到窗口的图片周边有黑色的背景。原因是在我测试的操作系统下使用xlib创建的窗口默认…...