自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yunfan

编程是一种美德,是促使一个人不断向上发展的一种原动力。

  • 博客(88)
  • 资源 (18)
  • 论坛 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 线性结构 -- 队列

一 队列的基本概念1.1 队列的定义和特点和栈相反,队列(Queue)是一种先进先出(First In First Out,FIFO)的线性表。它也是一种操作受限的线性表,它只允许在表的一端进行插入,而在另一端删除元素。 在队列中,允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。 假设队列为 q = (),那么 a1 就是队头元素,an 则是队尾元素。队列的元素是按照 的顺序进入的,退出队列也只能按照这个次序依次退出,也...

2021-09-17 22:07:30 33

原创 线性结构 -- 栈

前言 栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表不相同的两类重要的抽象数据类型。一 栈的定义和特点1.1 栈的定义 栈(Stack) 是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。1....

2021-09-15 17:37:51 28

原创 剑指 Offer 03. 数组中重复的数字

⭐️问题描述⭐️找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000【来源】力扣(LeetCode)【链接】https://leetcode-cn.com/problems/shu-zu-

2021-09-13 13:23:31 60

原创 线性表的链式表示-双向链表

一 双向链表的基本概念 单链表的结点中,只有一个指针域,用来指示后继结点。由此,从某个结点出发只能顺时针向后寻找其他结点。若要寻找结点的前驱结点,则必须从表头指针出发。换言之,在单链表中,查找直接后继结点的执行时间为 O(1),而查找直接前驱的执行时间为 O(n)。为克服单链表这种单向性的缺点,可利用 双向链表 (Double Linked List)。1.1 双向链表的结点(DuLNode)结点 = 前驱指针域 + 数据域 + 后继指针域前驱指针域:用来指向结点的直接前驱...

2021-09-12 00:25:55 54

原创 树结构-二叉树

0 前言 树形结构是一类重要的非线性数据结构。其中以树和二叉树最为常见,直观来看,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织结构都可以用树来形象表示。树在计算机领域中也得到广泛应用,如在编译程序时,可用树来表示源程序的语法结构。又如在数据库系统中,树形结构也是信息的重要组织形式之一。本文主要讨论二叉树的存储结构及其各种操作。1 二叉树基本概念1.1 二叉树的定义二叉树(Binary Tree) 是一张常见的树型结构。定义:有且...

2021-09-07 20:27:03 84

原创 malloc 与 free 相关的几个例子

实例1:分析下面代码是否有错误?指出错误后果,并修改成正确的代码。void GetMemory(char *p){ p = (char *)malloc(100);} void Test(void){ char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}分析:在 Test 函数中调用 GetMemory(str); 后,实参 str 并未发生改变,

2021-09-01 20:06:47 12

原创 UDP协议详解

一、UDP协议概述 传输层另一个重要协议就是 用户数据报协议 UDP。UDP 只在 IP 的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。UDP(User Datagram Protocol,用户数据报协议)UDP的主要特点是:(1)UDP 是无连接的。即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。(2)UDP 使用尽最大努力交付。即保证可靠交付,因此主机不需要维护复杂的连接状态...

2021-08-31 12:07:42 46

原创 TCP协议-TCP粘包问题

一、前言 我们知道,TCP是一个面向字节流的传输层协议。“流” 意味着 TCP 所传输的数据是没有边界的。这不同于 UDP 协议提供的是面向消息的传输服务,其传输的数据是有边界的。TCP 的发送方无法保证对方每次收到的都是一个完整的数据包。于是就有了粘包、拆包问题的出现。粘包、拆包问题只发生在TCP协议中。二、什么是粘包、拆包?假设客户端向服务器连续发送了两个数据包,用 packet1 和 packet2 来表示,那么服务端收到的数据可以分为下面三种情况:第一种情况,接收端正常...

2021-08-26 23:59:55 26

原创 TCP协议-TCP中的定时器/计时器

1 概述我们知道,TCP协议是面向连接、提供可靠交付的服务的传输层协议。 为了保证传输的可靠性,TCP 使用了多种定时器,下面我们就来探讨和分析一下 TCP 使用了哪些定时器?分别起什么作用?超时定时器(timeout timer):当发送方发出报文段后,就启动该定时器,如果在规定时间内没有收到对端发来的确认,就重传已发送过的报文段。 持续计时器(persistence timer):当 TCP 连接的一方收到对方的零窗口通知时,就启动持续计时器。 时间等待计时器(TIME-WAIT time.

2021-08-26 00:17:19 16

原创 TCP协议-TCP的拥塞控制

一、拥塞控制概述 TCP模块除了要进行流量控制外,还有一个重要的任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条TCP连接的数据流的公平性。这就是拥塞控制要解决的问题。 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,如果对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要发生变化,这种情况就叫做拥塞(congestion)。可以把出现网络拥塞的条件写成如下的关系式:Demand for r...

2021-08-10 20:06:21 60

原创 TCP协议-TCP的流量控制

一、前言一般来说,我们总是希望数据传输能尽可能快一点。但如果发送方把数据发送得过快的话,接收方就可能来不及接收,这就会造成数据的丢失。而TCP的流量控制机制就是为了解决这个端到端的数据传输速率问题。所谓流量控制就是根据接收方的接收数据能力,来控制发送方的数据发送速率。从而让发送方的发送速率不要太快,要让接收方来得及接收。流量控制解决的是一个端到端的问题,是接收端控制发送端发送数据的速率,以便使接收端来得及接收。TCP协议使用滑动窗口机制来实现对发送方的流量控制。二、滑动窗口机制2..

2021-08-06 19:03:39 26

原创 TCP协议-TCP超时重传机制

一 前言在TCP通信中,既要保证在网络正常的情况下提供可靠的交付服务,又要保证在网络异常的情况下也提供可靠的交付服务。而TCP的超时重传机制就是解决在网络异常情况下的可靠传输问题的。二 通过序列号和确认应答提供可靠性在TCP通信中,当发送端的数据到达接收端时,接收端会返回一个已收到消息的通知。这个通知消息叫做确认应答(ACK)。ACK(Positive Acknowledgement) 意指已经接收。2.1 正常数据传输过程正常数据传输可以看到,TCP通过确认应答机制实..

2021-08-04 20:49:48 75

原创 面试题-数据结构与算法

【数据结构基础】Q:C语言数组与链表有什么区别?数组和链表都属于一种线性的数据结构。可以从下面两个方面来看它们的区别:从逻辑结构来看1)数组必须先事先定义好固定长度,不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的数组长度;当数据减少时,又会造成内存浪费;数组可以根据下标直接存取,插入和删除操作麻烦。2)链表是动态地分配存储空间的,可以适用数据动态地增减的情况,且方便数据的插入、删除操作,数据查找麻烦。从内存存储来看1)数组从栈中分配空间,并且存储单元在物理上是连续的

2021-08-03 13:44:45 6

转载 static 和 const 的区别

staticstatic修饰局部变量:将一个变量声明为函数的静态局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在静态内存区中。 static修饰全局变量:表示一个变量在当前源文件的全局范围内可访问。 static修饰函数:表示一个函数只能在当前源文件中被访问。 static修饰类成员变量:表示这个成员变量为类的所有对象所共有。 static修饰类成员函数:表示这个成员函数为类的所有对象所共有,而且只能访问类的静态成员变量。constconst 常量:定义时就.

2021-07-28 17:32:26 7

转载 static关键字的作用

内存分区 1)堆:由程序员手动分配和释放,完全不同于数据结构中的堆,分配方式类似链表,若程序员不释放,程序结束时由系统释放。 2)栈:由编译器自动分配和释放,存放函数的参数值、局部变量的值等,操作方式类似数据结构中的栈。 3)全局(静态)存储区:存放全局变量和静态变量,包括DATA段(全局初始化区)和BSS段(全局未初始化区),程序结束后由系统释放。其中,BSS段的特点是在程序执行之前BSS段会自动清0,所以...

2021-07-28 16:43:09 14

原创 面试题-C语言

【C语言基础】1、const 和 #define 相比,区别和优点是什么?区别(1)就起作用的阶段而言: #define是在编译的预处理阶段起作用;而const是在编译、运行的时候起作用。(2)就起作用的方式而言: #define只是简单的字符串替换,没有类型检查;而const有对应的数据类型,在编译阶段是要进行类型检查的,这样可以避免一些低级的错误。(3)就存储方式而言:#define只是进行替换展开,有多少地方使用,就替换多少次,它定义的宏常量在内存中有若干个备份;const定义..

2021-07-28 16:05:23 9

原创 面试题-Linux编程

【Linux操作系统】1、进程和线程以及它们的联系和区别?进程和线程的概念进程是程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的基本单位。线程是进程的一个执行实体,是CPU进行调度和分派的基本单位。它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈)。进程和线程的联系(1)线程是进程中的一个执行单元,或者说是进程中的一个执行路径。(2)一个线程只能从属于一个进程,而一个进程可以有多个线.

2021-07-27 13:18:03 19

原创 TCP协议-长连接和短连接

一 前言TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接。TCP连接的建立是通过三次握手,而连接的释放是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间成本的。二 TCP短连接模拟一种TCP短连接的情况:client 向 server 发起连接请求 server 收到连接请求,双方建立TCP连接 client 向 server 发送消息 server 回应 cl

2021-07-16 19:43:46 55

原创 TCP协议-TCP连接管理

一、TCP概述TCP协议是 TCP/IP 协议族中一个非常重要的协议。它是一种面向连接、提供可靠服务、基于字节流的传输层通信协议。TCP(Transmission Control Protocol,传输控制协议)。1.1 TCP协议的特点(1)TCP 是面向连接的传输层协议。这就是说,通信双方在使用TCP协议进行通信之前,必须先建立TCP连接。在通信结束后,必须释放已经建立的TCP连接。这就好比打电话,通话前要先拨号建立连接,通话结束后要挂机释放连接。(2)TCP 是点对点(一对一)

2021-07-13 19:16:10 81

原创 面试题-计算机网络

1、TCP连接的建立和断开。

2021-07-13 14:09:40 25

原创 IO多路复用之select、poll、epoll之间的区别总结

select、poll、epoll都是IO多路复用的机制。IO多路复用就是通过一种机制,让一个进程/线程可以监视多个描述符,一旦某个描述符就绪(一般是读写就绪),能够通知应用程序进行相应的读写操作。I/O复用虽然能同时监听多个文件描述符,当其本质上还是同步IO模型,因为需要在读写事件就绪后程序自己负责进行读写事件的处理,而这个读写过程是阻塞的。如果要实现并发,只能使用多进程/多线程等编程手段了。...

2021-07-10 16:46:00 75

原创 epoll多路复用的一个实例程序(C实现)

1、实例程序描述编写一个echo server程序,功能是客户端向服务端发送消息,服务端接收到消息后输出,并原样返回给客户端,客户端接收到服务端的应答消息并打印输出。2、公共接口函数部分2.1、common.h 源文件/****描述:公共头文件*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <fcnt

2021-07-10 15:52:43 29

原创 I/O多路复用的实现机制 - epoll 用法总结

一、基本知识1.1 内核事件表epoll 是Linux 特有的 I/O 多路复用函数,是在Linux 2.6内核版本中提出的,是之前的 select 和 poll 的增强版本。它在实现和使用上与 select、poll有很大的差异。首先,epoll 使用一组函数来完成任务,而不是单个函数。其次,epoll 更加灵活,没有描述符的限制,epoll 把用户关心的文件描述符上的事件放到内核里的一个事件表中,这样在用户空间和内核空间的copy只需一次,无须像 select 和 poll 那样每次调用sele

2021-07-09 12:08:01 37

原创 C语言字节对齐问题

一、什么是字节对齐在计算机中,内存空间是按照字节(1B = 8 bit)划分的,每一个字节都有一个编号,这就是字节的地址。理论上可以从任意起始地址访问任意数据类型的变量,但在实际使用中,访问特定数据类型变量时需要在特定的内存起始地址进行访问,这就需要各种数据类型按照一定的规则在空间上进行排列,而不是顺序地一个接一个地存放,这就是字节对齐。如果一个变量的内存起始地址正好是其数据类型长度的整数倍,就被称作自然对齐。比如,在32系统下,假设一个int型变量的起始地址为0x00000004,那它就是自然对齐

2021-07-08 12:41:48 27

原创 经典排序算法总结(C实现)

一 排序算法介绍1.0 排序的概述在计算机计算和处理加工数据时,经常会直接或间接地涉及到数据的排序问题。可以简单地将排序操作理解为:将一个按值无序的数据序列转换成为一个按值有序的数据序列的过程。例如,将一个无序的数组 A[5] = {7, 5, 8, 2, 1} 排列成有序的数组 A[5] = {1, 2, 5, 7, 8} 或是 A[5] = {8, 7, 5, 2, 1}。对于文件而言,排序可以理解为:根据文件记录的关键字值的递增或递减关系将文件记录的次序重新排列的过程。排序后的文件记录一定

2021-07-02 13:12:54 43 1

原创 Go语言--编程技巧总结

反射的使用1、对于结构体,我们要输出一个已经初始化的结构体的各个字段的值,可以使用反射来实现。示例如下:package mainimport ( "fmt" "reflect")type Person struct { name string age int gender string city string}func PrintStruct(v interface{}) { types := reflect.Ty

2021-07-02 10:17:54 14

原创 线性表的链式表示-单链表、循环链表

一 基本概念与顺序表相同,链表也是一种线性表,它的数据的逻辑组织是一维的。而与顺序表不同的是,链表的物理存储结构是用一组地址任意的存储单元存储数据的。也就是说,它不像顺序表那样占据一段连续的内存空间,而是将存储单元分散在内存的任意地址上。在链表结构中,每一个数据元素都存放在链表的一个结点(Node)中,而每个结点之间是由指针将其连接在一起,这样就形成了一条如同“链子”的结构。1.1 链表结点(node)结点 = 数据域 + 指针域数据域用来存放数据元素本身的信息,指针域用来存放后继结点的

2021-07-01 17:37:07 57

原创 面试题-数组与字符串(C实现)

题目1:实现一个算法,确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构,又该如何处理?分析:假设上面的字符串是由ASCII字符集构成的。ASCII字符集一共只有256个字符,我们可以构建一个256大小的数组即可。选择构建一个布尔数组,索引值 i 对应的标记指示该字符串是否含有ASCII字符集中第 i 个字符。若这个字符第2次出现,则立即返回false。示例代码如下:#include <stdio.h>#include <string.h>#includ

2021-06-30 15:31:42 34

原创 怎样才算好代码?

好代码具备的特性正确:代码应当正确处理所有预期输入(expected input)和非法输入(unexpected input)。 高效:

2021-06-21 15:54:53 16

原创 Linux进程之进程间通信

一 进程间通信概述一个大型的应用软件往往需要众多进程协作,所以进程间通信(IPC)的重要性显而易见。Linux系统下的进程间通信机制基本上是从UNIX平台上的进程间通信机制移植而来的。Linux环境下,各个进程地址空间相互独立,每个进程各自拥有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都是不可见的,所以进程和进程之间不能相互访问,要像交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IP

2021-05-01 00:44:17 179 2

原创 Linux 进程

一 进程基本概念1.1 进程和程序进程(process):是一个可执行程序(program)的实例。更精确的定义是:进程是允许某个并发执行的程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的基本单位。程序(program):是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程。所包含的信息内容如下:二进制格式标识。每个程序文件都包含用于描述可执行文件格式的元信息(metainformation)。内核(kernel)利用此信息来解释文件中的其他信息。历史上,UN.

2021-03-04 16:02:05 62

原创 Linux编程技术总结

前言所谓Linux编程技术就是在Linux操作系统环境下进行软件开发时所使用的各种编程技术。一 常见的Linux系统发行版在介绍常见的 Linux 系统版本之前,首先需要区分 Linux 系统内核与 Linux 发行版系统的不同。➢ Linux 系统内核 指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。➢ Linux 发行版系统 是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用软件的集合产品。全球

2020-12-25 14:37:26 228

原创 C-V2X 技术介绍

缩略词C-ITS(Cooperative Intelligent Transportation System,协作式智能交通系统)C-V2X(Cellular-V2X,蜂窝车联网) 该技术在DSRC技术之后推出,目的同样是在车辆之间进行直接无线通信。C-V2X由3GPP组织定义,基于蜂窝调制解调器技术,其接入层与DSRC有着本质上的不同,完全不兼容。D2D(Device to Device,设备到设备)是指物联网中设备直连通信技术。DSRC(Dedicated Short Range Com

2020-12-17 18:00:32 16022

原创 Go语言--编程哲学

1 Go语言设计哲学1.1 少即是多Go语言没有犯C++的错误,没有过度地追求语言特性的大而全,而是最大限度地控制语言特性的数量,控制语言使用的复杂性。二八定律在编程语言中可以描述为80%的代码仅使用20%的语言特性。增加语言特性并不能开发效率的提升,原因是它会增加复杂性,导致使用者更容易犯错;有些复杂的语言特性可以通过库的其他形式来辅助支持。所以,在Go语言中,没有看到运算符重载,没有看到多重继承等不太实用的语言特性。少即是多还隐含另一个概念就是语言特性的正交性。几何上的正交指的是两个向量的垂

2020-12-04 18:54:39 94

原创 Go语言--包(Package)

1 命名空间和作用域1.1 命名空间命名空间(Namespace)在编程语言中常用来表示标识符(identifier)的可见范围。编程语言借助命名空间来解决标识符不能同名的问题,命名空间实际上相当于给标识符添加了标识前缀,使标识符变得全局唯一。另外,命名空间是程序组织更加模块化,降低了程序内部的耦合性。一个标识符可以在多个命名空间中定义,它在不同命名空间中的含义是不互相干的。新的命名空间中可定义任意的标识符,它们不会与位于其他命名空间上的同名标识符发生冲突,当然自定义标识符尽量不要使用编程语言自

2020-12-04 17:25:31 160

原创 Go语言--编译与工具

1 编译工具Go语言的工具链非常丰富,从获取源码、编译、文档、测试、性能分析,到源码格式化、源码提示、重构工具等应有尽有。 在Go语言中可以使用测试框架编写单元测试,使用统一的命令行即可测试及输出测试报告的工作。基准测试提供可自定义的计时器和一整套基准测试算法,能方便快速地分析一段代码可能存在的CPU耗用和内存分配问题。性能分析工具可以将程序的CPU耗用、内存分配、竞态问题以图形化方式展现出来。1.1 编译(go build)Go语言中使用 go build 命令将.go源码编译为可执行文件。g

2020-12-03 17:46:41 179

原创 Go语言--使用“陷阱2”

1 值、指针和引用<备注> 博文中引用的Go源码基于的Go发布版本:go version go1.15.4 linux/amd64。1.1 传值还是传引用Go语言只有一种参数传递规则,那就是值拷贝,这种规则包括两种含义:(1)函数参数传递时使用的是值拷贝。(2)实例赋值给接口变量,接口对实例的引用是值拷贝。有时明明是值拷贝的地方,结果却修改了变量的内容,有以下两种情况:(1)直接传递的是指针。指针传递同样是值拷贝,但指针和指针副本的值指向的地址是同一个地址,所以能修改

2020-11-27 16:05:37 70

原创 Go语言--使用“陷阱1”

Go语言语法简单,类型系统设计得“短小精悍”,但也不是完美无瑕的。Go语言也有一些特性让初学者感到困惑。本篇博客就是逐一介绍Go语言的使用“陷阱”,解除初学者容易犯的错误。Go 语言提供了 go fmt,能够保证代码格式的一致性,在一些代码的书写方式上,Go语言同样有自己的惯用写法,只是这些规则是“潜规则”。1 多值赋值和短变量声明Go语言支持多值赋值,在函数或方法内部也支持短变量声明并赋值,同时Go语言依据类型字面量的值能够自动进行类型推断。1.1 多值赋值可以一次性声明多个变量,并可以在

2020-11-26 19:34:34 92

原创 Go语言--反射(reflect)

0 反射的概念反射是指计算机程序在运行时(runtime)可以访问、检测和修改本身状态或行为的一种能力。通俗地将,反射就是程序能够在运行时动态地查看自己的状态,并且允许修改自身的行为。...

2020-11-24 14:48:02 108

原创 Go语言并发编程3 - 并发模型

1 Go的并发机制

2020-11-16 17:40:45 89

EditPlus 5.0 64位中文注册版

此资源是EditPlus.5.0.598 64位中文注册版安装包,包含有官方软件安装包,中文汉化包以及5.0版本的注册码,本人亲测可用所以拿出来分享给有需要的人。安装步骤如下: 1. 首先安装官方软件安装包,epp500_64bit.exe。 2. 安装完成后,将中文汉化文件EditPlus.exe文件替换掉EditPlus安装根目录下的同名文件。 3. 打开EditPlus,输入EditPlus 5.0注册码.txt文件中的注册码,就会提示注册成功。 【温馨提示】下载完后,直接解压到当前目录下即可。由于该软件是共享软件,仅限用于学习目的人使用,请勿用于商业活动。

2018-03-29

最新版sourceinsight4086软件及破解方法

该软件压缩包包含有SourceInsight安装程序,先安装该程序,然后将我们的sourceinsight4.exe替换掉安装路径下的sourceinsight4.exe,如果运行程序后弹出要我们注册的弹出框的话,就使用更新Licence文件,导入si4.pediy.lic文件即可,以上就是破解的方法。

2017-05-12

UltraEdit v26.10版本 注册机

该资源是UltraEdit v26.10版本的注册机,压缩包里有如何使用的说明文本文件,本人亲测可用。UltraEdit最新版的安装包请去官网下载,网址链接:https://www.ultraedit.com/。 激活时要断网。上传时间:2019-8.29 【温馨提示】由于UltraEdit是共享软件,仅限用于个人之学习目的,请勿用于任何商业目的,并请支持正版软件。

2019-08-29

福昕高级PDF编辑器企业版 v9.3.0.10826 破解补丁

该资源是福昕高级PDF编辑器企业版v9.3.0.10826的破解补丁。软件安装包可以去官网下载,网址是:https://www.foxitsoftware.cn/downloads/,资源里面包含有破解步骤说明的txt文件。 资源上传时间:2018-10.16 【温馨提示】由于福昕高级PDF编辑器企业版是共享软件,仅限用于个人学习使用,请勿用于商业目的。

2018-10-16

CodeBlocks 17.12版本安装包及汉化方法

该资源是开源软件C/C++集成开发环境CodeBlocks17.12版本的安装及汉化方法,资源包含有:codeblocks-17.12mingw-setup.exe安装包,汉化补丁文件以及汉化的方法说明。下载压缩包后,直接解压到当前文件夹下即可。

2018-03-16

最新版sourceinsight4080破解方法

source Insight V4.00.0080最新版本破解30天试用期解决办法。

2017-02-22

福昕高级PDF编辑器企业版 v9.4.1.16828 破解补丁

该资源是福昕高级PDF编辑器企业版 v9.4.1.16828 破解补丁,解开压缩包后,包含有破解步骤的说明文件。至于软件安装包可以去福昕官网下载。该版本也是目前的最新版,官网下载网址链接:https://www.foxitsoftware.cn/downloads/ 上传日期:2019-3.20 【温馨提示】由于福昕高级PDF编辑器企业版是共享软件,仅限用于个人学习之目的,请勿用于任何商业目的,并请支持正版软件。

2019-03-20

SourceInsight 4095版本安装及破解方法

该资源是SourceInsight 4095版本的安装包及破解方法,该软件当前最新的版本。下载完成后,直接解压到当前目录下即可,破解方法如下: 1、安装官方原版安装包:sourceinsight4095-setup.exe 2、找到安装路径,使用sourceinsight4.exe替换替换原主程序:sourceinsight4.exe,直接复制粘贴,然后覆盖原主程序即可。 3、打开SourceInsight,导入授权文件(Import a new license file):si4.pediy.lic。 【温馨提示】由于SourceInsight是共享软件,仅限用于学习之目的,请勿用于商业目的,并请支持正版软件。

2018-08-29

UltraEdit 25.x版本 注册机

该资源是UltraEdit v25.10版本的全新激活工具,原来的那个激活工具已经失效了,无法激活UltraEdit v25.x版本的了。软件安装包可以去官网下载,网址是:https://www.ultraedit.com/downloads/ultraedit-download/ 下面是激活操作步骤: 1. 将下载好的工具软件复制或剪切到UltraEdit的安装根目录下。 2. 运行该软件工具,在Select the Programe...的下拉选项中选中UltraEdit v25.x -(x64),这是针对64位的,32位的是x86。 3. 然后点击"Patch",弹出对话框,选择"是",然后选中文件:ProtectionPlusDLL.dll,点击“打开”,就会提示注册成功了。提示:你可以把"Backup"的复选框取消掉,也可以不取消。 4. 打开UltraEdit,点击"Support—>关于",就会发现软件激活成功了。 本人亲测可用,所以拿出来分享给有需要的学习者。 【温馨提示】由于UltraEdit是共享软件,仅限用于个人之学习目的,请勿用于商业活动。

2018-06-12

source insight 4.0.0087安装及破解方法

该软件压缩包包含最新版的SourceInsight官方软件安装包,你可以打开readme.txt文件,里面是安装软件的步骤和破解方法。

2017-10-25

Python基础教程(第3版) 中文版 高清非扫描版PDF+详细书签

【资源简介】 该资源是《Python基础教程(第3版)》电子书,不是图片扫描版的那种,而是PDF样式的文档,可以使用PDF阅读器复制甚至编辑里面的内容,所以文档内容是非常清晰的,并且是带详细书签的,所以翻阅到指定章节的内容十分方便的。 【本书内容简介】 该书是针对Python 3的全新升级。出版时间:2018-02-01 本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了10个具有实际意义的Python项目的开发过程。 【适合读者】 本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是中高级Python程序员,也能从书里找到耳目一新的内容。 【温馨提示】本着资源共享的精神,分享给Python学习者和爱好者,资源分数也设置得比较低了,请勿将该资源用于商业目的。 本书源代码下载地址:ituring.com.cn/book/2118

2018-09-18

UltraEdit 25.x版本 激活工具

该资源是UltraEdit v25.20版本的全新激活工具,之前上传的那个是3.7版本的,有些人评论说激活出问题了,所以上传了这个最新的4.1版本的。 软件安装包可以去官网下载,网址是:https://www.ultraedit.com/downloads/ultraedit-download/ 至于激活步骤,建议百度一下查询吧。 【温馨提示】由于UltraEdit是共享软件,仅限用于个人之学习目的,请勿用于商业活动。

2018-10-15

UltraEdit 26.x版本 激活工具

该资源是UltraEdit 25.20及26.00版本的激活工具。 前面提供的UltraEdit激活工具已经失效了,不建议下载了。UltraEdit也已经发布26.00版本的了,建议去官网下载最新版的。软件安装包可以去官网下载,网址是:https://www.ultraedit.com/downloads/ultraedit-download/,激活步骤如下: IDM_Patch_4.5 是 IDM Solution 公司旗下产品破解器,使用方法如下: 1、安装好 IDM Solution 公司产品,这里以 UltraEdit 为例,其他软件以此类推 2、安装好之后,不要运行 UltraEdit 3、将本文件夹内的 IDM_Patch_4.5.exe 拷贝到 UltraEdit 安装目录下,默认情况下是: 32位:C:\Program Files (x86)\IDM Computer Solutions\UltraEdit 64位:C:\Program Files\IDM Computer Solutions\UltraEdit 4、运行IDM_Patch_4.5.exe,从产品列表里选择需要破解的软件 5、点击右下角的Patch按钮,搞定! <注意事项> 激活时要断网。 上传日期:2019-3.20 【温馨提示】由于UltraEdit是共享软件,仅限用于个人之学习目的,请勿用于任何商业目的,并请支持正版软件。

2019-03-20

《疯狂Python讲义》 随书配套资源下载

该资源是《疯狂Python讲义》 随书配套资源的下载,由于资源比较大,无法上传,所以选择了提供百度网盘链接的方式,下载该txt文档,提供了资源下载的网址链接,主要包含的资源内容如下: 【1】随书源代码(书本的示例代码) 【2】课后习题答案(这个很重要哦) 【3】《疯狂Python讲义》所附的工具软件。

2019-03-20

《Go语言从入门到进阶实战(视频教学版)》 配套资源

该资源是《Go语言从入门到进阶实战(视频教学版)》随书配套资源,包含有同步配套教学视频和书中案例源代码等资源。 本书简介:徐波/著 ISBN:978-7-111-59824-4 出版时间:2018-06-01 【说明】由于资源内容比较大,受上传资源文件大小限制,无法全部上传,故提供百度云下载链接的方式。

2019-08-15

Oracle Database11g SQL开发指南+书签 pdf

【资源介绍】该资源是《Oracle Database11g SQL开发指南》书籍的pdf电子书以及该书配套的源码文件。 【内容简介】 《Oracle Database 11g SQL开发指南》深入浅出、全面细致地讲解了如何读取和修改数据库信息,如何使用SQL Plus和SQL Developer,如何使用数据库对象,如何编写PL/SQL程序等内容。随着对《Oracle Database 11g SQL开发指南》学习的深入,读者将循序渐进地掌握最新的SQL特性和工具、性能优化技术、高级查询、Java支持以及XML应用。《Oracle Database 11g SQL开发指南》主要内容:解读SQL Plus和SQL Developer使用SQL SELECT、INSERT、UPDATE和DELETE语句。编写PL/SQL程序。创建表、序列、索引、视图和触发器。编写包含复杂分析功能的高级查询。创建用于处理抽象数据的数据库对象和集合。编写Java程序并使用JDBC访问。racle数据库。使用大对象处理音频、视频等多媒体文件。优化SQL语句以提高其执行效率。探究Oracle数据库处理XML的能力。掌握Oracle Database 11g的最新特性,如PIVOT、UNPIVOT和闪回数据存档等。 【作者简介】 Jason Price是职业咨询专家,Oracle公司前产品经理,拥有英国Bristol大学的物理学科学荣誉学士学位。他对Oracle的众多产品,如数据库、应用服务器和CRM应用程序都做出了卓越的贡献。Jason是一位经Oracle认证的数据库管理员和应用程序开发人员,在软件行业具有15年以上的从业经验,并执笔撰写了多本关于Oracle、Java和.NET的优秀图书。 【目录】 第1章 简介 1 1.1 关系数据库简介 2 1.2 结构化查询语言(SQL)简介 2 1.3 使用SQL*Plus 4 1.3.1 启动SQL*Plus 4 1.3.2 从命令行启动SQL*Plus 5 1.3.3 使用SQL*Plus执行SELECT语句 6 1.4 SQL Developer 7 1.5 创建store模式 9 1.5.1 运行SQL*Plus脚本创建store模式 9 1.5.2 用来创建store模式的DDL语句 10 1.6 添加、修改、删除行 18 1.6.1 向表中添加行 18 1.6.2 修改表中的现有行 19 1.6.3 从表中删除行 20 1.7 BINARY_FLOAT和BINARY_ DOUBLE数据类型 21 1.7.1 BINARY_FLOAT和BINARY_DOUBLE的优点 21 1.7.2 在表中使用BINARY_FLOAT和BINARY_DOUBLE 21 1.7.3 特殊值 22 1.8 退出SQL*Plus 23 1.9 Oracle PL/SQL简介 23 1.10 小结 24 第2章 从数据库表中检索信息 25 2.1 对单表执行SELECT语句 25 2.2 选择一个表中的所有列 26 2.3 使用WHERE子句过滤行 27 2.4 理解行标识符 27 2.5 理解行号 28 2.6 执行算术运算 28 2.6.1 日期运算 29 2.6.2 列运算 30 2.7 使用列别名 31 2.8 使用连接操作合并列的输出结果 32 2.9 理解空值 33 2.10 禁止显示重复行 34 2.11 比较值 35 2.12 使用SQL操作符 37 2.12.1 使用LIKE操作符 37 2.12.2 使用IN操作符 38 2.12.3 使用BETWEEN操作符 39 2.13 使用逻辑操作符 40 2.14 理解操作符的优先级 41 2.15 使用ORDER BY子句对行进行排序 41 2.16 执行使用两个表的SELECT语句 42 2.17 使用表别名 44 2.18 笛卡尔积 45 2.19 执行使用多于两个表的SELECT语句 46 2.20 连接条件和连接类型 47 2.20.1 不等连接 47 2.20.2 外连接 48 2.20.3 自连接 51 2.21 使用SQL/92语法执行连接 52 2.21.1 使用SQL/92标准语法执行两个表的内连接 53 2.21.2 使用USING关键字简化连接 53 2.21.3 使用SQL/92执行多于两个表的内连接 54 2.21.4 使用SQL/92执行多列的内连接 55 2.21.5 使用SQL/92执行外连接 55 2.21.6 使用SQL/92执行自连接 56 2.21.7 使用SQL/92执行交叉 连接 57 2.22 小结 57 第3章 使用SQL*Plus 59 3.1 查看表结构 60 3.2 编辑SQL语句 60 3.3 保存、检索并运行文件 62 3.4 格式化列 65 3.5 设置页面大小 67 3.6 设置行大小 68 3.7 清除列格式 68 3.8 使用变量 69 3.8.1 临时变量 69 3.8.2 已定义变量 72 3.9 创建简单报表 74 3.9.1 在脚本中使用临时变量 74 3.9.2 在脚本中使用已定义变量 75 3.9.3 向脚本中的变量传递值 75 3.9.4 添加页眉和页脚 76 3.9.5 计算小计 78 3.10 从SQL*Plus获取帮助信息 79 3.11 自动生成SQL语句 80 3.12 断开数据库连接并退出SQL*Plus 81 3.13 小结 81 第4章 使用简单函数 83 4.1 使用单行函数 84 4.1.1 字符函数 84 4.1.2 数字函数 92 4.1.3 转换函数 96 4.1.4 正则表达式函数 102 4.2 使用聚合函数 108 4.2.1 AVG函数 109 4.2.2 COUNT函数 110 4.2.3 MAX和MIN函数 110 4.2.4 STDDEV函数 111 4.2.5 SUM函数 111 4.2.6 VARIANCE函数 112 4.3 对行进行分组 112 4.3.1 使用GROUP BY子句对行进行分组 112 4.3.2 调用聚合函数的错误用法 115 4.3.3 使用HAVING子句过滤行组 116 4.3.4 组合使用WHERE和GROUP BY子句 117 4.3.5 组合使用WHERE、GROUP BY和HAVING子句 117 4.4 小结 118 第5章 日期和时间的存储与处理 119 5.1 几个简单的存储和检索日期的例子 120 5.2 使用TO_CHAR()和 TO_DATE()转换时间值 121 5.2.1 使用TO_CHAR()将时间值转换为字符串 121 5.2.2 使用TO_DATE()将字符串转换为时间值 125 5.3 设置默认的日期格式 128 5.4 Oracle对2位年份的处理 129 5.4.1 使用YY格式 129 5.4.2 使用RR格式 130 5.5 使用时间值函数 131 5.5.1 ADD_MONTHS函数 131 5.5.2 LAST_DAY函数 132 5.5.3 MONTHS_BETWEEN函数 133 5.5.4 NEXT_DAY函数 133 5.5.5 ROUND函数 133 5.5.6 SYSDATE 134 5.5.7 TRUNC函数 134 5.6 理解时区 135 5.6.1 与时区有关的函数 136 5.6.2 数据库时区和会话时区 136 5.6.3 获取时区的时差 137 5.6.4 获取时区名 138 5.6.5 将时间值从一个时区转换为另一个时区 138 5.7 使用时间戳 139 5.7.1 使用时间戳类型 139 5.7.2 与时间戳有关的函数 143 5.8 使用时间间隔 148 5.8.1 使用INTERVAL YEAR TO MONTH类型 149 5.8.2 使用INTERVAL DAY TO SECOND类型 150 5.8.3 与时间间隔有关的函数 152 5.9 小结 153 第6章 子查询 155 6.1 子查询的类型 155 6.2 编写单行子查询 156 6.2.1 在WHERE子句中使用子查询 156 6.2.2 使用其他单行操作符 157 6.2.3 在HAVING子句中使用子查询 157 6.2.4 在FROM子句中使用子查询(内联视图) 159 6.2.5 可能碰到的错误 159 6.3 编写多行子查询 160 6.3.1 在多行子查询中使用IN操作符 161 6.3.2 在多行子查询中使用ANY操作符 162 6.3.3 在多行子查询中使用ALL操作符 162 6.4 编写多列子查询 162 6.5 编写关联子查询 163 6.5.1 关联子查询的例子 163 6.5.2 在关联子查询中使用EXISTS和NOT EXISTS 164 6.6 编写嵌套子查询 166 6.7 编写包含子查询的UPDATE和DELETE语句 168 6.7.1 编写包含子查询的UPDATE语句 168 6.7.2 编写包含子查询的DELETE语句 168 6.8 小结 169 第7章 高级查询 171 7.1 使用集合操作符 172 7.1.1 示例表 172 7.1.2 使用UNION ALL操作符 173 7.1.3 使用UNION操作符 174 7.1.4 使用INTERSECT操作符 175 7.1.5 使用MINUS操作符 175 7.1.6 组合使用集合操作符 176 7.2 使用TRANSLATE函数 178 7.3 使用DECODE()函数 179 7.4 使用CASE表达式 181 7.4.1 使用简单CASE表达式 181 7.4.2 使用搜索CASE表达式 182 7.5 层次化查询 183 7.5.1 示例数据 183 7.5.2 使用CONNECT BY和 START WITH子句 185 7.5.3 使用伪列LEVEL 185 7.5.4 格式化层次化查询的结果 186 7.5.5 从非根节点开始遍历 187 7.5.6 在START WITH子句中使用子查询 187 7.5.7 从下向上遍历树 188 7.5.8 从层次查询中删除节点和分支 188 7.5.9 在层次化查询中加入其他条件 189 7.6 使用扩展的GROUP BY子句 190 7.7 使用ROLLUP子句 192 7.7.1 使用CUBE子句 194 7.7.2 使用GROUPING函数 195 7.7.3 使用GROUPING SETS子句 198 7.7.4 使用GROUPING_ID函数 199 7.7.5 在GROUP BY子句中多次使用一个列 201 7.7.6 使用GROUP_ID函数 201 7.8 使用分析函数 203 7.8.1 示例表 203 7.8.2 使用评级函数 204 7.8.3 使用反百分点函数 211 7.8.4 使用窗口函数 211 7.8.5 使用报表函数 216 7.8.6 使用LAG和LEAD函数 218 7.8.7 使用FIRST和LAST函数 219 7.8.8 使用线性回归函数 219 7.8.9 使用假想评级与分布函数 221 7.9 使用MODEL子句 221 7.9.1 MODEL子句示例 222 7.9.2 用位置标记和符号标记访问数据单元 223 7.9.3 用BETWEEN和AND返回特定范围内的数据单元 224 7.9.4 用ANY和IS ANY访问所有的数据单元 224 7.9.5 用CURRENTV()获取某个维度的当前值 225 7.9.6 用FOR循环访问数据单元 226 7.9.7 处理空值和缺失值 227 7.9.8 更新已有的单元 229 7.10 使用PIVOT和UNPIVOT子句 230 7.10.1 PIVOT子句示例 230 7.10.2 转换多个列 231 7.10.3 在转换中使用多个聚合函数 232 7.10.4 使用UNPIVOT子句 233 7.11 小结 234 第8章 修改表的内容 237 8.1 使用INSERT语句添加行 237 8.1.1 省略列的列表 239 8.1.2 为列指定空值 239 8.1.3 在列值中使用单引号和双引号 239 8.1.4 从一个表向另外一个表复制行 239 8.2 使用UPDATE语句修改行 240 8.3 RETURNING子句 241 8.4 使用DELETE语句删除行 242 8.5 数据库的完整性 242 8.5.1 主键约束 242 8.5.2 外键约束 243 8.6 使用默认值 244 8.7 使用MERGE合并行 245 8.8 数据库事务 247 8.8.1 事务的提交和回滚 247 8.8.2 事务的开始与结束 248 8.8.3 保存点 249 8.8.4 事务的ACID特性 251 8.8.5 并发事务 251 8.8.6 事务锁 252 8.8.7 事务隔离级别 253 8.8.8 SERIALIZABLE事务的一个例子 254 8.9 查询闪回 254 8.9.1 使用闪回的授权 254 8.9.2 时间查询闪回 255 8.9.3 系统变更号查询闪回 256 8.10 小结 258 第9章 用户、特权和角色 259 9.1 用户 260 9.1.1 创建用户 260 9.1.2 修改用户密码 261 9.1.3 删除用户 261 9.2 系统特权 262 9.2.1 向用户授予系统特权 263 9.2.2 检查授予用户的系统特权 263 9.2.3 使用系统特权 264 9.2.4 撤消用户的系统特权 264 9.3 对象特权 265 9.3.1 向用户授予对象特权 265 9.3.2 检查已授予的对象特权 266 9.3.3 检查已接受的对象特权 267 9.3.4 使用对象特权 269 9.3.5 同名对象 269 9.3.6 公共同名对象 270 9.3.7 撤消用户的对象特权 271 9.4 角色 271 9.4.1 创建角色 271 9.4.2 为角色授权 272 9.4.3 将角色授予用户 272 9.4.4 检查授予用户的角色 273 9.4.5 检查授予角色的系统特权 274 9.4.6 检查授予角色的对象特权 274 9.4.7 使用授予角色的特权 276 9.4.8 默认角色 276 9.4.9 撤消角色 277 9.4.10 从角色中撤消特权 277 9.4.11 删除角色 277 9.5 审计 277 9.5.1 执行审计需要的特权 277 9.5.2 审计示例 278 9.5.3 审计跟踪视图 279 9.6 小结 280 第10章 创建表、序列、索引和视图 281 10.1 表 282 10.1.1 创建表 282 10.1.2 获得有关表的信息 283 10.1.3 获得表中列的信息 284 10.1.4 修改表 285 10.1.5 重命名表 294 10.1.6 向表中添加注释 294 10.1.7 截断表 295 10.1.8 删除表 295 10.2 序列 295 10.2.1 创建序列 295 10.2.2 获取有关序列的信息 297 10.2.3 使用序列 298 10.2.4 使用序列填充主键 299 10.2.5 修改序列 300 10.2.6 删除序列 301 10.3 索引 301 10.3.1 创建B-树索引 302 10.3.2 创建基于函数的索引 303 10.3.3 获取有关索引的信息 303 10.3.4 获取列索引的信息 304 10.3.5 修改索引 304 10.3.6 删除索引 305 10.3.7 创建位图索引 305 10.4 视图 305 10.4.1 创建并使用视图 306 10.4.2 修改视图 313 10.4.3 删除视图 314 10.5 闪回数据归档 314 10.6 小结 316 第11章 PL/SQL编程简介 317 11.1 块结构 318 11.2 变量和类型 319 11.3 条件逻辑 320 11.4 循环 320 11.4.1 简单循环 321 11.4.2 WHILE循环 322 11.4.3 FOR循环 322 11.5 游标 323 11.5.1 步骤1:声明用于保存列值的变量 323 11.5.2 步骤2:声明游标 323 11.5.3 步骤3:打开游标 324 11.5.4 步骤4:从游标中取得记录 324 11.5.5 步骤5:关闭游标 325 11.5.6 完整的示例:product_cursor.sql 325 11.5.7 游标与FOR循环 326 11.5.8 OPEN-FOR语句 327 11.5.9 无约束游标 329 11.6 异常 330 11.6.1 ZERO_DIVIDE异常 332 11.6.2 DUP_VAL_ON_INDEX异常 333 11.6.3 INVALID_NUMBER异常 333 11.6.4 OTHERS异常 333 11.7 过程 334 11.7.1 创建过程 334 11.7.2 调用过程 337 11.7.3 获取有关过程的信息 338 11.7.4 删除过程 338 11.7.5 查看过程中的错误 338 11.8 函数 339 11.8.1 创建函数 339 11.8.2 调用函数 340 11.8.3 获取有关函数的信息 341 11.8.4 删除函数 341 11.9 包 341 11.9.1 创建包规范 342 11.9.2 创建包体 342 11.9.3 调用包中的函数和过程 344 11.9.4 获取有关包中函数和过程的信息 344 11.9.5 删除包 345 11.10 触发器 345 11.10.1 触发器运行的时机 345 11.10.2 设置示例触发器 345 11.10.3 创建触发器 346 11.10.4 激活触发器 347 11.10.5 获取有关触发器的信息 348 11.10.6 禁用和启用触发器 350 11.10.7 删除触发器 350 11.11 Oracle Database 11g新增加的PL/SQL特性 350 11.11.1 SIMPLE_INTEGER类型 350 11.11.2 在PL/SQL中使用序列 351 11.11.3 PL/SQL本地机器代码生成 352 11.12 小结 353 第12章 数据库对象 355 12.1 对象简介 356 12.2 创建对象类型 356 12.3 使用DESCRIBE获取有关对象类型的信息 358 12.4 在数据库表中使用对象类型 359 12.4.1 列对象 359 12.4.2 对象表 361 12.4.3 对象标识符和对象引用 365 12.4.4 比较对象值 367 12.5 在PL/SQL中使用对象 369 12.5.1 get_products()函数 370 12.5.2 display_product()过程 371 12.5.3 insert_product()过程 372 12.5.4 update_product_price()过程 373 12.5.5 get_product()函数 373 12.5.6 update_product()过程 374 12.5.7 get_product_ref()函数 375 12.5.8 delete_product()过程 375 12.5.9 product_lifecycle()过程 376 12.5.10 product_lifecycle2()过程 377 12.6 类型继承 378 12.7 用子类型对象代替超类型对象 380 12.7.1 SQL例子 380 12.7.2 PL/SQL例子 381 12.7.3 NOT SUBSTITUTABLE对象 382 12.8 其他有用的对象函数 383 12.8.1 IS OF() 383 12.8.2 TREAT() 387 12.8.3 SYS_TYPEID() 391 12.9 NOT INSTANTIABLE对象类型 391 12.10 用户自定义的构造函数 393 12.11 重载方法 396 12.12 通用调用 398 12.13 小结 400 第13章 集合 401 13.1 集合简介 401 13.2 创建集合类型 402 13.2.1 创建变长数组类型 402 13.2.2 创建嵌套表类型 403 13.3 使用集合类型定义表列 403 13.3.1 使用变长数组类型定义表列 403 13.3.2 使用嵌套表类型定义表列 404 13.4 获取集合信息 404 13.4.1 获取变长数组信息 404 13.4.2 获得嵌套表信息 405 13.5 填充集合元素 407 13.5.1 填充变长数组元素 407 13.5.2 填充嵌套表元素 407 13.6 检索集合元素 408 13.6.1 检索变长数组元素 408 13.6.2 检索嵌套表元素 409 13.7 使用TABLE()将集合视为一系列行 409 13.7.1 将TABLE()用于变长数组 410 13.7.2 将TABLE()用于嵌套表 411 13.8 更改集合元素 411 13.8.1 更改变长数组元素 411 13.8.2 更改嵌套表元素 412 13.9 使用映射方法比较嵌套表的内容 413 13.10 使用CAST()将集合从一种类型转换为另一种类型 415 13.10.1 使用CAST()将变长数组转换为嵌套表 416 13.10.2 使用CAST()将嵌套表转换为变长数组 416 13.11 在PL/SQL中使用集合 417 13.11.1 操作变长数组 417 13.11.2 操作嵌套表 419 13.11.3 PL/SQL集合方法 421 13.12 多级集合类型 431 13.13 Oracle Database 10g对集合的增强 433 13.13.1 关联数组 434 13.13.2 更改元素类型的大小 435 13.13.3 增加变长数组的元素数目 435 13.13.4 在临时表中使用变长数组 435 13.13.5 为嵌套表的存储表使用不同的表空间 435 13.13.6 嵌套表对ANSI的支持 436 13.14 小结 444 第14章 大对象 447 14.1 大对象(LOB)简介 448 14.2 示例文件 448 14.3 理解大对象类型 449 14.4 创建包含大对象的表 449 14.5 在SQL中使用大对象 450 14.5.1 使用CLOB和BLOB 450 14.5.2 使用BFILE 452 14.6 在PL/SQL中使用大对象 454 14.6.1 APPEND() 456 14.6.2 CLOSE() 457 14.6.3 COMPARE() 457 14.6.4 COPY() 458 14.6.5 CREATETEMPORARY() 459 14.6.6 ERASE() 460 14.6.7 FILECLOSE() 460 14.6.8 FILECLOSEALL() 461 14.6.9 FILEEXISTS() 461 14.6.10 FILEGETNAME() 462 14.6.11 FILEISOPEN() 462 14.6.12 FILEOPEN() 463 14.6.13 FREETEMPORARY() 463 14.6.14 GETCHUNKSIZE() 464 14.6.15 GET_STORAGE_LIMIT() 464 14.6.16 GETLENGTH() 464 14.6.17 INSTR() 465 14.6.18 ISOPEN() 466 14.6.19 ISTEMPORARY() 467 14.6.20 LOADFROMFILE&#40;&#41; 467 14.6.21 LOADBLOBFROMFILE&#40;&#41; 468 14.6.22 LOADCLOBFROMFILE&#40;&#41; 469 14.6.23 OPEN() 470 14.6.24 READ() 471 14.6.25 SUBSTR() 471 14.6.26 TRIM() 473 14.6.27 WRITE() 473 14.6.28 WRITEAPPEND() 474 14.6.29 PL/SQL示例过程 475 14.7 理解LONG和LONG RAW类型 492 14.7.1 示例表 492 14.7.2 向LONG和LONG RAW列添加数据 492 14.7.3 将LONG和LONG RAW列转换为LOB 493 14.8 Oracle Database 10g对大对象的增强 494 14.8.1 CLOB和NCLOB对象之间的隐式转换 494 14.8.2 在触发器中使用LOB时:new属性的用法 495 14.9 Oracle Database 11g对大对象的增强 495 14.9.1 加密LOB数据 496 14.9.2 压缩LOB数据 499 14.9.3 删除LOB重复数据 499 14.10 小结 500 第15章 在Java程序中运行SQL 501 15.1 准备工作 502 15.2 配置计算机 502 15.2.1 设置ORACLE_HOME环境变量 502 15.2.2 设置JAVA_HOME环境变量 503 15.2.3 设置PATH环境变量 503 15.2.4 设置CLASSPATH环境变量 504 15.2.5 设置LD_LIBRARY_PATH环境变量 504 15.3 Oracle JDBC驱动程序 505 15.3.1 Thin驱动程序 505 15.3.2 OCI驱动程序 505 15.3.3 服务器端内部驱动程序 505 15.3.4 服务器端Thin驱动程序 505 15.4 导入JDBC包 506 15.5 注册Oracle JDBC驱动程序 506 15.6 打开数据库连接 506 15.6.1 使用getConnection()方法连接数据库 507 15.6.2 数据库URL 507 15.6.3 使用Oracle数据源连接数据库 508 15.7 创建JDBC Statement对象 511 15.8 从数据库中检索行 511 15.8.1 步骤1:创建和填充ResultSet对象 511 15.8.2 步骤2:从ResultSet对象中读取列值 512 15.8.3 步骤3:关闭ResultSet对象 514 15.9 向数据库中添加行 514 15.10 更改数据库的行 515 15.11 删除数据库的行 516 15.12 处理数字 516 15.13 处理数据库Null值 517 15.14 控制数据库事务 519 15.15 执行DDL语句 519 15.16 处理异常 520 15.17 关闭JDBC对象 521 15.18 示例程序:BasicExample1.java 522 15.18.1 编译BasicExample1 527 15.18.2 运行BasicExample1 527 15.19 预备SQL语句 529 15.20 示例程序:BasicExample2.java 531 15.21 Oracle JDBC扩展 534 15.21.1 oracle.sql包 534 15.21.2 oracle.jdbc包 537 15.21.3 示例程序: BasicExample3.java 540 15.22 小结 543 第16章 SQL优化 545 16.1 SQL优化简介 545 16.2 使用WHERE子句过滤行 546 16.3 使用表连接而不是多个查询 546 16.4 执行连接时使用完全限定的列引用 547 16.5 使用CASE表达式而不是多个查询 548 16.6 添加表索引 549 16.7 使用WHERE而不是HAVING 550 16.8 使用UNION ALL而不是UNION 550 16.9 使用EXISTS而不是IN 552 16.10 使用EXISTS而不是DISTINCT 552 16.11 使用GROUPING SETS而不是CUBE 553 16.12 使用绑定变量 553 16.12.1 不相同的SQL语句 554 16.12.2 使用绑定变量定义相同SQL语句 554 16.12.3 列出和输出绑定变量 555 16.12.4 使用绑定变量存储PL/SQL函数的返回值 555 16.12.5 使用绑定变量存储REFCURSOR的行 556 16.13 比较执行查询的成本 556 16.13.1 检查执行计划 557 16.13.2 比较执行计划 562 16.14 为优化器传递提示 563 16.15 其他优化工具 564 16.15.1 Oracle Enterprise Manager Diagnostics Pack 565 16.15.2 Automatic Database Diagnostic Monitor 565 16.16 小结 566 第17章 XML和Oracle数据库 567 17.1 XML简介 567 17.2 从关系数据生成XML 568 17.2.1 XMLELEMENT() 568 17.2.2 XMLATTRIBUTES() 571 17.2.3 XMLFOREST() 571 17.2.4 XMLAGG() 573 17.2.5 XMLCOLATTVAL() 575 17.2.6 XMLCONCAT() 576 17.2.7 XMLPARSE() 576 17.2.8 XMLPI() 577 17.2.9 XMLCOMMENT() 577 17.2.10 XMLSEQUENCE() 578 17.2.11 XMLSERIALIZE() 579 17.2.12 PL/SQL范例:将XML数据写入文件 579 17.2.13 XMLQUERY() 581 17.3 将XML保存到数据库中 585 17.3.1 范例XML文件 585 17.3.2 创建范例XML模式 586 17.3.3 从范例XML模式检索信息 588 17.3.4 更新范例XML模式中的信息 592 17.4 小结 595 附录A Oracle数据类型 597 【温馨提示】压缩文件直接解压到当前文件夹下即可,解压后包括一个pdf文档和源码文件夹。

2018-07-25

Source Insight4089版本安装及破解方法

直接解压该压缩包即可。该软件压缩包包含最新版的SourceInsight官方软件安装包,你可以打开readme.txt文件,里面是安装软件的步骤和破解方法。

2018-01-18

最新版SourceInsight4088安装及破解方法

该软件压缩包包含最新版的SourceInsight官方软件安装包,你可以打开readme.txt文件,里面是安装软件的步骤和破解方法。

2017-12-20

Ubuntu12.04下运行Qt程序无法显示文本字符串问题

发表于 2015-10-29 最后回复 2015-11-06

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

TA关注的人 TA的粉丝

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