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

首页 / 操作系统 / Linux

深入理解和探究Java类加载机制

深入理解和探究Java类加载机制

1.java.lang.ClassLoader类介绍java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 java.lang.Class类的一个实例。ClassLoader提供了一系列的方法,比较重要的方法如:2.JVM中类加载器的树状层次结构Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。引导类...
Java内部类总结

Java内部类总结

内部类本文主要参照网上的一些相关文章、以及thinking in java 第三版,对java里面的内部类进行了一个较为详细的总结内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类为什么需要内部类?典型的情况是,内部类继承自某个类或实现...
关于Java内部类的“内部”

关于Java内部类的“内部”

内部类有两种情况:(1) 在类中定义一个类(私有内部类,静态内部类)(2) 在方法中定义一个类(局部内部类,匿名内部类)1、私有内部类 —— 在方法之间定义的内部类,非静态我们首先看看类中内部类的两个特点:(1) 在外部类的作用范围内可以任意创建内部类对象,即使内部类是私有的(私有内部类)。即内部类对包围它的外部类可见。//代码1:内部类对外部类可见class Outer{ //创建私有内部类对象 public Inner in=n...
深入理解Java:内部类

深入理解Java:内部类

什么是内部类?内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类内部类的共性(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。(2)、内部类不能用普通的方式访问。(3...
深入理解Java垃圾回收机制

深入理解Java垃圾回收机制

一、垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。 ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下...
Linux Shell在while中用read从键盘输入

Linux Shell在while中用read从键盘输入

Linux系统是Ubuntu 14.04 64bit,之前曾想安装Stream来玩dota2,但最终没成功。由于Stream只有32bit,安装Stream时也安装了大量32bit的库。删除Stream后,这些库也一直没管,今天忽然心血来潮,想清理一下系统,把不必要的32bit库都干掉。dpkg -l | grep "i386"看一下,32bit库太多,一个个敲sudo apt-get purge xxx显然有点累,分析了一下输出,格式大概如下:rc li...
使用二级指针在多线程进行刷新操作

使用二级指针在多线程进行刷新操作

多线程程序中,我们经常会遇到这种情况,主线程启动时加载一些参数到内存中的某个对象或者数据结构中,将这个对象或数据结构作为参数传入各个子线程中,为了避免对象的复制与拷贝,往往传入的是指针,子线程启动,进行业务逻辑处理,需要根据key值获取hashtable中的value,value = m_pParam->get(key),代码如下所示//用hashtable保存程序运行所需的参数hashtable<key, value> hashPara...
Ruby探针的基本实现原理

Ruby探针的基本实现原理

语言本身Ruby语言支持语法级别的系统,框架,甚至语言本身的方法复写,一般叫做元编程(meta programming), 此基础之上还有一些术语为mixin,方法的动态定义,运行时类改写等等,这些技术和机制可以让语言本身就能实 现其他语言需要字节码才能实现的功能,例如探针需要hook HttpRequest中的request方法,就可以通过下面的方式实现:class HttpRequestdef request_newputs "before reque...
Node.js异常处理uncaughtException篇

Node.js异常处理uncaughtException篇

很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段。和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常:throw new Error("Catch me");为了捕获这个异常需要把代码包在Try Catch中:try{throw new Error("Catch me");}catch(e){// error captured}然而,由于 NodeJS 的异步特性,上述代...
提高Python运行效率的六个窍门

提高Python运行效率的六个窍门

Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此,它还轻松支持多任务处理,比如多进程。不喜欢Python的人经常会吐嘈Python运行太慢。但是,事实并非如此。尝试以下六个窍门,来为你的Python应用提速。窍门一:关键代码使用外部功能包Python简化了许多编程任务,但是对于一些时间敏感的任务,它的表现经常不尽人意。使用C/C++或机器语言的外部功能包处理时间敏感任务,可以有效提高应用的运行效率。这些功能包往往依附...
从底层理解Python的执行

从底层理解Python的执行

摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙。【编者按】下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似YIELDVALUE、YIELDFROM操作码的实现,推式构造列表(List Comprehensions)、生成器表达式(generator expressions)以及其他一些有趣Python的编译。以下为译...
Red语言:向编程复杂性反击

Red语言:向编程复杂性反击

你是否曾对软件编程栈的混乱感到过困惑?错综复杂和臃肿的解决方案无处不在,但无论是在当代软件的构建还是维护环节,很少有架构师和程序员能真正意识到由此带来的成本。Red的存在正是为了反击这种复杂性,这是它最主要的设计目的。没错,在现代软件世界中,“简单”的工具和简单的解决方案仍是可以企及的。这是个所有人都竭力掖藏的行业秘密(这可不是什么好事儿),但自1997年以来,解决方案其实已由Rebol编程语言给出。Red继承自Rebol谱系,并尝...
编程语言Red 0.5.4发布:新datatypes、异常处理和set操作

编程语言Red 0.5.4发布:新datatypes、异常处理和set操作

颇具内涵的Red语言LogoRed是一种可以运行于多种平台的全栈语言,它的语法主要继承于Rebol,同时在设计过程中借鉴了Scala和Lua的优点 。作为一门全栈语言,Red既可以用于高层级的编程,如DSL(Domain Specific Language),也可用于低层级的编程,如设备驱动。更多详情请看这篇文章:《Red语言:向编程复杂性反击》Red 0.5.4版本是一次重大的更新,带来了大量的新特性。接下来他将支持GUI,也可能会支持DSL。图为:Re...
将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹

将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹

如题,IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。Hibernate和Spring有时会将配置文件放置在src目录下,编译后要一块打包进classes文件夹,所以存在着需要将xml等资源文件放置在源代码目录下的需求。解决IDEA的这个问题有两种方式。...
SpringMVC通过Redis实现缓存主页

SpringMVC通过Redis实现缓存主页

首先,缓存主页的目的并不一定是提高性能,而是减少数据库访问压力,有效推迟数据库I/O瓶颈的到来。实现主页缓存的方法有很多,但是鉴于项目中使用了Redis对数据库读写做了缓存,因此把顺便也就把主页也缓存了吧。实现思路编写一个过滤器,在过滤器中拦截对主页的访问请求。此时向Redis服务器查询主页html的缓存,如果有则直接返回给客户端,如果没有,则在过滤器中截获JSP的渲染结果,放到Redis缓存中,以供下次使用。我们设定缓存过期时间为10分钟。实现实现需要注...
awk转义序列与算术操作符

awk转义序列与算术操作符

可以使用表达式来存储、操作和检索数据,这些操作与sed中的有很大的区别,但这是大多数程序设计语言所具有的共同特性。一个表达式通过计算返回一个值。表达式由数字和字符串常量、变量、操作符、函数和正则表达式组成。我们在之前的文章中中详细介绍了正则表达式。在这一部分,我们将学习由常量、变量和操作符组成的表达式。常量有两种类型:字符串型或数字型( "red"或1)。字符串在表达式中必须用引号括起来。在字符串中可以使用在表7-1中列出的转义顺序。转义序列序列描述a报警...
awk赋值操作符

awk赋值操作符

一旦变量被赋予了一个值,那么就可以用这个变量名来引用这个值。下面的表达式表示将变量x的值和1相加并将结果赋给变量y:y = x + 1即计算x加1的值,并将结果赋给变量y。语句print y打印y的值。如果下面的一系列语句将出现在脚本中:x = 1y = x + 1print y那么y的值为2。我们可以将这3个语句减少为两个:x = 1print x + 1注意, print语句后面的x的值却仍为1。我们没有改变变量x的值,我们只是将它和1相加并打印结果。...
<< 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 >>