自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 实践篇 11 | 万金油的string,为什么不好用了

string类型的内存空间消耗问题。一个图片存储系统,需要快速记录图片ID和图片在存储系统中保存的ID(存储对象id) 根据图片ID查找图片存储id图片数量巨大,用10位数表示图片ID和存储对象ID,如图片ID:1101000051,存储系统中对象ID:3301000051photo_id: 1101000051photo_obj_id: 3301000051键-单值模式,单值指的是键值对的值不是集合。和string类型提供的“一键一值”的保存形式刚好。且String..

2021-08-21 19:06:14 243

转载 实践篇 12 | 有一亿个 keys 要统计,应该用哪种集合

在 web 和 移动应用的业务场景中,我们经常要保存这样的信息:单key对应的数据集合。手机APP的用户日登录信息:一天对应一系列的用户ID或移动设备ID 电商网站上商品用户评论列表:一个商品对应一系列的评论 用户在手机APP上的签到打卡信息:一天对应一系列的用户签到记录 应用网站上的网页访问信息:一个网页对应一系列用户的访问点击。我们知道,redis集合类型的特点是一个键对应一系列的数据,所以非常适合用来存取这些数据。但是在这些场景中,除了记录信息,我们往往还需要对集合中数据进..

2021-08-21 04:29:12 300

转载 10 | 如何实现高性能的异步网络传输

异步的线程模型,与同步模型的最大区别是,同步模型会阻塞线程等待资源,而异步模型不会阻塞线程,它是等资源准备好后,再通知业务代码来完成后续的资源处理逻辑。这种异步设计的方法,可以很好解决IO等待问题。我们开发的绝大多数业务系统都是IO密集型系统。跟IO密集型系统相对的另一种系统是计算密集型系统。IO密集型系统大部分时间都在执行IO操作,这个IO操作主要包括网络IO和磁盘IO,以及与计算机连接的一些外围设备的访问。与之相对的计算密集型系统,大部分时间都是在使用CPU执行计算操作。我们开发的业..

2021-08-20 02:06:34 292

转载 10 | 如何使用异步设计提升系统性能

对开发者来说,异步是一种程序设计的思想,使用异步模式设计的程序可显著减少线程等待,从而在高吞吐的场景中,极大提升系统的整体性能,显著降低延时。因此,像消息队列这种需要超高吞吐量和超低时延的中间件系统,在其核心流程中,一定会大量采用异步的设计思想。接下来,我们一起来通过一个非常简单的例子学习,如何使用异步设计,提升系统性能。异步设计如何提升系统性能?假设我们要实现一个转账的微服务,Transfer(accountFrom, accountTo, amount),这个服务有三..

2021-08-11 00:58:47 404

转载 09 | 学习开源代码该如何入手?

对于开源软件,在使用其作为系统重要组成部分,真正用于生产时,仅知道如何使用不行必须掌握原理和细节,以找到最佳使用姿势;在出问题时,基于其原理和一些现象去排查问题原因。掌握开源软件最佳方式是学习源码,但面对上千个源码文件,几十万行代码,无从下手。因此这里来聊一聊,如何下手学习开源软件代码。通过文档来了解开源项目学习源码最佳的方式是先看它的文档。通过文档可以迅速了解整体结构,功能特性,关键技术,实现原理,生态系统等。掌握这些整体的只是,再看源码,可以避免盲人摸..

2021-08-10 00:24:44 305

转载 07 | 消息积压了该如何处理?

消息积压的直接原因是系统中,某个部分存在性能问题,来不及处理上游消息。优化性能来避免消息积压消息队列本身的处理能力要远大于业务系统的处理能力。主流产品的单节点,消息收发性能在每秒几万到几十万条,还可以通过水平拓展broker实例数量成倍提升。由于业务代码逻辑远比消息队列复杂,单节点可以达到 百/千 QPS 已经算性能很好了。因此对于优化性能,关注点在消息收发两端,业务代码如何与消息队列配合去达到最优性能。1. 发送端性能优化优先检查发送消息前,业务...

2021-08-08 20:50:15 637

转载 06 | 如何处理消费过程中的重复消息

在消息传递过程中,出现传递失败情况,发送方会重试,重试会导致产生重复消息。因此使用消息队列的业务系统若没对重复消息处理,就可能会导致系统数据出错。比如消费订单消息,统计下单金额的服务,就会出现重复统计,导致统计结果出错。可能有人会问,如果消息队列本身能保证消息不重复,应用程序实现不就简单了。那有消息队列能保证这点么?消息重复的情况必然存在在MQTT协议中,给出了三种传递消息时能够提供的服务质量标准。质量从低到高,At most once:最多一次,无消息可靠性,允许丢..

2021-08-07 02:11:46 160

转载 05 | 如何保证消息不丢失

对大部分业务系统来说,丢消息意味着数据丢失,是不可接受的。丢消息也成为大部分用消息队列的同学最头痛的问题。目前主流消息队列产品都提供了完善的消息可靠性机制,保证消息的不丢。检测消息丢失的方法丢消息还不知道,是用消息队列的最尴尬情况。一般而言,新系统刚上线,各方面不稳定,需要磨合期,这个时候特别要监控系统中是否有消息丢失的情况。IT基础设施较完善的公司,都有分布式的链路追踪系统,使用类似追踪系统可以很方便地追踪每条消息。而没有,则可以利用消息的有序性进行验证。在Pr..

2021-08-06 03:06:25 424

转载 04 | 利用事务消息实现分布式事务

消息队列中的事务,主要解决生产者和消费者的数据一致性问题。以电商为例,用户在电商APP上购物,加商品到购物车,再几件商品一起下单,支付。这个过程中,订单系统会通过消息队列发订单消息给购物车模块,其消费订单消息从购物车中移除下单商品。因为购物车删商品不是下单必须流程的缘故,因此会有上述的异步删购物车数据的操作。订单系统 ===== 创建 ====> 订单库 ====发送订单创建消息 ==> 消息队列 ====> 购物车系统...

2021-08-04 23:38:25 168

转载 消息模型: 主题和队列有什么区别

消息模型的演进1. 消息队列,最初架构上,就是一个严格FIFO的结构。消费者 <——接收—— 队列 <——发送—— 生产者消费者出队操作,删除数据,生产者入队操作。服务端存储消息的地方叫队列。若有多个生产者,则多生产者自然顺序投递消息到队列。若有多消费者,他们之间则是竞争关系。若希望消息给每个消费者,即每个消费者都要获取全量消息,比如订单给风控,客服等。不能采用生产者根据消费者数量复制消息到多队列的做法,浪费存储资源且生产和消费就耦合了。2...

2021-08-04 02:01:50 373

转载 01 | 为什么要消息队列

以巧克力工厂类比,工厂三个操作环节磨粉,做酱,凝固;使用传送带可提高(通信)效率;使用仓储存储半成品可解决(通信缓存)传送带物品无人接收;一、异步处理> 对于一个电商秒杀请求,如下5步操作1. 风险控制2. 锁库存3. 出订单4. 短信通知5. 更新统计数据APP => 网关 => 后端服务(5步[风控 => 库存 => 订单 => 短信 => 统计])APP => 网关 => 后端服务(2步[风控

2021-08-03 01:56:36 94

原创 Leetcode-650 只有两个键的键盘

步骤性问题分治类大问题分类化为子问题分类关键是特定状态下的下一步操作可化为数学问题

2020-10-06 00:12:58 128

原创 Leetcode-1420 生成数组

动态规划分治类大问题分类化为子问题分类的关键是最大值所在位置

2020-10-05 23:54:18 151

原创 Leetcode-19 秋叶收藏集

动态规划位置状态(前缀)当前位置前缀状态仅仅与前一位置的前缀状态相关

2020-10-04 11:24:24 105

原创 【设计模式】访问者模式{更新中}

访问者访问者模式的产生:类结构相对稳定,但是基于类的行为变化较大。访问者模式的例子:这一部分参考 简书作者:JamFF 的文章访问者模式一篇就够了。这里员工是稳定的类结构,公司一年一度生成所有员工的报表。不同的高层会以变化的方式来访问员工,比如CEO看Engineer的代码行和Manager的产品数量,但是CTO只看两者的KPI。高层的Visitor需要提供多个访问不同...

2020-02-13 22:56:21 119

原创 【模式】AOP{更新中}

代理模式代理模式的产生:明星A会唱歌,很多人都想找A商演,A自己不会。经纪人B,作为明星A的代理,负责接收邀请,筛选邀请,安排演唱前后接送,粉丝公关等事宜。明星A只负责唱歌就可以了。代理模式:抽象一下,经纪人B 这群人就是ProxyClass-代理类,而明星A 这群人就是Class。ProxyClass类向外提供 Class 所有的方法(功能)。外部只需调用ProxyClass的...

2020-02-13 19:40:04 180

原创 【图】最小生成树{更新中}

最小生成树最小生成树的产生:希望在城市间建设基础设施,连通所有城市,不考虑容错性,如果花费最低成本实现?最小生成子树:原图选出这样的边,让所有顶点连通,边权重和最低。(生成子图不需要后两个条件)Kruskal算法Kruskal算法的产生:从定义出发,选择边,让其涵盖所有顶点。边的选择使用贪心思想,限制是辐射生长的树。假设图包含个顶点。第边,先选择最小权...

2020-02-10 02:42:41 280

原创 【数据结构】红黑树{更新中}

二叉树二叉树的产生:方便在一堆数中快速找到目标数。二叉树的查找规律:以1号树为例,查100。从树根50起,比50大就到以75为根的右子树中找;比75大,同理;与右子树根100比对相等,结束。总计遍历3 个节点。注意观察1号树有3层节点,因此在1号树中查找任意数字最多只需遍历3个节点;同理 2号树 最多遍历4个节点。与1号树相比遍历数堆查找则最多 7 个,平均3.5 个节点。...

2020-02-08 01:52:55 176

原创 【数据结构】堆{更新中}

堆的产生堆的产生问题背景:如何在一堆动态变化的数中,以O(1)的复杂度获取最值。堆的目标:一个数组,支持删除元素和添加元素,保证首元素永远是数堆中的最值。数组树形化:比如给出数组, 一层一层依次从左到右加入节点,构造出如下图所示的一颗树,该种树形称为完全二叉树。完全二叉树对于数组,其所有元素的父子关系满足。完全二叉树:每一层节点都是满的,最底下一层叶子节...

2020-02-08 01:50:08 393

原创 【算法】有意思的算法题(附pyhon3代码){更新中}

有趣的算法题合集子序列最大和描述:给出一个数字序列 [1,-2,3,5,-1,4,-7],找出其中的子序列,使得其和最大,返回该最大值。解决方案:从左到右遍历数列,求和sum,当和sum为负的时候;重新开始新的序列计算;使用一个max变量记录当前求得的最大值。遍历到 1:sum = 1,max=1 遍历到 -2:sum = -1,max=1 => sum = 0,...

2020-02-07 19:36:18 209

原创 【动态规划】背包问题{更新中}

0-1背包问题背包问题的产生:鱼与熊掌不可兼得的问题。比如一个软件的功能丰富了,但同样其运行时占用资源和静态软件包的体量也上去了。如何做到有限的资源,价值最大化。0-1背包问题:对于一堆价值为,重量为的物品 :,和一个总承重的背包。如何取舍使得背包总价值最大化。每个物品要么加一件要么不加。解决方案1:计算性价比,按排序放入。缺点:举反例,有一堆按性价比排序后的物品:...

2020-02-07 16:41:47 149

原创 【网络】TCP 的特点{更新中}

TCP是如何名副其实地进行传输控制的呢?它对传输进行的控制,主要目的是为了解决 UDP 中发生的丢包,重复收包,乱序等问题。以下插图和内容分凝练于《图解TCP/IP(第5版)》((日)竹下隆史) 。对此书感兴趣网上资源自搜。侵权联系删除太长不看可跳最后总结TCP的序列号以及确认应答号确认应答的起因:告知发送端,其发出的数据,接收端已收到。发送端借此决定对丢包重发。序号的起因...

2020-01-31 16:31:55 171

原创 【三角】和差角公式的证明与积化和差和差化积公式的推导

基础三角公式单位圆所需基本三角公式:sin(a) = -sin(-a)cos(a) = cos(-a)正切与正弦/余弦的和/差角公式的证明由右图可知 sin(a+b) 和 cos(a+b) 公式,将 b 用 -b 替换即可得差角公式由左图可知 tan(a+b) 的公式,将b用-b替换即可得差角公式。由 cot = 1/tan 可得余切的和差角公式...

2020-01-29 17:16:03 11539

原创 【算法】排序算法之快排

想法:乱序数组中找任一个元素,做 pivot。比 pivot小的,放到pivot左侧,反之放右侧。以 pivot 为中心,对其左右两个子数组,递归执行前两步,直到最后子数组长度为1结束。细节:怎么完成第二步的?具体方法是,数组两端各有一个指针low,high,都往中间扫,各自指向不符合的元素(low指向大于pivot的元素,high指向小于等于pivot的元素),此时...

2020-01-19 16:08:45 150

原创 【并发】volatile 为什么不能保证线程安全

参考 https://blog.csdn.net/chenaima1314/article/details/78723265cpu与内存的工作架构。cpu的各个核心有自己的寄存器(存储核心计算的临时结果)与缓存(缓冲内存与cpu核心处理速度的差异),各个核心共享同一块主内存。JVM的线程模型,这里的工作内存就是指寄存器与缓存,主内存就是主存。也就是了解JVM的线程模型与 CPU-内存架...

2020-01-18 12:54:41 1580

原创 【多点构成的面积估算】凸包算法python 实现 + 经纬度坐标 python 实现

做用户聚类,有一个feature涉及到面积计算,温故一下之前了解到的凸包算法的流程,实际上,这篇文章基于的原文章,达到的精度,满足我的需求。具体实现上代码参考,因为坐标系不是笛卡尔坐标系先上笔者参考已有的实现稍作修改后作为静态工具类使用的代码# the class that seals the algorithm that uses convex hull to calculate ...

2019-04-09 00:42:34 3819 4

原创 【聚类一】基于密度峰查找的聚类

给了二维数据集 Aggretation.txt,可视化后发现是论文插图之一,这里是第一次尝试,后续,可以使用自动化脚本调超参,找到分成 论文中7个簇 的超参数 即可。 第一步是导入必要的包,前两个作聚类避不开的距离运算,是python内置的;最后一个第三方库作decision graph和聚类结果的 可视化from decimal import Decimalfrom math ...

2019-03-30 15:52:54 690 2

原创 【FindAndLost】TP5后端项目腾讯云部署

参考两篇博文https://blog.csdn.net/github_38336924/article/details/82459078https://blog.csdn.net/qq895767507/article/details/52121289一、购机搭环境1、认证后购买腾讯云1core2G内存的学生机,1个月+域名购买=10+8元,2、安装了apache2,lib...

2019-03-24 11:22:01 852

原创 【组成原理】

计算机系统的层次结构冯诺依曼结构计算机的五大部件和连线方式,包括控制器与所有部件互相的控制连线。和部件之间数据指令从输入到处理到输出的数据通路。 常将运算器和控制器做在一起形成CPU,然后将CPU与主存放在一起形成主机的概念,输入输出放在一起作为IO部件,与辅存一起形成外设的概念。先看眼CPU的两大部件内部构成: 运算器里面有一个ALU运算单元和几个操作数的专用寄存器,以及一些通用寄...

2019-03-09 22:42:08 428

转载 如何看一篇AI论文

转载自https://blog.csdn.net/kwame211/article/details/78109304本次 Chat 的第一部分:首先讲解如何从零基础开始阅读一篇机器学习方向的论文,以及对待论文中的数学问题。随后,从一篇经典论文入手,讲解如何快速梳理和理解一个深度学习框架及模型。最近人工智能和机器学习方向的论文非常多,那么一个有工程背景、学术经验较少或者有一定经验的工程...

2019-02-27 18:41:33 1316

转载 磁盘分区原理

认识主分区,活动分区,扩展分区和逻辑分区磁盘分区是在硬盘驱动器上定义储存空间。所有的操作windows操作系统都可以让用户为硬划分多个分区,这样使得一个物理硬盘分为几个较小的逻辑分区。在windows系统中,安装在一个分区上的操作系统和其它一些创建的分区用来储存用户数据,文件和游戏。这样做的好处是,windows系统出现问题时,可以在不影响数据分区的情况下完全删除(格式化)操作系统分区并重新安...

2019-02-09 14:56:50 4349

转载 浅谈ACM算法学习与有效训练

                                                                                             ACM算法日常                                 一、什么是有效地训练?很多ACMer入门的时候,都被告知:要多做题,做500多道就变牛了。其实,这既不是充分条件、也不...

2019-01-11 16:14:56 496

转载 【转】SSM框架下各个层的解释说明

SSM框架下各个层的解释说明2016年07月08日 21:57:45版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lutianfeiml/article/details/51864160文档版本开发工具测试平台工程名字日期作者备注V1.02016.07.08lutianfeinone持久层:...

2018-12-19 20:09:18 189

原创 计算机网络实验——ns3仿真最短路由选择算法

实验设计:九个节点的ad-hoc网络,路由协议采用最短路由选择算法          实验目的:采用Floyd-Warshall算法实现ad-hoc网最短路由选择 学习NS3仿真模拟器实验设置:开发环境:Windows 10 Pro + VS2012 Express 开发工具:NS3+ Mercurial 开发语言:C++实验心得:Mercurial: 基于p...

2018-12-08 00:03:34 8019 54

原创 基于分布式文件系统Hadoop的数据仓库Hive

Hadoop+Hive的架构图什么是数据仓库?它与数据库的区别在哪里?简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个...

2018-11-30 10:13:45 501 1

转载 kd-tree : k近邻查询和范围查询

作者:DylanFrank(滔滔) 转载请注明出处 http://blog.csdn.net/dylan_frank/article/details/77934272想象一下我们有如下两个任务:我现在想骑一辆小黄车,我想查找离我最近的k辆小黄车. 找到百度地图中显示在屏幕上区域中的所有酒店这两个任务均可以用kd-tree来解决 kd-tree 主要两个用途:查询离某个点的最近的k...

2018-08-03 14:38:44 3747

转载 干货 | 科研必备的软件神器

  文章转载自网络, @新都市小生 编辑整理,转载请注明!!​      ​ 今天博主特地为大家整理了一些资料,包括OA论文、思路整理、词典类、制图工具类、文献生成类等方面。赶快收藏并分享这些科研必备的软件神器吧,与人方便于己方便!       毕业、职称、薪水等等与论文有着千丝万缕的联系,可以说论文是很多人绕不过去的坎。不管是学生、老师、科研人员,甚至很多企业员工,论文这块敲门砖的重要性...

2018-08-03 14:02:18 1386

转载 【学习】如何研读论文

转载一个对我帮助很大的研究生手册,作者是台湾清华大学的彭明辉教授。比较长,但绝对值得一读。就我自己读研时候的体会,这个手册中的内容,至少帮我节约了一半的用于寻找/阅读参考文献的时间。  一、论文的要求   我对硕士论文的基本要求是:   (1)论文的主要内容,是叙述一套方法在一个特定场合中的应用。   (2)这套方法必须要有所创新或突破,并因而对学术界有所贡献。因此,它或者是解决既有问题...

2018-08-03 13:41:20 1391

转载 Bochs使用简单教程

Bochs使用简单教程Bochs是一个开源的虚拟机。它可以实现vpc和vmware的大部分功能。你也可以像使用vmware一样的在Bochs里面安装操作系统。但是,由 于它是全模拟的。所以,速度要远远慢于vmware.这样看来Bochs好像没有什么优势.是这样吗?在应用方面的确如此。 但是,在其他一个方面它是处于绝对优势的。那就是它具有调试功能!这是一个让人振奋的功能。这个功能在你调试操作系...

2018-08-01 14:41:11 22596

转载 汇编语言入门【精】

 版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.csdn.net/godloveyuxu/article/details/76559323学习汇编前你应该知道的知识 1、汇编需要什么工具和程序,到哪里下载?    目前阶段,汇编程序仅需要两个程序就够了。masm.exe,link.exe。 前者是编译程序,后者是链接程序。另外,为了验证和调试...

2018-07-30 16:06:45 28259

空空如也

空空如也

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

TA关注的人

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