LUA+libuv的一些开发心得

不断的查阅资料, 不断的学习, 阅读 lua代码. 一个人做开发其实是一个痛苦的过程,非常考验毅力和耐心。不过好在经过几个月晚上的学习积累, 已经渐入佳境。觉得有必要做一下笔记了。下面记录下踩过的一些坑。

阅读更多

实现一个带撤销功能的Primise

前言

在Javascript中,我们通常使用 Promise来实现异步功能, 然而, 在一些特定场景下,有时候我们需要这个异步操作能够被取消. 假定我们有一下场景, 用户打开一个对话框的时候我们就开始监听日志,在用户关闭对话框的时候, 不管监听通道是否建立都能关闭掉它. 再或者, 我们向用户发起一个请求. 并一直等待响应, 在任意时候我们能够取消掉它.

阅读更多

在LUA中使用异步IO的思考

LUA协程的介绍

lua 有一套非常高效的协程机制, 这一套实现非常轻量级, 虽然简单意味着高效, 然而它并不是真正意义上的对称式协程. lua中使用 coroutine.create 来创建一个协程, 使用 coroutine.resume 来执行协程。使用 coroutine.yield 来让出当前正在执行的协程. 通过这两个函数,你可以在两个协程之间相互传递参数, 直到协程执行完成.

阅读更多

使用PlatformIO开发合宙ESP32-C3

前言

工作之余闲逛感叹电子元件涨价之甚, 偶尔发现 合宙的 ESP32-C3 开发版居然非常便宜, 于是下单买了两片把玩,不得不说,这个开发板做工还是很棒的。

ESP32-C3是乐鑫推出的一款处理器,主要是替换下市场上老旧的ESP8266, MCU采用 RSIC-V架构, 主频160MHZ,提供内置Flash和外挂Flash 两个版本。 这个开发版所使用的是必须外挂Flash的型号。

阅读更多

使用JavaScript创建Code128编码

起因

本来设计使用20开头的EAN13 作为店内码的, 实际查询发现. 一些20开头的也是商品条码. 这就有点尴尬了, 为了不和商品条码冲突, 只好改变编码规则, 因此需要实现输出SVG格式的Code128条码.

阅读更多

在JavaScript中创建EAN-13条码

目标

EAN-13 商品条码由13位数字构成, 12位商品代码+1位校验码, 本次开发任务是在Javascript中创建 EAN-13 商品条码, 生成矢量图, 方便后续根据用户需要使用画板生成不同尺寸的图片.

阅读更多

公众号多入口开发笔记

随着业务发展, 商户也提出了需要一个公众号入口网页的需求, 然而平时, 我们的公众号却是只给个人用户使用的. 虽然微信提供的公众号菜单可以提供多入口, 然而. 随着将来合作商户来自各行各业, 则可能各自面临不同的需求. 这个时候再去把公众号菜单搞得庞杂起来不是一个明智的选择, 比较好的解决办法是根据用户角色提供各自不同的入口页面.

阅读更多

微信公众号扫码支付笔记

前提

正常情况下, 我们是可以使用微信的 NATIVE 支付来做. 但如果我们有公众号, 我们希望用户扫码付款的时候,能够进入到公众号网页中来完成. 这对于增加用户粘性是有一定好处的.

基本步骤

1. 生成一个二维码

扫码支付, 第一步肯定是生成一个二维码, 这个二维码可以是自己定义的一个链接.

阅读更多

PDO 连接池死锁现象分析

问题起因

我在项目中对PDOPool进行了二次封装, 并写了一个简易的SqlBuilder, 目的还是为了简化开发. 从开发过程到项目上线都没发现问题。本以为一切顺利,然而直到一天,服务器升级一个功能需要重启的时候,意外出现了。系统启动的时候卡死~, 直觉告诉我,这是发生死锁了。然而,服务不能停,智能多次重启的方法,总算成功启动了一次。接下来是排查问题的过程。在程序入口多处加入日志打印后发现,通过模拟程序启动的时候的大量重连进来的现场后发现,程序卡死在 DbPool->get,原来真相在这。

阅读更多

一次开发踩坑笔记

1. 起因.

在公司的一个项目中, 使用 PHP + Swoole开发一个常驻内存服务端, 对 \Swoole\Database\PDOPool 进行了封装. 编写了一个查询语句构造器. 因为要对 查询结果进行类型转换, 我的解决思路是在系统启动对时候, 通过遍历数据库连接, 对数据库中的表结构进行扫描, 并将其作为配置 缓存在 config/tables_gen.php 文件中. 一切看上去很美好, 知道我将工作进程根据CPU核心数配置成多个时候, 问题出现了.

阅读更多