自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (13)
  • 收藏
  • 关注

原创 SQL打印矩阵(转圈)

--1.定义变量DECLARE @I INT=0DECLARE @J INT=1DECLARE @Z INT=0DECLARE @N INT= 10DECLARE @Flag INT = @NDECLARE @Number INTDECLARE @Where NVARCHAR(4000)DECLARE @Sql NVARCHAR(4000)--2.产生N*N的数据SELECT number,0 AS I,0 AS J,0 AS Z INTO #Tmp FROM master..sp.

2020-12-23 15:31:03 17

原创 DBSCAN聚类算法-SQL实现

CREATE TABLE #T( p VARCHAR(10), x DECIMAL(18,6), y DECIMAL(18,6), j VARCHAR(10), c BIT DEFAULT 0 )INSERT INTO #t(p,x,y) VALUES('p1',1,2)INSERT INTO #t(p,x,y) VALUES('p2',2,1)INSERT INTO #t(p,x,y) VALUES('p3',2,4)INSERT INTO #t(p,x,y) VALUES...

2020-12-03 13:59:33 87

原创 SQL计算1000的阶乘

DECLARE @i INTDECLARE @j INT DECLARE @m INT DECLARE @n INT DECLARE @l INTDECLARE @c CHAR(1)DECLARE @S VARCHAR(4000) DECLARE @T VARCHAR(4000) SET @i=1SET @n=1000SET @S='1'WHILE @n>=1BEGIN SET @l=LEN(@S) SET @m=0 SET @T='' WHILE @l>=.

2020-11-19 08:07:32 58

原创 SQL5X5方格棋盘难题

/*在5X5的方格棋盘中,每行,列,斜线(斜线不仅仅包括对角线)最多可以放两个球,如何摆放才能放置最多的球,这样的摆法总共有几种?输出所有的摆法.要求:用一句SQL实现输出格式:从方格棋盘第一行至第5行,每行从第一列到第5列依次输出,0表示不放球,1表示放球.一行输出一个行号和一个解例如:行号,结果1 00011010011100000110101002 00011010101000110100011003 0001101100100010011011000*/...

2020-11-19 08:06:39 35

原创 C 练习实例37 之mysql实现

题目:对10个数进行排序。程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。drop PROCEDURE if EXISTS test ;create PROCEDURE test(a varchar(1000))BEGIN DECLARE i,j,len,m,n int ; d...

2019-08-02 16:54:26 50

原创 C 练习实例35 之mysql实现

题目:字符串反转,如将字符串 "www.runoob.com" 反转为 "moc.boonur.www"。drop PROCEDURE if exists test; create PROCEDURE test ( a varchar(100) ) begin declare rst varchar(100); declare i ,len int; ...

2019-08-01 14:56:46 47

原创 C 练习实例25 之mysql实现

题目:求1+2!+3!+...+20!的和。drop PROCEDURE if exists test; create PROCEDURE test ( ) begin declare i int; declare sum,mix long; set sum=0,mix=1,i=1; while i<=20 do ...

2019-08-01 14:33:33 55

原创 C 练习实例24 之mysql实现

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。程序分析:请抓住分子与分母的变化规律。drop PROCEDURE if exists test; create PROCEDURE test ( ) begin declare i,t,a,b int; declare sum DOU...

2019-08-01 14:28:20 52

原创 C 练习实例21 之mysql实现

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。1) 设x1为前一天桃子数,设x2为第二天桃子数, 则:x2=x1/2-1, x1=(x2+1)*2x...

2019-08-01 14:21:58 23

原创 C 练习实例20 之mysql实现

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?drop PROCEDURE if exists test; create PROCEDURE test ( ) begin declare h,s DOUBLE; declare i int DEFAULT 2; se...

2019-08-01 14:14:49 27

原创 C 练习实例19 之mysql实现

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。drop PROCEDURE if exists test; create PROCEDURE test ( ) begin declare i,j,k,n,sum int; declare rst varchar(100); ...

2019-08-01 14:09:31 23

原创 C 练习实例18 之mysql实现

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制drop PROCEDURE if exists test; create PROCEDURE test ( a int ,n int ) begin declare s ,t int; s...

2019-08-01 13:48:10 19

原创 C 练习实例17 之mysql实现

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。drop PROCEDURE if exists test; create PROCEDURE test ( c varchar(1000) ) begin declare letters ,spaces ,digits ,others int; declare i int...

2019-08-01 11:38:17 20

原创 C 练习实例15 之mysql实现

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。程序分析:(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;(2)求最大公约数用辗转相除法(又名欧几里德算法)1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,令r=a mod b设a=kc,b=jc,则k,j互素,否则c不是最大公约数据上,r=a-mb=kc-mj...

2019-08-01 11:10:31 40

原创 C 练习实例14 之mysql实现

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。 (2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。 (3)如果n不能被k整除,则用k+1...

2019-08-01 10:55:17 21

原创 C 练习实例13 之mysql实现

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位drop PROCEDURE if exists test; create PROCEDURE test ( ) be...

2019-07-31 17:51:31 26

原创 C 练习实例12 之mysql实现

题目:判断101到200之间的素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。drop PROCEDURE if exists test; create PROCEDURE test ( ) begin DECLARE i,j int; declare ss TINYINT(1...

2019-07-31 17:21:04 27

原创 C 练习实例11 之mysql实现

题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第i个月的兔子总数为多少?drop FUNCTION if exists fb; create FUNCTION fb ( cnt int ) returns int begin declare rst int DEFAULT 0 ;...

2019-07-31 16:43:47 39

原创 C 练习实例8 之mysql实现

题目:输出9*9口诀。程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列drop procedure if exists jiujiu; create PROCEDURE jiujiu ( ) begin declare i int DEFAULT 1; declare j int DEFAULT 1; declare s VARCHAR(...

2019-07-31 16:01:03 49

原创 C 练习实例5 之mysql实现

题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。drop PROCEDURE if exists test;create PROCEDURE test( a int, b int, c i...

2019-07-31 15:54:07 72

原创 C 练习实例4 之mysql实现

题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。drop FUNCTION if exists test;create FUNCTION test( year int, month int, day int)RETURNS intBEGIN ...

2019-07-31 15:46:58 35

原创 C 练习实例3 之mysql实现

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:假设该数为 x。1、则:x + 100 = n2, x + 100 + 168 = m22、计算等式:m2- n2= (m + n)(m - n) = 1683、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数4、可得...

2019-07-31 15:16:43 36

原创 C 练习实例2 之mysql实现

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过10...

2019-07-31 15:02:20 35

原创 C 练习实例1 之mysql实现

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?drop PROCEDURE if exists test;create PROCEDURE test( )BEGIN declare i int; declare j int; declare k int; create TE...

2019-07-30 17:09:13 29

原创 计算促销最优组合方案

--1.建表CREATE TABLE #A(id INT IDENTITY(1,1),model VARCHAR(10),price DECIMAL(18,2))--2.插入数据INSERT INTO #ASELECT 'A',140UNIONSELECT 'B',130UNIONSELECT 'C',80UNIONSELECT 'D',70UNIONSELEC...

2019-06-28 16:06:04 1208

原创 U8用户密码sql实现

U8加密:一个SHA1+Base64+一个特殊字符结尾结果:fEqNCco3Yq9h5ZUglD3CZJT4lBs=--SQL版CREATE FUNCTION [dbo].[FnBase64Encode](@src varchar(MAX))RETURNS VARCHAR(MAX)ASBEGIN DECLARE @bin VARBINARY(MAX) SET @bin=...

2019-06-20 12:04:17 730 1

原创 字符串带格式转日期

using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Globalization;public partial class UserDefinedFunctions{ ...

2019-03-09 14:10:48 47

转载 常见数据库容灾技术的直观比较

当前是信息社会,数据库的重要性不言而喻。本文从普通用户而不是厂家(不谈RPO、RTO、MDT、MTBF、MTTR等等专业术语)角度出发来审视和比较各种数据库容灾技术,希望能帮助广大用户在选购方案时少被忽悠、少走弯路、避免不必要的经济损失和系统事故。 对于广大用户来说,最关心的是下列两点:A. 是否具有两份逻辑一致的数据:如果某容灾方案具有两份‘逻辑一致’的数据,那在故障发生时,用户数据就是安全...

2019-01-25 13:43:48 129

原创 optimize for ad hoc workloads

--1.查看执行计划重用次数和占用空间 SELECT cp.usecounts,cp.cacheobjtype,cp.objtype,st.text,qp.query_plan,cp.size_in_bytes FROM sys.dm_EXEC_cached_plans cpcross apply sys.dm_EXEC_sql_text(plan_handle) stcro...

2018-11-14 16:25:08 167

原创 SQL数据页行存储格式分析

--建立测试表create table t_test( col1 int, col2 varchar(10), col3 datetime, col4 char(10), col5 nvarchar(4))go--插入数据insert t_test values(1,'ABC','2010-03-15','123',N'abc')insert...

2018-10-26 17:47:06 92

原创 解析sql日志(用到的函数)

ALTER FUNCTION [dbo].[fn_ConvertToSmallDateTime](@Val varbinary(4)) RETURNs SmallDateTimeASBEGIN RETURN CONVERT(SmallDateTime,SUBSTRING(@Val,4,1) +SUBSTRING(@Val,3,1) +SUBSTRING(@Val,2,1) +...

2018-10-26 17:42:04 325 1

原创 解析sql日志

ALTER PROCEDURE [dbo].[Sp_RecoveryDate](@TableName varchar(100))ASBegin DECLARE @RowLogcontent0 VARBINARY(max) --日志 DECLARE @Fixedlengthsize VARBINARY(2) --固定数据长度 DECLARE @FixedLengthData VARB...

2018-10-26 17:40:36 361 3

原创 行转列

using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Text;public partial class StoredProcedures{ [Microsoft....

2018-09-10 08:47:24 58

原创 SQL Server页级别的数据恢复

--1.最近的完整备份BACKUP DATABASE DBName TO DISK = N'C:\Test.bak'--2.发现错误页(可以人为破坏)SELECT * FROM msdb.dbo.suspect_pages--3.立即备份日志1BACKUP LOG DBName TODISK = 'C:\Test_LOG1.bak'WITH INIT--3.用完整备份,还原...

2018-09-09 17:52:08 170

原创 SQL中实用正则表达式

using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using System.Collections;using Microsoft.SqlServer.Server;using System.Text.RegularExpressions;public par...

2018-09-09 09:11:20 281

原创 SQL操控Excel

DECLARE @hr INT;DECLARE @objExcel INT;DECLARE @objWorkBooks INT;DECLARE @objWorkBook INT;DECLARE @objSheets INT;DECLARE @objSheet INT;DECLARE @objRange INT;Declare @A INTEXEC @hr = sp_OACre...

2018-09-09 09:09:59 161

原创 新历转旧历

Create Function [dbo].[fn_BitTest32](@num int,@bitpostion int)Returns bitAsBegin--测试某位是否为真Declare @Rst bit=0Declare @bit int If (@bitpostion&gt;=1 And @bitpostion&lt;=31)Begin Set @bit=Powe...

2018-09-09 09:09:04 278

原创 BulkCopyToXls

using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;public partial class myProcedure{ [Microsoft.SqlServer.Server.SqlProc...

2018-09-09 09:07:44 128

原创 大整数运算

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Numerics;using System.Runtime.InteropServices;namespace MyBigInteger{ /* * 工具-&gt;生成GUI...

2018-09-09 09:06:06 75

原创 SQL版月历

Declare @YMD Varchar(10)='2015-04-01';With TAs( Select Dateadd(day,number,@YMD) As D From Master.dbo.spt_values Where Type='P' And number Between 0 And 31 )Select Isnull([1],'') As Su...

2018-09-09 09:04:44 77

2013年统计用区划代码和城乡划分代码

RAR文件由:2013年统计用区划代码和城乡划分代码(截止2013年8月31日).xml整理得来,包括省市县镇村5个Txt文件,一个sql创建脚本和一个身份证新旧编码

2014-08-14

Excel函数大全

RAR文件包括:一个pdf,一个chm和大量xls

2014-08-14

Microsoft.NET.框架程序设计-中文版

1 图书简介   本书是《微软. NET程序员系列》丛书之一,主要介绍如何开发面向Microsoft NET框架的各种应用程序。Microsoft NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。本书将深入解释CLR的工作机制及其提供的各种构造,同时还将讨论FCL中一些重要的类型。全书共分为五个部分,包括:.NET框架基本原理、类型和通用语言运行时、类型设计、基本类型,以及类型管理。本书适用于要了解、掌握NET平台的读者,尤其适合广大编程爱好者、软件工程师、系统架构师阅读 2 图书目录   前言   第1部分 Microsoft. NET框架基本原理   第1章 Microsoft. NET框架开发平台体系架构   第2章 生成、打包、部署及管理应用程序与类型   第3章 共亨程序集   第2部分 类型与通用语言运行时   第4章 类型基础   第5章 基元类型、引用类型与值类型   第6章 通用对象操作   第3部分 类型设计   第7章 类型成员及其访问限定   第8章 常数与字段   第9章 方法   第10章 属性   第11章 事件   第4部分 基本类型   第12章 文本处理   第13章 枚举类型与位标记   第14章 数组   第15章 接口   第16章 定制特性   第17章 委托   第5部分 类型管理   第18章 异常   第19章 自动内存管理(垃圾收集)   第20章 CLR寄宿、应用程序域、反射   索引   术语表

2014-03-14

Toad-for-MySQL-Freeware_601

实现MySQL数据库开发自动化 Toad™ for MySQL是一款免费开发工具,可让您快速创建并执行查询,自动进行数据库对象管理,更高效地开发SQL代码。 它提供的功能包括比较、提取和搜索对象、项目管理、数据导入或导出及数据库管理。 Toad for MySQL大大提高了工作效率,您还可通过它访问活跃的用户社区.

2013-12-24

C#操作二维码

该程序能生成二维码和解码 文件包含: 1.ThoughtWorks.QRCode.dll 2.源程序一份 3.可执行程序一份 亲!中文不出现乱码,但是字符长度有限制

2013-11-09

Reflector7.0.0.420 破解版

所有C#程序员都使用和推荐的好工具.NET程序员的开发利器 Reflector是由微软员工Lutz Roeder编写的免费程序.Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码.除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息,提供查看程序集中IL的能力以及提供对第三方插件的支持.

2013-08-20

尚观Oracle培训教材-四大宝典

尚观Oracle培训教材-绝密-四大宝典

2013-03-20

Oracle PL SQL程序设计_第五版_上册

内容简介 《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。《Oracle PL/SQL程序设计(第5版)(套装上下册)》能够帮助你充分利用PL/SQL来解决数据库开发中遇到的各种问题,引导你掌握各种构建应用的技巧和技术,以便使你编写出高效、可维护的代码。《Oracle PL/SQL程序设计(第5版)(套装上下册)》不但介绍了大量的Oracle 11g的PL/SQL新性能,还提供了许多优化PL/SQL性能的新方法。   《Oracle PL/SQL程序设计(第5版)(套装上下册)》结构清晰,示例丰富,实践性强,适用于Oracle数据库开发人员、Oracle数据库管理员等相关数据库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构的培训教材。 目录 第1部分 PL/SQL编程 第1章 PL/SQL概述 1.1 什么是PL/SQL? 1.2 PL/SQL的起源 1.2.1 早期的PL/SQL 1.2.2 改进的应用程序移植能力 1.2.3 改进的执行授权和事务一致性 1.2.4 低调地起步,稳定地前进 1.3 这就是PL/SQL 1.3.1 与SQL整合 1.3.2 控制和条件逻辑 1.3.3 出现错误了 1.4 关于PL/SQL的版本 1.4.1 Oracle数据库11g的新特性 1.5 PL/SQL开发人员的资源 1.5.1 O'Reilly PL/SQL系列 1.5.2 网络上的PL/SQL 1.6 一些建议 1.6.1 不要太着急 1.6.2 不要怕寻求帮助 1.6.3 采用一种创建新的甚至激进的方法 第2章 创建并运行PL/SQL代码 2.1 在数据库中导航 2.2 创建和编辑源代码 2.3 SQL*Plus 2.3.1 启动SQL*Plus 2.3.2 运行一个SQL语句 2.3.3 运行PL/SQL程序 2.3.4 运行脚本 2.3.5 什么是“当前目录” 2.3.6 其他SQL*Plus任务 2.3.7 SQL*Plus中的错误处理 2.3.8 喜欢或者讨厌SQL*Plus的原因 2.4 执行必要的PL/SQL任务 2.4.1 创建存储过程 2.4.2 执行存储过程 2.4.3 显示存储过程 2.4.4 存储程序的授权和别名 2.4.5 删除存储程序 2.4.6 隐藏存储过程的源代码 2.5 编辑PL/SQL的环境 2.6 在其他语言中调用PL/SQL 2.6.1 C:使用Oracle的预编译器(Pro*C) 2.6.2 Java:使用JDBC 2.6.3 Perl:使用Perl DBI和DBD::Oracle 2.6.4 PHP:使用Oracle扩展 2.6.5 PL/SQL Server Pages 2.6.6 其他 第3章 语言基础 3.1 PL/SQL块结构 3.1.1 匿名块 3.1.2 命名块 3.1.3 嵌套块 3.1.4 作用范围 3.1.5 规范SQL语句中所有对变量和列的引用 3.1.6 可见性 3.2 PL/SQL字符集 3.3 标识符 3.3.1 保留字 3.3.2 空白和关键词 3.4 直接量 3.4.1 NULL 3.4.2 在一个直接量字符串中嵌入单引号 3.4.3 数字直接量 3.4.4 布尔直接量 3.5 分号分隔符 3.6 注释 3.6.1 单行注释语法 3.6.2 多行注释语法 3.7 PRAGMA关键字 3.8 标签 第2部分 PL/SQL程序结构 第4章 条件和顺序控制 4.1 IF语句 4.1.1 IF-THEN组合 4.1.2 IF-THEN-ELSE组合 4.1.3 IF-THEN-ELSIF组合 4.1.4 避免IF语法陷阱 4.1.5 嵌套的IF语句 4.1.6 短路求值 4.2 CASE语句和表达式 4.2.1 简单的CASE语句 4.2.2 搜索型CASE语句 4.2.3 嵌套的CASE语句 4.2.4 CASE表达式 4.3 GOTO语句 4.4 NULL语句 4.4.1 增加程序的可读性 4.4.2 在标签之后使用NULL 第5章 用循环进行迭代处理 5.1 循环的基础知识 5.1.1 不同循环的例子 5.1.2 PL/SQL循环结构 5.2 简单循环 5.2.1 终止简单循环:EXIT和EXIT WHEN 5.2.2 模仿一个REPEAT UNTIL循环 5.2.3 人为的无限循环 5.3 WHILE循环 5.4 数值型的FOR循环 5.4.1 使用数值型FOR循环的规则 5.4.2 数值型FOR循环的例子 5.4.3 处理非平滑增长 5.5 游标FOR循环 5.5.1 游标型FOR循环的例子 5.6 循环的标签 5.7 CONTINUE语句 5.8 迭代处理的技巧 5.8.1 循环索引使用容易理解的名称 5.8.2 好的退出方式 5.8.3 获得FOR循环执行信息 5.8.4 循环式的SQL语句 第6章 异常处理 6.1 异常处理概念和术语 6.2 定义异常 6.2.1 声明有名异常 6.2.2 异常名称和错误代码相互关联 6.2.3 被命名的系统异常 6.2.4 异常的作用范围 6.3 抛出异常 6.3.1 RAISE语句 6.3.2 使用RAISE_APPLICATION_ERROR 6.4 处理异常 6.4.1 内置的错误函数 6.4.2 在一个单独的句柄中包含多个异常 6.4.3 未处理的异常 6.4.4 传播未处理异常 6.4.5 异常后继续 6.4.6 WHEN OTHERS的处理代码 6.5 构建一个有效的错误管理架构 6.5.1 确定异常管理策略 6.5.2 组织好对应用专有错误代码的使用 6.5.3 使用标准化的错误管理程序 6.5.4 使用自己的异常对象 6.5.5 创建通用错误处理的标准模板 6.6 充分利用PL/SQL错误管理 第3部分 PL/SQL数据 第7章 使用数据 7.1 程序数据的命名 7.2 PL/SQL数据类型概述 7.2.1 字符数据 7.2.2 数字 7.2.3 日期、时间戳和时间间隔 7.2.4 布尔类型 7.2.5 二进制数据类型 7.2.6 ROWIDs 7.2.7 REF CURSORs 7.2.8 Internet数据类型 7.2.9 “Any”数据类型 7.2.10 用户定义数据类型 7.3 程序数据的声明 7.3.1 声明一个变量 7.3.2 声明常量 7.3.3 NOT NULL语句 7.3.4 锚定声明 7.3.5 游标和表的锚 7.3.6 使用锚定声明的好处 7.3.7 NOT NULL数据类型的锚 7.4 程序员定义的子类型 7.5 数据类型转换 7.5.1 隐式类型转换 7.5.2 显式类型转换 第8章 字符串 8.1 字符串类型 8.1.1 VARCHAR2数据类型 8.1.2 CHAR数据类型 8.1.3 String子类型 8.2 使用字符串 8.2.1 字符串常量 8.2.2 不可打印字符 8.2.3 拼接字符串 8.2.4 处理大小写 8.2.5 传统的检索、提取和替换 8.2.6 补齐 8.2.7 正则表达式的检索、提取和替换 8.2.8 使用空字符串 8.2.9 混用CHAR和VARCHAR2 8.3 字符串函数快速参考 第9章 数字 9.1 数值型数字类型 9.1.1 NUMBER类型 9.1.2 PLS_INTEGER类型 9.1.3 BINARY_INTEGER类型 9.1.4 SIMPLE_INTEGER类型 9.1.5 BINARY_FLOAT和BINARY_DOUBLE类型 9.1.6 SIMPLE_FLOAT和SIMPLE_DOUBLE类型 9.1.7 数字子类型 9.2 数字转换 9.2.1 TO_NUMBER函数 9.2.2 TO_CHAR函数 9.2.3 CAST函数 9.2.4 隐式转换 9.3 数字运算符 9.4 数字函数 9.4.1 四舍五入和截断函数 9.4.2 三角函数 9.4.3 数字函数的快速参考 第10章 日期和时间戳 10.1 Datatime数据类型 10.1.1 声明日期时间变量 10.1.2 选择日期时间数据类型 10.2 得到当前日期和时间 10.3 INTERVAL数据类型 10.3.1 声明INTERVAL变量 10.3.2 什么时候使用INTERVAL 10.4 日期时间转换 10.4.1 从字符串到日期时间 10.4.2 从日期时间到字符串 10.4.3 使用时区 10.4.4 精确匹配需要格式掩码 10.4.5 让精确匹配更容易 10.4.6 解释滑动窗口中两位数字的年份 10.4.7 把时区转换成字符串 10.4.8 用填充模式把输出补齐 10.5 日期和时间戳直接量 10.6 时间间隔的转换 10.6.1 从数字到时间间隔的转换 10.6.2 把字符串转换成间隔 10.6.3 时间间隔的格式化显示 10.7 时间间隔直接量 10.8 CAST和EXTRACT 10.8.1 CAST函数 10.8.2 EXTRACT函数 10.9 日期时间的算法 10.9.1 时间间隔和日期时间的算法 10.9.2 DATE数据类型的日期算法 10.9.3 计算两个日期时间之间的时间间隔 10.9.4 DATE和TIMESTAMP混合计算 10.9.5 时间间隔的加减运算 10.9.6 时间间隔的乘除运算 10.9.7 使用不受限制的时间间隔类型 10.10 日期/时间函数的快速参考 第11章 记录类型 11.1 PL/SQL中的记录 11.1.1 使用记录的好处 11.1.2 声明记录 11.1.3 程序员自定义的记录类型 11.1.4 使用记录类型 11.1.5 记录的比较 11.1.6 触发器伪记录 第12章 集合 12.1 集合概述 12.1.1 集合概念和术语 12.1.2 集合类型 12.1.3 集合示例 12.1.4 使用集合的场合 12.1.5 选择一个集合类型 12.2 集合方法(内置) 12.2.1 COUNT方法 12.2.2 DELETE方法 12.2.3 EXISTS方法 12.2.4 EXTEND方法 12.2.5 FIRST和LAST方法 12.2.6 LIMIT方法 12.2.7 PRIOR和NEXT方法 12.2.8 TRIM方法 12.3 使用集合 12.3.1 声明集合类型 12.3.2 集合变量的声明和初始化 12.3.3 用数据填充集合 12.3.4 访问集合内的数据 12.3.5 使用字符串索引的集合 12.3.6 复杂数据类型的集合 12.3.7 多级集合 12.3.8 在SQL中使用集合 12.4 嵌套表的多重集合操作 12.4.1 测试嵌套表是否相等及成员属性 12.4.2 检查元素是否是嵌套表的成员 12.4.3 执行高级集合操作 12.4.4 处理嵌套表中的重复数据 12.5 模式级别集合的维护 12.5.1 必需的权限 12.5.2 集合和数据字典 第13章 其他数据类型 13.1 BOLEAN类型 13.2 RAW数据类型 13.3 UROWID和ROWID数据类型 13.3.1 获得ROWID 13.3.2 使用ROWID 13.4 LOB数据类型 13.5 使用LOB 13.5.1 理解LOB定位符 13.5.2 LOB的空和NULL 13.5.3 向LOB中写入数据 13.5.4 读取LOB数据 13.5.5 BFILE不同于其他 13.5.6 SecureFiles和BasicFiles 13.5.7 临时LOB 13.5.8 原生的LOB操作 13.5.9 LOB转换函数 13.6 预定义的对象类型 13.6.1 XMLType类型 13.6.2 URI类型 13.6.3 Any类型 第4部分 PL/SQL中的SQL 第14章 DML和事务管理 14.1 PL/SQL中的DML 14.1.1 DML语句的快速入门 14.1.2 DML操作的游标属性 14.1.3 从DML语句返回信息 14.1.4 DML和异常处理 14.1.5 DML和记录 14.2 事务管理 14.2.1 COMMIT语句 14.2.2 ROLLBACK语句 14.2.3 SAVEPOINT语句 14.2.4 SET TRANSACTION命令 14.2.5 LOCK TABLE语句 14.3 自治事务 14.3.1 定义自治事务 14.3.2 自治事务的规则和限制 14.3.3 事务的可见性 14.3.4 什么时候使用自治事务 14.3.5 构建一个自治的日志机制 第15章 数据提取 15.1 游标基础 15.1.1 一些有关数据提取的术语 15.1.2 典型的查询操作 15.1.3 游标属性介绍 15.1.4 在游标中使用PL/SQL变量 15.1.5 在显式游标和隐式游标间做选择 15.2 使用隐式游标 15.2.1 隐式游标的例子 15.2.2 隐式游标的异常处理 15.2.3 隐式SQL的游标属性 15.3 使用显式游标 15.3.1 声明显式游标 15.3.2 打开显式游标 15.3.3 从显式游标中提取数据 15.3.4 显式游标中的列别名 15.3.5 关闭显式游标 15.3.6 显式游标的属性 15.3.7 游标参数 15.4 SELECT…FOR UPDATE 15.4.1 用COMMIT释放锁资源 15.4.2 WHERE CURRENT OF语句 15.5 游标变量和REF CURSOR 15.5.1 为什么用游标变量 15.5.2 和静态游标的相同点 15.5.3 声明REF CURSOR类型 15.5.4 声明游标变量 15.5.5 打开游标变量 15.5.6 从一个游标变量获取数据 15.5.7 游标变量的使用规则 15.5.8 游标变量作为参数传递 15.5.9 游标变量的约束限制 15.6 游标表达式 15.6.1 使用游标表示式 15.6.2 游标表达式的约束限制 第16章 动态SQL和动态PL/SQL 16.1 NDS语句 16.1.1 EXECUTE IMMEDIATE语句 16.1.2 OPEN FOR语句 16.1.3 4种动态SQL方法 16.2 绑定变量 16.2.1 参数模式 16.2.2 重复的占位符 16.2.3 NULL值的传递 16.3 使用对象和集合 16.4 动态PL/SQL 16.4.1 构建动态PL/SQL块 16.4.2 用动态块替换重复的代码 16.5 NDS的建议 16.5.1 对于共享的程序使用调用者权限 16.5.2 预估并处理动态的错误 16.5.3 使用绑定而不是拼接 16.5.4 把代码注入的风险最小化 16.6 什么时候使用DBMS_SQL 16.6.1 解析非常长的字符串 16.6.2 得到查询的列的信息 16.6.3 实现第4种方法的动态SQL的需求 16.6.4 把动态游标的解析最小化 16.7 Oracle数据库11g新特性 16.7.1 DBMS_SQL.TO_REFCURSOR函数 16.7.2 DBMS_SQL.TO_CURSOR函数 16.7.3 DBMS_SQL的安全性增强 目 录(下册) 第5部分 构造PL/SQL应用程序 第17章 过程、函数与参数 17.1 代码模块化 17.2 过程 17.2.1 调用一个过程 17.2.2 过程的头部 17.2.3 过程体 17.2.4 END标签 17.2.5 RETURN语句 17.3 函数 17.3.1 函数的结构 17.3.2 返回的数据类型 17.3.3 END标签 17.3.4 调用函数 17.3.5 不带参数的函数 17.3.6 函数的头部 17.3.7 函数体 17.3.8 RETURN语句 17.4 参数 17.4.1 定义参数 17.4.2 形参和实参 17.4.3 参数模式 17.4.4 在PL/SQL中明确地把形参和实参关联在一起 17.4.5 NOCOPY参数模式限定符 17.4.6 缺省值 17.5 局部或者嵌套模块 17.5.1 使用局部模块的好处 17.5.2 局部模块的作用范围 17.5.3 用局部模块让我们的代码更整洁 17.6 模块重载 17.6.1 使用重载的好处 17.6.2 重载的限制 17.6.3 关于数字类型的重载 17.7 前置声明 17.8 高级主题 17.8.1 在SQL中调用我们的函数 17.8.2 表函数 17.8.3 确定性函数 17.9 把模块化进行到底 第18章 包 18.1 为什么是包? 18.1.1 演示包的能力 18.1.2 有关包的一些概念 18.1.3 图示私有性 18.2 构建包的规则 18.2.1 包规范 18.2.2 包体 18.2.3 包的初始化 18.3 包成员的调用规则 18.4 使用包数据 18.4.1 在一个Oracle会话内全局可见 18.4.2 全局公有数据 18.4.3 包游标 18.4.4 包的串行化 18.5 何时使用包 18.5.1 封装对数据的访问 18.5.2 避免直接量的硬编码 18.5.3 改善内置特性的可用性 18.5.4 把逻辑上相关的功能组织在一起 18.5.5 缓存静态的会话数据 18.6 包和对象类型 第19章 触发器 19.1 DML触发器 19.1.1 DML触发器的概念 19.1.2 创建DML触发器 19.1.3 DML触发器的例子:不许作弊! 19.1.4 同一类型的多个触发器 19.1.5 何去何从 19.1.6 突变表的错误 19.1.7 复合触发器:聚集一堂 19.2 DDL触发器 19.2.1 创建DDL触发器 19.2.2 可用事件 19.2.3 可用属性 19.2.4 使用事件和属性 19.2.5 删除不可删除的 19.2.6 INSTEAD OF CREATE 触发器 19.3 数据库事件触发器 19.3.1 创建数据库事件触发器 19.3.2 STARTUP触发器 19.3.3 SHUTDOWN触发器 19.3.4 LOGON触发器 19.3.5 LOGOFF触发器 19.3.6 SERVERERROR触发器 19.4 INSTEAD OF触发器 19.4.1 创建INSTEAD OF触发器 19.4.2 INSTEAD OF INSERT触发器 19.4.3 INSTEAD OF UPDATE触发器 19.4.4 INSTEAD OF DELETE触发器 19.4.5 填充表 19.4.6 嵌套表的INSTEAD OF触发器 19.5 AFTER SUSPEND触发器 19.5.1 构建AFTER SUSPEND触发器 19.5.2 看看真实的触发器 19.5.3 ORA_SPACE_ERROR_INFO函数 19.5.4 DBMS_RESUMABLE包 19.5.5 捕获多个时间 19.5.6 该不该处理? 19.6 管理触发器 19.6.1 禁用、启用以及删除触发器 19.6.2 创建一个禁用的触发器 19.6.3 查看触发器 19.6.4 检查触发器的有效性 第20章 管理PL/SQL代码 20.1 管理数据库内的代码 20.1.1 数据字典视图概述 20.1.2 显示存储对象的信息 20.1.3 源代码的显示和搜索 20.1.4 根据程序的大小确定Pinning需求 20.1.5 获得存储代码的属性 20.1.6 通过视图分析和更改触发器状态 20.1.7 分析参数信息 20.1.8 分析标识符的使用(Oracle 数据库11g的PL/Scope) 20.2 依赖关系的管理以及代码的重编译 20.2.1 通过数据字典视图分析依赖关系 20.2.2 细粒度依赖(Oracle数据库11g) 20.2.3 远程依赖 20.2.4 Oracle的远程调用模式的限制 20.2.5 失效的程序单元的重编译 20.3 编译时刻警告 20.3.1 一个入门例子 20.3.2 启用编译时刻警告 20.3.3 一些有用的警告 20.4 PL/SQL程序的测试 20.4.1 典型的、华而不实的测试技术 20.4.2 PL/SQL代码测试的一般建议 20.4.3 PL/SQL的自动测试选项 20.4.4 用utPLSQL测试 20.4.5 用Quest Code Tester for Oracle测试 20.5 跟踪PL/SQL的执行 20.5.1 DBMS_APPLICATION_INFO 20.5.2 Quest Error Manager跟踪 20.5.3 DBMS_TRACE功能 20.6 PL/SQL程序的调试 20.6.1 错误的调试方法 20.6.2 调试技巧和策略 20.7 保护存储过程代码 20.7.1 包装的约束和限制 20.7.2 使用包装功能 20.7.3 通过DBMS_DDL动态包装 20.7.4 包装过的代码的使用指南 20.8 基于版本的重定义(Oracle数据库11g R2版本) 第21章 PL/SQL的性能优化 21.1 辅助优化的工具 21.1.1 内存使用分析 21.1.2 发现PL/SQL代码中的瓶颈所在 21.1.3 计算消耗时间 21.1.4 选择最快的程序 21.1.5 避免无限循环 21.1.6 性能相关警告 21.2 优化过的编译器 21.2.1 优化器的工作原理 21.2.2 循环Fetch操作的运行时优化 21.3 数据缓存技术 21.3.1 基于包的缓存 21.3.2 确定性函数的缓存 21.3.3 函数结果缓存(Oracle数据库11g) 21.3.4 缓存总结 21.4 多行SQL的批处理 21.4.1 通过BULK COLLECT加速查询 21.4.2 通过FORALL加速DML 21.5 利用管道化的表函数提升性能 21.5.1 用基于管道化函数的加载方式替换基于行的插入 21.5.2 用管道函数调优Merge操作 21.5.3 用并行管道函数进行异步的数据卸载 21.5.4 并行管道函数中的分区子句和流子句对性能的影响 21.5.5 管道函数和基于成本的优化器 21.5.6 用管道函数优化复杂的数据加载 21.5.7 管道函数结束语 21.6 专用的优化技术 21.6.1 使用NOCOPY参数模式提示符 21.6.2 使用正确的数据类型 21.7 回顾性能 第22章 I/O操作和PL/SQL 22.1 显示信息 22.1.1 启用DBMS_OUTPUT 22.1.2 向缓存中写入行 22.1.3 从缓存中读取内容 22.2 文件的读写 22.2.1 UTL_FILE_DIR参数 22.2.2 使用Oracle目录 22.2.3 打开文件 22.2.4 文件已经打开了吗? 22.2.5 关闭文件 22.2.6 读取文件 22.2.7 向文件中写 22.2.8 拷贝文件 22.2.9 删除文件 22.2.10 文件改名和文件移动 22.2.11 提取文件属性 22.3 发送邮件 22.3.1 Oracle的前提条件 22.3.2 配置网络安全 22.3.3 发送一个短的(32 767或者更少)的纯文本消息 22.3.4 在邮件地址中加上“友好”的名字 22.3.5 发送任意长度的纯文本消息 22.3.6 发送带有小附件(<32 767)的消息 22.3.7 以附件形式发送一个小文件(<32 767) 22.3.8 任意大小的附件 22.4 使用Web数据(HTTP) 22.4.1 “分片”获得一个Web页面 22.4.2 把页面提取到一个LOB中 22.4.3 使用HTTP的用户名/密码验证 22.4.4 获取一个SSL加密的Web页面(通过HTTPS) 22.4.5 通过GET或者POST给一个Web页面提交数据 22.4.6 禁用Cookies或者Cookies持久化 22.4.7 从FTP服务器获取数据 22.4.8 使用代理服务器 22.5 PL/SQL中可用的其他I/O类型 22.5.1 数据库管道、队列、告警 22.5.2 TCP Socket 22.5.3 Oracle的内置Web服务器 第6部分 高级PL/SQL主题 第23章 应用安全与PL/SQL 23.1 安全概述 23.2 加密 23.2.1 密钥长度 23.2.2 算法 23.2.3 填补和连接 23.2.4 DBMS_CRYPTO包 23.2.5 数据加密 23.2.6 LOB的加密 23.2.7 安全文件 23.2.8 数据解密 23.2.9 生成密钥 23.2.10 密钥管理 23.2.11 加密散列 23.2.12 使用消息验证码 23.2.13 使用透明数据加密(TDE) 23.2.14 透明的表空间加密 23.3 行级安全 23.3.1 为什么要学习RLS 23.3.2 一个简单的RLS示例 23.3.3 使用动态策略 23.3.4 使用列敏感的RLS 23.3.5 RLS调试 23.4 应用程序上下文 23.4.1 使用应用程序上下文 23.4.2 上下文的安全 23.4.3 把上下文用作RLS的谓词条件 23.4.4 识别出非数据库的用户 23.5 细粒度审计 23.5.1 为什么要学习FGA 23.5.2 一个简单的FGA示例 23.5.3 访问多少列 23.5.4 查看审计跟踪信息 23.5.5 使用绑定变量 23.5.6 使用句柄模块 第24章 PL/SQL架构 24.1 DIANA是谁(或者是什么) 24.2 Oracle是如何执行PL/SQL代码的 24.2.1 一个例子 24.2.2 编译器的限制 24.3 PL/SQL的缺省包 24.4 执行权限模型 24.4.1 定义者权限模型 24.4.2 调用者权限模式 24.4.3 组合权限模型 24.5 条件编译 24.5.1 条件编译的例子 24.5.2 查询指令 24.5.3 $IF指令 24.5.4 $ERROR指令 24.5.5 把代码和包常量同步 24.5.6 用查询指令实现程序专有设置 24.5.7 使用预处理后的代码 24.6 PL/SQL和数据库实例内存 24.6.1 PGA、UGA和CGA 24.6.2 游标、内存及其他 24.6.3 减少内存用的技巧 24.6.4 如果内存用光了该怎么办 24.7 原生式编译 24.7.1 什么时候使用解释模式 24.7.2 什么时候使用原生模式 24.7.3 原生编译和数据库版本 24.8 我们需要知道的 第25章 PL/SQL的全球化和本地化 25.1 概述和术语 25.2 Unicode入门 25.2.1 国家字符集的数据类型 25.2.2 字符编码 25.2.3 和全球化支持相关的参数 25.2.4 Unicode 函数 25.3 字符语义 25.4 字符串排序顺序 25.4.1 二进制排序 25.4.2 单语言排序 25.4.3 多语言排序 25.5 多语言信息检索 25.5.1 信息检索和PL/SQL 25.6 日期/时间 25.6.1 时间戳数据类型 25.6.2 日期/时间格式 25.7 货币转换 25.8 PL/SQL的全球化开发工具箱 25.8.1 UTL_I18N工具包 25.8.2 UTL_LMS异常处理包 25.8.3 GDK实现选项 第26章 PL/SQL的面向对象特性 26.1 Oracle对象特性的介绍 26.2 对象类型示例 26.2.1 创建一个基类 26.2.2 创建子类型 26.2.3 方法 26.2.4 在Oracle数据库11g中调用父类的方法 26.2.5 保存、提取、使用持久化对象 26.2.6 演变和创建 26.2.7 回到指针吗? 26.2.8 泛化数据:ANY类型 26.2.9 我也可以自己做 26.2.10 对象的比较 26.3 对象视图 26.3.1 一个示例的关系系统 26.3.2 带有集合属性的对象视图 26.3.3 对象子视图 26.3.4 带有反关系的对象视图 26.3.5 INSTEAD OF触发器 26.3.6 对象视图和对象表的区别 26.4 维护对象类型和对象视图 26.4.1 数据字典 26.4.2 权限 26.5 来自一个关系开发者的总结思考 附录A 正则表达式的元字符和函数参数 A.1 元字符 A.2 函数和参数 A.2.1 正则表达式函数 A.2.2 正则表达式参数 附录B 数字格式模型 附录C 日期格式模型

2013-03-08

23种设计模式

1、FACTORY 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。 工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE 跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。 5、SINGLETON 俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 [b:9ceca65206]结构型模式[/b:9ceca65206] 6、ADAPTER 在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 7、BRIDGE 早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。 8、COMPOSITE Mary今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模式了,你会了没有? 合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。 9、DECORATOR Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗? 装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。 10、FACADE 我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。 门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。 11、FLYWEIGHT 每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。 享元模式:FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。 12、PROXY 跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自己的回答,接收到其他的话时再通知我回答,怎么样,酷吧。 代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。 [b:9ceca65206]行为模式[/b:9ceca65206] 13、CHAIN OF RESPONSIBLEITY 晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑! 责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。 14、COMMAND 俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送信息,她对我有什么指示,就写一张纸条让她弟弟带给我。这不,她弟弟又传送过来一个COMMAND,为了感谢他,我请他吃了碗杂酱面,哪知道他说:“我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才请我吃面。”, 命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。 15、INTERPRETER 俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了。 解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。 16、ITERATOR 我爱上了Mary,不顾一切的向她求婚。 Mary:“想要我跟你结婚,得答应我的条件” 我:“什么条件我都答应,你说吧” Mary:“我看上了那个一克拉的钻石” 我:“我买,我买,还有吗?” Mary:“我看上了湖边的那栋别墅” 我:“我买,我买,还有吗?” Mary:“我看上那辆法拉利跑车” 我脑袋嗡的一声,坐在椅子上,一咬牙:“我买,我买,还有吗?” …… 迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。 17、MEDIATOR 四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。 调停者模式:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。 18、MEMENTO 同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦。 备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。 19、OBSERVER 想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦 观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 20、STATE 跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说“有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会说“几点钟?看完电影再去泡吧怎么样?”,当然你看电影过程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。 状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。 21、STRATEGY 跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,单目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。 22、TEMPLATE METHOD 看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现); 模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。 23、VISITOR 情人节到了,要给每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个人的特点,每张卡片也要根据个人的特点来挑,我一个人哪搞得清楚,还是找花店老板和礼品店老板做一下Visitor,让花店老板根据MM的特点选一束花,让礼品店老板也根据每个人特点选一张卡,这样就轻松多了; 访问者模式:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中。当使用访问者模式时,要将尽可能多的对象浏览逻辑放在访问者类中,而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。

2012-11-29

屏幕录像专家V60

屏幕录像专家V60绿色免安装破解版/内附注册机

2012-11-27

SQL Server 2008编程入门经典(第3版)

《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题,重点讨论了SQL Server 2008的特殊功能以及与其他编程环境的不同之处。作者Robert Vieria是Microsoft SQL,Server方面的权威,他采用通俗易懂的方法揭示了SQL Server-2008核心组件的重要更改。 《SQL Server 2008编程入门经典(第3版)》首先概述了数据库设计的概念,介绍了如何用SQL Setver 2008实现这些基本概念。然后,讲述了RDBMS(关系数据库管理系统)的功能和它在开发系统架构方面的优势。SQL Server 2008的新增内容和更改包括:DATE和TIME数据类型、 hierarchyID数据类型、MERGE命令和多行插入,以及递归查询等。《SQL Server 2008编程入门经典(第3版)》旨在帮助您快速地掌握Microsoft SQL Selwer2008的编程技术。显示全部>>隐藏全部>>此书可以试读,请点击这里>> 作者简介 韦拉(Robert Vieria),是畅销书作者。他从1 980年开始深入学习计算技术,从构建和修复计算机软件包,到通过Z80、Basic以及6502汇编语言进行编程。1 983年,Robert开始攻读计算机信息系统的学位,随后转而研究“PC故障”并开始使用数据库语言(从dBase到SQL Server)进行编程,于1990年获得商业管理学位。此外,他还获得了CMA、MCSD、MCT以及MCDBA等认证。Robert目前是俄勒冈州波兰特市的Huron Consuiting Group的Stockarnp事务所的DBA团队领导人,偶尔也会在数据库开发、商业智能和其他主题方面发表演讲。

2012-11-27

Visual C#时尚编程百例

Visual C#时尚编程百例 本书通过100个精选的实例,由浅入深地介绍了Visual C#程序设计的方法和技巧,方便读者学习从及深入地理解Visual C#。本书的主要内容有:C#初级编程、Windows程序设计、控制语句、网络编程、数据库编程、进程和线程、高级CGI、游戏和工具。在实例中,除了介绍Visual C#主要的知识点外,还重点介绍了Visual C#在网络编程、数据库编程和游戏编程等方面的应用,使读者能够真正掌握C#语言。 本书附一张光盘,其主要内容包括:100个实例的源代码、资源文件、可执行文件等。本书体系结构清晰,解释说明详细,开发实例典型,可作为广大计算机工作者和爱好者进一步学习C#语言的参考书,也可供相关计算机语言爱好者参考使用。

2012-11-25

Sql2008解析Json

Sql2008创建clr函数解析json 1.数据库要开启clr exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'clr enabled',1 reconfigure exec sp_configure 'show advanced options',0 reconfigure 2.数据设置 ALTER DATABASE 数据库 SET TRUSTWORTHY ON 3.依次创建程序集(设置成无限制) SMDiagnostics System.Runtime.Serialization Newtonsoft.Json json 4.创建函数 5.测试

2019-03-07

空空如也

空空如也

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

TA关注的人 TA的粉丝

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