Java数据库和数据存储有哪些知识点需要学习

  • 时间:
  • 6897人关注

这是一篇关于java相关的编程问答内容,被696位程序员关注,内容涉及到java菜鸟教程数据库、数据库、数据存储、Java菜鸟教程数据库和数据存储等,由殳阿柒编辑补充,一起来看下大家的回答。

Java菜鸟教程数据库和数据存储

一,MySql---关系型数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

二,MongoDb---分布式文件存储的数据库

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

三,Redis---key-value存储系统

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是britishIndianOceanterritory,即英属印度洋领地)

目前,Vmware在资助着redis项目的开发和维护。

四,PostgreSQL---自由的对象-关系数据库服务器(数据库管理系统)

PostgreSQL是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如MySQL和Firebird),和专有系统(比如Oracle、Sybase、IBM的DB2和MicrosoftSQLServer)之外的另一种选择。

PostgreSQL不寻常的名字导致一些读者停下来尝试拼读它,特别是那些把SQL拼读为"sequel"的人。PostgreSQL开发者把它拼读为"post-gress-Q-L"。它也经常被简略念为"postgres"。

事实上,PostgreSQL的特性覆盖了SQL-2/SQL-92和SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备,比如IP类型和几何类型等;其次,PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL的质量日益提高。

从技术角度来讲,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端C接口。而不同的客户端接口都是源自这个C接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等,同时也要指出的是,PostgreSQL对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是PostgreSQL一大优点。

五,Memcache---一套分布式的高速缓存系统

MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(LeastRecentlyUsed,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。[2]

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

Memcache是danga的一个项目,最早是LiveJournal服务的,最初为了加速LiveJournal访问速度而开发的,后来被很多大型的网站采用。

Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。

六,SQLite---轻型的数据库,是遵守ACID的关系型数据库管理系统

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快

码农之家
精选回答2:java8中NIO缓冲区(Buffer)的数据存储详解

1小时39分钟前回答

java8新特性NIO缓冲区(Buffer)的数据存储。

ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,

DoubleBuffer.

1、缓冲区在java nio中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。根据数据类型不同(boolean除外),提供了相应类型的缓冲区。

ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,

DoubleBuffer.

上述缓冲区的管理方式几乎一致,通过allocate()获取缓冲区。

//分配一个指定大小的缓冲区ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

java8中NIO缓冲区(Buffer)的数据存储详解

2、缓冲区中的四个核心属性:

capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

3、limit:界限,表示缓冲区中可以操作数据的大小。(limit后所得数据不能进行读写)。

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

4、position:位置,表示缓冲区中正在操作数据的位置。

position<=limit<=capacity

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

5、ByteBuffer的基本使用。

缓冲区存取数据的两个核心方法:

put():存入数据到缓冲区

 

//分配一个指定大小的缓冲区

ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

    

System.out.println(byteBuffer.position());

System.out.println(byteBuffer.limit());;

System.out.println(byteBuffer.capacity());

    

//利用put方法存入数据到缓冲区中

String str = "abcde";

byteBuffer.put(str.getBytes());

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

6、ByteBuffer的基本使用。

缓冲区存取数据的两个核心方法:

get():获取缓冲区的数据

 

//4、利用get()读取缓冲区的数据

    byte[] dst = new byte[byteBuffer.limit()];

    byteBuffer.get(dst);

    System.out.println(new String(dst,0,dst.length));

java8中NIO缓冲区(Buffer)的数据存储详解

7、调用flip()读数据模式之后

//3、切换成读取数据模式byteBuffer.flip();

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

8、调用flip()操作之后:

java8中NIO缓冲区(Buffer)的数据存储详解

9、rewind()方法:可重复读:

byteBuffer.rewind();

System.out.println("----------rewind()-------------");

System.out.println(byteBuffer.position());

System.out.println(byteBuffer.limit());;

System.out.println(byteBuffer.capacity());

java8中NIO缓冲区(Buffer)的数据存储详解

java8中NIO缓冲区(Buffer)的数据存储详解

展开问题

参考资料

  • 大话Java:从零基础到数据库、Web开发

    大话Java:从零基础到数据库、Web开发

    大话Java 作者:黄彬华编著 出版时间:2009-4-1 【图书简介】 本书以漫画的形式,由浅入深、循序渐进地介绍Java编程的常用技术和方法,内容涵盖了Java基本语法结构、面向对象特征、集合框架体系、异常处理、GUI编程、MySQL数据库、JDBC数据库编程、Servlet、JSPWeb开发等。本书并不单单从基础知识的角度来讲解Java,而是从解决问题的角度来介绍Java语言。书中介绍的大量实用的开发案例,既能让读者巩固每章的知识,又可以让读者学以致用,激发编程自豪感

    大小:66.74MBJava开发

    立即下载
  • 黑马程序员面试题汇总(java/数据库/前端)

    黑马程序员面试题汇总(java/数据库/前端)

    此套教程整理了网上总结的面试题,有java面试题,jq面试题,jsp、servlet、ajax面试题,mysql面试题,oracle面试题,redis教案,也有最近时间总结的公司面试题,涉及的层面虽然不是很多,但是应对面试 应该还是可以的。 文件夹大概有20兆的大小,所以面试题数量也是不少的,里面也包含了一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一个宝典大概有500页左

    大小:20.4 MB程序员面试

    立即下载

更多回答

韩菲菲:34小时27分钟前回答

java8中NIO缓冲区(Buffer)的数据存储详解

java8新特性NIO缓冲区(Buffer)的数据存储。 ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer, DoubleBuffer. 1、缓冲区在java nio中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。根据数据类型不同(boolean除外),提供了相应类型的缓冲区。 ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer, DoubleBuffer. 上述缓冲区的管理方式几乎一致,通过allocate()获取缓冲区。 //分配一个指定大小的缓冲区ByteBuffer byteBuffer = ByteBuffer.allocate(1024); 2、缓冲区中的四个核心属性: capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。 3、limit:界限,表示缓冲区中可以操作数据的大……