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