Java高级进阶
文章平均质量分 91
主要分享javaEE,java服务器,javaWeb等方面的知识,愿与大家一同进步,一同研究,并致力于提高java技术水平。
朱培
爱学习,爱生活,努力让自己成为一名更优秀的工程师,奋斗吧骚年!
展开
-
单例模式详解
本文主要分享的内容是单例模式的应用场景、常见的单例模式写法、保证线程安全的单例模式策略、反射暴力攻击单例解决方案及原理分析、序列化破坏单例的原理及解决方案。一、单例模式的应用场景单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。在 Spring 框架应用中 ApplicationContext;数据库的连...原创 2019-03-12 11:05:20 · 448 阅读 · 1 评论 -
策略模式的实际应用
应用场景:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。特点 :行为型模式 最终执行结果是固定的。执行过程和执行逻辑不一样。目前在公司的实际项目中,有如下场景:有3中数据来源的详情查询(客流数据、舆情数据、画像数据),这三种数据请求的参数都是相同的,如参数里面都是省、市、县、景区名称、开始时间、结束时间。返回的数据也是相同的...原创 2018-12-18 16:17:38 · 944 阅读 · 0 评论 -
使用观察者模式进行短信通知、预警日志记录
应用场景:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。如在舆情系统中发现有客户给出差评,就需要2小时内给相应的负责人发送短信通知,在客流系统中,人数超过预警值需要发送短信提醒相关负责人并记录到预警流水表中。特点:一般由两个角色组成...原创 2018-12-18 11:20:40 · 2240 阅读 · 0 评论 -
自定义maven插件的实现
最近在折腾maven,然后研究了一下maven的插件的写法,然后做了一个案例,通过maven插件来统计当前工程中的目录下有多少个java文件,操作步骤如下,在intellij idea中使用。1、新建一个maven项目,我这边jdk的build选择的是1.8,在pom.xml中添加...原创 2018-06-13 14:22:05 · 15871 阅读 · 4 评论 -
基于轨迹的游客行为特征分析
大数据时代,深度“数据挖掘”高级分析技术成为大势所趋,对于旅游景区来说,谁先掌握互联网平台、善用大数据,谁就最有可能先人一步破除体制壁垒与管理围墙,实现转型升级和跨越式发展。通过在旅游景区部署移动信号监测设备,就可以发现该群体游客的相关属性,例如在一个区县,在不同景点之间部署,可以发现游客移动的轨迹是怎么样,本文主要就是用于分析游客在不同景点之间的浏览情况,这样可以更加合理的设计景区与景区之间的交通路线,销售相关旅游产品和应急预案等方面的东西...原创 2018-10-16 10:33:28 · 6490 阅读 · 3 评论 -
基于CBO的SQL优化和Oracle实例优化
SQL优化是数据优化的重要方面,本文将分析Oracle自身的CBO优化,即基于成本的优化方法。Oracle为了自动的优化sql语句需要各种统计数据作为优化基础。外面会通过sql的追踪来分析sql的执行过程,消耗的资源信息。对于数据库的性能问题往往是在系统部署一段时间之后出现的,即大量用户开始使用该系统,系统的数据处理量和各种计算复杂性增加的时候,这个时候往往会追溯到系统的初始设计阶段,所以我们还是原创 2017-12-08 22:21:33 · 4059 阅读 · 3 评论 -
HashMap源码分析与实现
面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。每当hashmap扩容的时候需要重新去add Entry对象,需要重新hash,然后放入我们新的entry table数组里面。如果在工作中,已经知道hashmap需要存多少值,几千或者几万的时候,最好新指定题...原创 2018-02-09 16:01:02 · 5849 阅读 · 0 评论 -
谈一谈CloudBlog的系统架构
最近十几天在做一个博客系统,因为域名服务器都闲置已久,于是乎决定合理利用起来,做个网站。系统整体架构采用分布式的系统,也是当今很多企业都在用的,基于restful风格的一套系统。从父工程开始blog-parent.这是一个pom工程,主要用来放置pom.xml文件的,这个包含了整个项目所有依赖的jar包。然后是blog-common,这个存放项目中使用到的一些工具类,也是一个pom工程。然后是blog-manager工程,这个主要是后台,包括用户操作以及管理员操作,这个项目还有一个积分商城的功能...原创 2016-12-14 11:03:46 · 3999 阅读 · 8 评论 -
使用POI实现报表打印功能
这篇文章主要分享的是使用apache的poi来实现数据导出到excel的功能,这里提供三种解决方案。你可以使用最原始最简单的一步步添加样式或者数据,你也可以通过一个模板来进行模板化。POI支持微软的OLE2格式文件Office 2003及以下版本;同时支持微软的OOXML(Office Open XML)标准,也就是Office 2007以上版本。JXL只能实现对Excel 2003以下版本的支持.........原创 2016-11-29 15:34:54 · 13667 阅读 · 2 评论 -
SSM实现秒杀系统案例
对于抢购系统来说,首先要有可抢购的活动,而且这些活动具有促销性质,这种大型活动的负载可能是平时的几十倍,所以通过增加硬件、优化瓶颈代码等手段是很难达到目标的,所以抢购系统得专门设计。在这里我们说的库存不是真正意义上的库存,其实是该促销可以抢购的数量,真正的库存在基础库存服务。用户点击『提交订单』按钮后,在抢购系统中获取了资格后才去基础库存服务中扣减真正的库存;而抢购系统控制的就是资格/剩余数。传统方案利用数据库行锁,但是在促销高峰数据库压力过大导致服务不可用,目前采用redis集群(16分片)缓存促销信息,原创 2016-11-01 17:16:16 · 10057 阅读 · 9 评论 -
大数据量中的模糊查询优化方案
对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文索引库技术。本文示例是在SSH框架中进行使用。使用Hibernate Search (用来整合 Hibernate + Lucene),工作单搜索功能。导入IKAnalyzer分词器。因为IKAnalyzer在maven中没有,所以我们需要手动下载这个jar包...原创 2016-09-19 22:21:10 · 17581 阅读 · 1 评论 -
文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
今天要分享的功能是一键上传excel文件,然后显示在页面中,以及将网页上的数据已excel文件的形式下载下来。使用的是Apache的POI,本文分享的实例是SSH框架完成的一个项目中的一个功能模块之一,使用了Maven,所以相关的jar包都贴出了maven的相关jar坐标。因为这个项目设计了很多ssh的配置,这里本文就不在一一列出。Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.原创 2016-09-17 07:43:07 · 3720 阅读 · 0 评论 -
项目分享:通过使用SSH框架的公司-学员关系管理系统(CRM)
最近在做的是一个通过Struts2、Hibernate、spring框架整合做的一个CRM系统,整体开发比较简单,就是细节的地方处理还是要花费一定的功夫,我主要负责的是人事管理(包括部门管理、职务管理、员工基本信息管理)、教学管理(班级管理、课程类别管理)、系统设置(修改密码、登录、退出)。整体功能比较简单,适合一般性开发。涉及的技术要点就是通过HQL来进行数据的增删改查、部门-职务级联、分页、通过struts进行文件上传下载等...原创 2016-09-11 22:41:00 · 6845 阅读 · 5 评论 -
Spring常用配置
Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。 轻量级:依赖其他内容教小,使用资源消耗也少。 核心:控制反转Ioc和面向切面AOP。 spring生成的东西叫做bean.现在流行的框架中都用到了spring,其中最重要的作用就是依赖注入,或者称为反转控制。spring是开发javaee查询非常重要的一个框架,可以为后续使用springMVC打下良好的基础,其实主要的就是一些配置文件,需要哪些jar包,我们应该如何去配置,本文都有非常详细的阐述。通过使用sprin原创 2016-09-08 14:36:07 · 3175 阅读 · 0 评论 -
粗浅看Struts2和Hibernate框架
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,struts2和hibernate分别都是框架是JavaEE中的三大框架之一,同时也是非常“老”的两个框架,现在很多已经转换为springMVC和mybatis来开发javaee应用了,既然sturts2和hibernate可以成为经典,那肯定还是有其存在的必要的,对于一些老的项目来说,如果我们要对其进行维护什么的,我们还是需要了解struts2原创 2016-09-03 19:08:48 · 7731 阅读 · 1 评论 -
一小时入门PHP
PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。最近在折腾那个安卓扫码登录的功能,然后网页端是用php的做了,于是乎看一下php的资料,发现其实和java、jsp有很多相通的地方啊,语法什么的,还有类的使用,感觉非常相似......原创 2016-08-26 22:38:50 · 12747 阅读 · 3 评论 -
使用nexus搭建Maven私服
Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,项目组开发人员开发时,只要在项目的pom.xml文件中,添加如下pom.xml信息即可获取私服的jar.如果添加其他的构件时,会先在nexus私服下载好,以后才会下载到本地。以后,如果发现私服...原创 2016-08-12 14:08:05 · 12924 阅读 · 3 评论 -
在线支付功能的设计及其实现
在现在的网站中,基本上都会有支付功能,在线支付作为一个潮流已是现代化网站的必备功能模块,那么几天我就分享一下如果来做这个在线支付功能。在线支付一般来说有两种实现方式,一种是调用各个银行提供的接口,另一种是使用第三方集成好的支付功能。两种方式各有优劣,这个相信行内人士都是非常了解的了。对于第三方支付来说会需要提交企业5证来验证,还会有部分手续费,但是实现起来就非常方便了。对于直接使用银联接口的话就是使用起来必来麻烦...原创 2016-08-08 19:56:47 · 30300 阅读 · 11 评论 -
用户注册的邮箱激活模块的设计与实现
分享用户注册时需要进行的邮箱激活功能的实现。在我们都知道在一个网站中,用户注册后需要来一个邮箱进行激活是很常见的功能,那么我们今天就来学习一下这个邮箱验证功能.这里以我的一个小项目“网上书店”的这个模块来说明这个邮箱激活的功能!采用的是mvc模式开发!我们刚才将其抽取到一个线程中来实现.我这里使用的是万网的mail.host,所以其属性值为smtp.mxhichina.com,如果你用的是163邮箱的话,就替换为...原创 2016-08-07 21:04:02 · 11743 阅读 · 9 评论 -
WebService案例入门(基础篇)
Webservice:跨语言跨平台的远程调用技术。Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术。在做企业整体信息化时,企业中一般都或多或少的存在一些既存系统,这些各种各样的系统不可能全部推翻,重新规划和开发,因为很多供应商在某一领域也做的很专业,博众家之长并进行集成应该是一个比较现实和可取的做法。各个系统之间通过WebService...原创 2016-08-03 19:56:27 · 22278 阅读 · 3 评论 -
过滤器应用案例分析
本文主要分享的内容是通过使用过滤器解决全站乱码、Html过滤、脏话过滤、Gzip压缩过滤等主要内容,是一个切实解决网站实际问题的一套方案。我们以前对于网站乱码的问题大多数是直接在servlet中rerquest.setCharacterEncoder("UTF-8")这样来解决,但是对于多个servlet重复也的话就非常不好了,及其不方便,所以我们可以使用一个过滤器来对整站的编码进行设置。新建一个类SetCharacterEncodingFilter,使其继承Filter接口...原创 2016-07-31 11:15:23 · 4062 阅读 · 2 评论 -
Java web文件上传下载
本文主要从javaweb上传文件到服务器中,并且在服务器端进行数据文件存储,主要分享了文件上传原理、使用第三方开源工具进行上传以及一些文件上传时需要注意的地方,文件的优化处理,还有简易分享了从我们刚才上传进去的文件进行下载。需要掌握基本的开发流程,底层实现原理等...原创 2016-07-27 19:37:16 · 5974 阅读 · 1 评论 -
Servlet常用操作(基础)
本文主要介绍servler的基本使用操作,是一些非常基础的知识,主要掌握servlet作用域、servlet映射、请求转发、ServletConfig配置、ServletContext等的使用,最后以一个简易的文件下载的案例来说明Servlet的应用。Servlet 看起来像是通常的 Java 程序。Servlet 导入特定的属于 Java Servlet API 的包。因为是对象字节码,可动态地从网络加载,可以说 Servlet 对 Server 就如同 Applet对 Client 一样,但是...原创 2016-07-19 10:38:18 · 5011 阅读 · 1 评论 -
JSP基础概要
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。原创 2016-07-16 17:29:05 · 10349 阅读 · 0 评论 -
Lucene全文检索基础
“少理论,少模型”,“多实践”,“多应用”的学习态度,今天带来的是关于站内搜索的基础使用,目前检索这个领域有非常多优秀的框架了,但是身为一个全文检索领域的经典祖先,我们还是需要了解和掌握其精华的。本文主要内容有Lucene简介、索引库的建立、关键字搜索、检索分页、网站排名优化、分词、搜索结果高亮等。要求掌握其基本开发流程,并可以使用servlet+easyUI+lucene+jsp+js等技术做一个简易的站内搜索的功能模块。原创 2016-07-11 13:25:42 · 5781 阅读 · 0 评论 -
1小时学会JQuery
jQuery是继prototype之后又一个优秀的JavaScript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器。jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。使用jquery,首先我们需要去把jquery的包导入,这个jquery的官网上面是可以下载的,地址:https://jquery.com/,目前最新版本是3.0,一般会有两种版本的,一个是完全的,一个是迷你原创 2016-06-25 22:21:09 · 6925 阅读 · 4 评论 -
Ajax+Struts2实现验证码验证功能
通过ajax来动态的验证验证码输入是否正确。我们这里采用的是ajax+struts2来做的这个验证。 我们新建一个web工程。然后需要导入struts的相应包。之后我们需要写一个类来生成验证码。这里命名为01_image.jsp,这类的主要功能就是生成验证码,里面是各种画线条,随机数字等,我这里设置的是5个数字的验证,如果你想要改成其他的也可以,大致思路就是在生成数字的那个循环那里加上字母就可以了。原创 2016-06-24 20:34:24 · 6988 阅读 · 3 评论 -
AJAX编程实践
本文主要从Ajax的产生背景讲起,分享什么是ajax?我们为什么要用ajax?ajax适用于什么场合?以及我们如何来使用ajax。本文通过ajax的两个常见案例来讲解ajax的编码步骤,学习目的要求熟练掌握ajax的5个开发步骤。学习的前提要求已经掌握了html,css,js,xml,servlet的基本知识。原创 2016-06-21 16:08:21 · 12649 阅读 · 5 评论 -
JavaScript基础精讲
本文主要从javascript简介开始,分享s语法、js函数、BOM编程和DOM编程的相关知识。一、JS简介1.1 简介JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功原创 2016-06-06 17:06:40 · 2377 阅读 · 1 评论 -
大话XML解析
之前我写过一篇关于xml解析的文章:http://blog.csdn.net/sdksdk0/article/details/50749326,写的都是一些很基础的知识。今天这篇文章主要是进一步加深对xml的理解了使用,写的应该会更注重细节的内容。主要内容有xml语法、DOM解析、SAX解析、Xpath,schema约束。一、xml语法 标签有开始标签和结束标签xm原创 2016-06-01 13:41:43 · 7170 阅读 · 0 评论 -
java常用排序算法
在各类算法中,排序算法是最基本的内容。在这里主要分享一个冒泡排序,选择排序,插入排序,希尔排序,快速排序和堆排序以及合并排序。1、冒泡排序这里是最基础的了,不用多说。public static void bubbleSort(int[] a){ int temp; for(int i=1;i<a.length;i++){ for(int j=0;j<a.length-i;原创 2016-05-22 14:16:14 · 2212 阅读 · 0 评论 -
企业人事管理系统项目拾金
嗯,今天终于把花了3个星期的人事管理系统做完了,然后也答辩完成,导师对我这份作品应该还是比较满意的,我觉得他可能还是对我有点惊讶,因为我增加了很多他期待之外的功能(虽然也并没有什么鬼用)。非常感谢我的队友们对我的支持和信任,这也是我第一个完整开发的一个java项目,感触还是比较深的。这一路走过来真的有心酸有欢笑,是真的体会到做项目的那种感受。 我一开始接这个项目的时候我第一感原创 2016-05-20 09:17:28 · 5252 阅读 · 5 评论 -
在java程序中实现发送邮件的功能
最近比较忙,在做一个人事管理系统的项目,在这项目需求中,需要一个发送邮件的功能。这个时候我们可以使用javamail的jar包来实现完美需要的功能,在这里简单的分享一个最基础的发邮件功能。首先我们需要去下载两个jar包,smtp.jar和mailapi.jar,导入到自己的项目中应该就不用我说了吧,大家都是有经验的开发人员了。public class Demo1 { pub原创 2016-05-13 23:05:48 · 6670 阅读 · 2 评论 -
SQL批处理与事务控制
今天我想要分享的是关于数据库的批处理与事务的控制。批处理对于项目的实际应用有非常大的具体意义。一、批处理部分首先我们新建一个表: create table t3(id int primary key auto_increment,name varchar(100));注意:auto_increment只适用于mysql中,对于oracle需要用的是创建一个序列来原创 2016-04-25 23:39:02 · 4532 阅读 · 0 评论 -
Eclipse的Debug调试技巧
作为开发人员,掌握开发环境下的调试技巧十分有必要。我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪里出现问题,经常需要增加日志,看变量的值,这样调试很麻烦。假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间。由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能。那能为你省下一些时间,也将会使你的生活更安逸、轻松。首先我们需要注意原创 2016-04-24 23:19:20 · 25928 阅读 · 2 评论 -
java记事本开发
今天我想要分享的是一个用java写的一个记事本程序。我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的bug,我现在分享的这个记事本程序基本上把代码层次都抽分出来,并修复了一些已知bug。先看一下界面效果图,快捷键我都已经全部加上了,只是没有在界面上标明而已,一般常用的那几个快捷键都直接使用即可!原创 2016-04-24 21:43:22 · 5587 阅读 · 4 评论 -
动态数组的实现案例
Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是List。下面介绍一下List作为Java动态数组的用法。我们可以首先编写两个类List.java 和一个测试类Test1.java。将主类和测试类分开写,更有利于扩展性,这是一个非常好的编程思想。下面来看一下我们如何来实现List类。注释已经写得很清楚了,如果有不懂的地方欢迎留言。//定义一个容器类public原创 2016-03-10 14:42:14 · 2069 阅读 · 4 评论 -
递归算法案例分析
一、递归练习(斐波那契数列)不死神兔故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,问:一对刚出生的兔子,一年内繁殖成多少对兔子?算法分析:1 1 2 3 5 8原创 2016-03-31 23:35:59 · 2900 阅读 · 0 评论 -
java基础知识——网络编程、IO流
IO流字节流:处理字节数据的流对象,计算机中最小数据单元就是字节。InputStream OutputStream字符流:字符编码问题,将字节流和编码表封装成对象就是字符流。Reader Write读、写都会发生 IO 异常。io 异常的处理方式 :io 一定要写 finally。fw.flush();//刷新缓冲区,fw.close();//关闭流。IO 中的使用到了一个设计模式: 装饰设计原创 2016-01-06 20:36:44 · 1860 阅读 · 0 评论 -
Java面向对象要点
面向对象:一、基本概念 类与对象的基本概念: 1、void类型是不需要返回值的,其他类型全部都需要返回值。 public void tell(){} public int say(){ return 0; } 2、方法的重载,方法名称不同,但是参数的类型和个数不同,通过传递参数的个数和类型不同原创 2016-03-23 17:27:55 · 1459 阅读 · 0 评论