根据理财工具的风险程度的不同,可以把理财工具分为四类。看之前要纠正下很多人包括我自己存在的错误认知:那就是 低风险低收益、高风险高收益,实际情况是:低风险也可以存在高收益,高风险更可能高亏损。风险和收益大小主要不是理财工具决定的,而是我们理财知识决定的。
第一类 无风险的理财工具
这类理财工具包含:国债、定期存款、国债逆回购、货币基金、银行理财(保本型),这五类理财工具都是没有风险,但是收益率也比较低,年收益率一般在 3%-5% 左右。
虽然这些理财工具收益低,但却是现金管理的好工具。很多人把钱放入银行卡存活期,活期的年化利率只有0.35%,还不到这五类工具的十分之一。
第二类 低风险的理财
在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
一致性(Consistency) (等同于所有节点返回的数据都是一致的)
可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据)
分区容错性(Partition tolerance)(大部分分布式系统都不能在时限内达成数据一致性,就意味分布式系统一定会发生了分区的情况。这就是再分布式系统中 P 是一定该发生的,那么 A 和 C 我们只能选择一个。)
Zoopk
自建gitlab必须支持https
全局配置 export GOPRIVATE= yourGitlabDoamin.com
执行 git config --global url."yourGitlabDoamin.com:".insteadOf "https://yourGitlabDoamin.com"
问题
nginx 启动后 error 日志里报错,并且 https 无法访问,报错如下
"ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 100.120.198.130, server: 0.0.0.0:443
我们需要修改下 nginx conf 配置,在 listen 443 中添加 default_server
server {
listen 443 ssl; # 报错配置
listen 443 default_server ssl; #
为什么要规范 git commit message
无规矩不成方圆,尤其是在多人合作项目中如果每个人按自己的习惯 commit,那么整个 commit 的log将会一团糟糕
commit message 格式
Commit message 都包括三个部分:Header,Body 和 Footer
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
type
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style:
2019 年目标及总结
2019年初定的目标
工作
终于体验完了 996,而且是整整一年时间,这一年来我 90% 的醒着的时间都花在了工作上,也算是真正的实现了 19 年目标。
一年工作体会:创业公司 996 的工作完全是没有生活,睡觉时间平均2点半左右。而且在创业公司打工,全身心的投入,以为自己可以把握一切其实自己还是打工而已,什么都控制不了,并且丢失了大公司的那份安心。
计划
完成 redis 源码阅读(没时间放弃了)
花精力专心做一个项目(没时间放弃了)
补习操作系统、网络基础知识(没时间放弃了)
好好干新工作(好好干了)
2020 年小康年目标
挣钱
打工挣钱四年,打工是生不了真
单表删除语法
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
[PARTITION (partition_name [, partition_name] ...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
多表删除
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_r
什么是预处理语句(prepared statement)
有时候我们需要经常执行一类SQL,但是只是部分参数不一样,如果我们每次都直接执行带参数的 SQL 那么数据库每次都需要进行语法解析、优化、指定执行计划。预处理语句就是为了解决这总问题,预处理语句把这类 SQL 中的参数使用占位符替代,可以先把带占位符的语句发给数据库服务器,服务器会对其进行编译并保存起来,然后每次查询同一个 SQL 的时候只需要传入不同的参数即可,这样就可以达到一次编译多次运行。
预处理语句不仅能够提高 SQL 执行的性能也可以防止SQL注入,使用预处理语句我们就不需要在代码层对参数做过滤或转义。
预处理语句使用
使用
什么是锁
在计算机科学中,锁是在执行多线程是强制限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。
MySQL的锁
MySQL 个存储引擎从锁定范围上有三种级别的锁:
表级锁定 表锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁定 行锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页级锁定 页锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,而行级锁则更适合于有大量按索引条件并发更新少
事务隔离性(isolation)
数据库中多个事务并发执行时是相互独立的,一个事务不会影响另外一个事务的执行,事务与事务的隔离是有不同级别的,不同级别情况下事务之间的影响不一样。
不同的事务隔离性会给数据库带来问题
不隔离的事务问题
脏读
脏读是指一个事务执行过程中读取到其他事务更新的数据,但是更新数据的事务最后有因为各种原因回滚了,这种想象叫做脏读,因为第一个事务查到的是一个无意义的数据。脏读举例如下
// 事务1
start transaction;
update students set sex=2 where name='洛基';
rollback;
// 事务2
select *