基础知识概述
Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。
键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。
数据类型
可以存储的值
操作
STRING
字符串、整数或者浮点数
对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作
LIST
列表
从两端压入或者弹出元素 对单个或者多个元素进行修剪, 只保留一个范围内的元素
SET
无序集合
添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素
HASH
包含键值对的无序散列表
添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在
ZSET
有序集合
添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名
与memcached 区别
数据类型
memcached仅支持字符串类型,而redis支持更多的数据类型 ...
背景现在越来越多的网站开始使用https协议。相较于http协议,https能够加密浏览器和服务端之间的通信,防止通信数据遭他人窃取和串改。
静态网站也需要启用https吗?静态网站是什么呢?那些只有html的静态网页组成的网站,基本上和服务器没有什么交互。客户端也不会发送账户名、密码、表单等各种数据给服务端。如此一来就有了上面的疑问,既然是静态的,几乎没有动态数据交互,那还用得着https吗?
但仔细一想,答案非常的明显:也是需要的!
我们可以看看常见的一些静态网页,例如w3school不也启用了https嘛。静态网站虽然没有动态数据交互,也就不存在通信数据遭他人窃取了,但是依然存在串改的可能。劫持者可以在你的静态网页上修改数据,嵌入广告或者钓鱼链接。所以还是有必要启用https的。
准备工作证书个人网站要启用https,首先需要准备证书。这是https协议中的一部分,具体原理不在这里详细说明了。通常可以有2种途径弄到证书。
第一种是自己生成。但是自己生成的证书很多浏览器都不认,会给出警告提示。虽然忽略警告就可以继续使用https和网站进行通信了,不过现在不是一个完美的解决方案。
...
程序人生
未读写时拷贝
在数据第一次写入到某个存储位置时,首先将原有内容拷贝出来,写到另一位置处,然后再将数据写入到存储设备中,该技术只拷贝在拷贝初始化开始之后修改过的数据。
linux中的cow在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如果不是因为exec,内核会给子进程的数据段、堆栈段分配相应的物理空间(至此两者有各自的进程空间,互不影响),而代码段继续共享父进程的物理空间(两者的代码完全相同)。而如果是因为exec,由于两者执行的代码不同,子进程的代码段也会分配单独的物理空间。
在网上看到还有个细节问题就是,fork之后内核会通过将子进程放在队列的前面,以 ...
其实也就是用到了回溯算法。
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。
首先定义一个Sudoku类,用来保存和处理9*9的数组
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108import java.util.ArrayList;import java.util.List;/** * Created shellingford on 2017/3/4. */public class Sudoku { private int[][] src; private List<IRule> ru ...
程序人生
未读背景需求当拥有自己的云服务器、树莓派等软硬件时,总会希望在特定事件产生时收到一些推送消息给自己。例如无屏幕的树莓派开始时发送IP信息给自己;云服务器流量、cpu高峰时发送警告消息给自己。
要求
采用方便快捷的消息接收方式:微信。(邮件可能不及时,其他推送又需要安装多余的app,反正手机上装了微信,就用微信的信息推送)
没有推送条数、推送内容上的限制。(消息要提前生成模板审核?不存在的!)
利用手上的资源(云服务器一个),没有额外的费用。(例如消息推送费用)
别人的服务在寻找类似的推送服务时,看到了server酱。接入方便,使用上符合要求1 。不过由于vip制度的关系,存在一些费用,又无法做定制化的处理。所以便希望自己搭建一套简单易用的推送服务来。
自建服务原理微信、无认证的微信公众号都不提供针对个人定制化的消息推送功能。所以只能绕道企业微信来实现了。企业微信拥有推送API,并且允许成员通过微信来接收企业微信的消息。如此一来我们就可以通过企业微信进行消息推送,通过微信来接收消息,整个使用过程中并不需要手机安装企业微信APP。
准备资源个人云服务器
云服务器或者虚拟空间都可以。
云服务 ...
前言使用hexo搭建博客之后遇到的第一个不便就是发布,每次都需要在本地生成静态文件后使用ftp上传服务器,有时候改变的文件又非常的多,全部上传一遍太麻烦了。于是开始考虑自动化脚本处理这些。
解决方案
上传码云
首先,自己写的文章和设置的配置都需要上传代码托管服务器,以防万一,也是一种备份。我这里使用的就是码云,免费的功能足够是用了。
接着码云上有WebHooks,可以使用hook触发服务器,并执行自动更新网站。
触发服务器
这里已php为例,为了安全可以校验秘钥。
12345678910111213<?php$headers = getallheaders();$gitee_token = $headers["X-Gitee-Token"];$gitee_timestamp =$headers["X-Gitee-Timestamp"];echo "gitee_token: $gitee_token <br />\n";echo "gitee_timestamp: $gitee_timest ...
前言个人博客已有好几年没有更新了,有工作忙的原因,也有自己比较懒的原因。看了看之前的博客程序,使用的是emolog5,好久远的程序了,主题的作者也不维护了。考虑再三,决定彻底重建个人博客。
需求既然是重建博客就涉及到需要选择博客程序,什么样的程序比较好呢?对于这个问题,还是需要先看看自己的需求。
写写自己的文章,最好能使用markdown格式书写。
能有好看点的主题。
对服务器要求比较低,使用php或者静态网站。
最好能播放音乐,并且是那种无中断的。
选择程序最先考虑的还是emlog,毕竟之前就使用了这点,而且最新版的emlog pro版本支持markdown书写文章。然而比较可惜的是,之前喜欢的主题不支持这个版本,并且作者也不再维护了。加之,pro版本的商城中主题也不多,并且全都不支持pjax,使得在跳转的时候播放音乐中断。
之前也用过zblog,现在搜索了一下,发现zblog的域名解析都没了,感觉也是办不下去了吧。
最后发现了hexo这个程序,支持markdown书写,最后生成的是html静态文件,对服务器要求最低。在github上也搜索到了一个叫hexo-theme-bamb ...







