About 织梦先生

佛不度我,我自魔;佛若度我,佛也魔!
22

Nodejs模块之ioredis模块的简单使用

Node模块Nodejs模块之ioredis模块的简单使用

ioredis 是Nodejs的一个Redis模块,有着与Redis一模一样的 API 操作。

redis是单线程作业,所以不管查询任务是由一个链接发来的还是多个链接发来的,redis是串行的执行。并通过当前的链接返回客户端。nodejs接受redis的返回后,不管是不是并行,都要等主线程空闲下来才能一个个处理服务器返回的数据。

io

它有几个特点:

  • 全功能。它支持 Cluster,Sentinel,Pipelining 以及 Lua 脚本和 Pub / Sub(在二进制消息的支持下)。
  • 高性能。
  • 令人愉快的 API 它适用于 Node 回调和 Promise。
  • 转换命令参数和回复。
  • 透明键前缀。
  • 抽象 Lua 脚本,允许您定义自定义命令。
  • 支持二进制数据。
  • 支持 TLS。
  • 支持离线队列和准备检查。
  • 支持 ES6 类型,如 Map 和 Set。
  • 支持 GEO 命令(Redis 3.2 Unstable)。
  • 复杂的错误处理策略。

Continue reading

13

nodejs中的单进程异步锁——async-lock

nodejs中的单进程异步锁,node异步锁,async-lock

为什么是async-lock?

因为我见其下载量比较大(在我发现的所有类似库中是最大的)且最近更新时间较近。

场景

  1. 在异步函数中,由于存在异步操作,对此函数的A,B两次执行会出现结束次序不可控。即A先执行,却比B后退出函数。
  2. 对于数据库的操作,有时会将select的值进行一系列业务变化后重新update至数据库。就比如简单的计数器,0开始计数,假设由于业务原因,
    必须在代码中进行+1操作。则A读取数据库进入异步执行,此时B也开始执行读取数据库的代码,最终后造成两次执行后计数器只加了1。

此时便需要锁机制,类似于Java中的synchronized或者lock。执行同一段代码时,添加相同的key,则发现此key正在使用,则直接放入此key的待执行数组。 Continue reading

12

Node 进程互斥锁模块 – lockman

Node进程互斥锁,lockman,进程锁

这是我在网上找到的一个node模块,用在thinkjs开发框架中的多进程项目中的工作进程中,失败。表现是,在locker.acquire的回调函数中使用console.log(‘…’),有时不打印,有时会打印几百上千条,没搞明白,也许是与作者的开发环境有差异?也许是年代久远(2017-01-07最后一次更新)?

不知不知……

介绍

lockman 是一个用于多进程的「互斥锁」, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程「影响」。
它可以把一段代码定义为「互斥段」(critical section),「互斥段」在一个时刻内只允许一个进程进入执行,
而其他进程必须等待。

不同之处,C# 的 lock 关键字作用在「线程间」,lockman 作用在 Node 的进程间。

安装

示例 Continue reading

03

WGS84 / BD09 / GCJ02 / MapBar 经纬度坐标互转

Geolocataion converting between WGS84, BD09 and GCJ02.

Python 写的 WGS84 / BD09 / GCJ02 / MapBar 经纬度坐标互转。

  • WGS84: GPS coordinates for Google Earth (GPS坐标,谷歌地球使用)
  • GCJ02: national coordinate system developed by China (国测局坐标,谷歌中国地图、腾讯地图、高德地图使用)
  • BD09: Baidu coordinates (百度坐标系,百度地图使用)
  • MapBar: MapBar coordinates (图吧坐标系,图吧地图使用)

全部代码: Continue reading

20

Linux 快速删除已输入但还未执行的命令

Linux 快速删除已输入但还未执行的命令的快捷键

Q:
有时候调用历史命令,都是很长的那种,然后发现并不是自己想要的,需要重新输入,如何快速删除已有/已输入的命令/内容?
或者说,
比如我输入了 # ps -aux | grep yum,这个命令还没执行,现在我不想用这个命令了,如果快速删除已输入的内容,也就是# ps -aux | grep yum

A:
直接按Ctrl + c Continue reading

19

Clion的配置文件 CMakeLists.txt 语法介绍与实例

一、Cmake 简介

cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。

二、常用命令

1. 指定 cmake 的最小版本

这行命令是可选的,我们可以不写这句话,但在有些情况下,如果 CMakeLists.txt 文件中使用了一些高版本 cmake 特有的一些命令的时候,就需要加上这样一行,提醒用户升级到该版本之后再执行 cmake。 Continue reading

18

解决Linux Kali iptables开放22端口失败等一系列问题

这篇文章是针对2020年下载安装的kali系统碰到的关于 iptables开放22端口失败等一系列问题的解决办法,如果是其它系统,可以借鉴一下思路。

各种报错:

下面的错误是怎么出来的我忘了

主要思想就是想尽量少的安装其它不必要的命令,所以折腾了好一阵子。

开机启动默认会执行/etc/init.d/ 下的所有可执行文件,

所以,粗暴点,就在这个文件夹(/etc/init.d/)下加个我自己的可执行文件吧,写好shell语言,也方便我以后再折腾。 Continue reading

18

iptables重启失效的解决办法

iptables重启失效的解决办法,iptables重启后不生效怎么办?

假定你之前设置过,并且当时在没重启的情况下是生效的,如果是这样的话,那是因为没有做iptables的保存,也就是他的最关键的一步。

因为Linux的发行版很多,所以iptables放置位置会有不同,一般会在/etc下,或者/usr 下,

(刚才我看了一下新装的Ubuntu,它的iptables就不在/etc下,在/usr下)

所以,为了准确,先查找iptables的文件位置 Continue reading

16

nc命令、netcat命令

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

刀是无罪的,重要的是看用刀的人要用它来做什么。

netcat命令语法:
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

连接到某个地方: nc [-options] hostname port[s] [ports] …
侦听入站: nc -l -p port [options] [hostname] [port]

-d 后台运行模式

-e <程序>入站程序执行[危险!!]
-g <网关> 设置路由器跃程通信网关,最多8个
-G <指向器数目> 设置来源路由指向器,其数值为4的倍数,如:4,8,12……
-h 帮助
-i <延迟秒数>发送信息或扫描端口的时间间隔
-I 侦听模式,管控传入资料
-L 连接关闭后,仍然继续监听
-n 直接使用IP地址,而不通过域名服务器
-o <输出文件> 指定文件名称,把往来传输的数据以16进制字码保存到该文件
-p <通信端口>本地端口号
-r 随机本地和远程端口
-s <来源位址> 设置本地主机送出数据包的IP地址
-t 使用TELNET方式交互
-c 发送CRLF而不是LF
-u 使用UDP传输协议
-v 显示指令执行过程
-w <超时秒数> 设置等待连线的时间
-z 使用0 I/O 模式,只在扫描通信端口时使用 Continue reading