自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mistakk

学习历程

  • 博客(40)
  • 收藏
  • 关注

原创 微信支付系统的单号原来是这样设计的

引言在一般的分布式系统,或者是电商系统,用单号来索引到某一笔单据,或实体对象。每个人都是独立无二的,在社会层面,国家用身份证号码来标记你的征信,追踪你的遵纪守法记录。在家庭层面,用昵称来表达对亲人的称谓。在群聊中,用花名彰显个性。什么是内外部单号就像同一个人在不同的场合,有不同的称谓一样,同一个实体在不同的上下文可能有多种表达方式。比如下面的是商户请求微信支付系统分账用例的api:请求包的字段列表中包括商户分账单号字段,要求商户在请求微信支付系统时,需要填写一个外部单号,用来标识此次请求,

2021-07-29 00:20:40 6135

原创 微信支付-电商收付通业务概述

引言:电商收付通是微信支付推出的电商行业解决方案,主要是应对上文支付二清与第三方支付提到的电商行业面临的二清问题,其核心竞争点在于对资金灵活的把控能力。电商行业关键能力订单生成:电商服务商可以帮助子商户下单资金冻结:用户支付后的资金,需要冻结在二级商户,不能提现资金分配:能够将资金按照订单维度分润给其他人资金转账:可以进行余额查询和提现能力视图按照开发的视角,首先从API文档看起,下面是个人整理的思维导图,其重点在于分账和补差。分账业务背景服务商需要将子商户的资金,灵活地分润给相关

2021-07-14 23:39:10 9200

原创 四色建模

引言四色建模用来干什么?在「系统分析」阶段,四色原型法不要求必须先有需求才能建模,可以在对业务的熟悉和理解过程中,直接采用四色原型分析和表达业务,它可以用于任何了解业务的过程中对业务概念进行抽象和组织。四色原型是一种思考工具,就是让系统分析员戴上有色眼镜来看世界,通过把被分析对象分成四大类,来快速发现隐藏的概念并分离职责,将模型对象成为概念内聚、职责单一的对象,它是系统分析过程中最具有意义的思考工具。组成四色建模有四部分:MomentInterval:淡红色;表示在一刻或者一段时间内发生的一件事

2021-05-12 01:06:39 2708 1

原创 腾讯阿里原来是这样设计api的

大厂如何设计api本文参考微信和支付宝的API设计,从「设计」,「可用性」,「安全性」三个方面分析API的设计思路;其中「设计篇」是设计一个api需要考虑哪些因素,「可用性」是一个api高可用的背后需要完成哪些技术点,「安全性」是API如何实现相互认证、安全通信等安全目标。设计篇RESTFUL风格RESTFUL是一种API风格或者是规范,它有一些建议和规范指导如何设计好的API,到2010 年,大约 74% 的公共网络 API 是 HTTP REST的 API。REST定义了一系列的标准方法,如G

2021-04-21 21:42:14 649 1

原创 高可用离线任务设计思路

高可用离线任务设计思路离线任务分类离线任务广泛存在于分布式系统设计中,他们承担着重要的工作,包括维护数据最终一致性,解决业务诉求传输数据等等。下面介绍两类离线任务:分布式任务兜底如图,上述一个分布式事务,离线兜底流程可以在实时流程执行失败时,将单据扭转到正确的状态。其执行的过程就是不断的扫描数据库表,将异常单据找出并执行对应的操作。推拉数据如图,业务开发中,往往存在跨子域数据传输的需求,如交易数据、退款数据需要导出给账单出账;或者是将数据定时出库作为备份,作为快照使用。此时将涉及到扫存储(一

2021-04-11 21:54:17 1100

原创 支付二清与第三方支付

支付流程介绍支付流程本文将以虚构的电商平台"快快购",向大家介绍典型的支付全流程,见图1:电商平台“快快购”对接很多小商家,提供多种商品给用户选择,其中包括“水果园”商家提供在线水果售卖服务用户在电商平台“快快购”下的小商家“水果园”选购了部分商品,并且在“快快购”的系统下单“快快购”对接了很家第三方支付机构,如云闪付、支付宝、微信支付等,用户可选择任意一种支付用户使用微信支付付款,微信支付在收取交易手续费后,将剩余资金结算到电商平台“快快购”的结算银行卡中“快快购”收到云闪付的结算资金后,

2021-04-08 01:07:39 1301 1

原创 分布式限频组件设计思路

分布式限频组件如果需要你设计一个分布式限频组件,你会怎么做,将考虑哪些方面的内容?笔者分析自己对限频组件的理解,和一些设计思路,希望与大家探讨。明确需求调用流程在微服务的入口,把上游请求包拆解鉴权后,进行流量限制校验,流量校验通过的请求继续执行,否则返回流量限频。请求路由按client端的路由方式分类,一般分为三种:固定路由固定路由标识同样的请求只会路由到对应的一台Server分组路由后端server分组,同样的请求只会路由到某一组机器随机路由请求可以随机路由到后端任一台Ser

2021-04-05 17:26:06 447 2

原创 leetcode 23. 合并K个升序链表 计数排序

题目分析1 合并多个链表,就是合并多个链表的节点,需要按照大小排序,所以是一个穿着链表节点外衣的排序题目2 根据下面的题目分析,可知数字为整形且比较小,可采取计数排序进行整合所有节点k == lists.length0 <= k <= 10^40 <= lists[i].length <= 500-10^4 <= lists[i][j] <= 10^4lists[i] 按 升序 排列lists[i].length 的总和不超过 10^4# Definit

2020-10-24 19:57:34 121

原创 leetcode 19. 删除链表的倒数第N个节点 快慢指针变体运用

删除倒数节点题目需要一次扫描,那么需要用到快慢指针。删除倒数第n个节点,那么让快指针先走n步即可;注意边界条件,当被删除的节点为头结点时应单独分析# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution(object

2020-10-24 19:38:07 113

原创 leetcode 2. 两数相加 整数取模与链表的尾插法

两数相加返回两数相加的结果,注意链表是从数字的低位到高位,那么相加时直接从后向前即可# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution(object): def addTwoNumbers(self, l

2020-10-24 19:25:05 211

原创 leetcode 234. 回文链表 快慢指针和头插法运用

d

2020-10-24 18:15:31 813 1

原创 leetcode 459. Repeated Substring Pattern kmp算法运用

0 题意:求一个字符串是否可能由其子串复制而成1 分析,假如一个串s由子串x复制而成,那么设子串为x = (abc...),则 s = x x x x x...。我们可以对其使用kmp算法,求出前缀、后缀字符串的最大长度,然后进行问题简化。2 图解,假如串s在用kmp求解后,串尾的最长前缀后缀长度为k,那么前面x长度为多余的部分,如②的串b的前面x部分;那么s[0,x]与s[0,k]有何关...

2018-10-19 14:44:30 451

原创 leetcode 28. Implement strStr() kmp算法

0 求pattern串在原串str中是否存在,如果存在就返回下标1 kmp算法,先求next数组,然后逐个向后匹配即可。kmp算法的讲解本人写的在这里 https://blog.csdn.net/mistakk/article/details/83114497 。2 代码int strStr(string haystack, string needle){ int n = ...

2018-10-19 10:33:43 157

原创 leetcode 916. Word Subsets 字典优化问题

0 题意:A是一个字符串集合,B是一个字符串集合,要找出A中一些字符串,字符串都要求字典包含字符串B中的每一个字符串。1 思路:暴力解法:对集合B中的每一个字符串都预处理,然后与A相互一一比较,判断A中的每一个字符串是否都符合条件;暴力解法在此处会超时,所以看优化解法。优化解法思路:将字符串B预处理为一个字符串,这个字符串包含了集合B每一个字符串最"难"达到的信息。然后用这个字符串与集合A中字...

2018-10-18 21:45:22 222

原创 leetcode 5. Longest Palindromic Substring 回文串处理

0 问题:求一个串中,最长的连续子回文串的长度1 这个问题是求串的连续子串问题,连续子串为o(n^2),而比较是否为回文串为o(n0),所以这题目的暴力解法时间复杂度为o(n^2),我们希望用更少的时间来解决。这题目的思路为从回文串的“肚子”着手,向两边进行扩充;2 代码 string longestPalindrome(string s) { int ...

2018-10-18 21:32:55 95

原创 leetcode 516. Longest Palindromic Subsequence 动态规划优化问题

0 这个问题是求一个串中,回文子串的最长的长度。1 分析首先分析是否能分解为子问题,s[0,i]与s[0,i+1]是否有关联?有关联,因为对s[0,i]后面加上一个字符x后,字符x可能是一个回文串的最后一个字符,从而造成回文串的增长。在串s[0,i]后面加上一个字符x后,挨个与之前的串进行比较,直到有字符s[a] == x;那么从s[a,i+i]这部分的回文串就可以进行延长。按照这种思路,...

2018-10-18 21:10:46 241

原创 leetcode 214 Shortest Palindrome kmp算法 前缀后缀字符串匹配

0 leetcode 214. Shortest Palindrome  本题的描述是一个串前方加上一些字符串,使其成为一个回文串。形式类似于(添加部分)(回文部分)(其余部分),所以我们的目标就是将其回文部分求出来,或者把他的长度求出来。如果用暴力解法,那么问题就变成O(N*N)的复杂度,我们希望优雅地解决,所以我们用到kmp算法求nxt数组。kmp算法是求字符串匹配的算法,下面记录...

2018-10-17 18:36:08 382

原创 排序算法----不稳定排序

1 不稳定排序    稳定排序的定义是:在排序过程中,如果两个键的值相同,那么他们的相对位置不发生变化。不符合该规则的排序算法不是稳定排序算法。 2 排序算法冒泡排序: 通过元素两两交换的方式,每次将数组的未排序区域的一个最大/小元素归位 插入排序: 通过元素插入的方式,每次将数组的未排序区域的一个最值元素归位 选择排序: 通过单个元素相互交换的方式,每次将数组的未排序区域的一...

2018-09-20 12:46:07 14213

转载 Epoll 模型

0、IO多路复用基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I...

2018-08-15 11:24:27 133

原创 leetcode l289. Game of Life

原题:https://leetcode.com/problems/game-of-life/description/    这道题目很有意思,主要的challenge是讲的不用额外的空间进行状态保存。    这题目初始的状态为0/1,完成可以用bool来表示,但是题目给的是int;所以可以利用int不同的“位”来标识不同“次数”的信息。比如说修改值修改在“第二位”,当前值是一个“第一位”,...

2018-08-07 19:05:06 145

原创 std函数 lower_bound/upper_bound

函数定义:template &lt;class ForwardIterator, class T&gt;    ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T&amp; val);template &lt;class ForwardIterator, class T, c...

2018-07-17 11:30:17 687

原创 std函数 reserve/resize

reserve函数:void reserve (size_type n);vector 对象有 capacity属性和allocator属性,其中capacity属性描述“预分配”内存大小;reverse()函数可以设置该值,但是不分配其内存。 resize函数:void resize (size_type n);void resize (size_type n, con...

2018-07-17 11:22:38 256

原创 C 时间相关函数

windows下的时间函数时间数据结构:windows.htypedef struct _systemtime {     word wyear;     word wmonth;     word wdayofweek;     word wday;     word whour;     word wminute;     word wsecond;     word wmillisecond...

2018-07-05 11:20:32 889

原创 0629小感

1、工作是工作,生活是生活;两者不应该纠缠太不清,比如时间上的分配,情绪上的干扰。2、有能力的话,要选择良好的工作环境;优秀的同事使你更加优秀。3、心宽体胖...

2018-06-29 15:33:14 96

原创 C/C++ 隐式 和 显式 类型转换

0 background    类型转换在写程序的时候用的比较多,经常出现这些个名次,不懂的话看的很懵,所以这次来一起总结一下这俩的区别。1 隐式类型转换    原则:        1 不能损失精度,可以从低精度向高精度转换。        2 自定义对象可以隐式转为父对象。    发生情况        1 在混合类型的算术表达式中        2 用一种类型的表达式赋值        3 ...

2018-05-11 13:09:04 1879

原创 strcmp strlen 函数 笔记

0 background    在大一/大二的时候有次考试问到了这个函数,昨天因为喝了咖啡3点半迟迟无法入睡便看了一下这个函数,结果让人更兴奋了。这里记录一下不会的知识,和函数的要点。1 strcpy    #include &lt;assert.h&gt;char* strcpy(char* dest, const char* src){ assert((dest != NULL) &amp;...

2018-05-11 10:22:15 125

原创 fork 产生僵尸进程和孤儿进程

0 僵尸进程    僵尸进程是指某进程已经退出,然后其父进程还没有调用wait(),waitpid()等对其进程退出处理(收尸),所以这种进程成为僵尸进程。1 孤儿进程    孤儿进程是其父进程在其之前退出,自己由init进程收养的进程。由于内核定义每一个进程必须要有父进程,所以内核对孤儿进程的处理是将其父进程设置为init进程。2 fork()产生孤儿进程和僵尸进程    话不多少,上code:...

2018-05-10 22:12:06 423

原创 常量指针 和 指针常量

0 backgroud    在coding的时候遇到一些const修饰的指针和对象,不清楚用法和意义,所以整理了一下。1 指针类型    指针可以指向很多对象,整形,浮点形,结构体形等等。有时为了得到通用函数,可以设置指针为void形,而在使用的时候可以强制转为需要的形式。比如堆分配函数malloc/calloc函数:    void * malloc(size_t size);int *pin...

2018-05-10 15:42:58 145

原创 C++ 文件基本操作

1 backgrand    介绍C++ 下面的 fstream 类,以及用其进行基本的文件操作,和相关函数使用。2 class            其中istream 和 ostream分别用于输入流和输出流,一般使用时用一个#include&lt;fstream&gt;就可以包含一些基本的操作了。3 function    3.1 open();            void open (...

2018-05-09 16:30:52 269

原创 gdb 使用小记

0 Previewgdb 是 linux/uinx 下面的代码调试工具, 本文用一个简单的例子来说明一些使用。1 Code首先写一个简单的c程序,这个程序提供了函数的参数访问,命名为 getconf.c。#include "stdio.h"#include "unistd.h" #include "stdlib.h"#include "stdio.h" #include "getopt...

2018-04-23 18:57:18 110

原创 iostat 详解

0 Preview iostat 命令主要查看磁盘负载情况,同时也可以查看cpu相关信息1 Param-k iostat命令展示的列有些是单位是Block(512B),使用 -k 参数后单位强制变为KB(1024B)。-m-c 表示打印cpu信息。-d 表示打印disk信息。-x 表示打印所有信息,会扩充-d的磁盘信息,同时会附带上cpu信息。num1 num2 ,前者代表采集数据时间间隔(S),...

2018-04-20 16:33:59 663

原创 Fio 测试

0 Preview FIO 是用来测试磁盘/块设备性能的工具,而且集成了很多的参数等功能,可以帮助用户对磁盘性能有更好的了解。1 Installyum install fio2 Paramfio 命令的参数有很多,我记录一下我使用到的参数和与其相关的说明。在此之前先写一个demo:[root@100 /data1/test_fio]# fio -filename=/data1/test_fio/2...

2018-04-20 12:56:12 848

原创 cscope + tags 简单设置

0 previewcscope 可以帮助 linux 开发者简单地看代码,提高效率,这里记录一下我的学习过程。1 安装cscopeyum install cscope安装包 make 2 生成索引文件在你的代码根目录 /data/mycodepkg 下面输入[root@100 /data/mycodepkg]# cscope -Rbqk-R: 在生成索引文件时,搜索子目录树中的代码-b: 只生成索...

2018-04-19 19:25:32 1790

原创 文件系统读取数据---按块读取

0 preview上一章说了sector是寻址的最小单位,现在来说一下磁盘access的原理。1 按块access磁盘块(block)是文件存取的最小单位,大小是sector的整数倍。硬盘本身没有block的概念,是上层操作系统/文件系统定义的。2 如何查看block大小tune2fs -l /dev/sdb |grep "Block size"命令tune2fs可以看到ext2/ext3文件系统...

2018-04-19 15:30:40 1817

原创 文件系统寻址方式---扇区寻址

磁盘逻辑分布:0 术语cylinder:磁盘的柱面head:磁盘的磁头,每张磁片有两个磁头sector:磁盘扇区,这里指物理扇区,编号从 1 - 63,每条 track 的最大 sector 数 63SPT(sector_per_track):每磁道上的 sector 数HPC(head_per_cylinder):每个 cylinder 的 head 数量,这个数量应该是磁片数 * 2    可...

2018-04-19 12:06:04 1500

原创 算法设计15-8签约棒球自由球员

设d(i,x)为第i个位置,有x资金时,所带来最大的价值v;设v(i,j)为第i个位置,第j个人的价值,他的价格为f[i,j];初始化:d[1...n][10...m] ,f[1...n][1...p],v[1...n][1...p],算法思路:最外层循环为for i=1 to n 表示依次考虑每一个位置的人其次为              for x=10 to M  表示依

2016-03-31 20:04:02 630

原创 0/1背包优化

public class packeg { public static void main(String[] args) { // TODO Auto-generated method stub int cost[]= {0,1,3,7,4};//重量数组 int weight[]={0,2,4,5,3};//价值数组 int count=4;//货物个数 int m=5

2016-03-31 19:31:36 309

原创 Bst的基本操作

#include #include #include #include #include using namespace std;typedef struct BstNode{ int data; BstNode *lchild, *rchild;}BstNode,*BstTree;void Bst_insert(BstTree &T,int z)//建树{ if(T=

2015-12-29 16:23:53 453

转载 算法导论12.2-8 从任意结点使用后继函数k次的时间复杂度为O(k+h)

从任意结点使用后继函数k次,假设二叉搜索树的高度为h,则时间复杂度为O(k+h)分析从表面上来看,回溯父结点的复杂度为O(h),如果多次回溯,则总体复杂度可能远超O(k+h)再想使用数学归纳法,假设起始结点和回溯结点分别位于某个结点的左右子树,然后发现无法使用替换法证明。最后从12.2-7 中得到一丝信息,即只要证明后继函数k次后,访问结点的总次数为O(k+h)即可证明设定遍历的起始结点为S,结束结

2015-12-28 16:58:24 747

转载 算法导论12.2-8 二叉搜索树的非递归遍历先驱节点分析

算法导论

2015-12-28 16:17:49 836

空空如也

空空如也

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

TA关注的人

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