集合的概念 A set is a group of objects. (simplest way) By a set we mean any collection M into a whole of definite disinct objects m (which we called elements of M) of our perception or thought. (Cantor’s way) 集合(set)是由 指定范围内的满足给定条件的所有对象聚集在一起构成的,指定范围内的每一个对象称为这个集合的元素(element)。 集合中的元素是无序的。 集合中的元素是不同的(即,同个集合中相同或重复的元素被认为是一个元素)。...

数据库连接池 数据库连接池是个容器, 负责分配, 管理数据库连接 (Connection). 数据库连接池允许应用程序重复使用一个现有的数据库连接, 而不是再重新建立一个. 从而减少资源浪费. 数据库连接池会自动释放超过最大空闲时间的数据库连接 (强制释放), 来避免因为没有释放数据库连接而引起的数据库连接遗漏. 使用数据库连接池的好处: 资源可以重用 提升系统响应速度 避免数据库连接遗漏 在通常情况下使用JDBC, 有可能会反复地创建和销毁 Connection对象. 这样重复创建销毁的过程特别耗费计算机的性能和时间. 而数据库使用了数据库连接池后,就能达到Connection对象的复用. 连接池是在一开始就创建好了一些连接...

Maven 简介 Apache Maven是专门用于管理和构建Java项目的工具, 它基于项目对象模型 (POM) 的概念, 通过一小段描述信息来管理项目的构建, 报告和文档. Maven的主要功能有: 提供了一套标准化的项目结构. 提供了一套标准化的构建流程 (编译, 测试, 打包, 发布…). 提供了一套依赖管理机制. Maven 模型 Maven模型包含: 项目对象模型 (Project Object Model) 依赖管理模型 (Dependency) 插件 (Plugin) Maven模型图示: 其中紫色框框起来的部分, 就是用来完成标准化构建流程. 仓库 Maven仓库是项目中依赖的第三方库, 这个库所在的位置叫做仓库...

JDBC 简介 JDBC (Java DataBase Connectivity, Java 数据库连接) 是使用Java语言操作关系型数据库的一套 API. JDBC其实是SUN公司制订的一套操作数据库的标准接口. JDBC中定义了所有操作关系型数据库的规则. 由各自的数据库厂商给出实现类 (驱动jar包). Java, JDBC和各种数据库的关系如下图: 使用JDBC的好处: 不需要针对不同数据库分别开发. 可随时替换底层数据库, 访问数据库的Java代码基本不变. JDBC 使用的基本步骤 导入JDBC驱动jar包: 下载MySQL jar驱动包, 菜鸟教程 Java MySQL 连接。 在项目中, 将下载好的jar包放入项...

二分查找 二分查找又叫折半查找,是在有序列表的基础上进行查找,每次查找可以筛掉一半的元素。 算法步骤 以升序数列$L[0…n-1]$为例,假设要查找的数为$x$: 让$x$与数列中间位置的元素$L[\lfloor \frac n2 \rfloor]$进行比较,如果相等则返回该元素下标,否则: 如果$x$比中间元素小,递归地对中间元素左边的数列(比二分查找小的元素)进行二分查找; 如果$x$比中间元素大,递归地对中间元素右边的数列(比二分查找大的元素)进行二分查找。 代码实现 Python实现 递归实现: 1def BinarySearch(arr, target, left = 0, right = 0): 2 """二分排序(递...

命题的定义 具有确切真值的陈述句称为命题(proposition)。命题可以取一个 “值”,称为真值。真值只有 “真”(用 “T” or “1” 表示,即 True)和 “假”(用 “F” or “0” 表示,即 False)。 通常用带或不带下标的大写英文字母表示命题。 非命题 一切没有判断内容的句子,如命令句(祈使句)、感叹句、疑问句、二义性的陈述句等都不能作为命题。 原子命题与复合命题 原子命题(简单命题):不能再分解为更简单命题的命题。 复合命题:可以分解为更为简单命题的命题。这些简单命题之间是通过联结词和标点符号复合而成。 命题变元 一个特定的命题是一个常值命题,它不是具有值 “T”,就是具有值 “F”。 一个任意的没有...

经典字符串匹配 BF暴力匹配算法 暴力匹配,即Brute Force,简称BF算法。BF算法是一种简单朴素的模式匹配算法,常用于在一个主串S内查找一个子串T的出现位置。 算法步骤 假设有主串S与子串P,主串S的长度为N,子串T的长度为M。 将S和T左对齐,并比较其第一个元素。 若匹配,则继续比较下一个元素,一直到第M个元素。 若不匹配则T向右移动一个位置。 接着根据步骤3和4进行比较,直到匹配到或者T移动了N-M且仍未匹配到。 代码实现 Python实现 实现1: 1def BFMatch(s, p): 2 if len(s) < len(p): 3 return -1 4 i, j = 0, 0 5 # 匹配阶段 6 while...

临时变量 通过建立一个临时变量来实现两数交换: 1def swap(x, y): 2 print(x, y) 3 tmp = x 4 x = y 5 y = tmp 6 print(x, y) 7 return x, y 8 9if __name__ == '__main__': 10 swap(1, 2) 缺点: 需要消耗额外的内存。 优点: 不限制类型,大多数类型都能使用该操作。 加减交换 通过加减法实现: 1def swap(x, y): 2 print(x, y) 3 x = x + y 4 y = x - y 5 x = x - y 6 print(x, y) 7 return x, y 8 9if __name__...

Python 语法 注释 Python 的注释风格: 1# 行注释 2 3''' 4块注释1 5''' 6 7""" 8块注释2 9""" 注释中的内容将不会被执行。 标识符 首字母必须是大写或小写的英文字母或者下划线 _。 其他部分由大写或小写的英文字母、数字和下划线组成。 大小写敏感(区分大小写)。 Python3 中允许使用非 ASCII 标识符,即中文也可作为标识符: 1>>> 变量 = 5 2>>> print(变量) 35 关键字 Python 关键字(keyword)不能作为标识符使用,关键字又称保留字。 使用 keyword 模块输出 Python 的所有关键字: 1>>> import keyword 2>>>...

正则表达式语法 —— Python 正则表达式是一个特殊的字符序列,能方便地检查一个字符串是否与某种模式匹配。 正则表达式可以拼接。 正则表达式可以包含普通或者特殊字符。 绝大部分普通字符,是最简单的正则表达式。它们就匹配自身。 特殊字符既可以表示它的普通含义, 也可以影响它旁边的正则表达式的解释。 重复修饰符(*、+、?、{m,n}, 等)不能直接嵌套。避免了非贪婪后缀 ? 修饰符,和其他实现中的修饰符产生的多义性。要应用一个内层重复嵌套,可以使用括号。 特殊字符 序列 说明 . (点)在默认模式,匹配除了换行的任意字符。 如果指定了标签 DOTALL,它将匹配包括换行符的任意字符。 \ 转义特殊字符(允许你匹配...