Java Web 工作技巧总结 16.8

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

四时不谢之兰,百节长青之竹,万古不败之石,千秋不变之人。

1. AOP – LOG
项目中,一个请求过来,一个响应回去。

经常我们需要记录请求过来的对应的 类,方法名,请求参数和IP等一些信息,还有响应出去的,如果是 JSON 结果集的话。比如现在一般暴露给前端(前后端分离),或者其他模块基本走 Restful 接口。那怎么优雅的去记录这些东西呢?

beta 1.0


1

2

3

4

5

6

7

8

@Path("user/get")

public ListResult<User> getUser(@BeanParam GetUserParam getUserParam){

    LOGGER.info(getUserParam.toString());

    ListResult<User> userList = userService.getUserList(getUserParam);

    LOGGER.info(userList.toString());

    return userList;

}

同样,硬编码加入了两句打印的代码,其实这个没这么简单。可能日志需要输出到日志平台,可能获取IP或者请求来源的一些信息。那怎么升级会优雅呢?Annotation + AOP可能不错哦!

realease 1.0


1

2

3

4

5

6

7

@Path("user/get")

@ApiAdvice

public ListResult<User> getUser(@BeanParam GetUserParam getUserParam){

 ListResult<User> userList = userService.getUserList(getUserParam);

 return userList;

}

ApiAvice 的实现原理是基于 Spring AOP 和 SPring 自定义注解完成。具体这篇文章写得差不多:http://www.xdemo.org/springmvc-aop-annotation/

2. 出、入参封装

上一点说到了,请求入参和响应出参。

入参提供一个 BaseParam,包含了 IP ,请求来源机器,机型等各种。PagerParam 继承 BaseParam 类,增加了分页相关的参数。比如,用户的参数 UserGetPagerParam..

出参提供一个 BaseResult,包含返回码,返回信息及请求 IP等。PlainResult 单个结果集,ListResult 列表结果集,MapResult…

同样,两者需要实现序列化。序列化的可以看看这个文章 http://www.infoq.com/cn/articles/serialization-and-deserialization

3. LIMIT

在处理线上问题的时候,有时候会有脏数据要进行处理。自然 DDL 操作,需要通过审批什么的。这里就不说了。主要在 UPDATE 操作的时候,注意 SQL 的写法。防止一条 SQL 误操作了其他正确的数据,加个 LIMIT 限制语句。例如


1

UPDATE user SET name = "BYSocket" WHERE name = "Jeff" LIMIT 1.

http://database.51cto.com/art/201005/200401.htm

4.Guava EventBus

Guava EventBus 是基于事件处理机制,是设计模式中的生产消费模式的实现。使用的场景:多半在异步的场景上。但是基于 JVM 内存上实现的,通俗的说是单机模式。需要评估好,这个异步是否是非常快速可以处理完毕。具体使用见

http://www.cnblogs.com/peida/p/EventBus.html

5.GC常用分析命令

这个总结来自有次 FullGC 特别多,OOM 的场景。然后是这样操作分析的:

jps -lvm // 查看JVM进程中的状态,并得知 JVM 的具体配置

jstat -gcutil {pid} 1000 // 每秒钟打印 GC 信息,可以看下 full GC,各种区的 实时信息

jmap -F -heap {pid} // 查看内存对象信息

主要是

jmap -dump:format=b,file=dump.bin {pid} // 导出内存对象 dump 文件

然后分析工具很多,这里用IBM HeapAnalyzer 具体使用看: http://blog.csdn.net/alexbxp/article/details/6756411

JVM 相关也看看

JVM 参数配置:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

JVM 监控命令:https://my.oschina.net/feichexia/blog/196575

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

 

时间: 2024-10-29 10:48:00

Java Web 工作技巧总结 16.8的相关文章

Java Web 工作技巧总结 16.10

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 在你成为领导者以前,成功只同自己的成长有关.当你成为领导者以后,成功都同别人的成长有关. 1.聊聊并发插入&代码 场景:业务中有些ERP第三方调用该接口,导致多组同样的数据包会调用同一个插入接口.一般都是XXXParamList,一个批量插入的接口. 首先聊聊批量插入的代码,一般都会这样搞,伪代码 for(XXXParam xxx : XXXParamList)validationXXXPar

2016.5.5(Java Web工作原理)

建动态服务器端内容的过程 CGI技术 微软的ASP和ASP.NET技术 基于Java的Servlet/JSP技术 HTTP是一种超文本协议,一种无状态的协议 HTTP请求分为:1.请求行 2.请求头 3.消息体 4.分隔请求头 5.消息体空行 HTTP 1.1 版本中,定义了有八种可能的HTTP请求方法:1.get:用于向服务器检索资源.(查找)2.post:用于向服务器发送数据,并要求指定的url处理.(新增输入)3.head:与get方法相同,服务器只返回转台行和头标,并不返回请求文档.4.

Java Web工作原理

学习Java Web应用程序开发,首先需要了解其核心的基础内容,即HTTP协议.HTTP协议是一种超文本传输协议,用于在计算机网络中的通信.一个完整的web应用程序由网页应用程序,客户端浏览器,web服务器,以及HTTP协议四部分组成.HTTP协议作为连接浏览器和web服务器的纽带,在web应用开发中起着重要作用. HTTP协议中定义的事物处理主要分四步:第一步,建立客户端和服务器之间的连接.第二步,由客户端向服务器发送HTTP请求.第三步,服务器结束到HTTP请求后,进行处理,生成HTTP响应

java web 工作原理

HTTP是一套计算机在网络中通信的一种规则 HTTP请求包含请求行.请求头.空行和消息体 HTTP响应包含状态行.响应头.空行和消息体 Web服务器存在缺陷 CGI程序严重消耗服务器资源,Servlet可以消除这种缺陷 Web容器给处于容器中的应用程序组件提供一个环境 一个web应用程序包括配置文件.静态文件.JSP.类文件和包 Tomcat既是一个优秀的JSP/Servlet容器,也是一个HTTP服务器 server.xml和web.xml是Tomcat主要的配置文件 welcome-file

第一章 Java Web工作原理

一:在本章我们将学到如下的内容 >HTTP协议原理 >服务器端Web编程原理 >Servlet与Web容器 >Java Web应用程序的组成 >Tomcat介绍 一:1.1解析HTTP协议 HTTP:超文本传输协议(HyperText Transfer Protocol) HTTP是一种无状态的协议,意思是指在Web浏览器和Web服务器之间不需要建立持久的连接. HTTP是遵循请求/响应(Request/Response)模型的. HTTP处理流程: 1.1.1建立连接 在j

Java web 调试技巧之查看浏览器中调试中的network

在java web开发过程中尤其后台开发经常需要查看浏览器调试中的network项:今天在开发在线预览系统时用到了flexpaper插件,这个插件会调用FlexPaperViewer.swf这个软件(姑且这么称谓吧),这个软件处理的都是.swf的文件, 那么在tomcat的web.xml文件中是应该配置的content-type是application/x-shockwave-flash 看到network中发生了500错误,说明是服务器端的错误,在查看红框中最下面的部分:content-typ

(一)JAVA Web工作原理

servlet的运行过程: web服务器收到客户端的HTTP请求后, 1)web服务器首先检查是否已装载并创建了该servlet的实例对象,如果是,直接第4)步. 2)创建一个servlet实例对象 3)调用该servlet实例对象的init()方法 4)创建一个用于封装http请求的httpservletRequest对象和一个代表http响应的httpservletResponse对象,然后调用servlet的service()方法并将请求和响应对象作为一个参数传进去.servlet容器调用

6_12 java WEB 第一节课

java web 工作原理 动态网页与静态网页最本质的区别是: 能否进行数据库操作 动态网页最大的特点就是具有交互性 ,  交互性指: 服务端会根据不同的用户请求显示不同的结果 OSI 7层参考模型 1.应用层 2.表示层 3.会话层 4.传输层 5 网络层 6 .数据链路层 7 .物理层 HTTP协议(hypertext  transfer protocol) : 超文本传输协议 ,是面向应用层的协议 TCP/IP  四层模型 1 . 应用层                 HTTP 2. 传

Java Web开发之详解JSP

JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用,而JavaBean作为模型(Model)层使用.这就是经典的MVC模型. Servlet和JSP的关系上篇博客已经讲过了,并演示了一个相当简单的例子.在具体讲述JSP之前,先把JavaBean简单介绍一下. JavaBean其实就是一个Java普通类,定义了类的属性和行为(get.set方法).在M