自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 一段程序的穷途一生

一段程序的穷途一生前言本篇博客讲述一段程序的生命周期,起始点从二进制代码开始,至于如何生成的二进制码(编译汇编过程),由于篇幅限制,就姑且略过了,如果有机会会在另外的博客中书写。一段程序的一生包括三个抽象概念:进程,虚拟存储和文件系统。本文的介绍过程也是针对这三个抽象对程序的生命周期进行总结理解的。文件系统-童年大家都知道,最初的程序都存储在非易失存储器中。在操作系统中,非

2022-09-21 10:24:10 181

转载 Vue.js——60分钟快速入门

Vue.js介绍本文转载自http://www.cnblogs.com/keepfool/p/5619070.html,推荐去原文查看Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。如果你之前已经习惯了用jQue

2017-05-24 10:24:24 737

转载 学习日志170302

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内

2017-03-02 15:53:09 325

原创 系统调用

系统调用系统调用的功能操作系统管理计算机资源,作为用户与计算机硬件之间的接口。操作系统为了保护操作系统不被用户程序破坏,一般不允许用户访问操作系统的程序和数据。

2016-07-26 12:58:34 475

转载 gprof性能分析工具使用介绍和Amdahl定律

gprof1.1 简介gprof实际上只是一个用于读取profile结果文件的工具。gprof采用混合方法来收集程序的统计信息,他使用检测方法,在编译过程中在函数入口处插入计数器用于收集每个函数的被调用情况和被调用次数;也使用采样方法,在运行时按一定间隔去检查程序计数器并在分析时找出程序计数器对应的函数来统计函数占用的时间。 Gprof具有以下优缺点: 1)优点:a) GNU工

2016-07-22 12:37:23 902

原创 优化程序性能

这里提到的性能提高技术是在你已经使用了高效率的数据结构和算法之后采用的优化方法,是比较底层的优化方法。你能获得的对程序最大的加速比就是当你第一次让它工作起来的时候。程序优化首先要考虑的是数据结构和高效率算法,当你的程序每天运行几百万次的时候,程序的底层高效率优化将会产生非常的影响。在计算时间复杂度的时候,形成的基本习惯就是先看循环体,对,循环体是最耗时的也是我们优化方法

2016-07-22 11:34:30 337

原创 漫谈处理器体系结构

本篇博文从指令集和硬件结构出发,讲述了处理器体系结构的顺序实现和流水线实现。针对流水线带来的问题分别进行了总结。而且专门对很多我在理解过程中想不通的问题专门进行了讲解说明理解的过程。

2016-07-20 23:47:04 2073 1

转载 用GDB调试程序

1.简介GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事。 4.动态的改变你程序的执行环境。2

2016-07-14 23:00:39 404

转载 objdump命令的使用

objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些sectionobjdump -D test与-d类似,但反汇编test中的所有s

2016-07-07 10:55:59 458

转载 Linux GCC常用命令

简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compi

2016-07-07 10:47:24 352 1

转载 printf输出格式总结

printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为:    pr

2016-06-29 11:28:29 524

转载 Ubuntu 下编译 openJDK

个人记录。uanme -aLinux caoxudong-youku 3.2.0-34-generic-pae #53-Ubuntu SMP Thu Nov 15 11:11:12 UTC 2012 i686 i686 i386 GNU/Linux主要参考文档:README-builds.html在源代码目录就有。 过程: 1. 安装mercurial2. 下载

2016-01-07 12:14:38 715

原创 深入理解计算机系统(第二版)-读书笔记(一)

前言本书是从程序员的角度来写的,讲述应用程序员如何能够利用系统知识来编写出更好的程序。我们的目标是以一种你会立刻发现有用的方式呈现这些基本概念。同时,你也要做好更深入探究的准备,研究像编译器、计算机体系结构、操作系统、嵌入式系统和网络互联这样的题目。事实上,我们相信,学习系统的唯一方法就是做(do)系统,即在真正的系统上解决具体的问题,或是编写和运行程序。第1章:计算机

2015-09-22 00:06:05 965

转载 Linux中egrep sed awk的比较

正则表达式基础在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,,它可以匹配"testing"和"123testing"等字符串,但是不能匹配"Testing"。要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。元字符描述

2015-08-22 10:45:05 952 1

原创 正则表达式-学习笔记

关于正则表达式的基础认识和理解

2015-08-22 10:41:35 400

转载 Ubuntu 查看文件及文件夹大小

一)用df命令查看分区情况$ df -h命令结果参考如下:Filesystem            Size  Used Avail Use% Mounted on/dev/sda4             367G  7.1G  342G   3% /none                  7.7G  232K  7.7G   1% /devnone      

2015-08-21 20:06:32 871

转载 JUnit 执行顺序

说明: Junit4.11版本及以后才支持,建议升级到最新版本.按照设计原则,JUnit是不指定测试方法调用执行顺序的。目前为止,这些方法只是简单地按照反射(reflection) API返回的顺序执行。但是,使用JVM默认提供的排序是很不明智的,因为Java平台没有指定任何有规律的顺序,而事实上JDK 7可能会返回一个随机的顺序。当然,精心编写的测试代码之间并不需要假定任

2015-08-21 18:02:00 426

转载 ubuntu下sed命令详解

在我写这篇blog之前还有点犹豫,因为像这么著名的命令,sed和awk应该在很多书籍里都有介绍,但是在网上找时,却是寥寥无几...     sed简介             sed是一种非交互式的流编辑器,可动态编辑文件。所谓非交互式是说,sed和传统的文本编辑器不同,并非和使用者直接互动,sed处理的对象是文件的数据流(称为stream/流)。sed的工作模式是,比对每一数据行,若符合

2015-08-16 15:46:08 5131

转载 利用gdb在汇编指令级调试C程序

关于GDB调试C程序的常用命令与手段就不多说了,这里主要介绍一下如何对C程序做到汇编指令级别的调试。首先是获取汇编代码,这可以通过disassemble命令或x命令或类似的命令:[root@localhost test]# gdb ./a.out -q(gdb) list1   #include2   #include3   4   int callee(int a, int b,

2015-06-14 17:23:22 799 1

转载 Bash Shell中命令行选项/参数处理

0.引言   写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式。   选项与参数:   如下一个命令行: ./test.sh -f config.conf -v --prefix=/home   我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数。   --prefix我们称之为

2015-05-01 19:58:17 436

转载 JVM -verbose参数详解

java -verbose[:class|gc|jni] 在输出设备上显示虚拟机运行信息。 1.java -verbose:class 在程序运行的时候有多少类被加载!你可以用verbose:class来监视,在命令行输入java -verbose:class XXX  (XXX为程序名)你会在控制台看到加载的类的情况。verbose和verbose:c

2014-12-17 16:48:59 806

转载 Thread Dump线程死锁检测工具(JStack)的使用详解

Thread Dump用来诊断Java应用的问题,可以用来发现死锁线程等等。通过它可以得到线程,线程运行状态、标识、调用的堆栈,堆栈包含完整的类名,所执行的方法,以及源代码所在的行数等等信息。接下来,需要考虑如何获得Thread Dump的问题。首先,可以通过jps查看java的进程信息,从而获得java进程的进程号。也可以用top动态观察CPU使用情况分析进程情况。然后通过jdk自带的工

2014-12-10 18:36:50 9614

原创 Xargs使用见解

管道命令(“|”)是将管道前面命令的标准输出(stdout)传递到管道后面的命令,右面的命令只接受前面命令的标准输出,不接受错误信息输出。后面的命令必须得是管道命令,才可以接受前面的管道输出命令。但是仅有一些命令是管道命令,大部分的命令不是管道命令。如果我们希望通过命令的方式实现编程,中间过程的记录将是必须的,Xargs就是这样的一个命令。让根据管道左边命令的标准输出,将其按照空格和换行对输出进行

2014-12-09 23:01:30 545

转载 Java多线程-工具篇-BlockingQueue

前言:     在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个

2014-12-07 18:00:50 470

转载 java UncaughtExceptionHandler 处理线程意外中止

本文转自:http://peirenlei.iteye.com/blog/305079 Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结。最麻烦的是,在线程中抛出的异常即使使用try...catch也无法截获,因此可能导致一些问题出现,比如异常的时候无法回收一些系统资源,或者没有关闭当前

2014-12-05 09:30:57 344

转载 try-catch-finally

前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理? finally 体遇到 return 怎么办?finally 体里有 System.exit() 方法怎么处理?当 catch 和 finally 体里同时遇上 return 怎么办?相信你在处理异常的时候不是每次都把它 throws 掉就完事了,很多时候异常是需要我们自己来

2014-11-27 11:40:01 360

转载 JUnit 4.0使用简介

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以用来和public、static等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和publ

2014-11-27 09:55:59 369

转载 Eclipse Code Template 设置自动注释

设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍:文件(Files)注释标签:/**    * @Title: ${file_name}  * @Package ${package_name}  * @Description

2014-11-22 22:53:47 331

转载 使用Memory Analyzer tool(MAT)分析内存泄漏(二)

前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineC

2014-11-08 22:57:36 401

转载 使用Memory Analyzer tool(MAT)分析内存泄漏(一)

为什么用MAT 之前的观点,我认为使用实时profiling/monitoring之类的工具,用一种非常实时的方式来分析哪里存在内存泄漏是很正确的。年初使用了某profiler工具测试消息中间件中存在的内存泄漏,发现在吞吐量很高的时候profiler工具自己也无法响应,这让人很头痛。后来了解到这样的工具本身就要消耗性能,且在某些条件下还发现不了泄漏。所以,分析离线数据就非常重要了,MAT正

2014-11-08 22:53:57 433

转载 [Hadoop]设置Task的jvm heap size

可以在这里设置:有人说应该改hadoop-env.sh里的HADOOP_HEAPSIZE. 这是错的,HADOOP_HEAPSIZE是给一些HADOOP后台进程用的,不是给task用的

2014-10-24 11:03:01 1295

转载 JAVA中String与StringBuffer的区别

String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。 在java中有3个类来负责字符的操作。1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。

2014-10-22 22:10:06 298

转载 Hadoop namenode无法启动

最近遇到了一个问题,执行start-all.sh的时候发现JPS一下namenode没有启动        每次开机都得重新格式化一下namenode才可以        其实问题就出在tmp文件,默认的tmp文件每次重新开机会被清空,与此同时namenode的格式化信息就会丢失        于是我们得重新配置一个tmp文件目录        首先在home目录下建立一个hado

2014-10-08 21:55:24 355

转载 Hadoop集群配置方法

在多台电脑上搭建Hadoop集群已经有一段时间了,SSH无密码登录服务配置成了一道无法逾越的鸿沟,在启动hadoop集群时,老实让输入datanode也就是slave的密码,但是输入密码但却总是提示permission denied,启动不了datanode。看了网上有关hadoop集群搭建之ssh服务总是千篇一律,不得其法,由于本人是菜鸟一枚,也无法自行快速解决,十分纠结。机缘巧合,我遇到一个对

2014-09-22 16:14:42 556

转载 用VMware 8安装Ubuntu 12.04详细过程(图解)

图解演示环境版本:本机系统: WIN7    虚拟机:VMware Workstation 8 (英文版)    安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像文件 详细过程图解:0. 初始画面,点击“Create a New Virtual Machine”(左上Ubuntu为本人已有开发环境机,请忽略) 1. 点击“C

2014-09-21 19:29:53 393

转载 0-1背包问题(动态规划)

有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这个问题的特点是:每种物品只有一件,可以选择放或者不放。算法基本思想:利用动态规划思想 ,子问题为:f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。其状态转移方程是:f[i][v]=max{

2014-09-09 16:28:53 537

转载 最长连续公共子序列

动态规划有一个经典问题是最长公共子序列,但是这里的子序列不要求连续,如果要求序列是连续的,我们叫公共子串,那应该如何得到这个串呢?最简单的方法就是依次比较,以某个串为母串,然后生成另一个串的所有长度的子串,依次去母串中比较查找,这里可以采用先从最长的子串开始,减少比较次数,但是复杂度依然很高!然后重新看一下这个问题,我们建立一个比较矩阵来比较两个字符串str

2014-09-08 10:36:16 671

转载 动态规划算法

一、基本概念    动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略    基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能

2014-09-07 22:20:08 301

转载 java线程池常用方法收集

execute(Runnable command):履行Ruannable类型的任务submit(task):可用来提交Callable或Runnable任务,并返回代表此任务的Future对象invokeAll(collection of tasks):执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表.shutdown():在完成已提交的任务

2014-09-01 10:12:58 346

转载 从决策树学习谈到贝叶斯分类算法、EM、HMM

(Machine Learning & Data Mining交流群:8986884)引言    最近在面试中,除了基础 &  算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全不代表你将来的面试中会遇到此类问题,只是因为我的简历上写了句:熟悉常见的聚类 & 分类算法而已),而我向来恨对一个东西

2014-08-17 16:36:24 832

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除