算法思想:递归与迭代
递归与迭代递归和迭代是算法里最基础、也最容易反复遇到的两种思想。 很多题表面上看是在考树、链表、DFS、回溯,实际上最底层还是在考: 这个问题能不能拆成更小的同类子问题 我是应该让函数自己调用自己,还是自己手动维护过程 所以学习递归和迭代,不只是学两种写法,更重要的是理解问题该怎么拆、过程该怎么推进。 1. 什么是递归递归(Recursion)就是: 一个函数在函数内部直接或间接调用自己。 它的核心思想是: 把原问题拆成一个或多个规模更小、但结构相同的子问题。 例如: 计算阶乘 二叉树遍历 深度优先搜索 DFS 回溯 归并排序 这些问题都很适合递归,因为它们本身就具有明显的“重复子结构”。 1.1 递归最重要的三要素写递归时一定要先想清楚这三件事: 1. 终止条件什么时候不再继续调用自己。 2. 递归关系当前问题和更小子问题之间的关系是什么。 3. 当前层要做什么当前这一层函数除了“调用下一层”之外,还需要做什么处理。 这三点如果有一点没想清楚,递归通常就会写崩。 1.2 一个最简单的递归例子:阶乘public int factorial(int n) { ...
Java基础阶段
Java进阶Stream流Stream 是 Java 8 引入的一套对集合/数组数据进行声明式处理的方式。它本质上不是一个“装数据的容器”,而是一条“处理数据的流水线”。 如果用一句话概括 Stream 的思想: 先拿到数据源,再按步骤描述“我要怎么处理数据”,最后一次性得到结果。 1. Stream流的思想传统写法里,我们经常会写很多 for 循环: 先遍历一次筛选数据 再遍历一次做转换 再遍历一次排序 最后再收集结果 而 Stream 的核心思想就是把这些步骤串成一条流水线: list.stream() .filter(...) .map(...) .sorted(...) .collect(...); 这样写的好处: 代码更关注“做什么”,而不是“怎么一层层循环” 业务逻辑更清晰,筛选、转换、排序、汇总一眼就能看出来 很适合做集合数据处理 需要记住:Stream 不负责存储数据,它只是负责计算数据。 2. Stream流的几个核心特点2.1 不存储数据Stream 本身不保存元素,数据还是在数组、集合等容器中。 2.2...
无标题
如何走出情绪阴影这种感觉太正常了,兄弟。虽然你在理智上已经给自己下了“出征令”,但你的大脑和身体还留在昨天的“情绪废墟”里。 从心理学角度看,你现在处于**“多巴胺戒断期”**。之前你把所有的期待都压在那个女孩身上,大脑习惯了那种高强度的情绪震荡。现在强行切断,就像电脑突然断电,系统重启时会出现大量的“磁盘自检”,速度自然慢得离谱。 别把自己逼太紧,这不叫“意志力薄弱”,这叫**“心理防御机制的正常反应”**。 针对你现在的低效率和低落感,我给你几个**“非说教式”**的实用方案,咱们先从“低功耗模式”跑起: 1. 开启“系统低功耗模式”(Low Power Mode)既然你是搞技术的,你应该明白:当电池电量低于 10% 时,勉强运行 3A 大作只会让系统崩溃。 做法: 别去想那半年的大目标,只看眼前的 25 分钟。 心理暗示: 告诉自己:“我今天不求突破,我只求把这一个 Bug 调通,或者把这三页书看掉。做完了我就去躺平,不带负罪感。” 原理: 降低准入门槛,骗过大脑的逃避本能。 2. 进行一次“物理重启”(System...
docker/k8s/minikube网络问题踩坑
牛魔今天为了部署一个kubeflow,把docker和k8s彻底配置了一天,各种方法都尝试了,包括不限于下载国内的k8s组件,并通过tag绑定到国外的名字上,这样拉一个k8s集群就会直接用本地的,但这种方法不知道为什么失败了。 其次docker的网络也有问题,镜像源不稳定,最终得到尝试通过代理的方法,找到代理软件的端口,在docker- setting-proxy中配置走代理的ip,这样之后稳定了一些。 具体成功的流程: 首先配置docker镜像源以及代理的端口,都在docker desktop中配置: 镜像源: "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ ...
Java Socker网络编程
Java Socket 网络编程 - 四层递进学习法第一层:宏观概念与全景图 (The Big Picture) Socket 是什么? 想象一下:你要给远方的朋友寄一封信。Socket 就是这个过程中的”邮箱”——它是你的计算机与网络上其他计算机进行通信的”接口”或”插座”。 核心问题它解决了什么? 如何让不同计算机上的程序互相通信? 如何可靠地传输数据? 如何管理多个并发的网络连接? 在技术栈中的位置: 应用层(你的程序) ↓ Socket API(Socket层 - 我们学的内容) ↓ 传输层(TCP/UDP 协议) ↓ 网络层(IP 协议) ↓ 物理层(网线、光纤等) Socket 是应用程序与操作系统网络功能之间的桥梁。当你用 Socket 发送数据时,操作系统会负责将其转换为网络包并发送到网络上。 第二层:核心语法与组件 (Syntax & Components) Java Socket API 的关键类和方法 | 类名 | 用途 | 谁使用 ...
最硬核的自制力机制技术讨论
小红书出处:【或许是至今最硬核的自制力技术讨论(上) - 哈里凯恩是冠军 | 小红书 - 你的生活兴趣社区】 😆 odsYqoCt1YOMMBx 😆 https://www.xiaohongshu.com/discovery/item/688d8e59000000000303143f?source=webshare&xhsshare=pc_web&xsec_token=ABLP6SfydwEonQSuWMHITB6Q301oW2HfuiBLAYChGcfzs=&xsec_source=pc_share 第一节:自制力模型&三大核心原理1.self-control model 因为有了这个模型,所以我们要做的就是在每次想要在放纵和自律的选择之间,让短期的自律权重V更大,再加上我们的自由意志,最终让自律战胜。 因此才有了具体的三大核心原理:神圣座位、下必为例、线性时延 第二节:回溯寻找关键点**递归稳态迭代协议(Recursive stabilization Iteration...
SQL学习
SQL执行顺序:第1步:FROM - 找到数据源FROM users u MySQL首先要知道数据从哪里来,所以第一步是确定表和给表起别名。 这一步做了什么? 找到指定的表 为表创建别名(如果有的话) 准备读取数据 第2步:JOIN - 连接多张表FROM users uJOIN orders o ON u.id = o.user_id 如果查询涉及多张表,MySQL会根据JOIN条件将它们连接起来。 常见的JOIN类型: INNER JOIN:只返回两表都有的数据 LEFT JOIN:返回左表所有数据,右表没有则为NULL RIGHT JOIN:返回右表所有数据,左表没有则为NULL -- 示例:查询用户及其订单信息SELECT u.name, o.order_dateFROM users uLEFT JOIN orders o ON u.id = o.user_id; 第3步:WHERE - 过滤不需要的行WHERE u.age > 18 AND u.status =...
后段学习路线
TIPS 学习过程中不要太抠细节,计算机是一个应用技术,要学的是它的原理和应用,而不是细节。 第一次学不明白是很正常的,要多轮次的学习才能把知识记到脑海中去 不要浪费时间在长时间的视频课上,很低效 学习路线 语法和数据结构: 语法一般有基础语法,比如如何实现循环,条件分支之类的。 之后再了解一下该语言的一些数据结构就可以了。 进阶的一些概念留到项目中慢慢学习 计算机基础课这部分重点是计算机网络和操作系统,这部分建议看书或者视频课,视频课建议看CSAPP。CSAPP的视频也有文字总结版:https://github.com/huihongxiao/MIT6.S081书籍推荐:TCP/IP协议卷,计算机自顶向下 刷算法题:主要刷好leetcode和hot的100题就可以了,搞清楚用到的所有技巧和方法,多回顾总结,没必要在这上面浪费太多时间,是一个低回报的时候,秉承细水长流的思想。 MYSQl+数据库系统实践:其实就是学SQL语法,学会基本的增删改查,联表子查询等,学完了可以去力扣练手 JAVA Web+...
k8s学习记录
为什么需要k8s? 当你需要管理很多容器时,K8s 帮你自动化处理它们的部署、扩缩容、故障恢复和网络连接等复杂工作。   核心组件 (管理层和员工内部的“部门”)简单了解一下这些“部门”的名字和职能,你之后会经常听到它们: 在控制平面 (大脑) 里: API Server: 集群的唯一入口,像公司的“前台总机”,所有沟通都必须经过它。 etcd:...



