详解 MySQL下的行表锁
阅读本文前,请务必查看先导文章:数据库基础理论
阅读本文后,你可以查看延申文章:[MySQL] 行级锁SELECT … LOCK IN SHARE MODE 和 SELECT … FOR UPDATE
一、MyISAM 引擎
MyISAM 是 MySQL 5.1 之前的默认搜索引擎,我们都知道,MyISAM 采用表锁,即操作一条记录也会锁住整张表。适合做主要查询、非事务的表的引擎。下面演示下 MyISAM 引擎下的读锁与写锁。
首先创建两张 myisam 引擎的表,并准备一些数据:
123456789101112131415161718192021CREATE TABLE mylock(id int not null PRIMARY KEY auto_increment,name VARCHAR(16))ENGINE myisam;CREATE TABLE course(id int not null PRIMARY KEY auto_increment,name VARCHAR(16))ENGINE myisam;INSERT INTO mylock(name) VALUES ...
解决 MySQL 报错 Expression #1 of SELECT list is not in GROUP BY clause and contains nonag...
一、问题描述
运行 sql 后报错:
123Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘day_offset’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by...
MySQL 5.7.5 及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL 模式(默认情况下),MySQL将拒绝选择列表,HAVING 条件或 ORDER BY 列表的查询引用在 GROUP BY 子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。)
二、解决方法
2.1 临时解决
执行 SQL:
1select @@global.sql_mode
得到查询结果 ...
计算机科普扫盲——固态硬盘
一、前言
1.1 引言
进入 2019 年,随着国产厂商的杀入,固态硬盘(SSD)甚至被杀到了 1 元 1G 的价格,固态硬盘也逐渐在普通用户中普及开来。现在新购一台电脑,无论是笔记本还是台式机,固态硬盘基本上是必备的硬件。
但是固态硬盘和其他计算机硬件一样,参数众多,其中也是有一点门道的。这也是我写这篇文章的动力,希望帮助大家明白固态硬盘的相关知识。
1.2 你真的需要 SSD 吗?
固态硬盘的功能通俗点说就是加快数据传输的速度。
因此如果你想提升系统的启动速度,或者是让应用打开速度变快,或者是文件读取速度变快,这是 SSD 所能够做到的。
但是如果你原本运行 PS、PR 等专业软件,或者打游戏卡,即使你装上 SSD 也无济于事,因为这取决于你的 CPU、显卡、内存等待因素。
二、闪存颗粒与主控
打一个形象的比喻,SSD 就是一个货物仓库,在这个仓库中,货物被放在一个个货架内。
SSD 最重要的就是闪存颗粒和主控。按照例子,颗粒类型的不同就决定了一个货架上放了几件货物。主控就是这个仓库的控制中心,负责如何从仓库中找到某一个货物。
2.1 颗粒类别
2.1.1 SLC、ML ...
HoloLens 开发笔记(11)——Spatial Mapping
HoloLens 作为一款混合现实设备,其与传统 VR/AR 设备最大的区别是,能够和现实世界进行交互。
以一个立方体为例,当我们没有使用 Spatial Mapping 时,我们只能在空间中移动它,而不能把它放置在现实世界的物体上,例如放置在一个椅子上。当我们使用了 Spatial Mapping 后,HoloLens 会先扫描出所在房间的三维信息,扫描完毕后你就可以将物体放置在扫描后的空间物体上。
创建一个新的 Unity 项目 SpatialDemo,初始化项目:
导入 MRTK 包
应用项目设置为 MR 项目
使用 HoloLensCamera 替代默认相机
添加 CursorWithFeedback
创建一个空 GameObject,名为 Manager,为其添加子 gameObject: InputManager
设置 InputManager 的 SimpleSinglePointerSelector 脚本的 Cursor 属性为添加的 CursorWithFeedback
添加一个 Cube,位置如下
最终 Hierarchy 结构如下:
一、Spatial ...
RESTful API 设计规范
一、关于「能愿动词」的使用
为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下:
必须 (MUST):绝对,严格遵循,请照做,无条件遵守;
一定不可 (MUST NOT):禁令,严令禁止;
应该 (SHOULD) :强烈建议这样做,但是不强求;
不该 (SHOULD NOT):强烈不建议这样做,但是不强求;
可以 (MAY) 和 可选 (OPTIONAL) :选择性高一点,在这个文档内,此词语使用较少;
参见:RFC 2119
二、Protocol
客户端在通过 API 与后端服务通信的过程中,应该 使用 HTTPS 协议。
三、API Root URL
API 的根入口点应尽可能保持足够简单,这里有两个常见的 URL 根例子:
api.example.com/*
example.com/api/*
如果你的应用很庞大或者你预计它将会变的很庞大,那 应该 将 API 放到子域下(api.example.com)。这种做法可以保持某些规模化上的灵活性。
四、Versioning
所有的 API 必须保持向后兼容,你 必须 在引入新版本 API 的同时确保旧版 ...
SpringBoot 集成 Spring Security(8)——短信验证码登录
经过前面七章的学习,我们已经算入门 Spring Security 了,下面我们学习如何对 Spring Security 进行扩展,来实现短信验证码方式登录。
注意:
为了方便讲解,本篇文章代码直接在 《SpringBoot集成Spring Security(1)——入门程序》 上进行开发。
并且为了省去与本篇主题无关的代码,短信验证码只是一个模拟。如果你需要具体的实际例子,在下面的源码链接中除了包括每一章的代码外,还包括从头到尾的完整整合代码,方便大家参考学习。
一、理论说明
在开始编码前,先理解下短信验证码的实现流程。如果你能对《SpringBoot集成Spring Security(7)——认证流程》这篇文章有一定的了解的话,那么这篇文章的学习你会轻松许多。
1.1 用户名密码登录逻辑
废话不多说,在上一篇文章中,以标准的用户名密码登录为例,讲解了整个认证流程。大致流程如下:
先进入 UsernamePasswordAuthenticationFilter 中,根据输入的用户名和密码信息,构造出一个暂时没有鉴权的 UsernamePasswordAuthenticatio ...
详细解读《个人所得税专项附加扣除暂行办法》
自2018年10月1日上调个人所得税税率和起征点后,2019年1月1日,实行《个人所得税专项附加扣除暂行办法》,在子女教育、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人,这六大方面,实行抵扣个税。本文将对此规定进行全面解析。
课外阅读:个人所得税如何计算?
一、专项附加扣除包含哪些?
子女教育
继续教育
大病医疗
住房贷款利息
住房租金
赡养老人
二、专项附加扣除具体怎么扣?
2.1 子女教育
具体规定:
纳税人子女接收全日制学历教育的相关支出,子女满3岁至小学入学前处于学前教育阶段的相关支出,按照每个子女每月1000元的标准定额扣除。
扣除范围:
学前教育:3岁至小学前
学历教育
2.1 小学初中
2.2 高中阶段(普通高中、中等职业、技工教育)
2.3 专本硕博
扣除标准:
每个子女每月扣1000元
扣除方式:
父母一方全扣或父母各扣50%
注意事项:
如果有多个符合条件的子女,每个子女均可享受扣除。
扣除方式确定后,在一个纳税年度内无法变更。
法定监护人不是受教育子女的父母的,也可以按此扣除。
纳税人子女在中国境外接受教育的,纳税人应当留存境外学校录取通 ...
HoloLens 开发笔记(10)——World Anchor
HoloLens 实现全息体验的一个特性就是场景保持。当用户离开场景或关闭应用时,场景中的全息图会被保存在所放置的位置,当用户回到场景或重新打开应用时,能够准确的还原之前场景内的全息内容。
World Anchor(空间锚)提供了一种能够将物体保留在特定位置和旋转状态上的方法,以此来保证全息对象的稳定性(即静止参考框架),也通过它来实现场景保持。
WorldAnchorStore 是实现空间锚特性的关键 API,为了能够真正保持一个全息对象,通常为根 GameObject 添加空间锚,同时对其子 GameObject 也附上具有相对位置偏移的空间锚组件。
一、相关 API
添加命名空间:
12using UnityEngine.XR.WSA;using UnityEngine.XR.WSA.Persistence;
(1)为物体添加空间锚
1WorldAnchor anchor = gameObject.AddComponent<WorldAnchor>();
(2)销毁物体上的空间锚
当物体被添加空间锚后,该物体不能够再移动。
单纯的销毁空间锚,不需要移动物体:
1De ...
HoloLens 开发笔记(9)——Spatial Sound
在前面我们学习了HoloLens的基础部分,包括 Gaze、Gesure、Voice、Audio Souce 等学习,下面开始进阶部分。
进阶部分包含 Spatial Sound、World Anchor、Spatial Mapping、Sharing、Spectator View 等内容,欢迎大家一起交流学习。在开始本文学习前,请确保已经学习了基础部分的内容。
创建一个新的 Unity 项目 SpatialSoundDemo,初始化项目:
导入 MRTK 包
应用项目设置为 MR 项目
使用 HoloLensCamera 替代默认相机
添加 CursorWithFeedback
添加 InputManager
设置 InputManager 的 SimpleSinglePointerSelector 脚本的 Cursor 属性为添加的 CursorWithFeedback
添加一个 Cube,位置如下
最终 Hierarchy 结构如下:
一、Spatial Sound
开启 Unity 的空间声音设置,在设置菜单中 Edit/Audio/Spa ...
HoloLens 开发笔记(8)——Audio Source
一、音频资源
Unity中的音频文件分为两类:原生的音频或者是压缩的音频。
压缩音频:通过从编辑器导入设置选择compressed选项,音频数据将很小,但在播放时会消耗CPU周期来解码。
原生音频:对于短音效使用未压缩音频(WAV,AIFF)。音频数据将较大,但是声音在播放是不需要解码。
Unity 支持导入以下格式:.aif、.wav、.mp3、.ogg
格式
MAC/PC上使用压缩格式
移动平台上使用的压缩格式
MPEG
Ogg Vorbis
MP3
Ogg Vorbis
Ogg Vorbis
MP3
WAV
Ogg Vorbis
MP3
AIFF
Ogg Vorbis
MP3
Unity 中对音频文件的属性设置:
Force To Mono(强制单声道):如果启用,该音频剪辑将向下混合到单通道声音。
Load Type(加载类型):运行时Unity加载音频的方法。
Decompress on load(加载时解压缩):加载后解压缩声音。使用于较小的压缩声音,以避免运行时解压缩的性能开销。(将使用比在它们在内存中压缩的多10 ...