Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Java集合的10个最常见问题

Java集合的10个最常见问题

以下是一些在Stackoverflow上经常被问起的与Java集合相关的问题。在你查阅这些问题之前,最好先去看看【Simple Java】Java集合框架的接口和类层次关系结构图。什么时候优先选择LinkedList,而不是ArrayListArrayList本质上是一个数组,它的元素可以直接通过索引访问。但是,当数组满的时候,需要申请新的更大的数组空间,并将所有元素复制到新数组中,这将花费O(n)的时间。另外,插入和删除元素需要移动数组中的其它元素,这也...
ArrayList vs LinkedList vs Vector

ArrayList vs LinkedList vs Vector

List概览List,正如它的名字,表明其是有顺序的。当讨论List的时候,最好拿它跟Set作比较,Set中的元素是无序且唯一;下面是一张类层次结构图,从这张图中,我们可以大致了解java集合类的整体架构;ArrayList vs LinkedList vs Vector从上面的类层次结构图中,我们可以发现他们都实现了List接口,它们使用起来非常相似。区别主要在于它们各自的实现,不同的实现导致了不同的性能和不同的操作。ArrayList是为可变数组实现的...
Java中的内部接口

Java中的内部接口

什么是内部接口内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面,如下代码:public interface Map {interface Entry{int getKey();}void clear();}为什么要使用内部接口如下是一些有一些强有力的理由:一种对那些在同一个地方使用的接口进行逻辑上分组;封装思想的体现;嵌套接口可以增强代码的易读性和可维护性;在Java标准库中使用内部接口的一个例子是jav...
Java中怎样创建线程安全的方法

Java中怎样创建线程安全的方法

面试问题:下面的方法是否线程安全?怎样让它成为线程安全的方法?class MyCounter {private static int counter = 0;public static int getCount() {return counter++;}}本篇文章将解释一个常见的面试题,该问题被谷歌和很多其它公司问起过。它涉及的相对比较初级,而不是关于怎样去设计复杂的并发程序。首先,这个问题的答案是No,因为counter++操作不是一个原子操作,而是由多...
Java设计模式--单例模式

Java设计模式--单例模式

单例设计模式Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。核心知识点如下:(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。(3) 定义一个静态方法返回该类的实例。/** * 方法一* 单例模式的实现:饿汉式,线程安全 但效率比较低 */ publi...
Linux内核实现中断和中断处理

Linux内核实现中断和中断处理

Linux实现中断处理内核是怎么知道应用程序要调用系统调用的呢?或者说应用程序怎么通知系统内核自己需要执行一个系统调用,这是通过软中断实现的,通过引发一个异常来促使系统切换到内核态去执行异常处理程序PS:什么时候会从用户态切换到内核态呢?1.中断;2.陷阱;3.系统调用中断分为两种,硬中断和软中断;在许多处理器体系结构处理异常和处理中断的方式类似,为了助于理解,可以把异常想象成软中断,我们通常说的中断是硬中断,硬中断是由硬件引起而不是软件引起的每一种中断都...
进程调度算法Linux进程调度算法

进程调度算法Linux进程调度算法

这次介绍一下操作系统的进程调度算法操作系统的调度分为三种:1.远程调度(创建新进程);2.中程调度(交换功能的一部分);3.短程调度(下次执行哪个进程)这次讲述的就是短程调度,可以简单的看作咱们平时所说的进程调度啦当发生下面几种情况的时候会调用短程调度器,然后就看下次执行那个进程啦时钟中断I/O中断操作系统调用信号(如信号量)进程调度算法:先来先服务(FCFS)短作业优先(SPN)最短剩余时间(SRT)时间片轮转最高响应比优先公平共享调度先来先服务就和名字...
atexit函数和两种特殊文件权限位

atexit函数和两种特殊文件权限位

atexit函数atexit函数的原型如下 void atexit(void (*func)(void)) 它是一个参数为返回值和参数均为空的函数指针的函数,含义是当前进程结束之前执行参数函数指针所指向的函数,使用的时候要在main中注册,一次可以注册很多函数,函数的执行顺序与注册的先后有关,关系恰好相反,第一个注册的函数反而是最后一个执行。下面是执行实例。 1 #include<stdio.h> 2 #include<stdlib.h&...
函数栈帧(用汇编来剖析)

函数栈帧(用汇编来剖析)

这次讲解一下C++函数调用,学了这么久C语言,肯定听说过栈(数据结构啊,地址空间的栈啊之类的),函数调用就和栈密切相关。因为地址空间内的栈是从高地址向低地址生长的,也就是说压栈顺序靠后的反而地址比较低,栈底的地址高于栈顶的地址,下面贴上一段测试代码#include<stdio.h> #include<stdlib.h>void bug(){ printf("haha I ...
Python中在脚本中引用其他文件函数的方法

Python中在脚本中引用其他文件函数的方法

在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址。所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法,1. 将文件所在位置添加到sys.path中import syssys.path.insert(0, "/path/to/application/app/folder") # or sys.path.append("/path...
Commons CLI使用详解

Commons CLI使用详解

Preface:Apache Commons CLI library为用户提供了一个解释命令行的API.它在解释命令行时主要有三个状态,即:定义、解释和询问交互。下面的部分中将会详细的讨论这三个部分的内容,以及怎么样利用CLI实现它们。接下来的部分就是一些实例,通过实例演示了如何使用Commons CLI来解释处理命令。Example:下面就是我们要实现的效果(在这里参数与命令没有任何特殊意义,只是为了表示如何完成相应的功能):usage:gmkdir[-...
使用 Apache Commons CLI 开发命令行工具

使用 Apache Commons CLI 开发命令行工具

虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱。各种工具和系统都提供了详尽的使用手册,有些还提供示例说明如何二次开发。然而关于如何开发一个易用、强壮的命令行工具的文章却很少。本文将结合 Apache Commons CLI,通过一个完整的例子展示如何准备、开发、测试一个命令行工具。希望本文对有相关需求的读者能有所帮助。基于 Apache Commons CLI 的命令行设计通常...
Apache Commons CLI命令行启动

Apache Commons CLI命令行启动

今天又看了下Hangout的源码,一般来说一个开源项目有好几种启动方式——比如可以从命令行启动,也可以从web端启动。今天就看看如何设计命令行启动...Apache Commons CLIApache Commons CLI是开源的命令行解析工具,它可以帮助开发者快速构建启动命令,并且帮助你组织命令的参数、以及输出列表等。CLI分为三个过程:定义阶段:在Java代码中定义Optin参数,定义参数、是否需要输入值、简单的描述等解析阶段...
Python的修饰器@

Python的修饰器@

修饰器是一个很著名的时机模式,经常用于有切面需求的场景,如插入日志、性能测试、事务处理等。修饰器能够很好地解决这些问题,有了修饰器我们能抽离出大量函数中与函数功能本身无关的雷同代码并继续使用。也就是说,修饰器的作用就是为已经存在的函数对象添加额外的功能。1.修饰器入门:1.1.需求的由来:修饰器的定义很抽象,先来看一个例子:1234deffoo(): print"infoo()" foo()这个函数的功能是打印出一窜字符窜。如果想要测试执行这个函数用...
Python的垃圾回收机制

Python的垃圾回收机制

在Python中,一切对象都是引用计数的。当分配一个新的名字给一个对象,或将其放到一个列表、远足或字典中时,这个对象的引用计数就会增加1。如: a = 2 #在内存中创建一个对象‘2’,并把名字a指向该对象,该对象的引用计数为1 b = a #引用计数加1,为2 del a #删除a的引用,此时引用计数为1当‘2’的引用计数为0的时候,他会在适当的时机被Python的垃圾回收机制回收。 但在特定的情况(...
<< 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 >>