Category: Java


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

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

1 背景

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

继续阅读

从JVM说起到初探Scala应用实践

最近在公司组内分享了一次关于JVM、Scala以及Spark介绍性质浅析的议题,这种形式的分享可以鞭策自己主动、自驱的完成一些既定目标,还能和有经验的人士一起交流,共享与学习是每一个做技术的同胞都应该拥抱的价值观。

PPT见连接,请点此

[……]

继续阅读

大塞车游戏活动的算法解

最近在公司组织的培训上,遇到了一个很有意思的算法题,这篇文章就借这个为题提供一个解。

解的代码用Java实现,并配有演示,已经放到了github上https://github.com/neoremind/big-traffic-jam-solver
 
首先感谢李培英老师,《职业化[……]

继续阅读

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

问题背景

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

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

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

继续阅读

Java的业务逻辑验证框架fluent-validator

1 背景

在互联网行业中,基于Java开发的业务类系统,不管是服务端还是客户端,业务逻辑代码的更新往往是非常频繁的,这源于功能的快速迭代特性。在一般公司内部,特别是使用Java web技术构建的平台中,不管是基于模块化还是服务化的,业务逻辑都会相对复杂。

这些系统之间、系统内部往往存在大量的AP[……]

继续阅读

基于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.[……]

继续阅读

一些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[……]

继续阅读

使用FastDateFormat来代替JDK自带的DateFormat

SimpleDateFormat来做Date到String的类型转换,建议我使用Apache commons-lang中的FastDateFormat。因为JDK里自带的SimpleDateFormat存在线程不安全问题。

 
改进方法有:
1.使用局部变量。有些时候希望S[……]

继续阅读