精华内容
下载资源
问答
  • 时间戳在数据库存储的类型

    万次阅读 2017-06-28 19:07:28
    int类型太短,到底应该用什么字段存才好呢? MySQL数据库:个人推荐用“bigint”,在Java中就是“long”长整型,没错它们是对应。 这样就可以直接用SQL语句直接比较了! 谢谢!希望可以对大家有帮助! 如果...

    在开发过程中“时间”是一个不可避免的大问题,

    在用SQL语句比较日期时问题尤其突出,

    int类型太短,到底应该用什么字段存才好呢?

    MySQL数据库:个人推荐用“bigint”,在Java中就是“long”长整型,没错它们是对应的。

    这样就可以直接用SQL语句直接比较了!

    谢谢!希望可以对大家有帮助!

    如果大家有更好的方法可以留言交流哦!


    展开全文
  • NSUserDefaults 存储类型存储对象

    千次阅读 2015-10-30 11:59:51
    一、了解NSUserDefaults以及它可以直接存储的类型  NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢...

    一、了解NSUserDefaults以及它可以直接存储的类型

          NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因。     

          使用 NSUserDefaults 存储自定义对象的最初,我们必须认识NSUserDefaults可以存储哪一些类型的数据,下面一一列出:

    NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.


            如果想要将上述数据类型的数据永久保存到NSUserDefaults中去,只需要简单的操作(一个Value 一个Key ),例如,想要保存一个NSString的对象,代码实现为:


    ?
    1
    2
    3
    4
        //将NSString 对象存储到 NSUserDefaults 中
        NSString *passWord = @"1234567";
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        [user setObject:passWord forKey:@"userPassWord"];


        将数据取出也很简单,只需要取出key 对应的值就好了,代码如下:

    ?
    1
    2
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        NSString *passWord = [ user objectForKey:@"userPassWord"];


    注意:对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性


    值得注意的是

            NSUserDefaults 存储的对象全是不可变的这一点非常关键,弄错的话程序会出bug),例如,如果我想要存储一个 NSMutableArray 对象,我必须先创建一个不可变数组(NSArray)再将它存入NSUserDefaults中去,代码如下:


    ?
    1
    2
    3
    4
    5
        NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"123",@"234", nil];
        NSArray * array = [NSArray arrayWithArray:mutableArray];
         
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        [user setObject:array forKey:@"记住存放的一定是不可变的"];


    取出数据是一样的,想要用NSUserDefaults中的数据给可变数组赋值

    先给出一个错误的写法:


    ?
    1
    2
    3
    4
    5
        /*-------------------------错误的赋值方法-------------------*/
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
         
        //这样写后,mutableArray 就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现bug
        NSMutableArray *mutableArray = [user objectForKey:@"记住存放的一定是不可变的"];


    正确的写法:

    ?
    1
    2
    3
    4
    5
        /*-------------------------正确的赋值方法-------------------*/
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
         
        //可以用alloc 方法代替
        NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:[user objectForKey:@"记住存放的一定是不可变的"]];


    二、使用 NSUserDefaults 存储自定义对象

    1、将自定义类型转换为NSData类型

          当数据重复而且多的时候(例如想存储全班同学的学号,姓名,性别(这个数据量可能太大了 )),如果不用SQLite 存储 (多数据最好还是用这个),你可以选择使用归档,再将文件写入本地,但是这种方式和 NSUserDefaults 比起来麻烦多了(因为NSFileManage 本来就挺复杂) ,但是问题是,NSUserDefaults 本身不支持自定义对象的存储,不过它支持NSData的类型,下面举一个例子来介绍。


    我们先建立一个叫Student 的类,这个类里有三个属性(学号,姓名,性别),如图:

    我们要做的就是将Student类型变成NSData类型 ,那么就必须实现归档:

    这里要实现 在.h 文件中申明 NSCoding 协议,再 在 .m 中实现 encodeWithCoder 方法 和 

    initWithCoder 方法就可以了 : 


    .h 中修改文件如图 :


    .m中加入代码 :

    这样做就可以将自定义类型转变为NSData类型了


    2、将自定义类型数据存入 NSUserDefaults 中

        如果要存储全班同学的信息,我们可以建一个NSMutableArray 来存放全班同学的信息(里面存储的全是NSData对象)在需要存储的地方加入代码:

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //首先,要建立一个可变数组来存储 NSDate对象
     
         Student *student = [[Student alloc] ini];
          
        //下面进行的是对student对象的 name , studentNumber ,sex 的赋值
        student.name = @"lady-奕奕";
        student.studentNumber = @"3100104006";
        student.sex = @"女";
         
        //这是一个存放全班同学的数组
        NSMutableArray * dataArray = [NSMutableArray arrayWithCapacity:50];
         
        //将student类型变为NSData类型
        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];
         
        //存放数据的数组将data加入进去
        [dataArray addObject:data];


    如果你只想存一个人的信息,你可以直接将NSData存入NSUserDefaults中 :

    ?
    1
    2
    3
    4
        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];   
         
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        [user setObject:data forKey:@"oneStudent"];


    如果你想存储全班同学的信息,你还要用一个for循环将data 放入 dataArray中,这里具体的操作就不实现了,只给出存放的代码:

    ?
    1
    2
    3
    4
    5
       //记住要转换成不可变数组类型
        NSArray * array = [NSArray arrayWithArray:dataArray];
         
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        [user setObject:array forKey:@"allStudent"];


    NSUserDefaults中取出数据在还原也很简单

    例如还原一个学生的数据:

    ?
    1
    2
    3
    4
    5
    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
      
     NSdData *data = [user objectForKey:@"oneStudent"];
         
     Student *student = [NSKeyedUnarchiver unarchiveObjectWithData:data];


    总之,NSUserDefaults 在我们编写代码中是最常用的一个永久保存数据的方法,也是最简单的。

    展开全文
  • 用于数据库属性类型与java存储的类型做转换,例如枚举类型,在存储到数据库时或者在数据库取出来时,不用手动转换。 必须实现接口AttributeConverter<X,Y>,源码如下: package javax.persistence;...

       用于数据库属性类型与java存储的类型做转换,例如枚举类型,在存储到数据库时或者在数据库取出来时,不用手动转换。

    必须实现接口AttributeConverter<X,Y>,源码如下:

    package javax.persistence;
    
    /**
     * A class that implements this interface can be used to convert
     * entity attribute state into database column representation
     * and back again.
     * Note that the X and Y types may be the same Java type.
     *
     * @param X the type of the entity attribute
     * @param Y the type of the database column
     *
     * @since Java Persistence 2.1
     */
    public interface AttributeConverter<X,Y> {
    	/**
    	 * Converts the value stored in the entity attribute into the
    	 * data representation to be stored in the database.
    	 *
    	 * @param attribute the entity attribute value to be converted
    	 * @return the converted data to be stored in the database column
    	 */
    	public Y convertToDatabaseColumn (X attribute);
    
    	/**
    	 * Converts the data stored in the database column into the
    	 * value to be stored in the entity attribute.
    	 * Note that it is the responsibility of the converter writer to
    	 * specify the correct dbData type for the corresponding column
    	 * for use by the JDBC driver: i.e., persistence providers are
    	 * not expected to do such type conversion.
    	 *
    	 * @param dbData the data from the database column to be converted
    	 * @return the converted value to be stored in the entity attribute
    	 */
    	public X convertToEntityAttribute (Y dbData);
    }
    

    convertToDatabaseColumn(X attribute)用于把输入的类型转成数据库存储的类型

    convertToEntityAttribute (Y dbData) 用于把数据库搜出来的类型转成实体中想要的类型

     

    下面看实例:

    我自己定义了一个枚举

    package com.xhx.springboot.enums;
    
    public enum GenderEnum{
        MAN("1","男"),WOMAN("2","女");
        GenderEnum(String code,String value){
            this.code = code;
            this.value = value;
        }
        private String code;
        private String value;
        private String description;
    
        public String getCode() {
            return this.code;
        }
    
        public String getValue() {
            return this.value;
        }
    
        public String getDescription() {
            return this.description;
        }
    
    }

     

    定义一个转换器类,实现AttributeConverter<X,Y>接口

    package com.xhx.springboot.converters;
    
    import com.xhx.springboot.enums.GenderEnum;
    
    import javax.persistence.AttributeConverter;
    import java.util.Arrays;
    
    public class GenderEnumConverter implements AttributeConverter<GenderEnum,String> {
        @Override
        public String convertToDatabaseColumn(GenderEnum genderEnum) {
            return genderEnum.getCode();
        }
    
        @Override
        public GenderEnum convertToEntityAttribute(String s) {
            return Arrays.stream(GenderEnum.values()).filter(en -> en.getCode().equals(s)).findFirst().orElse(null);
        }
    }
    

    在实体类属性上,加入@Convert注解,把转换器设置成上面实现的转换器。存储值时就会调用convertToDatabaseColumn方法,把code存入数据库,查询值时就会调用convertToEntityAttribute方法,转成枚举值,赋值到实体类中。

    package com.xhx.springboot.entity;
    
    import com.xhx.springboot.converters.GenderEnumConverter;
    import com.xhx.springboot.enums.GenderEnum;
    
    import javax.persistence.*;
    
    /**
     * @author xuhaixing
     * @date 2018/4/28 10:29
     */
    @Entity
    @Table(name = "USER")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private int id;
        private String name;
        private int age;
        @Convert(
                converter = GenderEnumConverter.class
        )
        private GenderEnum gender;
        @Version
        private int version;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public GenderEnum getGender() {
            return gender;
        }
    
        public void setGender(GenderEnum gender) {
            this.gender = gender;
        }
    
        public int getVersion() {
            return version;
        }
    
        public void setVersion(int version) {
            this.version = version;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    ", gender=" + gender +
                    ", version=" + version +
                    '}';
        }
    }
    

     

    写了一个测试用例:调用controller接口,一个是添加数据,一个是查询数据

    package com.xhx.springboot;
    
    import com.xhx.springboot.controller.UserController;
    import com.xhx.springboot.entity.User;
    import com.xhx.springboot.enums.GenderEnum;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class Springboot5ApplicationTests {
    
        @Autowired
        private UserController userController;
    
        @Test
        public void testConvertToDB() {
            User user = new User();
            user.setName("小徐");
            user.setAge(25);
            user.setGender(GenderEnum.MAN);
            userController.add(user); //GenderEnum类型已经转换
        }
    
        @Test
        public void testDBToEntity() {
            User user = userController.findById(2);//GenderEnum类型已经转换
            System.out.println(user);
            //User{id=2, name='小徐', age=25, gender=MAN, version=0}
        }
    
    }
    

     

    执行第一个后,数据库中已经有值,如下图

    执行第二个返回结果如上面注释。

     

    实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

    展开全文
  • 三种存储类型和三种存储方式

    万次阅读 多人点赞 2019-01-22 17:07:39
    存储和文件存储是我们比较熟悉两种主流的存储类型,而对象存储(Object-based Storage)是一种新网络存储架构,基于对象存储技术设备就是对象存储设备(Object-based Storage Device)简称OSD。 本质是一样...

    在这里插入图片描述
    三种存储方式:DAS、SAN、NAS
    三种存储类型:块存储、文件存储、对象存储

    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。

    本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。

    分布式存储的应用场景相对于其存储接口,现在流行分为三种:

    对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3

    块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)

    文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

    块存储

    在这里插入图片描述
    以下列出的两种存储方式都是块存储类型:

    • DAS(Direct Attach STorage):是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,可以说是一种应用较为早的技术实现。
    • SAN(Storage Area Network):是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 Fibre- Channels。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。

    典型设备:磁盘阵列、硬盘
    块存储主要是将裸磁盘空间整个映射给主机使用的。块存储就是在物理层这个层面对外提供服务,使用它的系统,有用自己的文件系统格式化。这样一旦被一个系统使用,就独占了。
    就是说例如:磁盘阵列里面有5块硬盘,然后可以通过划逻辑盘、做Raid、或者LVM等方式逻辑划分出N个逻辑的硬盘。但是逻辑盘和物理盘是两个完全不同的概念。假设每个硬盘100G,共有5个硬盘,划分为逻辑盘也为5个,每个100G,但是这5个逻辑盘和原来的5个物理盘意义完全不同了。例如第一个逻辑盘第一个20G可能来自物理盘1,第二个20G来自物理盘2,所以逻辑盘是多个物理盘逻辑虚构出来的硬盘。
    接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是无法区分到底是物理盘还是逻辑盘,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没区别,至少操作系统感知上没有区别的。
    在此方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置的硬盘无差异。

    优点
    (1)这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护;
    (2)可以将多块廉价的硬盘组合起来,称为一个大容量的逻辑盘对外提供服务,提高了容量;
    (3)写入数据时,由于是多块磁盘组合出来的逻辑盘,所以几块硬盘可以并行写入的,提升了读写效率;
    (4)很多时候块存储采用SAN架构组网,传输速度以及封装协议的原因,使得传输速度和读写效率得到提升

    缺点
    (1)采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要购买光纤交换机,造价成本高;
    (2)主机之间数据无法共享,在服务器不做集群的情况下,块存储裸盘映射给主机,在格式化使用后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使用,无法共享数据
    (3)不利于不同操作系统主机间的数据共享:因为操作系统使用不同的文件系统,格式化后,不同的文件系统间的数据是共享不了的。 例如一台win7,文件系统是FAT32/NTFS,而linux是EXT4,EXT4是无法识别NTFS的文件系统的

    使用场景
    docker容器、虚拟机磁盘存储分配。
    日志存储。
    文件存储。

    文件存储

    在这里插入图片描述
    通常,NAS产品都是文件级存储。
    NAS(Network Attached Storage):是一套网络储存设备,通常是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。例如教育、政府、企业等数据存储应用。
    它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。

    典型设备:FTP、NFS服务器
    为了克服文件无法共享的问题,所以有了文件存储。
    文件存储,就是在文件系统一层对外提供服务,系统只用访问文件系统一级就可以,各个系统都可以根据接口取访问。
    文件存储也有软硬一体化的设备,但是其实一台普通的PC机,只要装上合适的操作系统和软件,就可以假设FTP与NFS服务了,架上该类服务之后的服务器,就是文件存储的一种了。
    主机A可以直接对文件存储进行文件的上传和下载,与块存储不同,主机A是不需要再对文件存储进行格式化的,因为文件管理功能已经由文件存储自己搞定了。

    优点
    (1)造价低:随便一台机器就可以,另外普通的以太网就可以,根本不需要专用的SAN网络,所以造价低
    (2)方便文件共享

    缺点
    (1)读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承受,相比起磁盘阵列动不动就十几上百块硬盘同时读写,速率慢了许多。

    使用场景
    日志存储。
    有目录结构的文件存储。

    对象存储

    在这里插入图片描述
    典型设备:内置大容量硬盘的分布式服务器

    对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。

    之所以出现对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬各自的优点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写块,利于共享的存储出来呢?于是就有了对象存储。

    首先,一个文件包含了属性(术语:metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(数据)。

    像FAT32这种文件系统,是直接将一份文件与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(例如4M的文件,假设文件系统要求一个块4K,那么就将文件打散称为1000个小块),再写进硬盘里,过程中没有区分数据和metadata的。而每个块最后会告知你下一个要读取的块地址,然后一直这样顺序的按图索骥,最后完成整份文件的所有块的读取。
    这种情况下读写速率很慢,因为就算你有100个机械臂在读写,但是由于你只有读取到第一个块,才能知道下一个块在哪里,其实相当于只能有1个机械臂在实际工作。

    而对象存储则将元数据独立出来了,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息)而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪里OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
    这时候由于是3台OSD同时对外传输数据,所以传输的速度就会加快了,当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。

    另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在共享方面的困难了,也解决了文件共享方面的问题。所以对象存储的出现,很好的结合了块存储和文件存储的优点。

    关键技术

    对象存储文件系统的关键技术是什么?
    (1)分布元数据
    (2)并发数据访问,对象存储体系结构定义了一个新的、更加智能化的磁盘接口OSD

    什么是OSD?

    存储局域网(SAN)和网络附加存储(NAS)是我们比较熟悉的两种主流网络存储架构,而对象存储是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备,简称:OSD

    在存储对象中通过什么对象方式访问对象?

    在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问对象

    OSD的主要功能是什么?
    (1)数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写;
    (2)智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能的支持对象的预取,从而可以优化磁盘的性能
    (3)每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。

    优点
    具备块存储的读写高速。
    具备文件存储的共享等特性。

    使用场景: (适合更新变动较少的数据)
    图片存储。
    视频存储。

    为什么对象存储兼具块存储和文件存储的好处,还要使用块存储和文件存储呢?
    (1)有一类应用是需要存储直接裸盘映射的,例如数据库。
    因为数据需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对裸盘进行格式化的,所以是不能够采用其他已经被格式化为某种文件系统的存储的。此类应用更合适使用块存储。
    (2)对象存储的成本比起普通的文件存储还要较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。

    三种存储类型差异

    在这里插入图片描述

    三种存储方式差异

    在这里插入图片描述
    在这里插入图片描述
    参考资料:
    http://www.cnblogs.com/hukey/p/8323853.html
    https://mp.weixin.qq.com/s/6yQoQTrIInL2FHCu1-Okww
    https://blog.csdn.net/xiaoliuliu2050/article/details/79962841

    展开全文
  • float类型的存储方式

    千次阅读 2019-05-12 18:53:19
    float类型的存储方式float的存储格式实例分析示例代码GDB查看实际存储 float的存储格式 float类型又称为单精度浮点类型,在 IEEE 754-2008 中是这样定义它结构: S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 31 30 23 ...
  • 全局变量的存储类型

    千次阅读 2017-07-16 17:41:54
    全局变量的存储类型 在函数外部定义变量是全局变量,它作用域是从变量定义点开始,到本程序文件末尾。全局变量分为两种:1.extern声明变量 2.static声明变量。 当未对全局变量指定存储类别时,隐含为...
  • 数据库可以存储哪些类型的数据

    千次阅读 2019-07-19 17:21:25
    baidu了很久,也不知道是不是因为baidu垃圾,才入门数据库,不知道数据库能存储哪些类型的数据,网上搜了半天没有搜到答案,因此,自己理解就是电脑上一切数据都是按着二进制来存储,因此数据库是可以存储图片和...
  • mysql的存储引擎类型和索引类型

    千次阅读 2016-07-08 23:29:38
    mysql的存储引擎,常用有innodb和myisam innodb支持外键,事务,行锁,安全性更高,写入快查询慢,适合大数据量 myisam查询快写入慢,支持全文索引,表锁(MyISAM同一个表上读锁和写锁是互斥,容易阻塞), ...
  • mysql使用合适的存储类型存储数据

    千次阅读 2019-02-01 17:46:00
    在mysql中,存储时间可以使用varchar类型,也可以使用datetime,timestamp,或者是date类型。但是还可以使用int类型,只需要通过一些函数转换即可。  例如建立下面一个表: CREATE TABLE test( id INT AUTO_...
  • 变量存储类型

    千次阅读 2018-08-01 15:40:47
    一、 首先来说说数据的类型,所有的数据都有两种类型,一是常见的数据类型,如int,float等,一种便是今天的重头戏,存储类型。总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量...
  • Mysql日期存储字段类型的选择

    千次阅读 2018-02-28 13:22:42
    在实际开发项目中发现数据库...4个字节存储,INT长度是4个字节,存储空间上比datatime少,int索引存储空间也相对较小,排序和查询效率相对较高一点点 可读性极差,无法直观看到数据,可能让你很恼火 datetime 8...
  • 二维码可以存储的数据类型

    万次阅读 2017-07-19 12:30:30
    二维码可以存储的数据类型 Posted on 2013-04-15 13:38 蝈蝈俊 阅读(587) 评论(0) 编辑 收藏 有些网站提供了二维码的API,比如google的chart提供的QR。QRcode是二维码的一种。QRcode可以存储最多4296个字母...
  • Redis存储List类型数据

    万次阅读 2018-10-11 11:12:20
    Redis存储支持的类型没有object,虽然有支持list,但是它只支持list&lt;String&gt;。 现在有两个方法存储对象与泛型。 1、用序列化与反序列化。 2、json  本文采用的是json格式来存储object类型。 ...
  • c语言 存储类型

    千次阅读 2018-03-09 14:02:41
    c中每一个变量和函数都有两个属性:类型(type)和存储类型(storage class).存储类型分别是auto(自动),extern(外部),register(寄存器),static(静态) 1.auto 在函数体中定义变量缺省是auto. 当进入代码块(block)...
  • 在C语言中,对变量的存储类型说明有以下四种: auto 自动变量 (动态存储) register 寄存器变量(动态存储) extern 外部变量(静态存储) static 静态变量(静态存储) 所谓存储类型是指变量占用内存空间...
  • Redis中HashSet存储类型

    千次阅读 2017-03-30 23:06:38
    所以该类型非常适合于存储值对象信息。如Username、Password和Age等。如果Hash中包含很少字段,那么该类型的数据也将仅占用很少磁盘空间。每一个Hash可以存储4294967295个键值对。 HashSet相关命令 (1)...
  • 在oracle数据库中存储BLOB类型的数据

    万次阅读 2018-06-11 21:27:01
    在oracle中存储BLOB类型的数据,不能和普通String类型一样存储,而是要通过一个唯一标识来帮助储存更新,具体实现代码如下:public boolean putSignPic(String uuid, byte[] signPic) throws SQLException{ ...
  • C变量和函数的存储类型

    千次阅读 2014-10-02 13:18:30
    在上一篇《C程序内存管理》文章中,已经知道了C语言编译后可执行文件的存储结构以及运行时内存布局,本文则记录C语言中变量和函数的存储类型,以及在内存中一些行为。 C语言中变量声明/定义格式如下: ...
  • C语言存储类型

    万次阅读 多人点赞 2013-05-19 18:29:03
    看到一篇文章讲解c的存储类型,讲解了c语言中各种变量的存储类型,而且是从进程、内存角度讲解,以前从没有这样理解过,觉得挺有用,在这里转载过来。   首先要来理解一下可执行文件加载进内存后形成...
  • 类型和引用类型的存储

    千次阅读 2011-06-24 09:59:00
     以下转载: 一、值类型和引用类型变量的存储 首先,变量是存储信息基本单元,而对于计算机内部来说,变量就相当于一块内存空间。 C#中变量可以划分为值类型和引用类型两种: 值类型:简单类型、结构类型、...
  • 一、逻辑结构类型集合:数据元素间仅同属一个集合,无其他关系。线性结构:1:1关系,开始和终端节点都是唯一,除了开始节点和终端节点以外,其余节点都有且仅有一个前驱节点,有且仅有一个后继节点。树形结构:1:n...
  • 变量的存储类型

    千次阅读 2008-05-18 16:46:00
    ⑵静态存储区:存放程序中定义静态变量。⑶动态存储区:存放程序中定义动态变量。动态变量:当程序执行到动态变量作用域开始处时,才为它分配内存;而执行到它作用域结束处时,收回为它分配内存。该...
  • C语言中四种存储类型的详解

    千次阅读 2019-03-29 20:51:45
    变量和函数属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种。 一、auto存储类型 用auto存储类型说明变量都是局部于某个程序范围内...
  • 常见3种存储类型

    千次阅读 2019-07-06 07:52:31
    常见3种存储: 1.DAS 直连存储 主机客户端直接和存储设备连接,存储也可放到机箱内部,(内部连接协议ATA也就是IDE,也有使用SATA协议),也会用到SCSI和FC协议 范围:范围有限,距离短有,多少米范围内,...
  • sdcc 存储类型关键字

    千次阅读 2017-04-26 23:24:53
    一、存储类型关键字1.1 sdcc中特殊关键字使用sdcc提供和keil一样特殊关键字来指定变量的存储类型,和keil不同是,sdcc在使用c51专用特殊关键字时,要用两个下划线作为前缀,比如申明一个idata存储类型的变量...
  • 日常开发中我们常常要用到保存数据,Android中常用的存储方式有SQLite,sharedPreferences 等,当然也有各自应用场景,前者适用于保存较多数据情形,后者责倾向于保存用户偏好设置比如某个checkbox选择状态,...
  • memcache与redis的存储类型

    千次阅读 2017-11-19 16:15:08
    memcache支持简单数据类型,想要存入复杂数据类型必须把复杂数据类型转变成简单数据类型。 redis支持五大数据类型: 1.String(字符串) string类型是二进制安全。意思是redisstring可以包含任何...
  • 时间戳在数据库中的存储类型

    千次阅读 2020-01-02 14:20:23
    时间戳在数据库是一个重要维度,如何决定时间戳是什么类型呢? | | 优势 | 劣势 | | | 1. 存储空间少 2. 方便计算 3. 处理效率高 | 1. 数据不直观 2. 显示时需要做转换 | | 文本类型(各种Format)| 1. 数据直观...
  • Redis数据库存储类型的介绍和选择

    千次阅读 2018-07-26 09:43:57
    ​ 字符串类型是 Redis 中最为基础数据存储类型,它在 Redis 中是二进制安全,这便意味着该类型可以接受任何格式数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 212,351
精华内容 84,940
关键字:

存储的类型