对象存储

SD卡文件操作

≡放荡痞女 提交于 2019-12-10 14:08:11
Fatfs文件系统常用函数:f_mount、f_open、f_close、f_read、f_write、f_lseek、f_truncate、f_sync、f_opendir FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,而不需要做任何修改。 特点:Windows兼容的FAT文件系统,不依赖于平台,易于移植,代码和工作区占用空间非常小,多种配置选项:多卷(物理驱动器和分区)、多ANSI/OEM代码页,包括DBCS、在ANSI/OEM或Unicode中长文件名的支持、RTOS的支持、多扇区大小的支持、只读,最少API,I/O缓冲区。 应用程序接口: FatFs 模块为应用程序提供了下列函数,这些函数描述了FatFs能对FAT卷执行哪些操作。 1.f_mount:在FatFs模块上注册/注销一个工作区(文件系统对象) 2.f_open:创建/打开一个用于访问文件的文件对象 3.f_close:关闭一个打开的文件 4.f_read:从一个文件读取数据 5.f_write:写入数据到一个文件 6.f_lseek

JAVA集合框架概述

限于喜欢 提交于 2019-12-10 10:04:31
参考资料: 1、《Java程序设计经典课堂》 -清华大学出版社 Java集合框架概述 1、Java中专门提供一套动态对象数组的操作类——集合框架。 2、集合框架实际上就是对常用数据结构的Java实现。 3、集合框架也可以理解成容器,容器主要指的是List、Map、Set和Queue等抽象数据结构。容器可以存储多个元素,这些元素通常是Java对象。针对上述抽象数据结构所定义的标准编程接口称为集合框架。 4、集合框架主要由一组精心设计的接口、类和隐含在其中的算法所组成,通过它们可以采用集合的方式完成Java对象的存储、获取、操作(排序、增删改查)以及转换等功能。使用集合框架,可以大大提高变成的效率和质量。 5、此外,还可以在集合框架的基础上完成入堆栈、队列和多线程安全访问等。 来看一下JAVA集合框架的简图,这样可以让我们对Java整个集合框架的体系有一个大致的认知。 1 Collection接口 Collection接口是所有集合类型的根接口。 Collection接口的定义如下图所示: 2 List接口及其实现类 2.1 概述 1、List接口也是Collection接口的子接口,它实现一种顺序表的数据结构(有时也称为序列)。在数据结构的逻辑结构类型中,它属于线性结构。 2、放在List集合的所有元素都有一个下标(下标从0开始),可以通过该下标实现随机访问集合中的元素。 3

.NET面试题解析(01)-值类型与引用类型

限于喜欢 提交于 2019-12-10 09:14:24
常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还是值类型?enum、int[]和string呢? 4. 堆和栈的区别? 5. 什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗? 6.“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗? 7. 理解参数按值传递?以及按引用传递? 8. out 和 ref 的区别与相同点? 9. C#支持哪几个预定义的值类型?C#支持哪些预定义的引用类型? 10. 有几种方法可以判定值类型和引用类型? 11. 说说值类型和引用类型的生命周期? 12. 如果结构体中定义引用类型,对象在内存中是如何存储的?例如下面结构体中的class类 User对象是存储在栈上,还是堆上? public struct MyStruct { public int Index; public User User; 认识值类型与引用类型 万变不离其宗,只要搞清楚值类型和引用类型的原理,上面所有题目就都迎刃而解了。 基本概念 CLR支持两只类型: 引用类型 和 值类型 。这是.NET语言的基础和关键,他们从类型定义、实例创建、参数传递,到内存分配都有所不同。虽然看上去简单,但真正理解其内涵的人却好像并不多。 图片引用 下图清晰了展示了.NET中类型分类,值类型主要是一些简单的、基础的数据类型

C#引用类型和值类型的区别

会有一股神秘感。 提交于 2019-12-10 03:06:05
1***、C#中有两种类型: 值类型和引用类型: 值类型的变量直接包含他们的数据,而引用类型的变量存储 引用类型存储对他们的数据的引用,后者称为对象: 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象。 2***、 值类型:简单类型、枚举、结构 引用类型: 类类型、接口类型、数组类型和委托类型 3***、值类型与引用类型的内存存储 单纯的说值类型存储在栈上,引用类型存储在托管堆上是不对的。 4***、区别: 1、 托管堆: 同步块和方法表, x,y,托管堆上的需要GC来回收 线程堆栈: 没有同步块和方法表 2、 值类型赋值是重新创建一个副本 而引用类型的赋值是共享同一块内存(副本),是指向同一块内存(引用类型的名字相当于指向操作)。只是复制引用而不复制被引用识别的对象。(“引用”和“引用的对象”) 3、 值类型与引用类型的不同之处就在于值类型的变量直接包括他们的数据,而引用类型的变量把references存储到他们的数据库(Objects)中。 4、 所有的值类型从Object中继承来的。任何类型都不能由值类型派生而来,因此,值类型是封闭式的。 5***什么时候使用值类型 1)当类型是一个十分简单的类型,其中没有成员会修改类型的任何实例字段 2)类型不需要从其他任何类型继承 3)类型不会派生出其他任何类型 4)类型的实例较小 5

【Redis】系列1、——Redis基础

爱⌒轻易说出口 提交于 2019-12-10 02:43:23
你只管努力, ——剩下的交给时光。 首先我们带着问题来学习 1、什么是Redis?为什么要用它?用它有什么好处? Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦 可持久化的日志型、Key-Value数据库 ,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets) 等类型。以上标红为Redis常用数据类型。 2、Redis的安装 安装教程 Windows安装 在 https://github.com/MSOpenTech/redis/releases 地址下载后解压,打开命令行进入解压目录运行 redis-server.exe redis.conf(省略则使用默认) 出现下图服务就已经启动成功了 Linux安装 在https://redis.io/地址下载最新版 解压:$ tar -xzf redis-4.0.11.tar.gz 进入解压后目录:$ cd redis-4.0.11 编译:$ make 进入src目录启动服务器:$ cd src $ ./redis-server 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。 可以通过 CONFIG

java容器总结

送分小仙女□ 提交于 2019-12-10 02:09:57
java容器总结 容器分类: 容器与集合的相似点: 都可以存储多个对象,对外作为一个整体。 数组的缺点: 长度必须在初始化时指定,固定不变。 采用连续存储空间,删除和添加效率低下。 数组无法直接保存映射关系。 数组缺乏封装,操作繁琐。 集合架构 collection接口存储一组不唯一无序的对象 List接口存储不唯一、有序(索引顺序)的对象 set接口存储一组唯一、无序的对象 map接口存储一组键值对象,提供key到value的映射。key唯一无序,value不唯一无序。 List 特点:有序、不唯一。 ArrayList线性表中的顺序表: 内存中分配连续的空间,长度可变的数组。 优点:遍历元素和随机访问元素的效率高 缺点:添加、删除、需要大量的移动元素效率低。 public class SxtArrayList01 { private Object [ ] elementData ; private int size ; private static final int DEFALT_CAPACITY = 10 ; public SxtArrayList01 ( ) { elementData = new Object [ DEFALT_CAPACITY ] ; } public SxtArrayList01 ( int capacity ) { elementData =

FISCO BCOS CRUD使用指南

喜你入骨 提交于 2019-12-09 22:58:48
本文将介绍 FISCO BCOS的CRUD功能,帮助开发者更高效便捷地开发区块链应用。 为什么设计CRUD功能? 在FISCO BCOS 1.0中,节点采用MPT数据结构,通过LevelDB将数据存储于本地,这种模式受限于本地磁盘大小,当业务量增大时数据会急剧膨胀,要进行数据迁移也非常复杂,给数据存储带来较大成本和维护难度。 为了突破容量和性能瓶颈,FISCO BCOS 2.0针对底层存储进行了重新设计,实现了分布式存储,带来了容量和性能上的提升。得益于分布式存储采用了库表结构,FISCO BCOS 2.0设计一套CRUD(Create增加、Read读取、Update更新和Delete删除),让接口更加顺其自然。CRUD面向库表的开发方式符合业务开发习惯,同时也为业务开发提供了另外一种选择(以往只能用Solidity合约),从而让区块链应用开发更加便利。 CRUD有哪些优势? CRUD的核心设计思想是提供面向SQL编程的区块链应用开发规范。其好处显而易见,主要体现在两升两降。 提升开发区块链应用的效率 CRUD类似传统业务SQL编程开发模式,大大降低了合约开发难度。开发者将合约当做数据库的存储过程,将区块链数据的读写操作转换为面向表的读写操作,简单易用,极大提升了开发区块链应用的效率。 提升区块链应用的性能 CRUD底层逻辑基于预编译合约实现,其数据存储采用分布式存储

Git详解之九 Git内部原理

随声附和 提交于 2019-12-09 22:53:59
Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式。我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂。正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己。 既然已经读到这了,就让我们开始吧。首先要弄明白一点,从根本上来讲 Git 是一套内容寻址 (content-addressable) 文件系统,在此之上提供了一个 VCS 用户界面。马上你就会学到这意味着什么。 早期的 Git (主要是 1.5 之前版本) 的用户界面要比现在复杂得多,这是因为它更侧重于成为文件系统而不是一套更精致的 VCS 。最近几年改进了 UI 从而使它跟其他任何系统一样清晰易用。即便如此,还是经常会有一些陈腔滥调提到早期 Git 的 UI 复杂又难学。 内容寻址文件系统这一层相当酷,在本章中我会先讲解这部分。随后你会学到传输机制和最终要使用的各种库管理任务。 9.1 底层命令 (Plumbing) 和高层命令 (Porcelain) 本书讲解了使用 checkout, branch, remote 等共约 30 个 Git 命令。然而由于 Git 一开始被设计成供 VCS

Git详解之九:Git内部原理

北城余情 提交于 2019-12-09 22:51:26
Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式。我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂。正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己。( 伯乐 在线注:如果你对Git还不了解,建议从本 Git 系列 第一篇文章 开始阅读) 既然已经读到这了,就让我们开始吧。首先要弄明白一点,从根本上来讲 Git 是一套内容寻址 (content-addressable) 文件系统,在此之上提供了一个 VCS 用户界面。马上你就会学到这意味着什么。 早期的 Git (主要是 1.5 之前版本) 的用户界面要比现在复杂得多,这是因为它更侧重于成为文件系统而不是一套更精致的 VCS 。最近几年改进了 UI 从而使它跟其他任何系统一样清晰易用。即便如此,还是经常会有一些陈腔滥调提到早期 Git 的 UI 复杂又难学。 内容寻址文件系统这一层相当酷,在本章中我会先讲解这部分。随后你会学到传输机制和最终要使用的各种库管理任务。 9.1 底层命令 (Plumbing) 和高层命令 (Porcelain) 本书讲解了使用 checkout, branch, remote 等共约

Set集合

可紊 提交于 2019-12-09 21:50:36
文章目录 Set简述 1 HashSet 1.1不多比比,先看源码 **结论:HashSet是HashMap的一个实例。set的底层就是hashMap,所有的操作都是基于map的操作。** 1.2HashSet的存储过程 简述 **二叉树简介笔记** 扩展:加载因子 存储过程: 1.3HashSet存储的自定义类 去除重复值 重写hashCode()为什么prime是31? 2TreeSet 2.1TreeSet简述: ① TreeSet 底层 是基于TreeMap的`红黑树`的实现。 **②无序,不可重复, 可排序 ** 2.2问题 问题1:TreeSet为什么是无序的? 问题2:那么他的自然排序是怎么实现的呢? 排序方法1 使用无参构造方法TreeSet() 自定义类实现Comparable接口,并实现compareTo(T o)方法 排序方法2:使用构造方法TreeSet(Comparator<? super E> comparator) 创建Comparator接口的实现类,并实现compare(),传该实现类对象给构造方法 重写compareTo() 注意: 3LinkedHashSet HashSet的子类。该集合底层是哈希表与双向链表组成,插入与存储顺序相同。 有序不重复 遍历集合 Set简述 特点:不重复,无序(插入和存储顺序不同),只允许存在一个null