自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lifugui001的专栏

阳光七十米

  • 博客(28)
  • 资源 (4)
  • 收藏
  • 关注

原创 TCP/IP超全笔记 - TCP篇

TCP(Transmission Control Protocol,传输控制协议)是一种的通信协议。

2024-03-06 14:17:16 523

原创 Node.js Addon编译调试教程(一次成功版)

NodeJs Addon 编译和调试教程,按照文章操作,保证成功!!

2024-02-27 10:30:50 599

原创 基于Mocha的typescript调试教程

编写单元测试时,不可避免的会出现难以一眼看出的问题,这个时候就需要debug了。以下是基于mocha的typescript调试配置信息,保证成功!!

2024-02-22 15:46:26 391

原创 MongoDB莫名崩溃的问题定位与解决纪实

国庆之前发布的软件版本一直运行正常,国庆之后,测试同事跑自动化测试脚本,发现该软件频繁异常,通过查看log发现,该软件使用的MongoDB崩溃了。该软件是个Windows的桌面软件,由于需要存储大量数据,会后台启动MongoDB,并以此作为数据存储库。

2024-01-25 19:23:10 1183

原创 git子模块使用关键命令

部分仓库很大,尤其是有大量历史遗留分支,直接clone时间很长,clone完之后切换分支也很久,因此可以只clone某个分支。

2023-12-26 16:04:36 534 2

原创 Java源码阅读笔记 - stream

Java源码阅读笔记 - stream为啥要学习stream在Java编程中,ArrayList估计是最常用的类之一,日常当作数组来用。对于数组的操作,进行会涉及遍历、过滤数据、修改数据等操作,这些操作最简单的就是for循环遍历了,然而却不够优雅。常规模式下最简单的遍历方式,如下所示。ArrayList<String> arr = new ArrayList<>();for (String str : arr) { System.out.println(str);}

2021-11-06 19:52:31 312

原创 如何设计副本集

如何设计副本集为了保证数据写入的一致性,MongoDB只允许一个primary节点,以及n个secondary节点。那么选择多少个节点比较合适呢?primary 选举多数同意原则必须要求多数节点同意选举,某节点才可能被选举成为primary,多数节点 = n / 2 +1;例如 3个节点,最少2个,4个节点最少3个为什么需要多数同意原则?因为需要保证primary只有一个!一票否决只要有一个节点否决,那么此次选举则失败,重新选举。自我申请选举节点连接不上primary时,就会

2021-09-04 17:23:23 145

原创 mongoDB最佳实践

大概任何事物都有优缺点,尤其是在不同场景之下。所以,我们要做的是让这些工具在最佳的场景下被使用,发挥出它们的特长,尽量避免不擅长的地方,所谓扬长避短。mongoDB作为一种NoSql数据库,有很多优点,也有很多缺点。那么,MongoDB在应该在什么场景下使用呢?怎样使用它才能发挥出它的最大威力?规范化VS反规范化(Normalization versus Denormalization)规范化:即把数据根据不同属性拆分开来,以便权责清晰,不耦合,通过部分字段进行关联(Refrence)。这样相关.

2021-08-15 16:38:03 405

原创 MongoDB权威指南--索引

mongoDBMongoDB:The Definitive Guide V2 阅读笔记索引学习mongodb索引之前,需要先了解下explain函数,这个函数会告诉你mongoDB语句的执行过程。explain 支持分析find、aggregate、count、group、count、distinct、remove以及update方法用法如下:db.collection.explain().find({})explain 支持三种模式:queryPlanner (默认模式),执行“查询优

2021-08-14 17:30:33 287

原创 Redis Lua脚本

Redis Lua脚本EVAL script numkeys key [key …] arg [arg …]script: 一段Lua 5.1 脚本程序,这段脚本不必定义为一个Lua函数numkeys:键名参数的个数要求使用正确的形式来传递键(key)是有原因的,因为不仅仅是 EVAL 这个命令,所有的 Redis 命令,在执行之前都会被分析,籍此来确定命令会对哪些键进行操作。示例:eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1

2021-07-04 15:54:40 148

原创 Redis持久化

Redis持久化RDB在指定的时间间隔内生成数据集的时间点快照,简单来说就是完整备份一份数据到磁盘,这样恢复数据的时候,直接加载到内存即可。备份机制Redis 调用 fork() ,同时拥有父进程和子进程。子进程将数据集写入到一个临时 RDB 文件中。当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。用法# 60 秒内有至少1000个键被改动,则自动保存一次save 60 100优点RDB是个非常紧凑的文件

2021-07-04 14:58:16 49

原创 Redis分布式锁

Redis分布式锁基于单Redis节点的分布式锁标准实现方式获取锁SET resource_name my_random_value NX PX 30000释放锁,通过lua脚本释放,保证原子性// 必须判断是自己加的锁,即随机数是自己产生的,不然就有可能把别人的锁给释放了if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1])else return 0end几

2021-07-03 19:09:05 94 1

原创 Redis数据结构学习笔记

Redis数据结构学习笔记常见的数据结构有数组、链表、集合、哈希表、二叉树、跳表等等,那么Redis里面有多少种数据类型,又是怎么实现的呢?Redis的特点存储效率高。Redis是对于计算机资源的主要消耗就在于内存,而且内存成本较高,因此节省内存是它非常非常重要的一个方面。这意味着Redis一定是非常精细地考虑了压缩数据、减少内存碎片等问题。快速响应。与快速响应时间相对的,是高吞吐量。Redis是用于提供在线访问的,对于单个请求的响应时间要求很高,因此,快速响应时间是比高吞吐量更重要的目标。

2021-07-03 15:39:11 101

原创 NodeJS的this指针解析

NodeJS 的this指针解析话说用了这么久的NodeJS,别问细问this指针的指向问题,还是会有点懵逼,下面来研究下这种情况下的this指针到底指向哪?文件内this指针直接上代码,打印出来看看// 全局this 指向module.exportsconsole.log(this); // {}this.num = 2;console.log(this.num); // 2console.log(module.exports.num); // 2console.log(global.n

2021-06-26 18:20:22 482

原创 nodejs Module加载机制

Require加在module机制详解加载文件类型加载流程图加载文件加载module加载文件类型node中的文件和模块是一一对应的。一个node.js文件就是一个模块,但是这个文件可能是js代码,JSON或者编译过的C/C++拓展加载流程图加载顺序和流程如下图所示,已经加载过的文件会直接缓存起来,下次再require会直接从缓存加载。加载文件加载module如果 X 是内置模块a. 返回内置模块b. 停止执行如果 X 以 ‘/’ 开头a. 设置 Y 为文件根路径如果 X 以

2021-06-26 15:23:21 259

原创 Express源码与中间件执行

这里写自定义目录标题Express源码阅读笔记实例化添加中间件app.use() 和 router.use()添加路由实例化Routerrouter.route()API请求处理流程API请求结果返回express的问题Express源码阅读笔记使用了三年多的express,今天坐下来读一读源码实例化function createApplication() { // 对应http.createServer(requestListener?: RequestListener)入参 // (re

2021-06-20 16:00:27 195

原创 如何快速提高小孩心算能力

背景家里有几个小孩,心算能力不怎么好,特意写了个工具,随机出口算题,自动判分,计时。再也不用买习题册,也不用手写出题目啦。。。。数学训练营先上网址:数学训练营使用超级简单,先选择题目类型,即可无限刷题,每20个小题一个回合。开始答题。。。。一个回合结束,看看得多少分,用了多少时间。。。。再来一局,无限刷题,,还愁心算能力提不高吗,哈哈哈哈哈哈...

2020-05-10 15:49:45 579

原创 ios开发国际化

ios国际化笔记背景一开始做app的时候没考虑到国际化,项目快做完了,领导要求做国际化(汗。。。。)涉及的内容app名称的国际化文本的国际化图片的国际化启动画面的国际化添加app支持的语言如下图所示,添加app支持的语言 app名称的国际化1、 新建InfoPlist.strings文件,注意名字不能错,右侧图后缀名(.string...

2020-05-10 11:20:03 158

原创 深入理解Raft一致性算法 (论文原文)

寻找一种易于理解的一致性算法(扩展版)摘要Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。从一...

2018-07-16 22:52:43 1089

原创 K8s基础

Kubernetes 概述Kubernetes(简称 k8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效(powerful),k8s提供了应用部署,规划,更新,维护的一种机制。k8s一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,k8s会自动...

2018-07-16 22:50:52 18613 1

原创 Docker 入门 -- Stack

Docker 入门 – Stack前面我们部署的都是单个服务,现实需求中,应用可能很复杂,需要拆分成多个相互关联的服务,这时候我们就需要一次性部署多个服务。 堆栈是一组相互关联的服务,它们共享依赖,可以协同排列和缩放。示例:version: &amp;amp;quot;3&amp;amp;quot;services: web: # replace username/repo:tag with your name and ...

2018-07-07 15:15:11 194

原创 Docker 入门 -- Swarm

Docker 入门 – SwarmSwarm是一组运行Docker并加入到集群中的机器。在此之后,您继续运行您习惯使用的Docker命令,但现在它们由群集管理器在群集上执行。swarm中的机器可以是物理的或虚拟的。加入swarm后,他们被称为节点。Swarm管理器可以使用多种策略来运行容器,例如“最空节点” - 它可以使用容器填充使用率最低的机器。或者“全局”,它确保每台机器只获取指定容器...

2018-07-03 23:18:41 193

原创 Docker 入门 -- 服务

Docker 入门 – 服务docker-compose.yml一个YAML文件,用于定义Docker容器在生产中的行为方式,是容器的配置文件,如下所示:version: &amp;quot;3&amp;quot;services: web: # 格式:username/repo:tag image: yangguangqishimi/testdemo:1.0.1 deploy: ...

2018-07-03 00:12:26 132

原创 Docker入门--基本概念、容器

Docker入门–基本概念、容器Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。容器可以轻松地部署应用程序。容器的特点灵活:即使是最复杂的应用程序也可以在容器中运行;轻量级:容器利用并共享主机内核;可互换:即时部署更新和升级;便携式:在本地构建,部署到云中并在任何地方运行;可扩展性:增加和自动分发容...

2018-07-01 22:42:18 325

原创 正则表达式--反向引用与正向预查

正则表达式–学习笔记 正则表达式,是一种对字符串操作的逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。—-真真是个好东西But , 那些规则真的不好记住,稍微要实现点复杂功能,就得翻箱倒柜找笔记,找度娘,很费时间。。。废话真多,开始正题!1 常用符号^ 匹配输入字符串的开...

2018-05-19 17:51:37 9698

原创 JavaScript 异步编程--async、await实现原理

JavaScript 异步编程–Generator函数Generator(生成器)是ES6标准引入的新的数据类型,其最大的特点就是可以交出函数的执行的控制权,即:通过yield关键字标明需要暂停的语句,执行时遇到yield语句则返回该语句执行结果,等到调用next函数时(也就是说可以通过控制调用next函数的时机达到控制generator执行的目的)重新回到暂停的地方往下执行,直至genera...

2018-04-25 21:52:51 694

原创 C#网易云音乐中需付费歌曲的下载助手。

网易云音乐要收费了,部分歌曲只能听不能下载,还是很遗憾的。闲来无事,写了个收费歌曲的下载助手。下载链接:链接:http://pan.baidu.com/s/1ge5stgB 密码:f9qo使用方法:1、安装.net framework 4.0 (若没装的话,下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?i

2016-06-05 16:22:42 5686

原创 屏幕长满美女照片,还带播放音乐哟。(屏幕长满玫瑰花)C# WPF

最近刚学WPF,有逢朋友过生日,没什么好送的,就写了个这个东西,现在写在这作为纪念。代码还有些需要改进的地方,不过现在比较忙,就不去优化了额,能实现效果就好。XAML:<Window x:Class="BirthdayGift.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

2013-12-18 15:42:12 1555

Altium.Designer10破解工具

Altium.Designer10破解工具,有详细教程哦

2013-12-16

LCD1602显示日期时间

LCD1602显示日期时间,自己写的代码

2013-12-16

实时万年历DS1302+红外调整+18B20

实时万年历DS1302+红外遥控调时+18B20

2013-12-16

Insight3.5 +注册码

完美破解 c/c++编译器 配合keil用于单片机编程很方便

2012-10-07

空空如也

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

TA关注的人

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