redis 的 string 类型是支持过期设置的,默认是永不过期的。
Redis 设置过期
redis 中设置设置 key 过期有3中方式
第一种在设置值的时候指定过期时间
Set 命令格式
SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
PX millisecond :设置键的过期时间为 millisecond 毫秒。 3. SET key value PX m
information_schema
MySQL 自带一个数据库 information_schema ,这个数据库用于记录 MySQL 数据库的基本信息,比如数据库名,数据库的表,表栏的数据类型与访问权限等。
mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
Go 语言的可移植性
Java 平台可移植性是众所都知的,Java 的可移植性依赖于其虚拟机 JVM,Java 实现了对不同平台的 JVM 的支持,那么一份 Java 代码就可以在各个平台上运行。而 Go 语言的可移植性也是依赖于其 runtime,runtime 去对接操作系统层,用户代码在 runtime 中运行,用户代码就不用去关心平台问题。
查看 Go 支持的OS和平台:
> $ go version
go version go1.11 darwin/amd64
liushuai@liushuaideMacBook-Pro ~/Documents/goProject/src
我们写一个关于系统信号量的程序并用 go run 调试。
测试代码如下:
package main
import (
"os"
"os/signal"
"fmt"
"syscall"
)
func main() {
sig := make(chan os.Signal)
signal.Notify(sig, syscall.SIGUSR2)
for {
select {
case s := <-sig:
fmt.Println(s.String())
}
我们经常需要让主 goroutine 处于永久阻塞状态,这样其他的 gorotine 就可以一直运行处理信息。下面我总结了几种可以实现永久阻塞的方法,其中大部分实例代码无法直接运行,因为 Go runtime 会检查所有 goroutine 并提示所有的 goroutine 都处于 deadlock,在实际使用中,我们添加具体的业务 goroutien 就可以运行了。
死循环
说到永久阻塞第一个想到的应该就是死循环。
package main
func main() {
for {}
}
死循环虽然可以实现永久阻塞,但是对于 Go 而言,for 死循环所在的 goroutine 还是
webcron
源码地址
功能列表
基本任务创建、启动、手动执行、暂停
任务日志
任务执行结果邮件通知
任务分组
任务运行实例控制
缺点
任务只能在单机跑
不能添加用户
评价
安装部署简单,功能页面简洁,适合任务量不多个人或者小型项目组使用。
gocron
源码地址
功能列表
基本任务创建、手动执行、禁止执行、删除
任务依赖
任务分组
超时、重试
可以选择任务执行结果通知不同用户,通知类型包括邮件(并支持模板配置)、slack、webhook。
任务日志
支持分布式,添加执行任务节点,创建任务可指定任务可运行的节点(如果是单例模式,会选择一台执行)
用户管理
登录日志
执行方式支持
Hello world
Go 标注库 net/http 中封装了丰富的 http 服务相关的方法,只需要使用标准库就可以方便的构建 http 服务。
Hello world 示例
package main
import (
"net/http"
"fmt"
)
type Handler struct {
}
func (h *Handler)ServeHTTP(rep http.ResponseWriter, req *http.Request) {
rep.Write([]byte("Hello world"))
}
func main() {
ht
InnoDB MyISAM都是使用B-tree索引,只是两者实现方式不太一样,InnoDB 使用了聚簇索引的数据结构也称为B+tree,而MyISAM并没有。
explain 返回的 Extra 中包含 Using index 即表示使用索引覆盖查询(InnoDb、MyISAM都存在)。
explain 放回的 Extra 中包含 Using where是即表明在存储引擎把数据返回给 MySQL 服务器后再应用 Where 里的条件过滤行。这样就会导致存储引擎返回的数据比实际需要的多,就会导致额外的行被锁。
InnoDB索引中,覆盖查询要考虑主键的情况,即使索引中不包含主键,而查询包含索引中
前言
从我记事起就比较容易做梦,有多容易呢,我在桌子上趴10秒有时候就能做个梦,以前也有想研究或者记录下自己梦,每次都没坚持下来。这次在博客上开这个栏目用于后面记录醒来后记得比较清楚的梦并根据情况做些简单的分析,后面也会继续去关注梦方面的书籍深入研究这方面的东西。
梦的时间地点
梦的日期:2018/08/21,大约时间13:40-13:59
地点:公司工位
梦的内容
地点:一间很熟悉、同学很多的教室。
时间:梦开始时正在上课、梦里的教室人比较多、课本也比较多,推测应该是初中或高中的时候。
人物:梦里的人物没有比较清晰的特征,感觉好像是中学时期好多同学的形象交杂着,有个男同学感觉跟我比较亲近,表
这里记录以后准备读或者重读一些书的计划,计划起于 2018/11/01,多读书提升技术和各方面认知。
正在读
技术类
<< 算法导论 >> 5%
<< 现代操作系统 >> 10%
<< 亿级流量网站架构核心技术 >> 50%
<< 这就是搜索引擎 >> 25% 介绍搜索引擎的架构和各部分实现方案。
<< 编码的奥秘 >> 25% 计算机编码普及读物
<< 数学史 >> 4% 数学历史发展和起源
<