<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangjunsheng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangjunsheng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangjunsheng]]></copyright><item><title><![CDATA[mongo c++ 驱动 安装 示例]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/120449293</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/120449293</guid><author>wangjunsheng</author><pubDate>Fri, 24 Sep 2021 10:10:30 +0800</pubDate><description><![CDATA[安装

c++ 驱动 依赖 c驱动

先装c驱动

mongo-c-driverhttps://github.com/mongodb/mongo-c-driver


wget https://github.com/mongodb/mongo-c-driver/releases/download/1.19.0/mongo-c-driver-1.19.0.tar.gz
tar xzf mongo-c-driver-1.19.0.tar.gz
cd mongo-c-driver-1.19.0
mkdir cma]]></description><category></category></item><item><title><![CDATA[ubuntu 虚拟机 新建硬盘 并 挂载 mongodb xfs 系统]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/108782894</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/108782894</guid><author>wangjunsheng</author><pubDate>Thu, 24 Sep 2020 21:00:45 +0800</pubDate><description><![CDATA[新增硬盘


1、虚拟机设置–》添加–》硬盘–》一直next到完成。



新硬盘的名字


sudo fdisk -l 

我的是 /dev/sdb， 后续命令就用这个参数了





分区


sudo fdisk /dev/sdb





安装 mkfs.xfs

因为是给mongodb用的，所以我用 xfs 格式， 要安装下xfsprogs


apt-get install xfsprogs

当然也可以用ext4 的



xfs格式化新硬盘, -t ext4 的话就用 ...]]></description><category></category></item><item><title><![CDATA[指定 “use strict“ 后 js 里的 this　]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/108491304</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/108491304</guid><author>wangjunsheng</author><pubDate>Wed, 09 Sep 2020 15:51:56 +0800</pubDate><description><![CDATA[指定严格模式 "use strict"; 后



如果没指定函数里的this，this不再指向 globle


function fn(name) {
  this.name = name
}

let f1 = new fn('wjs'); // 执行后　f1.name 的值为 wjs
let f2 = fn('wjs');     // 忘了加new 报错 this未定义

// 这里的　this 指向 module.exports, 传给 fn 后
// fn 里的this 也指向了 modu..]]></description><category></category></item><item><title><![CDATA[js prototype 使用介绍]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/108424204</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/108424204</guid><author>wangjunsheng</author><pubDate>Sat, 05 Sep 2020 20:42:07 +0800</pubDate><description><![CDATA[用过JavaScript的同学们肯定都对prototype如雷贯耳，但是这究竟是个什么东西却让初学者莫衷一是，只知道函数都会有一个prototype属性，
可以为其添加函数供实例访问，其它的就不清楚了，最近看了一些 JavaScript高级程序设计，终于揭开了其神秘面纱。
每个函数都有一个prototype属性，这个属性是指向一个对象的引用，这个对象称为原型对象，原型对象包含函数实例共享的方法和属性，
也就是说将函数用作构造函数调用（使用new操作符调用）的时候，新创建的对象会从原型对象上继承属性和方法。
]]></description><category></category></item><item><title><![CDATA[nodejs 安装 调试 常用技巧 汇总]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/108423810</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/108423810</guid><author>wangjunsheng</author><pubDate>Sat, 05 Sep 2020 20:27:56 +0800</pubDate><description><![CDATA[目录





安装 node

debug



安装 node

https://nodejs.org/en/



下载自己合适的版本。

我下的是node-v12.18.3-linux-x64， 解压后


把 node-v12.18.3-linux-x64/lib/node_modules 拷贝到 /usr/local/lib
然后在/usr/local/bin 创建 链接
sudo chmod +777 ../lib/node_modules/npm/bin/npm-cli.js
sud...]]></description><category></category></item><item><title><![CDATA[nodejs - koa 源码 第三方库汇总]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/108401337</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/108401337</guid><author>wangjunsheng</author><pubDate>Fri, 04 Sep 2020 12:07:45 +0800</pubDate><description><![CDATA[本文记录koa 用法，及 源码中用到的三方库。 备忘。



delegates


const animal = {
  dog: {
    name: '旺财',
    talk() {
      console.log('wang!');
    }
  },
}

animal.dog.name 可以访问嵌套对象中的属性。

能不能 animal.name 就直接访问了animal.dog.name

能！， 用https://github.com/tj/node-delega...]]></description><category></category></item><item><title><![CDATA[cmake 构建 lua 及 嵌入c程序 和 lua脚本相互调用]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/107801798</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/107801798</guid><author>wangjunsheng</author><pubDate>Tue, 04 Aug 2020 22:33:05 +0800</pubDate><description><![CDATA[这个lua 来自于skynet/tree/master/3rd/lua

新建 uselua 目录， 把 lua 文件夹拷贝到 uselua 目录下

lua 目录里新建CMakeLists.txt

~/cpp/uselua/lua $ cat CMakeLists.txt


ADD_DEFINITIONS(-DLUA_USE_LINUX -std=gnu99)

add_library (lualib STATIC lapi.c lcode.c lctype.c ldebug.c ldo.c l...]]></description><category></category></item><item><title><![CDATA[时间的几个实用函数  FILETIME UnixTime的转换]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/107685892</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/107685892</guid><author>wangjunsheng</author><pubDate>Thu, 30 Jul 2020 11:27:05 +0800</pubDate><description><![CDATA[filetimeToUnixTime

windos filetime 起于1601-01-01T00:00:00Z , 单位 100 纳秒

UnixTime    起于1970-01-01T00:00:00Z , 单位 秒

它们的起始时间差了11644473600 秒



下面这个函数把 filetime 转换成 UnixTime的秒偏差， 返回值 相当于 time(0),  ms 返回毫秒偏差


#define WINDOWS_TICK 10000000
#d...]]></description><category></category></item><item><title><![CDATA[git 常用法 备忘]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/105269559</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/105269559</guid><author>wangjunsheng</author><pubDate>Thu, 02 Apr 2020 14:45:03 +0800</pubDate><description><![CDATA[本文是写给自己看的备忘



git clone http://xxx/foo.git
cd foo
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master


op .gitignore
加上 *~
面得被 emacs 临时文件干扰


记录git的相关操作

// 全局配置
...]]></description><category></category></item><item><title><![CDATA[go-micro register 解析]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/102969278</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/102969278</guid><author>wangjunsheng</author><pubDate>Fri, 08 Nov 2019 11:16:07 +0800</pubDate><description><![CDATA[register

完成go-micro的服务发现功能。

保存broker的发布订阅主题

保存server的rpc调用 信息等等



源码分析

Registry



type Registry interface {
 Init(...Option) error  // 根据选项初始化
 Options() Options      // 返回所有的选项
 Regi...]]></description><category></category></item><item><title><![CDATA[go-micro broker 用法  解析]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/102823515</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/102823515</guid><author>wangjunsheng</author><pubDate>Wed, 30 Oct 2019 18:07:46 +0800</pubDate><description><![CDATA[草稿阶段，持续更新 ...



单独使用broker

broker 可以单独使用，默认是基于 http的broker。 broker 自带了 register(默认是mdns)。 broker.Connect() 后会自动通过resiger找到当前运行的broker。

借助 broker ，我们可以很方便的实现 发布，订阅。我们不用关心 broker 服务器 侦听是什么端口，有多少个br...]]></description><category></category></item><item><title><![CDATA[codis rebalance 算法的理解]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/102495130</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/102495130</guid><author>wangjunsheng</author><pubDate>Fri, 11 Oct 2019 12:19:48 +0800</pubDate><description><![CDATA[rebalance

其实就是n个组一起瓜分1024个slot的问题.
一个组就是一个 redis 集群, codis 所有的key 都被hash到 1024 个 slot 上
集群分到的slot 越多, 保管的key就越多, 负载就越重
rebalance 尽量让每个集群的负载均衡
如果是重新分配的话,尽可能减少迁移的slot

举例

刚开始运行的时候,开了个2 redis组, 组1 {0,...]]></description><category></category></item><item><title><![CDATA[zookeeper 介绍 安装 及 简单用法]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/101423880</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/101423880</guid><author>wangjunsheng</author><pubDate>Thu, 26 Sep 2019 10:15:33 +0800</pubDate><description><![CDATA[介绍

ZooKeeper是一个分布式的，开放源码的分布式应用程序协调服务，是Google的Chubby一个开源的实现，是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件，提供的功能包括：配置维护、域名服务、分布式同步、组服务等。

简单来说zookeeper=文件系统+监听通知机制。

Zookeeper入门看这篇就够了



安装

推荐docker


dock...]]></description><category></category></item><item><title><![CDATA[nsq 源码笔记 -- nsqd]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/100895871</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/100895871</guid><author>wangjunsheng</author><pubDate>Mon, 16 Sep 2019 17:53:13 +0800</pubDate><description><![CDATA[目录

主 goroutine

G2_TCP 即 nsqd　的tcp　侦听goroutine

Ｇ2_TCP_SubG处理的命令

IDENTIFY

Sub 消息处理

RDY count

FIN msgid

REQ id timeoutMs

pqueue.PriorityQueue

inFlightPqueue

G2_TCP_SubPump

n.queueScanLoop G...]]></description><category></category></item><item><title><![CDATA[nsq 源码笔记 -- nsqlookup]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/100869340</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/100869340</guid><author>wangjunsheng</author><pubDate>Mon, 16 Sep 2019 00:34:28 +0800</pubDate><description><![CDATA[下载


go get -u github.com/kr/godep
godep get github.com/bitly/nsq/...

如果被墙了，更新到 go 最新版本，我当前是 1.12版本

然后修改下 /etc/environment ， 加入下面这句，重新登录系统


export GOPROXY=https://goproxy.io



编译


make



启动


...]]></description><category></category></item><item><title><![CDATA[c++ grpc 安装]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/96313330</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/96313330</guid><author>wangjunsheng</author><pubDate>Wed, 17 Jul 2019 15:29:13 +0800</pubDate><description><![CDATA[linux 下


选择合适的目录安装 grpc
git clone https://github.com/grpc/grpc.git
git submodule update --init
mkdir build_grpc
cd build_grpc
cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_PROTOBUF_PROVIDER=p...]]></description><category></category></item><item><title><![CDATA[（转载）msvc/gcc:中用#pragma指令关闭特定警告(warning)]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/90039803</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/90039803</guid><author>wangjunsheng</author><pubDate>Thu, 09 May 2019 16:13:45 +0800</pubDate><description><![CDATA[原文https://blog.youkuaiyun.com/10km/article/details/51726778

在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的，当然也不好去修改，但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽，更麻烦的是还有可能造成自己代码中产生的警告被淹没在多过的无关警告中，而被忽略掉的情况。
所以...]]></description><category></category></item><item><title><![CDATA[c 单元测试库 check 简单用法 示例]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/89206298</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/89206298</guid><author>wangjunsheng</author><pubDate>Thu, 11 Apr 2019 11:36:03 +0800</pubDate><description><![CDATA[介绍

c++ 下可以用 gtest

c 下的话 用 check  https://github.com/libcheck/check 因为我最近看的源码 open62541 用的是 check

 或者 Criterionhttps://github.com/Snaipe/Criterion  github 上的星星更多一点，示例好像也蛮简单的。



本文提供...]]></description><category></category></item><item><title><![CDATA[kubernetes 常用用法]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/86605161</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/86605161</guid><author>wangjunsheng</author><pubDate>Wed, 23 Jan 2019 10:58:02 +0800</pubDate><description><![CDATA[Service

有了服务就可以对外集群外提供服务

示例


apiVersion: v1
kind: Service
metadata: 
  name: kubia
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 40000
  selector:
    app: kubia



kubectl descr...]]></description><category></category></item><item><title><![CDATA[kubernetes 1.13.1 二进制方式 离线 安装]]></title><link>https://blog.youkuaiyun.com/wangjunsheng/article/details/86594245</link><guid>https://blog.youkuaiyun.com/wangjunsheng/article/details/86594245</guid><author>wangjunsheng</author><pubDate>Tue, 22 Jan 2019 14:34:19 +0800</pubDate><description><![CDATA[目录

 

卸载原先的

安装docker

下载k8s，拷贝到 usr/bin

关闭防火墙和SELINUX 关闭swap

部署 master 节点

部署kube-apiserver

kube-controller-manager

 kube-scheduler

部署node

kube-proxy

kubelet 

查看结果

卸载原先的


sudo yum remove -...]]></description><category></category></item></channel></rss>