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

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

首页 / 操作系统 / Linux

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...
Python模块之re正则表达式

Python模块之re正则表达式

一、简单介绍正则表达式是一种小型的、高度专业化的编程语言,并不是python中特有的,是许多编程语言中基础而又重要的一部分。在python中,主要通过re模块来实现。正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行。那么正则表达式通常有哪些使用场景呢?比如为想要匹配的相应字符串集指定规则;该字符串集可以是包含e-mail地址、Internet地址、电话号码,或是根据需求自定义的一些字符串集;当然也可以去判断一个字符串集是否符合我们定义的匹...
算法:深度优先算法和广度优先算法

算法:深度优先算法和广度优先算法

算法:深度优先算法和广度优先算法(基于邻接矩阵)1.写在前面 图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法。 另一种是基于链表的的邻接表。 在邻接矩阵中,可以如下表示顶点和边连接关系: 说明: 将顶点对应为下标,根据横纵坐标将矩阵中的某一位置值设为1,表示两个顶点向联接。 图示表示的是无向图的邻接矩阵,从中我们可以发现它们的分布关于斜对角线对称。 我们在下面将要讨论的是下图的两种遍历方法(基于矩阵的): ...
数据结构:从插入排序到希尔排序

数据结构:从插入排序到希尔排序

插入排序(C语言版)说明: 算法思路: 每次从无序表中取出第一个元素,将其插入到有序表中的适当位置,使有序表的长度不断加长,完成排序过程。 n个待排序的元素由一个有序表和一个无序表组成,开始时有序表中只包含一个元素。 流程演示: 蓝色表示由有序表,黑色表示无序表! 分析 元素基本有序时,直接插入排序的时间复杂度接近于O(n) 元素数目n较少时,直接插入排序的效率较高数据结构定义: 首先我们要构建一个顺序表来存放待排...
多线程条件通行工具——CountDownLatch

多线程条件通行工具——CountDownLatch

操作:CountDownLatch(int)构造方法,指定初始计数。await()等待计数减至0。await(long, TimeUnit)在指定时间内,等待计数减至0。countDown()计数减1。getCount()获取剩余计数。例子1:主线程创建了若干子线程,主线程需要等待这若干子线程结束后才结束。例子2:线程有若干任务,分多个线程来完成,需要等待这若干任务被完成后,才继续运行处理。源码:/** * @since 1.5 * @author Dou...
应用Java多线程实现服务器端与多客户端之间的通信

应用Java多线程实现服务器端与多客户端之间的通信

应用Java多线程来实现服务器与多线程之间的通信的基本步骤1、服务器端创建ServerSocket,循环调用accept()等待客户端链接2、客户端创建一个Socket并请求和服务器端链接3、服务器端接受客户端请求,创建socekt与该客户端建立专线链接4、建立链接的socket在一个单独的线程上对话5、服务器继续等待新的链接服务器端Server.javapackage test.concurrent.socket;import java.io.*;imp...
<< 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 >>