Welcome 微信登录

首页 / 操作系统 / Linux

Linux IO多路复用 epoll 心得

Linux IO多路复用 epoll 心得

一、epoll简介epoll是Linux内核为处理大批量文件描述符而作了改进的poll, 是Linux下多路复用IO接口select/poll的增强版本, 它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候, 它无须遍历整个被侦听的描述符集, 只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。相关文件到Linux公社资源站下载:----------------------------...
C++函数配接器

C++函数配接器

一、概述配接器(adaptor)在STL组件的灵活运用功能上,扮演着轴承、转换器的角色,将一种容器或迭代器装换或封装成另一种容器或迭代器。adaptor这个概念,实际上是一种设计模式,其定义如下:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。配接器按功能可以分为如下3类:可以改变函数或仿函数接口的适配器,称为仿函数适配器; 针对容器的适配器,称为容器适配器; 针对迭代器的适配器,称为迭代...
C++标准库中各种排序归纳

C++标准库中各种排序归纳

一、简介所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。我们在编程过程中会经常接触到排序,比如游戏中的排行榜等。C++标准库中提供了各种不同的排序算法,这篇博客将逐一介绍。还有在什么场景下,具体该使用哪一个排序算法效率更高。二、算法1. sort原型:template<typename iterator>void sort(iterator begin, iterator end)template <...
Python标准类型的分类

Python标准类型的分类

Python有3种不同的模型可以帮助对基本类型进行分类,这些类型更好的理解类型之间的相互关系以及他们的工作原理。 1 存储模型 能保存单个字面对象的类型,称为原子或标量存储; 能保存多个对象的类型,称为容器。存储类型分类Python类型标量/原子类型数值(所有的数值类型),字符串(全部都是文字)容器类型列表,元组,字典 2 更新模型 以对象创建成功后,它的值是否可以进行更新为依据进行的分类,分为可变类型和不可变类型。更新模型分类Python类型...
数组名和指针的区别(数组名不是指针,是数组首地址)

数组名和指针的区别(数组名不是指针,是数组首地址)

听了一堂C语言的课,那老师说:“数组名就是一个指向数组首地址的常量指针”。我上百度查了一些,有好多教程、书籍等,都持相同的观点。但我一直感觉——数组名不等于指针。实践是检验真理的唯一标准,于此,有了以下内容。首先,声明一个数组和一个常量指针并指向那个数组。1 int arr[3] = { 1, 2, 3 };//声明数组2 const int *p_arr = arr;//声明常量指针设问:一个整型指针的长度...
JavaScript面向对象设计

JavaScript面向对象设计

JavaScript中Java语言不一样,它没有类这个说法,更没有子类父类一说,所以它所谓的继承机制,也是和其他语言完全不同的。创建对象三种方式1.最简单的方式,创建一个object对象,然后为它添加属性和方法var person=new object();person.name="zhangsan";person.age=20;person.sayName=function(){alert(this.name);};2.工厂方式本质上就是对上述最简单的方...
GC.Collect如何影响垃圾回收

GC.Collect如何影响垃圾回收

根据垃圾回收的算法,对象在内存中是按代的方式存放的,通常情况下,当第0代沾满分配的空间的时候(比如是256k),GC就会启动去回收第0代对象,幸存的第0代对象会被放入第1代中去,第1代的对象要等到放满了才会收集,因此,越是年轻的代越是被频繁的收集,由于通常情况下GC只收集第0代对象,既保证了可回收较多的内存,又忽略了老一代的对象,从而加快了垃圾回收的速度,提升了性能。因此当调用gc.collect的时候,相当于强制的对所有代,不管年轻还是老的都执行一次回收...
Java Garbage Collection基础之Java 垃圾回收机制技术详解

Java Garbage Collection基础之Java 垃圾回收机制技术详解

最近还是在找工作,在面试某移动互联网公司之前认为自己对Java的GC机制已经相当了解,其他面试官问的时候也不存在问题,直到那天该公司一个做搜索的面试官问了我GC的问题,具体就是:老年代使用的是哪中垃圾回收算法,并详细解释第一步做什么,第二部做什么?这时候才发现具体一步一步怎么来的,确实不知道。那结果就可想而知,面试官就对我不感兴趣了。那一瞬间,感觉自己不应该过分轻信别人的博客,要相信官方的文档,因为有些写博客的技术人员也许自身对某些技术都不是很了解,只是自...
JVM内存管理及垃圾回收详解

JVM内存管理及垃圾回收详解

很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C、C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开发效率高,执行效率低。另一方面,Java语言对程序员做了一个美好的承诺:程序员无需去管理内存,因为JVM有垃圾回收(GC),会去自动进行垃圾回收。其实不然:1、垃圾回收并不会按照程序员的要求,随...
Java和.NET中的垃圾回收机制比较

Java和.NET中的垃圾回收机制比较

Java和.NET中的垃圾回收机制相同点:都采用了分代的机制。都支持并发GC。都没有采用引用计数方式,而是采用了追踪技术。.NET中,可以通过代码GC.Collect() 强制要求CLR进行垃圾回收(由于垃圾回收是异步的,CLR有一个专用的线程负责垃圾回收,因此,即使调用GC.Collect,也并不是实时的调用了Finalize,因此要保证确实调用了析构方法,可以使用语句GC.WaitForPendingFinalizers()来确保析构方法真的被运行了,...
JNI通过动态注册实现native函数

JNI通过动态注册实现native函数

一、概述通过javah工具将java代码中的native声明的函数生成标准的C/C++函数头,每个函数的名字都很长(Java_包名_类名_函数名),这样C/C++函数的函数名就是定死的,不能修改,否则java找不到函数。这里还有种方式,通过注册的方式将C/C++的函数与java中的native函数进行一一对应的,函数名可以任意书写。二、代码实现SimpleJni.javapackage com.bt.jni; public class SimpleJni...
JNI动态注册native方法及JNI数据使用

JNI动态注册native方法及JNI数据使用

前言或许你知道了jni的简单调用,其实不算什么百度谷歌一大把,虽然这些jni绝大多数情况下都不会让我们安卓工程师来弄,毕竟还是有点难,但是我们还是得打破砂锅知道为什么这样干吧,至少也让我们知道调用流程和数据类型以及处理方法,或许你会有不一样的发现。其实总的来说从java的角度来看.h文件就是java中的interface(插座),然后.c/.cpp文件呢就是实现类罢了,然后数据类型和java还是有点出入我们还是得了解下(妈蛋,天气真热不适合生存了)。今天也...
从JVM的角度来看单例模式

从JVM的角度来看单例模式

最近在看jvm,发现随着自己对jvm底层的了解,现在对java代码可以说是有了全新的认识。今天就从jvm的角度来看一看以前自以为很了解的单例模式。了解单例模式的人都知道,单例模式有两种:“饿汉模式”和“懒汉模式”。引用一段网上对这两种模式的介绍:“饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全。饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在...
Java动态代理深入解析

Java动态代理深入解析

要想了解Java动态代理,首先要了解什么叫做代理,熟悉设计模式的朋友一定知道在Gof总结的23种设计模式中,有一种叫做代理(Proxy)的对象结构型模式,动态代理中的代理,指的就是这种设计模式。在我看来所谓的代理模式,和23种设计模式中的“装饰模式”是一个东西。23种设计模式中将它们作为两种模式,网上也有些文章讲这两种模式的异同,从细节来看,确实可以人为地区分这两种模式,但是抽象到一定高度后,我认为这两种模式是完全一样的。因此学会了...
Java虚拟机字节码执行引擎

Java虚拟机字节码执行引擎

定义Java虚拟机字节码执行引擎是jvm最核心的组成部分之一,它做的事情很简单:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。在不同的虚拟机实现里,执行引擎在执行java代码的时候可能会有解释执行和编译执行两种选择,也可能两者兼备。运行时栈帧结构java字节码执行引擎在调用和执行方法的时候使用了一种叫做栈帧的数据结构。在jvm的内存结构里,存在这一块称为虚拟机栈的内存区域,虚拟机栈中的元素就是栈帧。每个方法的调用至结束对应着一个栈帧...
Java虚拟机类加载机制

Java虚拟机类加载机制

我是家宝Java虚拟机类加载机制定义虚拟机把描述类的数据从Class文件加载到内存,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类加载的过程类的加载过程分为5个步骤:加载、验证、准备、解析、初始化其中的验证、准备、解析阶段又统称为连接,如下图所示。在这5个阶段中,加载、验证、准备、初始化这4个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定,为了支持java语言的运行时绑定,它在某些情况下可以在初...
快速理解SpringMVC依赖

快速理解SpringMVC依赖

长期以来都在写SSM框架的项目,却未能深入理解框架的搭建原理,而只是浅薄的理解前辈的架构,然后不断套用,项目做过几个,但框架的内涵却没有把握。小编打算今天从SpringMVC的依赖分析做起,一步步进行系统化学习。从springFramework的官方文档入手。如上为spring框架的的组件构成图。一、核心部分Core Container, 由spring-core, spring-beans, spring-context, spring-context...
<< 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 >>