- 博客(51)
- 收藏
- 关注
原创 线性表:数组、链表、栈、队列
线性表:数组、链表、栈、队列数组如何实现随机访问?数组如何实现下标随机访问纠正数组的错误认识低效的插入和删除警惕数组的访问越界问题 线性表:数组 链表 栈 队列 。 线性表上的数据最多只有前和后两个方像) 非线性表:树、图 数组 如何实现随机访问? 数组是一种线性数据结构,用连续的存储空间存储相同类型数据。 所以数组可以随机访问,但对数组进行删除插入,为了保证数组的连续性,就要做大量的数据搬移工作。 数组如何实现下标随机访问 计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据
2022-07-04 19:55:20
190
原创 【无标题】
I/O 模型简单理解为:就是使用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。Java 支持 3 种网络编程模型:BIO、NIO、AIO。Java BIO:(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不作任何事情会造成不必要的线程开销。Java NIO:,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求会被注册到多路复用器上,多路复用器轮询到有 I/O 请求就会进行处理。Java AIO:,AI
2022-07-04 19:54:44
390
原创 mysql 锁
解决并发事务带来问题的两种基本方式 一致性读(Consistent Reads) 读操作利用多版本并发控制(MVCC),写操作进行加锁。 锁定读(Locking Reads) 读、写操作都采用加锁的方式。 共享锁和独占锁 共享锁,英文名:Shared Locks,简称S锁。在事务要读取一条记录时,需要先获取该记录的S锁。 独占锁,也常称排他锁,英文名:Exclusive Locks,简称X锁。在事务要改动一条记录时,需要先获取该记录的X锁。 锁定读的语句 // 对读取的记录加S锁 SELEC.
2021-03-28 18:55:18
279
原创 数据结构与算法之美知识点总结
复杂度 数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 数组支持随机访问,根据下标随机访问的时间复杂度为 O(1)。 (插入删除)最好情况时间复杂度为 O(1);如果删除开头的数据,则最坏情况时间复杂度为 O(n);平均情况时间复杂度也为 O(n) 每次的删除操作并不是真正地搬移数据,只是记录数据已经被删除。当数组没有更多空间存储数据时,我们再触发执行一次真正的删除操作,这样就大大减少了删除操作导致的数据搬移。 对于业务开发,直接使用容器就足够了,省
2021-03-13 17:25:13
313
原创 数据结构
数组Array 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。 是连续的内存空间和相同类型的数据,它才有了一个堪称“杀手锏”的特性:“随机访问”。但有利就有弊,这两个限制也让数组的很多操作变得非常低效,比如要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作
2021-01-23 15:42:43
179
原创 排序算法
排序 平均时间复杂度 最佳时间复杂度 最差时间复杂度 空间复杂度 排序方式 稳定性 冒泡排序 O(N^2) O(N) O(N^2) O(1) In-place 稳定 插入排序 O(N^2) O(N) O(N^2) O(1) In-place 稳定 选择排序 O(N^2) O(N) O(N^2) O(1) In-place 不稳定 希尔排序 O(NlogN) O(N) O(N^2) O(1) In-place 不稳定 /* 发现无论什么排序。都需要对满足条件的元素进...
2021-01-23 15:41:17
154
原创 排序
冒泡 public static int[] bubbleSort(int[] arr) { if(arr == null || arr.length <= 1){ return arr; } int len = arr.length; int temp; for (int i = 0; i < len-1; i++) { for (int j = 0; j &
2020-12-23 16:30:39
141
原创 Markdown
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-12-14 23:19:25
597
原创 java中Class对象详解和类名.class, class.forName(), getClass()区别
Class对象的生成方式如下: 1.类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Class.forName(“类名字符串”) (注:类名字符串是包名+类名) 说明:装入类,并做类的静态初始化,返回Class的对象 3.实例对象.getClass() 说明:对类进行静态初始化、非静态初始化;返回引用运行时真正所指的对象(因为:子对象的引用可能会赋给父对象的引用变量中)所属的类的C
2020-11-20 15:43:44
510
原创 多线程
进程 进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。 和多线程相比,多进程的缺点在于: 创建进程比创建线程开销大,尤其是在Windows系统上; 进程间通信比线程间通信要慢,因为线程间通信就是读写同一个变量,速度很快。 而多进程的优点在于: 多进程稳定性比多线程高,因为在多进程的情况下,一个进程崩溃不会影响其他进程,而在多线程的情况下,任何一个线程崩溃会直接导致整个进程崩溃。 多线程 Java语言内置了多线程支持:一个Java程序实际上是一个JVM进程,JVM进程用一个主
2020-08-17 22:00:39
529
原创 JDBC
查询 public class Main { public static void main(String[] args) throws SQLException { // JDBC连接的URL, 不同数据库有不同的格式: String JDBC_URL = "jdbc:mysql://localhost:3306/learnjdbc?useSSL=false"; String JDBC_USER = "root"; String JD
2020-08-17 18:15:32
547
原创 Maven基础
Maven是一个Java项目的管理和构建工具: Maven使用pom.xml定义项目内容,并使用预设的目录结构; 在Maven中声明一个依赖项可以自动下载并导入classpath; Maven使用groupId,artifactId和version唯一定位一个依赖 依赖关系 compile 说明 示例 compile 编译时需要用到该jar包(默认) commons-logging test 编译Test时需要用到该jar包) junit runtime 编译时不需要,但运行时需
2020-08-17 15:38:17
682
原创 php实现阿里云签名类
<?php namespace App\Library\Ali; class VideoInterface{ public $data; public $accessKeyId = ""; public $accessKeySecret = ""; public $url; public function __construct($actionArray,$url){ $this->url = $url; date_de
2020-08-06 18:30:35
1211
原创 MYSQL基于成本的优化
什么是成本 I/O成本 我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。 CPU成本 读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。 对于InnoDB存储引擎来说,页是磁盘和内存之间交互的基本单位,设计MySQL的大叔规定读取一个页面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条
2020-06-23 19:59:53
1546
原创 两个表连接的原理
连接简介 连接的本质 //这两个表都有两个列,一个是INT类型的,一个是CHAR(1)类型的,填充好数据的两个表长这样: mysql> SELECT * FROM t1; +------+------+ | m1 | n1 | +------+------+ | 1 | a | | 2 | b | | 3 | c | +------+------+ 3 rows in set (0.00 sec) mysql> SELECT * FROM t2; +
2020-06-23 17:05:45
2610
原创 单表访问方法
//eg single_table表建立了1个聚簇索引和4个二级索引 CREATE TABLE single_table ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), key2 INT, key3 VARCHAR(100), key_part1 VARCHAR(100), key_part2 VARCHAR(100), key_part3 VARCHAR(100), common_fi
2020-06-23 15:22:22
685
原创 InnoDB的表空间
页面通用部分 数据页,也就是INDEX类型的页由7个部分组成 File Header:记录页面的一些通用信息 File Trailer:校验页是否完整,保证从内存到磁盘刷新时内容的一致性。 独立表空间结构 区(extent)的概念 设计InnoDB的大叔们提出了区(英文名:extent)的概念。对于16KB的页来说,连续的64个页就是一个区,也就是说一个区默认占用1MB空间大小。不论是系统表空间还是独立表空间,都可以看成是由若干个区组成的,每256个区被划分成一组。画个图表示就是这样: 从上图
2020-06-17 20:56:29
746
原创 MySQL 的数据目录
数据库在文件系统中的表示 每个数据库都对应数据目录下的一个子目录,或者说对应一个文件夹 表在文件系统中的表示 这个后缀名为.frm是以二进制格式存储的,我们直接打开会是乱码的~ InnoDB是如何存储表数据的 InnoDB设计了一个表空间或者文件空间(英文名:table space或者file space)的概念,这个表空间是一个抽象的概念,它可以对应文件系统上一个或多个真实文件(不同表空间对应的文件数量可能不同)。 系统表空间(system tablespace) 认情况下,InnoDB会在数据目录下创
2020-06-17 17:38:31
704
原创 B+树索引
B+树索引 InnoDB数据页的7个组成部分,知道了各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录 没有索引的查找 由于我们并不能快速的定位到记录所在的页,所以只能从第一个页沿着双向链表一直往下找,在每一个页中根据我们刚刚唠叨过的查找方式去查找指定的记录。 索引 为了故事的顺
2020-06-16 22:35:46
2220
1
原创 InnoDB
InnoDB是一个将表中的数据存储到磁盘上的存储引擎 将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB 在Compact行格式中,把所有变长字段的真实数据占用的字节长度都存放在记录的开头部位,从而形成一个变长字段长度列表,各变长字段数据占用的字节数按照列的顺序逆序存放,我们再次强调一遍,是 逆序 存放! 变长字段长度列表 假设某个字符集中表示一个字符最多需要使用的字节数为W,也就是使用SHOW CHARSET语句的结果中的Maxlen列,比方说utf8
2020-06-13 19:24:01
2948
原创 字符集和比较规则
一些重要的字符集 ASCII字符集 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式: 'L' -> 01001100(十六进制:0x4C,十进制:76) 'M' -> 01001101(十六进制:0x4D,十进制:77) ISO 8859-1字符集(latin1) 共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来
2020-06-13 18:16:30
892
原创 mysql配置和系统变量
/usr/local/mysql/bin 关于配置文件路径 which mysqld /usr/sbin/mysqld --verbose --help | grep -A 1 'Default options' Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 从上图可以看出
2020-06-13 17:43:56
680
原创 顶尖 API 文档管理工具 (Yapi)
使用 Docker 构建 Yapi 1、启动 MongoDB docker run -d --name mongo-yapi mongo 2、获取 Yapi 镜像,版本信息可在 阿里云镜像仓库 查看 docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi 3、初始化 Yapi 数据库索引及管理员账号 docker run -it --rm \ --link mongo-yapi:mongo \ --entrypoint npm \ --
2020-06-13 16:29:43
834
原创 ES
_search搜索 http://localhost:9200/demo/_search?q=city:beijing&pretty took -Elasticsearch运行查询所需时间(毫秒) time_out 搜索请求是否超时 _shards 搜索了多少分片,以及成功,失败或跳过了多少分片 max_score 找到的最相关文件的文档 hits.total.value 找到了多少匹配...
2020-03-23 15:50:27
539
原创 mysql笔记1
查询缓存 MySQL服务器并没有人聪明,如果两个查询请求在任何字符上的不同(例如:空格、注释、大小写),都会导致缓存不会命中。另外,如果查询请求中包含某些系统函数、用户自定义变量和函数、一些系统表,如 mysql 、information_schema、 performance_schema 数据库中的表,那这个请求就不会被缓存 MySQL的缓存系统会监测涉及到的每张表,只要该表的结构或者数据被修...
2020-03-11 09:53:28
518
原创 http 前端
跨域 什么是跨域? 由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。存在跨域的情况: 网络协议不同,如http协议访问https协议。 端口不同,如80端口访问8080端口。 域名不同,如qianduanblog.com访问baidu.com。 子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。 ...
2020-02-19 00:09:38
597
原创 服务器
说下一些你常用的linux命令 top top程序提供运行系统的动态实时视图,它可以显示系统概要信息以及当前由Linux内核当前管理的任务列表 df命令 Linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况 ps命令 要对系统中进程进行监测控制,用 ps 命令满足你 和grep命令的一起使用ps -aux | grep test 找到test进程信息 free命令 fr...
2020-02-19 00:01:59
624
原创 mysql
Mysql 中 MyISAM 和 InnoDB 的区别有哪些 InnoDB 支持事务、外键、行级锁 MyISAM 表锁 InnoDB 是聚集索引,MyISAM 是非聚集索引 MyISAM:支持 FULLTEXT类型的全文索引 InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。 MyISAM:如果执行大量的SELECT,MyISA...
2020-02-18 23:39:03
524
原创 PHP消息队列实现及应用
目前对消息队列并不了解其原理,本篇文章主要是通过慕课网学习归纳的一些笔记,为后续学习打下基础。 众所周知在对网站设计的时候,会遇到给用户“群发短信”,“订单系统有大量的日志”,“秒杀设计”等,服务器没法处理这种瞬间迸发的压力,这种情况要保证系统正常有效的使用,就需要“消息队列”的帮助。本篇主要通过消息队列的思路进行学习。 主要了解如下知识: 1、队列是个什么东西,他能干什么? 2、对列的应用场景有...
2020-02-18 22:17:02
587
原创 redis
Redis与Memcached的区别与比较 1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。 2 、Redis支持数据的备份,即master-slave模式的数据备份。 3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecac...
2019-08-19 09:18:48
597
原创 PHP面向对象
面向对象的三大特征是:封装,继承,多态。 final 关键字禁止继承和重载。 instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例: <?php class MyClass { } class NotMyClass { } $a = new MyClass; var_dump($a instanceof MyClass); var_dump($a insta...
2019-04-23 14:20:19
509
原创 PHP基础2
include 和 require require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。 require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 include 生成一个警告(E_WARNING)...
2019-04-10 17:53:44
559
原创 PHP基础1
数据类型 integer float string boolean array object 还有特殊的 NULL:被赋值为 NULL或者尚未被赋值 resource :资源是通过专门的函数来建立和使用的。 常量 常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 注意: 常量在整个脚本中都可以使用...
2019-04-10 10:28:53
562
原创 laravel-admin隐藏按钮
$form //表单bottom $form->disableReset(); $form->disableEditingCheck(); $form->disableViewCheck(); //表单右上角 $form->tools(function (Form\Tools...
2019-04-08 11:40:08
5060
3
原创 laravel
生成model php artisan make:model Models/CoursewareResource 生成控制器 php artisan admin:make Coursewares\CoursewareResourceaaController --model=App\Models\CoursewareResource 执行定时任务 php artisan schedule:run ...
2019-04-02 14:20:49
873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅