自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 分布式事务的几种解决方案

事务是什么如果我们需要对若干数据进行更新操作,为了保证这些数据的完整性和一致性,我们希望这些更新操作要么都成功,要么都失败事务的特性(ACID)原子性,是指一个事务操作不可分割,要么成功,要么失败,不能有一半成功一半失败的情况。一致性,是指这些数据在事务执行完成这个时间点之前,读到的一定是更新前的数据,之后读到的一定是更新后的数据,不应该存在一个时刻,让用户读到更新过程中的数据。隔离性,是指一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对正在进行的其他事务是隔离的,并发执行的

2021-07-30 00:07:06 244

原创 使用redigo对结果转换类型时nil值问题

使用redigo对结果转换类型时nil值问题某些redis命令即使key不存在也不会返回null值,例如命令:keys这种情况下使用redis.string等转化类型时可能不是我们期望的"查询不到就报错:redigo: nil returned"的情况举个栗子:redis> get anullredis> keys aredis> 使用get命令没有key:a 时返回的是null使用keys命令没有key: a 时返回的是一个空数组代码中表现:res1, e

2021-07-28 17:23:39 2740

原创 财富的本质

如何向上跨越阶层先陈述一个事实,人生而不平等, 那些一直嚷嚷着大家都在同一起跑线上就是扯淡。即使在统一起跑线,条件优越的人是开着汽车,普通人是跑步,而身处逆境的人是拉着一堆货物的人力车,这种即使在同一起跑线大家可利用的资源也是不平等的。需要认清这个现实,我们需要竞争的也不是比我们高出几个阶层的人,而是和我们同一阶层的人。不知道大家有没有发现,有些人感觉人生没有希望,不想努力,混日子,成为了一条没有梦想的咸鱼。所以我们只要努力,就可以超越身边70%的人,经过多年,甚至几代人的努力才能实现阶层的跨越。承认自

2020-05-20 22:20:02 442

原创 第一章 成为一个很厉害的人

为什么要学习就好像烧开水,不在下面添柴,水不会维持原温度,只会慢慢变凉。学习也是一样,只有不断的学习,才能逆势向上。不学习每天刷抖音,看剧,感觉很爽,因为这是趋势向下的。就好像顺着山坡向下,毫不费力。不断学习,不断接触新的未知的知识,这个过程是很不舒服的,不知道大家有没有这种感觉,做熟悉的事情,写熟悉的代码逻辑,感觉很爽,很快就能完成,但是当我们去尝试新的东西,比如演讲或者学习一门新的编程语言。但是当真正经历过之后,才发现之前的经历才是让自己成长最快的。如何学习基于这一点,学习有两个方面,一方面是实践

2020-05-20 00:38:49 255

原创 序-啰嗦几句

为读书笔记写序,也是没谁了最近养成了每天晚上读几页书的习惯,虽然比之前浑浑噩噩的自己好了一些,心里上有了一些满足感。但由于看的都是一些小说、游记类的东西,没有心思整理笔记,以至于现在我只记得书名,以及一些八卦事情,没有深层次的研究一本书。心血来潮最近看了九边老师的《向上生长》,感觉自己这么多年的困惑得到了解答,我们与优秀的人的差距是可以用浅显易懂的方式描绘出来的,向上的阶梯也是为像我这样的普通而平凡的人开放的,感觉人生不再只有迷茫,可能还是一条咸鱼,但是有事可做的咸鱼至少精神上不再孤独吧能坚持多久

2020-05-19 23:00:00 259

原创 判断一个值是否是ObjectId类型

经常用到,这里记一下const mongoose = require('mongoose');const { ObjectId } = mongoose.Types;ObjectId.isValid(undefined); // falseObjectId.isValid('helloworld'); // falseObjectId.isValid('5cb44fbedba9b15b7...

2019-09-10 12:05:10 2121

原创 MongoDB数据库规范

数据库【强制】数据库命名禁止使用任何 _(下划线)外的特殊字符,禁止使用数字打头的库名,数据库名最多为 64字符。反例: 3pan / db_$test /【推荐】数据库名全部使用小写反例:Parents PARENTS集合【强制】mongodb集合命名全部小写,禁止使用任何 _(下划线) 以外的特殊字符,禁止使用任何 _(下划线) 以外的特殊字符,集合名称最多...

2019-09-03 14:17:29 533

原创 微服务之熔断器

熔断器模式可以防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器模式也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试调用操作。问题描述假设我们有两个服务serviceA、serviceB,serviceA可以正常对外提供服务,某些API依赖serviceB。当serviceB异常完全...

2019-06-14 17:20:21 1703

转载 用十条命令在一分钟内检查 Linux 服务器性能

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1iost...

2019-04-30 18:08:22 146

原创 抽奖算法

根据实际需求整理的抽奖算法逻辑需求说明奖品多数为虚拟商品,只设置比例,不设置数量奖品需要精准发放,举例:假如只有两个奖品,比例为1:9,那么10个人抽奖一定要1个人中奖品1,9个人中奖品2算法逻辑注: 奖池相当于一个队列计算各个奖品的比例 例如 奖品1:奖品2:奖品3:奖品4 = 1:5:30:64将对应比例的奖品按照份数放入奖池将奖池打乱判断奖池数量是否达到奖品最小数量,...

2019-04-11 18:18:39 6794

原创 mongoose document 判断属性是否存在的问题

mongoose schema 如下const userSchema = new Schema({ username: String, password: String, age: Number, isLogin: Boolean,});我们插入一条记录const user = new User({ username: 'pandora', passwor...

2019-04-03 15:43:24 1055

原创 koa status 204的问题

当设置ctx.body=undefined时,ctx.status会自动设置为204,即使ctx.body再次赋值时这个值也不会变ctx.body = undefined;console.log(ctx.status); // 204ctx.body = 'success';console.log(ctx.status); // 204结果这个请求没有响应数据...

2019-04-01 19:14:38 1371

原创 【Nodejs】9.8-10.8 setInteral 运行中停止的问题

现象setInterval(function() { // do samething console.log(Date.now());}, 500);以上这段代码运行25天后会停止,而且不会有任何错误日志github上issue讨论影响范围: node-schedule定时任务、eggjs的schedule定时nodejs在10.9这个版本上修复了这个bug...

2019-01-18 10:59:54 242

原创 mongoose复杂类型doc.save()无法更新的问题

原始document:{ "_id" : ObjectId("5c234903be557205da9343d7"), "apps" : {}, "createTime" : NumberLong(1545816310609), "updateTime" : NumberLong(1545816310609)}apps为复杂类型,当进行更新时const us...

2018-12-26 17:59:25 1127

原创 踩坑-微信高级群发接口

接口地址: 群发接口和原创校验1. 根据OpenID列表群发post实例: { "touser":[ "OPENID1", "OPENID2" ], "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews&q

2018-09-06 16:45:46 3435 2

原创 AB测试初探

什么是AB测试?AB测试的概念来源于生物医学的双盲测试,双盲测试中病人被随机分成两组,在不知情的情况下分别给予安慰剂和测试用药,经过一段时间的实验后再来比较这两组病人的表现是否具有显著的差异,从而决定测试用药是否有效。互联网公司的AB测试也采用了类似的概念:将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让两个或多个属性或组成成分相同(相似)的访客群组访问,收集各群组的用户体验...

2018-08-09 15:37:11 1879

原创 eggjs业务中间件中无法获取ctx.params

问题由于路由中间件的加载顺序在业务中间件之后,所以在这里无法取到ctx.params// app/middleware/test.jsmodule.exports = options => { return async function (ctx, next) { ctx.logger.info(ctx.params); // undefined await...

2018-08-03 00:21:51 4654 2

原创 eggjs2.x router 解析问题

router规则router.get('/api/users/:id', app.controller.user.show);router.get('/api/users/login', app.controller.user.login);在上述规则下请求/api/users/login, 路由会匹配到第一个将’login’字符串当做id这是eggjs 升级2.x之后出现的问题,...

2018-08-02 23:55:32 1569

原创 微信模板消息发送成功但显示空白的问题

代码发送模板消息 { touser: 'openidxxxxxx', template_id: '模板idxxxxx', url: 'https://www.baidu.com', data: { first: { value: '恭喜您获得XXX全额奖学金!\n' }, keyword1:...

2018-05-31 11:07:38 14173 2

原创 mongoose 全量更新

mongoose文档Note:All top level keys which are not atomic operation names are treated as set operations:Example:var query = { name: 'borne' };Model.update(query, { name: 'jason bourne' }, op...

2018-05-25 10:47:16 1765

转载 gitlab公私钥连接的解决方案,坑。。。

https://www.jianshu.com/p/3cd7883f0b8b

2017-12-25 18:10:15 2602

原创 ffmpeg 参数解析

-c:v 指定编码器 默认值: mpeg4 mpeg4编码器,编码速度快,清晰度不够,处理后的文件比较大 libx264编码器,编码比较慢,清晰度高,处理后的文件比较小-preset 编码速度 默认值: medium 当编码器指定为libx264时可以指定该参数, 编码速度越慢,清晰度越高,处理后的文件大小相同 可选值: ultrafast、superfast、veryfast、

2017-06-30 11:28:38 1096

原创 SqlYog注册码

姓名(Name):cr173 序列号(Code):8d8120df-a5c3-4989-8f47-5afc79c56e7c姓名(Name):cr173 序列号(Code):59adfdfe-bcb0-4762-8267-d7fccf16beda姓名(Name):cr173 序列号(Code):ec38d297-0543-4679-b098-4baadf91f983

2017-04-25 16:50:03 675

原创 Nodejs异步编程二——Promise/A

Promise/A模式相对比较简单,主要适用于单个异步操作,具体如下:只会存在三种状态:未完成态、完成态和失败态。未完成态只能向完成态和失败态转化。完成态和失败态不能相互转化。状态一旦转化,不能更改。以文件读取为例var fs = require("fs");var path = require("path");var readStream = fs.createReadStream(pa

2017-02-24 23:02:39 364

原创 Nodejs异步编程一——发布/订阅

我们刚开始学习nodejs时难免会写出这样的代码,一旦嵌套过深,代码将变得很难维护var fs = require("fs")var path = require("path")// 原始函数fs.readdir(path.normalize('/test'), function(err, files){ files.forEach(function(filename, index){

2017-02-24 22:36:06 1451

原创 node处理未捕获异常

nodejs最有魅力的地方就是异步编程,但异步情况下异常处理起来就比较麻烦了。// 同步方法var sync = function(){ throw new Error("出错了!!!")}// 异步方法var async = function(callback){ // do something process.nextTick(function(){

2017-02-18 22:25:17 911

原创 MySQL存储引擎

MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like ‘default_storage_engine’;查看当前数据库到默认引擎。命令:show engines和show variables lik

2017-02-13 15:10:08 230

转载 Js 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()

filter(): 语法:var filteredArray = array.filter(callback[, thisObject]);参数说明:callback: 要对每个数组元素执行的回调函数。 thisObject : 在执行回调函数时定义的this对象。//过滤掉小于 10 的数组元素://代码:function isBigEnough(element, index, arra

2017-02-12 18:36:57 275

原创 各语言连接mongodb

java MongoClient mongoClient; MongoCredential credential = MongoCredential.createCredential(“user”, “database”, password); mongoClient = new MongoClient(new ServerAddress(ip, port), Arrays.asList(cr

2017-01-11 17:39:22 927

原创 触动精灵文档

https://www.zybuluo.com/miniknife/note/212706 https://www.zybuluo.com/miniknife/note/293935

2016-11-16 20:13:38 1112 1

原创 js数组合并的两种方法

js代码// 第一种 var mergeTo = [4,5,6], mergeFrom = [7,8,9]; mergeTo = mergeTo.concat(mergeFrom); mergeTo; // is: [4, 5, 6, 7, 8, 9] //or var a = [1,2], b = [3,4], c = a.concat(b); // 第二种 var m

2016-10-26 15:18:43 7321 1

转载 visualvm监控jvm及远程jvm监控方法

VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具。它集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。 Java开发人员可以使用 VisualVM创建必要信息的日志,系统管理人员可用来监控及控制Java

2016-10-25 19:59:31 335

转载 垃圾优先型垃圾回收器调优

了解如何针对评估、分析和性能来调整和调优 G1 GC。垃圾优先型垃圾回收器 (G1 GC) 是适用于 Java HotSpot VM 的低暂停、服务器风格的分代式垃圾回收器。G1 GC 使用并发和并行阶段实现其目标暂停时间,并保持良好的吞吐量。当 G1 GC 确定有必要进行垃圾回收时,它会先收集存活数据最少的区域(垃圾优先)。垃圾回收器 (GC) 是一个内存管理工具。G1 GC 通过以下操作实现自动

2016-10-20 15:10:33 341

转载 MySQL 5.7 密码安全策略简介

mysql> SHOW VARIABLES LIKE 'validate_password%';+--------------------------------------+--------+| Variable_name | Value |+--------------------------------------+--------+|

2016-10-18 16:26:44 452

原创 Groovy map和String 互相转化

m = [a: 123, b: ‘test’] print “原来的: $m”s = m.Inspect() print “转成str: $s”m2 = Eval.me(s) print ” 再转换回来: ${m2}”

2016-09-19 15:11:15 6115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除