猜你喜欢
凉皮大大的强烈安利!!!
C/C++ 神秘语法合集 - 持续更新
前言
本章介绍 C/C++ 中一些鲜为人知的语法,这些语法可能不常在系统教学中提及,因此显得格外神秘。
本人能力有限,经常在阅读别人代码时发现一些未曾见过的语法使用,它们通常比较冷门而显得神秘;我希望将这些看到的神秘语法进行记录,也希望对你有所帮助。
理想预期下,这篇会持续更新。文中术语如不确切,希望指正。
指定初始化 Designated Initializers
点击展开这个语法是我在写某个公开课实验的时候发现的,当时好像是突发奇想为什么 C++ 没有其他语言支持的指定参数之类,然后瞎试靠 IDE 补全发现的。
废话不多,直接上示例吧。
123456789101112131415161718192021222324252627282930#include <iostream>#include <string>struct Inner { int x; char c;};struct Example { std::string s; Inner in;};void Print(const Ex ...
浅析几种一致性哈希算法
引入:什么是一致性哈希?
分布式集群与负载均衡
一个服务,例如一个网站为了方便管理通常由两部分组成:web 服务和对象存储服务。web 服务直接与用户建立连接,并且对用户请求进行解析、逻辑处理与响应。但是 web 服务通常是无状态的(可能会有一些缓存),这时就需要对象存储服务用来保存用户数据等信息。因此我们首先假设我们的架构由 web 服务(websvr)和对象存储服务(osssvr)两层组成。
当业务增长,服务的使用数量上升,这时就需要将 web 服务和对象存储服务拆分到两台机器上;当业务继续增长 ,一台 web 服务器和一台存储服务器无法继续承受业务压力,这时就需要构建 分布式集群 。
对于 web 服务来说这个过程很简单,由于 web 服务是无状态的,因此任何 web 服务可以处理任何用户的请求。但对象存储不同,不同的数据需要被路由到正确的位置。例如 userid = 100 的用户第一次接入到 websvr1,websvr1 随意(例如就近)将该用户的一个操作信息(例如注册)存储到了 osssvr1;第二天该用户接入到了 websvr4,于是 websvr4 路由到 oss ...
海明校验码 - 计算机网络
引入:一个有趣的游戏先丢给大家一个著名的问题:
监狱中甲乙两人密谋越狱,这需要找到逃离监狱的秘密出口。在狱长的房间中有一个国际象棋棋盘,在它 8×88 \times 88×8 的棋格上各有一枚硬币,有正有反;同时秘密出口恰好可能出现在监狱的 646464 个角落。甲、乙两人事先并不知道棋盘上硬币正反,当然也不知道秘密出口的位置,不过他们在一天晚上商量出了逃离监狱的方案。
第二天甲乙两人分开了。这天早上甲看到了棋盘上所有硬币的正反,同时也知道了钥匙的位置,但他没有机会与乙进行任何交流。甲找到机会偷偷翻动了一枚硬币,然后离开了狱长的房间。下午乙看到了甲留下的棋盘,于是就计算出了秘密出口的位置,并成功逃离。
请问甲乙协商了怎样的方案成功越狱?已知甲乙约定 8×88 \times 88×8 的棋格对应恰好 646464 个角落;同时约定中甲翻动一枚棋子,约定中甲不可能不翻动棋子。
这个有趣的问题就与我们今天要讲的海明校验码非常相关。我相信你在看完这篇文章后也能解决这个问题,当然你也可以尝试直接解决这个问题,直接解决这个问题可能非常有挑战性。
好吧,跳过这个问题完全不影响对后文海明校验码的理解。 ...
LEX + YACC 计算器语法分析器
前言
实现一个计算器语法分析器的方法有两种:
第一种是使用单调栈建立后缀表达式,这样的方法不用借助任何工具,基于笛卡尔树的理论基础。
第二种方式是使用 LEX 和 YACC 等词法文法分析工具,它们的支持更加灵活,基于文法分析的理论基础。
本文将要介绍的是第二种方法,它不仅可以用于构建计算器,其实更能构建编程语言,所以这是大学中的一门课程叫作 编译原理 。而关于第一种方法,我之前写过一篇文章 对于后缀表达式的思考 - 栈。
好吧,这其实就是我们编译原理课的一个实验,写着感觉挺有意思的,于是写了这篇文章。
下载项目附件📎
相关工具
建议使用 Linux 系统进行实验会方便很多,我使用的 Ubuntu22.04。
g++:一种 C++ 编译器。
编译原理课程老师可能会教你使用 C 编写,但我想说你其实可以使用 C++ 编写。
本文还会建议你将词法分析、文法分析、语法分析三者分离,然后使用 g++ 编译链接。
flex:一种词法分析器。
Lexical analyzer generator. A rewrite of lex with extensions to the ...
2024 年第十五届蓝桥杯 C/C++ B组国赛题解
前言
一直在想是否要写这篇题解,但最后还是打算整理帮助有需要的人,因为到现在没看到有人正经写过一篇题解。 这篇题解包含标准答案,最后几题同样给出暴力做法。 另外这些是赛后回顾代码,可能存在赛时代码正确,此处代码存在瑕疵的问题。关于解释有问题的欢迎喷。
实测最后三题都只拿暴力分的话 国一 是稳稳前排;身边数据,约莫再丢一整题分(20),大概 国一 后排。身边有不少有水平的选手,但是先天对 OI 赛制不适没能拿到好成绩,当然真有水平的选手也不会在意这点得失;另外就是太追逐正解,导致该拿到的分没有拿到,拿我个人举例,这是我第二次参加蓝桥杯,去年因为太较真拿了国二。这次本来没有打算较真附上正解,但最后想着想着就都写了正解,希望对你有帮助。
A 题:合法密码
枚举 check 一下就好,个人认为答案应该是 400,不少人答案是 618 还是对题意理解不一样。我觉得 618 的题意理解也算合理的。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748// A: 合法密码#inc ...
Raft 论文研读 - MIT6.824
前言
这个部分来自课程 MIT6.824,这门课每节课都会精读一篇分布式系统领域的经典论文,并由此传授分布式系统设计与实现的重要原则和关键技术。
个人认为阅读论文比课程本身更加重要,课程围绕论文展开,可以快速获取论文的核心观点,课程的一切细节以及未提及的内容在论文中具有最详细的解释。另外教授会从当今立场(2022)评价论文的意义和缺陷,同时可能补全论文中缺失的信息解释,教授对学生提问的一些回答具有很好的启发意义,这些内容不被包含在论文中。
本文综合课程内容和论文核心观点,并参考一些其他资料整理,希望对你学习课程有所帮助。
课程官方:https://pdos.csail.mit.edu/6.824/
博主整理:https://mit-public-courses-cn-translatio.gitbook.io/mit6-824
B 站录屏:https://www.bilibili.com/video/BV1qk4y197bB
请阅读论文 VMware FT: https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf
相关推荐:Debuggin ...
VMware FT 论文研读 - MIT6.824
前言
这个部分来自课程 MIT6.824,这门课每节课都会精读一篇分布式系统领域的经典论文,并由此传授分布式系统设计与实现的重要原则和关键技术。
个人认为阅读论文比课程本身更加重要,课程围绕论文展开,可以快速获取论文的核心观点,课程的一切细节以及未提及的内容在论文中具有最详细的解释。另外教授会从当今立场(2022)评价论文的意义和缺陷,同时可能补全论文中缺失的信息解释,教授对学生提问的一些回答具有很好的启发意义,这些内容不被包含在论文中。
本文综合课程内容和论文核心观点,并参考一些其他资料整理,希望对你学习课程有所帮助。
课程官方:https://pdos.csail.mit.edu/6.824/
博主整理:https://mit-public-courses-cn-translatio.gitbook.io/mit6-824
B 站录屏:https://www.bilibili.com/video/BV1qk4y197bB
请阅读论文 VMware FT: https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf
VMware FT 是应用 ...
Google File System 论文研读 - MIT6.824
前言
这个部分来自课程 MIT6.824,这门课每节课都会精读一篇分布式系统领域的经典论文,并由此传授分布式系统设计与实现的重要原则和关键技术。
个人认为阅读论文比课程本身更加重要,课程围绕论文展开,可以快速获取论文的核心观点,课程的一切细节以及未提及的内容在论文中具有最详细的解释。另外教授会从当今立场(2022)评价论文的意义和缺陷,同时可能补全论文中缺失的信息解释,教授对学生提问的一些回答具有很好的启发意义,这些内容不被包含在论文中。
本文综合课程内容和论文核心观点,并参考一些其他资料整理,希望对你学习课程有所帮助。
课程官方:https://pdos.csail.mit.edu/6.824/
博主整理:https://mit-public-courses-cn-translatio.gitbook.io/mit6-824
B 站录屏:https://www.bilibili.com/video/BV1qk4y197bB
请阅读论文 GFS: https://pdos.csail.mit.edu/6.824/papers/gfs.pdf
什么是 GFS?
在 GFS 出现之前,分 ...
MapReduce 论文研读 - MIT6.824
前言
这个部分来自课程 MIT6.824,这门课每节课都会精读一篇分布式系统领域的经典论文,并由此传授分布式系统设计与实现的重要原则和关键技术。
个人认为阅读论文比课程本身更加重要,课程围绕论文展开,可以快速获取论文的核心观点,课程的一切细节以及未提及的内容在论文中具有最详细的解释。另外教授会从当今立场(2022)评价论文的意义和缺陷,同时可能补全论文中缺失的信息解释,教授对学生提问的一些回答具有很好的启发意义,这些内容不被包含在论文中。
本文综合课程内容和论文核心观点,并参考一些其他资料整理,希望对你学习课程有所帮助。
课程官方:https://pdos.csail.mit.edu/6.824/
博主整理:https://mit-public-courses-cn-translatio.gitbook.io/mit6-824
B 站录屏:https://www.bilibili.com/video/BV1qk4y197bB
请阅读论文 MapReduce: https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf
什么是 MapRe ...