自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【AI】安卓读取图库图片代码流程及步骤

AI写代码解放双手,大家都是CV工程师

2023-03-04 01:41:08 559

转载 【Kernel】proc/pid/smaps

【Kernel】proc/pid/smaps转自:https://www.jianshu.com/p/8203457a11cc一、基本介绍/proc/PID/smaps 文件是基于 /proc/PID/maps 的扩展,他展示了一个进程的内存消耗,比同一目录下的maps文件更为详细。值得说明一下的是,每一个VMA(虚拟内存区域,即一个 vm_area_struct 结构指向的内存区域)都有如下的一系列数据:08048000-080bc000 r-xp 00000000 03:02 13130

2022-05-19 00:30:19 1010

原创 【VUE】Vue动态路由匹配路由

【VUE】 vue-router 动态路由匹配我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:简而言之,动态路由匹配解决的是页面根据id跳转的问题// appfront/src/routerconst User = { template: '<div>Use

2022-05-19 00:11:51 2805

原创 【kernel】proc/pid/maps

【kernel】proc/pid/maps解析首先从https://blog.csdn.net/shenfengchen/article/details/117020725这位博主这里借来一份带注释的表格,大体上描述了maps文件的一个基本构成。起始地址-结束地址 属性 偏移地址 主从设备号 inode编号 文件名00008000-00590000 r-xp 00000000 b3:01 1441836 /root/xxx----------------------------可执行文件

2022-05-19 00:08:50 745

原创 [APP]Ubuntu快速安装微信(仅需1分钟)

[APP]如何在Debian/Ubuntu上快速安装微信----最简deepin-wine版原文链接:https://github.com/zq1997/deepin-wine今天在Ubuntu上安装微信时,搜了很多教程,有用docker的,有用wine的,相对来说,个人认为wine的更好用一些,但是这两种方式需要安装的依赖都太多,简便性不太好,在搜寻过程中发现一个比较简单实用的安装方式,具体安装步骤如下:首次使用时,需要运行如下一条命令将移植仓库添加到系统中。wget -O- https://de

2022-02-22 11:27:34 12361 11

原创 [Command]scp(安全拷贝)与rsync(远程同步)

[Command]scp(安全拷贝)与rsync(远程同步)今天在使用scp拷贝的过程中,为了节约拷贝时间,仅对新增的拷贝内容进行同步,找到了rsync命令,进行新增拷贝,具体内容如下scp 安全拷贝该命令会进行全量复制,每次复制都会复制所有文件使用方式:scp -r 源文件用户名A@主机名:path1 目标文件用户名B@主机名2:path2-r 表示递归复制rsync 远程同步该命令只同步变化的文件,进行增量同步rsync -rvlt path1 目标文件用户名B@主机名2:path

2022-02-22 11:26:55 3484

原创 [Algorithms]二叉树遍历方法与代码实现

[Algorithms]二叉树、图遍历方法与代码实现1. 二叉树遍历方法首先,是本文使用二叉树结构的一个声明。typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;一、前序遍历原理:若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树。/* 前序遍历递归 */void PreOrderTraverse(BiTree T){ if(T==N

2022-02-22 11:25:13 579

原创 [Server]Aria2服务器安装

[Server]Aria2的服务器安装教程一、下载下载doubi大佬的自动化脚本wget https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.shchmod +x aria2.shbash aria2.sh二、安装大佬的脚本是傻瓜式安装,看页面内容直接选择即可。[root@VM-4-17-centos ~]# ./aria2.sh Aria2 一键安装管理脚本 [v1.1.10] -- Toyo | do

2022-02-22 11:24:05 3240 1

原创 [Server]服务器搭建个人网盘cloudreve

[Server]腾讯云服务器搭建个人网盘cloudreve一、下载资源https://github.com/cloudreve/Cloudreve/releases二、简介Cloudreve是个公有网盘程序,你可以用它快速搭建起自己的网盘服务,公有云/私有云都可。Cloudreve底层支持 本机存储、从机存储、阿里云OSS、又拍云、腾讯云COS、七牛云存储、OneDrive(国际版/世纪互联版),每种存储方式的上传下载都是客户端直传。具有以下特性:支持本机、从机、七牛、阿里云OSS、腾讯云COS

2022-02-22 11:21:54 2467

原创 【Kernel】内核数据结构之映射(v5.15.10)

【Kernel】内核数据结构之映射(v5.15.10)内核源码快捷查看一、概念映射常称为关联数组,是一个由唯一键组成的集合,而每个键必然关联一个特定的值。键到值的关联关系称为映射。映射至少支持三个操作:add(key,value) remove(key) value = Lookup(key) 映射可以通过散列表和二叉搜索树实现。二、IDR简介系统许多资源都用整数 ID 来标识,如进程 ID、文件描述符 ID、IPC ID 等;资源信息 通常存放在对应的数据结构中 (如进程信息存放在 task

2022-02-22 11:16:53 1096

原创 【Kernel】内核数据结构之链表(v5.15.10)

【Kernel】内核数据结构之链表(v5.15.10)内核源码快捷查看一、概念与特点链表是一种存放和操作可变数量元素(节点)的数据结构。元素动态创建并插入链表无需占用连续存储区二、单向链表、双向链表、环形链表单向链表:数据域 + 后向指针双向链表:数据域 + 前向指针 +后向指针环形链表:在单向链表OR双向链表基础上,对头尾指针进行修改,使链表成环。三、内核链表:list_headlist_head 结构体定义,/inclue/linux/types.h 如下stru

2022-02-22 11:15:39 582

原创 【Kernel】内核数据结构之二叉树(v5.15.10)

【Kernel】内核数据结构之二叉树(v5.15.10)内核源码快捷查看一、概念与特点树结构是一个能提供分层的树型数据结构的特定数据结构。在数学意义上,树是一个无环的、连接的有向图,其中任何一个顶点(在树里叫节点)具有0个或多个出边以及0个或1个入边。一个二叉树是每个节点最多只有两个出边的树,也就是一个树其节点具有0个、1个或者2个子节点。二、二叉搜索树(BST)、自平衡二叉树二叉搜索树:一个BST是一个节点有序的二叉树,满足以下条件根的左分支节点值都小于根节点值根的右分支节点值都大

2022-02-22 11:13:50 809

原创 【Kernel】内核数据结构之队列(v5.15.10)

【Kernel】内核数据结构之队列(v5.15.10)内核源码快捷查看一、概念与特点先进先出的链表结构。二、队列、循环队列队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。循环队列:在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进:无论插入或删除,一旦rear指针增1或front指针增1 时超

2022-02-22 11:12:32 529

原创 【 BlockChain 】零知识证明

【 BlockChain 】零知识证明一、零知识证明起源“零知识”的概念最早在80年代由麻省理工学院的研究人员 Shafi Goldwasser,Silvio Micali 和 Charles Rackoff 所提出。当时这些人正在研究与交互证明系统相关的问题——即一种理论系统,使得甲方(证明者)可以和乙方(验证者)交换信息,并借此说服乙方接受(通过验证)某个数学论述为真 [作者注1]。在Goldwasser等人之前,这个领域的研究工作主要聚焦在加强证明系统的可靠性(Soundness)。也就是说原先

2022-02-22 11:10:31 24208 6

原创 [Kernel]微内核、单内核

[Kernel]微内核、单内核一、从应用层面直观说明采用各种内核的系统微内核:华为鸿蒙系统、Windows系统、塞班系统单内核:Unix、Linux、FreeBSD、安卓系统二、各自的特点这里两种起始类似与RISC和CISC的比较,可以对比的看一下。微内核微内核是内核的一种精简模式,通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、

2022-02-21 10:08:46 2391

原创 【Security】操作系统安全

【Security】操作系统安全一、主体与客体访问控制关注的对象要么是主体,要么是客体客体(objects):客体是一个被动的实体。在操作系统中,客体可以是按照一定格式存储在一定记录介质上的数据信息(通常以文件系统格式存储数据),也可以是操作系统中的进程。图书是保护对象,那么他是客体。对一个客体的访问隐含着对其包含信息的访问。文件,IPC资源等就是客体,进程也可以是客体。主体(subjects):是引起信息在客体之间的流动的实体。通常,这些实体是指人、进程或设备等,一般是代表用户执行操作的进程

2022-02-21 10:06:05 787

原创 【Security】可信计算

【Security】可信计算一、概念可信:如果第二个实体完全按照第一个实体的预期行动时,则第一个实体认为第二个实体是可信的;其强调实体行为的预期性,强调系统的安全与可靠。可信计算(TrustedComputing):一项由TCG(可信计算组)推动和开发的技术,是一种基于密码的运算与防护并存的计算机体系安全技术,保证全程可检测可监控。可信计算的原理是出击,整个链路都经过可信认证,所以无论从应用、操作系统还是硬件,必须经过授权才能使用,这无疑降低了病毒、网络攻击的概率。可信的核心目标之一是保证系统和应用的

2022-02-21 10:04:41 1356

原创 【Kernel】页高速缓存和页回写

【Kernel】页高速缓存和页回写一、页高速缓存页高速缓存是Linux内核实现磁盘缓存。它主要用来减少对磁盘的I/O操作。具体而言,通过把磁盘的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。二、页高速缓存的价值磁盘高速缓存的价值在两方面:访问磁盘的速度远低于访问内存的速度;数据一旦被访问,就很有可能在短期内再次被访问(时间局部性原理),这些数据会被暂存在高速缓存中,实现快速命中。三、页高速缓存的实现页高速缓存由RAM中的物理页组成。缓存中每一页对应着磁盘中的多个块。读缓存

2022-02-21 09:58:10 639

原创 【Kernel】虚拟文件系统

【Kernel】虚拟文件系统一、概念虚拟文件系统(VFS)作为内核子系统为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件不但依赖VFS共存,而且也依靠VFS系统协同工作。通过虚拟文件系统,程序可以利用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。(把各种不同的文件系统抽象后采用统一的方式进行操作)。VFS定义了所有文件系统都支持的、基本的、概念上的接口和数据结构。下图是进行一次write系统调用所涉及vfs的具体流程。总的来说,vfs是一种文件系统的抽象,它

2022-02-21 09:57:33 430

原创 【Kernel】文件系统

【Kernel】文件系统一、软链接与硬链接硬链接硬链接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个

2022-02-21 09:56:02 374

原创 【Kernel】设备与模块

【Kernel】设备与模块一、设备块设备系统中能够随机访问固定大小数据片的硬件设备称作块设备,这些固定大小的数据片就称作块。常见的块设备是硬盘,除此之外还有软盘驱动器、蓝光光驱、和闪存等许多其他块设备。它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。块设备中最小的可寻址单元是扇区,扇区大小一般是2的整数倍并且小于页面大小,最常见是512字节,还有1KB或4KB。字符设备字符设备按照字符流的方式被有序访问,像串口和键盘就属于字符设备。网络设备网络设备最常见类型有时也以以太网设备

2022-02-21 09:54:04 371

原创 【Kernel】内核同步

【Kernel】内核同步内核源码快捷查看一、什么是内核同步同步是指用于实现控制多个进程按照一定的规则或顺序访问某些系统资源的机制。内核同步这里有一个官方形式的说法,但个人认为这一解释对理解其实际功能没什么帮助,这里仅仅对其进行引用。为了便于理解,这里介绍两个概念,临界区和竞争条件。临界区:访问和操作共享数据的代码段。竞争条件:两个执行线程在同一临界区中同时执行。使用内核同步解决共享资源并发访问的问题。如果多个执行线程同时访问和操作数据,就有可能发生各线程之间相互覆盖共享数据的情况,造成被访问数

2022-02-21 09:53:05 1070

原创 【Kernel】内存管理

【Kernel】内存管理内核源码快捷查看一、页内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常为字(甚至字节),但是,内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。内核中用struct page结构表示系统中的每个物理页,位于linux/mm_types.h。二、区由于硬件的限制,内核并不能对所有的页一视同仁。有些页位于内存中特定的物理地址上,所以不能将其用于一些特定的任务。由于存在这种限制,所以内核把页划分为不同的区。内核使用区对具有

2022-02-21 09:51:17 608

原创 【Kernel】定时器和时间管理

【Kernel】定时器和时间管理内核源码快捷查看一、相关概念时间管理在内核中占有非常重要的地位,相对于事件驱动而言,内核中有大量的函数都是时间驱动,包括很多周期执行函数、推后执行函数等等。接下来这里要提及几个相关的概念:相对时间:时间的偏移量绝对时间:固定的时刻(以上两条是笔者理解)节拍率(tick rate):系统定时器以某种频率自行触发(经常被称为击中或射中)时钟中断,该频率可通过编程预定。节拍率越高解析度和准确度越高。节拍(tick):连续两次时钟中断的间隔时间(节拍率的倒数)。墙上

2022-02-21 09:49:40 456

转载 【BlockChain】go实现区块链7:网络

【BlockChain】go实现区块链7:网络引言到目前为止,我们所构建的原型已经具备了区块链所有的关键特性:匿名,安全,随机生成的地址;区块链数据存储;工作量证明系统;可靠地存储交易。尽管这些特性都不可或缺,但是仍有不足。能够使得这些特性真正发光发热,使得加密货币成为可能的,是网络(network)。如果实现的这样一个区块链仅仅运行在单一节点上,有什么用呢?如果只有一个用户,那么这些基于密码学的特性,又有什么用呢?正是由于网络,才使得整个机制能够运转和发光发热。你可以将这些区块链特性认为是规则(ru

2022-02-15 13:22:50 552

转载 【BlockChain】go实现区块链6:含有merkle树的交易

【BlockChain】go实现区块链6:含有merkle树的交易引言在这个系列文章的一开始,我们就提到了,区块链是一个分布式数据库。不过在之前的文章中,我们选择性地跳过了“分布式”这个部分,而是将注意力都放到了“数据库”部分。到目前为止,我们几乎已经实现了一个区块链数据库的所有元素。今天,我们将会分析之前跳过的一些机制。而在下一篇文章中,我们将会开始讨论区块链的分布式特性。本文的代码实现变化很大,请点击 这里 查看所有的代码更改。奖励在上一篇文章中,我们略过的一个小细节是挖矿奖励。现在,我们

2022-02-14 16:24:43 985

转载 【BlockChain】go实现区块链5:地址

【BlockChain】go实现区块链5:地址引言在上一篇文章中,我们已经初步实现了交易。相信你应该了解了交易中的一些天然属性,这些属性没有丝毫“个人”色彩的存在:在比特币中,没有用户账户,不需要也不会在任何地方存储个人数据(比如姓名,护照号码或者 SSN)。但是,我们总要有某种途径识别出你是交易输出的所有者(也就是说,你拥有在这些输出上锁定的币)。这就是比特币地址(address)需要完成的使命。在上一篇中,我们把一个由用户定义的任意字符串当成是地址,现在我们将要实现一个跟比特币一样的真实地址。

2022-02-14 16:23:59 944

转载 【BlockChain】go实现区块链3:持久化和命令行接口

【BlockChain】go实现区块链3:持久化和命令行接口引言到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分,仅专注于 “存储” 这一点。选择数据库目前,我们的区块链实现里面并没有用到数

2022-02-14 16:22:06 705

转载 【BlockChain】go实现区块链2:工作量证明

【BlockChain】go实现区块链2:工作量证明引言上一篇中,我们构造了一个非常简单的数据结构 – 区块,它也是整个区块链数据库的核心。目前所完成的区块链原型,已经可以通过链式关系把区块相互关联起来:每个块都与前一个块相关联。但是,当前实现的区块链有一个巨大的缺陷:向链中加入区块太容易,也太廉价了。而区块链和比特币的其中一个核心就是,要想加入新的区块,必须先完成一些非常困难的工作。在本文,我们将会弥补这个缺陷。工作量证明区块链的一个关键点就是,一个人必须经过一系列困难的工作,才能将数据放入到区

2022-02-14 15:34:09 667

转载 【BlockChain】go实现区块链1:基本原型

【BlockChain】go实现区块链1:基本原型引言区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是,区块链是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他“数据库管理员”的同意,才能向数据库中添加新的记录。 此外,也正是由于区块链,才使得加密货币和智能合约成为现实。在本系列文章中,我们将实现一个简化版的区块链,并基于它来构建一个简

2022-02-14 15:33:07 1177

原创 [Algorithms]查找算法

[Algorithms]查找算法一、顺序表查找时间复杂度:o(n) /*顺序查找,参数分别为:数组a、数组长度n、关键字key*/int SeqSearch(int *a,int n,int key){ int i; for(i=1;i<=n;i++) { if(a[i]==key) return i; } return 0;}// ****************// 顺序查找优化:哨兵// *

2022-02-14 10:56:31 121

原创 【Security】可信网络连接

【Security】可信网络连接一、可信网络连接需求目前,计算机之间互联使用远程登录验证、SSL协议、VPN机制等方式来验证和保护计算机之间的连接。但这些机制一般只能确认远程用户的身份和保证数据在网络间的安全传输,并不能保证远端机器是否已经感染了病毒或者被黑客攻陷,也不能保证数据在网络传输过程中有足够的安全控制措施。【现有机制不能保证远端机器是可信任的,也不能保证数据在网络传输过程中有足够的安全控制措施】二、TNC可信网络连接架构TNC是TCG(Trusted Computing Group)组织

2022-01-19 14:46:02 5851

原创 算法笔记 随机选择算法

算法笔记 随机选择算法随机选择算法和快速排序原理相似,所以有时候也称作“快速选择算法”,一般选择问题可以证明都能在O(n)时间内完成。随机选择算法的期望运行时间为线性时间,即Θ(n),但其最坏情况运行时间为O(n^2)。最坏情况与快排一样,都是运气不好导致划分不均匀。下面是一个习题给定一个长度为n(1≤n≤1,000,000)的无序正整数序列,以及另一个数k(1≤k≤1,000,000)(...

2019-04-21 00:29:30 674

原创 算法笔记 二分法介绍与应用

算法笔记 二分法介绍与应用二分法是解决以下一些问题的重要算法,如:判断函数与x轴交点的具体位置(也可以说是方程组的解)、查找、判断无理数的大小等。这一算法的思想其实很简单,就是每次都进行折半寻找,直到找到想要的解。下面用几个具体的例子来对这一方法的应用进行说明。头文件均为一、二分查找这个理解比较简单,看代码就好。 int binarySearch(int arr[],int left,...

2019-04-19 18:01:30 602

转载 中文停用词表

中文停用词表(分词)!"#$%&'()*+,---................................/.一.数.日///0123456789:://::;<=>>>?@ALex[\]^_`expsubsup|}~~~~~·×××...

2019-04-16 14:41:21 280

原创 算法笔记 贪心算法练习题(3)

算法笔记 贪心算法练习题(3)With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to ti...

2019-04-14 00:51:37 481

原创 算法笔记 贪心练习题(2)

算法笔记 贪心练习题(2)这个理清思路就好了,不难,注意输出格式就好。题目描述某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共...

2019-04-13 10:07:54 164

原创 算法笔记 贪心算法练习题(1)

算法笔记 贪心算法练习题(1)贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。解决此类问题时,需要注意判断该问题的最佳解是否由局部最优解构...

2019-04-12 18:15:02 799

原创 算法笔记 递归练习题(4)

算法笔记 递归练习题(4)八皇后问题首先我们来解决一下八皇后问题,我认为可以用二维数组将棋盘表示出来,从第一行开始每行放一个queen,如果满足check条件,则说明可以继续将该row的queen放置,否则无法放置,寻找该row的其他可放位置,用回溯法进行解决。(环境vs2015)#include<iostream>#include<cstdlib>#includ...

2019-04-12 10:46:29 183

原创 算法笔记 递归练习题(3)

算法笔记 递归练习题(3)题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入输入的第一行是正整数n...

2019-04-11 17:04:01 204

空空如也

空空如也

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

TA关注的人

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