- 博客(24)
- 资源 (2)
- 收藏
- 关注
原创 Linux 进程调度与优先级
1. 调度策略主要三种:SCHED_FIFO 先进先出,不使用时间片,一直运行直到有更高优先级(SCHED_FIFO或SCHED_RR)任务到达或自己放弃; SCHED_FIFO级任务比任何SCHED_NORMAL级任务都优先得到调度; 多个通优先级的SCHED_FIFO任务轮流执行,只有运行任务主动让出,同优先级的任务才可以执行; 只要有SCHED_FIFO任务执行,其他级别较低的任务就只能等待它变为不可运行态才有机会运行; SCHED_RR: 有时间片,可以理解为带有
2021-03-22 22:54:36
546
原创 Linux线程--连接(joinable)和分离(detach or unjoinable)
1. 连接(默认状态)#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <sys/prctl.h>static void *test_thread(void *arg){ int i = *((int *)arg); while (i...
2019-08-17 23:11:36
1196
原创 Linux线程--设置线程名字
#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <sys/prctl.h>static void *test_thread(void *arg){ int val = *((int *)arg); struct sched_param...
2019-08-17 22:13:45
2443
原创 Linux 中断负载均衡
背景:1)在使用 Xilinx zynq SOC时,发现I2C中断不能得到及时响应,定位发现SPI中断过多引起的.2)irq 的默认smp_affinity是f, 按照理解中断应该在四个核上动态调整, 但只有CPU0在响应外部中断,其他核不响应中断.UG1046中如下解释, Linux SMP中断默认都在CPU0在响应;实验发现中断只会在小号核上响应(例如中断绑定在CPU1和CPU...
2019-06-21 00:15:17
1746
原创 GCC强符号与弱符号
GCC 强符号与弱符号1)编译器默认函数和初始化了的全局变量为强符号,未初始化的全局变量为弱符号2)强符号和弱符号都是针对定义来说的,不是针对符号的引用3)使用__attribute__((weak))定义弱符号extern int global_ext;int global_weak1;int global_strong = 1;int__attribute__((weak...
2019-02-28 21:31:31
510
原创 Linux proc文件系统
具体每项意义, 可参考:http://man7.org/linux/man-pages/man5/proc.5.html/proc/[pid]/proc/[pid]/cwd :链接到进程当前工作目录的软连/proc/[pid]/exe : 可执行文件的软连接/proc/[pid]/fd/ : 进程打开的文件句柄软连接, (0 is stan‐ dard input, 1 s...
2019-01-02 21:13:01
142
原创 linux清理cache方法
echo x >/proc/sys/vm/drop_caches 或者 sysctl-wvm.drop_caches=x内核vm.txt解释如下:Writing to this will cause the kernel to drop clean caches, as well asreclaimable slab objects like dentries and...
2018-12-20 22:35:53
738
原创 C实现继承、封装和多态思路
1、继承 把父类数据结构放在子数据结构的首位置,方便以后数据访问和数据的强转struct parent{ int info;}; struct child { struct parent *parent; int data;};2、封装 C语言结构体封装函数指针struct device { int value...
2018-09-16 22:35:18
269
原创 shell脚本简单使用总结
shell脚本可以简单理解为一个包含linux命令集合的文本(就是把在终端中敲得命令攒在一起,自动执行)1)说明使用什么shell,(#! 约定标记, 告诉系统这个脚本需要什么解释器(shell)来执行)#!/bin/bash2)使用#注释3)输出使用echoecho $nameecho "hello world!"4)变量(只能使用英文字母,数字和下划线,首个字符不...
2018-08-01 23:29:06
246
原创 Linux对CPU使用率和优先级的设置
cpulimit命令: cpulimit 命令的工作原理是为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。#限制应用程序 xxx.bin 的cpu使用率不超过 10%cpul...
2018-03-30 23:04:58
3068
转载 Linux命令行参数 - 和 -- 的区别
使用区别:第一种:参数用一横的说明后面的参数是字符形式(Unix 风格);第二种:参数用两横的说明后面的参数是单词形式(GNU 风格);第三种:参数前有横的是 System V风格;第四种:参数前没有横的是 BSD风格。...
2018-03-30 22:14:43
3079
原创 Linux常用命令
## 终端下显示文本# 一次显示整个文件cat filename # 将几个文件合并为一个文件cat file1 file2 > file# 显示行数cat -n filename# 查看一个内容较大的文件# ctrl+f(或空格键) 是向下显示一屏,ctrl+b是返回上一屏; Enter键可以向下滚动显示n行,要通过定,默认为1行; more filename...
2018-03-27 23:13:19
197
原创 堆栈(stack)的四种类型
堆栈严格来说应该叫做栈(stack),先入后出四种类型:满增栈、满减栈、空增栈、空减栈。满、空栈区别:根据当前指针所在位置是否有东西。满栈(full stack):栈指针指向最后压入栈的数据,数据入栈时,sp先减一(或加一)再入栈。空栈(empty stack):栈指针指向下一个将要放入数据的位置,数据入栈时,先入栈sp再减一(或加一)。增、减栈区别:根据堆栈的
2017-12-01 23:19:24
19021
1
原创 Python学习(1)——特点和基本思想
基本上每个人学习的第一门编程语言都是C语言,对编程的基本思维方式和语句都熟悉了,所以在学习新的编程语言时,可也跳过这些(不是真的跳过,还是要粗略看点的,尤其注意它和自己掌握最好一门语言的差异),将更多的经历去理解新语言的特点和其思想。一、特点 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 解释型:Python程序不进行预编译,在执行时先解释机器码
2017-04-02 21:27:47
2862
原创 判断CPU大小端
小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
2016-08-12 16:44:21
381
原创 编译错误error: stray‘\343’in program的解决方法
在ubuntu下使用gcc编译.cpp文件出现以下错误:getGcd.cpp:37:1: error: stray ‘\200’ in programgetGcd.cpp:37:1: error: stray ‘\200’ in programgetGcd.cpp:37:1: error: stray ‘\343’ in programgetGcd.cpp:37:1: error: st
2016-08-12 13:47:31
24895
原创 求最大公约数
求最大公约数有两种方法:辗转相除法(欧几里得算法)和更相减数法辗转相除法:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2(0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能
2016-08-12 10:28:10
394
原创 快速排序
快速排序介绍: 快速排序采用分治法(Divide-and-ConquerMethod)。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。步骤:1)从数列中挑出一个元素,称为 “基准”(pivot)2)分区(partition)操作,即所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在
2016-08-10 20:19:42
280
转载 中位数
/*一组数的中位数,就是把一组数从小到大排好后位居中间的那一个;如果有奇数个数,那么中位数就是中间的那个;如果有偶数个数,那么中位数就是中间两个数的平均数。那么有没有办法不用排序就可以求出中位数的方法呢?可以回想一下qsort中partition的作用:找出一个分界点,左边的数都小于分界点值,右边的数都大于分界点值。所以,只要不断地进行partition,直到分界点是left与rig
2016-08-10 14:19:55
413
转载 机器学习工程师需了解的10大算法
毫无疑问,机器学习/人工智能的子领域在过去几年越来越流行。由于大数据是目前科技领域最热门的趋势,基于这些大规模的数据,机器学习在预测和计算建议方面变得不可思议的强大。最常见的机器学习的例子就是 Netflix(一家在线影片租赁提供商)的算法,它能基于你过去看过的电影来推荐电影,或着 Amazon 的算法,它能基于你过去买的书,来推荐书给你。那么如果你想进一步了解机器学习,你应该怎样开始呢?对我
2016-08-10 09:18:30
866
转载 泰勒展开,傅里叶变换,拉普拉斯变换和Z变换的意义
Taylor展开在数学中,泰勒展开可以把一个函数f(x)展开成关于某一点的导数(0次到N次)的函数,这样就可以近似计算一个函数,得到在某点及其附近信息的近似描述。傅里叶变换傅里叶变换在物理学、数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学、海洋学、结构动力学等领域都有着广泛的应用(例如在信号处理中,傅里叶变换的典型用途是将信号分解成幅值分量和频率分
2016-08-07 08:59:34
7499
1
转载 机器学习几种主要学习方式
学习方式根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要 的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。监督式学习:在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防
2016-08-06 09:23:59
1173
原创 二分查找(C语言)
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。算发要求:1)必须采用顺序存储结构2)必须按关键字大小有序排列。#includeint binarySearch(const int *array, int start, int end, int key); int main() { int a[] = {1,
2016-08-01 17:23:51
408
原创 RSA公钥加密算法——加密和签名
RSA算法是第一个能同时用于加密和数字签名的算法。RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密?其实公钥和私钥都可以用来加密或解密---只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。公钥加密私钥解密是密送,保证消息即使公开也只有私钥持有者能读懂。私钥加密公钥解密是签名,保证消息来源是私钥持有者。加密
2016-07-26 09:21:48
2673
atf.tar.gz
2020-06-29
uCOSII在STM32F103ZET6移植Demo
2014-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人