操作系统
操作系统概述
进程管理
内存管理
文件管理
输入输出(I/O)管理
数据结构
前言
趁着考研的机会,好好学一下, 所用语言是c/c++
我们在做题的时候不要钻牛角尖, 要根据书上的来, 比如对于单链表, 书上一般是默认只带有头指针, 比如说获取链表尾巴元素的时间复杂度就是O(n),不要钻牛角尖的以为可以自己设置一个尾指针, 然后时间复杂度就是O(1) ,对你当然可以自己设计, 可是现在是在书上,理论
基本概念
程序 = 数据结构 + 算法
数据: 数据是信息的载体, 是描述客观事物属性的数,字符及能被输入到计算机中处理的符号. 数据是计算机加工的原料
数据元素: 数据元素是数据的基本单位, 通常作为一个整体进行考虑和处理, 一个数据元素是由多个数据项组成的, 比如 一个学生就是一个数据元素 它由学号,姓名, 性别等数据项组成
数据项: 数据项是构成数据元素的不可分割的最小单位
数据对象: 具有相同性质的数据元素的集合
数据结构: 数据元素相互之间存在一种或多种关系的集合
数据类型: 原子类型(值不可再分), 结构类型(值可以再分,类似结构体), 抽象数据类型(定义数据的逻辑结构与其相关操作), 抽象数据类型相当于定义了整个数据结构
数据对象和 ...
计算机网络
计算机网络体系结构
物理层
数据链路层
网络层
传输层
应用层
计算机组成原理
计算机系统概述
计算机系统层次结构
计算机系统的组成
硬件系统+软件系统, 硬件是指有形的物理设备, 软件是指硬件上运行的程序和数据
计算机组成和计算机体系结构
计算机组成(Computer Organization)和计算机体系结构(Computer Architecture)是两个相关但又有所区别的领域。它们都关注计算机系统的设计,但从不同的角度。以下是这两者的主要差异:
定义与焦点:
计算机体系结构:关注系统的高层设计,如指令集、数据类型、寻址模式和计算机的功能抽象。简而言之,它是描述硬件和软件如何交互以及如何实现功能的接口和规范。
计算机组成:更注重硬件组件的具体实现和组织,如数据路径、控制逻辑、内存组织、输入/输出处理和流水线设计等。
抽象层级:
计算机体系结构:在更高的抽象层级。它定义了指令集以及如何进行高级运算,但不涉及具体如何在硬件上实现这些运算。
计算机组成:在较低的抽象层级。它关注如何使用电子部件和逻辑来实现体系结构中定义的功能。
应用领域:
计算机体系结构:对于编译器设计师、操作系统开发者和应用程序开发者来说,理解体系结构是非常重要的,因 ...
c++
前言
这里我们只做c++部分的总结, 还有一些和c语言不同的地方
版本
发布时间
通称
备注
2020
C++20, C++2a
ISO/IEC 14882:2020
2017
C++17
第五个C++标准
2017
coroutines TS
协程库扩展
2017
ranges TS
提供范围机制
2017
library fundamentals TS
标准库扩展
2016
concurrency TS
用于并发计算的扩展
2015
concepts TS
概念库,用于优化编译期信息
2015
TM TS
事务性内存操作
2015
parallelism TS
用于并行计算的扩展
2015
filesystem TS
文件系统
2014
C++14
第四个C++标准
2011
-
十进制浮点数扩展
2011
C++11
第三个C++标准
2010
-
数学函数扩展
2007
C++TR1
C++技术报告:库扩展
2006
-
C++性能技术报告
2003
C++03
第二个C++标准
1998
C++ ...
MFC学习
前言
唯一一个必须重写的 CWinApp 成员函数是 InitInstance。
自定义控件
在MFC应用程序中自定义按钮样式涉及到从CButton类派生一个新的类,并重写相关的消息处理函数以实现自定义的绘制逻辑。下面是一个基本的步骤指南和示例,展示如何创建一个具有自定义样式的按钮:
步骤 1:创建自定义按钮类
创建一个新的类:在你的MFC项目中,派生一个新类,比如命名为CMyButton,从CButton基类继承。
添加消息映射:在你的类声明中,使用DECLARE_MESSAGE_MAP()宏,并在cpp文件中添加BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏来映射你想要处理的消息。
重写DrawItem方法:DrawItem是CButton中的一个虚函数,用于绘制按钮的外观。你需要在你的类中重写这个函数来实现自定义绘制逻辑。
示例代码
以下是一个简化的自定义按钮类的示例,展示了如何重写DrawItem方法来改变按钮的样式:
12345678910111213141516171819// MyButton.h#pragma once#includ ...
c语言学习
前言
两年前学的c语言,好久没用了, 忘得差不多了, 现在重新学习一下,用博客记录下来,常回来复习复习
发布时间
通称
备注
1972
-
C语言的原始版本由Dennis Ritchie在贝尔实验室开发。
1978
K&R C
Brian Kernighan和Dennis Ritchie发布《C程序设计语言》第一版,介绍了C语言的经典版本。
1989
ANSI C (C89)
美国国家标准学会(ANSI)发布C语言的第一个官方标准,ANSI X3.159-1989,通常被称为ANSI C。
1990
ISO C
国际标准化组织(ISO)采纳ANSI C标准,发布ISO/IEC 9899:1990。
1999
C99
发布新标准,引入了新的语言特性,如//注释和长整型。
2011
C11
最新的C语言标准,引入了对并发的支持和其他一些新特性。
预处理器
定义
在C语言中,预处理器(preprocessor)是一个在编译阶段前执行的程序,它可以对源代码做一些预处理工作。预处理器通过预处理指令(preprocessor directives)来 ...
vs2019使用
一个解决方案对应多个项目
在vs2019中 解决方案是一个容器,它可以包含多个项目
创建一个空白解决方案
创建项目
这样我们就可以把多个项目在vs2019中打开了
项目调用
有时候我们希望一个项目能够调用另外一个项目,我们可以这样
现在有两个项目, 一个Dao,一个Service, 其中Service需要通过Dao项目访问数据库
将Dao项目输出为lib
在Service项目中引入
指定头文件
指定库地址
定义项目依赖
这一步不是必须的, 你可以手动将Dao项目生成为lib, 这里是自动生成lib
如果我们没有修改Dao里面的代码, 是不会重新对Dao进行构建的, 这一点很重要
动态链接库DLL生成
方式一 使用 __declspec(dllexport) 创建dll
Math.h
12345678910111213141516171819202122232425#pragma once#ifdef MATHLIBRARY_EXPORTS#define MATHLIBRARY_API __declspec(dllexport) #else#define MATH ...
k8s总结
资源对象
pod
Pod 代表的是集群上处于运行状态的一组 容器 的集合, 也就是说一个pod里面可以有多个容器, 容器是容器运行时的最小调度单位, 在k8s中pod才是最小调度单位
当在你的集群中运行了某个 Pod,但是 Pod 所在的 节点 出现致命错误时, 所有该节点上的 Pod 的状态都会变成失败。Kubernetes 将这类失败视为最终状态: 即使该节点后来恢复正常运行,也需要创建新的 Pod 以恢复应用。
任何给定的 Pod (由 UID 定义)从不会被“重新调度(rescheduled)”到不同的节点; 相反,这一 Pod 可以被一个新的、几乎完全相同的 Pod 替换掉。 如果需要,新 Pod 的名字可以不变,但是其 UID 会不同。
一个pod里面的容器在同一个网络命名空间 可以通过localhost 互相访问
容器重启策略
Always:无论容器的退出状态码是什么,都将重启容器。这是默认策略。
OnFailure:只有当容器以非零状态码退出时,才会重启容器。
Never:不论容器的退出状态码是什么,都不会重启容器。
容器重启不会删除pod,当重启次数超过一定次数 ...