自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 Windows/Linux的cmake+ninja使用

一、前言因为机缘巧合下,需要使用windows下的cmake使用,因为本身有Linux下进行cmake,所以本篇文章做做总结。Ninja是一种类似GNU make的编译系统。 就像make有Makefile,它也有自己的编译配置文件。 相对来说,Ninja文件没有分支、循环的流程控制,本质上就是纯粹的配置文件,所以要比Makefile简单得多。二、Linux安装sudo apt install cmake make ninja(相对简单,使用apt-get进行安装即可)三、Windows环境安装

2021-03-08 00:31:09 10747 1

原创 Ubuntu上搭建dns服务器

一、前言DNS(Domain Name Service) 域名解析服务,就是将域名和 ip 之间做相应的转换。DNS系统作用:• 正向解析:根据域名查找对应的ip地址• 反向解析:根据ip地址查找对应的域名主要在内网环境下,可能搭建多个服务器地址,如svn地址、git地址、项目管路系统地址等,若是使用ip记录的话,容易遗忘,所以选择域名方式好记住,不用特意去记ip地址。二、安装软件sudo apt install bind9三、修改配置文件,实现dns功能修改主配置文件/etc/bind

2021-03-07 14:23:02 2287 1

原创 scons的使用

1、支持多目录编译(类似于CmakeLists.txt),将多个目录的串起来Sconconstruct在最顶层SConscript文件可以层层包含Sconscript([‘common/SConscript’,‘plugins/Sconscript’])在common下:Sconscript([‘src/SConscript’,‘include/SConscript’])在plugins下:Sconscript([‘display/SConscript’,‘system/SConscript’

2021-01-02 18:36:39 1181

原创 Linux设备驱动:USB设备驱动

1、Linux设备驱动设备驱动时操作系统内核和机器硬件之间的接口,为应用程序屏蔽了硬件的细节,由一组函数和一些私有数据组成,结构体内包含设备驱动所需要的所有资源,即驱动器对象所拥有的属性及成员。应用程序看待硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要完成以下功能:对设备进行初始化,使设备投入运行和退出服务;把设备从内核传送到设备和从设备中接受数据;以及检测设备出现的错误。设备分为:字符、块、网络设备。字符设备是指存取时没有缓存的设备;块设

2020-12-13 20:43:53 600

原创 搭建个人移动图书馆——Calibre-web

一、前言之前看到同学那里用群晖搭了个移动图书馆,而自己也有个云服务器,所以借此用在云端搭建移动图书馆,用来存储名著、计算机书籍以及其他书籍等。于是,查找相关的资料,决定用Calibre-web的二进制方式进行安装。Calibre 是一位印度大佬编写并维护的电子书管理软件,集成了电子书管理、分类、编辑、转换、搜索等等所有能想到的功能二、安装过程2.1 Calibre下载sudo -v && wget -nv -O- https://download.calibre-ebook.com

2020-11-29 20:46:48 6718 1

原创 Linux桌面基础2:X Window Manage——Xfce4

一、前言一个桌面的使用需要X Windows Server + X Windows Manager,提供桌面背景、任务栏、桌面设置等。X Server 还有一个重要的工作,那就是将来自输入设备 (如键盘、鼠标等) 的动作告知 X Client,X Client 最重要的工作就是处理来自 X Server 的动作,将该动作处理成为绘图数据, 再将这些绘图数据传回给 X Server。目前主要的X Windows Manager有:MATE coreLubuntu coreBudgie Desktop

2020-11-25 01:17:28 1660

原创 Linux桌面基础:X Window System——Xorg

一、前言Unix Like 操作系统不是只能进行服务器的架设而已,在美编、排版、制图、多媒体应用上也是有其需要的。 这些需求都需要用到图形接口 (Graphical User Interface, GUI) 的操作的, 所以后来才有所谓的 X Window System 这玩意儿。那么为啥图形窗口接口要称为 X 呢?因为就英文字母来看 X 是在 W(indow) 后面,因此,人们就戏称这一版的窗口接口为 X 啰,这边X Server使用Xorg。一个桌面的使用需要X Windows Server + X

2020-11-25 00:37:50 6382 1

原创 LFS创建和Ubuntu Server的安装

一、LFS简介 这部分内容去年已经完成的,只是部分东西整理下,记录下一些东西。 LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的linux,不单单是个性的桌面。《LinuxFromScratch》(LFS)是杰勒德·比克曼斯等人编写的安装Linux的教科书,描述了从源代码编译Linux系统的方法。这本书可以

2020-11-22 22:51:57 631

原创 Linux内核模块it87出错

一、前言硬件上通过it87芯片进行风扇转速的读取。硬件上存在it87芯片,但是Linux系统加载it87.ko(modprobe it87)模块时,提示“modprobe: ERROR: could not insert ‘it87’: No such device”。未找到it87相关的设备,it87模块无法加载,导致风扇转速读取失败。二、问题原因硬件上确实存在it87芯片,但是无法进行加载,通过分析dmesg内核调试信息(Unsupported chip (DEVID=0x8785或者0x8784

2020-10-05 00:35:12 2856 1

原创 Linux使用系统命令制作initrd镜像

一、前言两个重要的命令:update-initramfs、mkinitramfs在/boot下创建initrd.img(该两个都是脚本文件).编译内核的最后一步执行make install时会调用update-initramfs,update-initramfs继而调用mkinitramfs生成initrd.img,省去了太多initrd的过程,已经是可用、完整的可引导文件,直接省去了人工操作的过程——不过还是手动创建才能知道整体过程。initrd目录形式如下:ls initrd_tmpbin c

2020-09-20 12:54:49 1605 1

原创 Linux——initrd根文件挂载分析

一、initrd介绍对于使用initramfs镜像的ramdisk来说,这个rootfs即为ramfs(ram file system),它是一个在解压initramfs镜像后就存在且挂载的文件系统,但是系统启动之后用户并不能找到它,因为在内核启动完成后它就会被切换到真实的根文件系统。前文也提到过,在systemd眼中,initramfs构建的也是一个系统,只不过是虚拟系统,最终systemd会从这个虚拟系统中切换到真实的系统中,切换的内容主要包括两项:切换根分区,切换systemd进程自身。init

2020-08-30 16:10:29 1741

原创 python爬虫实践

一、python环境安装安装python -m pip install --upgrade pip出现如下 data = self.read(amt=amt, decode_content=decode_content) File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\pip\_vendor\urllib3\response.py", line 430, in re

2020-08-02 01:36:12 362

原创 Vim使用常见插件安装

一、前言各种IDE工具有代码提示以及可以方便切换到各个文件,所以也想在VIM上实现近似的功能。因为目前Linux开发都是在远程连接服务器进行开发,常用的远程连接工具:xshell、putty、MobaXterm等。虽然大部分Linux开发还是使用纯VIM开发,但是对于提高效率来说,安装需要的插件,仍然是有必要的。本文主要讲述常用插件的安装:Bundle、YouCompleteMe、nerdtree、pathogen、tagbar、a.vim等。二、安装过程1、安装Bundle插件——插件管理

2020-07-04 15:03:13 610

转载 C++设计模式

1、工厂模式分类:简单工厂、工厂方法、抽象工厂简单工厂:需要工厂类进行判断,从而创造相应的产品;当增加新的产品时,就要修改工厂类。有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核,客户需要什么样的处理器核,一定要显示地告诉工厂。缺点:要增加新的核类型时,就要修改工厂类,违反了开放封闭原则:软件实体(类、模块、函数)可以扩展,但是不能修改(允许平行扩展,不能修改类核方法的纵向扩展)工厂方法:需要再开设一个工厂专门用来生产B型号的单核,而原来的工厂专门用来生产A型号。这时,客户要做的是

2020-06-27 13:52:06 342

原创 搭建个人网盘——kodexplorer(可道云)

一、前言如今各个网盘出现限速或者不可使用,为了防止百度云盘出现下载速度较慢,较大数据传输有多个可用的传输方案,利用个人服务器搭建私有云盘。在机缘巧合下,kodexplorer出现在我的面前,具有在线文件管理系统、简单轻量级的自建网盘的工具。二、kodexplorer介绍可道云KodExplorer,是基于Web技术的私有云和在线文档管理解决方案。用户仅需通过简单的部署,即可使用可道云快速完成私有云/私有网盘/在线文档管理系统的部署和搭建。提供了类 Windows 用户界面,延续了 Windows 平台

2020-06-14 15:44:26 7253

原创 云服务器上搭建个人云笔记——leanote

第二篇:搭建个人云笔记一、前言目前市面上存在多个云笔记,如onenote、印象笔记、有道云笔记、为知笔记等,像onenote可以建立多个笔记本、多个分区,风格与word编辑差不多,可以马上上手,但是存在因OneDrive服务器不在内地,存在网络更新慢或者无法访问问题,导出为.one,docx,pdf和.mht格式;印象和为知慢慢转向会员制,限制太多,习惯了“免费”真香,暂不考虑;有道云笔记在Firefox浏览器不能访问,而且导出为PDF格式和有道云格式文件。而本人之前大部分使用onenote进行记笔记,

2020-06-07 02:23:39 3623

原创 云服务器上搭建个人博客——wordpress

第一篇:搭建个人博客一、WorkPress介绍WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统;WorkPress具有插件框架和模板系统;WorkPress是目前Internet最流行的博客系统;借助第三方的插件、模板,用户可以实现多样化的个性化功能。二、WordPress特性用户管理:它允许管理用户信息,例如创建和删除用户,更改密码和用户信息。媒体管理:用于管理媒体文件和文件夹工具,您可以轻松上传、组织和管理网站上的媒体文件。主题系统:它允许修改网站视

2020-06-02 22:34:53 1226

原创 转战云服务器

一、前言云服务器一直都是自己想去“玩玩”的东西,学习过网络编程或者Django开源框架,奈何原先感觉太过于麻烦,未去尝试。但是最近公司使用OneNote访问受限,想搭建云笔记,而且云服务的价格也便宜(各个厂家都有做活动)。所以这个月下定决心,从购买云服务器——>搭建服务器——>搭建个人博客,以后还会有搭建云笔记、搭建Discuz论坛等,玩转云服务器。二、目的1、个人博客——分享技术、学习心得;2、云笔记——主要是记录生活、工作中的容易遗忘的内容;3、开发有趣的东西(待续);三、云服务

2020-05-29 08:13:37 296 1

原创 ubuntu双系统安装(win10基础上)

1、查看当前bios模式win10上点击cmd,输入msinfo32,得到下图:目前大部分的win8、win10系统支持UEFI方式。5、修改BIOS启动顺序:windows单引导选Windows Boot Manager;双引导选择EFI Ubuntu,由linux的grub引导选择引导系统。window引导暂无法使用easyBCD2.3进行添加ubuntu引导项。使用双系统,则使用...

2019-06-08 15:12:14 371 1

转载 linux启动运行过程

一、linux系统开机启动过程1、开机自检,加载BIOS;2、读取MRB;3、Boot Loader Grub引导菜单;4、加载kernel内核;5、init进程根据inittab文件夹设定运行级别;6、init进程执行rc.sysinit;7、启动内核模块;8、执行不同级别的脚本程序;9、执行/etc/rc.d/rc.local;10、执行/bin/login程序,启动min...

2019-05-07 12:23:35 322

原创 CMake基本操作

CMakeLists.txt的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的,参数和变量是大小写相关的,但,推荐全部使用大写指令。符号”#”后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格或分号进行间隔。变量使用${xxx}引用。常用cmakelists.txt文件构建cmake。如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeList...

2019-05-02 10:30:46 290

原创 HTTP长连接和短连接

一、概念HTTP长连接:客户端和服务器建立一次连接之后,可以在这条连接线上进行多次请求/响应操作。一般会设置过期时间,也可以不设置。步骤如下:连接->数据传输->保持连接(心跳)->数据传输->保持传输(心跳)->…->关闭连接HTTP短连接:客户端和服务器进行一次HTTP请求/响应之后,就关闭连接。所以一次请求/响应后就需要重新建立连接。步骤如下:连接...

2019-04-20 18:04:45 615

转载 ubuntu系统与linux通过samba远程登录,用SourceInsight查看源代码(转)

一、samba下载1、ubuntu上samba安装:sudo apt-get install sambasudo apt-get install smbfssudo apt-get install samba4(实际可不安装)按提示安装完成2、将需要共享的用户目录权限设置为任何人都可读/写/运行:chmod 777 /home/用户名/目录3、添加一个samba的用户以及密码su...

2019-04-20 14:11:30 1388

转载 linux信号和信号量(转)

一、EAGAIN信号在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。  从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读,...

2019-04-17 19:46:14 1569

原创 linux网络编程基础知识2

一、火狐浏览器若遇到访问超过普通端口80时,出现此地址访问受限的提示的话,可修改火狐浏览器的about:config,新建->字符串,输入network.security.ports.banned.override,取值范围设置为0~65535(简单方法,取全范围)二、循环遍历目录头文件添加#include <dirent.h>#incldue <stdded.h&...

2019-04-17 19:45:05 162

原创 多线程——主线程和子线程退出关系

分清两个概念主线程和当前进程的关系:当前进程由主线程和若干个子线程组成。若当前进程退出后,子线程也会跟着一起退出;若只是主线程退出,仍要分两种情况分析:实际上主线程退出后子线程的状态依赖于它所在的进程,如果进程没有退出的话子线程依然正常运转。如果进程退出了,那么它所有的线程都会退出,所以子线程也就退出了。查看进程、线程方式进程:ps -elf | grep "对应的文本内容"ps au...

2019-04-10 17:16:23 3860

原创 多进程——孤儿进程或者僵尸进程解决方法

多进程中,难免会出现父进程先于子进程退出或者子进程先于父进程退出,为此分为两种情况,若父进程先于子进程先退出,则子进程相当于孤儿进程;若子进程先于父进程先退出,则子进程相当于僵尸进程。fork在 <unistd.h>文件中定义如下:使用pid_t fork(void)函数创建子线程,若fork返回为-1,则调用失败;若fork返回为0,相当于是子线程;若fork大于0,则为父进程。...

2019-04-10 14:35:25 1063

转载 Linux下的tar压缩解压缩命令详解(转)

tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的...

2019-04-01 15:09:03 174

原创 linux网络基础知识1

1、OSI系统七层模型:物——物理层(双绞线,光纤)数——数据链路层(数据的传输和错误检测)网——网络层(为数据包选择路由器)传——传输层(提供端对端的接口)会——会话层(解除或建立与其他节点的联系)表——表示层(数据的加密,代码转换)应——应用层(文件传输、电子邮件,文件服务,虚拟终端)2、IP四层模型数据链路层——以太网帧协议网络层——IP协议传输层——TCP/UDP传输...

2019-03-24 12:42:11 686

转载 C/C++ 常用类,函数库

C/C++ 常用类,函数库CArchive类:用于二进制保存档案CBitmap类:封装Windows的图形设备接口(GDI)位图CBrush类:封装图形设备接口(GDI)中的画刷CButton类:提供Windows按钮控件的功能CByteArray类:该类支持动态的字节数组CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中CColorDialog类:封装标准...

2019-02-24 23:12:26 528

原创 2019年C++再拾起

一、前言已经将C++丢了两年时间了,出来工作后,只与C语言打交道,学的又不深,需重新学习C++远征攻略,地址:http://www.imooc.com/course/programdetail/pid/42以下按课程学习:二、C++远征之起航篇1、数据类型 与C语言相比多个bool类型;2、C++的I/O方式cout&amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp;l

2019-02-24 11:41:46 724

原创 linux设备驱动程序-第六章2(阻塞IO和高级休眠)学习总结

一、前言在第三章中,我们已经讨论了如何实现驱动程序的read和write方法。现在谈论另一种重要问题:如何驱动程序无法立即满足要求,该如何响应?调用程序通常不会关心此类问题,程序员只会简单调用read和write,然后等待必要的工作结束后返回调用,因此,在这种情况下,我们驱动程序应该(默认)阻塞该进程,将其置入休眠状态直至请求可继续。我么介绍过的函数可以满足许多驱动程序的休眠请求。但是在某些情...

2018-12-16 21:30:44 634

原创 linux设备驱动程序-第六章1(ioctl操作)学习总结

一、前言在第三章,我们已经构建了一个结构完整的可读写设备驱动程序。但一个实际可用的设备除了提供同步读取和写入之外,还会提供更多的功能。而现在我们拥有调试工具,掌握相关的调试方法,并且对并发问题有了坚实的理解。这样,构建更高级的驱动程序相对容易了。在本节,我们实现ioctl系统调用,他用于设备控制的公共接口。二、ioctl除了读取和写入设备,大部分驱动程序还需要另外一种能力,即通过设备驱动程...

2018-12-09 14:35:57 1001

原创 linux设备驱动程序-第五章(并发和竞态)学习总结

一、前言目前为止,我们很少关注并发问题——亦即,当系统试图一次完成多个任务时会产生什么结果。但是,对并发的管理是操作系统编程中核心的一个问题。为了响应现代硬件和应用程序的需求,Linux内核已经发展到同时发展更多事情的年代了。设备驱动程序开发者必须在开始设计时考虑并发因素,并且还必须对内核提供的并发管理设施有坚实的理解。竟态会导致共享数据的非控制访问。发生错误的访问模式,会产生非预期的结果。因...

2018-12-08 19:38:48 305

原创 linux设备驱动程序-第三章(简单scull)学习总结

一、前言花了一整天时间整理下《linux设备驱动程序》第三章的例程和总结,还是要与实践相结合,才能学习到知识。开发环境介绍:使用Unbuntu12.0,内核使用2.6.35.3.以下是所需的文件:|scull.c|驱动主要实现方式||scull.h|定义结构体和函数||Makefile|编译模块 ||scull_load.sh|加载模块脚本||scull_unload.sh|卸载...

2018-12-02 19:25:47 1793 1

原创 linux内核printk用法以及相关调试

1、内核中打印信息,只能使用printk,不能使用printf。函数原型:int printk(const char *fmt, ...);2、printk打印等级#define KERN_EMERG “&amp;amp;amp;lt;0&amp;amp;amp;gt;” /* system is unusable /#define KERN_ALERT “&amp;amp;amp;lt;1&amp;amp;amp

2018-11-26 00:50:35 652

转载 linux上oops介绍

附oops介绍(网上搜的,感谢作者):Oops MessagesOops 消息Most bugs show themselves in NULL pointer dereferences or by the use of other incorrect pointer values. The usual outcome of such bugs is an oops message.大多数...

2018-11-25 18:32:31 1609

原创 linux设备驱动开发学习

从2018年7月决定学习linux内核驱动,已经过了4个月了,期间有看过宋宝华老师的《linux设备驱动详解》,操作了一些例程,后转去学习网络编程两个月,最近又拿起linux驱动。由于电子版排版不好看,遂买了本圣经O’Reilly的《linux设备驱动程序》,但看了接近两周时间,发现效果并不好,书上大部分是理论知识,较少实验例程,对书上的知识一知半解。故想放慢脚步,边看书边实践,在实践中出真理,...

2018-11-25 16:48:46 206

转载 linux内核驱动重要的数据结构

文件操作迄今为止, 我们已经保留了一些设备编号给我们使用, 但是我们还没有连接任何我们设备操作到这些编号上. file_operation 结构是一个字符驱动如何建立这个连接. 这个结构, 定义在 , 是一个函数指针的集合. 每个打开文件(内部用一个 file 结构来代表, 稍后我们会查看)与它自身的函数集合相关连( 通过包含一个称为 f_op 的成员, 它指向一个 file_operation...

2018-11-17 09:09:48 361

转载 主机和开发板上传文件,通过rz和sz命令

lrzsz是一个Unix通信包,提供XMODEM、YMODEM和ZMODEM文件传输协议。lrzsz以前是Omen科技的主打软件,现在已经免费,并且遵循GNU开源协议。lrzsz适合这样一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果想跟这块板子传输交互文件,就需要用到串口传输了。 根据modem所采用的文件传输协议:xmodem、ymodem、zm...

2018-10-08 10:28:43 1349

空空如也

空空如也

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

TA关注的人

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