几个线程交替打印 关于多线程交替打印的问题题目要求是写3个线程交替递增打印一个整数,直到最大数的限制。我们可以根据取模运算来判断当前该打印那个数字。 但是本人在第一遍写的时候遇到如下三个问题: 加锁用的是独占锁,但是忘了用全局互斥量来初始化该锁,也就是写成了unique_lock<mutex> locker,应该是unique_lock<mutex> locker(mux); 在子线程函数 2022-10-21 C++ #多线程
生产者消费者模型 阻塞队列用C++简易实现生产者消费者模型,即实现一个阻塞队列; 之前Web服务器项中的异步日志系统也用到了该模型; 生产者生产数据到缓冲区中,消费者从缓冲区中取数据; 缓冲区满时,生产者线程阻塞,进入等待状态。 缓冲区空时,消费者线程阻塞,进入等待状态。 生产者生产资源后,会唤醒可能等待着的消费者; 消费者消耗资源后,会唤醒可能阻塞着的生产者; 12345678910111213141516 2022-10-12 C++ #生产者消费者 #阻塞队列
CPP中虚析构函数 析构函数我们都知道在C++的多类继承体系中的构造函数与析构函数执行顺序相反; 构造函数是从基类到派生类,析构函数是从派生类到基类; 123456789101112131415161718192021222324252627282930313233343536#include <iostream>using namespace std;class Base {public: 2022-09-30 C++ #C++
岛屿问题 岛屿问题1. 求岛屿面积或最大面积就是深度搜索,递归4个方向,统计每个岛的面积。 1. 求岛屿周长力扣题目:https://leetcode.cn/problems/island-perimeter/ 普通方法: 就是只有一个岛屿的情况! 1234567891011121314151617181920class Solution {public: int islandPerim 2022-09-16 数据结构与算法 #刷题 #数据结构 #算法 #DFS
C语言表示字符串 C语言表示字符串其实在C语言中,没有真正的字符串类型。但是有字符串数组。 当我们想申明一个字符串变量时,大体上有下面两种方法: 12345char str[] = "hello";char *p = "hello";// str[]:它定义的是一个字符串数组变量。可以通过 str[0] = 'A' 修改值。// *p:它定义的是一个指针变 2022-09-08 C++ #C语言
Shell脚本笔记 前言查看当前窗口是什么shell 1echo $SHELL shell脚本可以一次性执行多条命令,通常脚本文件以.sh结尾,这称为批处理。 注释用#表示,但注意第一行的#!/bin/bash表示以后面的解释器解释执行; 执行方式: 作为可执行文件 12chmod +x name.sh # 加上可执行权限./name.sh # 执行脚本 作为解释器参数 1/bin/bash name.sh 2022-08-20 Linux #Linux #Shell
CMU15-445数据库实验总结 简要介绍这门课程共五个配套实验,不过关于数据库的是后面4个实验,第一个实验是检验基本C++语言能力的前菜。 实验全部都是完形填空的形式,需要我们实现声明好的函数,自己也可以增加其它成员变量或成员函数来辅助完成实验要求。 实验配套的开源项目是bustub,需要我们从github上clone下来,按照README配置环境就好。我是在VMWARE中装Ubuntu18.04虚拟机来完成实验的,一定要仔细看 2022-08-13 项目 #项目 #数据库 #可扩展哈希 #缓存池 #LRU #火山模型 #读锁 #写锁
实现计算器从表达式求值 双栈解法思路 一个栈nums存放数值,一个栈ops存放符合(运算符和括号); 遍历字符串有四种情况: 左括号:直接入ops栈; 右括号:从现有的两个栈里面计算,直到遇到左括号; 数字:取出整数放入nums栈; 运算符:先把两个栈里面可以计算的都计算,然后将新运算符加入ops栈; 注意事项: 处理字符串前先将空格去除; 每次计算得到的结果同样存放在nums栈中; 只有「栈内运算符」比「当前运算符 2022-08-06 数据结构与算法 #刷题 #数据结构 #算法 #栈
循环队列 循环队列定义 为充分利用向量空间,将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。 在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为 2022-08-02 数据结构与算法 #刷题 #数据结构 #算法 #循环队列 #数组 #链表 #循环双端队列
ACM输入模式 基本知识 包含所有C++头文件的方式; 1#include <bits/stdc++.h> cin读取的每个数据以空格和回车分隔; cin >> var会自动将输入流中数据转换为var类型; cin>>输入的数据不包含空格和回车,空格和回车会存入到cin的缓冲区中; cin是丢弃回车的,如果想拿到输入的空格和回车,通过cin.get()获得; cin.ge 2022-08-02 数据结构与算法 #刷题 #总结 #ACM输入模式