- 博客(48)
- 收藏
- 关注
原创 记一次JAVA程序的性能调优
背景 笔者最近一个阶段做一个大数据方面的项目。和其他大数据项目使用Spark,ES不同,这个项目使用存文件的方式。 写文件时把用户所需要的数据全部准备好,典型的以磁盘空间换用户查询时间的方式。 大概流程如下:数据进来-->原始数据落磁盘-->小时数据汇总成各种数据报表-->天数据汇总成各种数据报表-->月数据汇总成各种报表。 原始数据量为170亿每天,最终生成各种报表后大概为200G每天,
2016-08-26 10:48:58 420
原创 资源监控工具Munin
Munin 是一款优秀的性能监控工具,采用client-server模式,支持同时监控多个节点,并且以web的方式展现出来。
2016-08-02 17:33:57 516
原创 VisualVM 远程监控jmx程序
VisualVM 是一款可以安装很多插件,一款集大成的Java性能监控工具。 目前网上很多关于VisualVM远程监控的配置都比较简单,而且说的不清楚,往往读者不能从这些文章中配置自己的监控环境。 笔者经过一番摸索后,爬过一些坑,详细记录下,以供后者使用。 1. 找到jmx配置文件 2. 复制jmxremote.password.template 文件并修改配置,找到
2016-07-29 16:20:28 405
原创 Beautiful SOAP 爬网页
Python Beautiful SOAP 是一款强大的html解析工具,堪称网络爬虫利器。 下面代码为工具cvelist.csv文件中的CVE ID, 分别爬出该CVE信息的一段代码。供记录。 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import time impor
2016-07-05 19:59:34 523
原创 Java的类加载机制
Java 类加载过程 1. 加载 2. 链接 验证。 验证正确性,和我们自己写函数要验证入参一样,必须验证该类为正确以后才能继续。否则会造成程序崩溃准备。分配静态变量内存空间解析。 解析出类中符号引用。比如函数等应用。 3.初始化 Java类被初始化的条件 1. 被调用new, put static, get static 或者invoke static指令
2016-05-04 10:29:59 340
原创 Java 泛型extends和super
这个常常让人很迷惑,其实只要记住就可以了。 当需要读的时候,用extends,这样可以保证元素都有基类的属性。当需要写的时候,用super。
2016-05-03 20:26:43 247
原创 Java IO
Java IO 非常看起来非常难记,难于使用,尤其是看了类图以后,大家一下就不想再深入下去了。本文试图通过一种让人容易理解的方式,来阐明JAVA IO。 Java IO 示意图 Java IO 的简单记忆方法 需要记住这5句再加上一些demo便可以整个理解Java IO了。 1. Java IO 分为字节流和字符流。 字节流按照字节byte (0~256)进行操作,
2016-04-18 16:48:54 269
原创 Java GC机制
前计 JAVA相对于C++的一大好处是不用程序员自己进行new/delete 来手动管理内存了。 虽然是好处,但这些年来,一直被人诟病,内存泄漏情况比较严重。打个比方,你有个自称很牛逼的管家说可以帮你搞定一切投资,刚开始你觉得很开心,自己不用做事情了。后来发现这管家总体来说还可以,但也存在吹牛逼的现象,有的时候他把你的资产漏掉一部分,这个时候估计你整个人都不爽了。 笔者开发的项目中曾经过一个用
2016-04-05 20:14:14 299
原创 JAVA集合类
目前中文博客中充斥着很多很多介绍Java集合类的文章,但大多人云也云,一眼就让人理解的不多。这边尝试重新介绍下,希望可以抛砖引玉。
2016-03-15 11:53:24 243
原创 详解Java 类的初始化
论坛中看到一道很有意思的代码,关于类的初始化顺序,这边尝试分析下。 Java类的初始化顺序 1 继承体系的所有静态成员初始化(先父类,后子类) 2 父类初始化完成(普通成员的初始化-->构造函数的调用) 3 子类初始化(普通成员-->构造函数) 这边需要理解的是,这些不是绝对的,如首先初始化的静态方法或者变量调用了类的构造函数,那么也会造成普通成员和构造函数先
2016-03-10 23:32:16 315
原创 Java 的clone
背景知识 Java 中变量有基本类型和非基本类型之分。 基本类型包括: Boolean 1个bit位 char 2个byte(Unicode) int 4个byte short 2个byte float 4个byte long 4个byte double 4个byte byte 1个
2016-03-09 00:02:35 238
原创 centos 7.0一键安装openstack
步骤一: 安装centos 7.0系统,配置好网络,保证能通外网 步骤二:执行安装命令,等的时间会比较长,稍安勿躁.然后会看到成功提示。 yum upgrade lvm2 yum install deltarpm yum install -y http://rdo.fedorapeople.org/rdo-release.rpm yum install -y openstack-packsta
2015-12-30 14:04:40 392
原创 Java Atomic变量
Atomic 变量具有原子化 下面代码片段中,isSet 原子化操作,可以防止在多线程环境中线程被起动多次 import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; public class AutomicTest { static AtomicBo
2015-12-29 20:34:25 358
原创 Java NIO 随笔(二)
Java NIO数据通道传输: RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw"); FileChannel fromChannel = fromFile.getChannel(); RandomAccessFile toFile = new RandomAccessFile("toFile.tx
2015-12-23 16:52:46 263
原创 Java NIO 随笔
从C那边转过来学习java 的NIO,相对来说还是容易些。也更愿意把C底层的socket和Java NIO做些比较。 Java NIO的核心部件: Channels对应于socket 的文件句柄 Selectors对应于socket的select函数 Buffers对应于socket的内存,通常即读写socket的void 数组。 Channel 包含: Datagra
2015-12-23 15:02:27 228
原创 [APUE]再读之 标准IO库
本章介绍标准IO库 1. FILE对象 标准IO库一切函数基于FILE对象。FILE对象包含了管理该流的所有信息: 文件描述符,指向流缓存的指针,缓存的长度,缓存的字节数以及出错标识等 2. 标准输入,标准输出和标准出错。 对应非标准IO: STDIN_FILENO, STDOUT_FILENO,STDERR_FILENO 对于标准IO: stdin,stdout,std
2015-12-04 13:58:06 289
原创 [APUE]再读之高级IO
1. 非阻塞IO。 阻塞IO有如下情况 。 数据不存在, 则读操作永远阻塞。典型的为 管道操作。 。 数据不能被立即接受,写这样的文件会被阻塞。 。 打开文件会被阻塞。(典型为调制解调器。只写方式打开FIFO,要等待一个读进程) 。 对已经加上强制性锁的文件进行读写。 。 ioctl 操作 。 某些进程间通信函数。 比如semophore的p,v 操作。 管道阻塞的demo,子进
2015-09-28 20:32:32 288
原创 [APUE]再读之进程间通信
本章主要介绍几种进程间通信的方式。管道,FIFO(也叫命名管道), 消息队列,信号量,共享存储。 其他的不在本章内容中的进程间通信方式有:流管道,命令流管道(下章介绍),套接字,流(后两种支持在不同主机间的进程通信)。
2015-09-08 20:10:31 268
原创 [APUE] 再读之进程控制
本章解释了fork,exec函数族,exit,wait函数族,解释器文件,system 函数,以及进程会计和进程时间等。
2015-09-05 20:10:13 302
原创 [APUE] 再读之进程环境
本章节讲诉整个进程生命周期的方方面面,包括main 函数,进程终止方式,命令行参数,内存布局,动态库静态库,环境变量以及资源操作。顺带还解释了longjmp,setjmp函数,以及几种变量类型。
2015-09-04 15:25:18 326
原创 来看看C语言的-1>1并且小有1的问题
先看如下代码: #include //small to big, signed to unsigned int main() { unsigned int ui_one =1; signed int i_one =1; signed short s_minus_one =-1; if(s_minus_one>ui_one) printf
2015-09-03 17:58:31 805
原创 论程序员的懒
系统是部署在AWS上的大型分布式系统。有的时候出问题找不到原因, 运维的兄弟特地部署了debug role. 这个debug role会把debug log 全部打开,这样可以方便复现和查找问题。 但往往有些时候,即使开了debug role, 也没有debug log。 还得现场改代码,重新部署,及其浪费时间。 原因是什么, 懒。 看下面的代码。(为了方便示例,隐去了所以复制逻辑) i
2015-08-28 09:15:27 278
原创 volatile变量的一个例子
volatile 用来告诉编译器不用做优化。 非硬件的程序员碰到最多的例子是信号,和多线程环境中的情况。 下面的例子是信号的情况下,有volatile和没有volatile的区别。 变量flag用于,当接收到SIGUSR1信号时候提醒进程要做些事情。当用GCC O2 优化后,这些事情将用于得不到机会做。 #include #include #include static volat
2015-08-27 22:28:39 319
原创 C时间函数
C的几个时间函数,写一段小代码,把其全部囊括。 #include #include #include int main() { time_t now = time(NULL); printf("now utc is %d\n", now); struct tm* gtmie = gmtime(&now); struct tm* ctmie = l
2015-08-27 14:54:39 296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人