5.设计模式-工厂模式
旧日堂前燕,和烟雨,又双飞。人自老,春长好,梦佳期。
——韩元吉《六州歌头》
[TOC]
设计模式-工厂模式
工厂模式适合场景:
如果你和你对象去饭馆吃饭,如果没有服务员(工厂类),点菜怎么点?
餐馆的菜单方便客人更改吗?
凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂模式进行创建。
1. 工厂模式在 JDK-Calendar 的应用
工厂方法模式
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859// 第一步创建Calendar对象 Calendar calendar = Calendar.getInstance();// 第二步调用getInstance()方法(抽象类Calendar)public static Calendar getInstance(){ return createCalendar( TimeZone.getDefault(), ...
6.IO流之缓冲流
自许封侯在万里。有谁知,鬓虽残,心未死。
——陆游《夜游宫》
[TOC]
IO流之缓冲流
缓冲流是一个更强大的流,能够高效读写。另外也有能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,相当于是对基本流对象的一种增强。
缓冲流与普通流对比,缓冲流一次默认读写8192个字节,普通流通过数组来读取的时候通过设置适当的数字字节长度可以达到比缓冲流还要高效,但是缓冲流也可以改变缓冲区的默认值和,每次搬运的字节数,缓冲流更灵活。
1. 缓冲流概述
缓冲流是对FileOutputStream/FileInputStream/FileWriter/FileReader流的增强,所以也是4个流,按照数据类型分类:
字节缓冲流: BufferedInputStream/BufferedOutputStream
字符缓冲流: BufferedReader/BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,等凑够了缓冲区大小的时 ...
6.JVM程序计数器
悲欢离合总无情。一任阶前、点滴到天明。
——蒋捷《虞美人》
JVM-程序计数器
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。
这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。
它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefined)。
它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作时就是通过改变这个计数器的 ...
6.MySql高级之存储引擎
何日请缨提锐旅,一鞭直渡清河洛。却归来、再续汉阳游,骑黄鹤。
——岳飞《满江红》
## MySql高级之存储引擎
1. 存储引擎概述
和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。
Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。
MySQL5.0支持的存储引擎包含 : InnoDB 、MyISAM 、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎是非事务安全表。
可以通过指定 show engines , 来查询当前数据库支持的存储引擎 :
创建新表时如果不指定存储引擎,那么系统就会使用默认的存储引擎,My ...
6.Set接口及其实现类
可怜人意,薄于云水,佳会更难重。
——晏几道《少年游》
Set接口及其实现类1. Set接口介绍
java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了。
与 List 接口不同的是, Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。
Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals() 方法。
Set集合取出元素的方式可以采用:迭代器、增强for。
Set 集合有多个子类,这里我们介绍其中的 java.util.HashSet 、 java.util.LinkedHashSet、java.util.TreeSet 这三个集合。
2. Set接口的主要实现类2.1 HashSet集合☆
java.util.HashSet 是 Set 接口的一个典型实现类,它所存储的元素是不可重复的,集合元素可以为null,线程不安全, ...
6.JavaScript原型对象
[toc]
前端–JavaScript 原型对象1. 原型对象
原型对象:
构造函数创建对象的时候,会在堆内存中开辟一块空间,将属性和方法存储在当前的区域中,当创建一个新对象的时候,又会开辟一个新的空间。如果像 一些常用或者说公共的函数或者属性,都是这么存储的话,会浪费大量的内存空间。
原型对象是一块公共的存储空间。可以将一些相同的属性和方法都存储在该区域中,当实例化对象的时候,可以调用存储在原型对象中的公共的方法和属性。
实例对象,构造函数,原型对象之间的关系:
构造函数实例:封装的函数,如果通过new操作符来调用的,就是构造函数,如果没有通过new操作符来调用的,就是普通函数。
~~~~javascriptvar person = new Person(‘Mike’,10); // 此时的person称为Person的一个实例对象
12345678910111213141516171819202122232425262728293031323334353637383940 - 函数Person(对象)有个属性prototype(指针)指向原型对象。 `Person. ...
6.CSS标签显示模式
[toc]
标签显示模式(display)
标签的三种显示模式
三种显示模式的特点以及区别
理解并实现三种显示模式的相互转化
1. 什么是标签显示模式
什么是标签的显示模式?
标签以什么方式进行显示,比如div 自己占一行, 比如span 一行可以放很多个
我们网页的标签非常多,再不同地方会用到不同类型的标签,以便更好的完成我们的网页。
标签的类型(分类)
HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素。
2. 块级元素(block-level)1常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。
块级元素的特点:
比较霸道,自己独占一行。
高度,宽度、外边距以及内边距都可以控制。
宽度默认是容器(父级宽度)的100%。
是一个容器及盒子,里面可以放行内或者块级元素。
注意:
只有文字才能组成段落。因此 p 里面不能放块级元素,特别是 p 不能放div 。 ...
7.IO流之转换流
往事悠悠君莫问,回头。槛外长江空自流。
——王安石《南乡子》
IO流之转换流1. 字符编码和字符集字符编码字符编码 Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。
计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
字符集字符集 Charset :是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。
计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。
可见,当指定了编码,它所对应的字符集自然就指定了,所以编码才是我们最终要关心的。
了解内容
ASCII字符集 :
ASCII(American ...
7.JavaScript正则表达式
[toc]
前端–JavaScript正则表达式
JavaScript诞生的目的:验证表单的合法性。验证数据的合法性,还可以使用正则表达式。
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
i 是忽略大小写
| 或的意思
[]或 [abc] 表示的是a或者b或者c,代表一个字符。
[a-z] 表示小a-小z中的任何一个
[A-Z] 大A-大Z中的任何一个
[0-9] 表示任意数字中的一个。
^ 在[]中表示取反。
() 分组
^ a以a开头
{m} 表示连续出现m次
{m,} 连续m以及大于m此
{m,n} 连续出现m到n次
? 0次或者1次
* 0到多次
+ 1到多次
1234567891011121314151617181920212223<script> var reg = new RegExp("d", "i");//字符串包含d,忽略大小写。 reg = new RegExp("cd");//z字符串包含cd,不忽略大小写。 reg = new ...
7.CSS背景和行高
[toc]
[toc]
CSS背景和行高1. CSS 背景(background)
背景的作用
css背景图片和插入图片的区别
通过css背景属性,给页面元素添加背景样式
能设置不同的背景图片位置
1.1 背景颜色(color)12/* 默认的值是 transparent透明的 */background-color:颜色值;
1.2 背景图片(image)1background-image : none | url
参数
作用
none
无背景图(默认的)
url
使用绝对或相对地址指定背景图像
1background-image : url(images/demo.png);
小技巧: 我们提倡 背景图片后面的地址,url不要加引号。
1.3 背景平铺(repeat)1background-repeat : repeat | no-repeat | repeat-x | repeat-y
参数
作用
repeat
背景图像在纵向和横向上平铺(默认的)
no-repeat
背景图像不平铺
repeat-x
背 ...