- 博客(102)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 GO语言学习笔记
1. nil不是null,nil可以调用 *T的方法集2. struct中的匿名字段的方法会展开到struct中,struct的方法会覆盖匿名字段的同名方法3. struct的地址输出的是值?...
2017-07-25 00:27:52
213
原创 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
460
原创 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
536
原创 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
191
原创 ubuntu下部署kubernetes
在国内的网络环境下,按照官方文档,在Ubuntu上安装kubernetes,打通ssh、设置环境变量、下载源码或者二进制包,部署,是根本就安装不成功的,最基本的连git上的源码都下不下来,就算下来了,后续安装依赖的flannel、etcd的时候还是下载不下来;于是干脆自己动手下载依赖包,修改kubernetes安装脚本。 1、前提条件看官方文档,Ubunt...
2016-09-05 18:45:44
337
原创 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
1055
原创 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
319
原创 在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
422
原创 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
118
原创 <<创客——新工业革命>>读书笔记
原子 代表 传统制造业,比特 代表 互联网。 数年前,对于普通大众来说,制造业似乎离得很远,如果你想自己设计一个东西,然后小批量的制造,似乎是一件比较困难的事情,从哪里找到合适的制造商,制造商的生产流程是否可以生产你的产品,制造商是否愿意为小批量的产品调整制造排期...... 原子经济和比特经济的相互发展,最终交织到一起的时候,衍生出了很多新...
2016-04-22 23:32:22
253
原创 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
872
原创 netty3.6.2中写数据的过程,以及写数据写不出去后怎么处理
netty写数据的时候,会先放到一个缓存队列AbstractNioChannel.writeBufferQueue中,这个队列是WriteRequestQueuepublic void eventSunk( ChannelPipeline pipeline, ChannelEvent e) throws Exception { if (e ins...
2014-08-11 17:37:21
913
原创 在用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
1247
原创 JDK中反序列化对象的过程(ObjectInputStream#readObject)
此处,对象描述信息即ObjectStreamClass的实例1、java ObjectInputStream#readObject的时候,先从输入流读入对象,读取对象信息,如果在读取过程中出现异常,则通过markDependency处理;处理完后还会调用注册进来的callback 2、读取对象的过程,先读取对象,然后再java.io.ObjectInputStre...
2014-06-10 20:10:24
1541
原创 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
381
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
270
查看java对象在内存中的布局
接着上篇《一个对象占用多少字节?》中遇到的问题: UseCompressOops开启和关闭,对对象头大小是有影响的,开启压缩,对象头是4+8=12byte;关闭压缩,对象头是8+8=16bytes。这个如何观察验证呢? 基于上述事实,通过new A()和new B()占用字节推断,基本类型int在开启、关闭压缩情况下都是占用4个bytes的,这个没...
2014-03-20 22:39:39
1101
原创 一个对象占用多少字节?
老早之前写过一篇博客,是关于一个Integer对象到底占用多少字节的,现在看来,那篇文章竟然计算错了。这次再去计算,是因为之前写的一篇关于字长的文章里,看到了hotspot jvm里,对象占用空间是8字节对齐的,再加上之前关于字节那文章里带着一点-XX:+UseCompressedOops压缩指针参数的疑问,重新探究了下一个对象到底占用多少字节,以及如何计算它占用空间的方法。主...
2014-03-18 21:56:21
638
原创 maven使用技巧
1、pom打jar包的时候设置MANIFEST.MF的key/value,可以通过在pom.xml文件中添加plugin的方式来实现,这些plugin都在<project><build><plugins>下边: <plugin> <artifactId>maven-jar-plugin</artifactId&g...
2014-03-18 15:34:19
138
原创 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
591
原创 比反射更高效的修改字段值的方法
开发过程中,不少情况下都会遇到需要通过反射修改对象字段值的情况,但是很多情况下,直接反射效率比较低,而你如果读过jdk代码,可能多少会发现jdk里边经常闪现这UNSAFE的的身影,比如ConcurrentLinkedQueue里边到处都是。 为啥jdk里边到处都用这个东西呢?YY下,一方面是因为效率高,另一方面是因为它提供了很强大底层操作的功能,比如不用Ato...
2014-03-13 20:49:05
370
原创 cache line对内存访问的影响
cache line对内存访问的影响很早就看到了,但是没有写过例子跑过,突然兴起就写了下,对这里第一个例子稍微做了改造。要注意jvm参数设置,新生代+老生代分配了2.4xG内存,新生代分了2G,eden区分了1.6g,从实际内存占用看,数组eden区使用了近1.1G的内存,剩下区域基本都是空的。另,demo是在mac上跑的。/** * -Xms2500m -Xmx250...
2014-03-12 20:48:37
415
原创 Java Web应用Web层异步化应该考虑的问题
之前做了一个项目,要用到web层的异步化技术,在实际实现中,遇到了很多问题,作为教训简单罗列下。 1、app 容器/J2EE框架对异步的支持 在tomcat5、jboss4的时候,每一个请求都用了一个app容器线程来执行,app线程必须一直处理完或者等待别的线程处理完,才能拿着请求的链接把结果写回到客户端。如果你想这个时候释放掉app容器线程...
2014-01-25 17:45:04
232
原创 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
252
原创 一些数据切分、缓存、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
139
原创 一次线上问题的排查过程——时钟精度变化导致的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
1111
原创 从汇编和寄存器层面,简单描述下方法调用的时候都发生了什么
先看一个简单的汇编程序: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
99
原创 /proc/sysrq-trigger的一点介绍
前两天,缓存系统的一哥们儿在帮忙排查他们超时线程在某个机房占用cpu使用率比较高的情况的时候,用到了sudo sh -c 'echo w > /proc/sysrq-trigger' ; dmesg不解,查了下: dmesg 用来显示系统启动时候的系统信息的,这对系统管理员或者排查问题的时候很重要,参考鸟哥的解释和更详细的资料 ...
2013-09-07 23:31:59
906
原创 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
90
原创 汇编语言中访问内存单元的方式(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
1594
原创 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
243
原创 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
216
原创 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
197
原创 Kilim源码分析之三 ---- 织入之构造/合并BasicBlock
上一篇分析了可织入判断的代码,本篇继续分析织入部分的构造/合并BasicBlock。 首先看下分析方法kilim.analysis.MethodFlow.analyze()包含的功能: //织入逻辑 public void analyze() throws KilimException { buildBasicBlock...
2013-03-20 19:50:17
335
原创 Kilim源码分析之二 ---- 织入入口及可织入判断
1、织入入口,配置 1.1、织入入口 kilim.tools.Weaver是织入的主类,通过程序参数设置要织入的代码路径,可以是class文件、jar包、其他(是什么)、目录(目录中可以是jar包、class文件)。 如果传入的是class文件,会直接织入;调用kilim.tools.Weaver.weaveFile(String, InputS...
2013-03-20 19:33:52
245
原创 在编译级别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
153
原创 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
549
原创 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
268
原创 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
381
原创 java协程框架----kilim实现机制解析
java语言处理多任务的模式是基于多线程,java语言级别原生并不支持协程,我们想要java语言支持协程,就需要在线程和协程之间架起一道桥梁。在某个事件点(我们成为挂起点)上,我们在应用级别备份当前任务在线程上的调用栈信息(包括局部变量和操作栈上的数据),释放线程,让它去执行下一个任务;等某些事件被触发的时候,重新执行刚才的任务,用之前备份的调用栈信息恢复线程的调用栈,从挂起点开始执行。...
2013-03-08 16:14:32
601
一个系统每小时插入4亿条数据,需要考虑什么问题?
2011-11-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人