Spring注解概览

从Java5.0开始,Java开始支持注解。Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解。相比起之前使用xml来配置Spring框架,使用注解提供了更多的控制Spring框架的方式。

现在越来越多的项目也都在使用注解做相关的配置,但Spring的注解非常多,相信很多注解大家都没有使用过。本文就尽量全面地概括介绍一下Spring中常用的注解。

有效解决问题

来自于内部的一次培训,主要讲述了如何有效地解决问题,包括识别问题、描述问题、分析问题、找出方案、决策问题等。

Java9来了

2017.9.21,Java9终于正式发布。其带来了诸如模块化、REPL环境、集合工厂方法等一系列有用的新特性。本文列出一些链接,可以通过阅读相关的内容来了解学习Java9。

官方资料

第三方资料

[译]Java中9个处理Exception的最佳实践

在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些规范往往是截然不同的。

本文给出几个被很多团队使用的异常处理最佳实践。

谈谈架构

之前开头的《架构设计原则》一文一直没有把坑填上。而最近在公司内部做了一次架构交流/培训,把架构的概念、架构的形式、架构设计原则都做了阐述,正好算是对此文的完成和补充。

PPT观看

[译]在Java中提升函数以更好地“函数式”编程

Java8中的Stream和Optional给我们带来了函数式编程的乐趣,但Java仍然缺少很多函数编程的关键特性。Lambda表达式、Optional和Stream只是函数式编程的冰山一角。这也导致了varvrfunctionlajava这些类库的出现,他们都源于Haskell这个纯函数式编程语言。

如果想要更加地“函数式”编程,那么首先要注意的是不要过早的中断monad(一种设计模式,表示将一个运算过程通过函数拆解成互相连接的多个步骤。只要提供下一步运算所需的函数,整个运算就会自动进行下去, Optional、Stream都是monad),比如,很多人经常会在还不需要的时候就调用了Optional.get()和Stream.collect()提前终止monad。本文主要讲述如何通过提升方法来使得代码更”函数式”。

《Java工程师修炼之道》

最近几个月由于工作和正在筹备《Java工程师修炼之道》一书的原因一直没有写新的文章。不过,忙里偷闲,自己陆续读完了《格鲁夫给经理人的第一课》、《架构真经》、《聊聊架构》这几本书,收获了不少干货,之前自己挖坑的《一些架构设计原则》一文后面会尽快填上。本文则先介绍一下《Java工程师修炼之道》一书^_^。

《Java工程师修炼之道》一书主要内容是Java后端工程师必备的基本技能大纲。内容主要来自于公司内的后端工程师学习计划、自己以前的一些博客文章和自己从业以来积累的知识库。但由于后端工程师的每一个技能点都具有一定的深度,都不是一两篇文章就能讲述清楚的,因此本书不可能对每一个技能点都讲的特别透彻。

本书可以看做是一本Java工程师的入职指南,也可以看做一本串联Java后端技能点的参考手册。对其中每一个技能点的学习,推荐通过他们的官方文档来深入学习,此外,本书也给出了自己觉得有价值的参考学习书籍。

JVM诊断调优CheatSheet

包含诊断调优java应用的各种命令以及jvm配置示例。

常用Shell命令

  • 查看网络状况

      netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    
  • 使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存。

      #!/bin/bash
      for i in `ps -ef | egrep -v "awk|$0" | awk '/'$1'/{print $2}'`
      do
          mymem=`cat /proc/$i/status 2> /dev/null | grep VmRSS | awk '{print $2" " $3}'`
          cpu=`top -n 1 -b |awk '/'$i'/{print $9}'`
      done