自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 GO语言学习笔记

1. nil不是null,nil可以调用 *T的方法集2. struct中的匿名字段的方法会展开到struct中,struct的方法会覆盖匿名字段的同名方法3. struct的地址输出的是值?...

2017-07-25 00:27:52 189

原创 springboot程序错误排查

2.0.0版本的springboot程序,在eclipse中报错:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter) pom.xml line 1 Maven Configuration Problempom.xml配置:<build> <plugins> <...

2016-12-12 10:37:10 434

原创 ubuntu镜像上跑shell脚本报错

在ubuntu镜像中运行shell脚本,如果开头这一行#!/bin/bash丢了,会报错panic: standard_init_linux.go:175: exec user process caused "exec format error" [recovered] panic: standard_init_linux.go:175: exec user process cause...

2016-11-13 22:39:34 501

原创 shell脚本学习

1、exec命令An exec <filename command redirects stdin to a fileAn exec >filename command redirects stdout to a designated fileexec 2>filename 将会把执行的命令重定向到文件中  2、shift命令        位置参数可以用...

2016-09-20 15:46:27 165

原创 ubuntu下部署kubernetes

          在国内的网络环境下,按照官方文档,在Ubuntu上安装kubernetes,打通ssh、设置环境变量、下载源码或者二进制包,部署,是根本就安装不成功的,最基本的连git上的源码都下不下来,就算下来了,后续安装依赖的flannel、etcd的时候还是下载不下来;于是干脆自己动手下载依赖包,修改kubernetes安装脚本。        1、前提条件看官方文档,Ubunt...

2016-09-05 18:45:44 311

原创 debug Java进程的debug参数

前几天给java应用设置debug参数,发现有两个参数:-agentlib:jdwp 和 -Xrunjdwp,根据官方文档记录,区别如下:  Sun's VM implementations require command line options to load the JDWP agent for debugging. From 5.0 onwards the -agentli...

2016-08-25 21:13:52 1023

原创 Docker网络配置

        将Docker容器配置到宿主机网络环境中的几种方式:1、通过虚拟网桥的方式        基本思路是,创建一个虚拟网桥br0,把宿主机上一网卡如eth0的ip删掉,设置到br0上,然后把eth0加入到br0上;然后先删除到eth0上的默认路由,再添加到br0上的默认路由;接着创建一个虚拟网络peer,如veth-a、veth-b,将peer的veth-a放入容器,vet...

2016-08-14 21:57:32 299

原创 在Ubuntu中创建samba服务器,在mac中访问

1、安装和配置//安装sambasudo apt-get install samba samba-common//创建共享目录sudo mkdir /home/sharesudo chmod 777 /home/share//修改samba配置sudo gedit /etc/samba/smb.conf 2、修改samba配置内容,在文件最后添加[myshar...

2016-08-14 00:16:21 408

原创 git 常用命令

1、从远程拉代码库到本地https://github.com/yueyemaitian/little-rpc.git 2、添加代码,提交到本地仓库(在git工作目录下)git add .git commit . -m 'comment' 3、提交代码到远程仓库git push 4、创建taggit tag -a v0.1-simple_nio -m 'simpl...

2016-04-27 19:55:59 100

原创 <<创客——新工业革命>>读书笔记

        原子 代表 传统制造业,比特 代表 互联网。        数年前,对于普通大众来说,制造业似乎离得很远,如果你想自己设计一个东西,然后小批量的制造,似乎是一件比较困难的事情,从哪里找到合适的制造商,制造商的生产流程是否可以生产你的产品,制造商是否愿意为小批量的产品调整制造排期......        原子经济和比特经济的相互发展,最终交织到一起的时候,衍生出了很多新...

2016-04-22 23:32:22 229

原创 Fastjson反序列化泛型类型时候的一个问题

import static org.junit.Assert.assertFalse;import static org.junit.Assert.assertTrue;import java.util.ArrayList;import java.util.List;import org.junit.Test;import com.alibaba.fastjso...

2015-01-21 15:34:59 855

原创 netty3.6.2中写数据的过程,以及写数据写不出去后怎么处理

        netty写数据的时候,会先放到一个缓存队列AbstractNioChannel.writeBufferQueue中,这个队列是WriteRequestQueuepublic void eventSunk( ChannelPipeline pipeline, ChannelEvent e) throws Exception { if (e ins...

2014-08-11 17:37:21 873

原创 在用Netty 3.6.2发数据,发现内核缓冲区满的时候.....

       用nettys收发网络数据的时候,一般不会注册SelectionKey.OP_WRITE事件。但是,如果在netty写数据的时候AbstractNioWorker.write0,发现写不进去了buf.finished()==false,可能是操作系统内核缓冲区满了,这个时候会把SelectionKey关联的Channel注册上OP_WRITE事件。 protected ...

2014-08-11 16:06:20 1200

原创 JDK中反序列化对象的过程(ObjectInputStream#readObject)

         此处,对象描述信息即ObjectStreamClass的实例1、java ObjectInputStream#readObject的时候,先从输入流读入对象,读取对象信息,如果在读取过程中出现异常,则通过markDependency处理;处理完后还会调用注册进来的callback 2、读取对象的过程,先读取对象,然后再java.io.ObjectInputStre...

2014-06-10 20:10:24 1470

原创 jvm运行期打印汇编信息

        如果只在jvm参数中加入-XX:+PrintAssembly参数,运行报错:Improperly specified VM option 'PrintAssembly'Error: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will...

2014-04-09 23:00:27 361

Mac OSX 10.9 上build openjdk8和openjdk7

        先分享下自己build出来的fastdebug版本的openjdk: openjdk7(24.80-b04), openjdk8(25.0-b70)=====================================================================================        由于想看下cms gc的debug日志...

2014-03-29 18:29:50 242

查看java对象在内存中的布局

        接着上篇《一个对象占用多少字节?》中遇到的问题:        UseCompressOops开启和关闭,对对象头大小是有影响的,开启压缩,对象头是4+8=12byte;关闭压缩,对象头是8+8=16bytes。这个如何观察验证呢?       基于上述事实,通过new A()和new B()占用字节推断,基本类型int在开启、关闭压缩情况下都是占用4个bytes的,这个没...

2014-03-20 22:39:39 1061

原创 一个对象占用多少字节?

        老早之前写过一篇博客,是关于一个Integer对象到底占用多少字节的,现在看来,那篇文章竟然计算错了。这次再去计算,是因为之前写的一篇关于字长的文章里,看到了hotspot jvm里,对象占用空间是8字节对齐的,再加上之前关于字节那文章里带着一点-XX:+UseCompressedOops压缩指针参数的疑问,重新探究了下一个对象到底占用多少字节,以及如何计算它占用空间的方法。主...

2014-03-18 21:56:21 601

原创 maven使用技巧

1、pom打jar包的时候设置MANIFEST.MF的key/value,可以通过在pom.xml文件中添加plugin的方式来实现,这些plugin都在&lt;project&gt;&lt;build&gt;&lt;plugins&gt;下边: &lt;plugin&gt; &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&g...

2014-03-18 15:34:19 123

原创 cpu字长、操作系统字长和jvm中各数据类型占用的字节数关系

        cpu字长是指cpu同时参与运算的二进制位数,现在主流的pc的机器字长都是64位的。机器字长直接决定着机器可寻址的虚拟空间地址大小。 The word size of a computer generally indicates the largest integer it can process in a single instruction, and the siz...

2014-03-16 02:05:27 530

原创 比反射更高效的修改字段值的方法

        开发过程中,不少情况下都会遇到需要通过反射修改对象字段值的情况,但是很多情况下,直接反射效率比较低,而你如果读过jdk代码,可能多少会发现jdk里边经常闪现这UNSAFE的的身影,比如ConcurrentLinkedQueue里边到处都是。        为啥jdk里边到处都用这个东西呢?YY下,一方面是因为效率高,另一方面是因为它提供了很强大底层操作的功能,比如不用Ato...

2014-03-13 20:49:05 351

原创 cache line对内存访问的影响

        cache line对内存访问的影响很早就看到了,但是没有写过例子跑过,突然兴起就写了下,对这里第一个例子稍微做了改造。要注意jvm参数设置,新生代+老生代分配了2.4xG内存,新生代分了2G,eden区分了1.6g,从实际内存占用看,数组eden区使用了近1.1G的内存,剩下区域基本都是空的。另,demo是在mac上跑的。/** * -Xms2500m -Xmx250...

2014-03-12 20:48:37 386

原创 Java Web应用Web层异步化应该考虑的问题

        之前做了一个项目,要用到web层的异步化技术,在实际实现中,遇到了很多问题,作为教训简单罗列下。        1、app 容器/J2EE框架对异步的支持        在tomcat5、jboss4的时候,每一个请求都用了一个app容器线程来执行,app线程必须一直处理完或者等待别的线程处理完,才能拿着请求的链接把结果写回到客户端。如果你想这个时候释放掉app容器线程...

2014-01-25 17:45:04 203

原创 jvisualvm jmx方式远程监控tomcat

1、如果用jmx方式监控,不需运行服务器上的jstatd进程2、直接修改CATALIN_HOME/bin/catalina.sh:JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=[远程机器ip]-Dcom.sun.management.jmxremote.port=[自己设置个端口号] -Dcom.sun.management...

2013-10-10 20:38:25 239

原创 一些数据切分、缓存、rpc框架、nosql方案资料

1、数据切分        1.1、mysql中间件研究(Atlas,cobar,TDDL)         1.2、利用 MySQL Proxy 实现数据切分及整合         1.3、基于MySQL分库分表方案简介         1.4、tddl和diamond  2、缓存        2.1、java客户端三种方式操作         2.2、myib...

2013-10-07 23:48:21 122

原创 一次线上问题的排查过程——时钟精度变化导致的cpu占用率高的问题

        最近升级了一次tair(缓存系统)的client jar包——一个完全被重写了的版本,发布到线上的时候,发现某个新上线机房机器cpu占用率比较高,一般50%—100%之间(5核的虚拟机),而另外两个机房机器的cpu使用率却比较低。        1、用top查看是java进程的占用的绝大多数cpu        2、用top H或者top -p PID H查看发现是只有...

2013-09-16 21:14:41 1063

原创 从汇编和寄存器层面,简单描述下方法调用的时候都发生了什么

        先看一个简单的汇编程序:assume cs:code,ss:stackstack segment dw 10 dup('a')stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,20 mov ax,1 mov cx,4 call s mov ax,4c00h...

2013-09-08 13:18:07 93

原创 /proc/sysrq-trigger的一点介绍

        前两天,缓存系统的一哥们儿在帮忙排查他们超时线程在某个机房占用cpu使用率比较高的情况的时候,用到了sudo sh -c 'echo w &gt; /proc/sysrq-trigger' ; dmesg不解,查了下:          dmesg 用来显示系统启动时候的系统信息的,这对系统管理员或者排查问题的时候很重要,参考鸟哥的解释和更详细的资料      ...

2013-09-07 23:31:59 865

原创 nginx学习

一、官方文档:http://nginx.org/cn/docs/参考:http://my.oschina.net/duxuefeng/blog/34880二、2014-01-142.1、查看nginx已安装的模块:nginx -V  结果(关于配置项的含义):nginx version: nginx/1.2.7built by clang 4.1 (tags...

2013-08-30 19:53:30 74

原创 汇编语言中访问内存单元的方式(windows)

        如果想将内存空间2000:0,2000:1,2000:2中的数据分别放入al,bl,cl中,可以通过如下方式:mov ax,2000hmov ds,axmov al,[0]mov bl,[1]mov cl,[2]         如果通过debug工具下a命令在指定地址写入汇编指令,输入后用u查看:-a0AF3:0100 mov ax,2000...

2013-08-04 23:37:32 1557

原创 Window上搭建汇编语言开发环境

1、下载masm 6.11安装程序,这是microsoft开发汇编开发环境,包括可视化开发工具,汇编工具masm,连接工具link.exe,调试工具debug.exe。当然这里也可以安装更高级版本的masm,但是要求比较多,还要装visual c++什么乱起八糟的工具,简便起见,就用6.x版本玩玩也够了; 2、设置环境变量,在path中添加%MASM_HOME%\BIN;%MASM_H...

2013-08-04 22:32:46 205

原创 Kilim源码分析之五 ---- 织入之变量活跃性分析

  /** * In live var analysis a BB asks its successor (in essence) about which * vars are live, mixes it with its own uses and defs and passes on a * new list of live vars to i...

2013-03-20 21:00:28 198

原创 Kilim源码分析之四 ---- 织入之内联subroutine

        小于1.5编译级别时,如果不显示inline try/catch/finally块,try/catch和any会产生的jsr指令跳转到finally。此处分析kilim如何对这种情况下的jsr指令进行内联:finally块中有pausable则会被拷贝一份;finally块中有pausable则会把jsr/ret指令都替换为goto指令,但是并没有像1.5及以后编译级别那样,拷...

2013-03-20 20:00:50 181

原创 Kilim源码分析之三 ---- 织入之构造/合并BasicBlock

        上一篇分析了可织入判断的代码,本篇继续分析织入部分的构造/合并BasicBlock。        首先看下分析方法kilim.analysis.MethodFlow.analyze()包含的功能: //织入逻辑 public void analyze() throws KilimException { buildBasicBlock...

2013-03-20 19:50:17 304

原创 Kilim源码分析之二 ---- 织入入口及可织入判断

1、织入入口,配置    1.1、织入入口         kilim.tools.Weaver是织入的主类,通过程序参数设置要织入的代码路径,可以是class文件、jar包、其他(是什么)、目录(目录中可以是jar包、class文件)。        如果传入的是class文件,会直接织入;调用kilim.tools.Weaver.weaveFile(String, InputS...

2013-03-20 19:33:52 225

原创 在编译级别1.4时jvm编译try/catch/finally块的方式

        先上一段很简单,且不考虑健壮性的源码:import java.io.FileInputStream;import java.io.IOException;public class TryCatchFinallyTest { /** * @param args * @throws IOException */ public static v...

2013-03-12 21:22:25 134

原创 ASM4.0源码走读之三 readCode方法分析方法代码

        继第一篇,我们来看看readCode的代码: private void readCode(final MethodVisitor mv, final Context context, int u) { // reads the header byte[] b = this.b; char[] c = context...

2013-03-09 00:19:29 514

原创 ASM4.0源码走读之二 指令的类型

        在深入分析ClassReader.readCode()方法之前,我们需要大概了解下ASM把jvm的指令分的类型,这在readCode会用到。先看ClassReader的代码: static { int i; byte[] b = new byte[220]; String s = "AAAAAAAAAAAAAAAA...

2013-03-08 23:51:13 247

原创 ASM4.0源码走读之一

       了解java class文件格式是读懂asm代码的前提,所以在此之前请找Java虚拟机规范里边class文件格式章节细读一下。        不过在详解读入过程之前,先简单看下jvm规范中对class文件格式的定义,其中一个u代表一个byte,u1、u2、u4分别代表1、2、4个字节:ClassFile { u4 magic; u2 minor_versi...

2013-03-08 23:18:27 350

原创 java协程框架----kilim实现机制解析

 java语言处理多任务的模式是基于多线程,java语言级别原生并不支持协程,我们想要java语言支持协程,就需要在线程和协程之间架起一道桥梁。在某个事件点(我们成为挂起点)上,我们在应用级别备份当前任务在线程上的调用栈信息(包括局部变量和操作栈上的数据),释放线程,让它去执行下一个任务;等某些事件被触发的时候,重新执行刚才的任务,用之前备份的调用栈信息恢复线程的调用栈,从挂起点开始执行。...

2013-03-08 16:14:32 559

企业应用架构模式英文版

企业应用架构模式英文版,绝版书籍,不过是英文的 企业应用架构模式英文版,绝版书籍,不过是英文的

2009-06-02

Thinking in Erlang

Thinking in Erlang,对于了解一点点erlang的同学有点帮助。

2009-02-09

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

TA关注的人

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