- 博客(38)
- 收藏
- 关注
转载 $(document).ready(...) 和 window.onload 区别
$(document).ready(...) 和 window.onload 事件虽然具有类似的效果,但是,它们在触发操作的时间上存在着微妙的差异。window.onload 当一个文档完全下载到浏览器中时,会触发 window.onload 事件。这意味着页面上的全部元素对 javascript 而言都是可以访问的,这种情况对编写功能性的代码非常有利,因为无需考虑加载的次序。$(do
2016-07-26 17:00:06 313
转载 Node.js 调试 GC 以及内存暴涨的分析
https://blog.eood.cn/node-js_gc最近做的服务器端组件大部分都在使用 Node.js 。因为 Node.js 库管理模式比较先进,并且依托于 Github 的流行,Node.js 开源的库非常多,一般所需要的第三方库都可以找到。虽然这些库有很多明显的 Bug 但是比从零自己开发要快很多。对于服务器端开发,Node.js 还是个不错的选择,不像 Erlang 更接
2016-07-21 16:50:47 4474
转载 javascript 面试题收集
- this对象的理解 this总是指向函数的直接调用者 如果有new的话,指向new出来的对象 在事件中,this指向触发这个事件的对象- new操作符都干了什么? 创建一个空对象,并且this变量引用该对象,同时继承该对象的原型。 属性和方法加入到this引用的对象中 新创建的对象由this引用,并且最后隐式返回this。- call
2016-07-07 22:44:17 477
转载 JAVA虚拟机体系
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行
2016-07-07 10:26:05 332
转载 Python super继承详解
MRO(Method resolution order)是python用来解析方法调用顺序的,mro中记录了一个类的所有基类的类类型序列,super不是简单地调用基类的方法,而是按照MRO中的顺序来调用类的方法。使用super()时,应该在所有类中使用,否则就可能发生有的类构造函数没有调用的情况。 1 #!/usr/bin/python 2 # -*- coding: utf-8 -*
2016-07-01 21:37:02 430
转载 javascript中闭包的工作原理
一、什么是闭包?官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。相信很少有人能直接看懂这句话,因为他描述的太学术。其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。看下面这段代码:fu
2016-06-21 14:20:34 358
转载 Java 自动装箱与拆箱(Autoboxing and unboxing)
什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i =
2016-06-17 10:53:47 513
转载 Java线程与Xss
Xss与线程个数Xss越大,每个线程的大小就越大,占用的内存越多,能容纳的线程就越少;Xss越小,则递归的深度越小,容易出现栈溢出 java.lang.StackOverflowError。减少局部变量的声明,可以节省栈帧大小,增加调用深度。/** * -Xss128K deep of calling = 675 * -Xss256K deep of calling = 1
2016-06-15 14:00:04 780
转载 关于Object=null
赋null值在JIT编译之后会被消除掉,这个时候将变量设置为null是没有意义的,实际上JIT编译成本地代码后,gc可以正常回收掉,无需多余操作。另外,当方法结束后,脱离作用域之后,相应的局部变量引用会自动被注销掉。小结:当遇到局部代码段中已经申请许多占用空间的对象,这些对象在其作用域内的后续代码中还需要执行相对较长的时间,并且这块内存的确在后面就不会再使用了的时候,可以手工将
2016-06-15 13:59:02 1107
转载 Survivor空间溢出实例
本文演示survivor空间溢出的场景。实例代码class MemoryObject{ private byte[] bytes; public MemoryObject(int objectSize){ this.bytes = new byte[objectSize]; }}/** * eden 13184K ,s0/s1
2016-06-15 13:58:38 2328
转载 年老代过大有什么影响
年老代大部分是活着的对象,那么年老代过大,或者对象过早提升到年老代,导致年老代存活对象过多,那么如果做一次FullGC,寻找活着的对象,那么对于性能可想而知。如果系统频繁地发生FullGC的话,而这些或者的对象在这么短的时间内被注销的概率很低,那么FullGC的时间越长,就会有越多的请求得不到响应或者响应很慢,它们所持有的内存就无法释放掉,就会有越多的对象进入Old区域,这就会在一个点上产
2016-06-15 13:58:07 763
转载 Java对象分配简要流程
本文主要简述Java对象在内存中的分配过程总体流程分配流程逃逸分析逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用。方法逃逸:例如作为调用参数传递到其他方法中。线程逃逸:有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量。栈上分配(Stack Alloc
2016-06-15 13:57:14 834
转载 Java的类加载机制
本文主要讲述Java类的加载机制,主要包括类加载器、加载过程、初始化时机。一、类加载器1、ClassLoader抽象类类加载器的任务就是根据一个类的全限定名来读取此类的二进制字节流到JVM内部,然后转换为一个与目标类对应的java.lang.Class对象实例。如果需要支持类的动态加载或需要对编译后的字节码文件进行解密操作等,就需要与类加载器打交道了。B
2016-06-15 13:55:37 334
转载 Java对象结构及大小计算
Java对象内存布局在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头HotSpot虚拟机的对象头包括两部分信息:第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏
2016-06-15 13:54:42 4706 3
转载 Java类的初始化顺序
本文主要演示Java类的初始化顺序初始化顺序对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。实例代码public class InitialOrderTest { /* 静态变量 */ public static String staticField = "静态变量
2016-06-15 13:53:29 205
转载 jvm的card table数据结构
作用为了支持高频率的新生代的回收,虚拟机使用一种叫做卡表(Card Table)的数据结构,卡表作为一个比特位的集合,每一个比特位可以用来表示年老代的某一区域中的所有对象是否持有新生代对象的引用。这样新生代在GC时,可以不用花大量的时间扫描所有年老代对象,来确定每一个对象的引用关系,而可以先扫描卡表,只有卡表的标记位为1时,才需要扫描给定区域的年老代对象。而卡表位为0的所在
2016-06-15 13:52:49 3578
转载 GC通用日志解读
本文主要讲述gc日志的解读。除了CMS和G1收集器的GC稍微特殊外,其展示形式其实都大同小异。通用日志格式各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志:33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K->152K(11904K), 0.0031680 secs]100.667: [F
2016-06-15 13:52:06 477
转载 JVM信息查看
本文主要讲述如何查看java应用的jvm信息。1、查看所有参数 jinfo -flags pidJava -XX:+PrintCommandLineFlags 这个参数的作用是显示出VM初始化完毕后所有跟最初的默认值不同的参数及它们的值。 (JDK5以上支持)-XX:+PrintFlagsFinal显示所有可设置的参数及它们的值( JDK 6 update 21开始才可以用
2016-06-15 13:50:54 1063
转载 GC策略的评价指标
1、吞吐量应用系统的生命周期内,应用程序所花费的时间和系统总运行时间的比值。系统总运行时间=应用程序耗时+GC耗时。如果系统运行了100分钟,GC耗时1分钟,则系统吞吐量=99%2、垃圾回收器负载垃圾回收器负载=GC耗时/系统总运行时间3、停顿时间垃圾回收器运行时,应用程序的暂停时间4、垃圾回收频率垃圾回收器多长时间运行一
2016-06-15 13:50:02 658
转载 GC的三大高级算法
序GC的基本算法,大体上都逃不出标记清除法/标记压缩法、复制收集算法、引用计数法这三种方式以及它们的衍生品。现在,通过对这三种方式进行融合,出现了一些更加高级的方式。这里,我们介绍一下其中最有代表性的三种,即分代回收、增量回收和并行回收。有些情况下,也可以对这些方法中的几种进行组合使用。1、分代回收首先,我们来讲讲高级GC技术中最重要的一种,即分代回收(Generation
2016-06-15 13:49:09 931
转载 GC的三大基础算法
1. 垃圾(Garbage)就是需要回收的对象。作为编写程序的人,是可以做出“这个对象已经不再需要了”这样的判断,但计算机是做不到的。因此,如果程序(通过某个变量等等)可能会直接或间接地引用一个对象,那么这个对象就被视为“存活”;与之相反,已经引用不到的对象被视为“死亡”。将这些“死亡”对象找出来,然后作为垃圾进行回收,这就是GC的本质。2、根(Root)就是判
2016-06-15 13:48:18 6269 2
转载 垃圾回收基础
1、性能属性:(1)吞吐量:不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用程序达到的最高性能指标(2)延迟:缩短由于垃圾收集引起的停顿时间或完全消除垃圾收集所引起的停顿,避免应用程序运行时发生抖动(3)内存:垃圾收集器流畅运行所需要的内存数量任何一个属性性能的提供几乎都是以另外一个或两个属性性能的损失作为代价的。2、原则:(1)MinorGC回
2016-06-15 13:47:19 401
转载 JVM 系列:
JVM 系列:垃圾回收基础JVM的编译策略GC的三大基础算法GC的三大高级算法GC策略的评价指标JVM信息查看GC通用日志解读jvm的card table数据结构Java类初始化顺序Java对象结构及大小计算Java的类加载机制Java对象分配简要流程年老代过大有什么影响Surv
2016-06-15 13:46:31 329
转载 JVM 编译策略
解释器当虚拟机启动时,解释器可以首先发挥作用,而不必等待编译器全部编译完成再执行,这样可以省去许多不必要的编译时间。并且随着程序运行时间的推移,编译器逐渐发挥作用,根据热点探测功能,,将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率。hotspot中内嵌有2个JIT编译器,分别为Client Compiler,Server Compiler,但大多数情况下我们称之为C1
2016-06-14 16:50:26 1483
转载 快速排序
#include using namespace std; void Qsort(int a[], int low, int high){ if(low >= high) { return; } int first = low; int last = high;
2016-06-07 16:23:16 184
转载 堆排序
1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]22.堆排序的思
2016-06-07 16:19:32 254
转载 Python的内存管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。 对象的内存使用赋值语
2016-06-07 09:43:06 459
转载 Java核心知识点-JVM结构和工作方式
一、JVM体系结构1.1 JVM中主要包括(PC寄存器,栈,)(堆,方法区,)本地方法区一个Java线程中,包括PC寄存器(保存当前执行的指令位置),和栈帧(一个方法对应一个栈帧),本地变量(保存计算中的临时数据),当一个线程结束后,线程内所有数据就自动销毁,不需要垃圾回收。PC寄存器和栈将1压入栈中,将2压入栈中,将
2016-05-30 11:23:06 361
转载 Async 例子
地址:https://github.com/caolan/async Async的内容分为三部分:流程控制:简化十种常见流程的处理集合处理:如何使用异步操作处理集合中的数据工具类:几个常用的工具类本文介绍其中最简单最常用的流程控制部分。 由于nodejs是异步编程模型,有一些在同步编程中很容易做到的事情,现在却变得很麻烦。Async的流程控制就是为了简化这些操作。ser
2016-05-26 16:53:49 505
转载 TCP(Transmission Control Protocol) 传输控制协议
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urge
2016-05-24 17:56:41 1179
转载 事务的概念
(1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。(2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中
2016-05-16 13:34:46 272
转载 MongoDB的那些坑
MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒。但是薄荷在深入使用 MongoDB 过程中,遇到了不少问题,下面总结几个我们遇到的坑。特别申明:我们目前用的 MongoDB 版本是 2.4.10,曾经升级到 MongoDB 2.6.0 版本,问题依然存在,
2016-05-16 13:28:12 261
转载 Javascript继承
Javascript继承 一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面。这里仅仅是把自己的学习体会拿出来分享一下,希望对大家学习Javascript有所帮助。 Javascript本身是从Perl语言的语法演变而来的,本质上是脚本语言,随着版本的更新逐渐加入的对面向对象的模拟。我
2016-03-23 17:18:06 219
转载 闭包(closure)
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全
2016-02-26 15:36:00 218
转载 Js中Prototype、__proto__、Constructor、Object、Function关系介绍
Js中Prototype、__proto__、Constructor、Object、Function关系介绍一 Prototype、__proto__与Object、Function关系介绍 Function、Object:Js自带的函数对象。 prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(Fu
2016-02-22 17:29:03 312
转载 js中bind、call、apply函数的用法
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站。但真正大规模的使用 js 这还是第一次。我也是初生牛犊不怕虎,这次服务器居然抛弃 C++ 和 lua 的正统搭配,而尝试用 nodejs 来写游戏服务器,折腾的自己要死要活的我也是醉了。
2016-02-22 17:08:33 389
转载 C/C++程序到内存分配个人总结
C/C++程序到内存分配个人总结一、一个由C/C++编译到程序占用的内存分为以下几个部分:1、栈区(stack)——由编译器自动分配释放,在不需要的时候自动清除。用于存放函数的参数、局部变量等。操作方式类似数据结构中的栈(后进先出)。2、堆区(heap)——一般由程序员分配释放,若程序员分配后不释放,程序结束后可能由OS回收。不同于数据结构中的堆,分配方式有些类似链表。3、全局
2016-02-05 11:12:17 287
转载 求两个有序数组的中位数
设数组A的长度为m, 数组B的长度为n, 两个数组都都是递增有序的。求这两个数组的中位数首先我们看看中位数的特点,一个大小为n的数组,如果n是奇数,则中位数只有一个,数组中恰好有 (n-1)/2 个元素比中位数小。如果n是偶数,则中位数有两个(下中位数和上中位数),这里我们只求下中位数,对于下中位数,数组中恰好有(n-1)/2个元素比下中位数小。
2015-07-14 17:00:36 433
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人