内存映射

Mybatis—mapper.xml配置文件

百般思念 提交于 2019-12-14 18:26:11
目录 select Select 元素的属性 insert, update 和 delete 示例 sql 参数 (parameterType...) 字符串替换(${} 和 #{}区别) 结果映射 高级结果映射 id & result 关联association (实体类的属性是个实体类) 集合 集合的嵌套 Select 查询 集合的嵌套结果映射 集合的多结果集(ResultSet) 自动映射 缓存 (未完待续) MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。 SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete –

【Linux】malloc 与共享内存原理区别

戏子无情 提交于 2019-12-14 01:15:06
本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc。 本文先简单介绍应用程序对内存的使用以及I/O系统对内存的使用的基本原理,这对理解上述系统调用和库函数的实现有很大帮助。 1 内存管理基础 Linux对物理内存的管理是以页为单位的,通常页大小为4KB,Linux在初始化时为所有物理内存也分配了管理数据结构,管理所有物理页面。 每一个应用程序有独立的地址空间,当然这个地址是虚拟的,通过应用程序的页表可以把虚拟地址转化为实际的物理地址进行操作,虽然系统可以实现从虚拟地址到物理地址的转换,但并非应用程序的每一块虚拟内存都对应一块物理内存。Linux使用一种按需分配的策略为应用程序分配物理内存,这种按需分配是使用缺页异常实现的。比如一个应用程序动态分配了10MB的内存,这些内存在分配时只是在应用程序的虚拟内存区域管理结构中表示这一区间的地址已经被占用,内核此时并没有为之分配物理内存,而是在应用程序使用(读写)该内存区时,发现该内存地址对应得物理内存并不存在,此时产生缺页异常

【UE4】TMap的使用

老子叫甜甜 提交于 2019-12-13 16:41:10
TMap 在 TArray 之后, 虚幻引擎 4 (UE4)中最常用的容器是 TMap 。此容器是一个关联式容器,意味着每个键均拥有一个关联值,可通过键高效地查找值对象。 存在两种映射类型:TMap 和 TMultiMap 。TMap 的键为唯一。键已存在时插入一个新的键值对将导致现有的对被替代。TMultiMap 的键不为唯一,因此新添加的对不会替代现有的对。 TMap TMap 主要由两个类型定义 - 键类型和值类型 - 作为关联对存储在映射中。将这些对作为映射的元素类型参考十分便利,就像是个体对象一样。在此文档中,元素为一个键值对,而个体元素会作为元素的键或元素的值被参考。元素类型实际上是一个 TPair < KeyType, ElementType >,但它很少需要直接参考 TPair 类型。 和 TArray 一样,TMap 是同构容器,因此其所有元素完全为相同类型。TMap 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。映射被销毁时,其元素也将被销毁。键类型和值类型也必须为值类型。 TMap 是散列容器,意味着键类型必须支持 GetTypeHash 函数并提供一个运算符 ==,对键的相等性进行对比。稍后将详细讨论散列。 TMap 还可通过任选分配器控制内存分配行为。标准 UE4 分配器(如 FHeapAllocator

保存多张对应的映射图像(深度图像同理)和彩色图像

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-13 16:14:24
#include <opencv2\opencv.hpp> #include<iostream> #include <Windows.h> #include "NuiApi.h" #include<cv.h> #include <d3d11.h> #include<cv.h> #include<cxcore.h> #include<highgui.h> using namespace std; using namespace cv; //最远距离(mm) const int MAX_DISTANCE = 3500; //最近距离(mm) const int MIN_DISTANCE = 200; const LONG m_depthWidth = 640; const LONG m_depthHeight = 480; const LONG m_colorWidth = 640; const LONG m_colorHeight = 480; const LONG cBytesPerPixel = 4; //像素位数 //计算内存大小 int main() { //彩色图像 Mat image_rgb; //深度图像 Mat image_depth; int m=1; //创建一个MAT image_rgb.create(480,640,CV_8UC3); image_depth

Unix / Linux 线程的实质

天涯浪子 提交于 2019-12-13 01:15:49
Unix / Linux 线程的实质 线程与进程的比较 概述: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。 区别: 进 程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个 进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序 健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 简而言之,一个程序至少有一个进程,一个进程至少有一个线程

MFC宏定义(转载 出处不详)

余生长醉 提交于 2019-12-12 08:30:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 很不错的一篇文章,很多不明白的地方在此讲的很清楚,很完整,主要是MFC的宏定义了.站长黑森林推荐! AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 说明: 定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用THROW_LAST宏以便把处理过程移到下个外部异常框架。AND_CATCH可标记CATCH或AND_CATCH块的末尾。 注释: AND_CATCH块被定义成为一个C++作用域(由花括号来描述)。若用户在此作用域定义变量,那么记住他们只在此作用域中可以访问。他也用于exception_object_pointer_name变量。 ASSERT ASSERT(booleanExpression) 说明: 计算变量的值。如果结构的值为0,那么此宏便打印一个诊断消息并且成讯运行失败。如果条件为非0,那么什么也不做。 诊断消息的形式为: assertion failed in file in line 其中name是元文件名

OpenGL -纹理的使用

余生长醉 提交于 2019-12-11 23:06:18
文章目录 1.1 纹理的概念 1.2 凹凸纹理 1. 基本思想 2. 三种记录方法 1. Offset map 2. Hieght-field map 3. Normal map 1.3 位移纹理 1. 概念 1.4 映射关系 1. 投影式纹理映射 2. 两步法纹理映射 3. 展UV方法 1.5 OpenGL中的使用 1. 创建纹理对象 2. 应用纹理到像素 3. 启用纹理贴图 4. 绘制场景 5. 纹理坐标变换 1.6 纹理过滤 1. 常用方式 2. Mipmap过滤 1. Mipmap概念 2. 过滤方式 3. 如何选取 4. 如何生成 5. 存在问题 1.1 纹理的概念 如何让模型表面的细节效果更突显 细化模型表面的几何,这种方法会造成大量的数据 采用纹理映射的方法,纹理图中携带着物体表面的各种细节 Texture mapping(纹理映射,纹理贴图) 纹理映射的主要思想 将一给定的 纹理函数 映射到物体表面上,在对物体表面进行光亮度计算时可采用相应的纹理函数值来影响光照模型中的参数(如漫反射光亮度)以产生纹理效果,例如下面的光照明模型中漫射反射光的影响 上面的 K t K_t K t ​ 就是改变了漫反射的颜色,纹理映射不仅限于改变颜色,而且还可以改变 颜色、高光、凹凸、反射以及透明度等等 都可以采用纹理映射来改变 例如在3D Max 中可以设置很多贴图 颜色纹理

Mapper XML 文件

我只是一个虾纸丫 提交于 2019-12-11 16:12:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。 SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置。 cache-ref – 其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语句 select – 映射查询语句 下一部分将从语句本身开始来描述每个元素的细节。 select 查询语句是 MyBatis 中最常用的元素之一,光能把数据存到数据库中价值并不大,如果还能重新取出来才有用,多数应用也都是查询比修改要频繁。对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis

【大厂面试真题350道】性能优化+微服务+并发编程+开源框架+分布式

两盒软妹~` 提交于 2019-12-11 08:28:37
一,性能优化专题: 1.tomcat性能调优 怎么给tomcat调优 如何加大comcat连接数 怎么加大tomcat的内存 tomcat中如何禁止列目录下的文件 Tomcat有几种部署方式 tomcat的优化经验 2.jvm性能优化专题: Java类加载过程 java内存分配 描述一下jvm加载class文件的原理机制 GC是什么?为什么要有GC? 简述java垃圾回收机制 如何判断一个对象是否存活?(或者GC对象的判定方法) 垃圾回收的优点和原理。并考虑2种回收机制。 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗? 有什么办法主动通知虚拟机进行垃圾回收? java中会存在内存泄漏吗,请简单描述。 深拷贝和浅拷贝 syatem,gc**() 和runtime,gc ()**会做做什么事情? finalize方法什么时候被调用?析构函数(finalizatinon)的目的是什么? 如何对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存? 什么是分布式垃圾回收(DGC)?它是如何工作的? 串行(serial)收集器和吞吐量(throughout)收集器的区别是什么? 在Java中,对象什么时候可以被垃圾回收? 简述Java内存分配与回收策率以及minor GC和majorGC。 jvm的永久代中会发生垃圾回收吗? Java中垃圾收集的方法有哪些?

处理器中的缓存

﹥>﹥吖頭↗ 提交于 2019-12-11 08:21:01
文章目录 1 缓存出现的原因 2 程序访问的局部性 3 高速缓冲存储器的引入(cache) 3.1 cache的基本概念 3.2 cache解决方案 3.3 处理器的数据访问 4 内存和cache之间的映射 4.1 直接映射法 1 缓存出现的原因 一个工艺上的问题: 处理器和内存使用的半导体器件工艺不同。 工艺的差异导致了处理器与内存的速度差异。 数据处理时,处理器总是需要等待内存。 2 程序访问的局部性 在短时间内,处理器访问的存储空间是一个很小的范围。 时间局部性: 某个存储单元在短时间内很可能被再次访问。 空间局部性: 某个存储单元的邻近单元在短时间内也被访问。 3 高速缓冲存储器的引入(cache) 3.1 cache的基本概念 cache的基本概念: cache是一种小容量高速存储器。 cache的存取速度与处理器的运算速度几乎同量级。 cache在现代计算机系统中直接内置于处理器芯片中。 3.2 cache解决方案 cache解决方案: 在处理器和内存之间设置cache。 把内存中被频繁访问的指令和数据复制到cache中。 大多数情况下,处理器能直接从cache中取得指令和数据。 3.3 处理器的数据访问 4 内存和cache之间的映射 4.1 直接映射法 直接映射法的方式如下: 将cache和内存分成固定大小的块(如:512Byte/块)。