自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ssh框架初体验

SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。       集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用H

2016-03-10 18:54:40 473 2

原创 mysql for mac

mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事。网上搜了一下,发现给的方法原来得手动去删。很多文章记述要删的文件不完整,后来在stackoverflow这里发现了一个遗漏的地方,所以将完整版记述在这里,以供查阅。先停止所有mysql有关进程。sudo rm /usr/local/mysqlsudo rm -rf /usr/local/mysql*

2016-01-06 16:49:13 501

原创 图解 TCP/IP 协议

本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便可建立连接。2)建立好连接

2015-12-19 15:18:08 409

原创 互联网协议入门

我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了

2015-12-17 17:13:51 463

原创 Struts2中的ModelDriven机制及其运用

为什么需要ModelDriven所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象。比如,有实体类User如下:public class User { private int id; private String username; private String password; private int age; private

2015-12-02 15:50:42 385

原创 Struts1和Struts2的Action之线程安全

我们先来简单回顾一下Servlet的生命周期“初始化->init->service->destroy->卸载”。这里大家都知道,我们在web.xml里面定义一个servlet的时候,我们可以给他们设置一个“load-on-startup” 的值,如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化,并且tomcat

2015-12-01 17:03:32 340

原创 工厂模式

Factory工厂设计模式为创建对象提供了一种抽象,而对使用者屏蔽了对象创建的具体细节过程,工厂模式有三种:简单工厂模式,抽象工厂模式和工厂方法模式。(1).简单工厂模式:又叫静态工厂模式,简单工厂只包括一个抽象产品类(该类可以是接口,也可以是具体的类),所有需要的产品类都是该抽象产品类的子类。简单工厂模式中工厂为具体产品工厂,产品为抽象产品,由工厂实例创建产品实例:一个生成圆

2015-09-23 11:04:13 342

转载 实习

写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布日期,才发现,我已经将近三个月没有更新博客了,多么惊人!为什么这么久?期间发生了很多事情。最重要的一件就是我大学毕业了!毕业的那么平淡,很多同学说,似乎一下子从学校出来,放下书本,略有不适应。而我却没有毕业的感觉,正如四年前一样,高中毕业,我同样没有毕业的感觉一样,对老师、同学的思念和不舍,总会在毕业以后才会涌现。

2015-09-17 21:45:21 544

转载 学习心得

转眼间,三年过去了,再过2个月就要迎来大学最后的一年。回想一下这3年的学习,总结一点,就是走了很多弯路,好在现在已经认识到了。为什么会走弯路呢?因为自己对某些知识存在很多错误的认识,比如说当年认为C语言不怎么重要,结果就没怎么好好学。以致于现在疯狂的往回补。弯路走的多了,自然就有经验了。在我看来,优秀的程序员=扎实的计算机基础知识+良好的数据结构和算法思想+自己最擅长的技术

2015-09-15 20:40:06 322

原创 数据库

数据库三范式1NF:每一列不可再分。2NF:非主属性非部分依赖于主关键字。(针对单个表来说的)3NF:属性不依赖于其他非主属性。(针对多个表来说的)

2015-09-14 21:12:56 551

原创 java nio

目录:一.java NIO 和阻塞I/O的区别     1. 阻塞I/O通信模型     2. java NIO原理及通信模型二.java NIO服务端和客户端代码实现 具体分析: 一.java NIO 和阻塞I/O的区别 1. 阻塞I/O通信模型 假如现在你对阻塞I/O已有了一定了解,我们知道阻塞I/O在调用InputStream.read()方法

2015-09-13 16:00:58 247

原创 位运算

按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;       即:两位同时为“1”,结果才为“1”,否则为0例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1。 另,负数按补码形式参加按位与运算。“与运算”的特殊

2015-09-12 12:43:16 240

原创 华为上机测试题(协议数据解析-java)

/** * 协议数据解析 描述:    * 某协议包括字段: 类型Type 一个字节;  命令字Command 一个字节; 端口号Port 2个字节;  * 结果Result 2个字节;  传输模式TransMode 2个字节; 上传速度RateUp 4个字节;  * 下载速度RateDown 4个字节;  * 说明:(1) 协议采用网络序  (2) 协议数据内容为内存16进制

2015-08-31 15:27:46 989

原创 华为上机测试题(数字字符串转二进制-java)

/**题目:数字字符串转二进制描述: 输入一串整数,将每个整数转换为二进制数,如果倒数第三个Bit是“0”,则输出“0”,如果是“1”,则输出“1”。题目类别: 位运算难度: 初级分数: 60运行时间限制: 10 Sec内存限制: 128 MByte阶段: 应聘考试输入: 一串整数,长度小于1024

2015-08-31 15:18:30 1943

原创 代理设计模式

Proxy代理设计模式是一种控制对象访问的设计模式,类似于网络代理,网络代理机制如下图:Proxy代理设计模式机制如下:代理模式UML图如下:

2015-08-31 10:32:41 581

原创 Java数组实现循环队列的两种方法

用java实现循环队列的方法:1、增加一个属性size用来记录目前的元素个数。目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满。2、数组中只存储数组大小-1个元素,保证rear转一圈之后不会和head相等,也就是队列满的时候,rear+1=head,中间刚好空一个元素;当rear=head的时候,一定是队列空了。impo

2015-08-29 15:58:57 2772

原创 java并发 lock锁

Java并发编程:Lock  在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。  也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐

2015-08-29 11:40:02 4057

原创 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列

2015-08-29 09:36:38 551

原创 ascii码表

第一部分:ASCII非打印控制字符表ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31) 第二部分:ASCII打印字符数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字127代表 DELETE 命令。(参详ASCII码表中32-

2015-08-20 00:10:57 1329

原创 java内存结构(运行时数据区域)

java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:其中方法区和堆是由所有线程共享的数据区。Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。(1).程序计数器:是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程

2015-08-19 23:31:06 700

原创 桥接模式(Bridge)

桥接模式(Bridge)桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了

2015-08-14 17:19:12 687

转载 cmd编译运行java程序

cmd编译运行java程序第一节:配置Java运行时环境本节以Windows XP为例,来配置Java运行环境。这节很简单,我就长话短说。1:下载JDK开发包,解压安装。2:在用户环境变量中增加PATH变量(在系统的环境变量中增加也行,但是可能需要重新启动操作系统),并设置其值。例如我把JDK安装在F:\program\java目录下,则把PATH变量设置成F:\progr

2015-08-07 14:37:32 1496

原创 java 单例模式

单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的

2015-08-06 16:38:25 329

原创 java String字符串

一String方法小结1>替换    String replace(char oldChar, char newChar);2>切割    String[] split(String regex);3>子串    String subString(int beginIndex);    String subString(int beginIndex, i

2015-08-04 11:11:07 372

原创 Java集合

一、背景知识1线性表是n个具有相同数据类型的有限序列(n>=0)。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。线性表按顺序存储分为顺序表,按链接存储分为链表。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 2顺序表:用一段地址连续的存储单元依次存储数据元素,通常用一维

2015-07-22 19:07:29 372 2

原创 探索 ConcurrentHashMap 高并发性的实现机制

简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代

2015-07-21 15:44:43 318

原创 深入理解HashMap

1.    HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2.    HashMap的数据结构:   在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,

2015-07-21 14:36:58 315

原创 java io流

Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是1

2015-07-20 15:46:07 392

原创 Java 内存分配浅析

Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域:寄存器:JVM内部

2015-07-20 10:29:56 358

原创 Servlet生命周期与Servlet容器

一Servlet容器响应客户请求访问特定的servlet的时序图二Servlet的生命周期  Servlet的生命周期可以分为三个阶段:初始化阶段、运行时阶段和销毁阶段1、初始化阶段包括四个步骤:(1)Servlet容器加载Servlet类,把他的.class文件读到内存中。(2)Servlet容器创建ServletConfig对象。(3)Servlet容器创建Se

2015-07-19 19:55:43 1052

原创 深入理解volatile关键字

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来

2015-07-13 15:50:21 593

原创 java加载class文件(类加载机制)

一概述:在编译期,所有的*.java文件被编译成.class文件。在运行期,class文件只有被加载到jvm内存中才能运行。这个装载工作是由类装载器完成的。实质就是把class文件从硬盘读取到内存中,并对数据进行校验,转化解析和初始化,最终形成可以被jvm直接使用的java类型。二类加载全过程

2015-06-23 15:23:29 3790

jxl读取Excel报表

jxl.jar包,以及网络读取Excel文件流所需jar包commons_fileupload,commons_io

2015-07-22

空空如也

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

TA关注的人

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