共 118 篇文章
你怎么做 react 性能优化? 按以下层次来说: 1. 预防:保证组件结构合理,状态尽量下放。(因为状态越靠近叶结点可能影响的组件就越少) 2. 减少计算:复杂计算用 usememo,稳定的函数用 usecallback 3. 避免冗余渲
蚂蚁 - 测评 - ddl:4/26 - 笔试:3/29 10: 00 腾讯 - 测评 ✅ - ai 面试 ✅ 美团 - 笔试 ✅ - ai 面试 ✅ 拼多多 - 测评 ✅ - 笔试 3/29 15: 00 携程 - 测评 ✅ - 笔试 3
笔试是分为选择题和编程题 选择题整体的难度较高,有很多比较细、偏的名词等,不太熟悉 编程题:无序数组第 k 大的数(用大根堆堆 a 了),lrucache(时间问题,思路有,没写完整) 第二个因为要手动实现列表,而且要写双向链表,这里一定要
自我介绍 个人的优势 劣势 职业规划,因为我有前后端经历 学的什么技术栈,为什么学 react 实习经历挑一个说一下,遇到的困难,怎么解决的,实习收获 场景题,管理系统里面新加一个模块,如何计划,如何用 ai 提效 平时用什么 ai cur
image.pngassets/网络面经-1.png 百度(牛客链接): https://www.nowcoder.com/feed/main/detail/0b1a3508592e45958ea1a48bc3d0714d?sourcess
3.26 16:00 部门:京东零售-京东外卖 实习介绍、遇到的难点(这个要好好想一下,前端技术方面的难点) 学习的技术栈(说的 react) react hooks(自己再多看看) usememo, usecallback 什么场景函数都
前端实习一面 \-- 2026.2.9 15:00 - 16:00 结果- 挂 自我介绍 react 更新流程 react 合成事件,react 怎么捕捉注册的 react 优先级 指定优先级的 hook 代码输出题: javascript
面试常见问题与回答整理(小红书/高并发项目) --- 问题1:笔记详情为什么要使用本地缓存?本地缓存快,那用本地缓存不就行了,为什么还要用 redis?怎么实现存放的都是热点数据,或者说怎么做到冷热数据的分离? 回答: 本地缓存作为 l1
主要整理平时看的面经中,个人感觉比较重要和不熟的问题及相关内容。 s1 java image.pngassets/面经个人总结-1.png s1qs11
集合 image.pngassets/javajvm-1.png 常用的 java 集合的底层原理实现? 这是一个比较体系化的问题,需要对整个集合体系和细节有一个把控。
这是一篇介绍 NingBlog 功能特性的文章,展示了博客系统的各种能力。
01.ndarray数组 1.ndarray数组的创建方法 使用数组或元组直接创建 python import numpy as np x = np.array0, 1, 2, 3, dtype=np.int32 y = np.array4
01.常用的python库 1.urllib,python自带的请求库 2.requests,第三方请求库,一般用这个 3.bs4,解析库 4.re,正则解析库 5.lxml,xpath解析库,一般用这个 6. ... 暂时没用别的,学了再
深度学习就是多层神经网络组成的模型。 深度学习的特点 - 多层神经网络,每一层都相当于对特征的一次自动提取。 - 适合处理非结构化数据,如图像、音频、文本等。 - 依赖大量数据和计算资源,训练时间较长。 - 模型复杂,通常被视为“黑箱”,解
type 和 interface 它们的设计初衷完全不同:interface 是为了描述“对象的形状”(偏面向对象),而 type 则是为了给各种类型“起别名”(偏函数式和灵活组合)。 主要讲区别: image.pngassets/ts-1
react 性能优化 react 性能优化其实就是编码层面的优化,在理解 react 渲染更新的基础上,减少不必要的计算。 如: - 使用 react.memo 进行组件记忆,对 props 进行浅比较,变化时才重新渲染组件。 - 使用 u
理解核心:牺牲一定灵活性,以清晰的职责、流程划分来保证大型项目的结构清晰。 latex 1. node / http server 收到请求 ↓ 2. nest platform adapter 接管请求 这一步就是把原始请求包装斤自己的执
js 的运行环境,区别于浏览器,提供一些服务端所需的 api,如 http,fs,path,process 等等。
闭包 闭包的定义:闭包是指有权访问另外一个函数作用域中的变量的函数。 闭包 = 函数 + 其语法作用域的引用 即:一个函数能访问并记住其外部作用域中的变量,即使在其外部函数执行完毕后。 内部函数依赖的对象会被保存到堆中,因为还有引用,所以不
offset、scroll、client 的区别 client: client 指的是元素的内部可视区域。它不关心边框有多厚,也不关心内容溢出了多少,只关心用户能看到的“内部空间”。 宽高就是 content + padding,不包含 b
bfc bfc的本质作用: - 浮动被完全包含; - 盒子整体避让外部浮动; - margin 折叠仅限于该上下文内部; - 父盒子有border时不会折叠 - 内部布局与外部隔离。 现代 css 中,如果只是为了“创建 bfc 来解决布局
\--- 于 2026.1.10 于家中 背景:近期面试了几个公司,反馈都不太好,过程也暴露出很多问题。包括知识点不熟悉,内耗,自我怀疑,心急。故,写此文以自我对话,明确方向。 抽丝剥茧,核心问题其实就是秋招,这是最后的目标,现在找实习也是
2026大厂前端暑期实习面试攻略(react方向) 最后更新:2026-03-29 目标:字节/腾讯/阿里/美团等大厂前端暑期实习 --- 目录 - 一、2026年面试趋势变化一2026年面试趋势变化 - 二、完整学习架构二完整学习架构 -
第一个是和为k的子数组,找连续非空的子数组和为k。连续数组求和一般少不了前缀和。考虑优化,暴力情况下两层循环,每个r都去找一下l,有很多重复计算。经典空间换时间,记录下来前面的pre,就可以方便地找答案了。 new: 对于这种不确定长度的连
第一个是有效的括号,比较简单,典型栈的题目。左括号入栈,右括号匹配出栈,匹配不了就不行。 第二个是最小栈,栈的基础上增加了一个功能:常数时间内返回栈内的最小值。思路就是:维护一个和数据栈同步的最小栈,这个就相当于是前i个元素的最小值,跟数组
图论部分比较基础。 第一个是岛屿数量,就是连通集数量。标记数组不取消,随便用什么搜索方式,有几个点能dfs就有几个连通集。有个技巧就是可以不用标记数组,直接把遍历过的岸变成海。 第二个是腐烂的橘子,就是腐烂的橘子每秒向四周扩散污染新鲜橘子,
贪心算法相对于动态规划,贪心算法每次都是选择当前的局部最优解,就是说,不需要状态转移,要选最大值就直接选最大值。局部最优解就可以获得全局最优解。难点是这个“最大值”是什么,以及如何证明。 第一个是买卖股票的最佳时机,那肯定是每个点减去其前面
第一个是移动0,双指针,都从头开始,头头指针。看代码吧,left <= right,对于初始的 0 值,两者一起移动。始终保持左指针左边都是非 0 值,左指针和右指针中间都是 0 值。 java class solution { pu
最大子数组和忘了写了,我补一个,这个就是相当于是贪心算法,前面的和大于 0,就继续加,小于 0 了,就直接甩掉前面的即可。 第一个是合并区间,就是把有重叠的区间合并成一个。思路就是按左端点排序,遍历的时候维护现在看的区间的最大右端点,左端点
快速排序 cpp // 快速排序函数(hoare 分区方案实现) void quicksort1vector<int& nums, int l, int r { // 1. 递归终止条件:当子数组长度为1或空时,无需排序 if l = r
链表类的题目有几个比较关键的操作: - 头结点(哑结点,dummyhead) - 哑结点可以统一操作(头结点和非头结点,因为把所有信息结点都变成了非头结点)。 - 典型的应用场景: - 插入 - 删除 - 交换 java listnode
第一个是矩阵置0,0位置的元素所在行列全部置0,难点是o1的空间,因为如果直接修改会修改原数组,结果错误。 思路是利用原数组的空间保存该行/列是否为0,用第一行和第一列保存状态。但是这样第一行和第一列就被修改了,所以可以用两个变量分别保存第
几个技巧题要记住。 第一个是只出现一次的数字,这个是异或运算。 第二个是多数元素,使用投票法,第一个元素作为众数候选者,遇到一样的就times--,相当于投反对票。times为0就更换候选者,times再更新为1。 第三个是颜色分类,相当于
回溯的题目一般就是dfs类似。我查了一下,回溯实际上是dfs的子集,dfs 是一种通用的搜索策略,而回溯算法是 dfs 在 “组合搜索问题” 中的具体应用,更强调通过回退和剪枝解决带约束条件的问题。 第一个是全排列,经典回溯算法,递归的时候
第一个是无重复字符的最长子串。滑动窗口+哈希,挺容易的。只需要用哈希表记录滑动窗口中元素的下标,以及当前滑动窗口的左端点即可。因为重复之后,需要将左端点移动到 map 的 value+1 的位置。 第二个是找到字符串中所有字母异位词,异位词
第一个是两数之和,很直接哈。 第二个是字母异位词分组。主要是哈希的key如何构造。一种想法是字符串排序作为key,另一种想法是计数,即 abcc的key为:a1b1c2。 第三个是最长连续序列。较暴力地来看应该是枚举每一个起点,判断是否存在
二分比较重要哈,有几种不同的二分情况,要做一下总结。 第一个题是找到合适的插入位置,实际上就是找第一个大于(等于)给定目标值的位置。 java public int searchinsertint nums, int target { in
树的遍历方法很重要,先序遍历,中序遍历,后序遍历。递归写法都比较好写。 如果要迭代,可以使用颜色标记法,再使用栈数据结构,记录状态即可。 java中的栈和队列可以使用arraydeque数据结构来实现。 java deque<integer
堆最好会手写哈,整理个模版出来。 第一个是数组中的第k个最大元素,这个可以用堆的方法写,还是比较直观的哈,时间复杂度是nlogn吧。第二个是快速排序的方式,快速排序的逻辑是每次都一定至少能确定一个元素的最终位置,如果这个位置正好是要的位置,
动态规划的核心魅力就在于通过状态定义的递推性,将多阶段决策问题转化为对 "最后一步操作" 的分析,而无需显式枚举所有组合。 以拼硬币的那个题为例(lc 322 零钱兑换),这是一个完全背包问题。 这个题目每次只需要遍历一遍coins就能得到
针对新简历的问题: 先说总的回答策略 如果面试官问: “你在七牛这段实习主要做了什么?” 不要一上来逐条念简历。 更好的回答方式是先给一个总括,再挑 2 个重点展开。 你可以这样答: “我在七牛这段实习,主要做的是灵矽 app 里和智能硬件
大文件上传和断点续传 传统的单次 post 请求上传大文件,一旦网络波动或连接超时,就要从 0% 重新开始,用户体验极差。 大文件上传的核心是:前端对文件分片(分片内根据内容计算哈希)+ 并发上传 + 后端对切片合并。 切片 前端利用 bl
防抖节流 防抖 要注意 this 绑定到 return 的那个函数上,这个很重要,内部用箭头函数。 javascript const debounce = fn, delay=300 = { let timer = null; return
linskills 是 react + supabase baas 架构。 目前的流程为: 1. import-skills.mjs 读取本地 .ndjosn 文件。 2. 标准化数据、批量写入 suapabase。 3. 前端读取数据库。
堆 建堆:对所有非叶节点的自顶向上堆化。(以每个非页结点为根的子树先向下推)。 最后一个非页结点就是最后一个结点的父节点。 插入元素就是先把元素放到最后,循环向上比较。 删堆顶就是交换堆顶和最后一个元素,size--, 然后向下交换。 快速
基本概念 image.pngassets/tcp-传输层-1.png 这块简单说一下,这个报文格式肯定是比较关键的。 注意几个不太明显可以理解的点: - 序列号:随机数作为初始值,每次发送数据都累加数据的字节数,解决包乱序。 - 应答号:下
基本概念 http ,超文本传输协议(hypertext transfer protocol) 拆分超文本、传输、协议。超文本指的是两层意思:1. 超越文本,它是文字、图片、视频等的混合体 2. 最关键有超链接,可以从一个超文本跳转到另一个
ningblog 项目面试准备文档 整体介绍 回答框架:抛出结论-描述痛点-对比方案-最终决定与收益: “这个项目(ningblog)是一个基于 next.js app router 和 react 19 构建的高性能、全栈客制化博客系统。
已完成标记为 example 1. jackson https://www.runoob.com/java/java-jackson-lib.htmlhttps://www.runoob.com/java/java-jackson-lib.
我们一般说 spring 框架指的都是 spring framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说 spring 支持 ioc(inversion of control:控制反转) 和 aopas
控制层框架 m:model,模型,用于存储数据 v:view,视图,用于展示,如jsp c:controller,控制器,用于书写业务逻辑 springmvc 可以看做一种设计模式,将 web 请求处理逻辑分为上述三层。(在前后端分离开发架
mybatis 轻量级持久层框架,主要用于简化java应用于数据库的交互。 核心组件 mybatis的核心组件围绕“如何执行sql并映射结果”展开。 - sqlsessionfactory - 通过配置xml/配置类创建sqlsession
ssm整合 实际上就是把三个东西用到一个项目里面,或者是把mybatis和springmvc放到spring的ioc容器中。 整合五问 第一问:ssm整合需要几个ioc容器? 最少一个容器就够了,但是常见的做法事创建两个ioc容器(web容
redis为什么快? 1. 纯内存操作:主要原因,数据读写都发生在内存中,访问速度是纳秒级别,而传统数据库频繁读写磁盘的速度是毫秒级别。 2. 高效io模型:单线程reactor,io多路复用。单个线程可以同时处理多个网络连接上的io事件,
redis的所有数据都是键值对的形式,所有的键都是字符串,这里说的数据类型指的是值的类型。 5种基本数据类型: - string - list - set - hash - zset string 内部实现 底层主要的实现数据结构是 int
缓存雪崩 缓存雪崩是指缓存中的大量数据同时失效(如过期)或服务器宕机,大量请求涌入数据库,导致数据库过载。 原因主要有两种: 大量数据同时过期 如给大量数据设置了同一个过期时间,就可能会发生缓存雪崩。 解决方案 1. 直接地,在设置时不要让
过期删除策略 过期时间设定 shell set <key <value ex <n :设置键值对的时候,同时指定过期时间(精确到秒); set <key <value px <n :设置键值对的时候,同时指定过期时间(精确到毫秒); set
主从复制 为了实现高可用,某一服务器宕机也能继续提供服务,设置多个服务器,一个主服务器,多个从服务器。 主服务器负责读写数据,从服务器一般只进行读,也就是所谓的读写分离。当主服务器执行了新的写操作后,会将写操作同步至从服务器,从而实现主从一
redis 不同于 memcached 的很重要一点就是,redis 支持持久化,而且支持 3 种持久化方式: - 快照(snapshotting,rdb),默认方式 - 只追加文件(append-only file, aof) - rdb
remote dictionary server(远程字典服务) image.pngassets/redis-1.png redis 是 mysql 的带刀侍卫。 redis 之于 mysql 就像是 cache 之于 内存, 或 内存
查询 sql select 字段列表,分隔 distinct from 表明 where 过滤条件 group by 字段1,字段2,... having 过滤条件 order by 字段1,字段2,... limit 偏移, 行数 分组后
image.pngassets/锁篇-1.png 全局锁 sql flush tables with read lock // 整个数据库就只读了 unlock tables // 放开锁 一般用于数据库备份,但是加了全局锁就导致业务停滞,
前传 这里我先写一下小哈书项目遇到的东西,后面再系统整理,可以融合一下。 最左匹配原则:当你使用复合索引(composite index)时,mysql 只能从索引的最左边列开始匹配,并且必须连续使用索引中的列,不能跳过中间的列。 底层
事务的特性 - 原子性:这个就是事务是一个整体,要么都成功,要么都失败 - undo log 回滚日志 - 一致性:执行事务前后总状态不变,如总余额,一个合法状态到另一个合法状态 - 持久性 + 原子性 + 隔离性,也就是说其它三个满足了,
这是一篇用来测试 Next.js + MDX + shadcn/ui 是否工作正常的文章。
首先,与select类似,update语句也会走之前基础篇提到过的那个架构,连接器,解析器,预处理器,优化器,执行器,与之前不同的是,更新语句会涉及到三种日志操作:undo log,redo log,binlog. undo log(回滚日
sql执行流程(mysql架构) image.pngassets/基础篇-1.png 分为两个部分:server层 和 存储引擎层。 server 层负责建立连接、分析和执行 sql。还包括内置函数,如日期、时间等。 存储引擎层负责数据的存
主要就是说buffer poll。 image.pngassets/缓存篇-1.png 有了buffer poll: - 读数据,先看缓存有没有 - 写数据,写缓存,设置脏页,后面再刷盘 大小默认128mb,innodb\buffer\po
mysql 性能怎么优化? mysql 性能优化是一个系统性工程,涉及多个方面,在面试中不可能面面俱到。因此,建议按照“点-线-面”的思路展开,从核心问题入手,再逐步扩展,展示出你对问题的思考深度和解决能力。 抓住核心:慢 sql 定位与分
常见版本 - 红帽系列 - 官方的,提供服务的 - redhat - centos(和红帽是一样的,社区版) - debian系列 - ubantu - ... 目录结构 linux一切皆文件,没有盘符。 / 是根目录,root是管理员的家
jdk 1.7: assets/内存管理-1.png jdk 1.8: assets/内存管理-2.png 主要区别就是方法区-元空间的转变,存储位置发生了变化。7处于运行时数据区,8处于本地内存。 latex 操作系统内存 │ ├── j
类加载器在java8-9经过了一次大的改动,下面的内容首先基于java8,之后再描述java9. image.pngassets/类加载器-1.png - string什么的是启动加载器加载的,这个是jvm提供的。 - 我们写的程序和一些三
garbage collection, gc java堆是垃圾收集器管理的主要区域,因此也被称作gc堆。 内存管理里面已经说过了,现在的gc一般都是基于分代垃圾收集算法的,所以java堆被划分为了几个不同的区域。 新生代,老年代,永久代(元
jvm的职责是运行java字节码文件。 三大核心为:内存管理、解释执行虚拟机指令、即时编译。 image.pngassets/jvm-1.png 字节码文件 基本信息 magic魔数 这里插补一下,计算机文件的后缀名实际上是方便识别和默认处
jackson 是一个用于 java 的高性能 json 处理库,它能够: - 将 java 对象序列化为 json 格式(对象 → json) - 将 json 反序列化为 java 对象(json → 对象) jackson 因其速度快
java io 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。 - inputstream/reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。 - outputstream/writer: 所有输出流的基
java 8 函数式接口 functional interface 也称为sam接口:single abstract method interfaces,有且只有一个抽象方法,但可以有多个非抽象方法的接口。这样就可以相当于只定义一个函数,就
java 集合,也叫作容器,主要是由两大接口派生而来:一个是 collection接口,主要用于存放单一元素;另一个是 map 接口,主要用于存放键值对。对于collection 接口,下面又有三个主要的子接口:list、set 、 que
上的内容 jdk jre jvm image.pngassets/基础-1.png 解释和编译共存,针对热点代码优化: image.pngassets/基础-2.png 基本类型和包装类型 包装类型的缓存机制,六种基本数据类型,除了浮点型都
线程和进程 jvm是一个进程,main函数所在的线程是主线程。 java线程和操作系统线程的关系 现在基本上可以认为:java的线程就是操作系统的线程,而且是一对一的。 补充:jdk1.2之前是用户线程,之后就切换为内核线程了。 线程的生命
rocketmq 的消息模型 总结来说,rocketmq 通过使用在一个 topic 中配置多个队列并且每个队列维护每个消费者组的消费位置 实现了 主题模式/发布订阅模式 。 image.pngassets/rocketmq-1.png 技
image.pngassets/消息队列-1.png消息队列能用来干什么 异步,解耦,削峰。 解决异步通信问题 - 同步调用: - 优势:时效性强、等待到结果后才返回 - 问题:拓展性差性能下降级联失效问题(一个挂了,后面的都不行)。 -
- 认证 authentication: 你是谁。是验证您的身份的凭据(例如用户名/用户 id 和密码),通过这个凭据,系统得以知道你就是你,也就是说系统存在你这个用户。所以,authentication 被称为身份/用户验证。 - 授权
image.pngassets/k-v短文本存储服务-1.png 选了cassandra. 也是docker 安装 cassandra query language cql 是 apache cassandra 数据库的一种专用查询语言,它
声明式注解事务失效问题 声明式注解事务失效原因,主要由以下几点: - 方法可见性:@transactional 仅在 public 方法上生效。 - 自调用:当类中的方法调用同一个类中的另一个 @transactional 方法时,事务可能
术语: - 并发用户:在性能测试工具中,一般称为虚拟用户(virtual user,简称 vu),指的是现实系统中操作业务的用户。 - qps queries per second:每秒执行的查询次数。例如,如果一个网站的首页每秒可以响应
java 9 在 java 8 中,接口引入了 default 和 static 方法。java9中又引入了private方法。 java11 var局部变量类型推断:ava 11 中引入了 var 关键字,它可以简化局部变量的定义。
包含:druid、mybatis配置,连接池,openfeign服务间调用 关于druid链接池和mybatis的配置。 像这些配置,一般就是:导入依赖、写配置文件或者是创建配置类。 依赖: xml <-- mybatis -- <depe
我将整体回顾小哈书的设计和细节,以服务顺序,在回顾 xx 服务时,我将补充学习相关知识框架,如网关、分布式 id 、satoken 等;同时,从整体设计的角度考虑技术栈选型,具体场景,使用了什么重点方式或技术栈对场景做了适配,以期对该项目有
首先,这是对分库分表的实践。 单表劣势主要体现在性能上,一张表里面数据太多,就会使查询性能变慢,同时备份和恢复非常耗时,且存在大量锁竞争的问题。 分库分表(distributed sharding)是数据库设计中的一种策略,主要用于处理大规
注册nacos服务需要引如spring cloud和nacos discovery依赖。 写bootstrap.yml配置文件 yaml spring: application: name: xiaohashu-oss 应用名称 profi
评论服务 场景 典型的高并发写接口,对于爆火笔记,短时间会有大量用户发表评论。 策略 对于这种场景的写策略,我们可以采用 异步写 + 批量写库 的方式。 异步写:就是接口异步发送 mq,直接给前端实时响应,缩短接口响应时间,在消费者中来处理
微服务架构是一种将应用程序拆分为多个小型、自治的服务的架构模式。 image.pngassets/搭建springcloudalibaba微服务项目骨架-1.png每个服务都专注于实现一个特定的业务功能,并通过轻量级的通信机制(如 http
关于redis双写一致性,不可能保证完全一致性,每个方案都是有可能出问题的。但是一般来说, 先更新数据库后删除缓存的方案是比较好的,在此基础上可以加上优化方案(大厂实践)。 1.对于高并发,一致性要求没有特别高的场景,可以使用消息队列解耦+
java17 + mysql8 idea运行的jdk版本可以单独配置,不需要配置环境变量。 idea可以配置当前项目的jdk(project structure),也可以配置全局jdk(file new projects setup str
设计模式是基于面向对象程序设计框架的。 设计模式的设计,是为了使程序在如下方面做得更好: - 代码重用性。相同功能的代码,不用多次编写。 - 可读性。便于其他人理解。 - 可扩展性(可维护性)。便于增加新的功能。 - 可靠性。增加新功能后,
cassandra 对比 mysql 核心优势: cassandra 写入时分两步: 1. 顺序写磁盘 commit log,用于崩溃恢复 2. 写内存。 两步执行之后即可返回,无论是顺序写磁盘,还是内存操作,效率都是很高的。因此 cass
堆 建堆:对所有非叶节点的自顶向上堆化。(以每个非页结点为根的子树先向下推)。 最后一个非页结点就是最后一个结点的父节点。
基本概念 image.pngassets/tcp-传输层-1.png 这块简单说一下,这个报文格式肯定是比较关键的。 注意几个不太明显可以理解的点: - 序列号:随机数作为初始值,每次发送数据都累加数据的字节数,解决包乱序。 - 应答号:下
mac 直连结点通信,ip 就是非直连。 网络传输中,源/目标ip一直都不变(除非是nat了),mac一直在变。 基础的东西挺熟悉,简单说说。 分类地址 image.pngassets/ip-网络层包括dns,arp,dhcp,nat,ic
基本概念 http ,超文本传输协议(hypertext transfer protocol) 拆分超文本、传输、协议。超文本指的是两层意思:1. 超越文本,它是文字、图片、视频等的混合体 2. 最关键有超链接,可以从一个超文本跳转到另一个
url - 网页显示流程(知识串联) 浏览器解析url image.pngassets/网络传输流程概述-1.png 有了域名和资源链接,就可以封装http报文了。 封装报文之后,因为要交给操作系统发送到对应的网口,所以这个时候就得通过dn
计算机网络是定义了一套协议,用于不同主机不同进程之间的通信(同一主机不同进程之间的通信内容属于操作系统知识),以此协议屏蔽掉多样性的设备和链路。 image.pngassets/计算机网络-1.png 应用层 最直接的例子就是邮件系统,邮件
文件 io image.pngassets/文件系统-1.png 这里要注意的一点是:文件的 io 其实可以分为两个步骤 数据在内核中准备好(也就是说从网络或者是磁盘先拷贝到内核缓冲区),从内核空间拷贝到用户进程缓冲区。 所有的同步 io,
dma(direct momory access,直接内存访问) 没有dma时,io过程: - cpu对磁盘控制器发出指令。 - 磁盘控制器收到指令,准备数据,拷贝至其内部缓冲区,发出中断。 - cpu收到中断,亲自从磁盘控制器缓冲区中读取
内存管理,主要职责如下: - 内存的分配与回收 - 地址转换 - 内存扩充 - 内存映射 - 内存优化 - 内存安全 内存碎片 - 内部内存碎片internal memory fragmentation,简称为内存碎片:已经分配给进程使用但
进程和线程 进程:计算机中正在运行的一个程序实例。 线程:轻量级进程,多个线程可以在一个进程中同时执行,共享进程的资源比如内存空间,文件句柄,网络连接等。 为什么有了进程还需要线程? 核心原因是要实现低开销、高效率的并发。线程相比进程来说:
内核 image.pngassets/操作系统结构概览-1.png 这个图就可以看出来,其实把这个 kernel 换成 os 也合理,所以内核就是操作系统核心差不多。 现代操作系统内核核心能力: - 进程调度,进程线程管理,决定cpu使用归
硬件相关的那些基础的东西就不写了,相对熟悉且没有那么重要(对于面试来说),需要直接看原文即可。
主要包括 计算机网络 和 操作系统 的内容。 如果后续有时间,或许可以把组成原理 / 体系结构 也加进来。 // todo
spring cloud 其实就是分布式微服务架构,和单体架构,集群架构相比的。 单体架构就是所有业务服务都在一个服务器上,数据服务也在一个服务器上。这样显然不能支持很大的应用。 后面就出现了集群,就是有好多个服务器,通过网关来转发同时负载
一个最基本的分布式 id 需要满足下面这些要求: - 全局唯一:id 的全局唯一性肯定是首先要满足的! - 高性能:分布式 id 的生成速度要快,对本地资源消耗要小。 - 高可用:生成分布式 id 的服务要保证可用性无限接近于 100%。
首先是非常重要的 cap & base,这两个分布式基础理论是学习分布式知识的必备前置基础。 cap 理论 cap 也就是 consistency(一致性)、availability(可用性)、partition tolerance(分区容
史前时期 旧石器时代 旧石器时代分为三期, 前期:以北京人为代表,头骨厚,像猩猩,四肢与现代差不多,生活在红土层,脑容量较现代人低,大约五万年前 中期:以河套人为代表,大约两三万年前,跨越了漫长的岁月,红土层、砾石层和黄土层 后期:以山顶洞
真正的快乐是找到自己喜欢做的事情,不看成果,光是过程就能够让我们雀跃,这才是人生应该追求的目标。 亲爱的,外面没有别人,你所看到的一切都是你内心的投影。 接受小我受损。 凡是你抗拒的,都会持续。 这本书是跟冥想有很大关系的,找到那个
image.pngassets/力量训练计划-马克·瑞比托王龙飞译-1.png 一、引言 训练:基于刺激-恢复-适应模型。 刺激指的是任何可以改变机体生理状态的事件。包括晒太阳、被熊暴揍一顿、卧床三月不起。刺激会打破体内平衡,之后为了更好生
关注三件事:能量、营养、和时机。 千焦换算成千卡,大概要除以4,即100kj ≈ 25kcal 前置知识 能量摄入和能量消耗 能量(热量)摄入 首先,营养 ≠ 热量,含有热量的营养素只有蛋白质、碳水化合物、脂肪三种。维生素和矿物质是营养而没