自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java内存构成

Java把内存划分为4个部分1. 代码区 1、栈区 3、堆区 4、静态存储区域和常量存储区域其中栈的存取速度是最快的,所以局部变量以及一些小型的数据都保存在栈区中,对象保存在堆区中。代码区:存储代码栈区:基础数据类型;方法的形式参数,直接在栈空间分配,方法调用完,由栈空间释放;引用数据类型,需要用new来创建,即在栈空间分配一个地址空间(引用),又在

2015-08-18 09:28:20 403

转载 java内存泄漏

Java内存管理机制在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了自己的优化,这就是垃圾回收机制。 Java 的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由 GC ( garbage 

2015-08-17 23:19:44 331

原创 java内存泄漏例子

看到一篇内存泄露的文章:文章中举了一个内存泄露的例子:Vector v = new Vector(100);for (int i = 1; i{Object o = new Object();v.add(o);o = null;}//文章中描述:  在这个例子中,循环申请Object 对象,并将所申请的对象放入一个Vector 中,如果仅仅释放引用本身,那么

2015-08-17 22:59:18 1580

原创 设计模式在ssh中的典型应用

单例模式:数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的。当然,使用数据库连接池还有很多其它的好处,可以屏蔽不同数据数据库之间的差异,实现系统对数据库的低度耦合,也可以被多个系统同时使用,具有高可复用性,还能方便对数据库连接的管理等等。数据库连接池属于重量级资源,一个应用中

2015-08-17 11:40:35 1764 1

转载 工厂模式Factory(创建型)

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。

2015-08-17 11:11:01 465

原创 java初始化顺序

类初始化时构造函数调用顺序:  (1)要初始化类 Dollar 的成员变量的默认值0、false、null;  (2)调用父类构造函数;  (3)按顺序分别调用要初始化类 Dollar 成员变量和实例成员变量的初始化表达式;  (4)调用本身构造函数。例子:public class Dollar extends Money{     Rmb r=new Rmb();

2015-08-16 17:15:30 610

转载 贝叶斯原理应用:过滤垃圾邮件

1、什么是贝叶斯过滤器?垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户。正确识别垃圾邮件的技术难度非常大。传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等。前者的过滤依据是特定的词语;后者则是计算邮件文本的校验码,再与已知的垃圾邮件进行对比。它们的识别效果都不理想,而且很容易规避。2002年,Paul Graham提出使用"贝叶斯推断"过滤垃圾邮件。他说,这

2015-08-15 21:16:52 6536 1

转载 简单工厂模式

在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么?        针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变代码。在这里我们希望能够

2015-08-15 17:32:29 468

转载 理解java的多态

面向对象编程有三大特性:封装、继承、多态。       封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。       继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:    

2015-08-15 16:26:04 481

转载 在hibernate+mysql:Field 'id' doesn't have a default value

使用注解@GeneratorValue,后台报错Field 'id' doesn't have a default value。 以下是model包下的User实体类,代码如下: package senlypan.spring.model;import javax.persistence.Entity;import javax.persistence.G

2015-08-14 13:44:10 1066 1

原创 mysql外键理解

一个班级的学生个人信息表:什么是外键在设计的时候,就给表1添加一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表。外键用来干什么为了一张表记录的数据不要太过冗余。这和软件工程的模块化思想差不多类似,只不过在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。就如你贴的图片中,把成绩和学生信息放在一张表中就太冗余了。为什

2015-08-14 11:45:43 721

转载 java中static{}语句块详解 Class.forName()方法

static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用。 一、在程序的一次执行过程中,static{}语句块中的内容只被执行一次,看下面的示例:示例一package Test;class JavaTest {    public s

2015-08-11 14:14:20 1232

转载 数据库Sharding的基本思想和切分策略

本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 一、基本思想      Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果

2015-08-10 15:52:39 443

转载 从输入网址到显示网页的全过程分析

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:

2015-08-10 14:49:07 914

转载 诸葛亮《诫子书》

夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。慆慢则不能研精,险躁则不能理性。年与时驰,意与岁去,遂成枯落,多不接世。悲叹穷庐,将复何及! —— 本文选自《诸葛亮集》。题目是后人加的。Ⅰ原文及译文,注释,鉴赏提示原文夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学

2015-08-10 14:45:24 1113

原创 C++与Java的语法区别

首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main 函数C++//自由浮动的函数int main( int argc, char* argv[]){    printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java 运行是一个特定类的主函数会被调用// (因此你可以让每个类都有一个

2015-08-10 14:43:27 378

转载 SQL的内连接与外连接

有两个表A和表B。  表A结构如下:  Aid:int;标识种子,主键,自增ID  Aname:varchar  数据情况,即用select * from A出来的记录情况如下图1所示: 表B结构如下:  Bid:int;标识种子,主键,自增ID  Bnameid:int  数据情况,即用select * from B出来的记

2015-08-10 14:15:23 459

转载 如何将character_set_database latin1 改为 gbk

原因:当初安装数据库是默认的编码是latin1编码(Latin1是ISO-8859-1的别名,有些环境下写作Latin-1)解决: 我是讲latin1编码改为gbk   ,,,如过你不是,我相信也差不多按照这写步骤。①首先进入到mysql暗转目录下,记事本打开my.ini文件将default-character-set=latin1    改为    default-cha

2015-07-29 14:14:47 1400

转载 tomcat服务器连接池知识

什么是敏捷开发简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。Tomcat中配置连接池步骤本方法的原理是,在%CATALINA%\conf\s

2015-07-08 16:28:48 616

转载 servlet的转发与重定向

转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。1、转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得;     以前的requ

2015-07-05 10:05:21 538

转载 sql多表查询实例

问题及描述:--1.学生表Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表 Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号--3.教师表 Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名-

2015-06-22 10:46:10 545

转载 指向指针的指针,彻底搞定C++指针

一. 回顾指针概念:今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6     7      8     9     10     11    12    13     14    15

2015-06-11 16:44:51 422

转载 如何使用java synchronized进行线程同步

在java编程思想中对synchronized的一点解释:1、synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对

2015-06-08 17:30:58 445

转载 单例模式

7.1 我是皇帝我独苗     自从秦始皇确立了皇帝这个位置以后,同一时期基本上就只有一个人孤零零的坐这个位置。这种情况下臣民们也好处理,大家叩拜、谈论的时候只要提及皇帝,每个人都知道指的是谁,而不用在皇帝前前面加上特定的称呼,如张皇帝,李皇帝。这一个过程反应到设计领域就是,要求一个类只能生成一个对象(皇帝),所有对象对它的依赖都是相同的,因为只有一个对象,大家对它的脾气和习性都非常了解,

2015-06-08 10:58:16 483

转载 Java并发编程:线程池的使用

在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以通过线程池

2015-06-01 11:03:11 430

转载 java学习方向及主要内容1

Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。 学习Java的第一步是安装好JDK,写一个Hello World, 其实JD

2015-05-28 13:35:45 604

转载 深入体验JavaWeb开发内幕——浅谈面向对象的设计模式

java是一种面向对象的编程语言,所谓面向对象,就是一个封装类的具体实现。那么面向对象的思想在JavaWeb开发中是如何体现的呢?尤其是面向对象的思想在JSP等技术中是怎样应用的呢?    一、面向对象设计模式             面向对象软件开发领域中,设计模式包括一些规则来完成一定任务。设计模式针对一些特定的问题,提出一种解决方案。     常用的面向对象设

2015-05-28 13:28:53 1122

转载 java学习方向及主要内容2

java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习:*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及; *第三阶段:j

2015-05-28 13:21:55 470

转载 调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。方法:设2个头尾指针begin和end, begin从头往前遍历,遇到奇数的话,说明这个数在在正确的位置,所以继续往前遍历直到遇到第一个偶数。同样end指针从后往前遍历,遇到偶数的话,说明这个数在正确的位置,所以继续往前遍历,直到遇到第

2015-05-21 20:32:10 375

转载 java常用设计模式

设计模式;一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案。在真正理解设计模式之前我一直在编写“简单”的代码.这个“简

2015-05-20 21:19:10 599

转载 Vector与ArrayList区别

在写java的时候,基本上都喜欢用arraylist,甚至我都不知道有个vector的存在。查了一下发现又是线程安全问题。。。咋个线程安全天天围着我转呢。。。多得阿里巴巴,让我开始认识java的所谓线程安全问题。the following is from:http://blessed24.javaeye.com/blog/7513361. Vector & ArrayList 

2015-05-20 11:36:20 439

转载 数据库调优的方法有那些

1.引言        数据库调优可以使数据库应用运行得更快,它需要综合考虑各种复杂的因素。将数据均 匀分布在磁盘上可以提高I/O 利用率,提高数据的读写性能;适当程度的非规范化可以改善 系统查询性能;建立索引和编写高效的SQL 语句能有效避免低性能操作;通过锁的调优解 决并发控制方面的性能问题。     数据库调优技术可以在不同的数据库系统中使用,它不必纠缠于复杂的公式和规则,然 而它需要对

2015-05-19 16:29:18 951

转载 二叉树中的三种遍历方式

对于二叉树:的几种遍历方式       1、先序遍历:先序遍历是先输出根节点,再输出左子树,最后输出右子树。上图的先序遍历结果就是:ABCDEF2、中序遍历:中序遍历是先输出左子树,再输出根节点,最后输出右子树。上图的中序遍历结果就是:CBDAEF3、后序遍历:后序遍历是先输出左子树,再输出右子树,最后

2015-05-18 19:07:02 1060

转载 快速排序算法

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速

2015-04-26 20:50:21 610

原创 oracle学习

1、把一些常见问题的问答分享一哈;    2、对学习路线的一个安排;    3、预期的结果展望。   1、Oracle数据库学习常见问题问答Question1:  Oracle数据库的书很难看懂,oracle真的很难学习吗?Answer1:    Oracle就是一个小软件,它把复杂的事情封装起来了,我们学习的是管理数据库.很简单.只要你掌握正确的学习方

2015-04-26 19:12:18 532

转载 Java集合类的使用

Java集合类的使用集合类按接口分为以下两类:Collection接口和Map接口Collection接口的特点    List 集合代表一个有序集合,允许集合中存在相同的元素,允许多个null 元素.    Set 集合不允许包含相同的元素, 并且最多包含一个null 元素。    Queue 模拟队列的数据结构,关注元素被处理时的顺序, 队列通常以F

2015-04-15 21:25:46 488

转载 Java 集合类详解

1.java集合类图1.11.2  上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。  发现一个特点,上述所有的集

2015-04-15 21:01:34 511

原创 java int与integer的区别

java.lang.Integer是一个类.对它的操作要通过类的方法 int是JAVA缺省的8中基本数据类型之一.不是类的对象.int是基本数据类型,Integer是对int进行了封装的一个类。 声明为int的变量不需要实例化,声明为Interger的变量需要实例化 int是基本类型,Integer是包装类,也就是类。Integer 是比int 更高级的

2015-04-15 10:39:03 545

转载 java中的main函数中args[]参数解析

args[] 在命令行运行时候输入的参数,因为参数可以为多个,所以要用数组来存,比如dos的copy命令:  copy c:\*.* d:\*.*  这就是两个参数c:\*.*和d:\*.*  java在命令行运行的时候要用到java命令:   java Test value1 value2  后面就是两个参数,在main里面args[]就是两个长度的数组val

2015-04-14 21:24:03 5448

转载 Java中的static关键字解析

Java中的static关键字解析  static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲:  一.static关键字的用途  二.static关键字的误区

2015-04-14 21:21:27 615

一个简单的directshow播放器

一个简单的基于mfc播放器,可以支持各种类型,利于初学者入门

2014-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除