自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Shawn派大星

分享学习过程, 博客园有完整的学习分享 https://www.cnblogs.com/songhaixing/

  • 博客(186)
  • 资源 (6)
  • 收藏
  • 关注

原创 GO语言开发之路

Go语言开发之路????????整洁目录连接

2021-02-26 12:10:42 80

原创 Linux基础

Linux基础????????整洁目录连接

2021-02-26 12:07:09 78

原创 Python基础到进阶

Python基础到进阶????????

2021-02-26 12:02:32 68

原创 Docker技术

Docker技术????????

2021-02-26 11:58:57 62

原创 计算机核心基础

计算机核心基础????

2021-02-26 11:56:43 69

原创 MySQL

MySQL????????????????????????????????

2021-02-26 11:54:21 66

原创 类的封装

引入先来举个例子 :当你摁下电脑开机键, 你不需要考虑主板是怎么通电的、 磁盘是怎么转动的、系统的信息是怎么加载的、里面的一系列化学或者物理变化是怎么样的,你面对的就是一个开关键, 摁下它, 电脑就开起来了.又比如:一个玩具制造厂, 制作一个机器人, 我们需要去考虑机器人的每一个细节: 手臂、腿、头、躯干等等,制作简单的玩具不要紧, 如果设计的玩具非常的复杂, 并且这工厂还有很多其他类型的玩具生产(小熊, 佩奇, 芭比公主,飞机模型等等)上面我们使用面向过程的思想去设计, 在程序中就会让我们的

2021-01-01 22:07:05 2719

原创 面向对象编程

引入面向对象的由来一.面向过程与面向对象1.面向过程面向过程编程的核心就是过程二字, 既先做什么, 再做什么, 然后做什么优点 : 将复杂的问题流程化, 进而简单化缺点 : 一整个流程只为了解决一个问题, 换另一个问题又需要另一个整套的流程, 牵一发而动全身2.面向对象面向对象编程的核心就是对象二字, 对象是特征与技能的集合体也可以说对象是一个容器, 用来盛放 数据(特征) 和 功能(技能)优点 : 提高程序的解耦合性, 进而提高程序的可扩展性, 对某一个对象单独修改, 会立刻反

2020-12-23 17:17:18 1334

原创 用Python工具Pyinstaller制作exe应用程序

一.什么是PyinstallerPyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台pyinstaller能将python程序打包成一个可执行文件exepyinstaller支持Python 2.7, 3.5以上版本,并且可以自动搜索依赖ps : PyInstaller 制作出来的执行文件并不是跨平台的,如果需要为不同平台打包,就要在相应平台上运行PyInstaller进行打包二. 安装 Pyinstallerpip ins

2020-12-19 14:42:45 332 2

原创 HTML简介(HTMl发展史、HTML5与XTML的区别)

一.什么是 HTML用户使用浏览器打开网页看到结果的过程就是 : 浏览器将服务端的文本文件(即网页文件)内容下载到本地,然后打开显示的过程为了让显示的效果不那么单调,我们会偏向使用word一类的文本编辑工具来编排文本内容,编排的原理就是 : 在编辑文件时会选中各部分内容,然后为内容打上不同的标记,比如什么是标题,什么是段落,然后存放硬盘里,等下次打开时,word会识别之前的标记,然后按照预先编排好的结果显示出来站在显示文本内容的角度去看,浏览器与word的原理一样,我们可以将浏览器当成一个网

2021-03-04 09:44:48 36

原创 前端介绍(前端的发展史)

一.前端的演变1.web1.0时代的网页制作网页制作是web1.0时代的产物,那个时候的网页主要是静态网页,所谓的静态网页就是没有与用户进行交互而仅仅供读者浏览的网页,我们当时称为“牛皮癣”网页例如一篇QQ日志、一篇博文等展示性文章; 在web1.0时代,用户能做的唯一事情就是浏览这个网站的文字图片内容,这时用户也不能像现在在大多数网站都可以评论交流(缺乏交互性)相信可能大多数人都听过“网页三剑客 Dreamweaver+Fireworks+Flash”吧,这个组合就是web1.0时代额产物2

2021-03-04 09:41:54 8

原创 老司机都知道的Python项目打包exe程序方法

pyinstaller 如何打包一个项目在前面一篇介绍 pyinstaller 工具的时候我们仅仅只是介绍了将单个文件制作成 exe 程序 : ????用Python工具Pyinstaller制作exe应用程序 , 接下来我们将介绍如何将一个项目制作成 exe 程序, pyinstaller 还没有安装建议查看上面的连接-D 参数以我的项目作为示例展开介绍参数参数全称参数说明-D–onedir打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,该方式代码

2021-03-03 00:21:08 17

原创 Mysql事务隔离机制(未提交读Read uncommitted、提交读Read committed、可重复读Repeatable read(mysql默认)、可序列化Serializable)

一.事务隔离机制介绍事务具有原子性、一致性、隔离性、持久性四大特性而隔离性顾名思义指的就是事务彼此之间隔离开, 多个事务在同时处理一个数据时彼此之间互相不影响, 如如果隔离的不够好就有可能会产生脏读、不可重复度、幻读等读现象二.隔离性的四个级别1.等级(隔离程度)由低到高Read uncommitted (未提交读)Read committed (提交读)Repeatable read (可重复读) (mysql默认)Serializable (可序列化)2.依次解决的读现

2021-03-02 20:59:38 4

原创 Mysql锁机制之乐观锁(Optimistic Locking)与悲观锁(exclusive locking)介绍

一.乐观锁与悲观锁数据库管理系统 (DBMS) 中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性乐观并发控制 (乐观锁) 和悲观并发控制 (悲观锁) 是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁, 都是人们定义出来的概念, 可以认为是一种思想; 其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念, 像memcache、hibernate、tair等都有类似的概念针对于不同的业务场景, 应该选用不同的并发控制方式; 所以, 不要把乐观并

2021-03-02 12:00:02 17

原创 Mysql锁机制之死锁问题

一.死锁问题MyISAM中是不会产生死锁的,因为MyISAM总是一次性获得所需的全部锁,要么全部满足,要么全部等待。而在InnoDB中,锁是逐步获得的,就造成了死锁的可能1.死锁问题一 ( 两个会话, 两条 SQL语句产生死锁)准备工作create index index_id on t01; # 删除之前的索引alter table t01 modify id int primary ket; # 将id字段设置成主键create index index_id on t01(id);

2021-03-02 11:57:15 20

原创 Mysql锁机制之常用存储引擎锁机制、三种行锁算法(Record Lock 单行锁、Gap Lock 间隙锁、Next-Key Lock 行+间隙锁)

一.MySQL常用存储引擎的锁机制Myisam和Memory默认采用表级锁(table-level locking)BDB采用页面锁(page-level locking)或表级锁,默认为页面锁Innodb支持行级锁(row-level locking)和表级锁, 默认为行级锁 (偏向于写)Innodb 四种锁定模式的共存逻辑关系 :共享锁(S)排他锁(X)意向共享锁(IS)意向排他锁(Ⅸ)共享锁(S)兼容冲突兼容冲突排他锁(X)冲突冲突冲突冲突

2021-03-02 11:56:11 18

原创 Mysql锁机制之共享锁与排它锁 (按级别分)意向锁

一.Innodb中的行级锁之共享锁与排它锁 (按级别分)1.Innodb中行级锁的与表锁对比InnoDB行锁不是直接锁记录, 而是锁索引, 这一点MySQL与Oracle不同, 后者是通过在数据块中对相应数据行加锁来实现的InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据, InnoDB才使用行级锁, 否则,InnoDB将锁住所有行, 实现的效果相当于是表锁演示create table t01(id int,name char(16)); # 创建表(并且不添加索引)

2021-03-02 11:45:08 84

原创 Mysql锁机制之行级锁、表级锁、页级锁 (按粒度分)DDL锁与DML锁

引入1.什么是锁锁是计算机协调多个进程或线程并发访问某一资源的机制,我们称之为锁机制2.为何要使用锁机制因为在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源当并发事务同时访问一个共享的资源时,有可能导致数据不一致、数据无效等问题例如在上一篇介绍过的事务并发情况下出现的读现象: 脏读、不可重复读、幻读等为了解决这些方法, 主流的数据库软件都提供了锁机制, 以及事务隔离级别的概念而锁机制可以将并发的数据访问顺序化,

2021-03-02 11:43:20 23

原创 数据库读现象(问题)

引入1.什么是读现象(为什么会有)在数据库系统中, 多个事务的并发进行, 在读取数据方面可能遇到一些问题, 包括 : 脏读 、不可重复读、幻读2.是否所有数据库都有读现象对于一些数据库管理软件会自带相应的机制去解决脏读、不可重复读、幻读等问题(mysql的Rr机制和Next-Key Lock解决这个问题,下篇文章详细介绍)因为这些自带的机制, 下面的一些实验现象可能在某一数据库管理软件的默认机制下并不成立, 即我们并不能在所有数据库管理软件中看到所有的读现象所以此处我们暂且抛开具体的某个数

2021-02-26 17:26:25 110

原创 数据库事务(Transaction)详解

一.事务1.什么是事务事务是由一条或多条SQL语句组成的逻辑执行单元, 可以比喻成一个容器, 里面放的就是一堆SQL语句, 这些语句要么全部执行成功, 要么一个都无法执行成功(原子性)2.为什么使用事务对数据进行一系列的操作的时候, 为了防止这些操作中部分操作成功而另一些操作失败, 从而造成数据的不正确性, 这个时候我们就需要使用事务将其回滚到原来的状态3.如何使用事务关键字????开启事务begin; # 或者下面的语句 start transaction;????事

2021-02-26 15:47:35 171

原创 匿名函数在列表生成式中的应用产生的闭包函数延迟绑定问题

匿名函数在列表生成式 (推导式) 中的应用产生的闭包函数延迟绑定问题先看下面这个函数:def num(): return [lambda x: x * i for i in range(4)]print([func(2) for func in num()])再不运行结果的情况下心算下它的结果…是不是算到 [0,2,4,6] ?于是在pycharm里面运行了一下 : [6,6,6,6], 百思不得其解, 我们先来把匿名函数变成普通函数, 这样好理解一点 :def num():

2021-02-26 14:16:56 110

原创 慢查询优化的基本步骤、慢日志管理

十一.慢查询优化的基本步骤先运行看看是否真的很慢,注意设置SQL_NO_CACHEwhere条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)order by limit 形式的sql语句让排序的表优先查了解业务方使用场景加索引时参照建索引的几大原则观察结果,不符合预期继续从第一个步骤开始分析十二.慢日志管理慢

2021-02-25 19:42:38 65

原创 MySQL查询优化 : explain 详解

十.MySQL查询优化 : explain官方文档 : https://dev.mysql.com/doc/refman/8.0/en/explain-output.htmlps : 强调 rows 是核心指标,绝大部分 rows 小的语句执行一定很快。所以优化语句基本上都是在优化rows1.explain 是什么explain 简称查看执行计划,使用 explain 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL 是如何处理 SQL 语句的2.explain 如何使用语法 : ex

2021-02-25 19:41:18 117

原创 回表、覆盖索引、联合索引、最左前缀 ## 匹配原则、索引下推

九.回表、覆盖索引、联合索引、最左前缀匹配原则、索引下推1.创建一张表, 并插入记录create table user( -> id int not null auto_increment, -> name char(16) not null, -> age int not null, -> primary key(id), # id 为主键并设置索引(聚集索引) -> index index_name(nam

2021-02-25 19:40:12 124

原创 聚集索引、辅助索引、MySQL索引管理、如何正确建立索引、

四.聚集索引与辅助索引数据库中的 B+树 索引可以分为聚集索引(clustered index)和辅助索引(secondary index), 聚集索引与辅助索引相同的是:不管是聚集索引还是辅助索引,其内部都是B+树的形式,即高度是平衡的, 不同的是 :聚集索引的叶子节点存放的是一整行完整的信息, 而辅助索引的叶子节点存放的并非完整信息(下面介绍)1.聚集索引 (Clustered Index)InnoDB 聚集索引的叶子节点存储行记录,因此 InnoDB 必须要有且只有一个聚集索引如果表定义

2021-02-25 19:39:03 67

原创 索引介绍、索引原理、索引的数据结构(二叉排序树、平衡二叉树、B树、B+树)

引入本篇博客偏理论, 将会介绍一下知识:索引介绍索引原理索引的数据结构(二叉树—>平衡二叉树—>B树—>B+树)聚集索引与辅助索引MySQL索引管理创建和删除索引的语法创建索引后的测试 (查询速度的变化)如何正确使用索引回表覆盖索引联合索引最左前缀匹配索引下推MySQL查询优化 : explain慢查询优化的基本步骤慢日志管理一.索引介绍1.什么是索引索引是对数据库表中一列或多列的值进行排序的一种数据结构, 使用索引可以快速访问数据库表中的特定

2021-02-25 19:36:26 131 1

原创 Mysql安装(Linux)

引入前面一篇介绍了 Windows 版本的安装, 下面介绍 Linux 版本的安装一.清理服务的配置环境安装之前先清理干净服务配置环境, 避免带来不必要的影响1.检查是否已安装 MySQL 软件包????查看系统中已安装的 rpm 软件包列表并过滤出 mysqlrpm -qa | grep mysql????类似 mysql-libs-5.1.52-1.el6_0.1.x86_64 这种代表已经安装了, 我们将其卸载rpm -e mysql-libs-5.1.52-1.el6_0.1.x8

2021-02-24 22:54:30 67

原创 mysql多表查询之综合练习

一.练习1.查询每个部门最新入职的员工信息准备表,并插入数据create database emp_dep;use emp_depcreate table emp( id int primary key auto_increment, emp_name varchar(16) not null, sex enum("male","female") default "male", age int unsigned not null, entry_date

2021-02-23 21:06:00 113

原创 Mysql之流程控制( if、while、repeat、loop)

一.流程控制1.条件语句 : ifdelimiter %%%create procedure p01(in num int)begin if num = 1 then select 1; elseif num = 2 then select 2; else select 3; end if;end %%%delimiter ;2.循环语句while 循环delimiter %%%create procedure p0

2021-02-22 20:50:12 107

原创 Mysql之函数(内置函数、自定义函数(定义、调用、删除))

一.函数1.什么是函数上面介绍的存储过程类似于 python 中的自定义的函数而这里的函数指的是 mysql 提供的内置函数2.常用内置函数介绍????????mysql 内置函数官方文档????????????????mysql 内置函数中文文档????????数学函数ROUND(x,y) # 返回参数x的四舍五入的有y位小数的值RAND() # 返回 0 到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值聚合函数(常用于GR

2021-02-22 17:58:03 119

原创 Mysql之存储过程(无参、有参(in、out、inout)))

一.存储过程1.什么是存储过程存储过程中包含了一系列的 SQL 语句, 就类似于 Python 中定义的函数, 通过调用存储过程名(函数名)来执行其内部的一堆 sql 语句(Python代码)2.使用存储过程的优缺点优点 :用于替代程序写的 SQL 语句, 实现程序与 SQL 语句的解耦基于网络的传输, 只传"存储过程名"比传一堆的 SQL 语句的数据量小的多缺点 :程序的可扩展性非常低3.应用程序与数据库结合使用的三种开发模式第一种"应用程序" : 程序员自己

2021-02-21 18:32:16 147

原创 Mysql之事务

一.事务1.什么是事务事务是由一条或多条SQL语句组成的逻辑执行单元, 可以比喻成一个容器, 里面放的就是一堆SQL语句, 这些语句要么全部执行成功, 要么一个都无法执行成功(原子性)2.为什么使用事务对数据进行一系列的操作的时候, 为了防止这些操作中部分操作成功而另一些操作失败, 从而造成数据的不正确性, 这个时候我们就需要使用事务将其回滚到原来的状态3.事务的四大特征 (ACID)原子性(Atomicity) : 事务是一段程序的最小执行单元, 不可再分(就如同自然界的原子不可再分

2021-02-17 10:50:15 109

原创 Mysql之触发器

一.触发器1.什么是触发器对一张表进行 : 增、删、改操作的时候, 自动触发预先编译好的 SQL 语句的执行 (没有查操作)2.触发器的作用保证数据的完整性, 还可以起到类似于事务回滚的效果, 帮我们实现监控、日志等3.自动触发情况增前、增后删前、删后改前、改后4.注意点说明delimiter : 改变输入的结束符,默认情况下输入结束符是分号 “;”,下面我把它改成了自定义 “%%”,这样做的目的是把多条含分号的语句做个封装,全部输入完之后一起执行,而不是一遇到默认的分号结

2021-02-17 10:49:18 124

原创 Mysql之视图

一.视图1.什么是视图视图就是通过查询得到一张虚拟表(并非真实存在), 然后保存下来, 下次可以直接使用视图的本质也是一张表2.视图的作用如果要频繁的操作一张虚拟表, 就可以将其制作成视图后直接操作3.视图的使用语法 : create view [表名] as [查询表的语句]创建两个相互关联的表select * from emp;select * from dep;创建视图create view emp_dep_view as select *

2021-02-17 10:48:18 111

原创 MySQL数据备份与IDE工具介绍

一.IDE工具介绍 (Navicat)mysql 的可视化工具, 放标我们测试使用, 生产环境中还是推荐使用 mysql 命令行Navicat 正版 : http://www.navicat.com.cn/productsNavicat 15 绿化版 : http://www.downcc.com/soft/430673.html0.Navicat 官方使用手册超级详细 : https://www.navicat.com.cn/manual/online_manual/cn/navicat/win

2021-02-09 11:29:28 61

原创 pymysql模块的使用(mysql的增删改查,execute的注入问题,指针移动scroll,事务处理回滚rollback(),获取最后一条记录的自增id : lastrowid)

引入1.什么是 pymysql**pymysql **是 Python 中用来操作 mysql 的第三方模块(库)(就是一个mysql的客户端)pymysql 是 Python3 之后出来的模块, 而 Python2 中使用 mysqldb 操作数据库Django 中也可以使用 pymysql 连接 mysql 数据库2.pymysql 的安装终端命令行pip3 install pymysql # 或者使用下面的方式pip3 install -i http://pypi.douba

2021-02-08 14:57:32 124

原创 Mysql的安装之Linux平台(二进制包安装,rpm源码包安装,修改密码,设置远程访问,跳过授权表(skip-grent-table))破解密码)

引入前面一篇介绍了 Windows 版本的安装, 下面介绍 Linux 版本的安装一.清理服务的配置环境安装之前先清理干净服务配置环境, 避免带来不必要的影响1.检查是否已安装 MySQL 软件包????查看系统中已安装的 rpm 软件包列表并过滤出 mysqlrpm -qa | grep mysql????类似 mysql-libs-5.1.52-1.el6_0.1.x86_64 这种代表已经安装了, 我们将其卸载rpm -e mysql-libs-5.1.52-1.el6_0.1.x8

2021-02-05 14:02:41 60

原创 MySQL记录的详细操作(DML语句,INSERT插入,UPDATE更新,DELETE删除,SELECT查询,单表查询详细操作,多表查询详细操作)

引入1.什么是 DMLDML是 Data Manipulation Language 的缩写, 意思指数据库操纵语句, 负责对数据库对象运行数据访问工作的指令集, 常用的有查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)2.常用指令介绍INSERT : 实现对数据(记录)的插入UPDATE : 给定条件, 实现对数据的更新DELETE : 实现对数据的删除SELECT : 实现对表数据的查询一.INSERT (插入)1.语法介绍????语法一 :

2021-02-04 18:57:22 91

原创 记录相关操作之多表查询(交叉连接,笛卡尔积,内连接inner join,外连接left|right join,符合条件连接查询,子查询:IN,NOT IN,ANY,ALL,EXISTS)

引入MySQL是关系型数据库, 表与表之间是可以建立联系的, 相关联的两张表或多张表的查询就需要使用一些方法, 下面介绍 MySQL 的多表查询 :多表连接查询交叉连接内连接外连接符合条件连接查询子查询一.创建两张表(准备工作)五个部门, 九个员工(这个随意), 为了实验方便, 设置一个部门没有员工(FI), 设置一个员工不属于任何部门(Lina)create table dep( id int primary key auto_increment, name

2021-02-04 17:55:34 87

原创 记录相关操作之单表查询(查询select,from,条件where,分组group by,过滤having,去重distinct,排序order by,显示条数limit)

一.单表查询完整语法1.书写的语法顺序selectdistinctfromwheregroup byhavingorder bylimit2.完整语法select [字段1,字段2...] from [表名] where [条件] group by [字段] having [分组后的过滤条件] order by [排序字段+顺序] limit [显示条数];二.关键字执行的优先级关键字的优先级是帮助你正确且高效查询数据的前提, 需要重点

2021-02-03 21:42:27 130

ftp客户端服务端.zip

有客户端和服务端两个程序, 支持正则匹配文件名是否规范, 支持上传下载, 支持动态更换ip和端口, 支持进度条显示

2021-01-19

socket 实现cs通信.zip

socket 实现cs通信, 有客户端和服务端

2021-01-15

随机删除一半文件,灭霸程序.zip

灭霸的响指, 输入文件夹路径, 将该文件下和子文件夹下所有的文件随机删除一半

2021-01-14

博客园美化.zip,含HTML+js+css代码

博客园美化代码

2020-12-19

银行基本功能.zip+exe,直接可运行

银行基本功能.zip+exe,直接可运行

2020-12-19

atm_12_18.zip

ATM+购物车功能实现+管理员系统

2020-12-19

空空如也

空空如也

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

TA关注的人 TA的粉丝

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