12 2020 档案

摘要:算法 程序 = 数据结构+算法 算法简单来说,就是处理数据,解决实际问题的方法。 算法的特性 1.有穷性,一个算法必须总在执行有穷步后结束,且每一步都可在有穷时间内完成; 2.确定性,算法中的每条指令必须有确切的含义,相同的输入必须得到相同的输出; 3.可行性,算法中描述的操作,必须能用现在已经具备 阅读全文
posted @ 2020-12-31 22:47 luytest 阅读(104) 评论(0) 推荐(0)
摘要:数据 能输入计算机并能被计算机处理的各种符号的集合。 是信息的载体,是对客观事物符号化的表示,能够被计算机识别、存储和加工。 包括数值型数据(整数,实数等)和非数值型数据(文字,图像,声音,图形等)。 数据元素和数据项: 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,例如上 阅读全文
posted @ 2020-12-31 19:49 luytest 阅读(609) 评论(0) 推荐(0)
摘要:先来两个简单案例! 1. 查询条件有范围的情况,单表 此时这个表没有建索引,所以执行计划分析sql后得出的结论是,性能辣鸡,注意type是All,全表遍历,extra有using filesort,文件排序,太辣鸡了。 按照最简单的想法,那我给categroy_id,comments,views三个 阅读全文
posted @ 2020-12-29 19:48 luytest 阅读(131) 评论(0) 推荐(0)
摘要:模拟优化器执行SQL查询语句,从而知道数据库如何处理SQL,分析查询语句或表结构的性能瓶颈。 mysql explain explain + sql 执行结果字段解释: ID 相同,执行顺序由上至下 执行顺序是t1,t3,t2,select_type提示都是简单查询 如果是嵌套子查询,id会递增,i 阅读全文
posted @ 2020-12-28 20:28 luytest 阅读(91) 评论(0) 推荐(0)
摘要:1.什么是索引? 索引是帮助数据库高效获取数据的数据结构,本质是通过排序来快速查找。 除了数据,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据的地址(硬盘位置),这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 索引本身也很大,不可能全在内存中,所以往 阅读全文
posted @ 2020-12-28 15:08 luytest 阅读(194) 评论(0) 推荐(0)
摘要:MySql存储引擎常用的有MylSAM和InNoDB 现在大部分都是用InnoDB。 阅读全文
posted @ 2020-12-27 22:21 luytest 阅读(76) 评论(0) 推荐(0)
摘要:表结构 成绩表数据太少了,我加了几条,这是新的成绩表数据 1. 查询课程编号为0001的课程分数比0002的课程分数高的同学的学号和分数; 思路:分别查出成绩表中课程编号是0001和0002的记录,作为两个子查询 inner join起来,这样就形成了一行有 学号,0001课程分数,0002课程分数 阅读全文
posted @ 2020-12-23 17:52 luytest 阅读(701) 评论(0) 推荐(0)
摘要:1.什么是锁? 多个线程同时想操作同一个资源(数据,对象)时,可能会并发访问的错误,例如都修改同一个数据,这个时候我们需要锁。 锁就是当一个线程操作一个共享资源时,会独占这个资源,直到释放,其他线程才能操作这个资源,把并行变成了串行。 单机单线程的情况下不需要锁,单机多线程,考虑到并发情况就需要锁了 阅读全文
posted @ 2020-12-18 19:39 luytest 阅读(153) 评论(0) 推荐(0)
摘要:这个其实很简单。 首先看封装的RedisHelper类里的订阅方法,这里支持传入委托方法。 public void Subscribe(string subChannel, Action<RedisChannel, RedisValue> handler = null) { ISubscriber 阅读全文
posted @ 2020-12-18 15:29 luytest 阅读(161) 评论(0) 推荐(0)
摘要:Redis删除机制 1.定期删除,每隔100ms去随机查3个设置了生存时间的key,如果过期,就删除; 2.惰性删除,当有人查看一个设置了生存时间的key时,检查是否过期,过期则删除。 Redis淘汰机制 在Redis内存满了的时候,如果再加入新的key,会开启淘汰机制。 volatile-lru: 阅读全文
posted @ 2020-12-15 19:29 luytest 阅读(88) 评论(0) 推荐(0)
摘要:如果一个项目,数据量特别大,一个Redis节点根本放不下,那么可以用到集群。 集群:多个服务器实例,分别部署在不同的服务器上,共同处理相同的任务的一组集合。 使用集群的原因:高并发(分担服务器压力),高可用(解决单点故障) Redis集群特点: 1.无中心,没有主从之分; 2.集群之间有ping-p 阅读全文
posted @ 2020-12-15 15:51 luytest 阅读(151) 评论(0) 推荐(0)
摘要:主从架构 单一Redis存在读写瓶颈的问题,使用主从架构可以分摊压力。 配置主从时,主redis节点的redis.conf文件不用修改,因为默认每一个节点都是主节点,只需要在从节点中加上: slaveof/replicaof 主ip 主端口 如果主节点有密码 masterauth xxxx 需要实现 阅读全文
posted @ 2020-12-14 16:43 luytest 阅读(99) 评论(0) 推荐(0)
摘要:Redis的事务,一次事务操作,成功的成功,失败的失败,也就是说,没有原子性。 开启事务后,所有命令都放入队列,执行时全部执行,如果取消事务,则全部作废。 命令: 1.multi:开启事务 2.输入命令 3.exec:执行事务 4.discard:取消事务 加上监听机制 在开启事务前,监听一个或多个 阅读全文
posted @ 2020-12-14 14:29 luytest 阅读(92) 评论(0) 推荐(0)
摘要:打开redis的配置文件,找到跟持久化相关的配置内容 RDB机制 是默认的持久化机制,速度比较快,存储的是二进制文件,传输快。 save代表RDB执行的时机 save 900 1 : 900秒内有1个key改变了,就执行持久化save 300 10:300秒内有10个key改变了,就持久化save 阅读全文
posted @ 2020-12-13 22:01 luytest 阅读(86) 评论(0) 推荐(0)
摘要:这里我用的是StackExchange.Redis 首先在nuget中安装StackExchange.Redis,以及NewTonSoft.json 可以去网上找StackExchange.Redis相关的帮助文档和辅助类,我们要活用工具,这里我下载了一个RedisHelp和RedisConnect 阅读全文
posted @ 2020-12-13 17:49 luytest 阅读(450) 评论(0) 推荐(0)
摘要:Redis中的key默认是存放在0号库的,有时候我们需要操作别的库。 1.移动库 move key num 再次查看时name已经没了。 2.选择库 select num 3.清空库 flushdb:刷新数据库 flushall:刷新所有库 4.查看当前库中有多少个key dbsize 5.查看最后 阅读全文
posted @ 2020-12-12 19:07 luytest 阅读(152) 评论(0) 推荐(0)
摘要:1.查看所有的key keys * :查看所有key *其实是通配符,可以用xxx*,*xxx这种匹配 exists key :查看key是否存在 2.删除key 可批量 del key [key] 3.设置key的生存时间 expire key second 设置key能存活多少秒 pexpire 阅读全文
posted @ 2020-12-12 18:58 luytest 阅读(178) 评论(0) 推荐(0)
摘要:有序集合 1.添加数据,可以批量,score 必须是数字,member不允许重复 zadd key score member [score member] 2.修改member的分数(累加),如果member不存在,这个命令等于zadd zincrby key increment member to 阅读全文
posted @ 2020-12-12 15:32 luytest 阅读(205) 评论(0) 推荐(0)
摘要:Set中不能有重复数据,并且是无序的 1.存储数据,可批量 sadd key member [member...] 2.获取全部数据 smembers key 可以看到查询后出的数据跟存储的顺序不一致。 再加2个数据再看,确实是无序的。 3.随机弹出count个数据,同时移除它,不写count就是1 阅读全文
posted @ 2020-12-11 22:21 luytest 阅读(163) 评论(0) 推荐(0)
摘要:1.存储数据 1.1 批量存储数据,可重复 左侧插入:lpush key value [value,value] 右侧插入:rpush key value [value,value] 这时候数据应该是 mmp ycy wxy 7。 1.2.存储数据,必须是list类型的key存在才能插入,不能批量 阅读全文
posted @ 2020-12-11 14:52 luytest 阅读(181) 评论(0) 推荐(0)
摘要:1.存储hset和获取hget数据 可以看到存储方式是key-map, 所以获取时要指定相应的属性名。 2.批量存储hmset 和获取hmget数据 3.指定自增,可以是负数 注意不要对字符串类型的值去做自增操作。 4.非空设置 hsetnx,意义跟String类型一样,没有则设置。 5.检查key 阅读全文
posted @ 2020-12-11 13:16 luytest 阅读(95) 评论(0) 推荐(0)
摘要:string 常用命令 1 get,set 来读取和设置 key-value,也可以mget,mset一次性读取和设置多个。 2.自增,自减命令 只能自增incr或自减decr 1 也可以增加incrby,减少decrby指定的数 3.指定缓存生存时间 setex 设置时指定生存30秒,30秒后缓存 阅读全文
posted @ 2020-12-10 21:23 luytest 阅读(92) 评论(0) 推荐(0)
摘要:Redis 基础 1.为什么用Redis? 1.1 随着网站的访问增多,数据库的压力增大,为了尽量减少对数据库的直接访问,我们可以用Redis缓存部分经常需要查询的数据; 1.2 集群时用户Session数据不同步,可以将用户数据存放到redis中,保持同步; 1.3 集群时多台服务器之间的锁不存在 阅读全文
posted @ 2020-12-10 21:21 luytest 阅读(112) 评论(0) 推荐(0)
摘要:数据库80%的操作是查,20%的操作是增删改。 因此可以由1个数据库进行增删改,多个数据库进行查询,并在增删查时同步它们之间的数据。 sqlserver中用发布订阅同步数据。 实操: 1.准备2个库,liuDB为主库,进行增删改操作,liuDBRead做查询,因此我们在liuDB中操作数据后,需要同 阅读全文
posted @ 2020-12-07 21:56 luytest 阅读(104) 评论(0) 推荐(0)
摘要:假设有3个实例,分别是localhost:1234/1235/1236 1.Nginx.conf文件 http节点下的server节点 server { keepalive_requests 120; #单连接请求上限次数。 listen 8086; #监听端口 server_name 127.0. 阅读全文
posted @ 2020-12-02 23:47 luytest 阅读(573) 评论(0) 推荐(0)