自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (10)
  • 收藏
  • 关注

原创 使用xbindkeys设置鼠标侧键

使用xbindkeys设置鼠标侧键功能

2024-01-18 10:01:06 768

原创 kdump安装及调试策略(详细)

分析方法一般是复现同时查看日志,在内核启动参数中加入“console=ttyS0,115200 loglevel=9”,其中ttyS0为串口设备,可以修改为确定能使用的串口,最好使用主板上的串口,不要使用pcie转接的串口,这个需要驱动模块支持,可能会在进入kdump以后没有输出。如果类似如下的日志,特别是“No memory reserved for crash kernel”,说明crashkernel设置的不对,可以尝试调整大小和格式,也可能是内核不支持某些上述格式。2.1kdump服务启动失败。

2024-01-09 21:08:54 722

原创 龙芯3A5000LL与i7-10700的UnixBench跑分对比

龙芯架构: loongarch64字节序: Little EndianCPU: 4在线 CPU 列表: 0-3每个核的线程数: 1每个座的核数: 4座: 1NUMA 节点: 1CPU 系列: Loongson-64bit型号名称: Loongson-3A5000LLBogoMIPS: 4600.00L1d 缓存: 64KL1i 缓存:...

2021-11-01 10:31:42 3501 3

原创 leetcode学习(初级算法-数组)

C语言实现初级数组算法。1.删除排序数组中的重复项初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 (leetcode-cn.com)https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/实现代码:int removeDuplicates(int* nums, int numsSize){ int *i = nums, *end = nums + nums

2021-09-22 01:11:05 272

原创 龙芯平台stream编译错误问题解决

执行命令: gcc -O2 stream.c报错如下:Dump relocate record:stack top relocation name symbolat /tmp/ccn99HNZ.o(.text+0x90):...0xffffffffffffffa0 R_LARCH_SOP_POP_32_S_10_16_S2 `<nameless>'at /tmp/ccn99HNZ.o(.text+0x94):

2021-08-23 17:15:25 1558

原创 rpmbuild打包错误——needs unknown symbol *

环境,centos8,使用redhat的spec文件。解决方法:1.查找没找到的符号所在模块,查看是否在.config文件中打开。2.在rpmbuild/SOURCES/filter-modules.sh文件中有一个过滤名单,将出错的模块名添加到名单中,这样导出符号时会忽略这个模块,也不影响功能。要注意的是,在rpmbuild/SOURCES/目录下有好几个filter-*.sh文件,分别对应不同的架构,也需要修改。不然编译对应架构的包也会同样的错。下面是较为详细的分析过程:错误日志(部

2021-07-15 18:39:31 1586

原创 内存带宽测试程序——stream2-C语言版

stream2是stream的第二版,按照作者的意思,stream2对stream进行了扩展,更能揭示读写之间的差异,能在高速缓存层次结构的所有级别上测量持续的带宽。stream2的网址:http://www.cs.virginia.edu/stream/stream2/原版的stream2是用fortran语言写的,我没有找到C语言的版本,因此我参照stream2的fortran版和stream的C语言版做了stream2的C语言的版本。github仓库:https://github.com/

2021-03-04 19:02:44 968 7

原创 linux中pingpong测试程序的解读

总代码放在最后。抽象一点讲就是两个球员来回打球,一个发球,一个等待接球,最后计算完成指定数量的来回需要的时间。详细一点:程序定义了几个结构抽象出了pingpong游戏,如下://乒乓游戏的球员typedef struct{ int table; int player; int count; pthread_mutex_t blocks[2]; pthread_t thread;} player_t;//打球的乒乓球台typedef struct{ in

2021-02-03 13:45:32 2036

原创 linux运行中的一个错误解决

错误日志:ACPI Error: Table [PPTT] is not invalidated during early boot stage (20180810/tbxface-165)linux版本:4.19(注意:以下所有代码虽然是linux-4.19,但是与主线版本不同,只能作为参考)首先查询到此日志在linux代码中的位置,位于“drivers/acpi/acpica/tbxface.c”文件的164行,相关代码块如下: /* * Ensure OS early boot logi

2021-01-15 17:30:16 498

原创 bcc学习总结一

基本结构#导入库from bcc import BPF#使用BPF()执行bpf代码BPF(text="""#C语言代码段""")#对bpf的处理代码C语言代码编写不需要写main函数,目前知道可以写两种函数,以“kprobe__”开头的函数和自定义函数。bpf函数至少要包含一个参数“ctx”,即使不使用也应该存在,可以声明为“void *ctx”。以“kprobe__”开头的函数,其余的名称部分表示要检测的函数,比如“kprobe__sys_clone”,表示要检测的函数是“

2021-01-08 11:22:04 2752 1

原创 Fedora33关于ssh的问题解决

前言:最近给笔记本装了fedora33,用着很不错,装了deepin的dde桌面,虽然bug不少,但是很喜欢dde的桌面风格。使用过程中发现了一个问题,如下:我在重装系统前,保存了用户目录的".ssh"文件夹,省的以后重新在github、gitee上传公钥,装好fedora以后,直接将“.ssh”文件夹覆盖了过去,当时没发现什么问题,但是后来从gitee上clone仓库的时候,发现不能克隆,提示公钥不对。执行命令“ssh -T [email protected]”之后,会报如下错误:[email protected]

2020-12-29 12:01:17 1339 2

原创 一些shell脚本,记录

~以下脚本与linux内核编译相关一、为Makefile文件添加扩展版本号同时删除生成"*.bz2"文件的代码#!/bin/bash#本脚用途#1.为Makefile文件添加扩展版本号,例:clemm -test#2.使用“make binrpm-pkg”生成rpm包时禁止产生/boot/*.bz2文件set -e #出错则退出脚本mkfilename="Makefile" #目标文件keyv="EXTRAVERSION =" #扩展版本号关键字nline=$(cat -n "

2020-11-20 18:08:37 157

原创 关于git的用法

本文用于记录自己已知关于git的用法git clone '仓库链接'克隆git仓库,常用HTTPS、SSH等协议。HTTPS协议只要有链接,无需其他条件。而SSH协议,需要先上传公钥到git网站上,本地需要有对应的私钥才能克隆,方法见文章最后。例:git clone https://github.com/lindorx/train.gitgit clone [email protected]:lindorx/train.gitgit log本命令可以打印所有commit。commit类似

2020-10-04 03:53:57 267

原创 UnixBench测试Pipe-base Context Switch测试

UnixBench测试Pipe-base Context Switch测试本文关于是关于此项测试的介绍。进入UnixBnech目录,在终端执行如下命令:./Run context1将会开始进行Pipe-base Context Switch测试。此项测试主要测试上下文切换的能力,执行时,由perl语言编写的Run程序会调用gms目录下的context1程序,运行结束后会将一段字符串写入results目录下的log文件,为测试结果,然后Run读取这段字符,将其转换为分数显示出来。context1

2020-09-19 22:06:33 887

原创 手动编译安装Linux内核-笔记

安装内核的方法1.下载内核源代码可以从官网找到,地址:https://kernel.org,点击[tarball]获取tar.gz包。使用tar -xzvf 解压,以下是其他一些常用压缩包的解压命令:tar -xvf file.tartar -xzvf file.tar.gztar -xjvf file.tar.bz2tar -xZvf file.tar.Zunrar e file.rarunzip file.zip2.进入内核目录 首先配置编译文件.config,也可以从当前...

2020-09-06 19:24:25 509

原创 C语言实现的json解析程序

只有一个头文件和一个源文件,仅使用C语言标准库。作用就是读取json文件,然后解析为若干个互相关联的结构,结构如下:typedef enum json_st { djson_string = 1, djson_number, djson_object, djson_array, djson_bool, djson_null}json_st;struct js {//json字符串 //环链 void* next; json_st nexttype; void* prev;

2020-06-23 21:23:43 3622

原创 Qt串口操作-打开串口

Qt使用QSerialPort来操作串口,使用时需要在.pro文件中加入:QT += serialport然后使用#include引入头文件。(我不明白为什么Qt要使用这样的设计,完全可以只依靠引入头文件来实现)以下为打开串口的代码:#include "mainwindow.h"#include <QApplication>#include<QDebug>#include<QSerialPort>#include<QSerial

2020-06-11 03:27:59 4847

原创 一个Qt Creator的bug:C2001:常量中有换行符

这个错误以前我所见过的只在Visual Studio中发生过,一般是编码有问题,这个我至今无解,明明都是utf-8,一个可以用,另一个就会出错。一般在自己的电脑运行别人代码文件时,最好配置成完全相同的环境,否则指不定出什么错。解决方法:编译环境换成...

2020-05-30 19:01:45 309

原创 一个简单的文件系统

此文件系统暂时命名为lxfs。使用B+树作为管理结构,但是为了可以容纳更多信息,做了一定的修改。下面是传统的B+树,信息全部保存在叶结点中,通过内部节点进行索引,每一个父级节点的元素索引一个叶节点。...

2020-05-01 04:35:02 1590

原创 makefile中使用powershell && 使用powershell进行数学计算

在makefile中要使用shell命令,格式为:$(shell 命令)。例如:$(shell pwd),用来获取当前路径。但是只有在Linux下直接使用有效,在Windows下使用会出现错误,不过,GNU/make提供了指定shell的功能。例如,如果想要将cmd作为shell,可以这样:SHELL=cmd当然,使用方法也要稍微修改一下,比如获取当前路径,由于cmd中没有pwd命令,但可...

2020-04-20 23:46:20 2448

原创 x86CPU中TSS

TSS为intel为了方便操作系统管理进程而加入的一种结构,用法也很简单。TSS是一个段,即一块内存,这里保存要切换的进程的cpu信息,包括各种寄存器的值、局部描述表ldt的段选择子等,切换时cpu会将这段内容存进各自对应的寄存器,然后就完成了切换。(任务切换或者说CPU状态更新实质上就是改变各个寄存器的值)//32位TSS段结构struct TSS32{ int backlin...

2020-04-08 00:39:03 1301

原创 尝试做一个简单的文件系统

使用B+树作为文件系统的主要数据结构,用来储存文件描述符,文件描述符用来储存文件的具体信息(在磁盘上的位置,大小,时间等)。文件描述符参考了FAT32中用来描述文件信息的结构,但有较大的区别。每个文件描述符32占用字节,分为两种:用于描述符文件信息的描述符和用于储存文件名的描述符,两种结构以及相关结构如下://文件属性typedef struct { byte dpl : 2;...

2020-01-17 16:17:19 812

原创 GNU-make 传递命令给子makefile

例如主makefile中由clean目标,如果想要通过make clean执行子目录中makefile的cle,可以这样写#假设子目录为test,在test目录里的makefile由cle目标clean: cd test && make cle这样可以执行子makefile的任意指定目标。(注,网上有一些文章说使用";",但是测试后并不行,应该是"&...

2019-12-25 10:44:26 561

原创 windows下使用make的一些方法(不定期更新)

在windows下可以使用MinGW的make,安装方法网上有很多,不做阐述,一些按照linux下编写makefile可能会在Windows下出错,以下为我遇到一些可以用来解决的方法:1.process_begin: CreateProcess(NULL, pwd, ...) failed.显示这条一般是在makefile中使用了"$(shell pwd)",但是shell是linux...

2019-12-25 10:31:17 4193

原创 C语言使用MCI接口播放声音

2017-12-5 20:58代码如下:#include<iostream>#include<windows.h>#include<Mmsystem.h>#pragma comment(lib,"winmm.lib")using namespace std;void main(){mciSendString(L"ope...

2019-12-18 02:27:50 1078

原创 如何让gcc编译中断函数

在x86中,一般函数通过"call"指令调用,"ret"指令返回,但是中断函数不同,它在中断或者异常发生时自动切入(或者使用"int"指令),此时cpu会向栈中压入一堆寄存器来保护现场,如果是异常,还会多压一个错误代码,因此编写中断函数返回时要使用"iret"指令,但是gcc默认是无法编译出iret指令的。当然,有一些IDE自定义了一些东西可以用来编译中断函数,也有一些人会直接用内联汇编解决,但用...

2019-12-18 02:19:22 2239

原创 使用python写的gcc下载脚本

本脚本通过访问http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/pool/main/g/gcc-9/来获取要下载的内容。目前只能在上面的网址下载gcc-9的deb包,可以下载指定Ubuntu版本和架构的gcc9组包。如果你无法通过apt-get更新gcc,可以尝试用此脚本下载包,然后在终端进入下载目录,使用"sudo a...

2019-12-17 11:07:01 352

原创 C语言编程时可能会发生的错误(不定时更新)

VS提示"CL.exe已退出,代码为2",检查是否有函数没有写返回值。某个文件内的全局变量不要放在它的头文件中,不然在主文件调用时会引发重定义错误。定义结构体对齐时,#pragma pack(n)和#pragma pack()要成对使用,将结构放在它们中间,n取值为1,2,4,8GCC:如果出现下面的错误,说明内联汇编出错,如果内联汇编没有添加约束(即没有使用“:”),则寄存器...

2019-12-16 02:08:22 375

原创 基数树的简单实现-二

对之前的基数树做了修改,减少空间占用。头文件:#pragma once#include<stdlib.h>#include<stdio.h>#define MEMPAGE 4096#define INIT_POOL_SIZE (MEMPAGE*1) //初始内存池大小#define RADIX_INSERT_VALUE_OCCUPY -1 //该节点...

2019-12-13 01:11:13 360

原创 基数树的简单实现

基数树是一种比较节省空间的树结构,下图展示了基数树的结构,其中key是树的构建方式,在这里,key是一个32位的整数,为了避免层数过深,所以使用两位代表子节点的索引,基数树就是依据二进制串来生成树结构。值value被储存在叶节点。假设key=0X12345678,下图依据key来建立一棵树:由与key是32位的,这里使用2个位用于建树,因此如果要查找一个值,最多只需要跳转16次就一定可...

2019-12-07 02:38:19 2231

原创 在C语言中如何访问堆栈

堆栈一般是用来保存变量之类的东西(静态变量在内存中,虽然堆栈就是内存的一部分,但为了防止歧义,还是分成两部分来说),一般情况下没必要去故意读取堆栈的值,变量用变量名就可以直接访问,但我曾经想要读取函数返回后代码继续执行的地址,因此想到了来读取堆栈(函数调用时,会向堆栈中压入参数和下一个代码执行的地址,这样就可以在函数返回后继续执行)。先来测试一下我们能否读取堆栈(或者说数组越界访问会怎么样):...

2019-07-12 10:01:29 2955 2

原创 把RNN封装成一个函数

2017-11-26 20:31RNN(反馈式神经网络),即前面构建的那几个网络。由于它们都是反复使用相同的方法构建的神经网络,既费力又费时,鉴于每次构建的基本步骤都一样,于是我把构建的操作函数化,只要提供相应的参数,让计算机自动生成合适的神经网络。代码在最后,封装成的函数命名为“RNN”, 共有5个参数:RNN( X , Y , M , A...

2019-07-04 18:12:43 378

原创 构建一个六层的前馈神经网络

2017-11-23 22:41依据上篇文章的推导,设l(n)层的第x个神经元为l(n)_(x),其误差值为delta_l(n)_(x),则有以下公式:delta_l(n)_(x) = delta_l(n+1) * w(n+1) * f'(netl(n)_(x))其中f'(netl(n)_(x))为神经元delta_l(n)_(x)激活函数的导数,w(n+1)为delta_l(n)_(x...

2019-07-04 18:11:50 816

原创 构建一个四层的人工神经网络

2017-11-23 03:50从下午推导公式到现在,成功完成了四层神经网络的构建和相关代码的编写,用这个神经网络和之前三层的神经网络相比较,发现了一些比较有趣的现象(三层的和四层的神经网络暂时简写为T_rnn和F_rnn,)。首先,当训练次数较少时,T_rnn的结果更接近理想值,但两者相差并不大,训练次数增加后,F_rnn更接近理想值。其次,之前忘了给F_rnn写更新b的代码...

2019-07-04 18:10:02 6034 9

原创 接《构建一个简单的人工神经网络》——部分代码

2017-11-22 01:49前言:代码为python3,这是一个三层的神经网络,有两个输入,两个输出。import numpy as npdef sigma(z): return 1/(1+np.exp(-z))def sigma_da(a): return a*(1-a)def run(): i1,i2=3,8#输入 o1,o2=0.2...

2019-07-04 18:08:14 276

原创 构建一个简单的人工神经网络

2017-11-22 01:28人工神经网络是进行机器学习的基础,模仿生物神经元的工作方式构建神经网络,让计算机拥有“自我学习“的能力。人工神经网络的诞生具有革命性的意义,”自我学习“是其最大的优点,通过适当的训练,它语音识别、图像识别、人机对话、大数据方面发挥的了巨大的作用。神经网络的概念早在数十年前就已经提出来了,但限于当时计算机的计算能力,还无法应用。近些年来,随着计...

2019-07-04 18:06:18 2724

原创 Python语言之numpy库

2017-11-20 01:23numpy库是python中使用非常广泛的一个数学库,特别是在数组、矩阵方面的运算有非常强大的支持。导入方法通常为:import numpy as np #很多人都习惯在导入时把numpy命名为np,这里也不例外。调用里面的函数需要在前面加上”np.“,如np.pi、np.abs()等等,也可以这样导入:from numpy import* ,这样就可...

2019-07-04 18:05:02 751

原创 idx-ubyte文件解析

2017-11-19 02:19Mnist手写数字数据库是著名的神经网络入门级训练集,它图像文件的后缀名一般为idx3-ubyte,图像标签文件后缀名为idx1-ubyte。它分为两种图像集,一个训练集,一个测试集。它内置的图像大小为28*28,可以在这里下载:http://yann.lecun.com/exdb/mnist/一共四个文件,训练集和它的标签集,测试集和它的标签集,解析...

2019-07-04 18:03:55 18299 1

原创 接上一篇文章,边缘检测的源代码

2017-11-18 00:59'''原来写的代码太过凌乱,又花了5个小时重写了代码,把大部分功能定义成了函数,代码总行数比原来少了10%。幸好是python语言,如果用c语言,估计得写三四百行,python的优点就是语法简单,比其他语言更贴近人类的语法,这些代码中也使用了pythonic,使代码可读性提高了一点'''import numpy as np#导入numpy库,并命名...

2019-07-04 18:02:21 257

原创 利用sobel算子进行边缘检测

2017-11-18 00:31前言:本文章中的一部分代码写得比较仓促,虽然比原来写的结构性更强,但仍有缺陷,下一篇中的代码经过了稍微修改。Sobel算子是整像素图像边缘检测中最重要的算子之一,该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:...

2019-07-04 17:58:18 18790 2

LFS-SYSD-10.0-中文.pdf

这是lfs-systemd版的中文版;LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的linux,不单单是个性的桌面。

2021-03-12

xv6-code-v.docx

mit 6.828课程xv6系统的源代码,制成了可打印的doc文档形式,格式:两列,字体大小-小五,共84页,如果正反面打印的话,42张A4纸就够了。

2020-01-09

cmake-3.14.2-win64-x64

cmake,用来帮助开发人员编译由c/c++编写而成的文件,cmake-3.14.2,windows64位。

2019-04-20

z00689嵌入式linux开发教程第二版

嵌入式linux开发,arm处理器的学习,arm汇编学习,里面有各种习题。

2019-04-20

KolibriOS软盘镜像

KolibriOS是一个纯粹用汇编写成的操作系统,拥有完整的图形化桌面以及一定数量的应用软件,这是它的软盘镜像,只有1.44m

2018-10-07

KolibriOS内核部分源代码

KolibriOS是一款完全用汇编语言写成的操作系统,拥有图形化的桌面及一定数量的应用软件,这是这个系统内核部分的代码,总体代码即使压缩后也比较大,上传不了,先传内核的。

2018-10-07

KolibriOS-光盘镜像

KolibriOS是一个用纯汇编语言携程的操作系统,拥有图形化的桌面以及一定数量的应用软件、游戏,全部用汇编写成,这是32位的光盘镜像

2018-10-07

python-3.7 win_32位安装包

python-3.7安装包,用于安装python3开发环境,windows版

2018-05-15

自己动手写编译器链接器.pdf

本书讲述了一个真实编译器的开发过程,源语言是以c语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言,目标语言是大家熟悉的Intel x86机器语言。

2017-09-28

visual c++从入门到精通第三版

Visual c++从入门到精通,讲解了c++的构成,如何编写c++程序,让你掌握visual c++图形界面的熟练应用,学会高效开发程序。

2017-09-10

空空如也

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

TA关注的人

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