- 博客(48)
- 收藏
- 关注
原创 记一次JAVA程序的性能调优
背景笔者最近一个阶段做一个大数据方面的项目。和其他大数据项目使用Spark,ES不同,这个项目使用存文件的方式。写文件时把用户所需要的数据全部准备好,典型的以磁盘空间换用户查询时间的方式。大概流程如下:数据进来-->原始数据落磁盘-->小时数据汇总成各种数据报表-->天数据汇总成各种数据报表-->月数据汇总成各种报表。原始数据量为170亿每天,最终生成各种报表后大概为200G每天,
2016-08-26 10:48:58 432
原创 资源监控工具Munin
Munin 是一款优秀的性能监控工具,采用client-server模式,支持同时监控多个节点,并且以web的方式展现出来。
2016-08-02 17:33:57 546
原创 VisualVM 远程监控jmx程序
VisualVM 是一款可以安装很多插件,一款集大成的Java性能监控工具。目前网上很多关于VisualVM远程监控的配置都比较简单,而且说的不清楚,往往读者不能从这些文章中配置自己的监控环境。笔者经过一番摸索后,爬过一些坑,详细记录下,以供后者使用。1. 找到jmx配置文件2. 复制jmxremote.password.template 文件并修改配置,找到
2016-07-29 16:20:28 421
原创 Beautiful SOAP 爬网页
Python Beautiful SOAP 是一款强大的html解析工具,堪称网络爬虫利器。下面代码为工具cvelist.csv文件中的CVE ID, 分别爬出该CVE信息的一段代码。供记录。# -*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')import timeimpor
2016-07-05 19:59:34 537
原创 Java的类加载机制
Java 类加载过程1. 加载2. 链接验证。 验证正确性,和我们自己写函数要验证入参一样,必须验证该类为正确以后才能继续。否则会造成程序崩溃准备。分配静态变量内存空间解析。 解析出类中符号引用。比如函数等应用。3.初始化Java类被初始化的条件1. 被调用new, put static, get static 或者invoke static指令
2016-05-04 10:29:59 353
原创 Java 泛型extends和super
这个常常让人很迷惑,其实只要记住就可以了。当需要读的时候,用extends,这样可以保证元素都有基类的属性。当需要写的时候,用super。
2016-05-03 20:26:43 261
原创 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 286
原创 Java GC机制
前计JAVA相对于C++的一大好处是不用程序员自己进行new/delete 来手动管理内存了。 虽然是好处,但这些年来,一直被人诟病,内存泄漏情况比较严重。打个比方,你有个自称很牛逼的管家说可以帮你搞定一切投资,刚开始你觉得很开心,自己不用做事情了。后来发现这管家总体来说还可以,但也存在吹牛逼的现象,有的时候他把你的资产漏掉一部分,这个时候估计你整个人都不爽了。笔者开发的项目中曾经过一个用
2016-04-05 20:14:14 311
原创 JAVA集合类
目前中文博客中充斥着很多很多介绍Java集合类的文章,但大多人云也云,一眼就让人理解的不多。这边尝试重新介绍下,希望可以抛砖引玉。
2016-03-15 11:53:24 260
原创 详解Java 类的初始化
论坛中看到一道很有意思的代码,关于类的初始化顺序,这边尝试分析下。Java类的初始化顺序1 继承体系的所有静态成员初始化(先父类,后子类)2 父类初始化完成(普通成员的初始化-->构造函数的调用)3 子类初始化(普通成员-->构造函数)这边需要理解的是,这些不是绝对的,如首先初始化的静态方法或者变量调用了类的构造函数,那么也会造成普通成员和构造函数先
2016-03-10 23:32:16 324
原创 Java 的clone
背景知识Java 中变量有基本类型和非基本类型之分。基本类型包括:Boolean1个bit位char2个byte(Unicode)int4个byteshort2个bytefloat4个bytelong4个bytedouble4个bytebyte1个
2016-03-09 00:02:35 256
原创 centos 7.0一键安装openstack
步骤一: 安装centos 7.0系统,配置好网络,保证能通外网步骤二:执行安装命令,等的时间会比较长,稍安勿躁.然后会看到成功提示。yum upgrade lvm2yum install deltarpmyum install -y http://rdo.fedorapeople.org/rdo-release.rpmyum install -y openstack-packsta
2015-12-30 14:04:40 403
原创 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 371
原创 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 275
原创 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 245
原创 [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 294
原创 [APUE]再读之高级IO
1. 非阻塞IO。阻塞IO有如下情况。 数据不存在, 则读操作永远阻塞。典型的为 管道操作。。 数据不能被立即接受,写这样的文件会被阻塞。。 打开文件会被阻塞。(典型为调制解调器。只写方式打开FIFO,要等待一个读进程)。 对已经加上强制性锁的文件进行读写。。 ioctl 操作。 某些进程间通信函数。 比如semophore的p,v 操作。管道阻塞的demo,子进
2015-09-28 20:32:32 296
原创 [APUE]再读之进程间通信
本章主要介绍几种进程间通信的方式。管道,FIFO(也叫命名管道), 消息队列,信号量,共享存储。其他的不在本章内容中的进程间通信方式有:流管道,命令流管道(下章介绍),套接字,流(后两种支持在不同主机间的进程通信)。
2015-09-08 20:10:31 279
原创 [APUE] 再读之进程控制
本章解释了fork,exec函数族,exit,wait函数族,解释器文件,system 函数,以及进程会计和进程时间等。
2015-09-05 20:10:13 307
原创 [APUE] 再读之进程环境
本章节讲诉整个进程生命周期的方方面面,包括main 函数,进程终止方式,命令行参数,内存布局,动态库静态库,环境变量以及资源操作。顺带还解释了longjmp,setjmp函数,以及几种变量类型。
2015-09-04 15:25:18 334
原创 来看看C语言的-1>1并且小有1的问题
先看如下代码:#include //small to big, signed to unsignedint 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 836
原创 论程序员的懒
系统是部署在AWS上的大型分布式系统。有的时候出问题找不到原因, 运维的兄弟特地部署了debug role.这个debug role会把debug log 全部打开,这样可以方便复现和查找问题。但往往有些时候,即使开了debug role, 也没有debug log。 还得现场改代码,重新部署,及其浪费时间。原因是什么, 懒。看下面的代码。(为了方便示例,隐去了所以复制逻辑)i
2015-08-28 09:15:27 290
原创 volatile变量的一个例子
volatile 用来告诉编译器不用做优化。非硬件的程序员碰到最多的例子是信号,和多线程环境中的情况。下面的例子是信号的情况下,有volatile和没有volatile的区别。变量flag用于,当接收到SIGUSR1信号时候提醒进程要做些事情。当用GCC O2 优化后,这些事情将用于得不到机会做。#include #include #include static volat
2015-08-27 22:28:39 327
原创 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 302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人