精华内容
下载资源
问答
  • save

    千次阅读 2012-05-07 18:25:03
    save  标签: 暂无标签 顶[2] 分享到 发表评论(0) 编辑词条 目录 • Matlab Save • Graphical Interface 图形界面 • Syntax 语法 • Description 描述 [显示全部]
    
    

    save 

    标签: 暂无标签

    顶[2]  发表评论(0) 编辑词条
    目录

    [显示全部]

    Matlab Save编辑本段回目录


    Save workspace variables to disk

    节省磁盘中变量的工作空间 matlab


     

    Graphical Interface 图形界面编辑本段回目录


    As an alternative to the save function, select Save Workspace As from the File menu in the MATLAB desktop, or use the Workspace browser.

    save功能的选择,是在MATLAB桌面文件菜单下的save工作空间,或者可使用空间浏览器。


     

    Syntax 语法编辑本段回目录

    save 
    save filename 
    save filename content 
    save filename options 
    save filename content options 
    save('filename', 'var1', 'var2', ...)


      matabc

    Description 描述编辑本段回目录


    save stores all variables from the current MATLAB workspace in a MATLAB formatted file (MAT-file) named matlab.mat that resides in the current working directory. Use the load function to retrieve data stored in MAT-files. By default, MAT-files are double-precision, binary files. You can create a MAT-file on one machine and then load it on another machine using a different floating-point format, and retaining as much accuracy and range as the different formats allow. MAT-files can also be manipulated by other programs external to MATLAB.

    save保存了所有来自于当前MATLAB工作空间的变量,并将这些变量保存在一个以matlab.mat命名的格式文件(也就是MAT-file)中,这个文件存在于当前工作目录下。可以通过load函数来检索保存在MAT-files中的数据。MAT-files被默认为是一个双精度的二进制文件。用户可以在一台计算机上创建一个MAT-file,然后在另一台计算机上通过使用一个不同的浮点型格式来下载,并且保持同样的精度和大小。MAT-file也可以被其他与MATLAB无关的程序操作。

     

    save filename stores all variables in the current workspace in the file filename. If you do not specify an extension to the filename, MATLAB uses .mat. The file must be writable. To save to another directory, use a full pathname for the filename.

    save filemane 保存了所有在当前工作空间变量文件的文件名。如果用户不指定文件的拓展名,MATLAB就使用 .mat。文件必须是可写的。为了保存另一个目录,请使用文件的完整路径名。



    save filename content stores only those variables specified by content in file filename. If filename is not specified, MATLAB stores the data in a file called matlab.mat. See the following table.

    save文件名的内容仅仅只包含被文件名指定的内容。如果文件名不详细,MATLAB就会将数据保存在一个名叫matlab.mat的文件中。下面来看一下以下的表格。

     Values for content

    内容的价值

     Description

    描述 matlab

     varlist

    表示一个变量或多个变量,变量与变量之间用空格隔开。

     Save only those variables that are in varlist. You can use the * wildcard to save only those variables that match the specified pattern. For example, save('A*') saves all variables that start with A.

    仅仅只保存在varlist中的那些变量。用户可使用通配符来保存那些指定模式的变量。比如,save('A*')命令就保存了所有以A开头的变量。

       -regexp exprlist  Save those variables that match any of the regular expressionsin exprlist. See the Remarks section below.

    regexp exprlist 就是保存所有符合在exprlist中正则表达式的变量。再来关注一下下面Remarks部分的内容。 
    matlab

     -struct s  Save as individual variables all fields of the scalar structure s.

    struct s就是将所有领域内的标量另存为个体变量。

     -struct s fieldlist  Save as individual variables only the specified fields of structure s.

    struct s fieldlist 就是只将进行详细说明的结构类型另存为个体变量。





    In this table, the terms varlist, exprlist, and fieldlist refer to one or more variable names, regular expressions, or structure field names separated by either spaces or commas, depending on whether you are using the MATLAB command or function format. See the examples below: matlab

    在上述表格中,varlist, exprlist,和fieldlist指的是一个或多个变量名, 正则表达式或结构域名被各自的空间或逗号隔开,这个取决于你是使用的MATLAB 命令还是函数格式。接下来看一下以下的例子:



    Command format
    命令格式
    save myfile.mat firstname lastname 

    Function format
    函数格式
    save('myfile.mat', 'firstname', 'lastname') 

    save filename options stores all variables from the MATLAB workspace in file filename according to one or more of the following options. If filename is not specified, MATLAB stores the data in a file called matlab.mat.

    根据一个或多个的以下选项,save filemane options 将保存来自MATLAB工作空间的所有变量。如果文件名没有详细说明,那么MATLAB将数据保存在一个名叫matlab.mat的文件中。 matabc

    Values for options

    选择的价值依据

     
      Description

    描述

     -append

    设置数据文件的搜索路径

      Add new variables to those already stored in an existing MAT-file.

    在已经存在的MAT-file中增加新的变量。
    matabc

     -format

    格式

     Save using the specified binary or ASCII format. See the section on, MAT-File Format Options, below.

    以规定的二进制或ASCII格式保存。看下面MAT-File Format Options部分。

     -version

    版本

     
     Save in a format that can be loaded into an earlier version of MATLAB. See the section on Version Compatibility Options, below.

    以一种可以下载早期版本的MATLAB格式保存。看下面Version Compatibility Options部分。 matabc 


    save filename content options stores only those variables specified by content in file filename, also applying the specified options. If filename is not specified, MATLAB stores the data in a file called matlab.mat. matlab

    文件内容选择保存仅仅保存那些在文件名中被详细说明的变量,同时也根据已说明的选择规则。如果文件名没有被详细说明,那么MATLAB将数据保存在一个名叫matlab.mat的文件中。

    save('filename', 'var1', 'var2', ...) is the function form of the syntax.

    save('filename', 'var1', 'var2', ...) 这种形式是函数格式。


     

    MAT-File Format Options

    The following table lists the valid MAT-file format options.

    以下的表格陈列了有效的MAT-file 格式选择规则。 matlab

    MAT-file format Options 
    MAT-file 格式选择
     
     How Data Is Stored

    数据被存储的方式
    matabc

     -ascii  Save data in 8-digit ASCII format.

    以8位元ASCII 格式保存数据
     

    -ascii -tabs   Save data in 8-digit ASCII format delimited with tabs.

    以tabs为界将数据按8位元ASCII 格式保存

     -ascii -double   Save data in 16-digit ASCII format.

    以16位元ASCII 格式保存数据 
    matabc

     -ascii -double -tabs 
     Save data in 16-digit ASCII format delimited with tabs.

    以tabs为界将数据按16位元ASCII 格式保存 

     -mat 

     Binary MAT-file form (default).


    系统默认的二进制MAT-file 格式


    Version Compatibility Options


    The following table lists version compatibility options. These options enable you to save your workspace data to a MAT-file that can then be loaded into an earlier version of MATLAB software. The resulting MAT-file supports only those data items and features that were available in this earlier version of MATLAB. (See the second table below for what is supported in each version.)

    下面的表格陈列的是不同版本兼容性的选择规则。这个选项能够让你将工作空间中的数据保存到一个MAT-file 的文件中,而这个文件能够被更早MATLAB软件下载。那么这样子以来,MAT-file文件就只能支持对早期MATLAB版本有效的数据项。(下面第二个表格说明了在各个版本中所被支持的数据项) matlab

    version Option

    版本选项
      matabc

    Use When Running ...

    所用版本

     
     

     To Save a MAT-File That You Can Load In ...

    为了保存一个MAT-File文件用户所需下载的版本

     

    -v7.3

     

    Version 7.3 or later

    7.3版本或之后的版本

     

     

    Version 7.3 or later

    7.3版本或之后的版本 
    matabc

     -v7  Version 7.3 or later

    7.3版本或之后的版本

     Versions 7.0 through 7.2 (or later)

    7.0到7.2版本或之后的版本
    matabc

     -v6  Version 7 or later

    7.0版本或之后的版本

     Versions 5 and 6 (or later)

    5.0,6.0版本或之后的版本 

     -v4  Version 5 or later

    5.0版本或之后的版本

      Versions 1 through 4 (or later)

    1.0到4.0版本或之后的版本


    The default version option is the value specified in the Preferences dialog box. Select File → Preferences in the Command Window, click General, and then MAT-Files to view or change the default.

    在参数选择对话框中,系统默认版本的选择是非常有价值的。在命令窗口中选择文件,然后选择参数选择,再单击General,那么MAT-Files 文件就可以看到了,同时系统默认值也可以更改了。



    The next table shows what data items and features are supported in different versions of MATLAB. You can use this information to determine which of the version compatibility options shown above to use. matabc

    以下的表格显示了在MATLAB的各个版本中,哪些数据项是被支持的。用户就可以根据这个信息来确定使用哪一个的兼容性版本。

     MATLAB Versions

    MATLAB版本

     Data Items or Features Supported

    所支持的数据项或特征

     
     4 and earlier

    4.0版本或更早的版本

      Support for 2D double, character, and sparse

    支持二维双精度,字符和矩阵

     5 and 6

    5.0和6.0版本

     Version 4 capability plus support for ND arrays, structs, and cells

    4.0版本容量附加额支持ND数组,结构和单元格

     7.0 through 7.2

    7.0到7.2版本

     Version 6 capability plus support for data compression and Unicode character encoding

    6.0版本容量附加额支持数据压缩和Unicode 型编码

     7.3 and later

    7.3及之后的版本

      Version 7.2 capability plus support for data items greater than or equal to 2GB

    7.2版本容量附加额支持2GB大小或更大的数据项


    Remarks编辑本段回目录

    When using the -regexp switch, save considers all variables in the argument list, with the exception of the optional filename and structure name variables, to be regular expressions. The filename, if specified, is always the first argument in the argument list, provided that this argument is a variable name. The structure name, if specified, is always the first argument following the -struct keyword, provided that the argument list includes that keyword.

    当使用the -regexp 按钮的时候,save认为除了可选择的文件名变量和结构名变量之外,所有在变元表里的变量都应该是正则表达式。如果详细说明,一般情况下文件名都是变元表里的第一个内容提要,说明这个内容是一个变量名。而结构名则一般是the-struct关键字接下来的第一个内容提要,说明这个变元表包括了那个关键字。

     

    When working on 64-bit platforms, you can have data items in your workspace that occupy more than 2 GB. To save data of this size, you must use the HDF5-based version of the MATLAB MAT-file. Use the –v7.3 option to do this:

    当在64比特的平台上工作时,用户可以在自己的工作空间拥有一个大于2GB的数据项。为了保存这样大容量的数据,用户必须使用MATLAB MAT-file HDF5-based版本。使用 v7.3选项应按如下格式操作:


    save -v7.3 myfile v1 v2 


    If you are running MATLAB on a 64-bit computer system and you attempt to save a variable that is too large for a version 7 (or earlier) MAT-file, that is, you save without using the -v7.3 option, MATLAB skips that variable during the save operation and issues a warning message to that effect.

    如果用户在一个64比特的计算机系统中运行MATLAB,并且想要保存一个变量,而这个对于7.0版本(或更早的版本)的MAT-file而言容量太大,也就是用户在保存的时候并没有使用v7.3选项,MATLAB就会在保存操作过程中跳过该变量并且发出一个警告信息。

     


    If you are running MATLAB on a 32-bit computer system and attempt to load a variable from a -v7.3 MAT-file that is too large to fit in 32–bit address space, MATLAB skips that variable and issues a warning message to that effect.


    如果用户正在一台32比特的计算机系统上运行MATLAB并且想要从v7.3版本的MAT-file文件中下载一个变量,而这个变量对于32比特的地址空间而言又太大了,那么MATLAB就会跳过那个变量同时发出一个警告信息。 matabc

     

     

    MAT-files saved with compression and Unicode encoding cannot be loaded into versions of MATLAB prior to MATLAB Version 7.0. If you save data to a MAT-file that you intend to load using MATLAB Version 6 or earlier, you must specify the -v6 option when saving. This disables compression and Unicode encoding for that particular save operation.

    MAT-files文件保存的压缩和Unicode编码并不能被MATLAB7.0和之前的版本所下载。如果用户试图通过MATLAB6.0或更早的版本中将数据保存到MAT-files文件中,那么就必须在保存的时候说明v6选项。而对于这样一个特殊的保存操作,计算机是无法进行压缩和Unicode编码的。 matabc

     


    If you want to save to a file that you can then load into a Version 4 MATLAB session, you must use the -v4 option when saving. When you use this option, variables that are incompatible with MATLAB Version 4 are not saved to the MAT-file. For example, ND arrays, structs, cells, etc. cannot be saved to a MATLAB Version 4 MAT-file. Also, variables with names that are longer than 19 characters cannot be saved to a MATLAB Version 4 MAT-file.


    如果用户想保存一个可以下载到MATLAB4.0版本中的文件,那么就必须在保存的时候使用v4选项。当使用这个选项的时候,与MATLAB4.0版本不相容的变量就不会被保存到MAT-file文件中。比如,ND数组,结构和单元格等等就不可能被保存到MATLAB4.0版本的MAT-file文件中。同样,长度大于19字符的变量名字也不可能被保存到MATLAB4.0版本的MAT-file文件中。

     


    For information on any of the following topics related to saving to MAT-files, see Exporting Data to MAT-Files in the MATLAB Programming Fundamentals documentation:

    以下有关保存到MAT-file文件的信息,请查看MATLAB 程序编制基本文件中的Exporting Data to MAT-Files :



    * Appending variables to an existing MAT-file matlab

     *在现存的MAT-file文件中附加变量


    * Compressing data in the MAT-file

    *在MAT-file文件中压缩数据


    * Saving in ASCII format

    *以ASCII 格式保存 matabc


    * Saving in MATLAB Version 4 format

    *MATLAB4.0版本格式保存


    *Saving with Unicode character encoding matlab

    *以Unicode字符编码保存


    * Data storage requirements

    *数据存储要求


    * Saving from external programs

    *从外部程序保存



    For information on saving figures, see the documentation for hgsave and saveas. For information on exporting figures to other graphics formats, see the documentation for print.

    关于保存图形的信息,请查看hgsave和saveas。关于以其他格式输出图形的信息,请查看print。


      matabc

    Examples编辑本段回目录


     

    Example 1


    Save all variables from the workspace in binary MAT-file test.mat: 
    从工作空间中将所有的变量保存到二进制MAT-file文件中,并以test.mat命名,可表达为: matabc


    save test.mat 

    Example 2


    Save variables p and q in binary MAT-file test.mat. 
    将变量p和q保存到二进制MAT-file文件中的。 matabc


    In this example, the file name is stored in a variable, savefile. You must call save using the function syntax of the command if you intend to reference the file name through a variable.
    在这个例子中,文件名被保存在一个名为savefile的变量中。如果用户视图通过一个变量引用文件名,那么就必须在保存的时候使用命令函数语法。


    savefile = 'test.mat'; 
    p = rand(1, 10); 
    q = ones(10); 
    save(savefile, 'p', 'q')

    Example 3


    Save the values of variables vol and temp in ASCII format to a file named june10: matlab

    将一个名叫june10文件夹中的变量以ASCII格式对vol和temp进行保存,表达如下:

    save('d:\mymfiles\june10','vol','temp','-ASCII') 
    matabc

    Example 4


    Save the fields of structure s1 as individual variables rather than as an entire structure. 
    将结构体s1作为一个个体变量进行保存而不是整体变量。


    s1.a = 12.7; s1.b = {'abc', [4 5; 6 7]}; s1.c = 'Hello!'; 
    save newstruct.mat -struct s1; 
    clear 

    Check what was saved to newstruct.mat: 

    whos -file newstruct.mat 
    Name Size Bytes Class 

    a 1x1 8 double array 
    b 1x2 158 cell array


    c 1x6 12 char array 

    Grand total is 16 elements using 178 bytes 

    Read only the b field into the MATLAB workspace. 

    str = load('newstruct.mat', 'b') 
    str = 
    b: {'abc' [2x2 double]} 

    Example 5

    Using regular expressions, save in MAT-file mydata.mat those variables with names that begin with Mon, Tue, or Wed: 
    通过使用正则表达式,在MAT-file mydata.mat文件中将以Mon, Tue,或者 Wed开头命名的变量进行保存,表达式如下: matabc


    save('mydata', '-regexp', '^Mon|^Tue|^Wed'); 

    Here is another way of doing the same thing. In this case, there are three separate expression arguments:

    下面是另一种表达方式。在这个例子中,有三个独立的表达式参数,表达如下:

    save('mydata', '-regexp', '^Mon', '^Tue', '^Wed'); 

    Example 6


    Save a 3000-by-3000 matrix uncompressed to file c1.mat, and compressed to file c2.mat. The compressed file uses about one quarter the disk space required to store the uncompressed data:

    将一个3000*3000的无压缩矩阵保存到一个名为c1.mat的文件夹中,并且压缩到名为c2.mat的文件中。被压缩了的文件将使用近四分之一的磁盘空间,而这些空间就是用来存储还未被压缩的数据,表达如下:


    x = ones(3000); 
    y = uint32(rand(3000) * 100); 

    save -v6 c1 x y % Save without compression 
    save -v7 c2 x y % Save with compression 

    d1 = dir('c1.mat'); 
    d2 = dir('c2.mat'); 

    d1.bytes 
    ans = 
    45000240 % Size of the uncompressed data in bytes.


    d2.bytes 
    ans = 
    11985283 % Size of the compressed data in bytes. 

    d2.bytes/d1.bytes 
    ans = 
    0.2663 % Ratio of compressed to uncompressed 

    See Also编辑本段回目录

    功能简介编辑本段回目录

    保存workspace中的变量到文件中。 matlab

    版本支持编辑本段回目录


    使用方法编辑本段回目录

    save(filename)
    save(filename, variables)
    save(filename, '-struct', structName, fieldNames)
    save(filename, ..., '-append')
    save(filename, ..., format)
    save(filename, ..., version) 
    save filename ... matlab

    save(filename)

    保存matlab目前工作空间中的变量到matlab mat文件中去,mat文件名字为filename所定义。

    save(filename, variables)

    保存matlab目前工作空间中名字为variables所定义的变量到matlab mat文件中去,mat文件名字为filename所定义。 matlab

    save(filename, '-struct', structName, fieldNames)

    保存指定structure的field名字作为单个变量到matlab mat文件中去,mat文件名字为filename所定义。 matlab

    save(filename, ..., '-append')

    增加新的变量到已存在的matlab mat文件中去,mat文件名字为filename所定义。

    save(filename, ..., format) matabc

    保存为不同的格式,格式可选择为mat或者ascii。 matlab


    matlab

    应用举例编辑本段回目录

    savefile = 'pqfile.mat';
    p = rand(1, 10);
    q = ones(10);
    save(savefile, 'p', 'q')

    相关函数编辑本段回目录

    展开全文
  • keras保存模型中的save()和save_weights()

    万次阅读 多人点赞 2019-01-23 16:38:23
    今天做了一个关于keras保存模型的实验...同样是h5文件用save()和save_weight()保存效果是不一样的。 我们用宇宙最通用的数据集MNIST来做这个实验,首先设计一个两层全连接网络: inputs = Input(shape=(784, )) ...

    今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别。


    我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5。同样是h5文件用save()和save_weight()保存效果是不一样的。

    我们用宇宙最通用的数据集MNIST来做这个实验,首先设计一个两层全连接网络:

    inputs = Input(shape=(784, ))
    x = Dense(64, activation='relu')(inputs)
    x = Dense(64, activation='relu')(x)
    y = Dense(10, activation='softmax')(x)
    
    model = Model(inputs=inputs, outputs=y)

    然后,导入MNIST数据训练,分别用两种方式保存模型,在这里我还把未训练的模型也保存下来,如下:

    from keras.models import Model
    from keras.layers import Input, Dense
    from keras.datasets import mnist
    from keras.utils import np_utils
    
    
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train=x_train.reshape(x_train.shape[0],-1)/255.0
    x_test=x_test.reshape(x_test.shape[0],-1)/255.0
    y_train=np_utils.to_categorical(y_train,num_classes=10)
    y_test=np_utils.to_categorical(y_test,num_classes=10)
    
    inputs = Input(shape=(784, ))
    x = Dense(64, activation='relu')(inputs)
    x = Dense(64, activation='relu')(x)
    y = Dense(10, activation='softmax')(x)
    
    model = Model(inputs=inputs, outputs=y)
    
    model.save('m1.h5')
    model.summary()
    model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
    model.fit(x_train, y_train, batch_size=32, epochs=10)
    #loss,accuracy=model.evaluate(x_test,y_test)
    
    model.save('m2.h5')
    model.save_weights('m3.h5')
    

    如上可见,我一共保存了m1.h5, m2.h5, m3.h5 这三个h5文件。那么,我们来看看这三个玩意儿有什么区别。首先,看看大小:

    m2表示save()保存的模型结果,它既保持了模型的图结构,又保存了模型的参数。所以它的size最大的。

    m1表示save()保存的训练前的模型结果,它保存了模型的图结构,但应该没有保存模型的初始化参数,所以它的size要比m2小很多。

    m3表示save_weights()保存的模型结果,它只保存了模型的参数,但并没有保存模型的图结构。所以它的size也要比m2小很多。

     

    通过可视化工具,我们发现:(打开m1和m2均可以显示出以下结构)

    而打开m3的时候,可视化工具报错了。由此可以论证, save_weights()是不含有模型结构信息的。


    加载模型

    两种不同方法保存的模型文件也需要用不同的加载方法。

    from keras.models import load_model
    
    model = load_model('m1.h5')
    #model = load_model('m2.h5')
    #model = load_model('m3.h5')
    model.summary()
    

     只有加载m3.h5的时候,这段代码才会报错。其他输出如下:

    可见,由save()保存下来的h5文件才可以直接通过load_model()打开

    那么,我们保存下来的参数(m3.h5)该怎么打开呢?

    这就稍微复杂一点了,因为m3不含有模型结构信息,所以我们需要把模型结构再描述一遍才可以加载m3,如下:

    from keras.models import Model
    from keras.layers import Input, Dense
    
    
    inputs = Input(shape=(784, ))
    x = Dense(64, activation='relu')(inputs)
    x = Dense(64, activation='relu')(x)
    y = Dense(10, activation='softmax')(x)
    
    model = Model(inputs=inputs, outputs=y)
    model.load_weights('m3.h5')

    以上把m3换成m1和m2也是没有问题的!可见,save()保存的模型除了占用内存大一点以外,其他的优点太明显了。所以,在不怎么缺硬盘空间的情况下,还是建议大家多用save()来存。

    注意!如果要load_weights(),必须保证你描述的有参数计算结构与h5文件中完全一致!什么叫有参数计算结构呢?就是有参数坑,直接填进去就行了。我们把上面的非参数结构换了一下,发现h5文件依然可以加载成功,比如将softmax换成relu,依然不影响加载。

     

    对于keras的save()和save_weights(),完全没问题了吧

     

    展开全文
  • npm --save-dev --save 的区别

    万次阅读 多人点赞 2019-06-05 11:07:56
    --save || -S // 运行依赖(发布) 另一个是 –save-dev || -D //开发依赖(辅助) 区别是它们会把依赖包添加到package.json 文件 –save : dependencies 键下,发布后还需要依赖的模块,譬如像jQuery库或者An.....

    npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件
    一个是

     --save || -S // 运行依赖(发布)
    

    另一个是

    –save-dev || -D //开发依赖(辅助)
    

    区别是它们会把依赖包添加到package.json 文件

    –save : dependencies 键下,发布后还需要依赖的模块,譬如像jQuery库或者Angular框架类似的,我们在开发完后后肯定还要依赖它们,否则就运行不了。

    –save-dev : devDependencies 键下,开发时的依赖比如安装 js的压缩包gulp-uglify 因为我们在发布后用不到它,而只是在我们开发才用到它。

    譬如:

    {
     "dependencies": {
        "vue": "^2.2.1"
      },
      "devDependencies": {
        "babel-core": "^6.0.0",
        "webpack": "^2.2.0",
      }
    }
    
    展开全文
  • save方法

    千次阅读 2017-12-22 09:54:02
    Session的save()方法用来将一个临时对象转变为持久化对象,也就是将一个新的实体保存到数据库中。通过save()将持久化对象保存到数据库需要经过以下步骤: 1,系统根据指定的ID生成策略,为临时对象生成一个唯一的...

    Session的save()方法用来将一个临时对象转变为持久化对象,也就是将一个新的实体保存到数据库中。通过save()将持久化对象保存到数据库需要经过以下步骤:

    1,系统根据指定的ID生成策略,为临时对象生成一个唯一的OID;

    2,将临时对象加载到缓存中,使之变成持久化对象;

    3,提交事务时,清理缓存,利用持久化对象包含的信息生成insert语句,将持久化对象保存到数据库。


    OK,下面来看一个实例:

    [java] view plain copy
    1. //创建SessionFactory  
    2. Configuration config = new Configuration();  
    3. ServiceRegistry  sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();    
    4. SessionFactory sessionFactory = config.buildSessionFactory(sr);   
    5.   
    6. //打开Session  
    7. Session session = sessionFactory.openSession();  
    8.   
    9. //开启事务  
    10. Transaction tx = session.beginTransaction();  
    11.   
    12. //创建临时对象并赋值  
    13. User user = new User();  
    14. user.setId("1");  
    15. user.setUserName("lsj");  
    16. session.save(user);  
    17.   
    18. //提交事务  
    19. tx.commit();  
    20.   
    21. //关闭Session  
    22. session.close();  

    PS:

    1,从Hibernate 4之后,Configuration类中,原先常用的,获取SessionFactory的方法buildSessionFactory()被标记为过时,官方建议使用buildSessionFactory(ServiceRegistry sr)这个方法来获取SessionFactory。

    2,如果映射文件中为对象的ID指定了生成策略,那么在程序中为其ID赋值是无效的。会被系统自动生成的值覆盖,例如:


    映射文件指定ID生成策略由Hibernate控制自增:

    [html] view plain copy
    1. <id name="id" type="string">  
    2.     <generator class="increment">  
    3. </id>  

    然后程序中进行如下操作:

    [java] view plain copy
    1. user.setId("1");  
    2. System.out.println("手动赋值为:"+user.getId());  
    3. session.save(user);  
    4. System.out.println("存入数据库的值为:"+user.getId());  

    这样,最终存入数据库的ID是Hibernate自动生成的自增ID,而不是我们手动给的值。

    另外,执行save()方法时并不会将对象存入数据库,在提交事务时,对象才被真正的保存到数据库中。save()方法是将对象保存到Session的缓存中,提交事务时,Hibernate会生成相应的insert语句,将对象保存到数据库。


    再跟大家说一点需要注意的地方,Hibernate在提交事务的时候,会将之前对对象做的操作一并提交。就算是在save()方法之后做的操作也一样。什么意思呢?我们看下面的例子:

    [java] view plain copy
    1. user.setUserName("old");  
    2. session.save(user);  
    3. user.setUserName("new");  
    4. tx.commit();  

    执行以上操作,最终user.getUserName();得到的值将会是“new”,而不会是“old”,因为Hibernate在提交事务的时候把对user对象的所有操作都提交了。


    OK,今天就到这里,save()方法虽然看起来是一个很简单的方法,但是需要注意这些细小的地方,否则很容易出一些问题。一句话:学习框架的原理很重要,要想理解框架的原理,最直接的办法就是看源码。


    每天学一点,每天进步一点。祝大家每天进步。


    展开全文
  • 1、save/load weights 只保存网络的一个参数,不管其他的状态,这种模式适合自己对代码有个清晰的认识 用法流程如下: # Save the weights model.save_weights('./checkpoints/my_checkpoint') # 提供保存的路径 ...
  • IntelliJ Save Action

    万次阅读 2018-09-23 20:42:51
    在Team开发项目中,都是多人维护一个项目。因此,保持良好的代码规范与风格很重要。 IntelliJ 默认是自动保存的,因此很多时候修改后就出现:代码没有格式化、存在无用的import。... Plugins,搜索“Save actions...
  • npm --save-dev --save 的区别
  • --save与 --save-dev

    千次阅读 2019-07-22 14:14:23
    save:将保存配置信息到pacjage.json。默认为dependencies节点中。 –dev:将保存配置信息devDependencies节点中。 因此: –save:将保存配置信息到pacjage.json的dependencies节点中。 –save-dev:将保存配置...
  • MATLAB的save用法

    万次阅读 2018-09-11 22:37:09
    save 将工作区变量保存到文件中 语法 save(filename) save(filename,variables) save(filename,variables,fmt) save(filename,variables,version) save(filename,variables,version,'-nocompression') ...
  • Easy Save 2 与Easy Save 3 区别

    千次阅读 2020-03-04 16:29:12
    1.操作更便捷 Easy Save 2 保存一个新类型需要花费半天时间 ES3 更快。 2.键值对替代路径。 ES3 保存和读取方法需要输入键值对,开发者不需要关心路径,而是设计好一个 键值对(键是string 值是Object)。在缓存...
  • Redis Save 命令

    千次阅读 2019-08-20 16:58:46
    Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 可用版本 >= ...
  • canvas.save(Canvas.CLIP_SAVE_FLAG); 改为: canvas.save(); 相关文档:https://developer.android.com/sdk/api_diff/28/changes/android.graphics.Canvas 涉及到的自定义类: package com.exam...
  • 问题:https://stackoverflow.com/questions/22891211/what-is-the-difference-between-save-and-save-dev What is the difference between: npm install [package_name] and: npm install [package_name] --save ...
  • docker save命令

    万次阅读 2018-09-14 11:26:29
    docker save命令 :导出docker镜像,到linux本地  形式为:  docker save -o 指定地址和文件名 镜像名  例子:   把名字为test,版本为4.0的docker镜像,保存到/data/export目录下,保存名字和格式为test....
  • CrudRepository Save方法

    千次阅读 2019-06-04 15:16:19
    CrudRepository 中的save方法源代码 @Transactional public <S extends T> S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity);//是新的就插入 return ...
  • 在win10新安装idea2017时遇到此问题,IDEA 出现Unabletosavesettings:Failedtosavesettings....本人在网上搜索过其他答案,比如http://stackoverflow.com/questions/36479123/unable-to-save-settings-inte...
  • model.save()保存了模型的图结构和模型的参数,保存模型的后缀是.hdf5。 model. save_weights ()只保存了模型的参数,并没有保存模型的图结构,保存模型的后缀使用.h5。 所以使用save_weights保存的模型比使用save...
  • matlab save

    千次阅读 2012-11-12 22:15:58
    今天要用到matlab save的命令 发现如下情况: 如果保存变量为.mat文件,则操作为: 变量为kernek(一个矩阵) save 的第一种方法 save data kernel 这样保存。 save的第二种保存方法 save('data.mat','kernel...
  • TP5 数据保存、更新问题(savesaveAll)

    千次阅读 2019-10-02 20:18:11
    今天写项目的时候,突然发现一个坑爹的问题,使用saveAll新增多条数据,但是一直提示缺少更新条件,然而我发现代码里面并没有更新,而且saveAll我仅仅是去新增多条数据而已 原来源码 模型类中有isUpdate这个属性...
  • npm install -g --save --save-dev 比较

    千次阅读 热门讨论 2020-10-21 20:38:26
    --save & --save-dev 比较 一、npm install packageName 特点: 本地安装,安装到项目 node_modules 目录下; 不会将模块依赖写入 package.json 中的 devDependencies 或 dependencies 节点; 运行 npm ...
  • PlayerPref Easy Save 插件
  • npm 安装时 --save --dev 和 --save 区别

    万次阅读 2018-05-10 17:39:53
    webpack --mode production二、--save -dev--save:将保存配置信息到pacjage.json。默认为dependencies节点中。--dev:将保存配置信息devDependencies节点中。因此:--save:将保存配置信息到pacjage.json的...
  • IDEA SaveActions 配置

    万次阅读 2018-08-15 14:25:47
    saveactions配置
  • canvas.save(Canvas.ALL_SAVE_FLAG); 在androidP上会报错,修改方法: canvas.save(Canvas.ALL_SAVE_FLAG); --> canvas.save();
  • --save-dev 和--save的区别

    千次阅读 2018-08-07 10:17:14
    npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件,一个是npm install –save另一个是 npm install –save-dev,他们表面上的区别是–save 会把依赖包名称添加到 package.json ...
  • 简单来说: 使用命令 --save 或者说不写命令 --save ,都会把信息记录到 dependencies 中; dependencies 中记录的都是项目在运行时需要的文件; 使用命令 --save-dev 则会把信息记录到 devDependencies...
  • docker save与docker export的区别

    万次阅读 多人点赞 2017-09-25 20:29:36
    docker save和docker export都能导出镜像包,咋看起来区别似乎不大。本文就针对这个问题,试图搞清楚docker save和docker export的功能是什么?适用于什么应用场景? 本文的测试的Docker版本如下,不保证所有版本的...
  • torch.save

    千次阅读 2019-09-30 15:38:27
    torch.save(obj, f, pickle_module=<module 'pickle' from '/opt/conda/lib/python3.6/pickle.py'>, pickle_protocol=2)[source] Saves an object to a disk file. See also: Recommended approach for savi...
  • npm的 --save 和 --save-dev 之间的区别

    千次阅读 2017-09-25 18:12:49
    原因npm包管理器在安装包的时候,会有两种安装方式,一种是–save,另一种是–save-dev。所以我们需要弄清楚这两种安装方式到底有什么区别。共同点 两种方式都会安装到node_modules目录中。 两种方式都会保存到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 232,287
精华内容 92,914
关键字:

save