精华内容
下载资源
问答
  • 原载: 设想使用XML和关系数据库形成一个对象数据库>一文中,已经阐述了关系数据库和对象数据库的主要区别:对外键的使用是通过直接记录,还是遍历键子表来获得。而这里,是面对另一个重要的区别:如何释放对象...

    原载:      

    在<设想使用XML和关系数据库形成一个对象数据库>一文中,已经阐述了关系数据库和对象数据库的主要区别:对外键的使用是通过直接记录,还是遍历外键子表来获得。而这里,是面对另一个重要的区别:如何释放对象的资源。对于对象数据库而言,它等同于是一批直接存于数据库中的串行化对象,它的实际存储形式到底是不是按关系结构存储并不是最重要的,重要的是调用程序读入内存的就是一个对象,而不是游标映射;这样,使用对象数据库就必须存在着一个如何清除用完的对象资源的问题;同时由于对象数据库必然是与语言无关的,因此对象释放也就必然只能由程序调用方完成。

           XML可以看作是一个串行化的可以在不同的语言和平台间交换的对象结构,它实际上也存在同样的需要:假如不是把XML简单看作是HTML那样的presentation layer的样式,而是对象存储的形式,那么读入XML对象后也必然存在着重载和维护的问题,而且,要令程序高效,就必须是由程序容器完成,而不应由bean来维护。否则减少程序量提供软件质量就无从谈起了。通过程序容器产生下个共用线程,对已经不再使用的对象清空,空出资源。实际上,J2EE的实体Bean容器就是这样一种容器,只不过,它是通过OR映射的形式,希望反映出数据库中复杂的对象实体关系。对象数据库可以令这种映射简化到基本上是单表的形式,如果它能象J2EE一样一定程度上维护内存对象,最重要的就是清空内存占用,就可以达到比实体Bean更佳的效果。

          J2EE实体bean基本上是扁平的对象关系,实体bean之间不存在互相包融的关系,这令它并不能很方便地反映到实际应用的关系中。而现实使用中,对象结构更接近于是一个继承树式的关系。在这种结构中,没有必要对所有对象都由容器处理它的清除。换言之,并不需要对所有对象进行清除,上级对象本身就是下级对象的容器,只需要对上级(顶级)对象清除就可以达到目的,对于JAVA来说,JVM垃圾处理器会把没有顶级调用的类一整个清除掉。
          
          对于结合了XML和数据库的对象系统,对对象的调用过程是:容器初始化顶级对象->初始化次级对象的句柄->在需要调用次级对象详细内容时完全载入这一对象->(清除次级对象)->在不需要使用时清除顶级对象和剩余的所有次级对象。

    容器的另一个任务就是维护句柄记录和实际数据关系结构的一致性。在上述流程中,由于详细的内容是放在数据库中,上级对象中仅保留下级的句柄。历此,这等同于是对一个结构化数据的非规范化记录。从这点出发,当出现不一致的冲突时,肯定是应该以关系数据库中的记录为准的。比较理想的方式是对象实现若干容器管理的接口,由容器负责对对象的一致进行维护。在这里,对应中间层的对象实际上是数据库中的串行化对象的内存映射。因此,要真正令XML+关系数据库形成的对象结构运转得有效率,就必须有高效合理的管理容器,集中完成高度一致的重复的对象维护工作,而令上层应用可以专注于具体的应用逻辑。

    归纳起来,使用对象数据库的程序范式的话,那么需要有这样的容器:它能自动完成对内存对象中的清理工作;能够自动完成与数据库的一致性操作。另外,对于形式相似的对象类程序,可以提供一些自动化的工具完成大部分的编码,或者,提高可以继承的抽象类完成重复性的基本一致的维护方法。具体如何实施,通用性有多高,将在SectionBase的修改中一一加以处理。目前呢,先以BMP的形式编码,估计完成后,就可以进一步的通用的方法可以抽象出来。

     


     

     

     

    展开全文
  • 设计一个键值数据库,需要考虑里面存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口,还得考虑键值对保存在内存还是外存,采用什么访问模式。 键值数据库的数据模型是key-value模型,需要重点...

    Redis是典型的键值数据库。设计一个键值数据库,需要考虑里面存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口,还得考虑键值对保存在内存还是外存,采用什么访问模式。

    键值数据库的数据模型是key-value模型,需要重点考虑的是value支持的类型。Redis得以广泛应用,因为Redis支持String、哈希表、列表、集合等多样化类型的value。

    数据库的操作接口无非就是CRUD:

    • PUT / SET:增加或更新key-value;
    • GET:使用key查询对应的value;
    • SCAN:根据一段key的范围查询对应的value;
    • DELETE:使用key删除整个key-value。

    键值对保存在内存的优点是存取速度快,但是一旦机器断电,就会丢失所有数据。保存在外存,虽然可以避免数据丢失,但是存取速度会受限于磁盘的存取速度,此时键值数据库的整体性能降低。

    因此键值对保存在内存和外存这个问题,主要还是看应用场景,比如缓存需要存取速度快并且允许数据丢失,因此缓存场景使用内存保存键值对数据更好。Redis作为缓存数据库就是一个非常广泛的应用场景。

    一个键值数据库通常包括了访问框架、索引模块、操作模块和存储模块四部分。 

    访问模式通常有两种:

    • 通过函数库调用的方式供外部应用使用;
    • 通过网络框架以Socket通信的形式对外提供键值对操作。

    Redis是通过网络框架访问的,因此Redis可以作为一个基础性的网络服务访问,扩大了Redis的应用范围。

    Redis数据模型中value类型丰富,因此操作接口更多,比如操作列表使用LPUSH/LPOP,操作集合使用SADD/SREM。

    Redis的持久化支持日志(AOF)和快照(RDB),这两种持久化方式有不同的优缺点,会影响到Redis的访问性能和可靠性。

    Redis的索引模块采用哈希表作为索引,因为其键值数据保存在内存中,内存的高性能随机访问可以很好与哈希表O(1)的操作复杂度匹配。

     

    展开全文
  • 2.因为内存IO比外存IO要快很多,所以起动APP时可以將歌单信息全部查询存储list集合里面,每次查询直接遍历集合即可。 这样果然快很多,即使查询全部数据最高也只用300ms左右,同时解决了两个需求。但新问题又来了...
  • 他语言的编程基础,程序员将发现¢#语言除了像ⅤB一样简单易学,还是一种拥有强大 功能的语言。而且 ASP NET平台也是完仝通过c#语言开发的,这决定了C语言得天独厚的 优势。但任何情况下,C#语言都不可能孤立地使用,...
  • Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • RMS到底类似于内存还是外存?记录存储器更像一个文件,而不是一个数据库管理系统。使用RecordEnumeration接口可以记录存储器中进行查询和排序。 for (int i = 1; i ...
    RMS到底类似于内存还是外存?记录存储器更像一个文件,而不是一个数据库管理系统。使用RecordEnumeration接口可以在记录存储器中进行查询和排序。
    for (int i = 1; i <= recordstore.getNumRecords(); i++)
    recordstore的ID是从1开始,而非0开始。

    现在遇到一个问题了,将“你好,涓涓细流”这个字符串转换成字节数组,之后又转换成字符串在S60中文模拟器中显示成“??????”,显然是显示错误,该怎么办?用DataInputStream的readUTF()方法输入可以正常输出汉字!


    现在要编写用来保存复杂数据类型的记录的程序,怎么把需要的庞大的数据存储到手机里。

    先调用ByteArrayOutputStream()构造函数创建字符数组输出流把数据写到缓冲区中,再调用DataOutputStream()构造函数输出字节数组输出流的数据输出流,此函数调用前者的应用。这个操作的目的是把数据写到缓冲区中,然后把缓冲区中的数据写到六种,然后再把数据流转换成一个字节数组,再把字节数组写到记录存储器中。

    DataOutputStream类有吧特殊数据类型写到缓冲区的方法,是不是我上次遇到的不能正确显示中文的问题就可以借助DataOutputStream()得到解决呢?

    flush():把缓冲区的数据放置到数据流中。
    toByteArray():把数据流转换成字节数组。
    reset():清空ByteArrayOutputStream对象内部所存储的数据。

    [b]查询记录[/b]
    查询用的是过滤器实现的。
    在netbeans中输入Filter,竟然报错说“找不到符号 类:Filter”,这是为什么呢?

    [b]利用rms实现信息的存储和查询[/b]

    [b]1.[/b]记录存储系统是在一个记录存储器中存储信息,所以要存储信息,首先要[b]建立[/b]自己的记录存储器,相当于pc中的数据表。
    private RecordStore recordstore = null;//新建一个RecordStore类的实例
    recordstore = RecordStore.openRecordStore("我的记录存储器的名字",true);//true表示若我的记录存储器不存在,则新建一个名为“我的记录存储器”的记录存储器。
    RecordStore类是RMS中唯一的一个类。

    [b]2.[/b]向recordstore记录存储器中写入记录
    try{
    byte[] outputRecord;//字节数组
    String outputString[] = {"娟", "婷", "珊"};//要存进recordstore的字符串数组
    int outputInteger[] = {15, 10, 5};//要存进recordstore的整数型数组
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//字节数组输出流
    DataOutputStream outputDataStream = new DataOutputStream(outputStream);//数据输出流
    //将数组中的信息写到数据输出流中
    for (int i = 0; i <3; i++){
    outputDataStream.writeUTF(outputString[i]);//这个就是可以写汉字的函数吧,这里只是读到缓冲区中
    outputDataStream.writeInt(outputInteger[i]);//这里只是读到缓冲区中
    outputDataStream.flush();//把缓冲区的数据放置到数据流中
    outputRecord = outputStream.toByteArray();//把数据流转换成字节数组
    recordstore.addRecord(outputRecord, 0, outputRecord.length);//将字节数组写到记录存储器中
    outputStream.reset();//清空ByteArrayOutputStream对象内部所存储的数据
    }
    outputStream.close();//关闭字节数组输出流
    outputDataStream.close();//关闭数组输出流
    }
    catch (Exception error){
    alert = new Alert("写错误", error.toString(), null, AlertType.WARNING);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
    }

    [b]3.[/b]读存储记录
    try{
    String inputString;//
    byte[] byteInputData = new byte[300];
    ByteArrayInputStream inputStream = new ByteArrayInputStream(byteInputData);
    DataInputStream inputDataStream = new DataInputStream(inputStream);
    //以下到002是练习过滤器查询复杂数据记录
    if (recordstore.getNumRecords() > 0){
    filter = new Filter("珊");
    recordEnumeration = recordstore.enumerateRecords(filter, null, false);
    while (recordEnumeration.hasNextElement()){
    recordstore.getRecord(recordEnumeration.nextRecordId(), byteInputData, 0);
    inputString = inputDataStream.readUTF() + " " + inputDataStream.readInt();
    alert = new Alert("Reading", inputString, null, AlertType.WARNING);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
    }
    }
    inputStream.close();
    }
    catch (Exception error){
    alert = new Alert("Error Reading", error.toString(), null, AlertType.WARNING);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
    }

    [b]4.关闭记录存储器[/b]
    try{
    recordstore.closeRecordStore();
    }
    catch (Exception error){
    alert = new Alert("Error Closing", error.toString(), null, AlertType.WARNING);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
    }

    [b]5.删除记录存储器[/b]
    if (RecordStore.listRecordStores() != null){
    try{
    RecordStore.deleteRecordStore("DalianBus");
    }
    catch (Exception error){
    alert = new Alert("Error Creating", error.toString(), null, AlertType.WARNING);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
    }
    }

    [b]明天要解决的问题:怎么利用RMS存储如此庞大的数据信息![/b]
    展开全文
  • STM32F429移植SQLITE记录

    千次阅读 2020-06-10 08:48:52
    不知道自己是哪根筋搭错了还是怎么回事,一时心血来潮,突发奇想,决定把...从内存使用的情况上来看,小单片机就算了,即使是STM32F429,高达192K的内存,也经不起这样折腾,还是得老实点加外存。 OK,结果也看了,

    不知道自己是哪根筋搭错了还是怎么回事,一时心血来潮,突发奇想,决定把SQLite移植到STM32F429上。在此记录一下过程,也确认一下此事可行。
    先说一下结果:移植后的SQLite可运行,可操作,但是比较耗资源(相对单片机来说),内存小的,就别想了,根本玩不起来的。
    这是未加载时的内存使用情况:
    在这里插入图片描述
    这是打开数据库时内存的情况:
    在这里插入图片描述
    这是使用查询后的内存使用情况:
    在这里插入图片描述
    从内存使用的情况上来看,小单片机就算了,即使是STM32F429,高达192K的内存,也经不起这样折腾,还是得老实点加外存。

    OK,结果也看了,现在来说说移植要点。
    背景:STM32F429,32M外存SDRAM。RTT。FATFS。SD卡。
    一切在SQLite的说明文档时已经交待清楚了,这里只是重复一下原作者的声明而已。
    1、用替代实现替换内置的互斥锁子系统。
    2、完全禁用在单线程应用程序中使用的所有静音。
    3、重新配置内存分配子系统,以使用标准库中的malloc()实现以外的其他内存分配器。
    4、重新对齐内存分配子系统,以便它根本不会调用malloc(),而是使用在启动时分配给SQLite的固定大小的内存缓冲区来满足所有内存请求。
    5、用替代设计替换文件系统的接口。换句话说,覆盖SQLite进行的所有系统调用,以便使用一组完全不同的系统调用与磁盘进行对话。
    6、覆盖其他操作系统接口,例如获取Zulu或本地时间的调用。
    其实以上六条只是三个子系统的接口需要处理。分别是:
    1、配置或替换Mutex子系统
    2、配置或更换内存分配子系统
    3、添加新的虚拟文件系统
    最后补全这两个函数
    sqlite3_os_init()
    sqlite3_os_end()
    做好上述工作,写个简单的测试程序。OK,接下来就可以放心测试调整了。
    值得说的是:
    仔细观察内存使用,这耗费了我太多的时间。栈空间从2K起,一直调整到16K,才算勉强成功。
    另外:
    得了解POSIX,若是你没有这个基础,需要花点时间了解下什么标准操作接口。
    得了解VFS,若是你不知道这是什么东西,需要了解下虚拟文件系统的组成及原理。
    得了解下单片机是怎么操作外存的,尤其是STM32Fx系列,我用的是Keil MDK,外挂32MSDRAM。
    至于在调试过程中会遇到莫名其妙的出错时,请不要怀疑Sqlite,把Shell的栈空间放大点,至少到16K。2K是肯定不要想了,4K只够打开数据库,8K免强可以查询一下,16K测试下还目前还算稳定。

    SQLite作者的原话:
    为了将SQLite移植到新的操作系统(默认情况下不支持该操作系统),应用程序必须提供…
    1、有效的互斥子系统(但仅在多线程的情况下),
    2、一个工作的内存分配子系统(假设它在其标准库中缺少malloc()),
    3、并且有效的VFS实施。

    OK,从一开始,我拼命折腾SQLite源码,各种宏开关修改了个遍,最后才发现其实只要额外定义几个作者描述的宏之外,根本不需要动任何东西。事实上我最终也没有动任何源码,另外加了一个头文件用于声明宏开关。
    若是想移植到freeRTOS,注意上面的三点,仿照RTT重写部分接口,一定会成功的。小伙伴们不要在SQLite源码里折腾了。
    这是测试文件,移植代码不附了。请参考RTT就行。

    
    #include "stdio.h"
    #include "sqlite3.h"
    
    #include "rtthread.h"
    #include "string.h"
    
    sqlite3 *db;
    
    void DB_Open()
    {
    	int rc = 0;
    	
    	sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
    	
    	sqlite3_initialize();
    	
    	rc = sqlite3_open("test.db",&db);
    	
    	if(rc)
    	{
    		rt_kprintf("Can't open database!\r\n");
    		return;
    	}
    	
    	rt_kprintf("Open database success!\r\n");
    	
    }
    MSH_CMD_EXPORT(DB_Open,SQLite3 runing);
    
    void DB_Close()
    {
    	sqlite3_close(db);
    
    }
    MSH_CMD_EXPORT(DB_Close,SQLite3 closed);
    
    static int callback_create(void *NotUsed, int argc, char **argv, char **azColName){
       int i;
       for(i=0; i<argc; i++){
          rt_kprintf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
       }
       rt_kprintf("\n");
       return 0;
    }
    
    void CreateTable(void)
    {
    	int rc;
    	char *zErrMsg = 0;
    	char *sql;
    	
       /* Create SQL statement */
       sql = "CREATE TABLE COMPANY("  \
             "ID INT PRIMARY KEY     NOT NULL," \
             "NAME           TEXT    NOT NULL," \
             "AGE            INT     NOT NULL," \
             "ADDRESS        CHAR(50)," \
             "SALARY         REAL );";
    
       /* Execute SQL statement */
       rc = sqlite3_exec(db, sql, callback_create, 0, &zErrMsg);
       if( rc != SQLITE_OK ){
    	rt_kprintf("SQL error: %s\n", zErrMsg);
          sqlite3_free(zErrMsg);
       }else{
          rt_kprintf("Table created successfully\n");
       }
       sqlite3_close(db);
    }
    MSH_CMD_EXPORT(CreateTable,Create Table);
    
    
    //控制台调用形式:
    //	Insert 5 murphy 32 California 2000.00
    void Insert(int argc,char **argv)
    {
       char *zErrMsg = 0;
       int rc;
       char *sql;
    	
    	if(argc < 2)
    		return;
    	
    	char sqlCmd[128] = {0};
    
    	/* Create SQL statement */   
    //	sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  \
    //         "VALUES (6, 'Murphy2', 32, 'California', 20000.00 ); ";
    	sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (";
    	//6, 'Murphy2', 32, 'California', 20000.00 ); ";
    	
    	
    	strcpy(sqlCmd,sql);
    	
    	strcat(sqlCmd,argv[1]);		//ID
    	strcat(sqlCmd,", '");
    	
    	strcat(sqlCmd,argv[2]);		//name
    	strcat(sqlCmd,"', ");
    	
    	strcat(sqlCmd,argv[3]);		//age
    	strcat(sqlCmd,", '");
    	
    	strcat(sqlCmd,argv[4]);		//address
    	strcat(sqlCmd,"', ");
       
    	strcat(sqlCmd,argv[5]);		//salary
    	strcat(sqlCmd,"); ");
    
       /* Execute SQL statement */
       rc = sqlite3_exec(db, sqlCmd, callback_create, 0, &zErrMsg);
       if( rc != SQLITE_OK ){
          rt_kprintf( "SQL error: %s\n", zErrMsg);
          sqlite3_free(zErrMsg);
       }else{
          rt_kprintf( "Records created successfully\n");
       }
    
    }
    MSH_CMD_EXPORT(Insert,Insert record to table);
    
    
    
    static int callback_query(void *data, int argc, char **argv, char **azColName){
       int i;
       rt_kprintf( "%s: ", (const char*)data);
       for(i=0; i<argc; i++){
          rt_kprintf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
       }
       rt_kprintf("\n");
       return 0;
    }
    
    void Query()
    {
       char *zErrMsg = 0;
       int rc;
       char *sql;
       const char* data = "Callback function called";
    
       /* Create SQL statement */
       sql = "SELECT * from COMPANY";
    
       /* Execute SQL statement */
       rc = sqlite3_exec(db, sql, callback_query, (void*)data, &zErrMsg);
       if( rc != SQLITE_OK ){
          rt_kprintf( "SQL error: %s\n", zErrMsg);
          sqlite3_free(zErrMsg);
       }else{
          rt_kprintf( "Operation done successfully\n");
       }
    }
    MSH_CMD_EXPORT(Query,Query infomation from table);	
    	
    static int callback_Delete(void *data, int argc, char **argv, char **azColName){
       int i;
       rt_kprintf( "%s: ", (const char*)data);
       for(i=0; i<argc; i++){
          rt_kprintf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
       }
       rt_kprintf("\n");
       return 0;
    }
    
    //调用形式:DeleteByID 10 删除ID = 10 的一条记录
    void DeleteByID(int argc,char **argv)
    {
    	int rc;
    	char *sql;
    	char *zErrMsg = 0;
    	const char * data = "Callback function called";
    		
    	if(argc < 2)
    		return;
    	
    	sql = "DELETE FROM COMPANY WHERE ID = ";
    	char sqlCmd[50] = {0};
    	
    	strcpy(sqlCmd,sql);
    	strcat(sqlCmd,argv[1]);	
    	
    	rc = sqlite3_exec(db,sqlCmd,callback_query,(void *)data,&zErrMsg);
    	
    }
    MSH_CMD_EXPORT(DeleteByID,Delete infomation from table);	
    
    
    
    展开全文
  • The Road of Hacking PostgreSQL (1)

    千次阅读 2009-01-20 13:37:00
    我感觉,数据库技术真正核心的是数据的物理存储,外存内存交互,索引这些东西。而关系代数,SQL语言这些都是其次的。诸如现在的Google的bigTable等东西,其实最本质的技术还是在数据库领域。和真正做数据库的同学聊
  • 虽然微软提供了一些解决方案(Session进程存储,或者数据库中),但是效果不尽人意.常用的还是Memcache或者Redis等分布式缓存 步步为营-76-用户登录(Session+Cookie)的1.4中通过封装CheckSession来实现身份校验...
  • in与exists的取舍

    2016-11-27 11:17:52
    /* in是对内外表的hash连接,exist是对子查询的循环扫描,子查询可能会有相应的索引,不管是exist还是in,外表都是一个循环,SQL执行过程中子查询的结果一般是固定的,因此数据库会对子查询结果进行缓存。...
  • Java缓存

    2020-11-05 10:05:41
    4缓存就是把一些外存上的数据保存在内存上而已 为什么用缓存? 高性能:减少查询同一个数据时的响应速度 高并发:减少数据库的承载压力(2000/s),缓存走内存,天然支撑高并发 缓存的不良后果: 缓存.
  • 如何访问有图像字段的数据库 如何Visual C++ 6.0中建立自定义数据库类 ODBC数据库编程中DDX 和RFX有什么区别 如何用Visual C++ 6.0开发基于Oracle数据库的应用程序 如何直接通过ODBC读、写Excel表格文件 ...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  • 会计理论考试题

    2012-03-07 21:04:40
    A、可以减少屏幕损耗 B、可以节省计算机内存 C、可以保障系统安全 D、可以增加动感 36.记录存储介质上的一组相关信息的集合称为 __D_ 。 A、程序 B、磁盘 C、软件 D、文件 37.资源管理器中,双击扩展名为“.TXT...
  • 数据库的 JDBC API、 CORBA技术以及能够 Internet应用中保护数据的安全模式等等, 同时还提供了对BJB( Enterprise java beans)、 Java Servlets aPi、JSP( Java Server pages) 以及ⅫML技术的全面攴持。其最终...
  • Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...
  • 在接入网产品A测试中,在内存数据库正常的情况下的各种数据库方面的操作都是正常的。为了进行数据库异常测试,于是将数据库内容人为地破坏了。发现在对数据库进行比较操作时,出现程序跑死了现象。 经过跟踪调试...
  • 它使得Java程序员编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。...
  • 修改外部数据库在4.12版中导致的不兼容问题,并增加了对MS SQL Server数据库中image和text字段类型的说明。 7. 修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲的问题。 8....
  • C#数据结构

    2013-12-10 11:49:54
    二是如何计算机存储器(内存外存)中存储数据;三是如何对存 储计算机中的数据进行操作,可以有哪些操作,如何实现这些操作以及如何对 同一问题的不同操作方法进行评价;四是必须理解每种数据结构的性能特征,...
  • Redisson : Redisson是架设Redis基础上的一个 Java 驻内存数据网格(In-Memory Data Grid),支持超过 30 个对象和服务:Set,SortedSet, Map, List, Queue, Deque ......。更多介绍请看:《Redisson 项目介绍》 ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

数据库在内存还是外存