Hello, World!

~ Enjoy Today ~

Go语言sync包实现原理分析
Java 语言中有一个 java.util.Concurrent 包提供了大量的并发工,而 Go 语言中也有这样的角色:sync包。 sync.Mutex 锁实现原理 sync.Mutext 是 Go 提供的一种同步原语,用于表达互斥,不过不推荐在业务中使用,根据 Go 的设计思想,应首先考虑通过传递消息(管道)来共享内存,而不是通过共享内存来传递消息 Mutex 结构体如下,只有两个变量,非常简单: type Mutex struct { state int32 // 状态,bitmap sema uint32 // 信号量 } state 字段是一个位图 第 0 位表示是否加锁 第 1 位表示是否已唤醒 第 2 位表示是否为饥饿模......
Go 多路条件语句 Switch 语法详解
Switch 是 Go 语言中一种多路条件语句,一般搭配 case 语句使用。 执行逻辑 一个 switch case 条件结构如下所示: switch simpleStatement; condition { case expression1,expression2: statements case expression3: statements default: statements } 和 if 语句类似,switch 语句也可以在条件语句之前执行一段简短的表达式(可以用于很方便的控制变量的作用域),switch case 开始执行时,会先执行这一个表达式(空也算一种),然后计算出条件语句的值,接着按从上到下,从左到右的顺序一个一个的执行 case 语句的条件表达式,如果值相等的话就会进入执行 case 条件......
MySQL建表选项
这是一个很常见的 SQL 建表语句: CREATE TABLE `people` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(40) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 SQL 建表语句结构如下: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] 我们对照结构可以看到我们的建表语句最后一部分是表选项,而在这里我们指定了两个选项:引擎和字符集,那么总共都有哪些选项可以设置呢?参照MySQL官方文档,我们一起来看看。 AUTO_INCREMENT MySQL 一张表中可以指定一个字段为 auto increment,这样在当这个字段没有指定值时就在当前表最大值的基础上自增,在插入了自增的一......
在线 Markdown 转 PDF 工具评测
用 Markdown 写了这么久博客,对于这种简约风格还是非常喜欢的,所以在写一些其他文档的时候我也更倾向于这种格式。最近需要写一些 PDF 格式的文档,所以我找了一些在线 Markdown 转 PDF 的网站,不同的网站渲染出来的风格并不一样,我在下面做了一个对比,帮助大家进行选择。 测试数据 # 测试测试 1111111111 / 测试 / 123 Email: test@test.com Test: test Website: https://github.com.cn * * * 123213123 测出测试 真的测试 测试吧 * * * # 二阶段测试 - 真的测试测试 - 真的测试测试/真的测试测试 - 微博:[@Easy](http:......
Java跨平台究竟能跨哪些平台
众所周知,Java跨平台的一直被众多Java程序员们津津乐道,“一次编写,到处运行”的设想着实令人心动,虽然会带来一定性能上的问题,但这并不妨碍大家对Java的喜爱,既然都说Java能跨平台,Java 也并不是凭空就能跑在任何机器上,这是不现实的,需要官方针对对应的平台,编译一套对应平台包括 Java 虚拟机(Java Runtime Environment 简称 JRE)在内的 Java 开发工具集(Java Develop Kit,简称 JDK),这样我们编写的 Java 代码才算......
Go知识点杂记
Go语言的不足 我在使用 Go 语言编程开发时发现的一些问题,记录: 没有泛型,写工具库时很不方便 Go 把错误当成一种函数返回值来处理自有其设计道理,但是一次只能只能处理一个错误则是语法上的不足 编译器不支持尾递归优化,这对于递归代码而言很不友好 strings 库不像 Java 那样直接支持正则 没有三目运算符 官方库提供的锁不支持重入 Go静态链接编译的做法会把二进制包撑的特别大,虽然这带来了较好的可移植性 使用首字母大小写这种隐式的做法来......
Redis FAQ
Redis 官网 FAQ 翻译以及部分自己生产实践总结的问题 官网FAQ地址 Redos持久化策略:RDB和AOF RDB:数据快照,数据整体快照,吞吐量较大,但单次耗时较长,如果在dump的时候宕机可能会导致数据丢失。 AOF:日志追加,占空间比RDB大,但安全性更好,每秒追加一次日志,丢失数据的可能性会小很多,但是宕机恢复很慢。 而在实际生产环境中,我们通常会将两种持久化策略共同使用,定期进行数据快照,同时保留 AOF 日志,在......