- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 弱符号与强符号
目标文件中的符号在链接中,将函数和变量统称为符号,函数名和变量名就是符号名。ELF文件中符号表的符号分类:1. 定义在本目标文件的全局符号,可以被其他目标文件引用;2. 本目标文件中引用的全局符号,却没有定义在本目标文件中;3. 段名,这种符号一般由编译器产生,它的值就是该段的起始地址4. 局部符号5. 行号信息,即目标文件指令与源代码中代码行的对应关系,它是可选的弱符号与强符号对于C/C++语言来说,编译器默认函数和初始化了的全局变量为强符号,未初始化的全局变量为弱符号
2022-03-27 23:12:23
409
原创 小猪喝水测毒
问题:给若干桶水,只有一桶水有毒,给若干只猪,可以测若干次,当给定猪数和测定的次数数后,可以最多从多少桶水中找到有毒的水。解题:假如有两只猪分别为A,B,只可以测一次,最多可以从4桶水中找到有毒的水:桶的编号编号为1,2,3,4;则,A-1,B-2,AB-3(A-1就是A喝1号桶的水);假如有两只猪分别为A,B,只可以测两次,最多可以从9桶水中找到有毒的水:构造一个矩阵:1,2,3 4,5,6 ...
2021-11-28 12:02:49
379
原创 无线天线技术
天线功能:将射频电信号转化为电磁波再自由空间中进行传输或者将空间中的电磁波转化为射频电信号。电磁波辐射:导线上有交变电流流动时,就会发生电磁波的辐射,辐射能力与导线的形状和长度有关。具体来说:1. 如果两个导线平行且距离很近,电场就会被束缚再两个导线之间,辐射很微弱;如果将两导线张开,电场就会散播到周围空间,辐射增强。2. 当导线长度远小于波长时,辐射很弱;当导线长度可与波长相比拟时,导线上的电流将大大增加,形成较强的辐射。...
2021-10-10 22:33:55
223
原创 数字信号处理
带通信号采样定理 以采样频率对带通信号进行采样,从采样值中无失真地恢复出来带通信号的充要条件是:采样频率满足: 其中:是指不大于的最大整数。...
2021-10-10 22:09:17
152
原创 C语言的模块化编程思想
变量声明与定义判断规则: 1. 如果省略了extern且具有初始化语句,则为定义语句。如int i = 10; 2. 如果使用了extern,无初始化语句,则为声明语句。如extern int i; 3.如果省略了extern且无初始化语句,则为试探性定义。如int i;头文件的搜索路径: 1. <>包含头文件 (1) 通过GCC参数gcc -I指定的目录 ...
2021-09-21 18:44:49
1092
原创 背包问题之方案
#include <iostream>#include <vector>#include <algorithm>using namespace std;//计算01背包问题,价值最大的方案数int getNumberOfSchemes(vector<int>& goodsVolume,vector<int>& goodsValue, int packetSize) { int n = goodsValue.siz.
2021-09-05 21:15:02
101
原创 KMP算法:模板字符串中包含几个指定的字符串
class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ int kmp(string S, string T) { // write code .
2021-09-05 00:38:31
97
原创 马拉车算法寻找字符串最大回文串
#include <iostream>#include <string>using namespace std;class Solution {public: int getLongestPalindrome(string A, int n) { // write code here char* s2 = (char*)malloc(2 * n + 1); int* tempLen = (int*)malloc((2.
2021-09-03 22:27:14
77
原创 如何编写一个优秀的GNU C的宏
题目:定义一个宏,求两个数的最大值。合格答案#define MAX(x,y) x > y ? x : y当运行如下语句时会出Bug:printf("MAX=%d",MAX(1!=1,1!=2));中等答案#define MAX(x,y) (x) > (y) ? (x) : (y)当运行如下语句时会出Bug:printf("MAX=%d",3 + MAX(1,2));原因:+运算符的优先级大于比较运算符>良好答案#defin.
2021-09-03 20:40:27
110
原创 C++ std::async()函数的使用
/*** @author jsq* @date 20210613* @function: 学习std::future模板类、std::async()、std::packaged_task()模板类、std::promise()模板类的使用* @notice:*/#include <iostream>#include <thread>#include <vector>#include <list>#include <mutex>.
2021-06-15 14:37:23
608
原创 C++ 条件变量类的学习
/*** @author jsq* @date 20210613* @function: 1.练习使用condition_variables类* 2.练习使用wait()成员函数* 3.练习使用notify_one()成员函数* @notice:* 1. 如果notify_one()唤醒时,另外的线程没有卡在wait()处,则该次唤醒失效*/#include <iostream>#include <thread>#include <vec.
2021-06-13 18:57:32
88
原创 C++ 创建多线程单例对象
#include <iostream>#include <thread>#include <vector>#include <list>#include <mutex>using namespace std;class MySigleton {public: // 借用call_once()创建单例对象 static void CreateInstance() { instance = new MySigleto.
2021-06-12 16:02:00
337
原创 使用Autotools自动生成Makefile的步骤
使用GNU Autotools创建Makefile的过程可以分为如下步骤:1. 编写元文件configure.ac2. 执行aclocal。aclocal将扫描configure.ac中使用的M4宏,并到系统中收集这些宏的定义,然后将这些宏定义 复制到源码顶层目录下的aclocal.m4中。3. 调用autoconf,将configure.ac中的宏展开为shell脚本形式的configure。4. 编写元文件Makefile.am。5. 调用automake。automake..
2021-04-08 18:26:05
520
原创 Linux内核装载ELF过程简介
简单的例程#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ char buf[1024] = {0}; pid_t pid; while(1){ printf("filename:"); scanf("%s",buf); pid = fork(); if(pid ==
2020-11-07 17:01:26
394
原创 C语言操作符深刻理解
副作用:该操作符执行完后会对操作数进行修改。操作符 副作用 ++,-- 不论是前缀还是后缀形式,这些操作符都会修改它们的操作数 = 包括所有其他的复合赋值符:它们都修改作为左值的左操作树 ...
2020-10-14 21:45:38
144
原创 linux 创建一个简单的文件系统
用户程序读取文件内容流程图1显示了用户程序读取文件内容的过程,其中绿色框部分为一个文件系统最基本的东西,其余部分为一些为了提高性能而加的模块。 图1建立一个小型文件系统小型文件系统基本就是实现了图1的绿色部分;具体的代码如下://tinyfs.h#ifndef TINYFS_H#define...
2020-10-11 17:29:47
3051
原创 linux字符设备驱动简单例程
字符设备驱动例程// cdev_module.c#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/errno.h>#include <asm/current.h>#include <l
2020-10-11 15:22:40
484
1
原创 查看进程的虚拟地址空间并打印
实验程序// memoryMsg.c#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/mm.h>#include <linux/sched.h>static pid_t pid;/*向模块传递参数,文件的权限为0644*/module_param(pid,int,0644);int prin.
2020-10-05 22:05:33
682
1
原创 linux 内核内存加载映射
linux 内核内存布局(以64位系统为例) 64位系统理论可寻址范围位2的64次方,但实际一般用不到,故linux的可寻址范围位2的48次方;其中128T为内核空间,128T为用户空间。编译器把源程序编译为各个段(Segment),段是由一个或多个节(section)组成。linux下可执行文件是ELF格式,因此可以通过以下命令查看各个段或节的内存地址:readelf -S memoryCkeck #查看可执行程序由多少个节以及每个节的地址readelf -l memoryC...
2020-10-05 21:50:10
241
原创 linux 段页内存管理介绍
linux中CPU给出虚拟地址转换到物理地址的过程以及访存次数注:1,2,3...表示逻辑地址到物理地址转换的步骤;黄色的标注的是发生访存的位置(图中标出的是在没有快表的情况下访存的情况);快表存在时逻辑地址到物理地址的转换过程1. 在CPU给出有效地址后,由地址变换机构自动地将页号P送入高速缓冲寄存器(也会使用到段号),并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的的页号,便表示所要访问的页表项在快表中;2. 直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中
2020-10-05 19:32:10
191
原创 Linux inode与文件数量关系介绍
http://blog.chinaunix.net/uid-24497725-id-5750121.htmlhttps://www.cnblogs.com/zhm1985/articles/13099581.html
2020-10-05 19:01:51
936
原创 C++实现FFT中的DIT
算法流程(以8点为例)蝶形运算单元及参数确定运行环境: vs2015及Python3.5#Complex.h#pragma once#include "iostream"#include <string>using namespace std;class Complex{public: Complex(double real...
2019-05-02 17:19:25
550
原创 Hadoop入门的几本书(中文版)
Hadoop实战中文版:链接:https://pan.baidu.com/s/1zPkhZTIRVYi8RWzHMGwfZQ 提取码:mnn8Hadoop权威指南 大数据的存储与分析-第4版:链接:https://pan.baidu.com/s/1NN7jN-sioYMP5yerxb4Q3g 提取码:ptxn...
2019-04-02 20:41:52
9987
8
原创 微星安装win10和Ubuntu 16.04双系统 + UEFI
提前准备 安装系统之前需要先确认一下自己的BIOS的默认启动方式 ,现阶段有Legacy和UEFI两种方式,安装双系统时这两种启动方式区别还是很大的。BIOS的启动方式是可以切换的,至于切换方式大家可以自行百度。本文讲UEFI启动方式,因为我的电脑是微星,默认UEFI启动。开始安装Windows 一般情况下,大家都是先安装Win 10,然后在Win 10下给Ubunt...
2018-11-04 21:08:40
7392
5
原创 Deep Learning for Computer vision
下载网盘:链接:https://pan.baidu.com/s/1cd4O6nOhiuHAC_PrnqqVJA 密码:9coz作者:Dr. Adrian Rosebrock
2018-09-24 11:42:49
1450
2
原创 Python package之imutils介绍
安装:pip install imutils注:安装该包依赖于NumPy、Opencv和matplotlib函数介绍:该包中主要5个函数,比使用直接使用Opencv库更加的便利用户Translationexample:# translate the image x=25 pixels to the right and y = 75 pixels uptrans...
2018-09-12 19:18:00
36781
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人