- 博客(80)
- 收藏
- 关注
原创 java并发编程概述
并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程就能让程序最大限度的并发执行。线程是java语言中重要的功能,它简化了复杂系统的开发。线程也被称为轻量级进程,在大多数现代操作系统中,都是以线程为基本调度单位的,而不是进程。 并发的简史:在早期的计算机中不包含操作系统,它们从头到尾只执行一个程序,并且这个程序可以访问计算机中的所有资源。这样不仅难以编写和运行程序,而且造成资
2017-06-21 18:47:17
339
原创 项目总结——1
老师交给的web项目终于结束了,这个项目前前后后时间长达六个月,主要是拖拖拉拉,人员变动等情况致使项目不能快速的进行。项目实际进行差不多为期三个月,终于实现基本功能,可以交付!但是目前为止,项目暂时没有上线,项目上线后,会将访问地址放到博客上。 首先介绍一下项目的整体情况:项目的名称为xxx大学java教学实践平台。项目是为了在校的学生打造的一个平台,在校的学生可以进行在线的学习,讨
2017-06-02 00:13:26
355
转载 关于http请求无状态无连接的理解
今天了解对http请求的无状态无连接有一定的疑惑。发现了一篇写的挺好的博客,转载:http://www.cnblogs.com/bellkosmos/p/5237146.html引子:最近在好好了解http,发现对介绍http的第一句话【http协议是无状态的,无连接的】就无法理解了:无状态的【状态】到底指的是什么?!找了很多资料不仅没有发现有一针见血正面回答这个问题的,而
2017-04-15 10:38:37
1987
转载 使用spring框架中的组件发送邮件的详细说明
原创作者:http://blog.csdn.net/caimengyuan/article/details/51224269在进行项目开发的时候,要做一个通过发送邮件验证码的功能来找回密码。spring发送邮件的过程这篇博客写的太好了。首先进入自己的QQ邮箱,在设置中修改账户信息然后来至底部 点击开启,再用手机发送对应信息到指定号码,然后点击我已发送获取
2017-04-13 09:32:03
9240
2
原创 使用jstl动态的显示几行几列的数据
前天想要完成一个功能,要求是:将从数据库中获取到的批量数据放入到List集合中,然后传送到jsp页面。jsp页面将数据以表格的形式显示在页面上,表格要求是每显示五条数据进行换行。博主使用了JSTL标签库中标签以及首先先了解一下这俩个标签[var="varName"] items="collection" [varStatus="varStatusName"] begin="
2017-03-18 17:42:22
1895
原创 java多线程(1)
最近阅读了高洪岩 著《Java多线程编程核心技术》,然后将内容与笔记记录下来,写成博客,书中主要是代码实践:第一章——java多线程基本概念以及常用api首先需要了解进程的概念:是操作系统结构的基础:是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程间的内存是独立的,可以将运行在内存中的
2017-03-16 23:18:27
256
原创 java实现栈
栈的定义及抽象数据类型: 栈(Stack):又称堆栈,它是运算受限的线性表,其限制是仅仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入,查找,删除等操作。表中进行插入删除操作的一端称为栈顶。 栈顶保存的元素称为栈顶元素。他有一个特性就是后进先出。 栈的实现方法也包括顺序存储实现以及链式存储实现。定义栈操作的接口:package 数据
2017-03-09 18:51:53
317
原创 java实现链接表
链接表: 1、基于节点的操作:在前面的对线性表抽象数据类型的操作中,其提供的操作主要是对线性表中的数据元素及其序号的。例如插入操作就是基于序号和元素进行的insert(int i,Object e); 是在序号为i的地方插入e,这种基于序号的操作实际上并不适合采用链表来实现,因为为了在链表中定位数据元素或序号,不得不沿着节点的引用,从链表前端开始扫描。它的时间复杂度O(n^2)。
2017-03-09 18:47:36
1156
1
原创 java实现线性表
线性表的定义:线性表是n个类型相同的数据元素的有限序列。线性表中元素的个数N定义为线性表的长度。当N为0的时候定义为空表,在非空的线性表中每个数据元素在线性表中都有唯一确定的序号。线性结构是最简单最常用的结构:线性结构的特点是:在数据元素的有限集中,除第一个元素无直接前驱,最后一个元素无直接后续外,每个元素有且仅有一个直接前驱和一个直接后续。所以线性表和数组有点类似,线性表与数组之间的
2017-03-08 18:40:02
377
原创 Java NIO —— Channel
Channel是java NIO中的通道,他类似于流,但是又有一些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。Channel的实现这些是Java NIO中最重要的通道的实现:FileChannel:FileChannel 从文件中读写数据。
2017-03-02 12:23:13
290
原创 自己实现一下ArrayList
java数据结构中数组列表,ArrayList的相关实现。package pac01;/*** 列表接口,定义一些列的操作**/public interface List{ //向列表的尾部添加指定的元素 public boolean add(T t); //在列表的指定位置插入新的元素 public void add(int index,T t); //将列表中的所有
2017-03-01 21:40:47
253
转载 java.lang.OutOfMemoryError: PermGen space及其解决方法
之前写了一个项目,运行了一小会就出现了一个错误:java.lang.OutOfMemoryError: PermGen space。感觉这个错出的很有意义。涉及到了JVM性能调优。经过一番折腾,分析原因,从网上寻找方法终于解决了,看到网上有一位大神写的博客很好,转载借用:博客地址:http://blog.csdn.net/fengyie007/article/details/1780375/
2017-02-26 08:46:58
198
原创 Spring使用@Autowired注解自动装配
在Spring中可以使用@Autowired注解通过setter方法,构造函数或者字段自动装配bean,此外,他可以在一个特定的bean属性自动装配。下面通过一个例子来实现通过@Autowired来进行自动装配1.首先配置俩个bean,建立俩个bean之间的关联关系。建立配置文件package com.hebeu.model;public class Person { p
2017-02-25 17:32:13
837
原创 Spring的自动装配Bean
Spring的自动装配功能的定义:无须在Spring配置文件中描述javaBean之间的依赖关系(如配置、)。IOC容器会自动建立javabean之间的关联关系。如果没有采用自动装配的话,手动装配我们通常在配置文件中进行实现:一下代码就是手动装配:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=
2017-02-23 21:28:59
1154
1
原创 Spring对JDBC的支持
Spring对JDBC提供了良好的支持。可以有效的简化开发。综述:大多数情况下Spring JDBC都与IOC容器一起使用。通过配置的方式使用Spring JDBC。而且大部分时间都是使用JdbcTemplate类(或SimpleJdbcTemplate和NamedParameterJdbcTemplate)进行开发。Spring JDBC通过DaoSupport来支持一致的数据库访问。
2017-02-22 19:36:09
263
转载 Spring配置多数据源实现数据库读写分离
之前一直想要实现通过Spring进行多数据源的配置,偶然发现一篇极好的博客!现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用
2017-02-22 08:26:27
408
原创 组合模式——composite
组合模式的使用场景: ——把部分与整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。组合模式的核心:——抽象构件(Component)角色:定义了叶子和容器构件的共同点。——叶子构件角色:无子节点——容器(Composite)构件角色:有容器特征,可以包含子节点。下面以杀毒的流程来模拟一下组合模式的实现:package
2017-02-20 23:56:05
265
原创 桥接模式——bridge
实现下面图的结构:我们可以使用多继承来实现但是如果要增加一个新的类型:则需要增加各个品牌下面的类,如果要增加一个新的品牌,也要增加各种电脑类型的类。这样会引起类的个数的增加。桥接模式核心要点: ——处理多继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个纬度可以独立的扩展在抽象层建立关联。如果按照多继承来实现上图应该是这样的:package
2017-02-18 22:02:11
232
原创 代理模式——proxy pattern
代理模式的核心作用是,控制对对象的访问,可以详细控制访问某个对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。这也是Spring中AOP(面向切面编程)的核心机制。代理模式分为静态代理以及动态代理: 静态代理【static proxy】:在静态代理中,代理对象与被代理对象必须实现同一个接口,完整保留被代理对象的接口样式,并且一直保持接口不变原则。代码实现:
2017-02-16 20:00:09
251
原创 适配器模式——Adapter
什么是适配器模式:就是将类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类在一起工作。举例说明:家里有一个俩口插座,而你的电脑是三只脚的插头。所以可以通过一个适配器,一端连接插座,一端连接插头,使电脑充电。适配器模式的作用就是这样的。所以可以看出,在这个模式中只要三个角色:——目标接口(Target):客户所期待的接口。目标可以是具体或
2017-02-14 22:47:43
214
原创 关于java web项目中WEB-INF目录下页面的访问问题
在java web项目部署到服务器的以后,项目的目录结构是WebContent下的所有文件夹。如果将jsp/html页面放到WEB-INF目录外面,可以直接请求这个页面。但是多数情况下我们会将页面放到WEB-INF目录下。页面放在WEB-INF目录下,这样可以限制访问提高安全性。web-inf目录下的文件只能通过请求转发来访问,不能通过页面重定向访问。 在web项目开发过程
2017-02-14 20:40:46
10498
原创 原型模式——prototype
原型模式:—— 通过new产生一个对象需要非常繁琐的数据准备和访问权限,则可以使用原型模式。—— 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然新的对象具备原型对象的特点—— 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值与原型对象完全相同,并且克隆出的对象的改变不会影响原型对象。原型对象的实现:——Clon
2017-02-12 21:54:18
206
转载 阿里面试回来,想和java程序员聊聊
【本文完全转载,写的超好,自己真垃圾啊】【转载路径:http://www.banzg.com/archives/679.html】引言其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。
2017-02-10 22:12:29
565
原创 建造者模式——Builder Pattern
建造者模式的本质:分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责装配)。从而构造出复杂的对象:这个模式的适用于:某个对象的构建过程复杂的情况下使用。由于实现了构建和装配的解耦。不同的构建器、相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。下面参考一下代码看看建造者模式
2017-02-10 21:35:44
490
原创 Spring的IOC
Spring框架可以对Java Bean的处理进行有效的规划,比如创建、销毁,还可以动态的对一个属性进行注入,通过使用Spring的IOC容器,使软件项目对Java Bean的管理更加统一和方便。IOC的介绍全称:Inversion of Control中文解释:依赖注入。暂时可以理解为:IOC容器就是为了管理bean,创建bean的一个内存区,在这个内存区可以将操作bean的代码以面向接
2017-02-09 14:47:49
233
原创 Struts2中的ValueStack详解
ValueStack的生命周期ValueStack的是保存着request的请求域中的,因此它的生命周期与request的生命周期是相同的。
2017-02-08 18:05:09
4680
原创 工厂模式——Factory Pattern
工厂模式就是实现了创建者与调用者的分离,详细又可以分为一下三类:简单工厂模式【Simple Factory】工厂方法模式【Factory Method】抽象工厂模式【Abstract Method】
2017-01-17 15:55:37
243
原创 jvm中的垃圾收集算法
Java虚拟机会回收已经失效的对象,判断对象是否失效使用的是可达性分析算法,那么JVM是对失效的对象的回收过程是怎样做的呢,它的算法实现是怎样的呢?【本人现能力不足,只能理解这几种回收算法的思想,无法写出它们的代码实现,如果可以,本人将在后续完成它的代码实现】标记——清除算法标记清除算法是最基础的收集算法,它的执行过程分为俩步:标记、清除。首先是要标记出所有可以被回收的对象
2017-01-16 18:59:45
390
原创 Spring 4MVC下实现文件的上传下载
在Spring 4MVC中实现文件的上传下载很简单,如同使用struts2实现文件上传下载一样。首先实现单文件的上传:新建的jsp文件<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 文件上传
2017-01-16 15:17:53
257
原创 单例模式——Singleton Pattern
单例模式的核心作用就是保证一个类只有一个实例,并提供一个访问该实例的全局访问点【即提供一个public方法获取该实例】。应用场景:Windows中的任务管理器项目开发中,读取配置文件的类通常也是单例模式。网站的计数器通常使用单例模式,否则不容易实现同步数据库的连接池的设计一般采用单例模式。在Spring中,每个Bean默认就是单例的,Spring MVC中,控制器对象也是单例的。Ser
2017-01-14 23:32:48
384
原创 java中的垃圾收集器
java语言的内存运行时区域实际上分为俩种:一种是线程共享区域,一种是线程独占区域。线程独占的区域包括程序计数器、虚拟机栈、本地方法栈3个区域,这三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行出栈和出栈操作。线程共享
2017-01-13 23:59:51
265
原创 Spring 4MVC在控制层传回JSON字符串
直接上代码:控制层:package package1;import java.util.ArrayList;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframew
2017-01-13 21:13:11
918
原创 Spring 4MVC框架下在后台解析JSON数据
简述json格式的数据应用越来越广泛,结合ajax技术,经常作为前后台数据交互的一种格式。前台会将json格式的数据发送给后台,后台也会将json格式的数据返回给前台。后台处理json格式的数据使用的是java等语言,而前台处理json数据使用的是js脚本语言。下面的小案例是在Spring 4mvc框架下,后台处理前台发送的json格式的数据。方法一首先在web.xml中配置编
2017-01-13 10:57:17
432
原创 论坛设计——多个用户上传文件的后台设计问题
功能描述:在设计论坛时用户要发帖,用户会向帖子中插入图片,插入图片的流程是:用户先上传图片到服务器,然后将服务器中图片的路径添加到帖子中。那么有一个问题,用户会将要发布的图片上传到服务器的文件夹,然后将路径放到帖子的内容中。论坛中有很多用户,每个用户都会发帖都会上传各种文件、图片资源。那么服务器端如何存储用户上传的文件呢??就是如何设计文件的存储结构呢??能想到的方法有俩种:为每个用户
2017-01-12 17:34:50
1888
原创 java设计模式——综述
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池
2017-01-11 23:52:22
195
原创 Spring 4MVC简单操作实现登录
这里简单的使用一下Spring 4MVC框架。Spring 4MVC相较于Struts2,避免了Struts2的种种缺点,在功能及代码效率上进行了增强与优化与增强。这里使用Spring 4MVC实现简单的登录功能【基于注解】。开发环境是:Ecplise + jdk1.7 +tomcat7.0 + Spring4MVC首先下载Spring 4MVC所必须的jar包:官方网站是:spring官
2017-01-11 23:22:11
304
原创 StrutsRequestWrapper详解
查看一下StrutsRequestWrapper的源代码,本人将其中的英文注释转为中文package org.apache.struts2.dispatcher;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import com.
2017-01-11 17:17:33
3840
原创 OutOfMemaryError异常
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。java堆溢出 java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量达到最大容量限制后就会产生内存溢出异常。 例如:public class HeapOOM { st
2017-01-10 22:01:14
1116
原创 java虚拟机中的对象
对象的访问定位建立对象是为了使用对象,我们的java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方法也取决于虚拟机实现而决定的。目前主流的访问方式有使用句柄和直接指针俩种。使用句柄:java堆中会划分出一块内存
2017-01-08 21:04:34
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人