精华内容
下载资源
问答
  • java 数据库中存储对象 上次更新时间:2020年1月 尽管贪睡按钮可能是闹钟上最常用按钮,但即使是简单AlarmClock类也需要更多功能。 例如,您可能想控制闹钟小睡模式下停留多长时间。 为了添加这样功能,您...

    java 数据库中存储对象

    上次更新时间:2020年1月

    尽管贪睡按钮可能是闹钟上最常用的按钮,但即使是简单的AlarmClock类也需要更多功能。 例如,您可能想控制闹钟在小睡模式下停留多长时间。 为了添加这样的功能,您需要了解Java如何控制数据。

    开发人员使用Java中的变量来保存数据,所有变量都具有数据类型和名称。 数据类型确定变量可以保存的值。 在本教程中,您将学习整数类型如何保存整数,浮点类型如何保存实数以及字符串类型如何保存字符串。 然后,您将开始在Java类中使用实例变量。

    变量和原始类型

    称为基本类型 ,整数和浮点类型是Java中最简单的数据类型。 以下程序说明了整数类型,它可以同时包含正整数和负整数。 该程序还说明了注释,这些注释记录了您的代码,但丝毫不影响该程序。

    /*
      * This is also a comment. The compiler ignores everything from
      * the first /* until a "star slash" which ends the comment.
      *
      * Here's the "star slash" that ends the comment.
      */
    public class IntegerTest {
      public static void main(String[] args) {
        // Here's the declaration of an int variable called anInteger,
        // which you give an initial value of 100.
        int anInteger = 100;      // Declare and initialize anInteger
        System.out.println(anInteger); // Outputs 100
        // You can also do arithmetic with primitive types, using the
        // standard arithmetic operators.
        anInteger = 100 + 100;
        System.out.println(anInteger); // Outputs 200
      }
    }

    Java还使用浮点类型,该类型可以包含实数,即包含小数位的数字。 这是一个示例程序:

    public class DoubleTest {
      public static void main(String[] args) {
        // Here's the declaration of a double variable called aDouble.
        // You also give aDouble an initial value of 5.76.
        double aDouble = 5.76;     // Declare and initialize aDouble
        System.out.println(aDouble);  // Outputs 5.76
        // You can also do arithmetic with floating point types.
        aDouble = 5.76 + 1.45;
        System.out.println(aDouble);  // Outputs 7.21
      }
    }

    尝试运行上面的程序。 请记住,必须先编译才能运行它们:

    javac *.java
    java IntegerTest
    java DoubleTest

    Java使用四种整数类型和两种浮点类型,它们都拥有不同的数字范围并占用不同的存储空间,如下表所示。

    整体类型

    类型 字节 整数
    大小(位) 8 16 32 64
    范围 -128至127 -32,768至32,767 -2,147,483,648至2,147,483,647 -2 63至2 63 -1

    浮点类型(IEEE 754格式)

    类型 单精度浮点 双精度浮点
    大小(位) 32 64
    范围 +/- 1.18x10 -38至+/- 3.4x10 38 +/- 2.23x10 -308至+/- 1.8x10 308

    字符串类型保存字符串,并以与整数和浮点类型处理数字不同的方式处理字符串。 Java语言包括一个String类来表示字符串。 您可以使用String类型声明一个字符串,并使用带引号的字符串(包含在双引号中的一系列字符)对其进行初始化,如下所示。 您还可以使用+运算符组合两个字符串。

    // Code fragment
    // Declaration of variable s of type String,
    // and initialization with quoted string "Hello."
    String s = "Hello";
    // Concatenation of string in s with quoted string " World"
    String t = s + " World";
    System.out.println(t);     // OutputsHello World
    

    可变范围

    除类型外, 范围也是变量的重要特征。 范围确定何时创建和销毁变量以及开发人员可以在程序中访问该变量的位置。 在程序中声明变量的位置决定了变量的范围。

    到目前为止,我已经讨论了局部变量 ,该局部变量包含您在方法中使用的临时数据。 您可以在方法内部声明局部变量,并且只能从这些方法内部访问它们。 这意味着你只能检索局部变量anInteger ,您在使用IntegerTestaDouble ,您在使用DoubleTest ,从他们被宣布和其他地方的主要方法。

    您可以在任何方法中声明局部变量。 下面的示例代码在AlarmClock snooze()方法中声明了一个局部变量:

    public class AlarmClock {
         public void snooze() {
             // Snooze time in millisecond = 5 secs
             long snoozeInterval = 5000;
             System.out.println("ZZZZZ for: " + snoozeInterval);
         }
    }

    您只能从snoozeInterval snooze()方法进入snoozeInterval ,这是您声明snoozeInterval, as shown here:

    public class AlarmClockTest {
      public static void main(String[] args) {
        AlarmClock aClock = new AlarmClock();
        aClock.snooze();        // This is still fine.
        // The next line of code is anERROR .
        // You can't access snoozeInterval outside the snooze method.
        snoozeInterval = 10000;
      }
    }
    

    方法参数

    方法参数的范围类似于局部变量,是另一种变量。 方法参数将参数传递给方法。 声明该方法时,可以在参数列表中指定其参数。 您在调用方法时传递参数。 方法参数的作用与局部变量类似,因为它们位于它们所链接的方法的范围内,并且可以在整个方法中使用。 但是,与局部变量不同,方法参数在调用方法时从调用方获取值。 这是闹钟的修改形式,使您可以传递snoozeInterval

    public class AlarmClock {
      public void snooze(long snoozeInterval) {
        System.out.println("ZZZZZ for: " + snoozeInterval);
      }
    }
    public class AlarmClockTest {
      public static void main(String[] args) {
        AlarmClock aClock = new AlarmClock();
        // Pass in the snooze interval when you call the method.
        aClock.snooze(10000);  // Snooze for 10000 msecs.
      }
    }

    成员变量:对象如何存储数据

    局部变量很有用,但是由于它们仅提供临时存储,因此其值受到限制。 由于它们的生命周期跨越声明它们的方法的长度,因此局部变量与记事本进行比较,该记事本在您每次接到电话时出现,但在挂断电话时消失。 该设置对于记笔记非常有用,但是有时您需要一些更永久的东西。 程序员要做什么? 输入成员变量

    成员变量(其中有实例静态两个)构成类的一部分。

    范围和寿命可变

    开发人员实现实例变量以包含对类有用的数据。 一个实例变量在其范围和生存期方面与本地变量不同。 整个类构成一个实例变量的范围,而不是声明它的方法的范围。 换句话说,开发人员可以在类中的任何位置访问实例变量。 另外,实例变量的生存期不依赖于该类的任何特定方法。 也就是说,它的生存期就是包含它的实例的生存期。

    实例是从类定义中设计的蓝图创建的实际对象。 您在类定义中声明实例变量,从而影响从蓝图创建的每个实例。 每个实例都包含那些实例变量,并且变量中保存的数据因实例而异。

    考虑AlarmClock类。 snoozeInterval传递到snoozeInterval snooze()方法中并不是一个很好的设计。 想象一下,每次您摸索到贪睡按钮时都必须在闹钟上输入贪睡间隔。 而是给整个闹钟一个snoozeInterval 使用AlarmClock类中的实例变量完成此操作,如下所示:

    public class AlarmClock {
      // You declare snoozeInterval here. This makes it an instance variable.
      // You also initialize it here.
      long m_snoozeInterval = 5000;   // Snooze time in millisecond = 5 secs.
      public void snooze() {
        // You can still get to m_snoozeInterval in an AlarmClock method
        // because you are within the scope of the class.
        System.out.println("ZZZZZ for: " + m_snoozeInterval);
       }
    }

    您可以在声明实例变量的类中的几乎任何位置访问实例变量。 为了对此进行技术性介绍,您可以在类范围内声明实例变量,然后可以从该范围内的几乎任何位置检索它。 实际上,您可以在开始类的第一个大括号和右括号之间的任何位置访问变量。 由于您还在类范围内声明方法,因此它们也可以访问实例变量。

    只要实例存在,您还可以从类外部访问实例变量,并且您具有引用该实例的变量。 要通过实例检索实例变量,可以将点运算符与实例一起使用。 这可能不是访问变量的理想方法,但出于说明目的,现在以这种方式完成该操作:

    public class AlarmClockTest {
      public static void main(String[] args) {
        // Create two clocks. Each has its own m_snoozeInterval
        AlarmClock aClock1 = new AlarmClock();
        AlarmClock aClock2 = new AlarmClock();
        // Change aClock2
        // You'll soon see that there are much better ways to do this.
        aClock2.m_snoozeInterval = 10000;
        aClock1.snooze();    // Snooze with aClock1's interval
        aClock2.snooze();    // Snooze with aClock2's interval
      }
    }

    尝试一下该程序,您会看到aClock1的间隔为5,000,而aClock2的间隔为10,000。 同样,每个实例都有其自己的实例数据。

    别忘了,类定义只是一个蓝图,因此在您从该蓝图创建实例之前,实例变量实际上并不存在。 一个类的每个实例都有自己的实例变量副本,并且该蓝图定义了这些实例变量将是什么。

    闹钟变量的两个实例 Java世界

    图1.一个带有实例变量的AlarmClock的两个实例

    封装形式

    封装是面向对象编程的基础之一。 使用封装时,用户通过公开的行为与类型进行交互,而不是直接与内部实现进行交互。 通过封装,您可以隐藏类型实现的详细信息。 在Java中,封装基本上转化为以下简单准则:“不要直接访问对象的数据;请使用其方法。”

    这是一个基本的想法,但它减轻了我们作为程序员的生活。 例如,假设您想指示一个Person对象站起来。 如果没有封装,您的命令可能会如下所示:“好吧,我想您需要在腿的前面收紧这块肌肉,在腿的后面收紧这块肌肉。嗯-需要弯曲腰部也是如此。哪些肌肉引发了这种运动?需要收紧这些肌肉,松开那些。哎呀!忘了另一条腿。该死的,看它-不要翻倒……” 使用封装,您只需要调用standUp()方法。 很简单,是吗?

    封装的一些优点:

    • 详细信息的抽象 :用户在更高级别上与类型进行交互。 如果使用standUp()方法,则不再需要知道启动该动作所需的所有肌肉。
    • 与变更隔离:内部实施的变更不会影响用户。 如果一个人扭伤了脚踝,并依靠拐杖一会儿,则用户仍然仅调用standUp()方法。
    • 正确性:用户不能随意更改对象的内部。 他们只能完成您所允许的编写方法。

    这是一个简短的示例,其中封装明显有助于提高程序的准确性:

    // Bad -- doesn't use encapsulation
    public class Person {
      int m_age;
    }
    public class PersonTest {
      public static void main(String[] args) {
        Person p = new Person();
        p.m_age = -5; // Hey -- how can someone be minus 5 years old?
      }
    }
    // Better - uses encapsulation
    public class Person {
      int m_age;
      public void setAge(int age) {
        // Check to make sure age is greater than 0. I'll talk more about
        // if statements at another time.
        if (age > 0) {
          m_age = age;
        }
      }
    }
    public class PersonTest {
      public static void main(String[] args) {
        Person p = new Person();
        p.setAge(-5); // Won't have any effect now.
      }
    }

    即使是那个简单的程序,也显示了如果直接访问类的内部数据将如何陷入麻烦。 程序越大,越复杂,封装就越重要。 还请记住,许多程序从小开始,然后无限期发展,因此从一开始就正确设计它们至关重要。 要将封装应用于AlarmClock ,您可以仅创建方法来控制暂停间隔。

    关于方法的注释

    方法可以返回调用者使用的值。 要返回值,请声明非空返回类型,并使用return语句。 下面示例中显示的getSnoozeInterval()方法对此进行了说明。

    编写程序

    翻译自: https://www.infoworld.com/article/2076301/learn-how-to-store-data-in-objects.html

    java 数据库中存储对象

    展开全文
  • 数据库对象存储是可以结合

    千次阅读 2020-01-02 17:15:45
    这种类型的存储在云环境中的普遍存在,但它最近受到数据库应用程序影响。 对象存储所受到一个打击是,虽然它提供吞吐量方面相当出色,但提供IOPS方面并不那么让人满意。这基本上让它不适合于数据库分析,更...

    现在云中存在的大量非结构化数据在很多方面改变了信息技术的本质。其中很重要的一点是,它导致了对象存储作为视频、图像和音频等数据的存储库被广泛使用。这种类型的存储在云环境中的普遍存在,但它最近受到数据库应用程序的影响。

    对象存储所受到的一个打击是,虽然它在提供吞吐量方面相当出色,但在提供IOPS方面并不那么让人满意。这基本上让它不适合于数据库分析,更不用说机器学习和其他类型的I/O高要求的应用程序。

    Minio是一家为私有云开发开源对象存储系统的公司,提供了高水平的吞吐量和IOPS。它是围绕亚马逊的S3 API构建的,可以说它是基于云的对象存储的事实标准。该平台允许你轻松地将应用程序移动到几乎任何类型的云环境中。

    Minio首席执行官兼联合创始人Anand Babu Periasamy深入介绍了数据库为什么要迁移到对象存储。你可能还记得,Periasamy是GlusterFS最早的开发人员——GlusterFS是一个集群文件系统,旨在将非结构化数据引入更传统的POSIX风格的平台。

    在某种程度上,Periasamy认为POSIX并不是互联网时代的最佳技术,因为他逐渐意识到它不适合在这些庞大的存储网络中执行文件操作。他考虑将S3网关集成到文件系统中,作为提供统一平台的一种方式。但很快,他意识到这两个模型根本上是不兼容的,因为S3网关给文件系统增加了太多的负担。他解释说:“你最终会得到一个普通的文件系统和一个糟糕的对象存储系统。”然而,GlusterFS颇有一些追随者,并于2011年被红帽收购。

    最终,Periasamy决定开发一个专门围绕S3而构建的分布式文件系统。就这样诞生了Minio。不过,据Periasamy称,2014年公司成立时,他们并没有着手占领企业数据库市场。

    在他看来,对象存储只是针对非结构化数据,而数据库是关于存储“可变元数据”,与云中大量的非结构化数据相比,这些企业数据库相对较小。他表示:“在过去的三年里,我学到的是,在这些组织中,消耗千兆字节存储空间的并不是照片和视频,而是peta规模的元数据。”

    他所指的是企业正在积累并分析的金融交易、事件日志和其他类型日志使得存储不断增加。随着这些数据库的增长,管理员发现它们的扩展与传统的文件和块模型并不匹配。这时,他们开始转向对象存储(从公有云开始)。据Periasamy称,目前大多数分析引擎(Ssnowflake、Azure ML、Power BI、SageMaker、BitQuery等)都在使用对象存储。

    Periasamy说,最近,这个数据库对象模型已经渗透到私有云中。就在那时,他注意到一些这样的引擎被放置在MinIO之上。他们第一次意识到这一点是因为银行客户。他说:“最让我吃惊的是,交易型数据库开始深入到对象存储的内部。”

    通过提升对象存储表的性能,MinIO很有希望不断积累用户,因为越来越多的企业为其数据集采用对象存储模型。Minio服务器、客户端和软件开发在Apache许可下提供,可以免费下载。

    展开全文
  • Access数据库中真正用于存储数据数据库对象是“表”。Access中,表是数据库基本对象,由记录组成,记录由字段组成,可以用来存储数据库数据,故又称数据表。本文操作环境:Windows7系统、Dell G3电脑、...

    在Access数据库中真正用于存储数据的数据库对象是“表”。Access中,表是数据库的基本对象,由记录组成,记录由字段组成,可以用来存储数据库的数据,故又称数据表。

    a3306c65de60deb8aa2610a18fdee8e5.png

    本文操作环境:Windows7系统、Dell G3电脑、access2019。

    在Access数据库中真正用于存储数据的数据库对象是“表”。

    Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

    Access数据库由七种对象组成,它们是表、查询、窗体、报表、宏、页和模块。

    其中。表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

    数据表是以行、列来显示数据记录,是同一类数据的集合体。一个数据库中可以包含一个或多个数据表,而一个表只能被一个数据库包含。

    更多编程相关知识,请访问:编程学习!!

    展开全文
  • 看了以后我终于知道了事情大概,是说一个女孩,无意中在男孩包里发现了一个避孕套,她觉得很恶心,肮脏……男孩给他解释了,说是怕有意外,可是她还是受不了男人这种举动! 可是这件事情,让我想起了曾经发生...
      今天看了一个朋友的博客,里面有篇文章叫做:带套的男人有多坏。看了以后我终于知道了事情的大概,是说一个女孩,无意中在男孩的包里发现了一个避孕套,她觉得很恶心,肮脏……男孩给他解释了,说是怕有意外,可是她还是受不了男人的这种举动!
    
        可是这件事情,让我想起了曾经发生在我身上的一件事情。我是外地人,在北京打工,有时候会去北京的各大胜地看看,在一次的游览中,我认识了一个美国男孩,他是美国国籍中国人,每年来北京一次,之后我就好像显示地主之意一样的,做了他的免费向导,一直到他要离开中国,我们经常的联系,每天见面,每天都会去不同的地方,他是个很开朗,很阳光的男孩,像他的名字一样--阳!
    
    详情请点击:http://www.yateshi.com/bbs/5674.html
    展开全文
  • 展开全部一、 把图片直接以二进制形式存储在数据库中一般数据库提供一个e68a84e8a2ad3231313335323631343130323136353331333365633838二进制字段来存储二进制数据。比如SQL Server中BINARY,VARBINARY;1、BINARY ...
  • 背景最近做一个java桌面应用的时候,考虑到要保存一些数据。而我需要存储的类,其中有一些变量是object类型的,使用时需要...而Java反序列化是指把字节序列恢复为Java对象的过程。JDBCJDBC(Java Data Base Conne...
  • 数据库存储对象

    千次阅读 2008-05-03 16:10:00
    用Visual C 编写应用程序时,常会遇到如何存取数据库中大对象的问题。大对象文档以二进制数据形式保存BLOB类型的字段,这些大对象可能是Word、Execl或图片文件等,目前多数数据库都支持BLOB类型的字段。 VC...
  • 如何显示数据库中以 OLE ...在 ASP 中, 我们经常需要在 Web 页面上显示以二进制方式保存在数据库中的图片。 一般图片显示没有什么问题, 因为这方面文章已经很多了, 我就不再阐述。 但有时候数据库中图片是通
  • 现在云中存在大量非结构化数据很多方面改变了信息技术本质。其中很重要一点是,它导致了对象存储作为视频、图像和音频等数据的存储库被广泛使用。这种类型的存储在云环境中的...
  • 数据库的存储过程

    2016-07-25 10:16:00
    存储过程是一组为了完成特定功能SQL语句集经编译后存储在数据库中存储过程是数据库中一个重要的对象,用户通过指定存储过程名字并给出参数来执行它, 优点: 1)执行速度快,在数据库中保存的存储过程语句...
  • 数据库中存储过程理解

    千次阅读 2018-04-16 22:04:31
    经编译后存储在数据库中存储过程是数据库中一个重要对象,用户通过指定存储过程名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由 流控制 和 SQL语句书写过程,这个过程经编译和优化后...
  • 一般方法:由于json在数据库是以字符串方式存储可以,可以先取出到字符串再挨个进行解析,但当字段比较多,且大概率会出现空字段情况,代码可能略为繁琐,当然这样也行,那就不必再看下去了。 另一种方法:很常见...
  • 数据库存储对象数据注意点

    千次阅读 2016-08-26 16:34:00
    注意点:字典加入到数据库中,拿出来时候是字符串,所以在存储的时候,要将字典转为Data数据库进入这里介绍一下用NSKeyedArchiever打包。存入数据库NSData *data = [NSKeyedArchiver archiverDataWithRootObject:...
  • MySQL数据库软件,通过存储引擎决定数据库对象类型,但是如果想创建表,还需要了解数据类型,因为数据类型决定了表可以存储数据类型。 存储引擎指定了表类型,即如何存储和索引数据、是否支持事务等...
  • 数据库中存储过程与函数区别

    千次阅读 2017-03-25 11:20:42
    函数返回的是一个对象查询语句位于Form关键字的后面。 2、存储过程实现比较复杂,函数实现针对性较强 3、函数需要用括号包住输入的参数,且只能返回一个值或者表对象存储过程可以返回多个参数 4、函数...
  • 将Java对象存储到Oracle数据库中

    千次阅读 2010-02-03 22:13:00
    对象持久化,也就是可以把这个对象永远保存起来,这里保存不仅是对象本身,还包括他属性和所依赖其他类。通常,对象可以持久化到文件或者是数据库...我们就利用这个字段去存储对象信息。 首先建立一个测试表:
  • 当一个全局对象需要进程间共享时,就需要借助于外部的存储数据库,分布式缓存等,从这个角度来看面向对象的开发中数据库只是用来进程间共享对象状态的存储而已,是面向对象开发的辅助,而不是核心。...
  • protobuf序列化、数据库:都是使用了最紧凑形式用二进制来存储对象。 内存:也是使用了最紧凑形式用二进制来存储对象,但是多了对象头结构。 json序列化:将对象转成了文本(字符串);并且为了表意清楚,每个...
  • C# 的数据库的存储过程 菜鸟开发项目,就是东贴西凑,好久才能搞成一个程序,下面详细讲解一个C#...建立好表格之后,就需要新建一个 存储过程,存储过程是SQL2008上编写,之后,C#里,直接调用即可,跟个子函
  • 数据库中的存储过程

    2013-10-24 10:43:17
    一、存储过程与函数区别: ...存储过程一般是作为一个独立部分来执行,而函数可以作为查询语句一个部分来调用,由于函数可以返回一个表对象,因此它可以查询语句位于FROM关键字后面。   二、存
  • 数据库中存储过程和函数区别

    千次阅读 2012-12-21 11:04:25
    (3)存储过程一般都是作为一个独立部分来执行,而函数可以作为查询语句一个部分来调用,由于函数可以返回一个表对象,因此它可以查询语句位于FROM关键字后面。 (4)当存储过程和函数被执行时候,SQL...
  • 与系统有关的对象存放系统表空间数据库的作用就是实现对数据管理和查询。任何一个数据库系统,必然存在对数据大量读或者写或者两种操作都大量存在。I/O 问题也往往是导致数据库性能问题重要原因。 ...
  • 本文作者将向大家介绍如何运用Visual Studio.NET IDE来创建存储过程和.NET数据库应用程序中存储过程应用,以及如何将它与ADO.NET中SqlDataAdapter对象、DataSet对象等结合使用以提高.NET数据库应用程序总体...
  • 数据库存储过程

    2017-09-20 17:20:58
    经编译后存储在数据库中存储过程是数据库中一个重要对象,用户通过指定存储过程名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由流控制和 SQL语句书写过程,这个过程经编译和优化后存储在...
  • 树形数据关系数据库的存储

    千次阅读 2014-03-25 15:34:34
    树形数据关系数据库中的存储对象一样,都会遇到一个"阻抗不匹配"问题。如何设计一个表结构,才能较好满足需求呢?事实上,有很多解决方案,但是没有哪一种是放之四海而皆准。我个人认为解决方案选择,...
  • 可以将架构看作是各种对象的容器,这些对象可以是表(table)、视图(view)、存储过程(stored procedure)等。 可以架构级别上控制对象的访问权限。例如,可以为一个用户授予某个架构上的SELECT权限,让这个用户...
  • 存储过程一般是作为一个独立部分来执行,而函数可以作为查询语句一个部分来调用,由于函数可以返回一个表对象,因此它可以查询语句位于FROM关键字后面。 二、存储过程优点: 1.执行速度更快 – ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,603
精华内容 5,441
关键字:

在数据库中存储对象的是