文章列表

  • Redis中Bitmap的妙用

    一、BitMap是什么 原理 8bit = 1b bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。 一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。 二、setbit命令介绍 setbit key offset value 三、场景介绍 场景一: 用户签到 很多网站都提供了签到功能(这里不考虑数据落地事宜),并且需要展示最近一个月的签到情况,如果使用bitmap我们怎么做?一言不合亮代码! 根据日期 offset = 日期 % 365; key = 年份#用户id 127.0.0.1:6379> setbit sign_2020#1 1 1 (integer) 0 127.0.0.1:6379> setbit sign_2020#1 2 1 (integer) 0 127.0.0.1:6379> BITCOUNT sign_2020#1 (integer) 2 场景二: 统计活跃用户 使用时间作为cacheKey, 然后用用户ID为offset, 如果当日活跃过就设置为1 那么我该如果计算某几天/月/年的活跃用户呢(暂且约定,统计时间内只有有一天在线就称为活跃),有请下一个redis的命令 命令: BITOP operation destkey key [key ...] 说明: 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。 BITOP 命令支持 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种参数 20200422 活跃用户 [1,2,3,4] 20200423 活跃用户 [1,2,3] 20200424 活跃用户 [1]……

    ainiok 2020年4月23日 【Redis】 字数 193

    阅读更多
  • linux下解压tar.xz方法

    今天在linux 上安装nodejs, 下载的文件是node-v12.16.1-linux-x64.tar.xz,平时下载的文件都是xxx.tar.gz,突然看到这个一下子忘记怎么解压了, 不知道没关系,咱可以百度啊。 …… 此处省略步骤 找到相关资料一看,噢!原来它是两层压缩,外面是xz压缩,里层是tar压缩,所以分两步实现解压。 解压步骤如下: 第一步: xz -d node-v12.16.1-linux-x64.tar.xz xz -dk node-v12.16.1-linux-x64.tar.xz // -k 保留源文件 第二步: tar -xvf node-v12.16.1-linux-x64.tar 作为一个程序员怎么可以不学会偷懒,这里告诉你一个直接解压的秘诀,那就是: tar -xvJf node-v12.16.1-linux-x64.tar.xz // J 是大写哦!!! 现在知道怎么解压了吧,那我们再来学习一下怎么创建xxx.tar.xz这种文件吧 首先创建 xxx.tar 文件 tar -cvf xxx.tar xxx 再创建 xxx.tar.xz 文件 xz -z xxx.tar xz -zk xxx.tar // 聪明的同学应该知道这个和上面的区别了 至于压缩效果,我以445M的 elasticsearch 的rpm包为例,最后压缩是 424M -rw-r--r-- 1 root root 466724705 Mar 8 02:16 elasticsearch-7.6.1-x86_64.rpm -rw-r--r-- 1 root root 466728960 Mar 8 02:54 elasticsearch.tar -rw-r--r-- 1 root root 444614532 Mar 8 02:54 elasticsearch.……

    ainiok 2020年3月6日 【Linux】 字数 79

    阅读更多
  • Hugo 安装

    介绍 还需要介绍吗?如果你想用这个肯定是百度过才会找到这,之前肯定有大把的资料介绍hugo,反正我说的也没他们介(chui)绍(niu)的好。 安装 hugo 是golang 开发的,前提是需要安装 golang 添加 epel repo , vim /etc/yum.repos.d/hugo.repo [daftaupe-hugo] name=Copr repo for hugo owned by daftaupe baseurl=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/epel-7-$basearch/ type=rpm-md skip_if_unavailable=True gpgcheck=1 gpgkey=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/pubkey.gpg repo_gpgcheck=0 enabled=1 执行安装 hugo sudo yum -y install hugo 查看版本 hugo version Hugo Static Site Generator v0.58.3 linux/amd64 BuildDate: 2019-09-20T07:23:07Z 这就安装完成了,是不是好简单啊,O(∩_∩)O哈哈~ 其他安装方式 centos 7 新一代包管理工具 snap 安装部署 介绍, 这个东西还是百度靠谱 使用 1、 在CentOS中安装(传送门→) 2、 使用snap 安装(传送门→)……

    ainiok 2019年12月18日 【Hugo】 字数 61

    阅读更多
  • go-micro 安装

    wget https://github.com/protocolbuffers/protobuf/releases/download/v3.10.1/protoc-3.10.1-linux-x86_64.zip wget https://releases.hashicorp.com/consul/1.6.1/consul_1.6.1_linux_amd64.zip go get -u github.com/golang/protobuf/protoc-gen-go go get github.com/micro/protoc-gen-micro go get -u github.com/golang/protobuf/protoc-gen-go # 这里要先安装gRPC go get github.com/micro/go-micro protoc --proto_path=. --micro_out=. --go_out=. proto/greeter.proto # 如果上面执行报错,肯定是环境有问题, 可以用下面这种方式解决 protoc --plugin=protoc-gen-go=$GOPATH/bin/protoc-gen-go --plugin=protoc-gen-micro=$GOPATH/bin/protoc-gen-micro --proto_path=$GOPATH/src:. --micro_out=. --go_out=. proto/greeter.proto 安装 gRPC git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text ……

    ainiok 2019年11月9日 【Go】 字数 57

    阅读更多
  • mongoDB

    mongoDB 官网推荐 .repo 创建 /etc/yum.repos.d/mongodb-org-4.2.repo 文件,内容如下: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc 安装 sudo yum install -y mongodb-org ……

    ainiok 2019年11月1日 字数 19

    阅读更多
  • GCJ02,BD09坐标系转换

    定义 GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 1、 谷歌中国地图 2、 腾讯地图 3、 高德地图 BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系; 1、 百度地图 GCJ02坐标转换BD09 /** * @param double $lat * @param double $lng * @return array */ function convert_gcj02_to_bd09($lat, $lng) { $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng; $y = $lat; $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi); $at = atan2($y, $x) + 0.……

    ainiok 2019年10月15日 字数 169

    阅读更多
  • php中file_get_content、curl、fopen效率分析

    三个函数虽然都是读取资源的函数,但各自的应用场景不同。 curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。 fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多。 fopen /file_get_contents在请求HTTP时,使用的是http_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些。 curl可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据。 ……

    ainiok 2019年10月15日 字数 12

    阅读更多
  • LuaJIT安装

    Download 官网下载地址luajit.org wget http://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz tar -zxf LuaJIT-2.1.0-beta3.tar.gz cd LuaJIT-2.1.0-beta3 make && make install 执行完成后注意看提示 Note: the development releases deliberately do NOT install a symlink for luajit You can do this now by running this command (with sudo): ln -sf luajit-2.1.0-beta3 /usr/local/bin/luajit 由于LuaJIT 2.1 目前还是beta版本,所以在make install后,并没有进行luajit的符号连接,可 以执行下面的指令将luajit-2.1.0-beta3和luajit进行软连接,从而可以直接使用luajit命令 ln -sf luajit-2.1.0-beta3 /usr/local/bin/luajit 验证是否安装成功 luajit -v 编程界"十字真言”, 输出“Hello World” # cat hello.lua print("hello world") # luajit hello.lua hello world ……

    ainiok 2019年10月15日 【Lua】 字数 66

    阅读更多

我的名片

网名:肖司机

职业:Gopher

现居:深圳市

Email:job@ainiok.com

其他