![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【J2EE】
yysx
努力就有收获自信才有未来
展开
-
SpringBoot入门
1、Background最初没有大量的配置,各自为战的”小作坊“式的开发。慢慢的,我们意识到这种方式的弊端。”小作坊“彼此不交流,难以使得资源合理利用,而且水平也不高。之后,随着ioc、aop的引入,开发的流程变得标准化、规范化,资源的利用率提升很多。但它也有不足之处,为了规范和整理彼此之间的关系,我们也付出了不小的代价,那就是需要做大量的配置工作。这时候,人们开始追求更方便、更灵活的原创 2016-11-26 21:16:38 · 1039 阅读 · 4 评论 -
JVM(1)——简介
网上流传着一段挺有意思的话…… 对于从事C或C++的开发人员来说,他们既是内存管理的最高权力的皇帝,也是最基础的劳动人民,担负着每一个对象生命开始到终结的维护工作,有点光杆司令的赶脚。 但对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不需要手动维护,也不容易出现内存泄漏和溢出的问题。但是如果不了解JVM,一旦出现问题,你就会变得无从下手……一、JVM Java Virt原创 2016-04-24 16:04:19 · 2818 阅读 · 7 评论 -
JVM(2)——GC算法和收集器
引入上篇博客《JVM——简介》中主要介绍了JVM的内存模型,思考一下: 为什么要划分堆、栈、方法区等? 为什么把不同种类的数据信息分别存放?答案可以分为很多很多条,这里就说一个方面,如果我们是如何区分数据的种类的,那就是作用域。比如:堆、方法区是线程共享的,而栈是私有的。那么管理又包括哪些方面呢?包括创建、存储、回收?这篇博客就来谈谈垃圾回收(Garbage Collectio原创 2016-05-05 15:21:01 · 2837 阅读 · 2 评论 -
java泛型——基本使用
泛型因为泛型使用较多的场景是在集合中,我们以集合为例来说说泛型。java集合的一个缺点就是,我们放入一个东西之后,他并不知道这个东西的数据类型。如何理解?原创 2016-04-19 14:59:06 · 658 阅读 · 4 评论 -
Java集合(2)——深入理解ArrayList、Vector和LinkedList
回顾Java集合主要分为两个体系结构,Collection和Map。这篇博客主要介绍Collection子接口List下的三个经常使用的实现类:ArrayList、Vector和LinkedList。详细内容参见《Java基础——集合》先看下关系图: 1、ArrayList这是List最常用的实现类,想一想为什么他最常用? Array,在java中意为“数组”。猜想ArrayList和原创 2016-05-02 15:12:04 · 3322 阅读 · 3 评论 -
Java基础——IO
一、概述I/O,Input/Output输入输出。输入机制比如读取文件数据、用户键盘输入等,输出,比如将数据输出到磁盘等。 Java的IO是以流(Stream)为基础的。 流的叫法十分形象,你可以想象数据在被读取或写入时动态的状态。 如果把输入(出)设备当成一个管道,那么流就是这个管道中的information信息或数据。二、体系IO体系结构大致如上图所示,流式部分是基础也是重原创 2016-05-11 16:05:42 · 642 阅读 · 1 评论 -
java线程(7)——阻塞队列BlockingQueue
回顾:阻塞队列,英文名叫BlockingQueue。首先他是一种队列,联系之前Java基础——集合中介绍的Queue与Collection,我们就很容易开始今天的阻塞队列的学习了。来看一下他们的接口定义:Queue:(方法很简单,就不一一注释解释其作用了。)public interface Queue extends Collection { boolean原创 2016-04-29 09:41:05 · 817 阅读 · 6 评论 -
java线程(5)——线程池(上)
线程池是一种多线程的处理形式,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务。线程池的种类有很多,我们可以根据具体业务需要决定是否使用、使用哪种线程池。原创 2016-04-15 16:17:12 · 859 阅读 · 3 评论 -
java线程(3)——详解Callable、Future和FutureTask
接上篇博客java线程——三种创建线程的方式 ,这篇博客主要介绍第三种方式Callable和Future。比较继承Thread类和实现Runnable接口,接口更加灵活,使用更广泛。但这两种方式都没有返回值,要想返回相应的数据,就要使用Callable和Future方式。基础:1、Callable还是从定义开始,Callable接口有返原创 2016-04-09 20:55:27 · 2380 阅读 · 5 评论 -
java线程(4)——线程同步的锁技术
同步 同步,字面来看,有点一起工作的意思。但在线程同步中,“同”意为协同、互相配合。比如:A、B两个线程,并不是说两个线程必须同时一起工作,而是说互相配合工作,在某个时间可能线程A要等线程B去工作,之后线程A才能继续工作。如果理解不了,可以参考java线程(2)——模拟生产者与消费者中的例子。 思考: 为什么会有线程同步?上面例子中线程A为什么要等B工作之后才能继续工作?在生产者和消费者的原创 2016-04-12 20:53:26 · 630 阅读 · 3 评论 -
java线程(6)——线程池(下)
上篇博客java线程(5)——线程池(上)介绍了线程池的基本知识,这篇博客我们介绍一下常用的ThreadPoolExecutor。定义类图关系:ThreadPoolExecutor继承了AbstractExecutorService抽象类,而AbstractExecutorService实现了ExecutorService接口。下面来看下ThreadPoolExecut原创 2016-04-17 15:00:35 · 703 阅读 · 4 评论 -
Java的同步容器和并发容器
前言:之前在介绍Java集合的时候说到,java提供的实现类很少是线程安全的。只有几个比较古老的类,比如Vector、Hashtable等是线程安全的,尤其是Hashtable,古老到连命名规范都没统一了……同步容器:1)Vector和Hashtable来简单比较下:Hashtable和Vector实现同步的方式也很类似,都是使用synchronized关键字,利用ja原创 2016-05-16 15:41:43 · 1018 阅读 · 3 评论 -
Java中IO——NIO
引入当引入一些新功能的时候,那说明之前的设计可能还需要完善。1、阻塞式在传统的IO输入输出中,如果我们从流中去读数据,而数据源中没有数据时,程序就会阻塞该线程。阻塞式线程的一种基本状态,可以理解成线程就在那里等着,什么也不做。显然,这种阻塞式的io如果正常执行还好,一旦数据缺失或网络故障,就没什么优点可言了。2、效率不高传统IO的介绍中,我们把流比作水管中的水滴,读和写操作都在操作“水滴”,而且一次原创 2016-05-20 11:40:06 · 514 阅读 · 1 评论 -
JMS实战——ActiveMQ
安装官网下载地址:http://activemq.apache.org/ 小编这里以5.9.0版本为例,做简单介绍。下载之后解压到制定路径,目录结构如下:启动直接运行bin下的activemq.bat,出现如下界面。浏览器输入http://localhost:8161进行访问,这只是一个安装成功的页面。一般用admin访问,在地址后加/admin,用户名和密码都是a原创 2016-06-03 09:19:44 · 793 阅读 · 2 评论 -
Jedis源码解析——Jedis和BinaryJedis
1、基本信息先来看看他们的类定义:public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommands, AdvancedJedisCommands, ScriptingCommands, BasicCommands, ClusterCommands, SentinelCommands {原创 2016-09-04 20:24:28 · 6391 阅读 · 2 评论 -
四种类型的引用
从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。原创 2016-08-06 15:13:38 · 2166 阅读 · 0 评论 -
Kafka基本介绍
一、背景1、Why Kafka以ActiveMQ为例,和Kafka同属于Apache,发展前景都十分被看好。但两种的设计目标却各有侧重。ActiveMQ可以支持多种协议、事务等,但在吞吐量上,他的Forwarding Bridge机制一直被很多人吐槽。但Kafka侧重点在大数据、分布式应用,他可以支持动态扩容(通过zk)。Kafka是为分布式而生的,他主要来应对庞大的活动流数据。因此,强大的吞吐量是原创 2016-07-19 09:43:00 · 836 阅读 · 1 评论 -
理解BitSet
先来看几道面试题: 1、统计40亿个数据中没有出现的数据,将40亿个不同数据进行排序。 2、现在有1千万个随机数,随机数的范围在1到1亿之间,要求写出一种算法,将1到1亿之间没有在随机数中的数求出来。 3、有一个40G大小的文件,里面存的是32位正整数记录,我需要查找其中一个文件,问如何查找? ……有木有被上面的大大大数据吓到了无从下手啊?今天介绍的BitSet就原创 2016-07-27 17:52:47 · 4629 阅读 · 1 评论 -
HashMap为什么存取效率那么高?
1、Hash也叫散列、哈希。主要用于信息安全领域中的算法,把长度不同的信息转化为杂乱的128位的编码,找到一种数据内容与地址之间的映射关系。 注意:不同的输入可能会散列成相同的输出我们最熟悉的Object类中就提供了hashcode的方法。public native int hashCode();2、数据结构Java集合的实现底层大都是基本数据结构的又一层封装。数组:寻址容易,插入和删除困难链原创 2016-07-19 10:18:40 · 14064 阅读 · 1 评论 -
深入理解Tomcat
简介tomcat是一个web服务器,运行jsp和servlet,使用HTTP与客户端(通常是浏览器)进行通信。构成下图是tomcat的架构,可以看出:核心内容是Connector和Container组件。一个Server服务器中可能有多个Service,Service可以暂时理解为“服务”。Server负责管理Service的生命周期,让外界能够访问。Service将Connector和Contai原创 2016-06-14 14:59:07 · 8086 阅读 · 5 评论 -
负载均衡的常用算法
在集群中,假设有五台服务器,他们之间的地位相同(主备模式不是我们要讨论的内容),都对外提供服务。当浏览器大量请求到达时,如何决定哪个请求到达哪个服务器上,这就是我们这次讨论的核心内容。负载均衡的策略分为应用服务器和分布式缓存集群两种适应场景。为什么这么分呢?简单的说,应用服务器只需要转发请求就可以了。但分布式缓存集群,比如redis、Memcached等,更多的是需要再次读取数据的。也正是因为这样,原创 2016-07-22 17:02:25 · 1128 阅读 · 2 评论 -
JMS实战——ActiveMQ实现Pub-Sub
前言上篇博客《JMS实战——ActiveMQ》介绍了ActiveMQ的安装,并实现了简单的PTP模型。这篇博客我们来看一下Pub-Sub模型,之后来总结一下JMS。原创 2016-06-07 10:07:47 · 971 阅读 · 2 评论 -
java基础——反射
程序运行时,允许改变程序结构或变量类型的语言称为动态语言。java不是动态语言,但他有一个动态相关机制:Reflection反射。反射让java语言活了起来。在运行状态中:1)对于任意一个类,可以指定他的所有属性和方法; 2)对于任意一个对象,可以调用他的方法和属性。总结来说,动态获取信息以及动态调用对象方法的功能成为java反射机制。查看类信息每个类被加载后,系统原创 2016-05-23 09:31:37 · 471 阅读 · 2 评论 -
深入理解Java Web——Servlet
概述狭义上看,是java的一个接口。public abstract interface javax.servlet.Servlet { //初始化 public abstract void init(javax.servlet.ServletConfig arg0) throws javax.servlet.ServletException; //配置对象 public原创 2016-06-04 11:22:50 · 1980 阅读 · 1 评论 -
java线程(1)——三种创建线程的方式
1、接口实现更灵活,java不支持多继承。在这方面,Runnable和Callable更有优势。 2、返回值问题。Runnable和Thread都不能有返回值,但Callable可以,而且支持多种类型的数据。原创 2016-04-04 21:16:24 · 3214 阅读 · 5 评论 -
java线程(2)——模拟生产者与消费者
前言: 我们都听说过生产者和消费者的例子吧,现在来模拟一下。生产者生产面包,消费者消费面包。假定生产者将生成出来的面包放入篮子中,消费者从篮子中取。这样,当篮子中没有面包时,消费者不能取。当篮子满了以后,消费者不能一直生产。原创 2016-04-08 10:12:27 · 1443 阅读 · 5 评论 -
Jboss提示:Server already running on localhost
最近在做项目中,经常遇到JBoss报如下提示:Server already running on localhost。这时Jboss显示已启动,但页面显示不出来。提示中给出了两种解决办法,运行新的服务或者不运行,两种方法都试过了,但JBoss还是起不来。最后就上网查了查,其实JBoss和Tomcat都会遇到这样的问题。原创 2015-08-24 11:47:38 · 6064 阅读 · 22 评论 -
myEclipse如何将程序部署到tomcat(附录MyEclipse调试快捷键)
选中你要部署的项目,在工具栏找到单击Add,即出现如下界面。选择相应的Server,要和你在配置tomcat时选择的一致,这里我选择的是Tomcat 6.x。在选择完后,有时会出现以下文字。在你选择的部署路径下已经有一个程序了,原创 2015-06-29 20:39:15 · 1472 阅读 · 15 评论 -
【JAVA进阶】——myEclipse连接mysql启动数据库服务
1)Driver template 选择MySQL Connector/J2)Driver name 可以自定义取名。3)Connection URL 连接字符串,需要说明的是例子中 jdbc:mysql://127.0.0.1:3306/test,“127.0.0.1”也可写成“localhost”,“3306”为mysql默认的端口,“test”是所要连接的数据库名称。4)User name 连接数据库的用户名,mysql默认为“root”。5)Passwo原创 2015-06-07 16:46:20 · 1762 阅读 · 7 评论 -
启动Tomcat时的常见问题及解决办法
验证jdk的配置,在运行-cmd中输入 java -version即表示安装成功。找到jdk和jre的路径,配置JAVA_HOME,变量值为jdk的安装路径。JAVA_HOMED:\Program Files (x86)\Java\jdk1.6.0_10原创 2015-06-04 21:52:22 · 4340 阅读 · 13 评论 -
J2EE的十三个技术——EJB之实体Bean
实体Bean与会话Bean不同,实体Bean是持久的,即使应用程序结束,它仍然存在。它允许共享访问,具有主键。原创 2015-05-04 21:54:05 · 1068 阅读 · 7 评论 -
J2EE的十三个技术——EJB之概述
含义:企业级的JavaBeans(Enterprise JavaBean),其设计目标是部署分布式应用程序。EJB是J2EE的一部分,称为Java企业Bean,它把使用Java开发的服务器组件的部署和开发进行标准化。类型:主要有三种:会话bean,实体bean和消息驱动bean。其中会话bean又包含无状态会话bean和有状态会话bean。会话bean——完成一个清晰的解耦的任原创 2015-04-26 22:39:10 · 1641 阅读 · 20 评论 -
J2EE的十三个技术——EJB之消息驱动JMS
JMS定义的域1)点对点(point-to-point)一个生产者向一个特定的队列发布消息,一个消费者从中读取消息。在点对点的模型下,生产者知道消费者的队列,并直接将消息发送到消费者的队列。只有一个消费者获得消息,签收消息来表示成功处理。原创 2015-05-08 17:04:30 · 960 阅读 · 8 评论 -
J2EE的十三个技术——Servlet
基于协议的请求/响应服务的Java类。通俗的说,Servlet是在服务器上运行的小程序。为什么叫Servlet?Applet表示小应用程序,Server+Applet即为Servlet,表示小服务程序。原创 2015-04-24 22:33:36 · 1209 阅读 · 12 评论 -
J2EE的十三个技术——JSP
JSP Java Server Page,Java服务器页面。它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记,从而形成JSP文件,后缀名为(*.jsp)。 ◆解耦 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源原创 2015-02-25 16:40:03 · 1694 阅读 · 8 评论 -
J2EE的十三种技术——JNDI
背景:上一篇博客中介绍了J2EE的十三种技术之一——JDBC,主要用于提供了统一访问多种数据库的方式。这篇文章我们继续介绍J2EE的技术——JNDI。JNDI: Java Naming and Directory Interface,Java命名和目录接口。作为技术规范之一,它提供了一种标准的Java命名系统接口。它为开发人员提供了查找和访问各种命名和目录服务的通用、统一的原创 2015-02-06 19:39:08 · 1498 阅读 · 6 评论 -
JAVA中的使用Filter过滤器设置字符集
Filter是什么?Filter不是一个Servlet,它可以叫做Servlet链,它可以用来改变一个request,修改一个response。它虽然不能产生一个response,但可以在一个request到大Servlet之前预处理request,也可以在response离开Servlet时处理response。也可以说,Filter是对Request和Response请求进行了拦截。原创 2015-07-20 20:01:36 · 6701 阅读 · 18 评论 -
使用common-fileUpload实现文件上传
FileUpload上传一个文件的过程中可以分为三个部分:首先,客户端与服务器端建立连接,把要上传的文件生成request数据流。其次服务器端接收request流,将流缓存到内存或磁盘中。当文件过大时,文件将被缓存到内存,否则将被缓存到磁盘的临时文件。最后由服务器端的内存或是临时文件中把文件输出到指定的目录,这个目录才是指定的文件上传目录。原创 2015-08-13 20:37:28 · 5292 阅读 · 13 评论 -
Java中Model1和Model2
Model1结构简单,容易上手,适合一些小型的项目。但也正是由于他的这个优点,也带来了很大的弊端。他把业务逻辑和表现都杂糅到了一起,使得耦合度大大增加,给维护带来了很大的困难。尤其是在大型的项目中,这点就尤为突出了。Model2弥补了Model1 的缺点,在大型项目开发中,可以更好的做到多人协作开发,互不影响。原创 2015-08-18 11:12:43 · 2825 阅读 · 20 评论 -
【WebService】——契约优先
契约优先的方式虽然没有代码优先简单,但他有他的的优点。首先,契约优先与web服务的语言关联性不大,不受语言的限制。其次,如果先编写代码,如果服务编号,wsdl也要改变,然后重新发布接口服务,这样是十分不合理的。原创 2016-03-14 16:44:34 · 1603 阅读 · 2 评论