月度归档: 2023 年 2 月

10 篇文章

终端和Shell是什么?
终端 在早期的计算机历史上,终端是一种硬件,是一种输入输出设备,用于和计算机交换信息。用户通过终端输入命令,终端将命令传入计算机,执行后,并把结果输入到终端上显示。 但是现在计算机硬件一体化程度越来越高,输入输出设备完全没必要单独用一个硬件和计算机进行交换信息…
thumbnail
C++ STL介绍和底层原理讲解
STL简介 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL c++的三种特性:封装,继承…
C和C++编译的四个阶段
常规操作 我们通常使用gcc/g++编译c/cpp文件,通常是使用如下一行代码 g++ -o 可执行文件.exe 源文件.cpp 但实际上这一行代码中省略了很多步骤,事实上,在编译的过程中还有很多步骤 编译中间过程 源代码通过编译器生成目标代码,目标代码通过链…
产生伪随机数及定积分计算
伪随机数 计算机是无法产生真正的随机数的,大部分程序和语言中的随机数(比如 C 中的,MATLAB 中的),都只是伪随机数。是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接…
算法竞赛中cin/cout和scanf/printf的耗时对比
在一次无意的做题提交中,使用cin导致TLE(Time Limit Exceeded),而使用scanf没有导致TLE,而引发了我对cin和scanf的思考,由此产生了这篇文章 cin/cout和scanf/printf速度对比 在windows平台上测试会有…
前缀、中缀、后缀表达式
前缀、中缀、后缀表达式 前缀(prefix)、中缀(infix)、后缀(suffix)表达式是对表达式的不同记法,其区别在于运算符相对于操作数的位置不同,前缀表达式的运算符位于操作数之前,中缀和后缀同理 举例: 中缀表达式:1 + (2 + 3) × 4 - …
什么是死锁?
什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 举例: 进程死锁 此时我们有两个线程…
Session 与 Cookie 的对比
Session 与 Cookie 的引入 引入:HTTP无状态协议,是指协议对于交互性场景没有记忆能力。 举例:在点击一个纯的html网页,请求获取服务器的html文件资源时,每次http请求都会返回同样的信息,因为这个是没有交互的,每一次的请求都是相互独立的…
动态规划 – 背包问题
背包问题 前提规范 本文使用使用额外的二维数组​C[i][j]​,表示在有​i​个物品时,背包中的最大容量为​j​,其中这​i​个物品可以全选,也可以不选。 参考文章 tianyicui/pack: 背包问题九讲 (github.com) 0-1背包 有N件物…