自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 什么是Autosar ? Classic Autosar 与 Adaptive Autosar的区别 ?

AUTOSAR(Automotive Open System Architecture)是一种汽车软件架构标准,旨在推动汽车电子系统的标准化和可重用性。AUTOSAR定义了一组规范和标准,旨在简化汽车电子系统的开发、集成和维护,并促进不同供应商之间的合作。它提供了一种开放式和标准化的方法,使不同的汽车电子控制单元(ECU)能够在同一车辆上无缝地协同工作。Classic AUTOSAR主要适用于传统的实时控制应用,而Adaptive AUTOSAR则更适用于高度灵活和动态可配置的汽车电子系统,特别是涉及连

2023-07-21 14:20:24 693

原创 关于 std::condition_variable

std::condition_variable 是 C++ 标准库提供的一个线程同步的工具,用于实现线程间的条件变量等待和通知机制。条件变量的发生通常与某个共享变量的状态改变相关。 在多线程编程中,条件变量通常和互斥锁(std::mutex)一起使用,以避免死锁等问题。

2023-05-10 14:22:42 973 1

原创 C++中的右值引用

右值引用是C++11中新增的一个特性,它的出现主要是为了优化程序的性能和提高代码的可读性。 右值引用本质上是一个指向右值的引用,通过右值引用可以实现移动语义和完美转发等功能,从而提高程序的效率和灵活性。

2023-03-28 16:14:15 1117

原创 C++20中的span容器

span 是一个轻量级的非拥有式容器,它提供了对连续内存的引用。span 的主要用途是作为函数参数,可以避免不必要的内存拷贝,并且可以防止悬垂指针和空指针引用的问题。

2023-03-03 10:46:56 3309

原创 PImpl(Pointer to Implementation)指向实现的指针

PImpl是Pointer to Implementation的缩写,也被称为“编译期实现”,是一种C++设计的模式。 用于将类的实现细节与其公共接口分离开来。该模式的核心思想是 通过一个指向类的实现的指针来隐藏类的实现细节,从而提高类的封装性和安全性。

2023-03-01 16:57:36 1097

原创 IO多路复用 select、poll 和epoll [Linux高并发服务器开发]

IO多路复用技术 又名 IO多路转接。 IO多路复用使得 程序能同时监听多个文件描述符,只处理输入、输出有变化的套接字,能够提高程序从处理并发的性能。 系统调用主要有select、 poll 和 epoll。

2022-03-01 18:59:22 1006

原创 设计模式概述

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。

2022-02-28 19:37:58 295

原创 Linux 进程间通信 之 共享内存 [Linux高并发服务器开发]

一、共享内存的概念共享内存允许两个或者多个进程共享物理内存的同一块区域(通常称为段)。 由于一个共享内存段会称为一个进程用户空间的一部分。 因此这种IPC机制无需内核介入,所需要做的是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道等要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种 IPC 技术的速度更快。

2022-02-22 11:31:23 461 1

原创 Linux 进程间通信 之 内存映射 [Linux高并发服务器开发]

内存映射 (Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存从而修改磁盘文件。 对内存直接操作,因此效率比较高。内存映射相关的系统调用://建立内存映射void *mmap(void* addr, size_t length, int port, int flags , int fd, off_t offset);//解除内存映射int munmap(void *addr, size_t length);

2022-01-21 00:50:32 1333

原创 Linux中使用 有名管道 实现聊天功能 [Linux高并发服务器开发]

使用两个有名管道,进行双向聊天的交互。 对进程A,主进程以只写的方式去向管道1中写数据,创建进程A的子进程,以只读的方式从管道2中读数据; 对进程B,主进程以只读的方式去读管道1中的数据,创建进程B的子进程,以只写的方式向管道2中写数据, 这样就是实现了,两个进程之间,聊天的功能。

2022-01-12 12:44:56 613

原创 死锁的定义 和 处理策略

如果一个进程集合中的 每个进程 都在等待 只能由进程集合中的其他进程 才能引发的事件,那么,该进程集合就是死锁的。由于所有的进程都在等待,所有没有一个进程能引发可以唤醒该进程集合中的其他进程的事件,这样,所有的进程都会无限期的等待下去。

2022-01-11 17:21:58 1425

原创 Linux进程间通信 之 管道通信 及 代码示例 [Linux高并发服务器开发]

进程是一个独立的资源分配单元,不同进程(通常指用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。 但是进程不是孤立的,不同的进程之间需要进行信息的交互和状态的传递等,因此需要进程间通信。

2022-01-09 16:01:41 2373

原创 调用 wait、waitpid 函数进行子进程回收,防止产生僵尸进程 [Linux高并发服务器开发]

父进程可以通过调用wait 或 waitpid得到子进程的退出状态,同时彻底清除掉子进程的资源。

2022-01-05 23:56:32 1611

原创 Linux中的进程控制:进程退出、孤儿进程、僵尸进程 概念及代码示例 [Linux高并发服务器开发]

父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就 称为 孤儿进程。进程终止时,父进程尚未回收子进程PCB资源,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。

2021-12-29 00:18:01 542 1

原创 生活中的一点点激励

[ 记录生活中的一点点,持续更新.... ]2021.12.28 每天出地铁,需要爬一个四层的很高的台阶。之前,从下面抬头往上一看,这么高,得爬多久啊!这爬起来不得累死人。(心中产生退却之意,要不然明天去另一个有扶梯的出口)今天,就不往上看,低头一个一个台阶的爬,也不会觉得累,觉得难了。感觉 生活 就是这样,当你专注于当下,一步一步地完成一个一个小规划,就不会觉得前面好远,好难。反而,会觉得不断地充满力量和希望。...

2021-12-28 11:03:29 324

原创 Linux中 进程创建 相关的execve函数调用[Linux高并发服务器开发]

exec函数族是与创建进程相关,都是通过封装Linux系统函数execve来实现的。exec函数族的作用是 根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。

2021-12-27 23:07:53 1207

原创 Linux中的 进程概念、进程创建 和 GDB多进程调试 [Linux高并发服务器开发]

进程是正在运行的程序的实例,是一个具有一定独立功能的程序关于某个数据结合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

2021-12-26 16:05:26 1025

原创 Linux中的文件IO和虚拟地址空间模型 [Linux高并发服务器开发]

Linux文件IO 与 虚拟地址空间的概念

2021-12-23 22:18:51 1308

原创 TCP 与 UDP的区别

流控制 是 区分UDP 和TCP的 最重要的标志。

2021-12-16 18:15:14 1556

原创 C++中的Lambda表达式

一个lambda表达式表示一个可调用的代码单元,可理解为一个未命名的内联函数。一个lambda表达式具有一个返回类型、一个参数列表和一个函数体 [capture list ] ( ...

2021-12-02 18:28:12 3280

原创 Linux下 UDP 服务端和客户端回声实现

Udp是传输层的协议,它的主要作用是:将从网络中收到的数据,分配给具体的套接字的端口。server端:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<sys/types.h>#define BUF_S

2021-11-29 23:34:28 1581

原创 同步阻塞IO 和 IO多路复用

RPC 是解决进程间通信的一种方式。一次 RPC 调用,本质就是 服务 消费者 与 服务 提供者间的一次网络信息交换的过程。说到网络通信,就要提到网络 IO 模型。为什么要讲网络 IO 模型呢?因为 所谓的两台 PC 机之间的网络通信,实际上就是两台 PC 机对网络 IO 的操作。 最常用的两种网络IO模型是 同步阻塞IO 和 IO多路复用。 分别用两个比喻来说明这两种IO模型的区别: 同步阻塞IO:我们去餐厅吃饭,我们到达餐厅,向服务员点餐,之后要一...

2021-11-25 00:24:33 1471 2

原创 Makefile 运行机制 和 语法

一、make的运行最简单的就是直接在命令行下输入 make 命令, make 命令会找当前目录的makefile 来执行,一切都是自动的。但也有时你也许只想让 make 重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。38.make的退出码make 命令执行后有三个退出码:0 —— 表示成功执行。1 —— 如果 make 运行时出现任何错误,其返回 1。2 —— 如果你使用了 make 的“-q”选项,并且

2021-11-21 17:52:30 3508

原创 GDB调试 [Linux高并发服务器开发]

目录一、什么是GDB二、GDB调试的必要条件三、GDB命令1.启动和 退出GDB调试工具2.给程序设置参数/获取设置参数3.GDB 使用帮助4.查看 当前文件的源代码5.查看非当前文件代码6.设置显示的代码行数7.设置断点8.查看所有的断点9.删除断点10.设置断点无效11.设置断点生效12.设置条件断点(一般用在循环的位置)13.运行GDB程序14.继续运行,到下一个断点停15.向下执行一行代码( 不会进入函数体,逐语句执行)..

2021-11-21 17:47:07 924

原创 Xshell 和 VMware中的Ubuntu虚拟机连接失败

遇到连接失败的情况,一般从两方面着手:一、查看Xshell中的 主机 ip地址是否配置正确在Ubuntu中,输入ifconfig命令,查看虚拟机的 IP地址,inet 10.135.17.51 ,IPV4地址就是 10.135.17.51 。 在Xshell中配置的时候,默认的SSH连接端口是 22.然后,设置登陆服务器的用户名和密码,点击连接。二、服务器中安装 SSH服务如果完成以上设置,发现还没有连接成功。那么Ubuntu服务器上,没...

2021-11-21 14:35:33 994

原创 Linux中动态库的制作 和 使用[Linux高并发服务器开发]

兄弟 篇:Linux中静态库的制作 和 使用动态库的工作原理是:程序启动之后,动态库会被加载到内存中供程序使用。 动态库的代码不会被打包到可执行程序中。一、命名规则在Linux中:libxxx.solib:前缀 ,是固定的xxx:库的名字,自己起名.so:后缀,是固定的在windows中:libxxx.dll二、动态库的制作2.1 动态库的制作流程,如图:2.2分两个步骤:1.获取目标文件,使用 gcc...

2021-11-19 00:30:52 572

原创 Linux中静态库的制作 和 使用 [Linux高并发服务器开发]

一、什么是库库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。库是 特殊的一种程序,编写库的程序和编写一般的可执行程序区别不大,只是 库不能单独运行。库文件有两种,静态库 和 动态库(共享库),区别是:静态库 在程序的链接阶段 被 复制到了程序中;动态库 在链接阶段 没有被复制到程序中,而是 程序 在运行时由系统动态加载到内存中供程序调用。...

2021-11-18 01:02:28 899

原创 gcc/g++的工作流程 [ Linux高并发服务器开发 ]

一、gcc/g++ 工作的流程windows下的可执行文件是.exe,Linux下的可执行文件是.out二、gcc/g++ 常用参数选项三、使用方式如下:使用下面的 一段 测试代码, 文件名 叫 test.cpp :#include<iostream>#define PI 3.1415926using namespace std;int main(){ int sum = PI + 10 ; cout<<"Hello"&l.

2021-11-16 23:53:27 1763

原创 使用python的openpyxl库 处理一个表格,计算时间差值

一、需求分析处理的需求是:对一个表格中,相同 问诊id 的数据进行合并:1. 对话内容整理成,一人一句对话的方式2.合并H列和I列,用 一个患者的最后结束问诊时间减去最初发起问诊的时间 , 计算出一个患者的总问诊时间二、代码实现使用python的openpyxl库处理excel表格;使用datetime库,进行时间计算。import openpyxlimport datetime#计算时长def subtime(date1,date2): ...

2021-11-12 13:33:44 1544

原创 猜数字游戏 (Leetcode 299)[C++实现]

使用 哈希表的思想 ,通过 数组的下标对应数值 ,下标对应的数值 巧妙存储了数值出现的次数。

2021-11-09 15:22:55 178

原创 我写的Bug在C919飞机上导致黑屏了 【访问未初始化的地址空间】

【问题原因】隐藏的 声明大数组,使用时,获取了 未初始化的地址空间 内容,产生随机值,导致了黑屏。我们是做C919 驾驶舱显示系统的,显示系统的整个硬件和软件都是我们做的。 我是做显示系统,软件后端的。【问题描述】在程序中,声明了一个大的数组 char message[1000],未初始化,供接收数据使用。在接收数据的时候,只赋值到 message[10] ,而在使用的时候,获取了 message+12 的地址空间内容...

2021-11-06 14:34:05 206

原创 位图 及 代码实现

位图是一种特殊的哈希表。

2021-11-02 21:14:40 346

原创 数据结构—单调栈(处理 下一个更大元素 和 接雨水 问题)

单调栈,就是对入栈和出栈,通过条件限制,实现栈内数据的单调性。

2021-10-30 17:36:50 137

原创 循环数组 及 实现

数组是一种线性结构,在内存中是一段 连续的内存存储空间存储。 那么如何实现循环的数组呢?什么是循环数组? 循环数组就是数组的头尾是相连的。假如有一个数组 [3,7,2,9,1,5] ,形成的环形数组如下图:用代码实现,如下:vector<int> num = {3,7,2,9,1,5};int size = num.size();int i = 0;while (true){ cout << " " <&...

2021-10-28 10:12:28 4251

原创 Python中使用openpyxl库 处理Excel表格,将结果保存到生成的新的Excel表格

在工作中,需要处理一张很大的数据表格,如果使用人工来查验,就很伤。所以,想到用工具来处理。原来这个表格是在一个PDF中,我先是把它从PDF中转为Excel,然后再用openpyxl处理表格一、需求和功能目标是 统计有父子关系的两个控件, 如下图所示:第一行是父控件 ,第一列是子控件。 表中的X代表,有父子关系。需要统计出: 每一个父控件,有哪些子控件。比如统计出上图中BasicContainer的所有子控件有哪些。二、程序设计和 实现...

2021-10-19 20:15:35 4115 1

原创 N叉树的前序遍历 ( 使用数组实现 N叉树 )

一、N叉树的节点Node定义如下:class Node{public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; children = _children;..

2021-10-11 18:26:38 460

原创 地址族 与 网络字节序(大端序)

关于IP地址和端口号 的区别,下面分别用一句话概括:IP是InternetProtocol(网络协议)的简写,是为收发网络数据 而 分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号。一、网络地址为了使计算机接入网络并收发数据,必须向其分配IP地址。IP地址分为两种类型:IPv4 (Internet Protocol version 6) 4个字节地址族IPv6 (Internet Protoc...

2021-10-08 18:11:30 781

原创 [C++] 类的静态成员 (静态数据成员 和 静态成员函数)

目录一、声明静态成员:二、定义静态成员:三、使用类的静态成员:四、静态成员类内初始化:五、静态成员与普通成员的区别:六、案例代码:类内的静态成员包括:静态数据成员和静态成员函数。类的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据。一、声明静态成员:在成员(函数或变量 )声明之前加上关键字static。静态成员可以是 public或private的。静态数据成员的 类型 可以是常量、引用、指针、类类型等。cl...

2021-09-22 18:48:18 3730

原创 如何学习开源项目

学习开源项目怎么学习呢? 看大佬从以下三方面 来进行 解读。目录一. 开源系统学习误区二. 开源系统学习步骤三. 开源系统落地技巧(选 ,用 , 改)一. 开源系统学习误区二. 开源系统学习步骤三. 开源系统落地技巧(选 ,用 , 改)摘自:如何快速学习并落地一个开源系统_哔哩哔哩_bilibili...

2021-09-18 18:47:24 394

原创 Socket网络编程(Linux中基于TCP套接字实现简单的 服务端 向客户端 发送数据)

要想实现网络通信,需要调用 操作系统提供的socket套接字。 所谓的网络编程,又称为套接字编程。下面实现一种简单的服务端向客户端发送数据的过程。网络编程中Server端 接受连接请求 的套接字创建过程如下:1. 调用 socket函数 创建套接字2. 调用 bind函数 分配IP地址和端口号3. 调用listen函数转为可接收请求状态4. 调用 accept函数受理连接请求网络编程c...

2021-09-16 17:32:32 1687

Toad for DB2 v5.6.0

Toad for db2是一款专业的DB2数据库管理工具,可以帮助用户很好的进行数据库的管理,可以为高级管理、性能和变更管理提供更完整的DBA套件,确保应用程序和峰值数据库性能。安装之后可以大大提高工作效率。

2018-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除