ngtwewy

商品库存肯定是很有限的,如何控制库存不让出现超买是一个非常重要的问题。事务是控制库存超卖的必要不充分条件。举例:总库存:4个商品请求人:a、购买1个商品 b、购买2个商品 c、购买3个商品程序如下:beginTranse try{ result = db->query('select amount from s_store where postID = 12345'); if(result->amount > 0){ //quantity为请求减掉的库存数量 db->query('update s_store set amount = amount - qua

2021-01-20    MySQL    698
ngtwewy

来源:名动漫网课

2021-01-19    PS 手绘    253
ngtwewy

assert 模块assert模块是Node的内置模块,主要用于断言。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。assert(value[, message])value 检查是否为真的输入。message | assert.ok() 的别名。assert.ok(value[, message])如果 value 不是真值,则抛出 AssertionError,并将 message 属性设置为等于 message 参数的值。 如果未定义 message 参数,则会分配默认错误消息。 如果 message 参数是 Error 的实例,则它将被抛出而不

2021-01-18    Node.js    395
ngtwewy

使用 Mocha 和 Node.js自带的assert做单元测试,使用SuperTest做请求接口。Mocha 简介mocha 提供 TDD(测试驱动开发)、BDD (行为驱动开发) 和 exports 风格的接口。BDD是“行为驱动的开发”(Behavior-Driven Development)的简称。BDD认为,不应该针对代码的实现细节写测试,而是要针对行为写测试。BDD测试的是行为,即软件应该怎样运行。BDD接口提供以下方法:describe():测试套件 it():测试用例 before():所有测试用例的统一前置动作 after():所有测试用例的统一后置动作 before

2021-01-17    Node.js    593
ngtwewy

NPM Package 学习,一个符合CommonJs规范的包,都可以成为一个Npm Package。一,创建一个包创建一个文件夹:good-helloworld添加如下文件:index.jsexports.helloWorld = function () { return "Hell World!"; } exports.你好世界 = function () { return "你好世界!"; } package.json{ "name": "good-helloworld", "version": "0.0.1", "private": false

2021-01-15    npm    308
ngtwewy

Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) -> Promise.> 参数records Array 要创建实例的对象(键/值 对)列表 [options] Object [options.fields] Array 要插入的字段。默认全部 [options.validate=true] Boolean 插入每条记录前进行验证 [options.hooks=true] Boolean 在执行前/后创建钩子 [options.individualHooks=false

2021-01-14    Node.js    778
ngtwewy

安装 node-xlsxnpm install node-xlsx --save读取 Excelvar xlsx = require('node-xlsx'); // 解析得到文档中的所有 sheet var sheets = xlsx.parse('test.xls'); // 遍历 sheet sheets.forEach(function(sheet){ console.log(sheet['name']); // 读取每行内容 for(var rowId in sheet['data']){ console.log(rowId);

2021-01-14    Node.js    305
ngtwewy

正向代理与反向代理的区别就是代理的对象不一样,正向代理代理的对象是客户端,反向代理代理的对象是服务端。1,正向代理我们日常的科学上网就可以用Nginx做正向代理如下,也是正向代理server { location / { proxy_pass http://$http_host$request_uri; } } 2,反向代理配置语法:Syntax:proxy_pass URLDefault:--Context:location,if inlocation,limit_except如下:server { location ~ /test_ind

2021-01-14    Nginx    233
ngtwewy

tags字段是逗号隔开tag id。查询一select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') from tb_tag where id in (i.tags) ) as tags_title from tb_item as i; 结果:查询二select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') fro

2021-01-13    MySQL    287
ngtwewy

OSS可以通过阿里云STS(Security Token Service)进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。使用场景对于您本地身份系统所管理的用户,例如您的App的用户,将这部分用户称为联盟用户。通过阿里云STS服务为阿里云账号(或RAM用户)提供临时访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个临时访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,临时访问凭证过期后会自动失效。实现原理以一个移

2021-01-13    运维    336
ngtwewy

可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined。之前:let nestedProp = obj.first && obj.first.second; 使用可选链操作符?.let nestedProp = obj.first?.second; 连用可选链操作符let custome

2021-01-12    JavaScript    315
ngtwewy

.head-section{ width: 100%; height: 360px; position: relative; z-index: -1; overflow: hidden; } .head-section::after{ content: ''; display: block; width: 160%; height: 200%; border-radius: 50%; position: absolute; left: 50%; top: -10

2020-12-23    CSS    339
ngtwewy

2020年12 月 8 日,CentOS 项目宣布,CentOS 8 将于 2021 年底结束,而 CentOS 7 将在2024年,其生命周期结束后停止维护。为其接班的正是 CentOS Stream 滚动发行版本,原本拥有 10 年支持的 CentOS 8 将在2021年年底说结束维护就结束维护。所以火速将自己的服务器从 CentOS8 降到 CentOS 7。mkdir /space cd /space wget https://nginx.org/download/nginx-1.18.0.tar.gz yum -y install gcc pcre pcre-devel zl

2020-12-16    Linux    854
ngtwewy

通常异常使用方式:try { JSON.parse(json); } catch (e) { // TODO } 但是这对于异步编程而言并不一定适应。异步I/O的实现主要包含两个阶段:提交请求和处理结果。这两个阶段中间有事件循环的调度,两者彼此不关联。异步方法则通常在第一个阶段提交请求后立即返回,因为异常并不一定发生在这个阶段,try/catch的功效在此处不会发挥任何作用。异步方法的定义如下:try{ process.nextTick(callback); }catch(e){ //todo... } 调用async()方法后,callback被存放起

2020-12-15    Node.js    327
ngtwewy

当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。官方文档: http://nodejs.org/api/stream.html小文件拷贝fs.writeFileSync(dst, fs.readFileSync(src)); 大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。fs.createReadStream(src).pi

2020-12-15    Node.js    317
ngtwewy

最终我选择使用了 sharp https://github.com/lovell/sharp基本用法:var images = require("images"); images("input.jpg") //Load image from file //加载图像文件 .size(400) //Geometric scaling the image to 400 pixels width //等比缩放图像到400像素宽 .draw(images("l

2020-12-14    Node.js    381
ngtwewy

管理员可以通过分析nginx的错误日志手动添加白名单规则。白名单规则配置naxsi核心规则文件naxsi_core.rules需要在nginx配置文件nginx.conf下的http部分导入,而naxsi白名单规则文件naxsi_whitelists.rules一般在nginx配置文件nginx.conf下的location部分导入,可放置在CheckRules语句之前。location部分对应的配置内容如下:include naxsi_whitelists.rules;#导入白名单规则 SecRulesEnabled; DeniedUrl "/RequestDenied"; Check

2020-12-14    Nginx    393
ngtwewy

使用 tag__in 可以调用有特定标签的文章。//获取一个标签的文章 根据标签别名获取有这个标签的文章: $query = new WP_Query( 'tag=cooking' ); //根据标签 ID 获取有这个标签的文章: $query = new WP_Query( 'tag_id=13' ); //获取多个标签的文章 根据标签的别名获取带有这几个标签其中一个的文章: $query = new WP_Query( 'tag=bread,baking' ); //根据标签别名获取同时拥有几个标签的文章: $query = new WP_Query( 'tag=bread+

2020-12-10    Wordpress    348
随机推荐
Javascipt数组
Dedecms 织梦5.7 文章时间问题
php执行cli程序
MySQL 自定义函数获取一个分类的无限级子分类
函数限流,防止多次触发函数 Debounce 和 Throttle 的原理及实现
Mac下用命令行压缩和解压rar文件的方法
使用 Android 调试桥 (adb) 无线调试 APP
Apache自带的ab压力测试工具
修改macOS自带的PHP版本
MAC 环境下初始化mysql root 密码