【Java 点滴】
牛迁迁
货车帮科技有限公司,高级开发工程师
展开
-
J2EE的13 规范之解读Servlet
J2EE 的13种技术规范之Servlet的解读。介绍Servlet是什么,以及Servlet的声明周期。Servlet 是什么? 第一,Servlet是一种规范,由Sun公司制定的服务器端组件规范。 第二,Servlet 可以运行在web服务器或应用服务器上。 第三,Servlet由Servlet容器进行管理,可实现诸如“实例化并管理Servlet对象”、“调用Servlet生命周期方法”、“解析及封装特定协议的请求和响应”等工作。 第四,作为来自 Web 浏览器的请求和 数原创 2015-01-20 21:41:33 · 1484 阅读 · 15 评论 -
Maven利用Profile构建不同环境的部署包
背景介绍,问题所在一个项目里总会有很多配置文件,有配置文件是好事,说明项目灵活,但是有的配置文件需要区分不同的环境,即不同的环境,配置文件里的值会有区别,我们需要根据环境的变化来修改配置文件中的值,这样就很不爽了。我们就遇到了这种情况,公司现在就有四套环境,本机环境(开发人员本机环境)、开发环境(开发阶段,小组内自测用)、测试环境(测试团队用)、生产环境(项目正式上线后的环境)。在这些不同的环境下有原创 2016-03-07 13:42:23 · 3291 阅读 · 9 评论 -
【Struts2进阶】用Struts2搭建web项目
今天翻看自己的博客,突然发现没有关于SSH三大框架的博客,翻看之前的笔记,有整理但是没发布 - -… 先从Struts2说起,使用一些新的技术,我的习惯是先以最快的速度学会如何使用它,做出demo,然后在去慢慢研究他的原理,实现机制。所以第一篇博客我会讲解如何使用Struts2框架快速搭建出一个项目。需要注意:Struts2需要运行在JRE1.5及以上版本1、创建一个Java Web项目2、引入原创 2016-03-10 20:51:53 · 1823 阅读 · 5 评论 -
【Struts2进阶】Struts2深度解析ModelDriven原理
Strus2在获取表单数据的时候有两种方式:属性驱动模式和模型驱动模式,使用属性驱动模式,需要在Action中声明这些属性,并提供属性的getter和setter方法,这样从前台传过来的参数就会自动set到你声明的属性中。但这种方式不好的地方在于,如果实体属性很多的话,就需要声明一大堆属性以及get(),set()方法。不过不要紧,Struts2可以采用类似于Struts1中的ActionForm方原创 2016-03-10 21:05:06 · 3389 阅读 · 7 评论 -
【Struts2进阶】Struts2的Action访问Servlet API 的 三种方式
Struts2 相比 Struts1 而言,Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,使得 Action 可以脱离 Web 容器进行测试;另外因为Action是一个普通的Java类,而不是一个Servlet类,完全脱离于Web容器,所以我们就能够更加方便地对Control层进行合理的层次设计,从而抽象出许多公共的逻辑,并将这些逻辑脱离出A原创 2016-03-10 21:44:34 · 968 阅读 · 4 评论 -
【Struts2进阶】Struts2 多方法调用的两种方式
Action的创建一般可分为两种方式,第一是每个方法创建一个Action类,第二是一个Action中包含多个方法;在实际的开发中,一般不会采取第一种方案,因为项目中有多少方法,就需要建立多少的Action类,类多且配置量巨大,所以我们经常采用一个Action对应多个方法的方式。那么问题来了,Struts2的Action中包含多个方法时如何调用?同样有两种方式可以选择,1. 方法的动态调用 2.通过配原创 2016-03-10 23:00:26 · 1634 阅读 · 7 评论 -
强大的表格控件-Datatables
背景介绍是不是习惯了EasyUI封装的DataGrid表格,传入一个json串,就可以自动加载数据,显示分页,还能实现一些特殊需求,如行内编辑,操作列等。而使用bootstrap表格的话,则需要完全自己手写table和分页控件,并且将两者组合到一起,才是个完整的表格,代码量大不说,如果需要实现一些特殊的需求,行内编辑等那就更加繁琐了。Datatables所以我寻找到了一款bootstrap风格的第原创 2016-02-27 22:55:53 · 22408 阅读 · 12 评论 -
项目实战之日志的使用:Jboss环境下添加自定义日志
日志介绍日志已经成为应用软件中不可缺少的一部分,现在我没发现哪个上线并且正常运营的项目没有添加日志;并且是否写日志已经成为了检测程序员是否专业的一个基本品德,就像写注释一样,灰常重要!Apache的开源项目Log4j是一个功能强大的日志组件,可以提供方便的日志记录。其他经常使用的还有slf4j、logback等日志组件。无论那种日志处理技术都能够满足当前的需求。 项目说明现在参与的项目用的JBos原创 2016-05-31 17:30:48 · 4534 阅读 · 7 评论 -
【SpringBoot系列】一:5分钟构建第一个SpringBoot工程
简介:SpringBoot是伴随着Spring4.0诞生的;从字面理解,Boot是引导的意思,因此SpringBoot的宗旨就是简化开发,帮助开发者快速搭建Spring项目; Spring Boot并不是一门新技术,可以说它继承于Spring。对于熟悉Spring的人来说入手门槛几乎为0,SpringBoot仅仅是对咱们经常做的一些Spring配置做了提炼,封装成了一个个注解;将经常引用的一些ja原创 2017-06-28 23:22:05 · 3310 阅读 · 3 评论 -
基于ZooKeeper Curator实现分布式锁
基于ZooKeeper分布式锁的流程1. 客户端连接上zookeeper,并在指定节点(locks)下创建临时顺序节点node_n2. 客户端获取locks目录下所有children节点3. 客户端对子节点按节点自增序号从小到大排序,并判断自己创建的节点是不是序号最小的,若是则获取锁;若不是,则监听比该节点小的那个节点的删除事件4. 获得子节点变更通知后重复此步骤直至获得锁;5. 执...原创 2018-11-13 19:12:53 · 10047 阅读 · 3 评论 -
记一次秒杀重复抢单问题
背景描述:系统给APP用户(客户经理)定时推送一批客户资源数据,这批数据在不同的客户经理登录APP都能看见,然后点击抢的按钮,就可以获取这个客户了,这种场景类似于秒杀抢单,存在多人同时点击按钮抢人,所以伴随着较高的并发操作。 问题描述:这时候问题就出来了,同一个地区的客户经理都可以看到相同的客户,所以他们在抢通一个客户的时候,就会出现同时抢中的情况。 背景设置:线上环境mysql隔离级...原创 2018-11-13 19:43:44 · 5323 阅读 · 2 评论 -
彻底解决JS处理Long类型精度丢失问题(一)
对于Long类型的数据,如果我们在Controller层将结果序列化为json,直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题。如何避免精度丢失呢?最常用的办法就是将Long类型字段统一转成String类型。JS 数字丢失精度的原因计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示,如 圆周率 3.1415926…,1.3333… 等。JS 遵循 IE...原创 2019-01-20 16:41:11 · 64137 阅读 · 6 评论 -
彻底解决JS处理Long类型精度丢失问题(二)
当你的序列化方式采用的FastJson时,该如何处理这种类型转换问题呢?一模一样的套路…SpringMVC 使用FastJson序列化方式1.增加类型转换类:public class FastJsonConfigExt extends FastJsonConfig { public FastJsonConfigExt(){ super(); Seri...原创 2019-01-20 17:11:23 · 4757 阅读 · 0 评论 -
【Linux运维入门】Jstatd方式远程监控Linux下 JVM运行情况
前言最近一个项目部署在服务器上运行时出现了问题,经过排查发现是java内存溢出的问题,所以为了实时监控服务器java内存的情况,需要远程查看服务器上JVM内存的一些情况。另外服务器系统是CentOS 7 最小安装,没有图形化界面,不能采用vnc远程。所以只能通过VisualVM或者JConsole来远程JVM。环境介绍服务器:CentOS 7 ip:192.168.22.249 jdk:1.8原创 2015-12-16 23:48:08 · 5498 阅读 · 4 评论 -
【Linux运维入门】JMX方式远程监控Linux下JVM运行情况
这篇博客以JBoss服务器为例,介绍JMX以方式如何配置,以远程连接服务器,查看JVM运行情况。其他服务器如Tomcat等类似。 运行环境 1. 服务器:CentOS 7(最小化安装) ip:192.168.22.249 jdk:1.8 2. JBoss版本:Jboss-eap-6.2 3. 客户端:WindowOS ip:xxx.xxx.xx.xx jdk原创 2015-12-20 13:31:48 · 8036 阅读 · 5 评论 -
【Linux运维入门】Linux环境安装配置TomCat
1. 安装环境 系统环境:centos7.0-x86_64(最小化安装) 软件环境:jdk1.8 软件下载目录:/usr/lcoal/software 软件安装目录:/usr/local/2. 前置条件需要JDK支持;(如果不知道如何安装JDK,请访问我写的 《【Linux运维入门】Linux环境安装配置JDK 》)3.安装tomcat ① 进入软件包所在目录[root@localhost原创 2015-12-22 13:20:32 · 3684 阅读 · 6 评论 -
J2EE的13 规范之解读JNDI
JNDI该怎么理解?相信大家都用过HashTable和Dictionary。他们的工作原理是:以Key和Value的形式存储对象,每一个添加项都是由一个值及其相关连的键组成。在使用的时候可以根据Key找到相应的对象。 JNDI也可以这样理解。他利用bind和rebind操作同样以键值(Key和Value)的形式将对象绑定到JNDI树上,然后以lookup操作根据Key查找到相应的Value(对象),进行操作。 每一个规范都是对编程某一方面的抽象,JNDI主要提供查找服务。它为编程人员提供原创 2015-01-09 16:47:47 · 1646 阅读 · 11 评论 -
J2EE的13 规范之解读JSP
什么是JavaServer Pages?JSP(全称Java ServerPages)是由SunMicrosystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。从上面的话不难看出JSP的核心是:能够及时响应客户请求的动态网页开发技术。它使用JSP的标签在HTML网页中插入Java代码。标原创 2015-01-24 21:13:49 · 1594 阅读 · 14 评论 -
【MyEclipse】史上最快捷-配置注释模版的方法
在敲代码时,添加注释是我们不可或缺的一项习惯。而Eclipse自带的注释往往不能满足我们的需求,所以我们需要修改Eclipse默认的注释模版,以符合自己公司的代码注释规范。修改注释模版这件事情,百度一下就会找到很多篇相关的博客。一般的方法就是:打开 window–>Preferences–>Java–>Code Style–>Code Templates–>Comments 然后对Files,Ty原创 2015-11-05 23:52:10 · 3349 阅读 · 10 评论 -
【MyEclipse】配置代码格式化模版
今天来说一下Eclipse/MyEclipse如何配置代码格式化模版,让咱们的代码更加整齐美观。设置格式化模版步骤和配置注释模版一样。1、下载此模板: eclipse-formatter.xml 2、打开eclipse/myeclipse 选择 window–>Preferences–>Java–>Code Style–>Formatter 点击Import 选择模板eclipse-forma原创 2015-11-11 13:39:00 · 13014 阅读 · 13 评论 -
【Java基础】理解ThreadLocal
ThreadLocal单词的直译为“本地线程”的意思,但是这么叫并不合理,很容易让人产生误解,他的实际意思应该是“线程的本地变量”。我们先看一下官方对ThreadLocal的描述:官网解释: 该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。Threa原创 2016-01-06 21:24:11 · 832 阅读 · 4 评论 -
【Java基础】采用ThreadLocal封装Connection控制事务,保证线程安全
前言: 上篇博客介绍了ThreadLocal的原理和功能,这篇博客会做一个ThreadLocal的具体示例:采用ThreadLocal封装Connection,控制事务,保证线程安全。 原理:采用ThreadLocal封装Connection后,每个线程使用connection时,都会创建一份connection,但是每个线程里的方法全部使用自己创建的那份connection,相互线程间不受影响原创 2016-01-06 21:30:36 · 2281 阅读 · 4 评论 -
【java基础】JSTL之EL表达式
EL 表达式语言简介EL 是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(“原创 2016-01-08 13:41:34 · 804 阅读 · 5 评论 -
【java基础】JSTL标签库的使用
前言我们都知道JSP能够显示界面,也能够通过写java代码实现很多的功能,但是现阶段我们在开发时,为了解耦,职责分明,jsp通常只作为界面显示用,一般会规定不让在jsp页面写业务逻辑代码。所以为了削弱jsp的权利, JSTL标签库变出现了。我们可以使用JSTL标签来代替jsp中的java代码,简化JSP和web查程序的开发。 JSP 标准标签库(JSTL)JSP标准标签库(JSTL)是一个JSP标原创 2016-01-08 15:22:46 · 948 阅读 · 5 评论 -
【Java基础】动态代理实现AOP之控制事务
前言在学习设计模式的时候,对静态代理和动态代理做过研究,静态代理倒是很好理解,代码也简单。但是动态代理代码相对复杂,基于当时的水平,没看太懂。这次就来解析一下java中的动态代理。 静态代理缺点静态代理是简单,但是他不灵活,使用的话需要为每个类都创建一个代理类。使用起来很不方便,并且也造成了大量的代码重复,在实际应用中并不广泛。而动态代理的出现正好解决了这些问题。 动态代理解析在java的动态代原创 2016-01-12 15:22:30 · 3451 阅读 · 5 评论 -
【Java基础】采用Filter实现AOP完成统一登录验证
认识FilterServlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单的说,就是Filter可以对Request和Response请求进行拦截。利用Filter这种机制,可以大大简化开发人员的工作量,比如系统原创 2016-01-12 16:08:35 · 2441 阅读 · 4 评论 -
【Linux运维入门】Linux环境安装配置Maven
1、 下载地址官网下载:http://maven.apache.org/download.cgi百度云链接: http://pan.baidu.com/s/1i4uxhi9 密码: ym932、 安装1) 上传到服务器使用命令解压cd /usr/local/softwaretar –xzvf apache-maven-3.3.9-bin.tar.gz2) 移动到软件安装目录mv /usr/原创 2015-12-28 17:12:05 · 995 阅读 · 7 评论 -
【Linux运维入门】Jprofiler9 远程监控Linux下JBoss
所谓“工欲善其事,必先利其器”,人类最大的进步就是创造和使用工具,好的工具确能起到事半工倍的作用。今天再给大家介绍一款非常实用的工具:JProfiler监控JVM运行情况,用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存原创 2015-12-26 21:14:18 · 4126 阅读 · 7 评论 -
【Java基础】ThreadLocal源码解析
查看ThreadLocal的源码,大体上可以划分为ThreadLocal、Thread、ThreadLocalMap这三个类,所以主要分析一下这三个类的联系。ThreadThread是线程类,通过Thread.currentThread()方法可以获取当前线程,并且Thread维护一个ThreadLocalMap成员变量用于存储线程私有变量(ThreadLocal.ThreadLocalMap...原创 2019-03-13 22:32:31 · 630 阅读 · 0 评论