文件句柄

IBM Developer:Java 9 新特性概述

萝らか妹 提交于 2019-12-16 00:54:24
Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/index.html Java 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性。本文对 Java 9 中包含的新特性做了概括性的介绍,可以帮助你快速了解 Java 9。 Java 平台模块系统 Java 平台模块系统,也就是 Project Jigsaw,把模块化开发实践引入到了 Java 平台中。在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像。这样可以极大的减少 Java 运行时环境的大小。这对于目前流行的不可变基础设施的实践来说,镜像的大小的减少可以节省很多存储空间和带宽资源。 模块化开发的实践在软件开发领域并不是一个新的概念。Java 开发社区已经使用这样的模块化实践有相当长的一段时间。主流的构建工具,包括

【搞定Jvm面试】 Java 内存区域揭秘附常见面试题解析

烂漫一生 提交于 2019-12-15 14:23:17
本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb (【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错的还,不妨去点个Star,鼓励一下! Java 内存区域详解 如果没有特殊说明,都是针对的是 HotSpot 虚拟机。 写在前面 (常见面试题) 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String 类和常量池 8 种基本类型的包装类和常量池 一 概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C 程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。 二 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK. 1.8 和之前的版本略有不同,下面会介绍到。 JDK 1.8 之前: JDK 1.8 : 线程私有的:

python文件操作

南楼画角 提交于 2019-12-14 18:17:53
一、文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。 打开文件的模式有: r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 x, 只写模式【不可读;不存在则创建,存在则报错】 a, 追加模式【可读; 不存在则创建;存在则只追加内容】 "+" 表示可以同时读写某个文件 r+, 读写【可读,可写】 w+,写读【可读,可写】 x+ ,写读【可读,可写】 a+, 写读【可读,可写】 "b"表示以字节的方式操作 rb 或 r+b wb 或 w+b xb 或 w+b ab 或 a+b 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 Table 文件对象方法 方法 描述 f.close() 关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。 f.fileno() 获得文件描述符,是一个数字 f.flush() 刷新输出缓存 f.isatty() 如果文件是一个交互终端,则返回True,否则返回False。 f.read([count]) 读出文件,如果有count,则读出count个字节。 f.readline() 读出一行信息。 f.readlines() 读出所有行

什么是句柄?为什么会有句柄?HANDLE

谁都会走 提交于 2019-12-13 11:37:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转载自 http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html 关键字:句柄, HANDLE, WINDOWS SDK, windows.h, 从广义上, 能够从一个数值拎起一大堆数据的东西都可以叫做句柄。 句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗? 然后,指针其实也是一种"句柄",只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是"句柄"。但指针也有着能从一个32位的值引用到一大堆数据的作用,这不是句柄又是什么? Windows系统中有许多 内核对象 ( 这里的对象不完全等价于"面向对象程序设计"一词中的"对象",虽然实质上还真差不多 ),比如打开的文件,创建的线程,程序的窗口,等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,他们拥有大量的属性。为了保存这样一个"对象"的状态,往往需要上百甚至上千字节的内存空间,那么 怎么在程序间或程序内部的子过程(函数)之间传递这些数据呢? 拖着这成百上千的字节 拷贝来拷贝去 吗?显然会浪费效率。那么怎么办

Delphi中HInstance

拥有回忆 提交于 2019-12-10 11:34:27
通过测试看出:HInstance、Application.Handle、Self.Handle不是一回事。 Self.Handle是窗体句柄; Application.Handle也是个窗体的句柄,不过这个窗口很小,在任务栏上; HInstance是程序实例的句柄;同一个程序可能会有几个副本同时允许,每个副本当然会有不同的句柄。 ------------------------------------------------- HInstance是你的exe或者DLL加载内存的首地址,很多查找资源文件的函数都需要这个值 在Delphi中,可以通过访问一个叫HInstance的全局变量来获取本应用程序的实例句柄。 如果一个程序编译成包,那么HInstance并不代表应用程序的模块句柄。此时要用MainInstance来访问宿主程序的模块句柄,而HInstance代表代码所在的模块句柄。 来源: https://www.cnblogs.com/ximi07/p/12015058.html

MFC建立应用程序启示录(创世纪新篇)

安稳与你 提交于 2019-12-09 21:27:00
MFC是vc+的核心部分,需要一定的编程功底。 Windows编程基础 编制一个功能强大和易操作的Windows应用程序所需要的代码肯定会比一般的C++程序要多得多,但并不是所有的代码都需要自己从头开始编写,因为Visual C++不仅提供了常用的Windows应用程序的基本框架,而且可以在框架程序中直接调用Win32 API(Application Programming Interface, 应用程序接口)函数。这样,用户仅需要在相应的框架位置中添加自己的代码或修改部分代码就可实现Windows应用程序的许多功能。 简单的Windows应用程序 先来看一个最简单的Windows应用程序Ex_HelloMsg。 [例Ex_HelloMsg] 一个简单的Windows应用程序 #include <windows.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox (NULL, "你好,我的Visual C++世界!", "问候", 0) ; return 0 ; } 在Visual C++ 6.0运行上述程序需要进行以下步骤: (1) 选择“文件”→“新建”菜单命令,显示出“新建”对话框。在“工程

多进程共享内存

瘦欲@ 提交于 2019-12-06 21:24:25
问题描述 一个大小为3的缓冲区,初始为空 2个生产者随机等待一段时间,往缓冲区添加数据,若缓冲区已满,等待消费者取走数据后再添加,重复6次 3个消费者随机等待一段时间,从缓冲区读取数据,若缓冲区为空,等待生产者添加数据后再读取,重复4次 说明: 显示每次添加和读取数据的时间及缓冲区里的数据 生产者和消费者用进程模拟 思路 这道题目涉及到的知识点有: 进程控制管理,包括进程的创建与销毁等 进程通信技术,如管道、共享内存等 解决思路主要是: 一个主进程负责创建和销毁子进程,负责创建共享内存区和公用信号量 五个子进程,两个是生产者,三个是消费者,通过信号量对共享内存进行互斥读写 创建互斥访问量 创建信号量如下: 信号量:EMPTY, FILLED, RW 初始化:EMPTY=3,FILLED=0,RW=1 说明: EMPTY 信号量指示缓冲区有多少个空位置没有被占用,因此初始值等于缓冲区数量; FILLED 指示缓冲区有多少个位置被占用,因此初始值等于0; RW 指示是否允许对共享内存进行读写操作,为防止进程并发执行导致的数据共享错误,每次仅允许一个进程对共享内存进行操作,因此初始值为1. 生产者消费者执行操作 生产者 P(EMPTY);//首先询问是否有空闲缓冲区,没有则阻塞,等待消费者拿出数据释放一个缓冲区;有则EMPTY-=1 P(RW);//是否可以对共享内存进行读写操作

Nginx教程(一) Nginx入门教程

*爱你&永不变心* 提交于 2019-12-06 16:34:53
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及 搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括 Yandex、Mail.Ru、 VKontakte,以及 Rambler。据 Netcraft 统计,在 2012 年 8 月份,世界上最繁忙的网站中有 11.48%使用 Nginx 作为其服务器或者代理服务器。目前互联网主流公司 360、百度、新浪、腾讯、阿里等,目前中国互联网企业 70

handle句柄

孤人 提交于 2019-12-06 13:46:47
若是你向我问起 Win32 程序设计中印象最深(最坑爹)的一个概念是什么,那么我会毫不犹豫地告诉你——句柄(Handles)。究其原因,无论是 MSDN 还是 维基百科 ,对于“句柄”这个词的解说都显得过于专业,完全是一副气势汹汹、不把初学者吓尿就不罢休的架势。 而这个概念恰恰是入门 Win32 程序设计所要逾越的第一座高山:文件的句柄(HANDLE)、窗口的句柄(HWND)、位图的句柄(HBITMAP)、设备上下文的句柄(HDC)、菜单的句柄(HMENU)、实例的句柄(HINSTANCE)……真可谓如影随形,无处不在。 设计哲学 我必须承认,用“哲学”这个字眼来当作标题是有些大了。其实用大白话来说,就是为什么要设计“句柄”这个东西,以及设计这东西到底有什么好处。 那么让我们把思绪带回到遥远的古代,先。 假设你带领一队拓荒者,你们的目标是在内陆的一个平原上建立你们的村子。现在的情况是,这个地方虽然物产丰饶,但周围并没有类似河流、湖泊这样直接可用的饮用淡水资源,那么你会怎么办? ——当然是打口井了。 好办法!但接下来的问题又来了: 这是一口 10 米深的井,你将如何解决饮水的问题?毕竟,下到井底直接喝水不仅费时费力,而且存在着一定的危险性。 这个问题的确稍显脑残,因为我们的祖先早已发明了一件神奇的辅助工具来解决这个问题。这件工具也就是为我们所熟知的辘轳,如下图。

计算机中的“句柄”到底是啥意思呢

三世轮回 提交于 2019-12-05 14:08:23
https://www.cnblogs.com/Nick-Hu/p/7154197.html 里提到: 所谓句柄,实际上是一个数据,是一个 long (长整型)的数据。句柄是windows用来标识被应用程序所建立或使用的对象的唯一整数。 但是人家想了解的是,linux 中的句柄又是啥意思呢? https://www.orchome.com/518 1. 句柄就是一个标识符,只要获得对象的句柄,我们就可以对对象进行任意的操作。 2. 句柄不是指针,操作系统用句柄可以找到一块内存,这个句柄可能是标识符,map的key, 也可能是指针,看操作系统怎么处理的了。fd算是在某种程度上替代句柄吧;linux 有相应机制,但没有统一的句柄类型,各种类型的系统资源由各自的类型来标识,由各自的接口操作。 粗暴的解释: 最早的windows开发书籍,handle 是被翻译成 “把手” 的。虽然不好听,但是个人认为非常传神。 虽然你握住的只是把手,却能拉动整扇门,而且你根本不用在意那门长什么样子 一扇门如果有多个把手,被不同的人(进程)握住,门往哪儿走就不好说了 设计这么一个句柄的原因在于 句柄可以防止用户随意读写操作系统内核的文件对象 。 无论是linux 还是windows, 文件句柄总是和内核的文件对象相关联的,但如何关联细节用户并不可见。内核可以通过句柄计算出内核文件对象的地址