自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jiq•钦's technical Blog

学习 -> 记录 -> 分享

  • 博客(368)
  • 收藏
  • 关注

转载 JVM:JVM深入学习

备注:本文转自cutesource的博客一、基本结构从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:Java代码编译和执行的整个过程JVM内存管理及垃圾回收机制下面将这两个部分进行详细学习二、Java代码编译和执行

2016-02-28 00:31:28 1349

转载 JVM:浅析Java虚拟机结构与机制

转自: 舒の随想日记本文旨在给所有希望了解JVM(Java Virtual Machine)的同学一个概念性的入门,主要介绍了JVM的组成部分以及它们内部工作的机制和原理。当然本文只是一个简单的入门,不会涉及过多繁杂的参数和配置,感兴趣的同学可以做更深入的研究,在研究JVM的过程中会发现,其实JVM本身就是一个计算机体系结构,很多原理和我们平时的硬件、微机原理、操作系统都有十分相似的地方,所以学习

2016-02-27 23:58:50 989

原创 Java IO:SocketChannel和Selector在ZooKeeper中应用

转载请注明出处:jiq•钦's technical Blog 如果不了解SocketChannel和Selector,请先阅读我的另一篇博文:http://blog.csdn.net/jiyiqinlovexx/article/details/46780555 ZooKeeper的启动从QuorumPeerMain类的main函数开始: 调用顺序是: Main -> initializeAndRu

2016-01-20 22:57:03 1897

原创 关于HTTP1.1的长连接

HTTP是一个构建在传输层的TCP协议之上的应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范。 HTTP1.0的短连接HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。这个过程大概可以描述为:1、建立连接:首先DNS解析过程。如把域名变成一个ip,如

2016-01-11 22:52:24 10239

原创 Thrift学习(2)Thrift优缺点讨论

其实还有一些问题在困惑我。比如:1. Thrift主要的有点是不是跨语言?2. Facebook有很多跨语言调用的场景么?为什么要开发Thrift这个东东?3. 下载国内外各大互联网公司针对Thrift应用规模如何?一般都是在什么场景下应用?4. Thrift优缺点?所以专门开这篇博文,随着时间推移遇到的较好的关于Thrift的观点和想法都记录在这里!!!=====================

2016-01-07 20:26:36 8923

原创 Thrift学习(1)C#调用Java开发步骤详解

1 下载Thrift下载地址:http://thrift.apache.org/downloadthrift-0.9.3.exe         用于编译Thrift中间文件生成对应语言代码的工具thrift-0.9.3.tar.gz    包含Thrift各个语言的源码库,以及一些测试程序代码等 2 编译生成.NET库(DLL)和Java库(Jar)解压thrift-0.9.3.tar.gz文件

2016-01-07 20:07:42 3048

原创 关于广域网环境TCP是否适用的问题

1. 前言突然想起来很久以前听部门一位同事说过,Http协议适用于广域网,而TCP协议就不适用于广域网,因为Http协议是短连接,而TCP协议是长连接,开销比较大! 其实仔细分析就知道这种说话不成立。Http协议本身就是基于TCP协议的,发起一次Http请求之前客户端需要同服务端通过三次握手建立TCP连接。 以下几段内容摘自网络,最后给出自己总结的结论。 2. 长连接与短连接二、长连接与短连接的操

2016-01-07 00:05:45 3089

原创 关于部门后端全部转向java前初步设想

Java服务有些什么形式?目前来看主要是以下几类:1、  运行在Web应用服务器的Servlet2、  Thrift、PB、Avro等类似框架写的java服务3、  WebService(JAX-WS、JAX-RS)现在我们服务端要全面转向java。若后端子系统全部用Servlet写,将无法实现跨语言,我们现在客户端大部分还是.NET平台。如果用Thrift等框架,现在满足了.NET调用Java服

2016-01-06 00:27:27 2331 1

原创 Windows 2003-32bit上RabbitMQ不定期崩溃

转载请注明出处: jiq•钦's technical Blog - 季义钦现象:最近一个系统用到了RabbitMQ消息中心,这个系统又必须用于替换旧的系统,所以就有了必须运行在Windows 2003 32bit机器上面的限制。因为需求获取原因,所以可以说到了集成测试阶段才知道这个限制,当系统跑起来的时候,发现一个致命性问题:RabbitMQ Broker(NT服务)不定期崩溃。打开windows

2015-10-07 23:12:22 2800 1

转载 最流行的Java应用服务器排行

去年我们发布了 2013 年 Java 应用服务器市场调查。为了验证这个报告是否发送了变化,我们采集了从2月到5月的 783 给不同的配置点。数据通过启动的类路径进行收集,查询类似于 “grep -i tomcat classpath.log”.我们发现这个结果跟去年的差别不大,如下图所示:Tomcat 仍然以 41% 比例高居榜首,不过比起 2013 年的 43% 略有下降。Jetty 占 31

2015-07-30 22:22:31 2132 1

转载 Java Web应用乱码解决(Tomcat服务器)

转载请注明出处:jiq•钦's technical Blog  一、引言本人对Web编码问题研究也不是太深入,只是在Java Web开发过程中自己和别人都遇到过好几次编码问题,通过网上找了下述五个步骤做了之后100%都能解决: 二、解决方法:1、对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以;   2、正确设置JSP的pageEncoding="UTF-8"; 3、在所有的JSP

2015-07-11 20:24:55 1401

原创 Java IO:面向缓冲区、同步、非阻塞式IO(NIO)

转载请注明出处:jiq•钦's technical Blog 引言JDK1.4中引入了NIO,即New IO,目的在于提高IO速度。特别注意JavaNIO不完全是非阻塞式IO(No-Blocking IO),因为其中部分通道(如FileChannel)只能运行在阻塞模式下,而其他的通道可以在阻塞式和非阻塞式之间进行选择。尽管这样,我们还是习惯将Java NIO看作是非阻塞式IO,而前面介绍的面向流

2015-07-06 23:16:38 4391

原创 Java IO:面向流、同步、阻塞式IO(BIO)

转载请注明出处:jiq•钦's technical Blog 备注:阅读此文之前,建议先看我这篇博文了解阻塞式IO和非阻塞式IO的基本概念。一、流(Stream)1、字节流输入(InputStream) 介质流 FileInputStream 从文件中读取信息 PipedInputStream 产生用于写入相关PipedOutputStream的数据,实现“管道化”概念

2015-07-06 23:06:28 2456

转载 Java IO:阻塞/非阻塞式IO、同步/异步IO

转载请注明出处:jiq•钦's technical Blog 本文主要内容转自这篇文章,并在此基础上理解后总结。引言同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blo

2015-07-06 22:58:04 3556

原创 Java容器:HashMap和HashSet解析

转载请注明出处:jiq•钦's technical Blog 一、HashMapHashMap,基于散列(哈希表)存储“Key-Value”对象引用的数据结构。存入的键必须具备两个关键函数:(1)equals():  判断两个Key是否相同,用来保证存入的Key的唯一性;(2)hashCode(): 根据k-v对象的Key来计算其引用在散列表中存放的位置; HashMap底层结构是一个数组:tra

2015-07-02 00:17:10 2210

原创 Java容器:容器一览

转载请注明出处:jiq•钦's technical Blog 一、Collection:存放独立元素Collection中的接口都是可选操作,其实现类 并不一定实现了其所有接口,这是为了防止“接口爆炸”。最常见的Unsupported Operation都源自于背后由固定尺寸的数据结构支持的容器,比如使用ArrayList.asList将数组转换成L

2015-06-30 00:27:18 2485 6

原创 Java基础:数组

转载请注明出处:jiq•钦's technical Blog 一、数组初始化无论如何,当你要实例化一个数组对象的时候,必须要指定其大小。不能在提供了initializer的情况下再去指定数组的维度!!! 正确的初始化方式有:方式1:Int[][] array =new int[][]{{1,2},{3,4},{5},{2,4,2,1}}; 方式2:Int[][

2015-06-29 22:36:59 1425

原创 Java基础:泛型及其擦除性、不可协变性

转载请注明出处:jiq•钦's technical Blog 1泛型语法:泛型类: class ClassName{}泛型方法:public void f(T x){}基本指导原则:如果使用泛型方法可以取代将整个类泛型化,那么就应该使用泛型方法,因为它可以让事情更加清楚。 2为什么使用泛型?在Java SE1.5之前,没有泛型的情况的下,通过对类型

2015-06-29 00:08:24 2900 1

原创 Java基础:动态代理在RPC框架中应用

RPC,远端过程调用。就是调用远端机器上的方法。原理其实很简单,就是客户端上运行的程序在调用对象方法时,底层将针对该方法的调用转换为TCP/HTTP请求,发送到远端服务器,远端服务器监听固定端口,收到这个TCP/HTTP请求后会解析出相关信息,包括客户端想要调用哪个类的哪个方法,参数是什么等,然后进行对应的调用,将调用结果再通过数据包发回即可。 RPC中一般会有一些“契约”的概念,即客

2015-06-28 01:21:50 5518

原创 Java基础:静态代理和动态代理

转载请注明出处:jiq•钦's technical Blog 一、静态代理:假设原来有一个实现了指定接口/抽象类的子类:class RealSubject implements Subject{      public void request(){          System.out.print("real request handling\n");

2015-06-28 01:15:59 1792

原创 Java基础:RTTI与反射

转载请注明出处:jiq•钦's technical Blog 1 Class文件:class文件全名称为Javaclass文件,主要在平台无关性和网络移动性方面使Java更适合网络。它在平台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式的服务。每一个类都有一个Class类型的对象,每当一个类被编译,就会产生一个Class对象(保存在同名的.class文

2015-06-24 23:58:37 1337

原创 Java基础:字符串

转载请注明出处:jiq•钦's technical Blog (1)String本质:String对象是不可改变的,任何看起来会修改String对象的操作实际上都是创建了一个全新的Sting对象,然后再该全新对象上修改。而效率更高的StringBuilder正好不同。(2)String和StringBuffer的区别:String 类型和 StringBuffe

2015-06-23 23:55:11 1129

原创 Java基础:异常捕获顺序

public voidtestException(){int a[] = {1,2,3};int q = 0;try{for(int i=0;i<a.length;i++){a[i] /= q;}}catch(ArithmeticException h){System.out.print("ArithmeticException\n"); //执行}catch(Excep

2015-06-22 23:55:57 2891

原创 Java基础:抽象类和接口

一、引言基于面向对象五大原则中的下面两个原则,我们应该多考虑使用接口和抽象类:里氏替换原则:子类可以通过实现父类接口来替换父类,所以父类应尽可能实现为接口/抽象类,方便拓展程序而不影响现有代码。依赖倒置原则:和结构化设计不同,我们要让底层依赖于高层,而不是相反。而设计接口和抽象类时尽量遵循面向对象五大原则中的“接口隔离原则”,即使用专门接口比使用单一接口好。这个准则和针对类

2015-06-22 23:54:26 1209

原创 Java基础:多态(重载和重写)

(1)域与静态方法记住“只有普通方法的调用是多态的”。对于域的访问,在编译期间就已经进行解析和绑定了。而如果某个方法是静态的,就不具备多态性。(2)编写构造器有一条准则:  * 用尽可能简单的方法使得对象进入正常状态,尽量避免调用其他方法。 * 构造器内能够安全调用的方法只有那些final方法(private默认final),因为他们无法被覆盖。(3)多态概

2015-06-22 23:41:20 1318

原创 Java基础:初始化和清理

(1) 初始化:所以如果继承关系为:A导出B再导出C,在创建C对象的情况下的调用顺序是: * (1) A的静态域,B的静态域,C的静态域; * (2) A的非静态域,A的构造器,B的非静态域,B的构造器,C的非静态域,C的构造器(2)清理:销毁的顺序应该与初始化的顺序相反。(3)super/this在子类中可以通过super关键字调用父类的方法。也可以通

2015-06-22 23:33:22 1140

原创 Java基础:面向对象三大特征、五大原则

面向对象三大特征:(1)封装(Encapsulation)所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数

2015-06-22 13:57:20 15093

原创 Linux内核(五)虚拟内存

转载请注明出处:jiq•钦's technical Blog 内存管理单元(MMU)完成虚存地址到物理地址的转换。1什么是虚拟内存:虚拟内存两个关键技术:(1)页表(地址变换机构)。虚拟地址(连续的)到物理地址(不连续的页)的转换;(2)页面置换功能。将暂时不用的页面放到磁盘,让正在运行的进行获得更大的物理空间。虚拟内存是计算机系统内存管理的一种技术

2015-06-21 17:11:09 1511

原创 Linux内核(四)系统调用

转载请注明出处:jiq•钦's technical Blog 什么是系统调用?系统调用——内核和用户应用程序的桥梁,中间人。系统调用就是内核实现的一系列函数,这些函数提供了一套固定的接口,通过这套接口,用户程序可以访问系统硬件和操作系统的资源,即内核提供的服务。为什么提供系统调用?用户空间只能通过系统调用来访问内核提供的服务的根本原因是为了对系统进行“保

2015-06-21 16:57:43 1502

原创 Linux内核(三)进程调度

转载请注明出处:jiq•钦's technical Blog 数据结构:每个处理器维护一个运行队列,主要字段如图所示。每个运行队列有两个优先级队列,一个活跃的(时间片未完),另一个是过期的(时间片已完)。每个队列都有一个位图,用于快速寻找到当前队列中的最高优先级。 Schedule()函数执行步骤如下:(1)在活动优先级队列的位图数组中找到当前最高优先级

2015-06-21 16:55:00 1360

原创 Linux内核(二)中断基本概念

转载请注明出处:jiq•钦's technical Blog  首先解释一些容易混淆的概念: 中断上下文:正在执行ISR或者下半部。没有进程背景(只是暂停CPU去内存中其他地方执行一段快速代码),所以不能被切换(比如睡眠,被其他进程抢占等都不行)。进程上下文:非中断上下文(比如执行系统调用或者内核线程的时候)。此时内核代表线程在执行,所以允许睡眠,被抢占等(被切

2015-06-21 16:51:31 1374

原创 Linux内核(一)系统启动过程

转载请注明出处:jiq•钦's technical Blog  (1) CPU自身初始化:CPU加电之后需要进行一系列的初始化工作;(2) CPU加载BIOS(Basic InputOutput System):CPU执行一个固定的位置(一般是0xFFFFFFF0)的指令。这是一条跳转指令,跳转到BIOS代码的首部。BIOS固化在主板上一个很小的ROM中,主要完

2015-06-21 16:41:38 1330

原创 【PM】测试阶段源码和测试环境版本控制

针对企业信息化系统,个人经验认为在集成测试过程中需要避免测试环境被更改,两个原因:(1)若修改是错误的,将影响测试,甚至中断测试;(2)若修改是正确的,测试人员提出的bug就无法重现,测试人员的工作就会被怀疑。而且你不能总保证修改是正确的吧。同时源码也不能被修改,因为不能测试结束后,发现源码和测试环境的系统不一致了!所以我们需要同时控制源码和测试环境的提交权限。(1

2015-06-15 22:23:00 1478

原创 CentOS7虚拟机桥接设置及问题

今天在VMWare WorkStation9中安装了CentOS7虚拟机。虚拟机与宿主机网络连接有三种方式:桥接模式、NAT模式和Host Only模式。具体三种模式的解释可以在网络上搜到很多。 1、桥接模式设置:我这里使用的是桥接模式,虚拟机Edit->Virtual Network Editor配置中可以看到桥接模式默认使用Vmnet0虚拟网卡,这里我们选择桥接网卡。(其实

2015-06-10 00:02:54 5964

转载 大数据生态圈

大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。大数据,首先你要能存的下大数据。传统的文件系统是单机的,不能横跨不同的

2015-05-19 23:07:56 1100

原创 Redis学习(一)安装并测试

转载请注明出处:jiq•钦's technical Blog 1、安装TCL包:备注 -  TCL是一种流行的脚本语言,安装Redis需要有tcl支持:[root@bogonredis-3.0.1]# yum installtcl 2、解压下载的Redis压缩文件:[root@bogonredis-3.0.1]# cd /opt/redis/[root@bogonr

2015-05-17 02:30:20 1814

原创 NOSQL(六)集群并发计算模型Map-Reduce

《NoSQL精粹》读书笔记,转载请注明出处《jiq•钦's technical Blog》          面向聚合的数据库能够兴起,很大程度上是由于集群的增长。集群不仅改变了数据存储的规则,还改变了数据计算的方式。         集中式数据库通常两种方式处理计算逻辑:一种是在数据库服务器上执行数据计算、一种是在客户端计算机上执行数据计算。把数据库放到集群之后,采用的计算方式是将计

2015-04-26 22:54:39 1565

原创 NOSQL(五)版本戳

《NoSQL精粹》读书笔记,转载请注明出处《jiq•钦's technical Blog》 “事务”是一个有用的工具,可以保证数据的强一致性,对于NoSQL不支持事务这一点,很多NoSQL支持者并不担心,因为面向聚合的NoSQL数据库中以聚合为单位的数据更新操作是原子的。1“事务”的局限性“事务”也有其局限性,有些更新操作无法封装到一个事务中,因为那会导致事务的打开时间过长

2015-04-19 22:48:22 1460

原创 NOSQL(四)放宽一致性约束

《NoSQL精粹》读书笔记,转载请注明出处《jiq•钦's technical Blog》 前面已经提到过,催生NoSQL的主要原因是:需要一种能够运行在大集群上的数据库。但是从关系型数据库迁移到面向集群的NoSQL数据库,最大的一个改变就是针对一致性的思考方式。关系型数据库通过“强一致性”避免各种问题,而NoSQL并非如此。 1 更新一致性两个用户同时修改同一份数据,会发

2015-04-18 23:50:38 1716

原创 NOSQL(三)分布式数据模型

《NoSQL精粹》读书笔记,转载请注明出处《jiq•钦's technical Blog》 催生NoSQL的主要原因是:需要一种能够运行在大集群上的数据库面向聚合的数据库非常适合于横向拓展的集群架构,聚合自然成为了数据分布单元,而数据分布主要有两条路:“复制(replication)”和“分片(sharding)”,复制是将同一份数据拷贝至多个节点,分片是将数据分散存放到不同节点上。

2015-04-15 23:46:03 1709

空空如也

空空如也

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

TA关注的人

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