Runnable

strong to refuse


  • 首页

  • 标签

  • 归档

codis主从同步之后显示不一致问题

发表于 2018-03-30 | 分类于 运维

搭建codis2升级到codis3之后,
codis-server-2.x做master,codis-server-3.x做slave;
同步完成后发现主从的内存大小和keys数量完全不一致……

阅读全文 »

推荐系统实战-读书笔记

发表于 2018-03-21 | 分类于 读书笔记

背景

信息消费者,如何从大量信息中找到自己感兴趣的信息是一件非常困难的事情;作为信息生产者, 如何让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就 是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己 有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢。

阅读全文 »

codis2.x升级到codis3.2

发表于 2018-03-21 | 分类于 运维

step 1.配置迁移

step a.导出配置文件

1
/usr/local/codis3.2/bin/codis-admin --config-dump --product=apitest --zookeeper=10.0.0.40:2181 -1 | tee codis_v2.0.json

该命令会从 zookeeper 上拉取 /zk/codis/db_codis_v2.0 下全部的文件,并组织成 json 格式并输出。
选项 -1 表示配置文件是 Codis 1.x 版本,缺省是 Codis 3.x 版本。

step b. 转换配置文件

1
/usr/local/codis3.2/bin/codis-admin --config-convert codis_v2.0.json | tee codis_v3.0.json

该命令会将 Codis 1.x 版本的配置文件中有效信息提取出来,并转成 Codis 3.x 版本的配置文件并输出。

step c. 更新配置文件
注意:更新配置文件时,请确保 Codis 3.x 中该集群不存在,否则可能导致更新失败或者集群状态异常。

1
2
3
4
NEW_PRODUCT_NAME="apitet_codis3.2"
ZOOKEEPER_ADDR="10.0.0.40:2181"
#/usr/local/codis3.2/bin/codis-admin --config-restore=codis_v3.0.json --product=$NEW_PRODUCT_NAME --zookeeper=$ZOOKEEPER_ADDR --confirm
/usr/local/codis3.2/bin/codis-admin --config-restore=codis_v3.0.json --product=apitest_codis3.2 --zookeeper=10.0.0.40:2181 --confirm

阅读全文 »

iterm-lrzsz

发表于 2018-03-21 | 分类于 tools

用过secureCRT,都知道lrzsz在服务器上上传下载文件有多方便。
这里有个工具iterm2-zmodem,简单配置下,也很实用

Save the iterm2-send-zmodem.sh and iterm2-recv-zmodem.sh scripts in /usr/local/bin/

chmod +x /usr/local/bin/iterm2-send-zmodem.sh
chmod +x /usr/local/bin/iterm2-recv-zmodem.sh

Preferences=>Profiles=>Advanced=>Triggers=>edit Set up Triggers in iTerm 2 like so:

1
2
3
4
5
6
7
8
9
Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked

Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked

su指定用户执行命令

发表于 2017-08-31 | 分类于 运维

命令行模式下

1
2
/etc/passwd中nologin改为bash
su user -s /bin/bash -c 'touch test.x'

/etc/crontab下

1
* * * * * user echo '12312' >> /tmp/test.x

hexo install

发表于 2017-08-05

npm install hexo-deployer-git –save

安装之后可以使用hexo deploy一键部署到github

hexo new 文章标题

hexo generate

生成静态文件

hexo p

hexo publish

hexo d

hexo deploy#部署

阅读全文 »

Good Content

发表于 2017-08-05

免费的编程中文书籍索引

深入浅出 Redis client/server交互流程

在PHP中使用协程实现多任务调度

Yac (Yet Another Cache) – 无锁共享内存Cache

一个小玩意PHP-Valgrind的介绍

日请求过亿的Web系统PHP7升级实践

PHP扩展开发与内核应用

深入理解PHP内核

PHP扩展开发:快速入门

swoole

构建C1000K的服务器(1)– 基础

kubernetes安装

发表于 2017-08-04 | 分类于 运维

安装minikube

1
2
3
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.7.1/minikube-darwin-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/

启动minikube

1
2
minikube start
minikube status

安装kubectl

1
2
3
curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.3.0/bin/darwin/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

查看

1
2
kubectl get pods --all-namespaces
eval $(minikube docker-env)

参考doc

Kubernetes in 30 minutes with minikube on Mac

redis和memcached

发表于 2017-05-18

memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe传递给worker线程,进行读写IO,网络层使用libevent封装的事件库,多线程模型可以发挥多核作用,但是引入了cache coherency和锁的问题,比如:memcached最常用的stats命令,实际memcached所有操作都要对这个全局变量加锁,进行技术等工作,带来了性能损耗。

redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll, kqueue和select,对于单存只有IO操作来说,单线程可以将速度优势发挥到最大,但是redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型施加会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞的。

参考Redis 和 Memcached 的区别

策略模式

发表于 2017-05-17

简单实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

interface Strategy
{
public function doOperation($num1, $num2 );
}

class OperationAdd implements Strategy
{
public function doOperation($num1, $num2)
{
return $num1 + $num2;
}
}

class OperationSubstract implements Strategy
{
function doOperation( $num1 , $num2 )
{
return $num1 - $num2;
}
}

class OperationMultiply implements Strategy
{
public function doOperation( $num1 , $num2 )
{
return $num1 * $num2;
}
}

class Context
{
private $strategy;

public function __construct($strategy){
$this->strategy = $strategy;
}

public function executeStrategy($num1, $num2){
return $this->strategy->doOperation($num1, $num2);
}
}

$context = new Context(new OperationAdd());
echo ("10 + 5 = " . $context->executeStrategy(10, 5));
echo PHP_EOL;

$context = new Context(new OperationSubstract());
echo ("10 - 5 = " . $context->executeStrategy(10, 5));
echo PHP_EOL;

$context = new Context(new OperationMultiply());
echo ("10 * 5 = " . $context->executeStrategy(10, 5));
echo PHP_EOL;
1…4567

laugh

lanmp, ELK, go, python, vue, 分布式, k8s, docker, CI/CD

62 日志
5 分类
26 标签
© 2020 laugh
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4