随笔分类 - Java
摘要:如何快速求一个整数使用二进制表示时1的个数? 这里给出一个很简单的方法,首先看代码: public int findBin1Count(int n) { int res = 0; while (n != 0) { if ((n & 1) == 1) res++; n >>= 1; } return
阅读全文
摘要:贪心算法案例 - 分发糖果(Hard) 1. 题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最
阅读全文
摘要:贪心算法案例 - 分发饼干(Easy) 1. 题目描述 有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱? 2. 输出案例 输入两个数组,分别代表孩子的饥饿度和饼干的大小。输
阅读全文
摘要:动态规划 - 计算最长公共子串问题 题目描述: 给定两个字符串s, t,求字符串 t 在字符串 s 中的最长公共长度,例如字符串 s 为"itheima", t为"thema",则公共字串有"the", "ma", 最长公共子串为"the"。 这种类似的问题有多种解法,今天已动态规划来解决该问题。
阅读全文
摘要:贪心算法案例 - 零钱兑换问题 贪心算法原则: 每一次都选取当前最优解 《向前看,别回头》 案例:(322. 零钱兑换 - 力扣(LeetCode)) 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬
阅读全文
摘要:牛顿迭代法 - 求解非线性方程根的近似解 在算法中,牛顿迭代法主要用于求解非线性方程或优化问题。它是一种迭代算法,通过不断逼近来找到函数的根或者最小化/最大化某个目标函数。 这里呢,我们重点讲一下如何求解线性方程 \(F(X) = 0\) 近似根的大致步骤。 选择一个初始猜测值\(x_0\): 这个
阅读全文
摘要:贪心算法经典案例-分数背包问题 问题描述 n个物品都是液体,有重量和价值: 现在你需要拿走10升的液体 每次可以不拿,全拿,或拿一部分,问怎么拿才能获取最高的价值 编号 重量(升) 价值 物品 0 4 24 水 1 8 160 牛奶 2 2 4000 五粮液 3 6 108 可乐 4 1 4000
阅读全文
摘要:投票算法 Boyer-Moore 算法描述 Boyer-Moore 投票算法是一种用来在线性时间内找到数组中出现次数超过一半(即多数元素)的算法。这个算法非常高效,因为它只需要一次遍历数组,并且使用常数级别的额外空间。 leetcode169题: 多数元素 算法思路 维护一个候选元素和一个计数器来实
阅读全文
摘要:JAVA 中常见的集合总结 使用集合的好处: 可以动态的保存任意多个对象,使用比较方便 提供了一些列方便的操作对象的方法:add, remove, set, get等 使用集合添加,删除元素的示意代码简洁明了 集合主要分为两种: 单列集合:集合中存放的是单个对象 双列集合:集合中存放的是键值对对象
阅读全文
摘要:Java 线程 1. 创建和运行线程 1.1 直接使用 Thread 例如: public class ThreadTest { public static void main(String[] args) { Thread t = new Thread() { public void run(){
阅读全文
摘要:运行时数据区概述 内存是非常重要的系统资源,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效稳定的运行。不同的JVM对内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来讨论下经典的JVM内存布局。 Java虚拟机定
阅读全文
摘要:关于类的主动使用和被动使用 在JVM当中表示两个class对象是否为同一个类存在的两个必要条件: 类的完整类名必须一致,包括包名。 加载这个类的ClassLoader必须相同。 换句话说,在JVM当中,即使这两个类对象(class对象)来源同一个class文件,被同一个虚拟机加载,但只要加载它们的C
阅读全文
摘要:双亲委派机制 Java虚拟机对Class文件采用的是按需加载的方式,也就是说当需要使用该类的时候才会将它的class文件加载到内存生成Class对象,而且加载某个类的Class文件时,Java虚拟机采用的是双亲委派模式,即把请求交给父类处理,它是一种任务委派模式。 工作原理 如果一个类加载器收到了类
阅读全文
摘要:Java注解和反射 Java注解 什么是注解 Annotation是从JDK5.0开始引入的新技术 Annotation作用: 不是程序本身,可以对程序做出解释 可以被其他程序(比如编译器)读取 Annotation格式: 注解是以@注解名在代码中存在的,还可以添加一些参数值,例如:@Service
阅读全文
摘要:类加载子系统Class Loader Java架构图: 2.1 类加载器的作用 类加载器负责从文件系统或网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件加载,至于它是否可以运行,则由执行引擎(Execution Engine)决定。 加
阅读全文
摘要:1_JVM整体结构 HotSpot VM是目前市面上高性能虚拟机的代表作之一,JVM整体结构如下所示: Java语言跨平台性: Java虚拟机输入的指令基本上是一种基于栈的指令级架构,另外一种指令集则是基于寄存器的指令级架构。这两种架构之间的区别如下: 基于栈式架构特点 设计和实现更简单,适用于资源
阅读全文

浙公网安备 33010602011771号