自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (32)
  • 收藏
  • 关注

转载 vs code 集成github

1. VSCode 默认已安装Git。输入git --version如果显示版本号,则安装成功。2. 在GitHub上新建一个仓库。例如:myrepo3. 在本地新建一个文件夹,作为VSCode代码的工作文件夹。例如:mycode4. mycode既是VSCode的代码工作文件夹又应该是Git的本地仓库。在命令行方式下进入mycode,输入git initgit init5. 添加用户名和邮箱。该用户名和邮箱是注册GitHub时使用的用户名和邮箱: git config --glob...

2020-07-29 07:45:00 295

原创 linux文件系统中文件阶段操作truncate

因为要给给文件系统增加数据索引功能,所以对文件系统进行了不少的修改(主要是仿照i_zone[]的方式进行索引数据的管理和存储),但是考虑到文件还有删除或者截断操作,我们就必须面对这个问题,看看文件系统是如何处理的。今天我们来看看ext2和minix是如何截断文件的:即,如何删除那些我们不需要的数据块了。 所谓的截断文件指的是:一个特定长度的文件,我们从某个位置开始丢弃后面的数据,之前的数据依然保留。对具体文件系统来说,截断数据主要意味着两件事情:1. 文件大小发生变化;2. 文件被截断...

2020-07-23 10:03:52 2273

转载 Linux内核Page Cache和Buffer Cache关系及演化历史

在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作(file sync,即文件同步),该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache,也叫页高速缓存)。块缓存(buffer cache),则是内核为了加速对底层存储介质的访问速度,而构建的一层缓存。它缓存部分磁盘数据,当有磁盘读取请求时,会首先查看块缓存中是否有对应的数据,如果有的话,则直接将对应数据返回,从而减

2020-07-21 14:12:37 2241

原创 Page cache和buffer cache

这一段要在文件系统中对文件的记录增加索引。实现思路是借鉴了i_zone的三级间接寻址方案。i_zone实际上代表了3层意思,第一层是i_zone这个数组本身,它是放在episode_inode中的,只要拿到了episode_inode的指针或者对象,就可以直接访问;第二层,i_zone[0]--i_zone[9]的内容(就是一个blockid)所代表的那9个block、i_zone[7]-i_zone[9]指向的block里面存储的blocksize/4个blockid所代表的那blocksize/4个bl

2020-07-13 18:11:57 461

转载 使用PageCache读取文件元数据块

使用PageCache读取文件元数据块Linux 2.4的最大贡献是统一的PageCache与BufferCache,准确来说,它是讲所有数据都保存在了PageCache中,但是仍然保留了BufferCache的接口,以供如superblocks,bitmap,inode table,block table等文件元数据读写的使用。也即,与块设备交互时,我们依然使用bh抽象,但是,bh不会有自己的空间,其使用的是PageCache中对应页的空间。具体文件系统内部使用时,会在页上提供Buffer head抽

2020-07-10 13:33:42 414

转载 Linux系统中的高速缓存有哪几种

Linux系统使用了几种涉及到高速缓存的内存管理方法。1 缓冲区高速缓存缓冲区高速缓存中保存着块设备驱动程序所用到的数据缓冲区。这些缓冲区的大小固定,一般包括从块设备中读入的和将要写入到块设备中的信息块。块设备一次只能处理大小固定的数据块。硬盘就是块设备中的一种(这里指的是直接写硬盘这种块设备文件,我们平时用的是直接写普通文件,普通文件是一种文件类型,块设备文件也是一种文件类型,所以这里一定要区分清楚块设备和普通文件的区别)。缓冲区高速缓存使用设备标识符和块号作为索引来快速地查找数据块。块设备只通.

2020-07-10 11:30:11 931

转载 Linux内核空间中的高端内存HighMem

Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。Linux内核地址空间的划分通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。Linux内核高端内存的由来当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0..

2020-07-10 11:10:31 1397

转载 buffer_head的理解

在上一篇博客介绍address_space中,我们有提到,内存中一个page所包含的磁盘块在物理上不一定是相邻的。那么page中不同的磁盘块怎么管理呢?这里就涉及到了buffer_head结构。(实际上,我们的epsiode中设定了block大小和page 大小是一样的,都是4k,但buffer_head仍然大量存在,例如sb中的imap zmap,sbh,以及管理blockid的i_zone[10],我们下一步要做的i_index[]可能也得采用它)把块存放在页高速缓存page cache中就会涉及到

2020-07-10 10:07:08 2940

转载 dentry与inode

dentry与inode首先看dentry数据结构。位于include/linux/dcache.h中 struct dentryps:dentry虽然是目录的意思,但是在vfs中,目录和文件都有自己的dentry。(dentry中存了文件名,同一文件存在别名就是这个结构实现的) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

2020-07-09 16:19:52 1674 1

转载 linux文件系统的页高速缓存page cache中的核心数据结构address_space

address_space对象是文件系统中关于内存中页高速缓存的核心数据结构。这篇博客以address_space对象为切入点,分析文件系统的页高速缓存。1背景在文件系统中,内存中存在着dentry和inode结构,其中其分别的作用可以见我另一篇博客《dentry与inode》。由于这些结构要反复使用,所以内存里开辟了目录项高速缓存以及索引结点高速缓存,提高其访问速度。但这里要提到的是另一种高速缓存:页高速缓存,它是一种对完整的数据页进行操作的磁盘高速缓存,即把磁盘的数据块缓存在页高速缓存中。而ad

2020-07-09 10:51:21 2384 1

转载 段式、页式内存管理以及linux采用的方案图解

这两年的工作主要是写一个适用于高速传感器的文件系统,近期要实现在内核中增加对数据记录的索引,已经实现了数据和索引混合存储的方案,但效率低下,所以要实现一个数据和索引分离的机制。索引的方案类似早期minix文件系统中存储文件的blockid的i_data[10]数组类似的ji本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了它,至少对整个操作系统的工作会有一个初步的轮廓,这也难怪面试的时候常问内存管理。干就完事,本文的提纲:正文虚拟内存如果你是电子相关专业的,肯定在大学里.

2020-07-03 09:47:32 4070 6

转载 Linux内核内存管理算法Buddy和Slab

CPU所有的操作都是建立在虚拟地址上处理(这里的虚拟地址分为内核态虚拟地址和用户态虚拟地址),CPU看到的内存管理都是对page的管理,接下来我们看一下用来管理page的经典算法--Buddy。Buddy分配算法假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪费。为了避免出现这种情况,Linux内核中引入了伙伴系统算法(Buddy sy

2020-07-02 16:06:45 897

转载 基于内核模块实现linux内核中文件的读写

在为linux内核编写的模块中,用户空间的open,read,write,llseek等函数都是不可以使用的。而必须使用其在内核中对应的函数。可以使用filp->open配合struct file里的read/write来进行对文件的读写操作。直接上干货(内容自己悟!):例1 :filp->f_op->readfilp_openfilp->f_op->write#include <linux/kernel.h>#include <lin.

2020-07-02 14:46:55 1396

cmake_tutorial-master.zip

安装自定义模块到系统中并在独立工程中使用find_package找到

2021-11-01

图解系统-暗黑风格-小林coding-v1.0.pdf

小林coding写的图解系统,非常全面的介绍了操作系统相关知识,大量的图。

2021-10-14

sensorPluginTest0916.zip

本程序是在ubuntu20.04下基于class_loader开发的一个插件,里面使用了基类、子类,在测试程序中,将子类对象赋给父类指针,然后使用父类的成员函数作为线程函数启动线程。并可以从外部传入参数到线程函数中。最后还可以生成插件以供别人使用。 需要注意的是,这个是基于c++ 11/14开发的,如果libclass_loader.so无法使用,请自行下载并编译成.so放到lib目录下。具体可以参考https://blog.csdn.net/jinking01/article/details/108615952

2020-09-16

数据库存储树结构ClosureTableCateogryStore-master.zip

参考本人csdn上的文章,配合看代码,会简单些。这里给出了用数据库怎么存储一棵树。采用java实现。一般来说对于树结构,使用结构化数据库存储是一个麻烦的事情。

2020-02-27

storage_ws_jin0906.tar.gz

这里是我在ros开发过程中使用sqlite3存储ros中各种消息的过程中使用json扩展的示例,storage包中的test目录下的sqlite3Test文件介绍了如何使用json扩展,具体流程看我的博客。

2019-09-06

开源内存数据库的调研与分析.doc

内存数据库的优劣对比,主要包括fastdb,memcachedb,mangodb等,也涉及到了数据库的设计思路,已经性能比较。对于选择合适的内存数据库有一定的帮助吧。

2019-08-30

fastdb-arm.tar.gz

fastdb的代码无法在tx2或者说arm架构的开发板上直接使用,编译也无法通过,我这里是在tx2上编译通过的版本,生成的libfastdb.so在fastdb的src/下的隐藏目录.libs下,生成的4个可执行文件就在src下。请参考我的csdn文章,看怎么在非x86_64环境下编译fastdb。

2019-08-23

FastDB 高效率的内存数据库系统.doc

FastDB详细介绍,涉及思想,架构,用例,以及相关用法和函数的解释。

2019-08-02

ubuntu 16.04 opencv auto installation

ubuntu 16.04 auto install the opencv 3.4.2. just run " bash install_opencv.sh", then wait for a moment.

2019-03-27

自然语言处理实践者指南Practitioner's guide to NLP part I

自然语言处理实践者指南Practitioner's guide to NLP part I:Processing & understanding text

2019-01-15

Python code for Artificial Intelligence: Foundations of Computational Agents

2019年1月3日,David L. Poole和Alan K. Mackworth更新了人工智能python实战代码,配套《人工智能:计算代理的基础》第二版。是面向众多学习人工智能的同学在理论和实战方面提供指导的图书

2019-01-15

百页教程学机器学习the hundred page machine learning book pdf原版

目前机器学习相关图书一般都很厚, Andriy Burkov写了一本百十页的机器学习教程,近期非常火爆。这里给出了最新修订版的pdf合成版(来自dropbox),供大家使用。The Hundred-Page Machine Learning Book" by Andriy Burkov.

2019-01-02

冰点下载器--百度文库豆丁网免费下载

豆丁网和百度文库等存储大量非技术性文档,当下载的时候总是需要积分。对于没有积分的筒子们,就比较麻烦,到处找人借账号。这里给出冰点下载器,可以免积分下载。

2018-12-26

动手学深度学习中文电子pdf版

《动手学深度学习》图书的pdf版,纸质版还没有出版。这是pdf预览版。18年9月写完的。手把手教大家学deeplearning。全书近600页。

2018-12-06

动手学深度学习中文电子版

《动手学深度学习》图书电子版,2018年9月才写完,纸质版还没有上市哦。介于纯理论和纯实践之间,让你手把手学会深度学习。

2018-12-06

ROS 课程讲义

ROS 机器人操作系统的教学讲义,适用于ROS入门。对ROS的框架以及各模块进行了相对详细的讲解,帮助读者解惑。

2018-11-19

vcForPython27解决安装pycrypto报错vcvarsall.bat找不到问题

vcForPython27解决安装pycrypto报错vcvarsall.bat找不到问题。先安装里面的msi文件,然后再用pip安装pycrypto

2018-06-01

安卓app反编译及看源码用到的工具包

安卓app反编译破解所需要用到的包,包括查壳,反编译,class转java,dex2oat等等。

2018-06-01

手机app脱壳虚拟机镜像

这是我破解一个360加固的app所用到的虚拟机的镜像。使用方式可以参见我的文章https://blog.csdn.net/jinking01/article/details/80533522

2018-06-01

jd-gui1.4+dex2jar2.0+apkdb+apktool apk反编译套装

最新的jd-gui版本和最新的dex2jar,apkdb最新版和apktool 反编译apk必备工具

2018-05-31

win7 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评

win7 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发实例。内容是爬取IThome热评存储到mysql,然后在redis建立索引。这个是可以正常运行的,但是还有一部分功能没有完善。具体参考https://blog.csdn.net/jinking01/article/details/80066683

2018-04-27

windows下redis管理工具treeNMS

Redis的数据不太好管理,也不容易查看,青格软件提供了一个windows下redis管理工具treeNMS,这里就是这个,可以直接下载,解压缩后看里面的说明文档,比较简单。基于web来查看管理redis

2018-04-24

《C和指针》pdf高清版和《C陷阱和缺陷》以及源代码

学习C语言,最烦人的就是指针,《C和指针》这本书我买了纸质版,个人觉得写的非常好,把指针解释的非常透彻,经过短时间轰炸,基本把指针摸透了。所以又弄了电子版和代码,希望对后面学习C语言的人员提供帮助,让他们早点摆脱指针的困扰。资源中包括《C和指针》pdf高清版和《C陷阱和缺陷》pdf以及源代码。

2018-04-12

ROS的插件库pluginLIB机制讲解

pluginlib是一个使用C++实现的库, 用于在ROS包里面动态的加载或卸载plugin. plugin满足一些条件的, 可以从运行库(例如共享对象, 动态链接库)中动态加载的类. Plugin在扩展或修改应用的行为上很有优势, 并不需要知道原始类的源码, 也许你在编写代码时, 也并不知道你将会用到哪个plugin, 而是在运行时通过参数载入才确定具体的plugin, 在后面有一点相关的示例, 可以体会一下使用plugin的feeling

2018-04-11

51CTO 机器人操作系统ROS精品课程PPT

99元购买的51CTO的ROS精品课程的PPT,共13讲,对于ROS入门者来说,非常难得。按照这个顺序去学,比看官网的两套流程简单的多,不至于凌乱

2018-03-06

SSM框架——使用MyBatis Generator自动创建代码

SSM框架——使用MyBatis Generator自动化构建代码所需要的两个jar包,同时附了mysql的连接器,如果需要SqlServer对应的jdbc连接器,请到微软官网自行下载。

2017-09-21

metronic 4.7.5 最完整版,共318M,文件中有链接

metronic 4.7.5 最完整版,共318M,非常漂亮的模板,官方售价28美元。通过框架,可以快速构建web平台。解放手工劳工部分,提高效率

2017-09-06

quick4j IDEA进行javaweb开发的快速框架 maven+Spring+SpringMVC+shiro +myhatis

使用idea进行的java web开发。本项目为一个java web框架。可以在此基础之上进行复杂开发。压缩包中有全部代码和编译后的文件(war文件过大,删掉了)。 采用maven+Spring+SpringMVC+shiro +myhatis+mysql进行开发,需要根据个人的mysql情况修改database配置文件,包括口令,用户名,数据库名等。

2017-09-05

java项目做成exe的工具

这里给出了两个将jar文件生成exe的工具,希望能帮助一些新手

2008-11-20

局域网组建一本通,组建局域网

这是一本描述局域网技术,从局域网概念,发展历程,局域网技术,软件及硬件等全方位介绍了局域网组建方法,并给出了具体的实例.

2008-10-21

空空如也

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

TA关注的人

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