Protocol Buffers生成Java代码太大问题

一个比较长的proto文件,生成的Java代码有2.6M之多。。。而且是单文件,用IDEA打开,整个IDE都不好了。。。提示

1
File size exceeds configured limit (2560000). Code insight features not available

阅读全文

Protocol Buffers学习笔记

公司使用Protocol Buffers(下文简称PB)作为RPC架构的基础,所以我一直认为PB是一个RPC框架。今天面试官的反问才让我意识到,PB不是一个RPC框架,而是一种数据格式。PB官网对于PB是什么的描述:

Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.

阅读全文

掌握Java-Array/List排序

说Array/List排序之前先说两个和比较相关的重要接口:ComparableComparator

Comparable接口

1
2
3
public interface Comparable<T> {
public int compareTo(T o);
}

阅读全文

压力测试工具ab学习笔记

ab是Apache服务器自带的一个压力测试工具,用户测试HTTP服务器的性能。

阅读全文

【TODO】《大型网站技术架构》读书笔记



阅读全文

JDK源码阅读-Queue/Deque

Queue

Queue是一个很重要的接口。尤其是在并发编程中,比如像BlockingQueue就是继承自Queue接口的。Queue的实现也很多种多样,有最常见的ArrayDeque,LinkedList,这些是按插入顺序排序的。还有具有特殊功能的队列,比如优先级队列PriorityQueue。

阅读全文

JDK源码阅读-LinkedList

LinkedList是使用双向链表实现的List。长处是可以在O(1)复杂度下进行插入、删除操作,弱项是随机访问的复杂度是O(n)。

父类与接口

1
2
3
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable

阅读全文

JDK源码阅读-ArrayList

ArrayList可能是最常使用的集合类了。他使用array作为底层存储来实现List接口。

成员变量

1
2
3
4
5
//用于存放ArrayList的数据的数组
transient Object[] elementData; // non-private to simplify nested class access

//当前ArrayList存放的数据的个数
private int size;

阅读全文

使用IDEA快速生成Facade外观模式代码

最近在读《How Tomcat Works》,其中讲到了,直接将内部的Request类传给Servlet是不好的。因为知道内部实现的人,会在Servlet中吧ServletRequest向下转型为具体的实现类,然后调用实现类的具体方法。

这样是不好的,因为如果用户可以直接操作实现类,那么就不是面向对象编程了,而且实现类的升级会受到很大限制。

阅读全文

在IDE中运行调试Tomcat

Tomcat是最流行的Java Web应用服务器,其源码值得研究。

研究源码的第一步是把它跑起来。Tomcat是一个老项目,其使用的构建工具是Ant,想要构建Tomcat,运行ant命令就可以了。但是阅读源码最后是在IDE中进行,因为可以调试,所以还的花点功夫把代码导入到IDE中。这里我使用eclispe。

阅读全文