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

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

创建.ssh目录并生成公钥: 1ssh-keygen -t rsa 所有选项全部回车, 使用默认选项即可. 然后切换到用户目录下的.ssh目录: 1cd ~/.ssh 该目录下默认有三个文件: id_rsa: 用户私钥, 不要复制发送给任何人. id_rsa.pub: 公钥, 将里面内容发送给客户端. authorized_keys: 信任的公钥. 只需要将id_rsa.pub里的内容以 (ssh-rsa开头的一行内容) 复制到客户端的authorized_keys的目录下即可. 接着在客户端使用: 1ssh username@ip -p port 即可连接到服务器.

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

下载code-server: 1wget https://github.com/coder/code-server/releases/download/v4.5.1/code-server-4.5.1-linux-amd64.tar.gz 可以访问code-server GitHub 页面获取下载连接。 解压: 1tar -zxvf code-server-4.5.1-linux-amd64.tar.gz 将解压后的文件移动到/opt目录下,并重命名: 1mv code-server-4.5.1-linux-amd64 /opt/code-server 创建软链到/usr/bin目录下: 1ln -s...

下载frp: 1wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz 或者访问frp项目获取自己需要的版本。 解压: 1tar -zxvf frp_0.44.0_linux_amd64.tar.gz 进入目录后,配置frps.ini和frpc.ini: 1cd frp_0.44.0_linux_amd64 服务端: 1vim frps.ini 将文件按照下面修改: 1[common] 2# frp监听的端口,默认是7000,可以改成其他的 3bind_port = 7000 4# 授权码,请改成更复杂...

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

Ubuntu MySQL 8 安装: 首先更新本地存储库索引: 1sudo apt update 从 APT 存储库安装 MySQL: 1sudo apt install MySQL-server -y 查看 MySQL 版本,验证是否安装成功: 1mysql --version 检查 MySQL 是否正在运行: 1systemctl status mysql.service 如果服务未运行: 1sudo systemctl start mysql MySQL 安装完成后需要更改密码。 查看默认账户和密码: 执行后找到 user 和 password,如: 1sudo vim /etc/mysql/debian.cnf 或:...

oh-my-zsh主页: https://ohmyz.sh/ 安装并设置zsh 安装zsh: 1sudo apt install zsh 查看系统中所有的shell: 1cat /etc/shells 1# /etc/shells: valid login shells 2/bin/sh 3/bin/bash 4/usr/bin/bash 5/bin/rbash 6/usr/bin/rbash 7/bin/dash 8/usr/bin/dash 9/usr/bin/tmux 10/usr/bin/screen 11/bin/zsh 12/usr/bin/zsh 将zsh设置为默认的shell: 1sudo chsh -s...

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