自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (1)
  • 收藏
  • 关注

原创 可迭代对象、迭代器、生成器以及yield关键字使用

1.可迭代对象(iterable object)能使用for遍历的对象,都是可迭代对象,例如:list、set、dict、str、tuple等容器都属于可迭代对象。可迭代对象必然实现了__iter__()函数,换言之,一个对象实现了__iter__()函数,就是可迭代对象。2.迭代器(iterator)一个对象同时实现了__iter__()和__next__()函数,称之为迭代器。可迭代对象不一定是迭代器,迭代器一定是可迭代对象。iter()函数的作用是返回一个迭代器对象,next()函数作用是返回

2021-08-17 21:25:15 375

原创 (二)K8s学习笔记——使用Kubeadm搭建K8s集群(单master节点)

文章目录一、准备工作1.准备服务器2.所有服务器初始化二、开始搭建K8s集群1.在所有机器上安装Docker、Kubeadm、Kubelet、Kubectl1.1 安装Docker1.2 安装Kubelet、Kubeadm、kubectl2. K8s master节点初始化3.向集群中添加node节点4.使用nginx测试k8s集群一、准备工作1.准备服务器搭建K8s集群最好准备多台配置稍高点的机器,我这里使用谷歌云创建了三台2核4G的服务器用于实验,当然,也可以使用虚拟机进行试验。服务器中所使用

2021-05-24 13:19:20 432 2

原创 K8s部署集群踩坑集锦

1.kubeadm init时报错:Initial timeout of 40s passed.在master节点执行以下命令初始化时,总是报出下面这个错误:kubeadm init \ --apiserver-advertise-address=34.80.118.209 \ --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.1 \ --service-cidr=10.96

2021-05-24 13:05:58 1031 4

原创 (一)K8s学习笔记——简介

一、常见组件及插件1.常见组件Api Server:所有服务统一入口。Controller Manager:维持副本期望数目。Scheduler:负责接收任务并分发任务到合适的节点。ETCD:负责持久化,内部采用raft协议作为一致性算法,基于Go语言实现的键值对数据库,存储K8s集群的所有重要信息。Kubelet:直接与容器引擎交互,对容器的声明周期进行管理。Kube-proxy:负责写入规则至iptables、ipvs等,实现服务映射访问。2.其他插件CoreDNS:为集群中的SVC创

2021-05-21 22:15:57 530

原创 (四)Docker网络&&可视化面板

一、Docker网络1.docker0通过ip addr命令查看本机网卡ip:安装docker后,会出现docker0虚拟网卡。此虚拟网卡是通过桥接模式连到物理网卡中。docker run -d -P --name tomcat1 tomcat # 启动一个tomcat容器docker exec -it tomcat1 ip addr # 启动容器并执行ip addr命令现在宿主机ping一下容器ip试试:ping 172.17.0.2,可以ping通。容器之间进行ip互ping也是可以p

2021-05-09 23:16:16 897 6

原创 (三)DockerFile&&Docker容器数据卷

文章目录一、DockerFile1.DockerFile简介2.常用DockerFile指令3.DockerFile简单使用4.DockerFile构建一个CentOS5.CMD和ENTRYPOINT命令的区别二、Docker容器数据卷1.容器与宿主机数据同步(1)指定路径挂载(2)具名挂载(使用较多)和匿名挂载2.容器间数据同步一、DockerFile1.DockerFile简介DockerFile文件是用于构建Docker镜像一个脚本,通过DockerFile生成镜像。每个指令都是大写字母指

2021-05-09 21:01:35 203

原创 (二)Docker基本命令&&部署测试

一、镜像基本操作命令1.查看镜像docker images或docker image ls 列出所有的镜像可选参数:-a,-all:列出所有镜像-q, -quiet:只显示镜像的id可以同时使用:docker image ls -aq2.搜索镜像docker search [镜像名] 搜索镜像,也可以去docker hub上搜索镜像可选参数:–filter 过滤条件-f 过滤条件docker search [镜像名] --filter=stars=8888 或docker s

2021-05-09 13:43:16 303

原创 (一)Docker安装

本文内容主要来自官方文档使用腾讯云CentOS7作为安装环境文章目录一、Docker安装二、使用阿里云镜像加速器一、Docker安装1.查看内核版本uname -r2.查看系统版本cat /etc/os-release3.卸载旧版本docker(如果有的话)yum remove docker \ docker-client \ docker-client-latest \ docker-common \.

2021-05-06 23:33:19 100 2

原创 LeetCode 20. 有效的括号

描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true提示:

2021-04-11 19:40:41 110

原创 LeetCode 76. 最小覆盖子串

描述给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例2:输入:s = “a”, t = “a”输出:“a”提示:1 <= s.length, t.length <= 10^5s 和 t 由英文字母组成

2021-04-11 19:18:16 139 1

原创 OJ ACM模式常见输入输出代码(牛客练习)

点击跳转:牛客输入输出练习场1.输入不定行,每行2个整数输入描述:输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。输出描述:输出a+b的结果示例:输入:1 510 20输出:630#include<iostream>using namespace std;int main(){ int a,b; while(cin >> a >> b){

2021-03-27 12:32:15 3686 2

原创 (三)MyBatis学习笔记——动态SQL语句

文章目录一、案例测试:不使用动态SQL语句二、动态SQL语句1.< if>标签使用案例2.< foreach>标签使用案例三、常用SQL语句抽取一、案例测试:不使用动态SQL语句如果需要使用带有复杂参数的SQL语句,比如条件查询语句,需要怎样实现呢?例如,现在需要根据sid、name、age三个字段进行查询记录。首先在映射配置文件中建立查询语句:<!--多条件查询--><select id="selectCondition" resultType="s

2021-03-23 21:03:06 118

原创 (二)MyBatis学习笔记——实现Dao层的不同方式

文章目录一、传统方式实现1.MyBatis配置文件2.持久层(Dao层或Mapper层)3.业务层(Service层)4.控制层(controller层)二、接口代理方式实现1.新建项目2.业务层代码编写一、传统方式实现先导入MyBatis的jar包。项目依旧使用控制层——>业务层——>持久层的结构,使用MyBatis进行数据库CRUD。整体结构如下:1.MyBatis配置文件MyBatisConfig.xml<?xml version="1.0" encoding="UTF-

2021-03-23 19:46:21 267

原创 (二)MyBatis学习笔记——使用映射配置文件进行CRUD、核心配置文件使用

文章目录一、映射配置文件1.查询2.新增3.修改4.删除二、核心配置文件1.核心配置文件主要标签介绍2.数据库连接配置文件的引入方式3.起别名映射配置文件包含了数据和对象之间的映射关系以及要执行的SQL语句。< mapper>是核心根标签,namespace是名称空间。< select>是查询钙能的标签,id是唯一的标识,resultType将查询结果封装为某种类型的对象,parameterType指定参数映射对象的类型,如果SQL语句中有参数需要用此属性指定。一、映射配

2021-03-21 15:34:11 98

原创 (一)MyBatis学习笔记——简介、案例测试、相关API

文章目录一、ORM二、MyBatis简介三、MyBatis使用案例测试四、相关API1.Resources2.SqlSessionFactoryBuilder构建器3.SqlSessionFactory工厂对象4.SqlSession会话对象一、ORMORM(Object Relational Mapping): 对象关系映射,指在持久化数据(操作数据库)和实体对象之间进行映射,将java中的对象通过ORM与数据库联系起来。二、MyBatis简介MyBatis 是一个优秀的基于java的持久层框架

2021-03-20 21:17:44 99

原创 (六)JDBC学习笔记——自定义JDBC框架

现在学习的是如何在上一章的工具类基础上再次将相同的功能抽象出来。例如,每次执行SQL语句时都需要预编译SQL语句、获得返回集等等,能否将这些功能封装到一起,将不同的SQL语句(增删改)都封装到一起,传入的参数数目不同也可以调用同一个方法进行UPDATE操作;或者是将查询的SELECT语句封装到一个方法中,不管传入需要查询的参数有多少,都可以调用同一个方法。一、数据库源信息介绍1.数据库的源信息:DataBaseMetaDatajava.sql.DataBaseMetaData:封装了整个数据库的综合

2021-03-20 15:50:31 410 1

原创 (五)JDBC学习笔记——开源数据库连接池

一、C3P0首先下载C3P0。然后将两个jar包导入到工程:导入配置文件c3p0-config.xml到src目录。然后使用即可:public class C3P0Test { public static void main(String[] args) throws SQLException { //1.创建c3p0数据库连接池对象 DataSource ds = new ComboPooledDataSource();//不指定名字则使用默认配置

2021-03-19 21:49:55 105

原创 (四)JDBC学习笔记——使用装饰器模式、适配器模式、动态代理模式自定义数据库连接池

文章目录1.装饰者模式2.适配器模式1.装饰者模式定义一个类,实现Connection接口定义连接对象和连接池容器的成员变量通过有参构造方法为成员变量赋值重写close方法,完成归还连接剩余方法,调用原有连接对象中的功能装饰者模式实现Connection所有的方法,重写close方法。// 1. 定义一个类,实现Connection接口public class MyConnection implements Connection { //2.定义连接对象和连接池容器的成员变量

2021-03-19 19:00:57 447

原创 Java动态代理实现案例

通过动态代理,在不改变对象的方法的情况下对方法进行增强。动态代理由被代理对象和代理对象租场,被代理对象时真实的对象,代理对象是在内存中的一个对象。使用动态代理时,代理对象与被代理对象要实现相同的接口。通过Proxy.newProxyInstance()实现动态代理。newProxyInstance()方法需要传入三个实参,分别是类加载器、接口类型的数组、代理规则案例测试先创建Person类和接口,实现两个方法:getName()和getAge()。然后通过动态代理改变getAge方法。pu

2021-03-19 16:30:19 264

原创 (三)JDBC学习笔记——抽取JDBC工具类、解决SQL注入、事务管理

一、抽取JDBC工具类在上一章中,在dao层的StudentDaoImpl.java文件中,查询全部数据、根据id查询数据、增删改数据等方法对于数据库的连接和释放存在大量的重复代码,因此可以将其中的部分代码抽出来,写到一个工具类中,需要连接释放数据库时直接调用这个工具类即可。1.创建配置文件首先在项目根目录下创建config.properties配置文件。配置文件中存放连接数据库所需要的信息。要使用里面的配置信息,使用java类加载器得到文件字节流,然后使用Properties类加载流对象信息,使

2021-03-16 15:47:04 159

原创 (二)JDBC学习笔记——案例:对表进行CRUD操作

文章目录一、数据准备二、创建项目基础架构1.创建三层架构1.创建Student类2.创建dao层的接口和实现类3.创建service层的接口和实现类4.创建controller层一、数据准备进行准备工作,创建一个新数据库,建立一张student表,包含sid、name、age、birthaday四列,然后向表中插入几条数据。-- 创建db14数据库CREATE DATABASE db14;-- 使用db14数据库USE db14;-- 创建student表CREATE TABLE st

2021-03-14 20:57:13 292

原创 (一)JDBC学习笔记——概念及功能类详解

一、JDBC概念JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的,是java官方提供的一套规范(接口),用于帮助开发人员快速实现不同关系型数据库的连接。二、使用JDBC在java中使用JDBC,首先下载jar包:下载链接,在这里可以选择和数据库的版本匹配的jar包。下载完成后直接在java工程中新建一个libs目录,将jar包复制进去,并右

2021-03-14 16:17:28 110

原创 (二)MySQL学习笔记——SQL语句分类(DDL、DML、DQL、DQL)

文章目录一、SQL语句分类二、数据定义语言:DDL1.DDL操作数据库1.1 查询数据库1.2 创建数据库1.3 修改数据库1.4 删除数据库2.DDL操作数据表2.1 查询数据表2.2 创建数据表2.3 修改数据表2.4 删除数据表三、数据操作语言:DML1.DML向表中插入数据2.DML修改表中数据3.DML删除表中数据四、数据查询语言:DQL0.数据准备1.普通查询1.1 查询某张表的全部数据1.2 查询某张表的某几列1.3 查询某张表的某几列并去重1.4 查询某张表的某几列兵进行四则运算1.5 给查

2021-03-14 14:54:01 199

原创 (一)MySQL学习笔记——MySQL、可视化工具的安装

一、下载安装MySQL数据库去官方网站下载自己合适的操作系统版本,这里我以macOS为例,我下载的是第一个dmg文件,8.0.23版本,直接一步步安装即可。Linux系统差不多。当然也可以通过brew或linux的包管理工具安装。二、下载数据库可视化连接工具由于命令行下数据库的可视化较差,所以使用更为直观方便的可视化工具。常见的数据库可视化连接工具有windows平台的sqlyog,全平台的Navicat和JetBrains家族的DataGrip。我尝试了Navicat,发现新版本使用时打字非常卡

2021-03-14 11:28:06 216

原创 (十二)MySQL学习笔记——锁机制

一、锁的分类按操作分类:共享锁:也叫读锁。针对同一份数据,多个事务读取操作可以同时加锁而不互相影响 ,但是不能修改数据记录。排他锁:也叫写锁。当前的操作没有完成前,会阻断其他操作的读取和写入按粒度分类:表级锁:操作时,会锁定整个表。开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低。偏向于MyISAM存储引擎!行级锁:操作时,会锁定当前操作行。开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。偏向于InnoDB存储引擎!页级锁:锁的粒度、发生冲

2021-03-14 11:05:01 115

原创 (十一)MySQL学习笔记——索引

文章目录一、索引的分类二、索引操作0.数据准备1.创建索引2.查看索引3.添加索引4.删除索引三、索引实现方式四、索引的设计原则1.创建索引时的原则2.适用于组合索引的最左匹配原则一、索引的分类功能分类普通索引: 最基本的索引,它没有任何限制。唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值组合必须唯一。主键索引:一种特殊的唯一索引,不允许有空值。一般在建表时同时创建主键索引。组合索引:顾名思义,就是将单列索引进行组合。外键索引:只有InnoDB引擎支持外键索引,用来保

2021-03-13 22:02:01 106

原创 (十)MySQL学习笔记——数据库的存储引擎

一、MySQL的体系结构MySQL体系结构详解客户端连接支持接口:支持的客户端连接,例如C、Java、PHP等语言来连接MySQL数据库第一层:网络连接层连接池:管理、缓冲用户的连接,线程处理等需要缓存的需求。例如:当客户端发送一个请求连接,会从连接池中获取一个连接进行使用。第二层:核心服务层管理服务和工具:系统的管理和控制工具,例如备份恢复、复制、集群等。SQL接口:接受SQL命令,并且返回查询结果。查询解析器:验证和解析SQL命令,例如过滤条件、语法结构等。查询优

2021-03-13 20:47:16 123

原创 (九)MySQL学习笔记——事务

文章目录一、事务的概念二、如何使用事务1.数据准备2.使用事务三、事务的提交方式四、事务的四大特征(ACID)五、事务的隔离级别1.隔离级别概念2.四种隔离级别3.不同隔离级别可能引发的问题4.查询及修改事务隔离级别5.脏读、不可重复读、幻读问题测试5.1 脏读问题测试5.2 不可重复读问题测试5.3 幻读问题测试一、事务的概念事务:多条SQL语句组成一个执行单元,这些语句要么都执行成功,要么都执行失败。如果都执行成功则此事务执行成功;如果有一条执行失败则导致整个事务所有语句执行失败,整个事务回滚到

2021-03-13 19:59:24 115

原创 (八)MySQL学习笔记——触发器

文章目录一、触发器的概念二、创建触发器三、查看触发器四、删除触发器一、触发器的概念触发器可以在INSERT、UPDATE、DELETE之前或之后触发定义好的SQL语句。例如对某张表执行INSERT操作后自动触发日志记录的功能,记录到另一张表中。使用NEW和OLD关键字获取操作之后和操作之前的数据。触发器有三种:触发器类型OLD的含义NEW的含义INSERT 型触发器无 (因为插入前状态无数据)NEW 表示将要或者已经新增的数据UPDATE 型触发器OLD 表示

2021-03-13 10:59:50 110

原创 (七)MySQL学习笔记——存储过程、存储函数

文章目录一、MySQL存储过程、存储函数的概念二、存储过程、存储函数的好处三、存储过程存储函数的区别四、存储过程的创建1.数据准备2.存储过程的创建五、存储过程的调用六、存储过程的查看七、存储过程的删除八、存储过程的语法1.变量1.1 定义变量、查询变量1.2 赋值变量2.if语句3.参数传递4.while语句5.存储函数的创建、调用、删除一、MySQL存储过程、存储函数的概念存储过程、存储函数是预先编译好并存储在数据库中的一段SQL的集合,类似于写好的函数。二、存储过程、存储函数的好处类似于

2021-03-13 10:17:37 187

原创 (六)MySQL学习笔记——MySQL的备份和恢复

1.MySQL的备份命令行直接使用命令进行备份:mysqldump -u root -p db7 > ~/Desktop/db7_backup.sql查询一下备份的是啥内容:2.MySQL的恢复直接命令行下进行:drop db7; -- 删除db7数据库 show databases;-- 已经没有db7了create database db7;-- 创建数据库db7use db7;source ~/Desktop/db7_backup.sql -- 恢复完成...

2021-03-12 20:51:58 85

原创 (五)MySQL学习笔记——视图

1.视图的概念及作用视图是一种虚拟的数据表,并不在数据库中真实存在;视图的作用是将一些复杂的查询语句的结果封装到一个虚拟表中以供后期再次使用;即将SELECT的查询语句封装为一个虚拟表;例如,上一章多表查询的子查询中,被嵌套的语句查询的结果即可以封装为视图。2.视图的好处简单:使用视图后,这张虚拟表中已经保存的是过滤好的结果,不用关心表的结构、关联条件和筛选条件安全:视图可以设置权限数据独立:视图的结构确定后原表增加列对视图无影响,原表修改列名可以通过修改视图解决3.视图测试-数据准

2021-03-12 20:33:40 179

原创 (四)MySQL学习笔记——多表设计、多表查询、多表查询练习题

一、多表设计多表设计即上一章的外键约束,通过外键约束将表之间建立联系,分为一对一、一对多、多对多等三种。1.一对一设计例如用户表person和身份证表card,用户表中的任意一条数据只能对应身份证表中的一条数据。实现:在其中一张表建立外键,关联另一张表的主键。CREATE DATABASE db5;USE db5;-- 创建person表CREATE TABLE person( id INT PRIMARY KEY AUTO_INCREMENT, -- 用户id 唯一且非空

2021-03-12 19:38:20 1021

原创 (三)MySQL学习笔记——约束

文章目录1.约束的概念及分类2.几种约束类型(1)主键约束(2)主键自增约束(3)唯一约束(4)非空约束(5)外键约束(6)外键级联更新和外键级联删除1.约束的概念及分类约束的概念约束是对表中的数据进行限定,保证数据的正确性、完整性和有效性等。约束的种类约束说明PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键、自动增长UNIQUE唯一约束NOT NULL非空约束FOREIGN KEY外键约束FOR

2021-03-12 13:47:16 105

原创 C++基础学习笔记(下)

C++基础学习笔记(下)文章目录C++基础学习笔记(下)一、模板(一)函数模板1.函数模板语法2.函数模板注意事项3.函数模板示例4.普通函数和函数模板的区别5.普通函数和函数模板的调用规则6.模板的局限性(二)类模板1.类模板作用和语法2.类模板和函数模板区别3.类模板中的成员函数创建时机4.类模板对象作为函数参数5.类模板和继承6.类模板成员函数类外实现7.类模板份文件编写8.类模板和友元9.类模板案例二、STL基础(一)STL六大组件(二)容器、算法、迭代器1.容器:verctor2.vector存

2021-03-10 12:07:56 153

原创 C++基础学习笔记(上)

C++基础学习笔记(上)文章目录C++基础学习笔记(上)一、常量二、数据类型:三、程序流程结构四、数组五、函数六、指针(int \*类型)七、结构体八、内存模式——内存四区(代码区、全局区、栈区、堆区)九、引用十、函数提高十一、类和对象十二、运算符重载十三、继承十四、多态十五、文件一、常量1.宏常量:通常在文件上方,使用#define 常量名 常量值 定义;2.const修饰的变量:const 数据类型 常量名 = 常量值,不可修改。二、数据类型:1.整型:​ short:短整型,2B,-32

2021-03-10 11:05:53 161

原创 OJ ACM模式输入代码模板

ACM模式不同于核心代码模式,核心代码模式只需要补充缺失代码即可,程序自动进行读取和输出。ACM模式连导入头文件都需要自己写,包括输入输出都需要自己写。1.单行m个输入#include <iostream>using namespace std;int a, b;//定义m个变量int main1() { cin >> a >> b; cout << "当前输入:a:" << a << " b:" &lt

2021-03-09 15:41:46 1387

原创 LeetCode 92. 反转链表 II

描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路此题和第206.反转链表差不多,只不过变成了反转其中的某一段链表,当m为1,n为链表长度时就是一样的题了。206.反转链表可以使用双指针迭代法和递归法解决这道题用双指针迭代法比较简单,如果使用递归的

2021-03-01 20:23:49 117

原创 LeetCode 124. 二叉树中的最大路径和

描述思路解答class Solution {public: int MIN_VALUE = -2147483648; int maxVal = MIN_VALUE; int recurrence(TreeNode* root){ if(root == nullptr) return 0; int maxL = max(recurrence(root->left), 0); int maxR = max(recurrence

2021-02-25 20:37:51 320

原创 LeetCode 112. 路径总和

描述给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例2:输入:root = [1,2,3], targetSum = 5输出:false示例3:输入:root =

2021-02-24 19:32:33 117

Sublime Text 3 提示“PackageControl”

linux下Sublime Text3提示Package Control:There are no packages available for installation的解决办法文件

2019-02-01

空空如也

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

TA关注的人

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