Hilda

「离开世界之前 一切都是过程」

java闭包

闭包是JavaScript和Java中重要的概念,指函数或Lambda捕获外部作用域变量。JavaScript通过内部函数访问局部变量形成闭包;Java中,Lambda或匿名类捕获final变量实现闭包,动态绑定状态,增强函数式编程灵活性。

通常讲到闭包,一般都是指在javascript的环境中。闭包是JS中一个非常重要的也非常常用的概念。闭包产生的原因就是变量的作用域范围不同。一般来说函数内部的定义的变量只有函数内部可见。如果想要在函数外部操作这个变量就需要用到闭包了。 JS中的闭包 在JS中,变量可以分为两种全局作用域和局部作用域。在函数外部无法读取函数内部定义的局部变量。 例如: 1 2 3 4 functio...

ollama工具-自定义模型

这篇博客介绍了如何使用Ollama的Modelfile定制化模型。通过在Modelfile中指定基础模型、调整temperature等参数和设置SYSTEM系统提示,可以使用ollama create命令创建个性化的模型,然后运行交互。

Ollama中允许用户基于现有模型进行定制化设置,如:调整模型推理参数、设置提示模版等,自定义模型需要创建一个Modelfile文件,在文件中设置参数和提示模版相关内容,如下: 1 2 3 4 5 6 7 8 9 10 FROM llama3.2 # set the temperature to 1 [higher is more creative, lower is more co...

ollama工具-下载安装快速上手

介绍本地大模型运行器Ollama,说明了如何安装、通过命令行下载并运行Gemma等模型进行交互,以及如何列出、删除模型。还演示了直接提问、查看效率和使用llava分析图片功能

简单来说Ollama就是一个大模型的管理平台,“LLM 运行器” 或 “本地 LLM 管理器” Ollama 是一个基于 Go 语言开发的简单易用的本地大语言模型运行框架。可以将其类比为 docker,事实上它也的确制定了类 docker 的一种模型应用标准 在管理模型的同时,它还基于 Go 语言中的 Web 框架 gin提供了一些 Api 接口,让你能够像跟 OpenAI...

026 哈希表,有序表和比较器的用法

哈希表(集):O(1)操作依赖hashCode/equals;有序表(集):O(log n)操作依赖比较器维护顺序。介绍根据值/地址作键、数组替代哈希表场景、比较器定制和字典序概念。

概览: 前置知识:无 提醒:讲解虽然用的java语言,但是任何语言都有对等的概念 提醒:后续有专门的章节来详解哈希函数、有序表,这节课就是常规用法展示 哈希表的用法(认为是集合,根据值来做key 或者 根据内存地址做key) HashSet和HashMap原理一样,有无伴随数据的区别 增、删、改、查时间为O(1),但是大常数 所以当key的范围是固定的、可控的情况下,可以用...

java基础(2) 实现hashCode方法的通用约定

hashCode的通用约定确保哈希表等数据结构能正确运行:首先,如果两个对象通过equals方法比较是相等的,它们的hashCode必须相同;其次,只要用于equals比较的对象信息未变,单次程序运行中同一对象的hashCode必须保持一致;最后,虽然不强制要求,但为了提高性能,不相等的对象应尽量产生不同的hashCode以减少哈希冲突。

实现hashCode方法的通用约定 在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这个同一对象调用多次,hashCode方法必须始终如一地返回同一个整数。在同一个应用程序的多次执行过程中,每次执行所返回的整数可以不一致。 如果两个对象根据equals(Object)方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方...

025 堆结构与堆排序

堆是数组实现的完全二叉树,核心操作为向上(heapInsert)和向下(heapify)调整(O(log n))。堆排序先建堆(O(n)或O(n log n)),再交换堆顶并调整。整体时间复杂度O(n log n),空间O(1)。堆结构本身比堆排序更有用。

概览: 前置知识:无 堆结构 完全二叉树和数组前缀范围来对应,大小,单独的变量size来控制 i的父亲节点:(i-1)/2,i的左孩子:i*2 + 1,i的右孩子:i*2 + 2 堆的定义(大根堆、小根堆),本节课讲解按照大根堆来讲解,小根堆是同理的。 堆的调整:heapInsert(向上调整)、heapify(向下调整) heapInsert、heapify方法的单次调用...

力扣2607 使子数组元素和相等

优化

2607. 使子数组元素和相等 这道题本身比较难,需要掌握裴蜀定理。 我今天想到的优化就是把原先数组排序找中位数,直接变成只寻找中位数(利用最近学到的寻找kth大的数来解决,随机选择的思想),优化找中位数的这一步的时间复杂度(时间复杂度这一步做到O(N),N不是原数组的大小,而是temp数组的大小) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...

024 随机选择算法,BFPRT算法

本博客讲解了在无序数组中寻找第K大元素的两种方法:随机选择算法和BFPRT算法。随机选择算法基于快排思想,期望时间复杂度为O(n),但证明较复杂。BFPRT算法通过选取“中位数的中位数”作为pivot,保证最坏情况下时间复杂度也为O(n),但实现稍复杂。博客提供了两种算法的Java代码,并强调BFPRT算法的意义在于其规避最坏情况,优化算法的思想。

前置知识:讲解023-随机快速排序 笔记 下面的我是指左老师本人 本节视频链接 本节leetcode链接:https://leetcode.cn/problems/xx4gT2/description/ 本题与主站 215 题相同: https://leetcode-cn.com/problems/kth-largest-element-in-an-array/...

018 二叉树遍历的非递归方法和复杂度分析

本文总结了用栈实现二叉树的三种遍历方式:先序、中序和后序。先序遍历用栈记录节点,先压右子节点再压左子节点。中序遍历利用栈模拟递归,访问左子树为空的节点。后序遍历可用两个栈(易理解,空间O(n))或一个栈(空间O(h),更复杂)实现。 遍历的时间复杂度为O(n),空间复杂度通常为O(h),Morris遍历可实现O(1)空间复杂度。

前置知识:二叉树、先序、中序、后序、栈 关于栈的笔记,整理如下: 013【入门】队列和栈-链表、数组实现 014【入门】队列和栈入门题目-栈和队列相互实现 015 最小栈-力扣155 建议:不要跳过 1)用栈实现二叉树先序遍历 2)用栈实现二叉树中序遍历 3)用两个栈实现二叉树后序遍历,好写但是不推荐,因为需要收集所有节点,最后逆序弹出,额外空间复杂度...

016 双端队列-力扣641-双链表和固定数组实现

这篇博客介绍了循环双端队列的2种实现方式:双链表LinkedList和固定数组。双链表(自己实现)实现速度较快,但需手动编写节点类;LinkedList实现简单,但效率稍逊;固定数组实现适用于已知队列大小上限的情况,通过取模运算或等价逻辑循环利用数组空间。选择哪种实现取决于具体需求和性能考量。

641. 设计循环双端队列 1 双端队列介绍 既能头出也能头入,既能尾出也能尾入。 2 双链表实现双端队列 我自己预先写了一个解法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4...