- 博客(31)
- 收藏
- 关注
原创 漏洞是如何被攻击的
所以在这里我们其实不需要关心如何在 buffer 中运行我们的代码,而只需要知道 buffer 的 size,从而改写返回地址,即可以利用程序中原有的代码进行我们的操作。有了上面的基础知识,我们大概就能明白,利用缓冲区溢出,实际上是通过重写返回值地址,来执行另一个代码片段,就是所谓代码注入了。也就是说,利用程序已有的代码,重新组合成我们需要的东西,这样就绕开了系统的防御机制。所以我们要做的就是输入合理的字符串,来触发对应的操作。而对于 x86-64 的栈来说,栈顶的地址最小,栈底的地址最大,寄存器。
2025-07-30 13:00:29
940
原创 实验简单概述
完成实验的过程,也就是深入理解计算机系统的过程,真正动手去做,一是会发现『纸上得来终觉浅』,二是会意识到『知行合一』的重要性。小至数据在内存的存放以及程序的执行机制,大到 web 服务器的编写以及并行程序的设计,都有了更加透彻的认知。首先要说的是,这门课的课本,也就是《深入理解计算机系统》(CSAPP),我是之前大致阅读过一次的,有一些笔记,但是课后的几个 lab 都没有具体实现,很多概念都属于一知半解。这些都很好,但是不是最好的,最好的部分,在我看来,是通过一门课程,去引导学生往抵抗力最大的路径走。
2025-07-03 13:09:26
372
原创 点燃童心之光,探寻求学之路
本文探讨了儿童教育中的关键要素。作者结合多年家教经验,强调需根据儿童个体差异寻找最佳学习时段,或晨或晚,顺势而为才能事半功倍。文章指出目标引导的重要性,建议通过提问、辩论等方式启发孩子思考学习意义,避免说教。同时提出要因材施教制定学习计划,将理论实践相结合,并细化到每日具体安排。全文以"钥匙"、"灯塔"、"图纸"等意象贯穿,生动展现了在尊重儿童天性的基础上,如何引导其建立学习目标与方法,最终实现智慧成长的教育理念。
2025-07-03 13:02:27
292
原创 产品经理也要会数据分析方法
既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。以上这几种数据分析的方法论,仅仅掌握单纯的理论是不行的。🤔越来越多的人开始转行AI产品经理,毕竟大行情不是太好,对于刚毕业的研究生,想转行的互联网人,AI产品经理,确实是一个不错的方向,我在大厂做了多年的AI产品经理,还是想给大家一些经验和方向⏩。除了需要关注整体用户的留存情况之外,市场团队可以关注各个渠道获取用户的留存度,或各类内容吸引来的注册用户回访率,产品团队关注每一个新功能对于用户的回访的影响等。
2025-06-26 09:51:47
463
原创 产品经理的自我救赎
因为结果不开放,所以我们一定是想要打败大魔王的,我们一定是想要解开各种谜题的,更何况在塞尔达的世界里遍地是谜题,玩着玩着就坚持下去了。为什么呢,因为动脑设计和创造好累,要花时间花精力,可能搞了半天还远不如网上大神做的,于是想要秀的可能去买个代练代建岛的服务,其他人则弃坑退游卖卡带。啥叫资源,就是谁都能做的就是资源,然而谁都能做的工作就等于要卷,既然要卷我们就分个等级,就按王者重要的段位来分吧。螺丝钉的最佳归宿:一直被拧在合适的位置上,但这其实有很多条件,比如好的领导,稳定的业务,简单来说就是不取决于自己。
2025-06-20 19:17:06
351
原创 UML类图
摘要:本文主要讲解UML类图中6种类关系的表示方法:泛化关系(继承非抽象类,带空心箭头实线)、实现关系(继承抽象类,带空心箭头虚线)、聚合关系(整体-部分弱依赖,带空心菱形箭头)、组合关系(整体-部分强依赖,带实心菱形箭头)、关联关系(静态强关联,直线表示)和依赖关系(临时性使用,带箭头虚线)。同时简要介绍了时序图的作用,它通过对象、生命线、消息等元素展示对象间的交互顺序。理解这些关系有助于代码实现和设计模式的学习。
2025-06-20 17:41:45
1115
原创 产品经理如何快速理解设计模式
在一文中提到产品经理要理解设计模式,但设计模式本身是一个偏技术的概念,不太容易理解。为此,本文会通过简单易懂的例子,让不太懂技术的产品经理也能快速上手设计模式,并应用到实际的功能设计中。
2025-06-20 16:22:17
449
原创 面向未来的产品经理要懂哪些技术
产品经理懂技术,其实不单单是一个技术问题,更是一个思维和沟通问题,这就需要双方都带着开放的心态,尽量换位思考,这样团队运转起来才会越来越快,最终达到:只要你一个眼神肯定,我的文档/代码就有谱的程度。面试过很多产品经理,懂工具的很多,对领域的认识和理解有深度的很少。工具和技术能够很快学会,但对所在领域的热爱和深刻理解是需要长时间积累的,这才是一个产品经理最重要的价值所在。
2025-06-20 13:28:42
335
原创 0_1总结
一来,怎么样才是『好』,不同人不同的立场,自然有不同的看法,二来,我的判断是基于自己的实际情况做出的,即使客观,程度也有限,我能做的可能是给出几个思考的角度,具体的思考过程,是谁也不能代替的。遇到不懂的问题,一定要弄明白自己到底是哪里不懂,这个可能比问题本身更重要,因为这些『卡壳』的地方,往往是自己思维的误区盲区,只有看见,才能跨过去,进而解决许多甚至都还没有遇到的问题。所以这个系列,虽然列出了很多题目,但是题目本身并不重要,重要的是启发思路,而不是把答案背下来,毕竟真正有用的,是解决问题的能力。
2025-06-20 13:27:20
251
原创 0_1补充知识
本文摘要:文章系统介绍了计算机操作系统和网络通信的核心概念,包括进程管理、内存分配、文件系统、磁盘调度等操作系统原理,以及TCP/IP协议、路由算法、多线程同步等网络技术。重点阐述了进程调度算法、死锁条件、虚拟内存管理、常用磁盘调度策略,并详细解析了TCP可靠传输机制和UDP特性。同时涵盖了数据库事务的ACID特性、索引优化原则及测试方法,最后讲解了Linux文件权限管理和RAID存储技术。全文以技术原理为主线,结合实例说明,为读者提供了全面的计算机系统基础知识框架。
2025-06-20 13:19:19
918
原创 0_1面向对象
系统设计面试的核心要素与设计模式应用 系统设计面试通常以交流为主,重点考察候选人对需求变化的适应能力、系统设计的清晰度以及实现方案的合理性。面试流程包括:理解需求、提出初步设计、应对后续问题(如扩展性、容错性等)并逐步优化。 在设计过程中,面向对象编程(OOP)的核心是抽象、对象建模和解耦,常用继承("Is-A")和组合("Has-A")实现代码复用。设计模式分为三类: 创建型(如单例模式、工厂模式),管理对象创建; 结构型(如适配器、桥接模式),处理类或对象组合;
2025-06-19 13:24:18
1154
原创 0_1操作
本文介绍了位运算在编程面试中的常见应用。主要内容包括:1) 基本位运算类型(与、或、异或、位移等)及其在C/C++中的实现;2) 常见操作技巧,如获取位、设置位、清除位等;3) 位掩码的构造方法和应用场景;4) 异或运算的特殊性质;5) 移位操作的数学含义;6) 二进制补码表示法;7) 实用函数实现(获取位、设置位、更新位等)。文章强调使用无符号类型和括号来提高代码可读性和跨平台兼容性,并建议通过宏定义避免直接使用数字常量。
2025-06-19 13:21:18
717
原创 0_1排序与搜索
本文系统介绍了7种经典排序算法及其优化实现,包括:冒泡排序(含两种优化方案)、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序。此外还讲解了桶排序、计数排序等外排序方法,以及快速选择算法、二分查找等高效搜索技术。每种算法均配有Python/C++代码实现,并详细阐述了其工作原理、时间复杂度(如快排平均O(nlogn)、快速选择平均O(n))和适用场景(如堆排序适合topK问题)。文章还探讨了动态数据结构的维护策略和外排序的核心思路,为处理大规模数据提供了分治法和哈希映射等解决方案。
2025-06-19 13:13:35
890
原创 0_1树和图
树(tree)是一种能够分层存储数据的重要数据结构,树中的每个元素被称为树的节点,每个节点有若干个指针指向子节点。从节点的角度来看,树是由唯一的起始节点引出的节点集合。这个起始结点称为根(root)。树中节点的子树数目称为节点的度(degree)。在面试中,关于树的面试问题非常常见,尤其是关于二叉树(binary tree),二叉搜索树(Binary Search Tree, BST)的问题。所谓的二叉树,是指对于树中的每个节点而言,至多有左右两个子节点,即任意节点的度小于等于2。而广义的树则没有如上限制。
2025-06-18 17:23:19
2064
原创 0_1递归与动态规划
举例来说,求二叉树从根节点到叶节点的权值最大路径,对于当前节点到叶节点的路径与之前如何到达当前节点没有关系,只要计算当前节点到叶节点的路径,就一定是重复的计算,可以直接返回结果。实际实现算法时,往往以问题的一端为循环开端,另一端为循环终止条件,将当前节点的解(或往往是,以当前节点为末节点的问题的解,抑或是以当前两个坐标为输入的问题的解)用 DP 数组记录下来(如果当前节点只由之前紧接的若干个节点决定,那么用若干个变量也够了),数组的下标即为子问题的输入变量,也就是递推关系中的函数参数,只是把。
2025-06-17 14:39:39
711
原创 0_1链表
摘要:链表是基础线性数据结构,分为单向和双向链表。其核心操作包括插入、删除、检测环等,时间复杂度为O(n)访问、O(1)增删。关键技巧包含:1)使用哑节点处理头节点变更;2)快慢指针法用于检测环、找中间/倒数节点;3)反转链表时注意边界处理。操作需重点考虑指针修改和内存管理,注意空指针和边界条件。相比数组,链表更适用于频繁增删场景,但随机访问效率较低。
2025-06-17 14:08:58
637
原创 0_1栈和队列
摘要:栈与队列是典型的抽象数据类型(ADT),具有特定的操作规则。栈遵循后入先出(LIFO)原则,支持push、peek、pop操作,常用于函数调用、表达式计算等场景。队列遵循先入先出(FIFO)原则,支持enqueue和dequeue操作,适用于任务调度、网络包处理等。实现方式包括数组和链表。解题时可利用栈处理依赖后驱节点的问题,用队列实现广度优先搜索等。优先队列是队列的进阶形式,常用于需要排序的场景。理解这两种数据结构的特性是解决相关问题的关键。
2025-06-17 14:07:17
482
原创 如何开始找工作
精雕细琢故事部分,字里行间体现出自己的一些特质,如:Initiative/Leadership, Empathy, Compassion, Humility, Teamwork/Helpfulness。针对每个 project,列出以下几个方面的相关总结关键词,一定要是。回答技巧:实话实话,不要装逼。注意见缝插针描述自己的闪光点,让人感兴趣和印象深刻。开门见山,先用一句话概括,然后再逐步推进到细节部分。这类问题通常需要对公司有比较深入的研究,例如。跟公司,工作有关的问题,例如。可以按照如下的方式组织准备。
2025-06-16 19:28:01
582
原创 0_1数组与字符串
数组与字符串是编程基础中的核心内容,涉及哈希表、动态规划等高级应用。本文从基本解题策略出发,重点介绍了哈希表在元素统计、冲突处理中的应用,以及各类典型题目(如次数统计、回文串识别、矩阵操作)的解题思路。文章强调合理利用数据结构(如哈希表O(1)查询特性)和边界条件处理的重要性,并分类整理了包括唯一元素检测、区间问题、矩阵处理等在内的常见题型及对应解法,为攻克数组/字符串类算法问题提供了系统指导。
2025-06-16 19:05:15
775
原创 0_1时间复杂度Big-O
Big-Theta 仅仅只是一个"Scaled"版本的运行曲线,big-theta仅仅只是scale最高序列的f(n)行为。基本上理解了什么时候用求和法则,什么时候用乘法法则,再加上一点点运算,就可以推算出时间复杂度了。当n足够大时,曲线低于运行时间函数(big-omega)Big-Omega告诉你什么样的函数增长速度小于f(N)Bit-Theta告诉你什么样的函数增长速度同f(N)Big-O 告诉你什么样的函数增长速度大于f(N)当n足够大时,曲线高于运行时间函数(big-o)
2025-06-16 16:06:15
304
原创 0_1学会编程
如果了解了计算机发展的历史,就会发现,所有现在看起来非常复杂的东西,都是建立在非常简单的基础——零和一——之上的。的确,无论是计算机科学,还是编程,都是非常大的话题,但是并不意味着起跑会很难。题目背后是知识,不同的知识点交织成为学科,死记硬背只能解决见过的问题,但是如果在这个过程中培养了逻辑推理的能力,哪怕遇到一个『新』问题,也能通过类比,找到用『旧』方法稍微变化就可以解决的途径。一通百通,悟道之后就会发现,一招一式固然重要,但那些都是基础,更重要的是解决问题的方法和思路,这,可能就需要多动一点脑子了。
2025-06-16 15:59:58
477
原创 卷积神经网络(CNN)入门
直接说神经网络的概念可能比较枯燥,我们用一个根据房屋面积来预测房价的例子来进行说明。预测房价不是一个拍脑袋的事情,这里我们收集了六间房子的大小与价格,并用红叉在坐标系中标记出来(这里横轴是房子的大小,纵轴是房子的价格)。那么问题来了,如果我又看到一间房子,我只知道它的大小但不知道价格,有没有办法能够根据现在我已经有的数据,对新的一间房子的价格作出预测呢?当然是可以的!我们只需要利用已知的六间房子的价格和大小数据,就可以找到其中的规律,就可以拿着这个规律去判断新房子的价格了。
2025-06-11 20:55:45
912
原创 设施选址优化 —— 用 Benders 分解搞定复杂难题
本文探讨了Benders分解算法在灾害应急设施选址问题中的应用。该方法通过将混合整数规划问题分解为主问题和子问题,利用对偶理论生成最优性和可行性切割约束,通过迭代逐步逼近整体最优解。研究构建了包含设施建设、采购、运输和库存管理的多阶段优化模型,重点处理需求不确定性问题。Benders分解的优势体现在简化复杂问题、信息反馈机制和适应不确定场景的能力,为灾害应急管理提供了有效的决策支持工具。该方法通过系统优化设施选址和资源配置,显著提升了应急响应效率。
2025-06-11 16:16:56
1145
原创 数据表示——不同数据是如何存储与表示的(1)
道生一,一生二,二生三,三生万物。计算机中的一二三是什么?它们又是如何构造出如此精彩纷呈的数字世界的?这一讲我们从最基本的数据表示开始,慢慢走进计算机系统的大门。
2025-06-10 22:04:11
930
原创 SQL提速,三步就到位:第三步
SQL进阶学习:连接查询与嵌套查询精要 本文深入讲解SQL连接查询技术,包括等值连接、自然连接、外连接等核心概念。通过具体案例演示了学生选课系统的多表查询实现,如查询选修特定课程的学生名单等。特别解析了连接查询的执行过程,并介绍了嵌套查询的多种形式(IN、ANY/ALL、EXISTS)。文章强调了理论与实践结合的重要性,建议通过LeetCode等平台刷题巩固SQL技能。最后,作者鼓励读者持续学习,为数据库应用开发打下坚实基础。
2025-06-08 21:30:18
458
原创 SQL提速,三步就到位:第一步
这三个表其实是一个模式——学生-课程模式 S-TSQL的数据定义功能;谨记:数据库不提供修改模式定义和修改视图定义的操作。如果要修改,只能先删除再重建。厘清一下对数据库,模式和表以及视图,索引的关系,我画了一个图来便于大家理解什么是模式呢?模式也叫逻辑模式,是数据库中全体数据的逻辑结构和特征描述,所有用户的公共数据视图。模式的地位:是数据库系统模式结构的中间层,这里有两个‘无关’1.与数据的物理存储细节和硬件环境无关2.与具体的应用程序、开发工具及高级程序设计语言无关。
2025-06-06 21:04:53
772
原创 真正学会Benders分解方法:分解的全过程,实战:设施选址问题
相信大家看完Benders分解方法,已经对Benders有了一定的理解,这一篇主要作用在于加深理解,并结合实际问题来真正学会Benders分解方法。
2025-06-05 17:40:07
2275
原创 简单轻松理解Benders分解算法
Benders分解法是一种用于求解大规模混合整数规划(MIP)或线性规划(LP)问题的数学优化技术,由Jacques F. Benders于1962年提出。其核心思想是将原问题分解为主问题和子问题,通过迭代交换信息(如Benders割)逐步逼近最优解。Benders分解算法的精妙之处在于引入了复杂变量(complicating variables),当这些变量固定后,剩下的优化问题(通常称为子问题)变得相对容易。具体操作是先把复杂变量(整数变量)的值固定,则问题成为一般的线性规划问题。
2025-06-04 21:48:26
2669
原创 简单理解动态规划——解决最小公共子序列问题
本文介绍了动态规划在求解最长公共子序列(LCS)问题中的应用。LCS要求找出两个序列中共有的最长子序列,保持字符顺序一致。通过构建二维矩阵存储子问题解,使用状态转移方程:当字符相等时取左上角值+1,否则取左方或上方最大值。以字符串"ABCDGH"和"AEDFHR"为例,详细展示了矩阵填充过程,最终得到LCS长度为3("ADH")。动态规划通过分解问题、存储中间结果,有效避免了重复计算,提高了算法效率。文末提供了完整的Python实现代码和矩阵示例。
2025-06-03 16:09:37
533
2
Benders 分解算法学习资料合集
2025-07-03
保险理赔欺诈类数据分析(python实现,有分析报告,数据集,源代码)
2025-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅