内存映射

16 哈希映射实际应用 - 两个数组的交集 II

☆樱花仙子☆ 提交于 2019-11-27 03:43:29
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。 进阶: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小很多,哪种方法更优? 如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办? 方法一 class Solution { //给数组做一组标志位数组 public int [ ] intersect1 ( int [ ] nums1 , int [ ] nums2 ) { long start = System . currentTimeMillis ( ) ; int len1 = nums1 . length ; int len2 = nums2 . length ; boolean [ ] bl = new boolean [ len2 ] ; ArrayList < Integer > al = new ArrayList < Integer > ( ) ;

翻译的一篇关于VBO的文章

邮差的信 提交于 2019-11-27 03:31:18
原文章地址: http://www.songho.ca/opengl/gl_vbo.html OpenGL Vertex Buffer Object (VBO) 创建VBO 绘制 VBO 更新 VBO 例子 GL_ARB_vertex_buffer_object 扩展通过提供顶点数组和显示列表(注:在最新版本的OpenGL中,显示列表已经被废弃)来提高OpenGL的绘制效率,同时除去了它们在实现中的一些缺点。顶点缓存对象(VBO) 将顶点数组的数据存储在高效的服务端显存中,这极大提高了数据传输效率。如果我们使用缓存对象来存储像素数据,它就被称作像素缓存对象(PBO)。 使用顶点数组可以减少函数调用的数量和冗余的共用顶点的数据传输。然而,顶点数组的缺点在于顶点数组函数都在用户端,这导致每次调用顶点数组时所有数据都必须重新发送到服务端显存。 另一方面,显示列表是服务端的函数,所以它避免了大量的数据传输;但是,一旦显示列表被编译,其中的数据便再也不能修改。 顶点数组对象(VBO)在服务端的高速内存(注:未必是显存)中为顶点数据创建“缓存对象”,并提供类似于曾在顶点数组中使用过的操作函数,比如glVertexPointer(), glNormglNormalPointer(), glTexCoordPointer(), 等等。 根据用户的要求(分为target模式和usage模式)

delphi中如何将一整个文件读入内存

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 02:55:35
来源 https://bbs.csdn.net/topics/390985048 分配一块大内存吧,要是一下申请不了64M那么大,就多申请几块小的,用个链表连起来。 用FileStream类的方法读取文件内容。 var strList:TStringList; begin strList:=TStringList.Create; strList.LoadFromFile('Filepath');//这样就读到内存中,保存在变量strList中了,要用的时候可以用strList.text取出 end; 文件流、 var mStream: TMemoryStream; begin mStream := TMemoryStream.Create; mStream.LoadFromFile('c:\temp\test.txt'); {把文件读入内存流} Memo1.Lines.LoadFromStream(mStream); {把内存流载入 Memo1} 用内存映射最好,TMemoryStream坑爹呢,整个64M到内存去?要是上G文件也这样整?TFileStream比较慢,内存映射最快,大致是CreateFile获得文件句柄,再 CreateFileMapping 创建映射 ,然后根据大小一块一块MapViewOfFile ,得到的内存地址可以直接访问,效率绝对可以。 PShareMem

Elasticsearch 查询

家住魔仙堡 提交于 2019-11-26 23:33:53
此文档基于1.0版本,属于落后内容,但大致可以用于了解Elasticsearch的特性。 Elasticsearch 查询 轻量级搜索,使用Query-string curl -X GET "http://localhost:9200/employee/_search?q=last_name:Smith +name:(mary john) +date:>2014-09-10 +(aggregations geo)" http://localhost:9200/tcr0081/_search?q=+Flag:1%20%20AND%20+ITCode2:1011885812 GET /_search?sort=date:desc&sort=_score&q=search 注:表达式中:+ 前缀表示必须与查询条件匹配。类似地, - 前缀表示一定不与查询条件匹配。没有 + 或者 - 的所有其他条件都是可选的——匹配的越多,文档就越相关。 _all字段,是string类型;可以使用copy_to替换,copy_to支持更加复杂的查询 不要轻易使用轻量级搜索,尽量使用request body 查询API 查询表达式 curl -X GET "localhost:9200/megacorp/employee/_search" -H 'Content-Type: application/json'

Mapping Persistence Classes

你说的曾经没有我的故事 提交于 2019-11-26 21:27:43
2010年5月10日开篇 前言: 为 了身体力行“一段时间内集中精力做一件事”,今天起将原来的学习安排进行调整,晚上的时间集中的学习Hibernate的设计思路和应用方法。将每天的学习成果整理以后发布到网上,作为备忘,同时也可以接受网友们的监督,以防自己错误的理解了相关知识而不自知。 学习的教材方面,我选的《Manning.Java.Persistence.with.Hibernate.Nov.2006》,这本书的作者中有一个是Hibernate的设计者 ,由他讲解的一些Hibernate的设计思路应该是更有说服力。在此之前,我已经看过前三章了,因此以下的系列随笔就从第四章开始。 学习的节奏呢,尝试使用Pomodoro技术。 学习的原则,就是2/8法则,以点带面。 本章的重点内容有两个: 一是讲解基本的OR映射选项,这些选项如何影响Hibernate加载和保存数据的行为,并讲解这些选项在JPA Annotation、JPA XML Descriptors、Hibernate Native XML Format三种格式下的表示方式; 二是在细粒度的对象模型中,对象的属性和内部子对象如何映射到关系数据模型上。 好了,下面开始本章的学习整理。 一、 首先,先来澄清两个概念,实体Entity Type和值类型Value Type。 在我感觉,作者在这张开篇就引入这两个概念的区分

MyBatis映射器总结

懵懂的女人 提交于 2019-11-26 18:00:52
Mybatis映射器xml配置包含如下标签: select 查询语句,自定义参数返回结果集 insert 插入语句 update 更新语句 delete 删除语句 parameterMap 定义参数映射关系,不建议使用 sql 定义一段SQL,可以再其他部分引用 resultMap 结果集,提供映射规则 cache 给定命名空间的缓存配置 cache-ref 其他命名空间缓存配置的引用 1.select 1.1 select标签包含如下属性: 属性 说明 备注 id 它和Mybatis的命名空间组合起来是唯一的,提供MyBatis调用 若果命名空间和id结合起来不唯一,MyBatis会抛异常 parameterType 参数类型,可以给出类的全命名,也可以给出别名,但是别名必须是MyBatis内部定义或者自定义的 可以选择JavaBean、map等简单的参数传递给SQL parameterMap 新版废弃的,不建议使用 -- resultType 定义类的全路径,在允许自动匹配的情况下,结果集将通过 JavaBean 的规范映射;或定义为 int、double、float、map 等参数;也可以使用别名,但是要符合别名规范,且不能和 resultMap时使用 常用的参数之 ,比如统计总条数时可以把它的值设置为 int resultMap 它是映射集的引用,将执行强大的映射功能

综合技术 --myBatis理解

两盒软妹~` 提交于 2019-11-26 17:14:50
myBatis是一个基于java的持久层框架,它提供的持久层框架包括 SQL Maps和Data Access Objescts(DAO)。 myBatis是支持普通的SQL查询、存储过程和高级映射的持久层框架。myBatis使用简单的XML或注释用于配置和原始映射,将接口和java的对象映射成数据库中的记录。 每个myBatis应用程序主要都是使用sqlSesionFactory实例的,一个 sqlSesionFactory实例可以通过 sqlSesionFactoryBuilder获得, sqlSesionFactoryBuilder可以从一个XML配置文件或者一个预定义的配置类的实例获得。 用xml文件可以很方便的构建 sqlSesionFactory实例,配置的时候推荐使用 类路径资源,当然也可以使用其他的reader实例。myBatis有一个资源类--Resources,它有很多方法,可以方便的从类路径及其它位置加载资源。 myBatis的流程 1.加载配置文件并初始化 触发条件:加载配置文件 将SQL的配置信息加载成为一个个的MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。 2.接收调用请求 触发条件:调用myBatis提供的api 传入参数:为SQL的ID和传入参数对象 处理过程:将请求传递给下层的请求处理层

hibernate1+基础入门

こ雲淡風輕ζ 提交于 2019-11-26 16:17:34
第1章 hibernate 和 ORM 的概念部分 1.1 Hibrenate 概述 Hibernate是一种 Java 语言下的 对象关系映射 解决方案。它是使用 GNU宽通用公共许可证 发行的 自由 、 开源 的软件。它为 面向对象 的 领域模型 到传统的 关系型数据库 的映射,提供了一个使用方便的 持久化框架 。 Hibernate框架是Java持久层框架之一,它的设计目标是将软件开发人员从大量相同的 数据持久层 相关编程工作中解放出来。无论是从设计草案还是从一个 遗留 数据库开始,开发人员都可以采用Hibernate。Hibernate不仅负责从Java 类 到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短了手动处理 SQL 和 JDBC 上的开发时间,由于它具有简单易学、灵活性强、扩展性强等特点,能够大大地简化程序的代码量,提高工作效率,因此受到广大开发人员的喜爱。 Hibernate是一个开放源代码的ORM框架,它对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的编程思想来操作数据库。 1.2 ORM 概述 Object Relation Mapping 对象关系映射。 对象 -关系映射(OBJECT/RELATIONALMAPPING,简称ORM),是随着面向对象的

学习笔记之共享内存

流过昼夜 提交于 2019-11-26 13:50:55
共享内存 共享内存是进程间通信方式中效率最高的一种,因为进程可以对内存进行直接读写,而没有复制等其他操作,共享内存在内核中被创建,用时映射在用户空间,在用户空间操作。由于多个进程可同时访问共享内存,因此需要同步和互斥机制配合使用 一、函数接口 申请key值,除创建共享内存以外的进程需要通过key值来获得内存的ID值,当key值为IPC_PRIVATE(0)时,共享内存为私有,只有当前进程可以访问。 1、key_t ftok(const char *path, int proj_id); 成功时返回合法的key值,失败时返回EOF path 存在且可访问的文件的路径 proj_id 用于生成key的数字,不能为0 2、 创建或者打开一个共享内存 int shmget(key_t key, int size, int shmflg); 成功时返回共享内存的id,失败时返回EOF key 和共享内存关联的key,IPC_PRIVATE 或 ftok生成 shmflg 共享内存标志位 IPC_CREAT|0666 3、共享内存映射 void *shmat(int shmid, const void *shmaddr, int shmflg); 成功时返回映射后的地址,失败时返回(void *)-1 shmid 要映射的共享内存id shmaddr 映射后的地址, NULL表示由系统自动映射

Redis系列9: redis集群高可用

孤街浪徒 提交于 2019-11-26 12:22:51
Redis集群的概念:   RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题 一、 分布式数据库概念 1. 分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集。比如我们库有900条用户数据,有3个redis节点,将900条分成3份,分别存入到3个redis节点 2. 分区规则: 常见的分区规则哈希分区和顺序分区, redis 集群使用了哈希分区 ,顺序分区暂用不到,不做具体说明; rediscluster采用了哈希分区的 “虚拟槽分区” 方式(哈希分区分节点取余、一致性哈希分区和虚拟槽分区),其它两种也不做介绍,有兴趣可以百度了解一下 3. 虚拟槽分区(槽:slot) RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据 哈希函数: Hash()=CRC16[key]&16383 按位与 槽与节点的关系如下 redis用虚拟槽分区原因:解耦数据与节点关系,节点自身维护槽映射关系,分布式存储 4. redisCluster的缺陷: a