- 博客(32)
- 收藏
- 关注
原创 简单地实现NodeJS内存缓存过期
在一些业务中,要从redis获取一个超大的字符串。为了避免频繁从redis获取数据,需要在内存中实现对数据的缓存。
2024-03-22 10:13:53
459
原创 简单地实现令牌桶限速
令牌算法:允许过载处理,可以一下子把令牌桶的令牌消费,由于按一定速率添加令牌,令牌消费按照一定速率限速。消费令牌后,发现令牌桶没有令牌,及时补充令牌,防止添加令牌过慢,系统相对空闲的情况。滑动窗口:允许在最小窗口的边界,超过限定的速率。例如:按最小窗口为分钟,每分钟最大消费60次,在01分59秒和02分0秒这2秒的时间内,允许消费120次,其他时间不消费。4. 消费令牌后,发现令牌桶没有令牌,及时把消费的令牌还给令牌桶。1. 按一定的速率往令牌桶添加令牌。3. 令牌桶满后,新增的令牌丢弃。
2024-03-22 09:34:37
387
原创 Mongodb优化配置项
如果写入的数据是读取的数据,就会直接读取脏数据。满足eviction_dirty_trigger或者eviction_trigger,用户线程参与evict数据,所有的数据库操作将会被堵塞。应避免脏数据写满,或者调整eviction_dirty_trigger比例,避免用户线程参与evict数据。通过调整checkpoint的wait时间,即时把脏数据写入磁盘,避免用户线程参与evict数据。默认evict线程为4,调整evict线程数,提高evict速度。允许并发写入的最大值,默认128。
2023-08-17 17:19:45
1484
原创 spring-boot动态注入interface并实现定义的方法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-03-23 22:55:47
5693
原创 NodeJS模拟多IP连接MTQQ
查看网卡ifconfig添加IPip address add 192.168.4.100/24 dev ens160 // ens160是网卡ip address add 192.168.4.102/24 dev ens160查看端口号范围cat /proc/sys/net/ipv4/ip_local_port_range修改端口号范围vim /etc/sysctl.conf 增加一行net.ipv4.ip_local_port_range = 1024 6500.
2022-03-17 09:33:08
591
原创 mongodb 增量备份
创建docker networkdocker network create test创建mongo容器docker run -itd --name test1 --network test mongo mongod --replSet rs0 --bind_ip_alldocker run -itd --name test2 --network test mongo mongod --replSet rs0 --bind_ip_alldocker run -itd --name test
2021-03-22 21:36:20
1952
原创 node-gyp 记录
{ "targets": [ { "target_name": "hello", "cflags!": [ "-fno-exceptions" ], "cflags_cc!": [ "-fno-exceptions" ], "sources": [ "src/node-blf.cc" ], "include_dirs": [ "<!@(node -p \"require('node-addon-api').inc.
2021-03-20 09:40:31
368
原创 k8s部署mongodb分片集群
配置节点labelapiVersion: v1kind: Nodemetadata: name: host1 labels: mongodb: "mongo-0"---apiVersion: v1kind: Nodemetadata: name: host2 labels: mongodb: "mongo-1"---apiVersion: v1kind: Nodemetadata: name: host3 labels: mo
2021-02-20 17:08:35
2061
原创 使用docker来部署mongodb分片集群
说明使用docker在本机创建mongodb集群。这里只部署1个config server、1个mongo shard、1个mongos。读者可自行扩展到多个主机,多个config server、shard、mongos。创建docker网络docker network create test创建mongodb config serverdocker run -itd --name mongo-config -p 27019:27019 --network test mongo mo
2021-01-03 12:11:11
855
原创 可重复执行resolve和reject的Promise
import { asap } from "./asap";/** * 可重复执行resolve和reject的Promise */export class MyPromise<T> { private values: any[] = []; private reasons: any[] = []; /** * 0 padding 1 resolve 2 reject */ private status: 0|1|2 = 0; private onfu.
2020-07-03 08:59:05
1606
原创 vscode 在windows开发linux程序
1. 安装dockerhttp://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/点击 Docker QuickStart 图标来启动 Docker Toolbox 终端2. 下载ubuntu镜像docker pull ubuntu3. 创建ubuntu容器docker run -itd --name ubuntu-test ubuntu4. 在vscode下载 Remote Developmentms
2020-06-21 16:33:23
2994
原创 C++ 入门指南
1.内置数据类型1.1 字面量整形字面量12为10进制数、012为8进制数、0x12为16进制数、10L为长整型、10LL为longlong类型、10uL为无符号长整形、10u为无符号数、浮点型字面量3.14为小数、3.14e3为科学计数法小数、3.14f为单精度小数。字符串字面量u8"helle"为UTF-8字符串、"hello"字符串。2.变量2.1 定义和声明变量只能定义一次,但可以声明多次。int a; 变量定义。如果在函数外也就是全局变量会有默认的初始值
2020-06-13 14:45:24
1393
原创 ubuntu16.04 grpc安装
1. 安装3.13以上的cmakeaptremove cmakewget https://cmake.org/files/v3.17/cmake-3.17.2.tar.gztar zxvf cmake-3.17.2.tar.gzcdcmake-3.17.2./configuresudo make && make install2. 安装opensslaptremove opensslwget https://www.openssl.org/sourc...
2020-05-20 20:45:05
1419
原创 JS作用域链分析
JS声明的变量会根据作用域链查找作用域是否声明该变量,如果没有,则查找上一个作用域,知道全局作用域。// 全局作用域functionf1(){ // f1作用域vara=2functionf2(){ // f2作用域a=1console.log(a)}f2()...
2020-02-06 22:55:29
140
原创 Weex iOS SDK源码分析
weex的基本工作原理我们在weex项目中编写的代码最终通过编译打包后形成bundlejs文件。iOS项目通过Weex SDK解析bundlejs文件,进行native的界面渲染。Weex SDK的组件渲染应用完成启动时会初始化WeexSDK;- (BOOL)application:(UIApplication *)application didFinishLaunc...
2018-07-22 20:43:07
1231
原创 Weex的多页面配置
前言Weex是使用Vue和WebPack进行项目配置的。Weex创建的项目默认是只有一个入口的,也就是说,是单页面应用。对于移动开发来说,使用单页面(使用vue-router)是没有原生的页面跳转效果。在Weex的官方文档中,Weex提供了navigator内置模块来实现Web端前进、后退页面,以及iOS/Android的navigator导航效果。Weex的多页面配置我使用的是最近的weex创建...
2018-06-03 20:39:16
6204
4
原创 Core Animation的使用
关于Core AnimationCore Animation是IOS和OS X的图形渲染和动画的基础设施,你可以使用它来进行动画绘制视图和其他APP的可视元素。Core Animation为你完成大量动画帧的描绘工作。你所要做的是设置一些动画参数(例如开始和结束点)和启动Core Animation。Core Animation会完成剩下并把大量的实际绘制工作转移到图形硬件以加速渲染。这种自动的图...
2018-04-27 17:12:48
426
原创 Core Animation动画暂停和恢复
-(void)pauseLayer:(CALayer*)layer { CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; layer.speed = 0.0; layer.timeOffset = pausedTime;} -(void)resumeLaye...
2018-04-25 12:15:49
744
原创 Core Text的使用
关于Core TextCore Text是先进的,低级别的布局文本和处理字体的技术。Core Text的API包含在Mac OS X v10.5和IOS 3.2中,能被所有的OS X和IOS环境获取。Core Text是关联Core Graphics框架(Quartz)的低级别文本处理技术。如果你需要直接使用Quartz并描绘一些文本,使用Core Text。例如,你拥有自己的页面布局引擎;你还有...
2018-04-12 10:55:10
652
原创 LCS(最长公共子序列)介绍
LCS(最长公共子序列)LCS是Longest Common Subsequence的缩写,即最长公共子序列。一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列。解决方法对于一般的LCS问题,都属于NP问题。当数列的量为一定的时,都可以采用动态规划去解决算法设两个字符串x,y,c[i][j]代表x的i位和y的j位之前的最长公共子序列的长度。则如果x[i]==y[...
2018-03-27 10:17:35
380
原创 IOS重用机制导致的UITableVIewCell或者UICollectionViewCell显示错误
当我们使用UITableVIew和UICollectionView时都会遇到重用显示问题。IOS系统默认会把标识相同的cell进行重用,你可以在创建cell的代理方法中是用UITableView的- (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier方法或者UICollection...
2018-03-26 10:18:26
973
原创 URL Session的使用
URL Session相关类URL加载获取URL的Data数据(存储在内存)这里有两种基本的方式获取URL的Data数据。• 对于简单的请求,直接使用NSURLSession直接获取NSURL的数据或者直接使用NSData获取URL数据。• 对于复杂的请求,使用NSURLSession和NSURLRequest或者NSMutableURLRequest。获取响应数据。• 提供completion ...
2018-03-21 18:02:11
4714
原创 iOS KVO详解
KVO介绍KVO允许在对象的指定属性发生变化时获取通知。这是非常有用的对于模型和控制器层的通讯。控制器对象观察模型的属性,视图对象通过控制器观察模型的属性。除外,模型对象可以观察其他模型对象,甚至是自己。你可以观察的属性包括简单属性(attributes),一对一关系,一对多关系。观察一对多关系的对象会获取包含属性变化类型和触发对象的通知。注册KVO你必须执行下面步骤来激活对象获取指定属性的KVO...
2018-03-19 17:40:25
329
原创 iOS KVC详解
关于KVCKVC为遵守NSKeyValueCoding协议的对象提供间接的方式来访问它们的属性。当对象符合KVC,属性能通过字符串来进行访问,也可以通过实例变量和对应的访问方法访问属性。获取访问方法返回属性的值,设置访问方法设置属性的值。在OC,你可以使用实例变量访问属性。虽然这些方式可以直接访问属性,但是需要使用特定的访问方法和实例变量。相反,KVC对象提供简单的方法来统一访问所有属性。KVC是...
2018-03-15 11:59:45
514
原创 IOS HTTPS 服务器信任评估
HTTPS 服务器信任评估当你进行HTTPS连接时,客户端必须评估服务器是否可信。如果评估失败,客服端应该取消连接。这种情况可能由于各种原因,例如,服务器使用自己签名的证书,中间证书缺失等。还有一些恶意情况,服务器可能是个为了盗窃用户数据的冒充服务器。HTTPS 相关概念• 验证咨询(authentication challenge) - 它是一个HTTP或者HTTPS的响应,指示服务器请求客服端...
2018-03-02 16:02:38
3589
原创 IOS 后台传输
创建后台会话- (NSURLSession *)backgroundSession{/* Using disptach_once here ensures that multiple background sessions with the same identifier are not created in this instance of the application. If you ...
2018-02-27 08:59:58
697
原创 Core Bluetooth的详细使用
Core Bluetooth的简单介绍Core Bluetooth是基于蓝牙4.0的,它抽象了一组协议用于与蓝牙低功耗设备通讯。由于Core Bluetooth隐藏了蓝牙底层的细节,它使得开发者能够很容易地实现与蓝牙低功耗设备的通讯。中心和外设设备以及它们的角色在蓝牙通讯中外设是拥有设备想要的数据。中心是获取外设服务的数据来完成一些特别任务。中心发现和连接正在广告的外设外设通过发送广告包来表明自己...
2018-02-24 20:00:48
1776
原创 RunLoop的简单使用
run loop简介run loop是一个关联线程的基础设施。run loop是一个事件处理循环,主要用于安排工作和接收事件。它可以让线程在有工作的时候繁忙,没有工作的时候休眠。如果没有run loop的话,你需要创建while或者for循环来不断监听事件,但这样性能低下。每个线程都有一个run loop,你不必手动创建run loop,可以通过CFRunLoopGetCurrent()或者[NS...
2017-10-26 10:32:43
613
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人