- 博客(44)
- 收藏
- 关注
原创 Java邮件发送的简单实现
java邮件发送:利用现有的邮件账户发送邮件,比如说,我在网易注册一个邮箱账户,通过JAVA操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。实现: 1.JavaMail 可以到http://www.oracle.com/technetwork/java/javamail/index-138643.html进行下载,并将mai
2015-12-24 21:12:12
944
原创 Springmvc访问静态资源
最近写项目的时候,前后台交接的总是找不到对应的js,css,image文件.出现的原因在此(web.xml): 这样写的话,所有的请求都被springmvc处理了,静态资源你没有写controller的话自然就找不到.=_=解决: 1.激活Tomcat的defaultServlet来处理静态文件 在web.xml中添加:<servlet-mapping> <servlet-name>
2015-12-24 20:40:28
677
原创 Java Web中资源的访问路径
在web应用中,以“/”开头的是绝对路径,不以“/”开头的是相对路径。在服务器端,通常都使用绝对路径.服务器端的“/”等同于:http://localhost:8080/day01。(day01为工程名)在客户端,可使用绝对路径,也可使用相对路径。但是客户端的绝对路径与服务器端的绝对路径中的“/”代表的意思是不同的。 客户端的“/”等同于:http://localhost:8080/。(它是不带工
2015-12-24 20:14:37
861
原创 红黑树
红黑树的简介R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则
2015-12-04 21:25:02
599
原创 平衡二叉树(AVL)
上一篇我们聊过,二叉查找树不是严格的O(logN),如果找到一种方法,使得二叉查找树不受输入序列和插入结点等的影响,始终保持平衡状态,从而达到很好的检索效率.平衡二叉树就是基于此目的而产生的.定义:平衡二叉树或为空树,或为如下性质的二叉排序树(平衡二叉树是一种特殊的二叉排序树): (1)左右子树深度之差的绝对值不超过1; (2)左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度
2015-12-04 17:36:22
668
原创 二叉排序树
构造一棵二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除的效率。那么什么是二叉排序树呢?二叉排序树具有以下几个特点: 1,若根节点有左子树,则左子树的所有节点都比根节点小; 2,若根节点有右子树,则右子树的所有节点都比根节点大; 3,根节点的左,右子树也分别为二叉排序树.插入 思路:首先查找待插入的记录是否在树中,如果存在则不允许插入重复关键字;如果直到找到叶子结点
2015-12-04 16:14:37
4826
原创 浅谈java装饰模式
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例.Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:public interface Sourceable { public void method();}public class Source i
2015-11-17 19:48:10
695
原创 浅谈java适配器模式
基本概念: 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式在上图中可以看出,Adaptee类并没有sampleOperation2()方法,而客户端则期待这个方法。为使客户端能够使用Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的A
2015-11-17 19:30:22
586
原创 JDBC 连接数据库
创建一个以jdbc连接数据库的步骤如下: 1.加载jdbc驱动程序在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql
2015-11-17 19:05:54
405
原创 Java抓取360网页手机助手评论
最近在看java多线程,多看不如一敲,索性就爬取一些数据量较大的信息吧.题目大意:在取360网页手机助手里面抓取某类软件的前几十个排名的软件的全部评论.例如:获取数据的xml格式如下:<?xml version="1.0"?><app> <appid>优酷</appid> <allcomments>53268</allcomments> <comment>
2015-11-13 11:09:52
1208
原创 Mybatis 忘记session.close(),导致页面加载特别缓慢的问题
这几天在写一个项目,出现的问题如下: 当点击页面几次之后就会出现加载特别特别缓慢的情况. 找来找去,是感觉哪里都对对的,在小伙伴的提示下,恩,session.close()忘记写了==,我也是醉了.原因: 不关闭session的后果是,随着系统的运行,数据库连接数将逐渐增多,最终导致数据库拒绝连接。 数据库拒绝连接后,重新启动应用,原有连接将释放,此时应用又可正常运行。
2015-11-13 09:42:10
1578
原创 The method getDispatcherType() is undefined for the type HttpServletRequest解决办法
我和小伙伴一起做一个项目,我从他的github上clone代码到自己机器运行出现就会出现这个错误,但在他的机子上却是好好地.后来检查出来是因为tomcat版本不一致,我用的8.0.27,他是8.0.23 装了8.0.27的tomcat之后就好了.
2015-11-13 08:33:09
1413
原创 任? 时光匆匆......
今天晚上参加软件科技协会的纳新,想起了自己在软协的那一年,那些人,那些事... 那年我们误打误撞加入了那个大家庭,在那里有我们的嬉戏打闹,在那里有我们的通宵汗水,在那里有学长学姐的淳淳教诲... 在那里刷过ACM,而如今呢?,想想真是惭愧 如今,身在小组,这么好的氛围,那么多牛皮的大神,那么多辛勤的背影,那么多的一幕幕... **骚年,加油吧!!!**
2015-11-12 22:06:23
405
转载 Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一
2015-11-08 11:01:12
513
转载 Java并发编程:Lock
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺
2015-11-08 09:50:17
416
转载 Java并发编程:synchronized
虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.synchronized同步方法或者同步块 若有不正之
2015-11-08 09:37:00
443
翻译 Linux下使用dosemu编写汇编程序
一.ubuntu下安装dosemu (同类软件还有dosbox)模拟Dos环境sudo apt-get install dosemu运行sudo dosemudosemu 下看到的C盘和D盘只是虚拟出来的,对应的目录在~/.dosemu/drives 下: dos 下用到的程序放置在 ~/.dosemu/drives/d/bin 目录下 dosemu 已经自带了debug,若要编译汇编代码
2015-10-30 17:21:54
2599
原创 Linux命令-重定向和软硬链接
echo 功能说明:显示文字. 语 法:echo [-ne][字符串] 或 echo [–help][–version] 参数: -n 不要在最后自动换行 重定向 >是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用>,将日志文件清空(文件大小变成0字节); >>这个是将输出内
2015-10-30 17:02:30
4024
原创 浅谈Java的标识接口-cloneable
为什么对对象进行克隆 谈到了对象的克隆,就不得不说为什么要对对象进行克隆?Java中所有的对象都是保存在堆中,而堆是供全局共享的。也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来)。有的时候,我们编写的代码想让调用者只获得该对象的一个拷贝(也就是一个内容完全相同的对象,但是在内存中存
2015-10-29 17:37:04
1586
原创 浅谈Java的标识接口-Serializable
为什么java中有些interface没有任何方法? 在Java语言中,有些接口内部没有声明任何方法,也就是说实现这些接口的类不需要重写任何方法,这些没有任何方法声明的接口又被叫做标识接口,标识接口对实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明实现它的类属于一个特定的类型。这个标签类似于汽车的标志图标,每当人们看到一个汽车的标志图标时,就能知道这款汽车的品牌。Java类
2015-10-29 08:58:31
7961
原创 JVM学习笔记-垃圾回收器
什么是垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation)、自动回收(Garbage Collect)功能,这两个操作都发生在Java堆上(一段内存快)。某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live),否则死亡(Dea
2015-10-27 19:35:40
653
转载 JVM学习笔记-jvm内存区域模型
JVM内存区域模型 1.方法区 也称”永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。 运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编
2015-10-27 15:29:46
540
转载 JVM 学习笔记-java程序编译和运行的过程
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. Java程序从源文件创建到程序运行要经过两大步骤: 1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。 因为java程序既要编译也要经过JVM的解释运行,所以说Java被称为半解释语言.下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如
2015-10-27 15:17:53
3010
原创 浅谈Java重载和重写
对于重载到底读chongzai还是zhongzai呢?当然是各有各的读法. 读 重(chong)载:函数被重复多次载入,表现多态性; 读 重(zhong)载:相对于c语言中的函数被过多的载入,也符合overload 的直译;所以还是看大家的习惯了,毕竟这只是一种称呼,重要的还是理解其用法. 昨天晚上一个学弟问我重写对返回值有限制么,那我为什么重写tostring()返回void也行?然后我习
2015-10-27 10:33:14
685
原创 Mysql分页-Limit
一.Mysql 的Limit用法 在我们使用查询语句的时候,经常会返回一部分,即按页返回. mysql已经为我们提供了这样一个功能.SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定
2015-10-25 18:08:21
534
原创 动态规划-最长公共子序列
一.基本概念 最长公共子串:子串在原字符串中是最长且连续的. 最长公共子序列:子串在原字符串中是最长且可以不连续的.二.解题步骤 按照上一篇动态规划的解题步骤: 1)找出最长公共子序列的结构 设序列X = {x1,x2,…xm}和Y = {y1,y2,…yn}的最长公共子序列为Z = {z1,z2,…zk},则: 若Xm = Yn,则Zk = Xm = Yn,且Zk-1是Xk-
2015-10-25 14:50:54
405
原创 动态规划
一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二.基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有
2015-10-25 14:16:27
472
原创 浅谈计算机中的存储模型-(虚拟存储)
前面所介绍的各种存储管理方式有一个共同的特点,即他们要求将一个作业全部装入内存后方能运行,于是出现了以下情况: 1>有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入,致使作业无法运行 2>有大量作业要求运行,但由于内存容量不足,只能将少数作业装入内存,而其他大量的作业留在外存等待. 一个办法就是从物理上增加内存容量,但往往会受到机器自身的限制,另一种
2015-10-25 10:19:25
648
原创 浅谈计算机中的存储管理-(物理内存)
1.物理内存的划分 1)等长分区划分:将内存等长划分,然后选择一部分给进程(分页) 2)不等长分区划分:进程需要多少给它划分多少(分段) 分页就是将内存分为等块等块的,在虚拟内存中称为页,在物理内存中成为页框或者块. 分段就是将内存分为不同段区域. 2.物理内存的管理 1)等长分区管理:位图 位图(bit
2015-10-24 22:23:45
1200
原创 浅谈计算机中的存储管理-(整体结构)
最近操作系统学到了存储管理这一章节,再加之前一段实验室的小伙伴刚分享了他对这方面的理解,现在回头看看很多困惑都想清楚了.1.基本概念逻辑地址:相对于程序(即进程)的偏移地址;线性地址:逻辑地址到物理地址变换之间的中间层(即逻辑地址+段基址)物理地址:出现在CPU外部地址总线上的寻址物理内存的地址虚拟内存:指计算机呈现出要比实际拥有的内存大得多的内存量(给人的感觉)MMU:中文名是内存管理
2015-10-24 21:14:25
751
原创 IntelliJ IDEA SpringMVC+Mybatis初整合
自己一直有个错误的理解(springmvc是ssh的另一种叫法),不知道有没有和我一样的,其实springmvc和struts的功能对应着.=_=学习任何东西,感觉初次写的时候配置特别麻烦,所以特意记录下来,以供参考.1.命名过程 注:具体的maven环境配置请参考2.配置过程 pom.xml <properties> <spring.version>4.1.1.RELEASE<
2015-10-24 17:19:14
2247
原创 IntelliJ IDEA 创建第一个Mybatis工程
暑假的时候学习SSH三大框架,记得花了整整一个暑假才把他们学完,后来接触了Mybatis,听说易上手,所以就学习学习.,简单总结一些两者的区别吧:1.两者最大的区别:针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关
2015-10-24 16:50:53
25747
3
原创 浅谈Java的==、equals()、hashcode()
一道题引发的血泪史 Long a1 = Long.parseLong("100"); Long a2 = Long.parseLong("100"); System.out.println( a1 == a2); Long b1 = Long.parseLong("200"); Long b2 = Long.parseLong("200"); Syst
2015-09-16 00:05:20
624
原创 Spring 的ClassPathXmlApplicationContext()路径读取错误
最近在学习Spring,由于所用的IDE是intellij idea,而网上的资料基本都是MyEclipse,在刚开始创建项目,特别是写第一个项目的时候得需要自己好好探索一番。。。(回归正题^_^) // ClassPathXmlApplicationContext 是读取 src 目录下的配置文件 ApplicationContext app=new ClassPathXm
2015-08-19 10:59:39
1767
原创 浅谈Java工厂模式
一. 概念 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。(工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。) 二. 分类 工厂模式在《Java与模式》中分为三类: 1)简单工厂模式(Simple
2015-08-18 20:53:49
1024
转载 浅谈Java单例模式
单例模式分三种:懒汉式单例、饿汉式单例、登记式单例 单例模式有以下特点: 1、单例类只能有一个实例; 2、单例类必须自己创建自己的唯一实例; 3、单例类必须给所有其他对象提供这一实例;//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { //私有的默认构造子 private Singleton1() {
2015-08-18 16:25:37
510
原创 浅谈Java代理模式
在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以就简单的了解了一下下...代理:代理模式是常用的java设计模式,特征是代理类与委托类有同样的接口
2015-08-18 15:20:36
645
原创 浅谈Java反射机制
1.什么是Java反射 要让Java程序能够运行,就得让Java类被Java虚拟机加载。Java类如果不被Java虚拟机加载就不能正常运行。正常情况下,我们运行的所有的程序在编译期时候就已经把那个类被加载了。 Java的反射机制是在编译时并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用的是在编译期并不知道的类。这样的编译特点就是java反射。2.Java反
2015-08-17 19:51:49
684
转载 Linuxc 文件操作讲座知识
相比于书上的示例,讲座提到的知识会深入一点,这里参考一些大牛的博客加深理解^_^!Inode节点:http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 文件描述符:http://blog.youkuaiyun.com/cywosp/article/details/38965239 mode和umask:http://blog.csdn.n
2015-07-25 00:02:19
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人