Tagged: Java


阿里云第一届PolarDB数据库性能大赛Java排名第一分享

JAVA并发编程实战笔记

第二次认真读了Doug Lea的Java Concurrency In Practice这本大作,记录笔记在此链接

[……]

继续阅读

Easy-mapper – 一个灵活可扩展的高性能Bean mapping类库

1 背景

做Java开发都避免不了和各种Bean打交道,包括POJO、BO、VO、PO、DTO等,而Java的应用非常讲究分层的架构,因此就会存在对象在各个层次之间作为参数或者输出传递的过程,这里转换的工作往往非常繁琐。
 
这里举个例子,做过Java的都会深有体会,下面代码的set[……]

继续阅读

Flume+Kafka收集Docker容器内分布式日志应用实践

1 背景和问题

随着云计算、PaaS平台的普及,虚拟化、容器化等技术的应用,例如Docker等技术,越来越多的服务会部署在云端。通常,我们需要需要获取日志,来进行监控、分析、预测、统计等工作,但是云端的服务不是物理的固定资源,日志获取的难度增加了,以往可以SSH登陆的或者FTP获取的,现在可不那么[……]

继续阅读

使用Scala开发一个DSL来做远程调用

问题背景

最近在实施微服务化过程中,发现了一类潜在需求(这就是传说中开发者的敏锐嗅觉=_ =?):

如何快速的来进行远程RPC调用,来进行测试、排查问题?

服务调用方式有两种形式,如下图所示。
第一种,传统的方式,服务provider提供SDK,服务consumer在构建环境中引入S[……]

继续阅读

基于Protobuf的分布式高性能RPC框架——Navi-Pbrpc

1 简介

Navi-pbrpc框架是一个高性能的远程调用RPC框架,使用netty4技术提供非阻塞、异步、全双工的信道,使用protobuf作为序列化协议,同时提供长、短连接模式,支持non-blocking和传统的blocking io,以及负载均衡,容错处理策略等,对于基于socket的分布式[……]

继续阅读

SpringMVC源码分析和一些常用最佳实践

前言

本文分两部分,第一部分剖析SpringMVC的源代码,看看一个请求响应是如何处理,第二部分主要介绍一些使用中的最佳实践,这些best practices有些比较common,有些比较tricky,旨在展示一个框架的活力以及一些能在日常项目中能够应用的技巧,这些技巧的线索都可以在第一部分的代码剖析中找到,所以读读源代码对于使用好任何框架都是非常有帮助的,正所谓“知其然,还要知其所以然”。[……]

继续阅读

从无重复大数组找TOP N元素的最优解说起

有一类面试题,既可以考察工程师算法、也可以兼顾实践应用、甚至创新思维,这些题目便是好的题目,有区分度表现为可以有一般解,也可以有最优解。最近就发现了一个这样的好题目,拿出来晒一晒。

1 题目

原文:

There is an array of 10000000 different int num[……]

继续阅读

Java基础类型存储与运算知识

最近发现一个问题,面试者、甚至组员中,在被问及一些计算机基础类型存储知识的时候,也许是大家目前的工作都是比较偏业务,以至于基础知识不太扎实,感觉有必要在这里在夯实一下,以被后人和自己牢记——基础知识或许不是你现在工作最重要的,但却是你未来进步的基石。

 

1.[……]

继续阅读

构建一个类timeline系统的架构设计

最近一直对微博、twitter、微信朋友圈这类软件所提供的类timeline系统架构很有兴趣,也可以叫做时间轴、news feed,或者status update,查阅了不少资料,也结合自己对于架构设计的一些积累认识,尝试着设计了一把。下图是一个简单tweets界面:
首先明确目标,要设计的系[……]

继续阅读

一些Java代码编程规范

1. 命名

驼峰命名

class命名尽量表达含义,尽量使用常用单词

非static的方法和变量,使用驼峰命名

static的方法,使用驼峰命名

static的变量,尽量使用大写,以下划线区分单词

 

2. 代码格式化

统一代码格式化,导入格式文件

每次写一部分代码后按ct[……]

继续阅读

使用Jakarta Commons Pool对象池技术

1. 为什么使用对象池技术

创建新的对象并初始化,可能会消耗很多时间。在这种对象的初始化工作中如果依赖一些rpc远程调用来创建对象,例如通过socket或者http连接远程服务资源,最典型的就是数据库服务以及远程队列(Remote Queue),建立连接 -> 发送数据 -> 接收连接[……]

继续阅读

利用spring的BeanNameAutoProxyCreator做事务管理配置

在项目开发时候,很多目标bean需要生成事务代理,可以为每一个目标bean配置一个 TransactionProxyFactoryBean  bean。这样做的话,可能最后变成配置地狱,此时可以考虑使用自动事务代理。 

 
applicationConte[……]

继续阅读

跨平台通信中间件thrift学习【Java版本】

1. What is thrift?

Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。跨平台通信中thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
 

2. thrift[……]

继续阅读

几种Java常用的通信协议比较

本文比较了RMI,Hessian,Burlap,Httpinvoker,Web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。

 

1. 简介

RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。
He[……]

继续阅读