基础
文章平均质量分 76
-Hermes-
Stay hungry, Stay foolish.
展开
-
学习Java需要知道的事情
这是我的第一篇博客,希望借此打下良好的基础与习惯。经常记录自己的所学,不求帮助别人,只求勉励自己语言起源Java是SUN ( Stanford University Network 斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。Java名称的来源Java最初被命名为Oak,目标在于家用电器等小型系统的编程语言,随着市场的变化,SUN着眼于网络应用的开发。Java的名原创 2016-07-03 08:25:23 · 534 阅读 · 0 评论 -
设计模式--单例模式(十)
单例模式:确保一个类只有一个实例,并提供一个全局访问点; 知识点的梳理: 在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量;确定在性能和资源上的限制之后,在选择合适的方案来实现单例,以解决多线程的问题;如果使用多个类加载器,可能导致单例实现而产生多个实例; 为什么需要独一无二的对象? 有一些对象其实我们只需要一个,比如:线程池原创 2017-07-15 14:33:33 · 758 阅读 · 0 评论 -
设计模式--单例模式(简要)(十一)
单例模式知识点梳理: 1.一个类只能产生一个对象,就是单例模式;2.饿汉式在类一加载就创建对象;懒汉式在用的时候才去创建;推荐使用饿汉式;一.单例设计模式概述单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供。如何保证类在内存中只有一个对象呢?A:把构造方法私有B:在成员位置自己创建一个对象C:通过一个公共的方法提供访问二.优缺点:原创 2017-07-15 14:34:49 · 662 阅读 · 0 评论 -
设计模式--抽象工厂模式(八)
目录:注意,此模式涉及的示例,来自于工厂模式笔记 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类; 知识点的梳理: 抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中;抽象工厂创建相关的对象家族,而不需要依赖它们的具体类; 再回到比萨店。。。 现在我们需要确保每家加盟店使用的原料都是高质量的。现在打算建原创 2017-07-10 09:16:26 · 560 阅读 · 0 评论 -
设计模式--外观模式(十二)
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 知识点的梳理: "最少知识"原则:只和你的密友谈话;当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观;外观将客户从一个复杂的子系统中解耦;实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行;可以为一个子系统实现多个外观;原创 2017-08-03 20:57:31 · 601 阅读 · 0 评论 -
重构原则(一)
知识点的梳理: 重构(名词定义):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本;重构(动词定义):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构;在添加新功能时,不应修改现有代码,只管添加新功能;在重构时,不能添加新功能,只管改进程序结构; 何时重构? 三次法则:第一次做某件事时只管去做;第二次原创 2017-08-03 20:58:05 · 1229 阅读 · 0 评论 -
哪些代码需要重构(二)
Duplicated Code(重复代码) 常见的重复代码出现场景:同一个类的两个函数含有相同的表达式:提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码;两个互为兄弟的子类内含有相同表达式:对这两个类进行提炼函数,再将提炼出的代码上移,放入超类:如果代码之间只是类似,并非完全相同,那么就将相似部分和差异部分分割,构成单独一个函数;如果有些函数以不同的算法原创 2017-08-06 13:18:08 · 976 阅读 · 0 评论 -
重构,第一个案例(三)
知识点的梳理: 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性;重构的节奏:测试,小修改,测试,小修改,测试,小修改...重要的事情说三遍; 案例描述 此实例是一个影片出租店使用的程序,计算每一位顾客的消费金额并打印详单;操作者告诉程序:顾客租了哪些影片,租期多长,程序便根据租原创 2017-08-06 13:19:09 · 918 阅读 · 0 评论 -
重构--Extract Method(提炼函数)(四)
重构方式 将下面的代码放进一个独立函数中,并让函数名称解释该函数的用途void printOwing(double amount){ printBanner();//print detailsSystem.out.println("name:"+_name); System.out.println("amount"+amount原创 2017-08-15 21:30:36 · 635 阅读 · 0 评论 -
重构--Inline Method(内联函数),Inline Temp(内联临时变量),Substitute Algorithm(替换算法)(五)
Inline Method(内联函数) 如果一个函数的方法体与函数名称同样清楚易懂,那么在函数调用点插入函数本体,然后移除该函数: 动机情况一:有些函数,其内部代码和函数名称同样清晰易读。也许是你自己重构了该函数,导致出现这样的结果。那么此时就应该去掉这个函数,直接使用其中的代码。情况二:如果手上有一群组织不合理的函数。可以将它们都内联到一个大型函数中,再原创 2017-08-15 21:31:48 · 1801 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--函数
短小 函数越短小越好!if,else,while,它们中的代码最好只有一行!最好是一个函数调用又因为函数名称具有说明意义,所以它们本质上又是一个不错的说明文档!只做一件事 函数应该只做一件事情!如何判断函数是否只做了一件事情:看该函数是否能再拆出一个函数,该函数不仅只是单纯地重新诠释其实现!每个函数一个抽象层级 自顶向下读代码:向下规则原创 2017-09-05 22:17:55 · 1946 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--格式
垂直格式 源代码该有多大?短文件通常比长文件易于理解;垂直方向上的靠近空白行隔开了概念,靠近的代码行则暗示了它们之间的紧密关系;这条规则不适用于分布在不同文件中的概念。除非有很好的理由,否则就不要把关系密切的概念放到不同的文件中。这也是避免使用protected变量的 理由之一。变量声明应尽可能靠近其使用位置。因为函数较短,本地变量应该在函数的顶部出原创 2017-09-05 22:18:13 · 698 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--有意义的命名
名副其实 变量,函数,类的命名应该告诉我们它做什么事。如果需要注释来补充,就不算是名副其实。int d;//消逝的时间,以日计。名称d什么也没说明,要靠注释说明自身来看几个更好的例子:int elapsedTimeInDays;int daysSinceCreation;int daysSinceModification;int fileAgeInDays;避免误导原创 2017-09-05 22:17:34 · 1045 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--对象和数据结构
数据,对象的反对称性 先来看一段过程式形状代码 此时给Geometry类添加一个primeter()函数,这些形状类根本不会因此而受影响。另一方面,如果添加一个新形状,就得修改Geometry中的所有函数来处理它再来看一段多态式形状 在这里,area()方法是多态的。不需要有Geometry类。如果添加一个新形状,现有的函数一个也不会受到影响,原创 2017-09-05 22:18:33 · 710 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--错误处理
先写try-catch-finally语句 从某种意义上try代码块就像是事务。catch代码块将程序维持在一种持续状态。在编写可能出现异常的语句时,最好先写这个try/catch代码块。这样可以事先划定一个范围。给出异常发生的环境说明 抛出的每个异常,都应当提供足够的环境说明,以便判断错误的来源和处所;应创建信息充分的错误信息,并和异常一起传递过去。在消息中,原创 2017-09-11 21:27:40 · 1287 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--类
类的组织 类应该从一组变量列表开始,如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。公共函数应跟在变量列表之后。我们喜欢把由某个公共函数调用的私有工具函数紧随在公共函数后面。这符合自顶向下原则;类应该短小 类越短小越好!函数一般计算代码行数。对于类,采用不同的衡量方法。计算权责!类的名称应当描述其权责。类的命名是帮原创 2017-09-11 21:28:09 · 734 阅读 · 0 评论 -
Java编码规范,让你的代码赏心悦目--迭进
通过迭进设计达到整洁目的 简单设计的四条规则,以下规则按其重要程序排列:运行所有测试;不可重复;表达了程序员的意图;尽可能减少类和方法的数量;简单设计规则1:运行所有测试 全面测试并持续通过所有测试的系统,就是可测试的系统;紧耦合的代码难以编写测试。使用依赖注入,接口,和抽象来减少耦合;简单设计规则2~4:重构 有了测试,就能保原创 2017-09-11 21:28:21 · 1108 阅读 · 0 评论 -
HTTP详解--HTTP方法(五)
HTTP/1.1可使用的方法 GET:获取资源 作用:用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。 请求的资源是文本,就保持原样返回; 如果是CGI(通用网关接口),则返回经过执行后的输出结果; 示例: POST:传输实体主体原创 2017-06-25 15:29:49 · 3695 阅读 · 0 评论 -
设计模式--工厂模式(简要)(七)
优点客户端不需要在负责对象的创建,从而明确了各个类的职责 缺点这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护 //定义父类 public abstract class Animal { public abstract void eat(); } //定义子类原创 2017-06-25 15:28:49 · 519 阅读 · 0 评论 -
设计模式--工厂模式(六)
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类; 知识点的梳理: 在设计模式中,所谓的"实现一个接口"并"不一定"表示"写一个类,并利用implements关键字来实现某个java接口","实现一个接口"泛指"实现某个超类型(可以是类或接口)的某个方法";依赖倒置原则:要依赖抽象,不要依赖具体类;几个指导方针来遵循此原则原创 2017-06-25 15:28:28 · 972 阅读 · 0 评论 -
Oracle12C--Oracle事务处理(十一)
Oracle中的事务管理命令set autocommit=off 取消自动提交处理,开启事务处理set autocommit=on 打开自动提交处理,关闭事务处理commit 提交事务rollback to[回滚点] 回滚操作savepoint 事务保存点名称 设置事务保存点在Oracle数据库中,每个连接到此数据库的用户都是一个session,每个session原创 2017-03-06 09:44:54 · 1159 阅读 · 0 评论 -
Oracle12C--锁(十二)
知识点的梳理:1. 此语法要结束一个session(结束session就表示解锁),则需要两个标记,一个是session id(sid),另外一个是序列号(serial#),这两个内容可以利用“v$locked_object”和“v$session”两个数据字典查询到alter system kill session 'sid,serial#'2. 程序出现锁定后,使用管理员账原创 2017-03-06 09:53:33 · 1169 阅读 · 0 评论 -
java\oracle日期格式操作
先来看看Java的几个日期方法:public class Test{ public static void main (String args []){ java.util.Date a = new java.util.Date(); System.out.printl原创 2017-05-02 10:19:09 · 3071 阅读 · 0 评论 -
JDBC操作Oracle
JDBC操作Oracle涉及的包 java.sql.Connection;java.sql.DriverManager;java.sql.ResultSet;java.sql.SQLException;java.sql.Statement;JDBC操作Oracle知识点梳理 Oracle包的位置:product\11.2.0\dbhome_1\jdbc\libJ原创 2017-05-02 10:21:37 · 3070 阅读 · 0 评论 -
Oracle12C--PL/SQL简介(二十四)
知识点的梳理: 默认情况下,DBMS_OUTPUT.put_line();无法输出语句,因为Oralce关闭了输出显示。用户可输入"set serveroutput on"来开启显示PL/SQL语法中DECLARE用于声明变量,BEGIN用于编写语句,EXCEPTION用于异常处理,最后必须通过END标记完结;使用"表.字段%TYPE"可以按照指定表中的列类型声明变量,使用"表%原创 2017-05-09 09:44:42 · 890 阅读 · 0 评论 -
Oracle12C--变量的声明与赋值(二十五)
知识点的梳理: Oracle定义变量的方式有3种:声明并使用变量;使用%TYPE声明变量类型;使用%ROWTYPE声明变量类型可以通过sys登录,使用"v$reserved_words"数据字典查看全部关键字 声明并使用变量 变量声明基本规则:PL/SQL是强类型语言,变量都必须在它声明之后才可以使用;变量不区分大小写;变量都要在DECL原创 2017-05-09 09:46:23 · 3936 阅读 · 1 评论 -
Oracle12C--运算符(二十六)
四类运算符 赋值运算符:用来为变量或常量赋值;连接运算符:可以将多个字符串进行连接;关系运算符:判断两个操作数据的大小关系,返回值为TRUE或FALSE,如果有一个数据为NULL,最终结果为NULL;逻辑运算符:与(AND),或(OR),非(NOT)赋值运算符 功能:将一个数值赋予指定数据类型的变量赋值运算符:变量 :=表达式;示例原创 2017-05-09 09:47:21 · 675 阅读 · 0 评论 -
Oracle12C--常用关系运算符总结
原创 2017-05-09 09:48:26 · 801 阅读 · 0 评论 -
Oracle12C--数据类型划分(二十七)
知识点的梳理: Oracle中的varchar2与其他数据库的varchar完全一样;使用UNICODE编码最大的方便之处是统一了字符与汉字的长度。这样在进行文字处理时会更加方便。但是,由于所有的字母都会按照十六进制保存,所以会存在浪费空间的问题 四类数据类型 标量类型(SCALAR,或称基本数据类型):用于保存单个值,例如字符串,数字,日期,布尔;复合类型原创 2017-05-09 09:50:02 · 3443 阅读 · 0 评论 -
Java设计模式透析--装饰者模式(二)
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案; 知识点的梳理: 装饰者模式符合开闭原则!继承属于扩展形式之一,但不见得是达到弹性设计的最佳方式;在我们的设计中,应该允许行为可以被扩展,而无须修改现在的代码;组合和委托可用于在运行时动态地加上新的行为;除了继承,装饰者模式也可以让我们扩展行为;装饰者模式意味着一群装饰者类,这原创 2017-05-28 09:24:13 · 800 阅读 · 0 评论 -
Java设计模式总览(一)
知识点的梳理: 让设计模式自然而然地出现在你的设计中,而不是为了使用而使用;设计模式并非僵化的教条:可以根据自己的需要采用或调整;总是使用满足需要的最简单解决方案,不管它用不用模式; 什么是模式? 模式:在某情境(Context)下,针对某问题的某种解决方案;情境:就是应用某个模式的情况。这应该是不断出现的情况。(例如:你拥有一个对象的集合);问题:就原创 2017-06-05 09:19:49 · 581 阅读 · 0 评论 -
设计模式--适配器模式(三)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间; 知识点的梳理: 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器;适配器改变接口以符合客户的期望;实现一个适配器花费的时间取决于目标接口的大小与复杂程度;适配器有两种形式:对象适配器和类适配器;类适配器需要多重继承;适配器将一个对象包装起来以改变其接口原创 2017-06-05 09:22:28 · 797 阅读 · 0 评论 -
设计模式--适配器模式(简要)(四)
优点让本来不适合使用的接口变得适合使用 缺点一次只能适配一个类,使用有一定的局限性 /* * 针对用户操作的四种功能,增删改查 */ public interface UserDao { public abstract void add(); public abstract void delete(); publ原创 2017-06-05 09:22:52 · 467 阅读 · 0 评论 -
HTTP详解--Http请求(四)
HTTP报文1.用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本; 一.浏览器的http请求都发送了什么?1.说明:一个完整的HTTP请求包括如下内容:一个请求行、若干请求头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和原创 2017-06-17 09:36:53 · 1944 阅读 · 0 评论 -
HTTP详解--Http协议(三)
一.什么是http协议?1.约定客户端和服务器端之间的通信格式,只有约定了格式,两者才能互相交流,这就是HTTP协议。可以区分哪端是客户端,哪端是服务器端。 协议规定:请求从客户端发出,最后服务器端响应该请求并返回; 服务器端在没有接收到请求之前不会发出响应。 2.注意浏览器与服务器相互通信时,传输的报文头,使用的就是HTTP协议; 客户端发送给某原创 2017-06-17 09:36:21 · 3386 阅读 · 0 评论 -
设计模式--观察者模式(五)
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 知识点的梳理: 为了交互对象之间的松耦合设计而努力;主题(也就是可观察者)用一个共同的接口来更新观察者;观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口;有多个观察者时,不可以依赖特定的通知次序;Swing大量使用原创 2017-06-09 22:53:06 · 1004 阅读 · 0 评论