目录

hymn

忽有故人心头过,回首山河已是秋。

MySQL 组内排序,取分组后最新的 满足条件的第n条

MySQL默认开启了ONLY_FULL_GROUP_BY,也就是说SELECT中的列只能是GROUP BY中出现的列。 这样的话导致无法对分组后的数据进行筛选,必须在group by 中添加 select 中药查看的数据,这样又会有问题,所有优点矛盾。 so: 问题1:检索分组后时间最大 的数据,并且第一条数据要满足必要的条件 先查出没个组内最大时间最大,生成临时表: (SELECT orderNo, max(createtime) AS max_time FROM dl_orderfollow GROUP BY orderNo) AS b 然后原表和临时表关联 WHERE a.orderNo=b.orderNo AND a.createtime=b.max_time and status='准备申请' 完整sql SELECT a.* FROM dl_orderfollow AS a, (SELECT orderNo, max(createtime) AS max_time FROM dl_orderfollow GROUP BY orderNo) AS b WHERE a.or....

在idea 中python import sys,import requests 报错

File->Project Structure project -> sdk -> new -> ok 设置编译参数(主要是设置和检查Python JDK是否正确)

yarn install 网络超时

设置npm 和 yarn 的镜像地址 如果全局设置失败,就把--global 去掉 npm config set registry https://registry.npm.taobao.org --global npm config set disturl https://npm.taobao.org/dist --global npm info underscore (如果上面配置正确这个命令会有字符串response) yarn config set registry https://registry.npm.taobao.org --global yarn config set disturl https://npm.taobao.org/dist --global yarn config get registry (如果上面配置正确这个命令会输出淘宝镜像地址)

公众号内微信支付 有更新!

获取code 要在微信公众号设置网页授权域名,在服务器添加下载好的txt文件,最好在根目录,不然在子目录,只有在这个目录下载链接才可以用 1. 获取code 参数:scope应用授权作用域, snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid), snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。 并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) 2. 用code 获取用户 openid,access_token返回字段 refresh_token ,可以刷新access_token 3. 第四步:拉取用户信息(需scope为 snsapi_userinfo) 4. 存储 openid (每个公众号下客户的唯一性,不能跨公众号) 有, 下单 没有,获取openid accedd_token 是为了获取用户信息 unionid 1. 从数据库拿去openid 有:下单 没有: 1、获取cede, 2、用户用code,获取openid,保存到数据库 接口: 获取openid 接口 有:直接返回 没有: 1、获....

innodb 快照读,在RR和RC下有何差异?

RC 和 RR 读提交下: 快照读总是可以读取到最新的数据 解决了读脏数据,保证读取到的数据都是已经事务提交了的。 但是会产生“读幻影行”,同一个事务里面,可能两次读取到的数据不一致。 可重复读: 某个事务首次读取的时间为T,后续读取的数据不会读取在T之后写入的记录,以保证数据事务读取到的数据一致, 解决了读脏数据和读幻影行。 例子: 表中有三条记录: 1, shenjian 2, zhangsan 3, lisi A1: start transaction; B1: start transaction; A2: select * from t; B2: insert into t values (4, wangwu); A3: select * from t; B3: commit; A4: select * from t; 在RR 下A2,A3,A4读取的结果集 A1:1,2,3。A事务的第一次读取,时间T A2:1,2,3。因为B还没提交 A3:1,2,3。因为B是在T之后提交的, 回答:RC下 (1)A2读到的结果集是{1, 2, 3}; (2)A3读到的结果集也是{1, 2,....

MySQL 锁和隔离级别关系总结

MySQL的锁: 排他锁:读写,读读都不能并行 自增锁:表锁,主键是自增的话,会串行执行insert,后面的insert必须等待第一个事务完成 插入意向锁:如果insert 不是同一行的话,不会互相影响 记录锁(行锁):select会影响修改和删除本行,锁的是索引 间隙锁:锁间隙,防止select时修改间隙里面的数据(在RR下,防止出现幻读;RC的话会自动消失) 临隙锁,记录锁和间隙锁的结合,也是防止出现幻读,RC下也会自动消失 (1)记录锁锁定索引记录; (2)间隙锁锁定间隔,防止间隔中被其他事务插入; (3)临键锁锁定索引记录+间隔,防止幻读; 读脏: 读取到了没有提交的数据 不可重复读: 两次读取到的数据不一样(数据被修改) 幻读:两次读取到的结果集不一样(中间有插入或者删除数据) MySQL四种隔离级别 读未提交:隔离级别最低,select不加锁,可能出现读脏 读提交:用的最多,可能出现幻读,除了外键约束和重复建检查封锁区间,都是记录锁。普通的select是快照读 可重复读:默认,会有间隙锁和临隙锁,锁住范围,防止不可重复读。普通的select是快照读 串行化:隔离级别最高,所....

MySQL死锁

以下,均参考自58沈剑公众号 innodb_locks_unsafe_for_binlog NO 表示关闭区间锁,此时一致性会被破坏,所以是unsafe OFF 表示开启区间锁 查询区间锁是否关闭:select global variables like "innodb_lock%"; MySQL 默认把每一条sql当做一个事务,自动提交 查询是否关闭自动提交:select globle variables like "autocommit"; 任何连接MySQL 的 session 都要手动提交: set session autocommit=0; 修改session变量,并不影响global变量,全局其他的session仍然是ON。 session变量默认继承global变量,也可以单独修改 查询MySQL 隔离级别 select globle variables like "tx_isolation" 设置隔离级别 set session trancation isolation level X X 可以等于 read uncommitted read committed r....

MySQL innodb 和MyISAM对比

select count(*) innodb会一行一行扫描,MyISAM 会直接返回,有条件是一样,都会行扫描。 MyISAM 只支持表锁 MyISAM 不支持事务 MyISAM 支持全文索引 MyISAM 不支持外键 MyISAM 可以用表锁实现事务(最好别) 总结: 在大数据量,高并发量的互联网业务场景下,使用InnoDB: 行锁,对提高并发帮助很大 事务,对数据一致性帮助很大,但是也会消耗性能,强一致性要求才使用事务

redis 和 memcache

redis 和 memcache | redis:支持持久化 | mc:不支持 | | - | - | | 单线程 | 多线程 | | 内存分配采用临时申请 | 内存预分配 | | 内存VM,数据量超量时,会引发swap | 存储在物理内存 | | 支持KV,V可以是string,map,list,set,SortSet | 只支持KV | | 天然高可用,支持集群 | 要二次开发,做集群 | | value无限制 | value最大1M | redis: 集群高可用 考虑雪崩,提前评估db能力,做防护 微服务,数据、缓存独立,多服务之间不要共用缓存,导致耦合度高,A服务的热数据把B服务的热数据挤出去 缓存修改:失效还是删除 读: 可以缓存失效或者修改,cache hit直接返回,cache miss ,get db ,set cache,返回 对于简单型数据,比如int,string,直接set可以,成本低 对于User,html,json,修改时要先get,在反序列化或者解析, 在修改,然后序列化,在set,成本高,一般选择直接失效 具体看情况,一般直接失效,问题也不大 写: ....

layui switch改变checked 不生效

//监听指定开关 layui.form.on('switch(switchType)', function (data) { if (SearchPage.showType == 'list') { SearchPage.showType = 'map'; $("#showTypeID").prop("checked", false) } else { SearchPage.showType = 'list'; $("#showTypeID").prop("checked", true) } layui.form.render(); // 重新渲染。。。 });