首页
精选文章Java查看全文java是一款面向对象的编程语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。java是目前市场中最广泛使用的编程语言之一,其主要版本引入的新特征如下: JDK1.5新特性 自动装箱与拆箱、枚举、泛型、For-Each循环 JDK1.7新特性 switch支持字符串、try语句自动关闭资源 JDK8新特性 Lambda表达式 跨平台 Java跨平台的特性源自其虚拟机的架构,编程语言分为编译型语言和解释性语言。 编译型语言是提前将源代码通过编译过程转换为CPU可以识别的二进制机器码指令。现代的PC或者智能手机硬件有数百个身子上千个指令,而单片机则只有几十个指令,而且不同的硬件平台的指令是不同的,所以编译器需要基于不同的硬件体系进行编译。所以编译型语言是不能跨平台的,除了其编译出来的可执行程序不能在异构平台运行之外,源代码也不能跨平台,例如linux平台下C语言的long型8个字节,睡眠函数是sleep(),但是windows下long只有4个字节,睡眠函数是大写字母开头的Sleep()。 C、C++、Golang是常见的编译型语言。 解释性语言都是跨平台的,因为解释性语言和程序真正在硬件执行是通过解释器翻译的,解释器屏蔽了底层硬件的差异,不同平台的解释器将遵循标准语法的源代码转成匹配硬件的指令进行执行,从而实现了“一次编写,到处运行”。 Python,Javascript,PHP都是常见的解释型语言。 相较于单纯的编译型语言和解释性语言,Java是两者的结合体,源代码先编译为硬件无关的字节码,然后通过虚拟机执行字节码,而且在执行过程中还可以会被进一步编译为机器码…Lucene查看全文Lucene是用Java语言开发的一款开源检索工具,提供了索引构建以及查询的能力。Lucene目前是Apache基金会jakarta项目组的一个子项目,除了作为SDK集成在业务应用中提供检索功能之外,ElasticSearch、Solr等全文搜索引擎都基于Lucene实现。Lucene的索引结构可以分为索引,段,文档,域,词等几个层级。 索引(Index):索引是Lucene可以对外提供检索服务的基本单元,一个索引包含的文档通用具有相同的schema,这些文档经过分词建立索引文件之后存储在持久化存储,例如数据库或文件目录。 段(Segment):一个索引可以包含多个彼此独立的段。Lucene进行关键词检索时需要加载所有的段,索引段较多会增加I/O开销,减慢检索速度,Lucene提供了段合并策略定期对段进行合并。 文档(Document):文档是需要建立索引的数据,文档一般有会多个字段,这些字段建立索引之后存储在Index的Segment中。 域(Field):文档一般会包含多种不同的字段,这些字段在建立索引的过程会会有不同的属性,例如是否需要存储,是否需要分词等。 词(Item):Lucene会通过分词器将字段中的字符串拆分成词序列,这些词会以倒排索引的形式存储在索引中。 lucene框架的使用流程一般分为创建索引以及查询检索两部分。 首先建立索引,Lucene采用倒排索引存储词到文档的信息。除了倒排索引之外,Lucene对索引中的词(Item)通过压缩结构建立表字典表,字典表可以定位一个词在倒排索引中的位置。 检索过程首先对输入进行分词,然后分别检索这些词对应的文档,通过一定的合并策略(交集或者并集)再加上加分机制返回结果…QEMU查看全文QEMU(quick emulator)是一种通用的开源计算机仿真器和虚拟器,最早由由Fabrice Bellard编写,QEMU虚拟机是一个纯软件的实现。QEMU共有两种操作模式:全系统仿真:能够在任意支持的架构上为任何机器运行一个完整的操作系统 用户模式仿真:能够在任意支持的架构上为另一个Linux/BSD运行程序 ,可以在没有KVM模块的情况下独立运行,但是性能比较低。 用户模式 QEMU可以通过动态代码编辑机制来转译不同硬件体系的代码,例如其仿真器可以把ARM平台的指令翻译为x86平台的指令,然后在x86的CPU执行。 系统模式 QEMU有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化以及I/O设备的虚拟化。QEMU的优点在于其实纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,但是也正因为QEMU是纯软件实现的,因此所有指令都需要QEMU转手,因此会严重的降低性能。而可行的办法是通过配合KVM或者Xen来进行加速。 KVM QEMU有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化以及I/O设备的虚拟化。QEMU是一个用户空间的进程,需要通过特定的接口才能调用到KVM模块提供的功能。从QEMU角度来看,虚拟机运行期间,QEMU通过KVM模块提供的系统调用接口进行内核设置,由KVM模块负责将虚拟机置于处理器的特殊模式运行。QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化加速以提高虚拟机的性能。 |
热门分类开源Golang消息队列JavaJavascriptLinuxMysqlNLPPHP事务内存管理分布式理论分类存储常用存储开源软件操作系统画图网络编程数据库算法虚拟化前端存储理论常用算法微服务数据结构算法应用计算机原理中间件共识算法分布式分治动态规划容器并发排序架构组件绘图工具网络协议编程语言理论算法思想树缓存架构C++字符串算法工程思想搜索
算法题库精选内容 |