some notes on scala, includes:
- setup with maven
- import
- == and eq
- case class
- for…yield
- companion object and class
- method and function(def val)
- _ in scala
- => in scala
- () {} in scala
- implicit
- string
some notes on scala, includes:
使用redis的hash优化内存使用
场景: 有3亿张图片放在对象存储(DELL ECS/AMAZON EC2)上面,现在需要保存图片的id->用户id的映射.最直接的思路是:
set "media:1155220" "user1"
set "media:1155221" "user2"
这样设计key之后3亿张图片需要21GB的内存,因为redis的string是线性增长的.
//隐式参数是在调用时可以自动填充的参数, 需要在调用范围内(scope)有一个隐式变量可供填充.
def addInt(i:Int)(implicit n: Int) = i + n
//需要提供一个隐式变量n
implicit val sn = 1
addInt(2) // 3
//如果有两个满足类型的隐式变量,则在编译addInt(2)时报错
//scala的方法中ExecutionContext一般作为implicit参数.
如何使用github pages和github actions构建静态个人博客站点
更新:github开放action功能后,travis-ci已经没有必要了,目前博客使用zhimoe仓库管理源码,使用action编译后将public目录同步到zhimoe.github.io仓库的gh-pages分支.
注意,由于使用了jsdelivr的cdn功能,切换分支后theme的相关静态文件的path也要修改.
github给个人和组织免费提供github pages功能. 就是说如果有个repo的名字为 zhimoe.github.io (zhimoe 为你的github username), 那么这个repo里面的master或者gh-pages分支的内容如果存在index.html, 那么其他人可以通过 https://zhimoe.github.io 访问这个站点.
使用wsl,MobaXterm,cmder,docker打造可视化的linux开发环境
离不开Windows的理由很多,作为后端开发需要使用linux的情况也很多,双系统总归是不方便,而且linux下的GUI体验也没用Win 10好.
如果使用虚拟机,那么文件交换和网络等各种问题也需要解决,对系统的内存要求也更高一些.微软为了让更多的开发人员留在Win10上面,开发了WSL,目前的实际体验已经很棒,
今天介绍一下如何打造一个可视化的linux开发环境–即在Win10启动linux的GUI软件,例如vs code等.在wsl启动vs code写代码可以有效避免一些Windows和linux的编码和换行问题.
本教程分为2部分:
以下内容中
wsl
和ubuntu
含义相同,console
和命令行
含义相同.