学习笔记
文章平均质量分 59
Code_zx
一个刚开始的编程菜鸟,开始我的编程生涯。
展开
-
射频——MIMO概念
01—MIMO是什么在这个万物互联的时代,手机作为我们和外界联系的窗口,似乎已经成为了我们身体的一部分。而手机是无法自己上网的,和手机进行通信的通信网络,已经变得跟水和电一样。畅快上网的时候,感觉不到这些幕后英雄的重要,一旦离开就感觉跟活不下去了一样。按流量收费的时代,曾几何时,1M流量收费一块,普通人一个月也就几百M,用一点少一点,哪敢无时无刻刷抖音啊。因此,看到wifi,就有了安全感。我们来看看无线路由器长什么样子。好家伙,8根天线,都快成蜘蛛了。看起来很牛逼的样子。实际呢,信号能多穿转载 2020-12-17 10:28:26 · 1842 阅读 · 0 评论 -
射频通信中的CA中的PCC和SCC概念
LTE CA里面涉及两个概念,一个PCC,一个SCC:PCC:primary carrier component 主载波SCC:sencondary carrier component 辅载波Pcell UE建立初始连接的小区,一般对应PCC,Scell 通过RRC重配置添加的小区,提供额外的频段资源,一般对应SCC;PCC必须同时配置DL和UL,SCC可以只配置一个DL或UL;一些NAS的移动性信息、安全参数等等只会在PCC上发送;终端只会在PCC载波上发起随机接入..转载 2020-12-17 09:56:07 · 5275 阅读 · 0 评论 -
软\硬连接
软链接:通过 (ln -s 文件名 软连接名) 创建一个文件的软链接其实质是该文件的快捷方式创建了一个新的文件,但是其内容是原来文件在数据区的路径(位置),只是分配了一个i节点如图:Linux演示实现:硬链接:通过 (ln 文件名 硬链接名) 创建一个文件的硬链接该硬链接与原文件共用一个i节点只是创建了一个新的文件名,并且将文件属性中的硬链接数进行+1操作(内核操作)修改任...原创 2018-12-07 13:03:42 · 384 阅读 · 0 评论 -
动\静态库
原理: 将源码文件编译成自己的目标文件(即:从.c 文件编译成 .o文件)然后通过不一样的链接方式,生成动态库(.so)、静态库(.a)或可执行文件(.exe)动态库可以直接通过源码编译生成静态库 程序在运行之前将静态库链接到可执行文件中,程序运行时不再需要静态库生成方法:1.xxx.c --> xxx.o2.通过 ar -rc libxxx.a xxx.o 将xxx....原创 2018-12-12 22:45:08 · 318 阅读 · 0 评论 -
Linux进程总结(下)
一、进程创建fork()原理:为子进程重新创建一个task_struct,以及对应的虚拟地址空间和页表,并且将父进程的 数据(包括缓冲区的数据)和代码拷贝一份至子进程pcb中返回值:对父进程而言:fork()成功返回子进程的进程id;失败返回-1. 对子进程而言:fork()成功返回0;失败返回-1。fork返回值验证代码:#include<stdio.h> ...原创 2018-12-05 13:02:12 · 389 阅读 · 0 评论 -
虚拟地址空间
证明代码:#include<stdio.h> #include<unistd.h> ...原创 2018-11-29 17:57:26 · 283 阅读 · 0 评论 -
进程——孤儿进程 僵尸进程
孤儿进程概念:父进程先于子进程退出子进程没有父进程获取自身的退出状态,也就变成了孤儿进程但是,所有的孤儿进程都被一号(init)进程所收养,由一号进程作为所有孤儿进程的父进程,负责孤儿进程的资源释放产生孤儿进程代码: #include&lt;stdio.h&gt; ...原创 2018-11-29 17:32:32 · 379 阅读 · 0 评论 -
Linux进程总结(上)
进程概念:1.个程序运行在操作系统上,即操作系统为该程序分配一系列的资源,并且将该进程描述为一个PCB(task_struct)结构体。2. 进程即运行起来的程序,分配CPU资源的实体task_struct结构体主要内容:1.标识符,即进程id2.上下文数据,保存进程执行时,寄存器当中的数据内容3.程序计数器,保存当前进程所要执行的下一条命令4.内存指针,指向进程执行所需要的数据和代...原创 2018-11-28 22:37:52 · 259 阅读 · 0 评论 -
C++继承总结
继承概念 在原有的类不变的基础之上,新增一些函数,对功能进行拓展继承特点 是面向对象程序设计的的层次结构 是实现由简单到复杂的认知过程基类:被继承的类 派生类:在继承之后产生的新类例子 手机系统会不断更新,然而,我们的手机更新之后的功能只是对原来的功能进行优化和新增继承格式 派生类名 :继承权限 基类名继承权限 注...原创 2018-07-05 11:30:14 · 321 阅读 · 0 评论 -
C++ 多态总结
多态概念 同一个事物在不同环境下具有不同的状态虚函数概念 在函数返回值前加上 virtual 关键字多态分类 静态多态(早绑定):在编译器编辑时确认要调用的函数 1、 函数重载 2、泛型编程 动态多态(晚绑定):在程序运行时确认将要调用的函数 1、 基类中存在虚函数 2、继承当中对基...原创 2018-07-03 21:27:23 · 247 阅读 · 0 评论 -
进程间通信----管道
进程间通信了解管道之前,我们先要了解什么是进程间通信,为什么要进程间通信,进程间通信有什么好处,以及有哪些进程间通信方式!背景:1.在很多情况下,一些大型的程序使用的是多个进程相互配合完成任务2.但是 进程具有独立性 ,无法方便的进行进程之间的沟通3.为了使多个进程能容易的进行进程间的交流,引出进程间通信作用:1.数据交换2.资源共享3.相互通知4.进程控制:某些进程需要被另...原创 2018-12-13 12:22:23 · 361 阅读 · 0 评论 -
进程间通信-----消息队列
原理:用户组织一个 带有类型的数据块,添加到消息队列中,其他进程从该消息队列中取出对应类型的数据块本质: 操作系统在内核为用户创建并且维护的一个队列并且该队列为用户提供了一个两个进程之间发送具有类型的数据块的方法不足: 数据块的长度有上限(MSGMAX)消息队列总字节数有上限(MSGMNB)消息队列个数有上限(MSGMNI)创建消息队列:int msgget(key_t key,...原创 2018-12-13 23:23:22 · 298 阅读 · 0 评论 -
基础文件I\O
标准输入,标准输出,标准错误-----> stdin stdout stderr实质:是文件指针(FILE*),指向对应的文件结构体库函数:对系统调用进行一层封装,使用户更容易使用系统调用会自带缓冲区(fopen, fread, fclose, fwrite)系统调用:操作系统提供的接口,用户可通过系统调用进行开发等…(open, read, close, write, lsee...原创 2018-12-06 22:39:18 · 308 阅读 · 0 评论 -
进程间通信------共享内存
1.原理:系统在物理地址空间上开辟一块用于存放共享数据的数据区,然后进程在其虚拟地址空间上开辟一块共享内存数据区,通过页表映射到物理地址的共享内存数据区,当不同的进程都映射到物理地址空间上的共享内存数据区时,这两个进程就可以直接从该共享内存拿取数据,不再通过内核的系统调用传递数据,实现进程间通信的目的。注:由于共享内存不再通过系统调用传递数据,也就 节约了数据从用户到内核,再由内核到用户时的时...原创 2018-12-14 15:01:25 · 403 阅读 · 0 评论 -
信号量---实现同步互斥
前言了解信号量之前,要先了解临界资源、同步与互斥的概念1.临界资源:在同一时间只能被一个进程调用的资源,也称互斥资源。2.同步:保证访问的时序可控性,使调用资源的的顺序合理。3.互斥:在进程调用临界资源是,不同进程之间要竞争该资源,那么一个进程调用了该资源,另一个进程无法再调用该资源的情形就叫互斥!4.临界区:代码中涉及到了操作临界资源的代码段叫临界区。5.原子操作:该操作无法被打断...原创 2018-12-14 18:27:12 · 13735 阅读 · 2 评论 -
volatile关键字
作用:保证被其修饰 的变量的内存可见性在编译器优化之后:当在某个变量的使用频率特别高时,CPU会将该变量直接放在寄存器中,每次都通过寄存器访问该变量的值,然而,当该值发生改变时,寄存器中的值并没有发生变化,也就导致了CPU取到错误的变量值;若使用volatile修饰此类型变量,那么意味着:CPU每次访问该变量时,都需要将该变量从内存重新加载到寄存器,再访问寄存器中的该变量值!例:结果:...原创 2018-12-16 21:06:38 · 157 阅读 · 0 评论 -
线程基本概念
线程概念a.程序当中的一个执行路线b.进程当中的一个控制序列c.一个进程至少有一个执行线程Linux中的线程是通过进程模拟实现线程的,没有真正意义的线程Linux中的进程称为轻量级进程,至少有一个执行线程进程与线程进程是承担分配系统资源的基本单位实体;线程是调度的基本单元,程序执行的最小单位。进程之间数据独立;线程共享进程资源,独自拥有自己的上下文数据和私有栈结构。一个进程的...原创 2018-12-21 18:35:12 · 304 阅读 · 0 评论 -
线程的同步与互斥
同步与互斥同步概念程序按一定顺序访问临界资源,如:生产者消费者模型…(先生产再消费)互斥概念任何时刻,都只能有一个执行流访问临界资源,如:消费者与消费者…(不能同时消费同一个物品)引入:在进程中,多个线程之间共享进程资源,线程与线程之间便都具有操作该进程资源(临界资源)的能力和权限,为了保护该进程资源(临界资源),便引入了线程的同步与互斥。互斥量(mutex)在...原创 2018-12-27 23:20:21 · 458 阅读 · 0 评论 -
线程控制
线程基本概念程序中的一个执行路线CPU调度的基本单元,程序执行的最小单位具有线程控制块(TCB),Linux下,有进程模拟实现,即TCB也就是task_struct结构体所有的线程都共享其进程的地址空间,但是有其独立的上下文资源和栈空间线程控制所用库:POSIX线程库,使用编译器命令时需要加“-pthread”选项1.头文件:&lt;pthread.h&gt;注:库都是对系...原创 2018-12-23 23:24:42 · 906 阅读 · 0 评论 -
linux--信号
信号概念信号是用于通知发生某些事件,然后打断进程当前操作,改去处理该发生事件的进程间通信方式之一信号实质是进程PCB(task_struct)中的一个位图表,其中包含两个位图和一个函数指针:阻塞位图(blocked),未决位图(pending),信号递达函数指针(handler)信号也是软件中断的方式之一查看信号列表命令:kill -l信号格式:编号 + 宏定义名称信号的总数:62个...原创 2018-12-18 20:24:46 · 329 阅读 · 0 评论 -
冒泡排序(C语言版)
概念冒泡排序是通过依次的比较,将所需要的元素层层交换(冒泡)至数据链的开头,每冒泡一次,则数据链头部往后移一位经过N次冒泡之后,得到最终序列的算法!!性质1、该排序是稳定的! 2、该排序的空间复杂度为O(1)、时间复杂度为O(N^2)!!检测 例题:将一个链表采用冒泡的方式,将其有序化。(这里我们暂定是降序) 实验数据:链表结点的数据依次为:3,6,1,7,5,0 理想结果...原创 2018-07-03 15:44:35 · 9866 阅读 · 0 评论 -
数据结构——链表“焦点”(C语言版)
不是烧焦的焦 这里是交点的交!!我们要求的问题是,判断两个链表是否是相交的,并且如果是相交的话,找出交点!!两个链表的相对位置有以下六种,其中我们这里讨论的是不带环的链表相交! 显而易见 我们要判断两个不带环链表的相交很简单! 只需要看其尾结点是否一致,便可做出判断 对此,我们先首先构造一个相交的链表,再通过我们的代码进行判断!!构造相交链表的代码:PNode L...原创 2018-07-03 14:34:37 · 455 阅读 · 0 评论 -
数据结构——链表逆置!
链表逆置:是将形如 1 →2 →3 →4 →5 →NULL 的链表逆置改为:5 →4 →3 →2 →1 →NULL 对于这个问题,有两种方法:1、采用三个指针:将整个链表翻转!! 时间复杂度O(N^2) 嵌套循环具体思路如下:首先要先找到新的头结点,则需要一个指针pCur1遍历链表,找到原尾结点,将其设置为新的头结点,因为我们需要从原头结点开始遍历,则需要一个pOldHead指...原创 2018-06-07 09:49:51 · 2054 阅读 · 0 评论 -
数据结构——链表——找中间结点、倒数第K个结点、删除倒数第K个结点(C语言版)(要求只能遍历一次链表)
由于要进行期末考试了,所以就将明天的提前发了,留一点复习的时间!!这次的题是在只进行一次遍历链表的情况下,找到中间结点;或者找到倒数第K个结点,当明白了这两个问题的思想之后,最后的删除倒数第K个结点就只是调用一下之前的函数了!这儿有个趣味小问题:一百米赛跑,兔子的速度是乌龟的两倍,那么兔子到终点后,乌龟的位置在哪儿??问题很显然,乌龟就在五十米处,也就是整个赛道的中间点。由此可见:遍历...原创 2018-06-05 15:17:15 · 1435 阅读 · 0 评论 -
链表——删除非尾结点、某个结点位置插入值为data的结点(不能遍历链表)
最近遇到这样一个题: 删除一个非尾结点pos;在pos位置插入一个值为data的新结点,要求都是不能遍历链表对于这种类型的题,首先:找到pos这个结点,然后才是调用函数删除或者插入。于是,首先我们应该写一个能找到pos结点的函数 PNode FindDataNode(PNode pHead, DataType data)函数代码如下: PNode FindDataNode...原创 2018-06-05 13:52:24 · 364 阅读 · 0 评论 -
数据结构——链表逆序打印(C语言版)
链表一种链式存储的线性表,由任意地址的空间链接起来,其中这个任意的空间称为结点,每个结点当中包含了数据以及下一个结点!某些情况下,要求逆序打印链表:即从尾到头打印链表思路解析每个结点都指向下一个结点,不能逆向访问,于是乎:要想打印最后一个结点,就必须打印其之前的所有结点, 由此思路,很显然,我们应该采取的方法是:递归 递归 递归!递归:是程序调用自身的编程技巧 ,直接或间接...原创 2018-06-04 12:22:51 · 1370 阅读 · 0 评论 -
关于 奇偶数 排列的方法(C语言)
之前看到一道题:将一个序列里面的元素,按照奇数在前,偶数在后的序列排列起来。想到三种方法:方法一:类似冒泡的方法,两个指针,从前遍历整个序列,将偶数一个个的往后搬移,直到某个偶数后面不会再有奇数。此方法的时间复杂度O(N^2) 空间复杂度O(1) 相同性质的相对位置不稳定代码:测试结果:方法二:添加一个计数器count,遇到偶数时,count++,然后继续遍历,遇到奇数时与前count个...原创 2018-06-03 22:41:36 · 5912 阅读 · 0 评论 -
内存泄漏和野指针
内存泄漏也称作“存储渗漏” 用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存泄漏。内存泄漏概念 简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。泄漏的分类 以发生的方式来分类,内...转载 2018-06-03 09:24:41 · 561 阅读 · 0 评论 -
动态顺序表的基本操作(C语言版)
顺序表的概念:用一段连续的存储单元存储数据的线性结构,其中连续的存储单元一般采用数组的形式给出。 顺序表分为静态顺序表和动态顺序表。 静态的顺序表具有一定局限性,当空间已经满了,仍有数据要插入时,便要扩大空间,于是便有了采用动态数组作为存储结构的动态顺序表。 动态顺...原创 2018-06-03 09:04:53 · 738 阅读 · 0 评论 -
链表的基础知识
//链表基础知识typedef int DataType;typedef struct ListNode{ struct ListNode* _pNext; DataType _data;}ListNode,*PNode;// 链表的初始化 void SListInit(PNode* pHead);//创建新结点PNode BuyNewNode(DataType data);// 尾插 void ...原创 2018-04-20 21:21:00 · 1159 阅读 · 0 评论 -
数据结构——顺序表基础知识
头文件:#pragma once#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <assert.h>////////////////////////////////////////////////////////////////////////定义顺序表#define...原创 2018-04-16 22:58:50 · 415 阅读 · 0 评论 -
函数重载和引用(C++)
函数重载:类似于中国文字的多义,相同的一个词却表达不同的意思。C++中便有同该函数名函数却实现不同功能的函数,这种函数便被称为重载函数,即该函数名被重载! 如下: 函数重载的条件: 1、必须是在同一个作用域内。(划重点,经常忽略) 2、必须是相同的函数名。 3、函数的形参列表必须不同,其中形参列表的不同包括以下几个方面: (1)、参数个数不同。 (2)、参数类型不同。 ...原创 2018-06-17 19:02:34 · 721 阅读 · 0 评论 -
栈的基本操作(C语言版)
概念一种特殊的线性表,只能在固定的一端进行插入和删除操作,这个固定的一端称为栈顶,另外一端称为栈底,没有任何元素的栈称为空栈!!栈的特性先进后出或者说后进先出!! 另外,栈分为顺序栈以及链式栈。栈的功能将数据从一种序列改变为另外一种序列(改变数据序列)栈的基本操作动态顺序栈的结构体———>其中包括动态数组(_array),空间容量(_capaci...原创 2018-06-26 11:20:27 · 10614 阅读 · 0 评论 -
数据结构——有序链表合并(C语言版)
有序链表合并两个有序的链表,要求将其合并为一个链表,并且该链表保持有序!!这里所讲的是链表升序!首先,我们要构造两张按照升序排列好的链表。 构造链表:我们的方法有尾插,头插,大家可以click链接来查看: https://blog.csdn.net/code_zx/article/details/80024207这里我们的实验数据,以及思路如图所示!! 实验数据: 链表1:...原创 2018-07-03 14:08:29 · 5370 阅读 · 0 评论 -
数据结构-------队列基本操作
队列的概念一种特殊的线性结构! 只允许在一端进行插入数据的操作,在另一端进行删除数据的操作! 有先进先出的特性! 另外,其储存结构分为顺序的和链性的即分为顺序队列和链式队列顺序队列有大量的缺陷,比如:要搬移大量元素,溢出或者假溢出!! 链式队列:一个特殊的单链表(具有头结点)为了解决问题引入了循环队列这里!!!! 只有链式队列的结构体以及一些基础操作!! 关于其他的结构,...原创 2018-06-27 22:29:08 · 363 阅读 · 0 评论 -
数据结构课程设计——链表合并
学校来题 因为这学期学了数据结构这门课,于是乎,学院便给了一个让我们课程设计的题目。 实现两个链表的合并 基本功能要求: (1)建立两个链表A和B,链表元素个数分别为m和n个。 (2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm 当n>m时,C=y1,x...原创 2018-07-02 16:36:21 · 4097 阅读 · 14 评论 -
栈应用的逆波兰表达式(优化)
上次写了一个逆波兰表达式的求值代码,但要求是将表达式用数组来表示,非常的不方便!!! 大家可以参考一下:https://blog.csdn.net/code_zx/article/details/80813110于是乎,我在上面做了一点点优化,将表达式用字符串表示,另外,数据与数据之间,数据与操作符之间,操作符与操作符之间均采用空格隔开!话不多说,我们需要求值的表达式为:ptr = “1...原创 2018-06-27 09:16:43 · 376 阅读 · 0 评论 -
栈应用之简单迷宫问题(C语言版)
迷宫在这儿——–&gt;(用二维数组实现) 栈的应用有很多,前面解决了括号问题和后缀表达式问题,迷宫便可以解决了!! 迷宫的解题思路有点绕,并且其栈的结构也有所改变!但是本次解决迷宫仍然用的普通的栈首先:迷宫如下(1表示通路,0表示非通路)0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 ...原创 2018-06-26 21:57:11 · 7613 阅读 · 2 评论 -
栈的应用之逆波兰表达式(后缀表达式)(C语言版)
逆波兰表达式的概念又称为后缀表达式,其特点是操作符位于操作数之后,目前,这儿只解决传入的字符串为逆波兰表达式的问题!!例如:表达式为: int ptr[] = { 12, 3, 4 , ‘+’, ‘*’, 6, ‘-‘, 8, 2, ‘/’, ‘-‘}; 已经将此表达式放入数组中存储 那么如何解决此类问题呢??思路在此 代码敬上//b、逆波兰...原创 2018-06-26 11:48:43 · 559 阅读 · 0 评论 -
两个变量交换的几种方法
变量交换的方法有哪些???原创 2017-12-08 12:41:06 · 486 阅读 · 0 评论