- 博客(31)
- 收藏
- 关注
原创 记一次源码更新GCC
因为现在的Gcc是9.4.0版本 ubuntu默认更新的版本再我使用std::format时候发现并不支持 所以尝试升级下Gcc到最新的版本**root权限 如果不是root用户安装 最好前面都加上sudo**拉取安装包wget https://mirrors.aliyun.com/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz// 解压GCC源码tar -vxf gcc-11.3.0.tar.gzmkdir buildcd build/../confi
2022-04-29 12:57:42
304
原创 快速排序-FP模式版和快速排序 - 和 - FP模式线程强化版
快速排序-FP模式版函数化编程(functional programming)是一种编程方式,函数结果只依赖于传入函数的参数。使用相同的参数调用函数,不管多少次都会获得相同的结果。函数化编程的好处并不限于将“纯粹”作为默认方式(范型)的语言。在PF(函数化)中使用future。我们实现一个简单的快排算法快排算法思想:给一个数据列表,每次选取其中一个数为中间值,然后将数据列表中的其他数值分为2组,比他小的在前 大的在后下面代码中的是FP-模式的串行实现,需要传入列表,并且返回一个列表,与 std:
2022-04-19 10:02:23
349
原创 层次锁示范解决哲学家就餐问题
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>#include <mutex>#include <stdexcept>#include <climits&g
2022-04-15 16:37:27
147
原创 Joining_thread简单实现
Joining_thread简单实现class joining_thread{ std::thread t;public: // 默认无参构造 joining_thread() noexcept = default; // 可变参数模板构造线程 template <typename Callable, typename... Args> explicit joining_thread(Callable &&func, Args &
2022-04-14 14:58:56
232
原创 C++继承vector并重载operator[] 内部类访问外部类操作
C++继承vector并重载operator[] 内部类访问外部类操作const int num = 10;template<typename Type>class myVector :public std::vector<Type>{ public: Type& operator[](const int i);}; template<typename Type>Type &myVector<Type>::oper
2022-03-23 08:38:11
1161
原创 shell脚本运行ssh远程机器命令:curl发送前端请求更换token脚本
shell脚本运行ssh远程机器命令:curl发送前端请求更换token脚本shell脚本运行ssh远程机器命令#!/bin/bashssh -i 密钥位置 ubuntu@ip地址 "cd /home/***; ./test.sh"curl发送前端请求更换token脚本#!/bin/bash# 1.sh是请求页面脚本./1.sh > tmpjsonpath="./tmp"if [ ! -f $jsonpath ]; then echo "file not exist"
2022-01-19 17:52:13
1002
原创 shell map的基本使用
shell map的基本使用#!/bin/shecho "一、定义Map:declare -A myMap=([\"myMap00\"]=\"00\" [\"myMap01\"]=\"01\")"declare -A myMap=(["my00"]="00" ["my01"]="01")myMap["my02"]="02"myMap["my03"]="03"echo "二、输出所有的key:"echo ${!myMap[@]}echo "三、输出所有value:"echo ${myM
2022-01-14 15:30:47
3956
原创 使用hredis C++连接redis小demo
C++使用redis1. 安装redis首先去官网下载最新的Redis源码http://redis.io/解压之后,进入目录编译makemake testsudo make install2. 安装hredis下载hredishttps://github.com/redis/hiredis解压之后,同样的makesudo make install连接成功…代码测试新建一个临时目录创建新文件redis.h#ifndef _REDIS_H_#define _REDIS_
2022-01-12 18:07:57
609
原创 C/C++字符串的分割(类似split方法)
C++字符串的分割(类似splite方法)How to split a string in C/C++, Python and Java?Splitting a string by some delimiter is a very common task. For example, we have a comma-separated list of items from a file and we want individual items in an array.Almost all program
2021-09-01 11:37:10
719
原创 2.1.5两个排序数组的中位数
2.1.5两个排序数组的中位数分别有两个大小为m和n的排序数组a和B。查找两个已排序数组的中值。总体运行时复杂度应为O(log(m + n))分析这是一道非常经典的题。这题更通用的形式是,给定两个已经排序好的数组,找到两者所有元素中第k大的元素。O(m+n)的解法比较直观,直接merge两个数组,然后求第k大的元素。不过我们仅仅需要第k大的元素,是不需要“排序”这么昂贵的操作的。可以用一个计数器,记录当前已经找到第m大的元素了。同时我们使用两个指针pA和pB,分别指向A和B数组的第一个元素,使用
2021-06-09 22:14:58
155
原创 Linux内核中常用的C语言技巧
1.语句表达式例如常用的宏定义#define max(a,b) ((a)>(b)?(a):(b))相信上面的代码大家都用到过吧,但是上述代码会引发安全问题,a和b的值会被计算两次,比如就是a传入i++,b传入j++的时候。例如下面的代码:#include<iostream>#define max(a,b) ( (a) >(b) ? (a) : (b) )using namespace std;int main(){ int i = 0, j = 0; cout
2021-06-06 16:35:29
449
原创 2.1.3在旋转排序数组中的搜索
2.1.3在旋转排序数组中的搜索//描述//假设一个排序数组在您事先未知的枢轴上旋转。//(即0 1 2 4 5 6 7 可能为4 5 6 7 0 1 2)。//系统为您提供了一个要搜索的目标值。//如果在数组中找到,则返回其索引,否则将返回 - 1。//您可以假定该数组中不存在任何副本#include<vector>#include<iostream>using namespace std;int find(const vector<int>&
2021-06-04 22:19:38
102
原创 2.1.2从排序阵列II中删除重复项
2.1.2从排序阵列II中删除重复项描述“删除重复项”的后续操作:如果最多允许重复两次怎么办?例如,给定排序数组A=[1,1,1,2,2,3],您的函数应该返回长度=5,而A现在为[1,1,2,2,3]分析加一个变量记录一下元素出现的次数即可。这题因为是已经排序的数组,所以一个变量即可解决问题。如果是没有排序的数组,则需要引入一个hashmap来记录出现的次数#include<iostream>#define SIZE 10using namespace std;void del
2021-06-02 11:27:35
97
原创 centos7更新内核并安装对应的驱动
centos7更新内核并安装对应的驱动下载完成最好手动安装gcc8版本 cmake3版本 glibc库等等直接yum install gcc的话安装的是4版本有点老了rpm -qa | grep kernelyum --enablerepo=elrepo-kernel install kernel-lt-devel //这里自己查看合适的lt版本还是ml版本yum --disablerepo="*" --enablerepo=“elrepo-kernel” list availableker
2021-04-30 16:18:35
843
1
原创 生产者与消费者模型的实现
生产者与消费者模型的实现当我们学习完了信号量和共享内存之后,我们就可以实现进程间的同步和互斥了。然后其中最经典的例子就是生产消费者模型了。现在就和大家一起分析下生产消费者模型以下代码是一个多个生产者和多个消费者对N个缓冲区进行访问的例子。首先先看看我们的伪代码//生产者:while (1){ p(semid, 1); sleep(3); p(semid, 0); //producer is producing a product goods = rand() % 10;//produc
2021-04-13 21:26:14
399
原创 2.1.1 从排序数组中删除重复项
给定一个排序的数组,在适当的位置删除重复项,使每个元素只出现一次并返回新长度。不要为另一个数组分配额外的空间,您必须使用固定内存就地执行此操作。例如,给定输入数组A=[1,1,2],函数应该返回length=2,现在A是[1,2]。全代码如下:#include<iostream>#include<string>#include<vector>using namespace std;constexpr auto SIZE = 100;void del
2021-04-04 16:50:38
138
原创 C++中static关键字属性
C++ static关键字不考虑类1.隐藏当我们编译多个文件的时候,所有未加static前缀的全局变量和函数都具有全局可见性。在其他文件中可以使用extern关键字在其它文件中使用到。例如:我在1.cpp/1.c中定义了一个int i变量。我们可以在main.c/main.cpp中使用extern找到我们在1.cpp中定义的i变量。2.默认初始化为0其中未初始化的全局静态变量和未初始化的全局静态变量都具有这个属性(他们都在内存区域的BSS段)比如我们可以初始化一个稀疏矩阵,就不需要使用循环遍
2021-03-22 18:40:17
284
原创 tcp_socket
tcp_socket/* * config.h 包含该tcp/ip套接字编程所需要的基本头文件,与server.c client.c位于同一目录下*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <sys/types.h>#include <unistd.h>#include <e
2021-03-19 23:34:58
133
原创 udp_socket编程
udp_socket编程server.c#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <string.h>#include <sys/types.h>#include <netinet/ip.h>const int SERV_PORT = 6000;const int MAXLINE = 2048;void dg_echo
2021-03-19 22:38:38
129
原创 使用类模板构建自己的数组(2020-11-14)
类模板案例案例描述: 实现一个通用的数组类,要求如下:可以对内置数据类型以及自定义数据类型的数据进行存储将数组中的数据存储到堆区构造函数中可以传入数组的容量提供对应的拷贝构造函数以及operator=防止浅拷贝问题提供尾插法和尾删法对数组中的数据进行增加和删除可以通过下标的方式访问数组中的元素可以获取数组中当前元素个数和数组的容量后续会新增功能。。。`#pragma once#include#includeusing namespace std;templateclass
2020-11-14 13:26:15
529
原创 C++核心编程
C++核心编程本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前 在程序编译后,生成了ex
2020-11-09 21:50:56
540
原创 C++基础入门
C++基础入门1 C++初识1.1 第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目 Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYXCyMNh-1604929713357)(assets/1541383178746.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iaeRx
2020-11-09 21:49:23
599
原创 c++面经
c++面经1. 语言基础 (C/C++)(0) 指针和引用的区别指针是一个新的变量,指向另一个变量的地址,我们可以通过访问这个地址来修改另一个变量;而引用是一个别名,对引用的操作就是对变量的本身进行操作指针可以有多级,引用只有一级传参的时候,使用指针的话需要解引用才能对参数进行修改,而使用引用可以直接对参数进行修改指针的大小一般是4个字节,引用的大小取决于被引用对象的大小指针可以为空,引用不可以。(1)在函数参数传递的时候,什么时候使用指针,什么时候使用引用?需要返回函数内局部变量的
2020-11-05 22:21:11
2674
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人