学习笔记归档
文章平均质量分 53
用来归档已经学完的笔记
快乐的提千万
据说喜欢分享的,后来都成了大神
展开
-
【数据结构】栈和队列
栈栈是一种重要的线性结构。是我们前面讲过的线性表的一种具体形式栈是限定仅在表尾进行插入和删除操作的线性表由于栈本身就是一个线性表,那么我们讲的线性表的顺序存储和链式存储,对于栈来说,都是适用的。我们把允许插入和删除的一端称为栈顶top,另一端称为栈底bottom,不含任何元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO栈的插入操作,叫做进栈,也称为压栈,入栈栈的删除操作,叫做出栈,也称为弹栈抽象数据结构ADT 栈(stack)Data原创 2020-10-07 08:48:05 · 208 阅读 · 0 评论 -
【数据结构】 简介
数据数据:万事万物皆是数据。数据对象:将性质相同的数据抽象起来,就是数据对象。比如人。数据元素:数据对象的组成部分,比如眼睛、鼻子、手。是分析问题需要关注的地方。数据项:最小的组成部分,比如水、蛋白质。具有原子性,也就是不可再分性。但是一般分析问题并不会关注。分类数据类型指的是存储类型,比如整型、浮点型...原创 2019-08-18 20:21:37 · 256 阅读 · 0 评论 -
【数据结构】线性表
文章git地址:https://gitee.com/HappyTeemo/c_data_structure线性表定义定义:由零个(空表)或多个数据元素组成的有限序列。既然是序列,则表示有序。而且强调了有限。无限的数列只存在于数学中。抽象定义:ADT: 线性表ListData: 线性表的数据对象集合为{a1,a2,...,an},每个元素类型为DataType。除了第一个无前驱,最后一个无后继, 其他每个元素都有一个字节前驱和直接后继结点。数据元素间关系一对一。Oper原创 2020-10-06 11:43:23 · 216 阅读 · 0 评论 -
【数据结构】静态链表
引入没有指针,怎么实现链表?使用数组来代替指针来描述单链表,叫做静态链表。实现方法叫做游标实现法。原理其实游标就是指针,指向下一个的位置。如上图,从999开始,指针是1,则指向第一个下标,对应的是A。下标1的游标是2,对应的数据是C。则顺序就是 A–C--D–E优缺点优点(和单链表一样)在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的确定。缺点(比单链表还惨)没有解决连续存储分配(数组)带来的表长难以确定的问题失去原创 2020-10-06 12:56:32 · 104 阅读 · 0 评论 -
【go写设计模式】单例模式--全都用我的
单例模式目的减少资源消息,只用初始化一次就可以了。可以统一调用者,方便管理。主要针对频繁使用的类。比如mysql、redis等。实现懒汉式:在使用的时候再初始化。饿汉式:最开始就初始化。...原创 2021-01-18 14:30:12 · 91 阅读 · 0 评论 -
【设计模式】最快理解设计模式的几大原则
设计模式的真正境界,就是看懂,然后忘记。单一职责原则只干一件事。这个粒度越小,就越好复用,重复代码就越少,但是代码量也越多,需要自己权衡。里氏替换原则子类可以扩展父类的功能,但不能改变父类原有的功能。可以尽量减少重复作用的类,也防止调用父子类同名方法造成不同的效果。问题:继承的层级过多,子类会很庞大,如果并不需要用父类的方法, 就很冗余。例子:父亲会移动,用的腿。儿子也会移动,用的车。调用者想用腿走,但是调用儿子的移动,就会有问题。所以要儿子实现开车方法,让调用者自己选择。开闭原则原创 2021-01-16 16:26:27 · 153 阅读 · 1 评论 -
【设计模式】思考-设计模式有什么用?
一般开始学习一个新的知识前,我会思考为什么要学,他对于我的工作和生活有什么帮助?对于设计模式,主要是为了应对代码难以维护的问题。比如结构混乱,复用性太低,或者一个新需求需要改很多旧代码。那么,什么是好的软件设计?高内聚,低耦合好维护,好复用什么是垃圾的设计?新需求需要改的地方很多,甚至要重写。改一个地方发现牵一发而动全身,根本不敢改。全是if else ,要逐步去加判断。让调用者去关心实现逻辑。也就是我用一个方法或者类,还要把这个类理解一遍。总体的思想:抽象、复用、单一职责。其实原创 2021-01-16 14:18:15 · 112 阅读 · 0 评论 -
【算法入门】 算法基本概念
基本特性输入输出有穷性:会结束,且这个时间是可以接受的。如果一个算法要运行100万年,谁会用?确定性:固定的输入,会得到可估计的输出。可行性:在有限次数结束。和有穷性一样,也要可以接受的次数。要求正确性语法正确合理输入非法输入刁难的测试数据可读性健壮性时间效率高,存储量低。度量方式事后统计。也就是做实验,数据量大的时候直接放弃。事前统计。也就是数学计...原创 2019-08-18 20:27:19 · 292 阅读 · 0 评论 -
【算法】限流算法简介
令牌桶算法令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;请求要消耗等比例的令牌才能被处理;令牌不够时,请求被缓存。漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理);来不及流出的水存在水桶中(缓冲),以固定速率流出;水桶满后水溢出(丢弃)。这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。区别漏桶漏桶的出水速度是恒定的,那么意味着如果瞬时大流量的话,将有大部分请求被丢弃掉(也就是所谓的溢出)。令牌原创 2020-10-20 20:30:22 · 114 阅读 · 1 评论 -
编程范式
编程范式(programming paradigm),指的是计算机编程的基本风格或典范模式。借用哲学的术语,如果说每个编程者都在创造虚拟世界,那么编程范式就是他们置身其中自觉不自觉采用的世界观和方法论。我们知道,编程是为了解决问题,而解决问题可以有多种视角和思路,其中普适且行之有效的模式被归结为范式。比如我们常用的“面向对象编程”就是一种范式。由于着眼点和思维方式的不同,相应的范式自然各有侧重和倾转载 2016-08-05 16:05:11 · 558 阅读 · 0 评论 -
画圆
圆分为两种,一种空心圆环,一种实心圆饼。###先说圆环:先设立圆心:鼠标第一次按下时候取到的坐标设立半径:根据鼠标第二次按下时候取得的坐标求距离。设立点的数量,从极限的角度说,圆其实是一个无线多边的多边形,只是我们眼睛看起来是个圆就行了, 这里测试发现90个点就已经显得比较圆了,如果要求更高则设定更多个点。然后设定第一个点,然后根据角度一次向一个方向打点,直到回到第一个点。下面是个例子代码原创 2017-04-29 11:28:33 · 1184 阅读 · 0 评论 -
聊天室
解决办法:ubuntu系统中缺少一个套件 ncurses devel ,把此套件安装下即可$ sudo apt-get install libncurses5-dev/*功能: 在同一台服务器上ssh登录的用户可以群聊(聊天室)原理: 1、通过roomNo.来区分不同的房间或群组; 2、以roomNo.作为key来创建一块共享内存,来保存进入到该room的用户列表;转载 2017-11-16 10:29:25 · 362 阅读 · 0 评论 -
加密算法:非对称加密
常见的非对称加密有:RSA算法,椭圆曲线加密算法等。(来源于《我的第一本算法书》)如果第三者拦截了公钥,给了他的公钥,再拦截你的密文,则可以通过自己的私钥解密,得到原文。原创 2022-06-27 20:51:41 · 389 阅读 · 0 评论 -
数据一致性的一些思考
结论没有银弹,需要根据自己的业务场景做取舍。业务量有多少,需要主从读写分离么,需要分库分表么?是读多还是写多?是要最终一致性,还是强一致性?对缓存一致性的要求是多少?1分钟?一秒钟?查询结构是怎样的。是需要多表合并,还是多行合并,还是多库合并?该如何容灾?更新、删除缓存失败你能不能接受?写数据库失败怎么办?如果删除缓存失败,你还允不允许更新数据库?要根据实际业务场景来定制方案。DB主从一致大部分业务场景都是读多写少,而且数据库(mysql)写很少看到写挂的,都是读有瓶颈。所以主从原创 2021-07-30 21:01:26 · 292 阅读 · 1 评论 -
数据库优化之路(纯理论)
初心数据库基本服务就是提供数据的读和写,不要被海量技术淹没。不管怎么存储都需要落盘,那落盘的瓶颈在哪里?一个是寻址时间,另一个是内核态用户态的切换以及数据拷贝。所以改进点就在于,减少寻址时间,对应的就是顺序的写。不忘原理和目标,才能找到更准确的方法。很多人一谈到数据库优化,就是分库分表,恨不得把所有的新技术都用上,但是要知道,程序世界是没有银弹的,每种技术都会有他的弊端,要找准原因,兴许只是少加了个索引呢?优化方案先盘查性能瓶颈,看是查询慢还是更新慢。看业务是写多还是读多,是因为表的设计导致的复杂查原创 2020-10-05 10:11:17 · 196 阅读 · 0 评论 -
【MySQL性能优化】01.性能标准
MySQL性能标准QPS:Queries Per Second,每秒查询率。执行查询增加。TPS:Transactions Per Second,也就是事务数/秒。执行事务增加。PV:页面被浏览的次数。打开页面就增加。并发数: 系统同时处理的request/事务数响应时间: 一般取平均响应时间QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间例如:某...原创 2019-05-18 19:36:15 · 270 阅读 · 0 评论 -
【MySQL基础学习】大纲
MySQL的基础学习数据类型索引增删改查视图存储过程事务、隔离级别、锁备份、导出、恢复MySQL性能优化硬件优化数据类型优化索引、表结构优化查询优化MySQL架构高性能、高可用、可扩展分库分表读写分离...原创 2020-10-05 09:08:19 · 147 阅读 · 0 评论 -
mysql判断TIMESTAMP时间是否为今天
select count(*) from history_visitor where date_format(visit_time,'%Y-%m-%d')= date_format(now(),'%Y-%m-%d')原创 2020-10-05 10:12:35 · 950 阅读 · 0 评论 -
【MySQL基础学习】数据类型
数据类型长度类型分两种:一 是严格限定空间,通过字节来限定长度,超出部分抛弃。比如char。二 是使用额外的字节来标记某个地址空间的字节是否存储了数据,比如varchar。显示宽度仅仅影响显示效果,不影响存储、比较、长度计算等等任何操作。数值类型整型int(M) M表示总位数默认存在符号位,unsigned 属性修改显示宽度,如果某个数不够定义字段时设置的位数,则前面以0补填,zerofill 属性修改例:int(5) 插入一个数’123’,补填后为’00123’ 设置后会变成无符号原创 2020-10-05 09:24:34 · 326 阅读 · 1 评论 -
mysq联表查询
select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;select * from tbl_dept a right join tbl_emp b on a.id=b.deptId;select * from tbl_dept a right join tbl_emp b on a.id=b.deptId .原创 2021-07-05 14:00:03 · 138 阅读 · 0 评论 -
【MySQL性能优化】02. 服务器硬件
1. CPU注意事项64位的CPU一定要在64的系统下。对于并发比较高的场景,CPU数量比频率重要。对于CPU密集型场景和复杂SQL,频率更重要。2. 内存3. 磁盘IO选择:机械硬盘:存储空间大,价格低,但是读写较慢。选择:容量,速度,访问时间,主轴转速,物理尺寸。固态硬盘:随机读写也非常快,适合并发。RAID:磁盘冗余队列,将多个小硬盘组成大硬盘R...原创 2019-05-18 19:59:53 · 323 阅读 · 0 评论 -
【MySQL基础学习】数据库的事务和锁
一、事务概念:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行例如:A给B转帐,这里存在两个操作,一个是A账户扣款1000元,两一个操作是B账户增加1000元,两者就构成了转账这个事务。两个操作都成功,A账户扣款1000元,B账户增加1000元,事务成功两个操作都失败,A账户和B账户金额都没变,事务失败事务的操作:先定义开始一个事务,然后对数据作修改操作,这时如果提交(COMMIT),这些修改就永久地保存下来,如果回退(ROLLBACK),数据库管理系统将放弃您所作的所有修改而原创 2020-10-05 10:59:32 · 216 阅读 · 0 评论 -
【MySQL性能优化】03. 数据库结构设计和优化
一、目的减少数据冗余,但不是完全没有。避免异常:插入异常,一个实体依赖另一个实体;更新异常,更新一个,其他的都要更新。二、设计步骤:需求分析:全面了解产品设计的存储需求、数据处理需求。数据的安全性和完整性。逻辑设计:设计数据的逻辑存储结构。解决数据冗余和数据维护异常。物理设计:表结构设计。关系型和非关系型数据库(缓存)。维护优化:根据实际情况对索引和存...原创 2019-06-12 20:37:01 · 569 阅读 · 0 评论 -
mysql视图的作用(详细)
原文:https://www.cnblogs.com/sustudy/p/4166714.htmlMySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,MySQL视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。转载 2020-10-05 10:23:52 · 227 阅读 · 0 评论 -
PHP设计模式-观察者模式
其实就是事件-监听。<?phprequire_once 'Loader.php';//事件定义 abstract class EventGenerator{ private $observers = array(); function addObserver(Observer $observer){ $this->observers[]=$observer; } f...原创 2019-01-14 19:36:43 · 153 阅读 · 0 评论 -
【记录 撸一个博客系统】 02.laravel基础学习
参考:https://xueyuanjun.com/post/19426环境必备PHP >= 7.1.3PHP OpenSSL 扩展PHP PDO 扩展PHP Mbstring 扩展PHP Tokenizer扩展PHP XML 扩展PHP Ctype 扩展PHP JSON 扩展PHP BCMath 扩展目录结构app:存放应用核心代码,如模型、控制器、命令、服务等bootstrap:存放 Laravel 框架每次启动时用到的文件config:用于存放项目所有配置文件原创 2020-08-08 13:43:07 · 167 阅读 · 0 评论 -
MySql到MySqli
“` mysql_affected_rows — (mysqli_affected_rows()) 取得前一次 MySQL 操作所影响的记录行数mysql_client_encoding — (mysqli_character_set_name()) 返回字符集的名称(返回当前连接的默认字符集名称。)mysql_close — (mysqli_close()) 关闭 MySQL ...原创 2018-08-21 10:47:07 · 1162 阅读 · 0 评论 -
PHP Redis简介
NoSQLNoSQL ,(Not Only SQL),泛指非关系型数据库。 特点:NoSQL 通常是以key-value形式存储, 不支持SQL语句, 没有表结构。 RedisRedis是Remote Dictionary Server(远程数据服务)的缩写,是一种观念缓存数据库,支持存储的value类型很多,包括string(字符串)、hash(哈希)、list(链表)、s...原创 2018-08-21 10:44:36 · 293 阅读 · 0 评论 -
PHP 获取调用者的方法和行数(查看堆栈调用)
$array = debug_backtrace();foreach ($array as $row) { var_dump($row['file'] . ':' . $row['line'] . '行,调用方法:' . $row['function']);}原创 2019-05-16 20:24:34 · 1083 阅读 · 0 评论 -
PHP设计模式-注册模式
很多框架都用了容器这个概念,其实就是来源于注册模式。将很多类都实例化好,放到一个数组里面,根据你的需求然后取出来用。<?phpclass Register{ protected static $objects; //存放对象的容器(数组) function set($alias,$object){//将对象注册到全局容器中 self::$objects[$alias]=$ob...原创 2019-01-14 19:10:38 · 227 阅读 · 0 评论 -
PHP 判断操作系统位数
/** * 判断操作系统位数 */function is_64bit() { $int = "9223372036854775807"; $int = intval($int); if ($int == 9223372036854775807) { /* 64bit */ return true; } else if ($int...原创 2019-05-16 20:27:57 · 699 阅读 · 0 评论 -
PHP设计模式-工厂模式
工厂模式顾名思义,仿佛一个工厂,你给我订单,我给你产品。适用于:多种数据库连接、同一功能的不同实现。class ConnectionFactory{ function static getConnection($db_class_name) { $db_class_name = strtolower($db_class_name); if (include_once 'Driv...原创 2019-01-14 18:57:30 · 167 阅读 · 0 评论 -
【记录 撸一个博客系统】 07.登陆注册-看看laravel自带的鉴权-翻车了
开箱即用php artisan make:auth然而:翻车+1开始百度https://stackoverflow.com/questions/34545641/php-artisan-makeauth-command-is-not-defined大约就是laravel6以后就换成组件了。莫不是不自信?开始造作composer require laravel/ui --dev#很慢:composer config repo.packagist composer https://pa原创 2020-08-09 16:01:13 · 219 阅读 · 0 评论 -
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes
经历了一堆花里胡哨的问题,终于开始看鉴权了。。。默认配置默认的配置是这样。也就是这几个接口是session这个是token试一下然后这个目录多了个session内容:a:4:{s:6:"_token";s:40:"BWaXPuNaTWrvRs5TJE9fCh1UQYJmyscg3dyJ3Dlz";s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:9:"_previous";a:1:{s:3:"url";s:29:"http:原创 2020-08-15 11:37:10 · 542 阅读 · 0 评论 -
【记录 撸一个博客系统】11.登陆注册-看看laravel自带的鉴权 源码分析
浅析入口Model<?phpnamespace App;use Illuminate\Contracts\Auth\MustVerifyEmail;//注意这里use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;class User extends Authenticatable{ use Notifiable; /**原创 2020-08-16 17:16:37 · 229 阅读 · 0 评论 -
【记录 撸一个博客系统】 08.登陆注册-看看laravel自带的鉴权-No input file specified
报错在服务器上安装了auth,同步到本地,报错:No input file specified百度:https://www.cnblogs.com/llkbk/p/10007217.html虚拟机测试nginx 遭遇 Noinput file specified,多方查找终于找到解决办法1、 php.ini(/etc/php5/cgi/php.ini)的配置中这两项cgi.fix_pathinfo=1 (这个是自己添加的)doc_root=2、nginx配置文件/etc/nginx/sit原创 2020-08-12 16:32:32 · 256 阅读 · 0 评论 -
【记录 撸一个博客系统】 01.开始
前言学习编程的最好方式就是做一个自己喜欢的东西,然后不断添加,过程中,就会学到很多有意思的东西,加上作品的成就感,会让自己走的更远。一直想做个博客系统,不是为了挑战什么,只是想看看这些博客系统是怎么实现的。比如文章怎么存储,标签怎么管理,SEO如何优化。当然,前端小白的我界面估计要从头开始了。慢慢来吧,github地址:https://github.com/HappyTeemo7569/blog_laravel。1、搭建环境本地 laragon。官网下载:https://laragon.org/原创 2020-08-07 08:28:03 · 416 阅读 · 0 评论 -
PHP设计模式-单例模式
单例模式(Singleton pattern)为了当一个类仅有一个实例,适用于全局实例,比如:数据库连接、Redis连接、打印等。例子(来源于网络):class Singleton { private static $_instance;//保存实例化出来的单例 //构造函数私有化,确保单例类不能通过其它对象 new 出来 private final function __constr...原创 2019-01-14 18:50:44 · 115 阅读 · 0 评论 -
【记录 撸一个博客系统】 03.登陆注册-查看常用鉴权
常见的鉴权方式HTTP Basic Authenticationtokensession + cookieOAuthHTTP Basic Authentication参考https://www.jianshu.com/p/4a00c0c3bf1dpostman里面:注销认证成功后每次请求请求头都会带上Authentication及里面的内容,那么如何做到让这次登陆失效的?解决:专门设置一个专门用于注销的账号,客户端主动去修改请求头Authorization信息,当服务端读取到是原创 2020-08-08 15:05:23 · 163 阅读 · 0 评论 -
【记录 撸一个博客系统】 10.登陆注册-看看laravel自带的鉴权 聊聊JWT
JWT官网https://jwt.io/introduction/参考https://www.jianshu.com/p/a2efb2c8dcdehttps://segmentfault.com/a/1190000009981879https://www.jianshu.com/p/606cc5f0b936https://www.jianshu.com/p/d1644e281250https://learnku.com/articles/17883什么是JWTJson web token (原创 2020-08-15 13:48:25 · 603 阅读 · 0 评论