22

php的bc数学函数高精度计算示例

php的bc数学函数高精度计算

  • bcadd — 2个任意精度数字的加法计算
  • bcsub — 2个任意精度数字的减法
  • bcmul — 2个任意精度数字乘法计算
  • bcdiv — 2个任意精度的数字除法计算
  • bcmod — 对一个任意精度数字取模
  • bcpow — 任意精度数字的乘方
  • bccomp — 比较两个任意精度的数字
  • bcpowmod — 将一个任意的精度数提高到另一个精度,并按指定的模数减少
  • bcscale — 设置所有bc数学函数的默认小数点保留位数
  • bcsqrt — 任意精度数字的二次方根

php的bc数学函数高精度计算示例如下: Continue reading

01

nodejs模块之 redis作业/任务队列模块 bee-queue

nodejs模块,redis作业/任务队列模块,bee-queue

Git URL:

Git Clone代码到本地:

Subversion代码到本地:

一个简单、快速、健壮的Node.js 作业/任务(job/task) 队列。由Redis支持。

  • 简单:~1000 LOC,最小依赖性。
  • 快速:通过最小化Redis和网络开销来最大化吞吐量。 基准测试。
  • 健壮:考虑并发性。原子性和失败的设计;接近完整的代码覆盖。

简介 Continue reading

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