线程 线程和进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不...
摘要: IEEE 754单精度浮点数标准规定了float在Java中占用32位,包括1位符号位、8位指数和23位尾数。由于二进制浮点数表示的限制,很多十进制小数在二进制中是无限循环小数,导致浮点数只能存储近似值。具体计算中,2.0f和1.9f的近似表示分别导致2.0f-1.9f结果为0.100000024,1.8f和1.7f的近似表示导致1.8f-1.7f结果为0.099999905。这是因为1.9f和1.8f在二进制中无法精确表示,而1.7f和2.0f是精确的浮点数。
float a = 2.0f - 1.9f; float b = 1.8f - 1.7f; System.out.println(a);// 0.100000024 System.out.println(b);// 0.099999905 System.out.println(a == b);// false 1. IEEE 754 单精度浮点数标准 单精度浮点数 (float) 在 Java 中占用 32 位,分为三个部分: 1 位符号位:表示正数或负数。 8 位指数:表示二进制科学记数法中的指数部分。 **23 位尾...
关于双指针的快慢指针和左右指针的用法,可以参见前文 双指针技巧汇总,本文就解决一类最难掌握的双指针技巧:滑动窗口技巧。并总结出一套框架,可以保你闭着眼睛都能写出正确的解法。 滑动窗口框架概览 滑动窗口算法技巧主要用来解决子数组问题,比如让你寻找符合某个条件的最长/最短子数组。 如果用暴力解的话,你需要嵌套 for 循环这样穷举所有子数组,时间复杂度是 O(N2)O(N^2): ...
传染病防控 问题描述 R市正在进行传染病防控,R 市总共有 $n$ 个人。具体的,每个人有一个位置 $(x, y)$,现在已知有一个高风险人员,但未指明具体是谁。同时我们定义一个安全距离$k$,如果某个人和这个高风险人员的距离不超过$k$,那么这个人也将被列为高风险人员。为了减少防控对市民生活的影响,工作人员希望知道所有可能情况下最多的高风险人员数量。 两个人 $(x_1, y_1)$ 和 $(x_2, y_2)$ 的距离定义为:$|x_1 - x_2| + |y_1 - y_2|$ 输入描述 第一行:两个整数 n, k。表示有 n 个人以及距离阈值 k。 ...
题 1 题目描述 整数 1 ~ n,计算选择 k 个数能够获得多少积分。 计分规则:初始积分为 0,对于被选取的整数 i,如果 i + 1 没选取,则积分加 1。 输入描述 每个测试文件中包含多组测试数据。 第一行输入一个整数 T (1 ≤ T ≤ 10^5) 代表数据组数。 每组测试数据描述如下: 在一行上输入两个整数 n, k (1 ≤ n, k ≤ 10^12; k < n),含义和题面描述一致。 输出描述 对于每一组测试数据,在一行上输出一个整数,代表最多能够获得的积分。 示例 输入 2 1 ...
1 哈希 1. 两数之和 class Solution { public int[] twoSum(int[] nums, int target) { Map hashMap = new HashMap(); for (int i = 0; i < nums.length; i++) { if (hashMap.containsKey(target - nums[i])) { return new int[] { hashMap....
题 1 import java.util.Scanner; public class Fibonacci { // 方法:计算斐波那契数列的第n项 public static int fibonacci(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } // 从2开始,利用两个变量存储前两项 int a = 0, b = 1, ...
题 1 题目描述: 小明在研究一个有趣的数组翻转操作问题,其中为了考虑均衡,他会同时翻转相邻的两个数。他有一个长度为 N 的数组 a[],并可以进行任意次数操作:选择相邻的两个数,翻转这两个数的符号,即将 a[i] 和 a[i+1] (0 ≤ i ≤ n-1) 的符号都翻转。符号翻转的意思是正数变负数,负数变正数,在程序中即 \num = -num\,也即数字中的取相反数;当然 0 翻转后还是 0。小明的任务是找到经过任意次数(可以为 0 次)这些操作后,能够获得的最优数组 a[]。 输入描述: 第一行包含一个整数 N,表示数组的长度。 第二行包含 N...
题 1 题目描述 给出两个整数 a, b,可以对其进行任意次加倍操作。每次操作可以令 a = 2 × a 或 b = 2 × b,目的是使得最终的 |a − b| 最小(a − b 的绝对值最小),输出最小绝对值。 输入描述 每个测试文件均包含多组测试数据。 第一行输入一个整数 T (1 ≤ T ≤ 10^5),代表数据组数。 每组测试数据描述如下:在一行上输入两个整数 a, b (−10^9 ≤ a, b ≤ 10^9),代表初始数字。 输出描述 对于每一组测试数据,在一行上输出一个整数,代表最小绝对值。 ...
简历 基本信息 个人博客 教育背景 本科 专业软件工程 社团经历 成绩绩点 研究生阶段 研究方向ZSL 成绩绩点 项目经历 基于知识图谱的数据智能分析 省级科研项目 作用 上传excel、csv数据自动生成图表 技术栈 SpringBoot 快速构建基础的后端羡慕 Redis 基于内存的高性能键值对存储 羡慕中负责Session存储、限流 RabbitMQ 时效性高,AIGC部分异步化...