自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.Phoebe的专栏

退役后还是一个弱渣

  • 博客(590)
  • 资源 (1)
  • 收藏
  • 关注

原创 二分的姿势的选取

解的范围为实数精度判断这样做是最基础的方法,但是不是很推荐。会存在浮点误差。left = 0.0, right = 0x3f3f3f3f; while (dcmp(right - left) != 0){ mid = (right + left) / 2.0; if (judge(mid)) right = mid;

2016-11-27 10:12:18 601

原创 ACM竞赛中的逆向思维

在竞赛过程中,尤其是近期训练,遇到了不少一定要用逆向思维才能解决的题目。 为此做一系列的总结。希望能够对大家有所帮助。 同时,我也会做成PPT,供14级训练使用。其中有部分问题摘自于2005年国家集训队唐文斌的《正难则反–浅谈逆向思维在解题中的应用》论文。容斥方面逆向思维在容斥方面的应用相当广泛,也可以说容斥就是逆向思维的一种体现。HDU 5072 Coprime 同色三角形题目大意:给了nn个

2015-10-29 17:02:47 2073 1

翻译 第八章:分布式系统的麻烦

设想一个具有不对称故障的网络:一个节点能够接收发送给它的所有消息,但是来自该节点的任何传出消息被丢弃或延迟【19】。即使该节点运行良好,并且正在接收来自其他节点的请求,其他节点也无法听到其响应。经过一段时间后,其他节点宣布它已经死亡,因为他们没有听到节点的消息。半断开(semi-disconnected)的节点被拖向墓地,敲打尖叫道 “我没死!” —— 但是由于没有人能听到它的尖叫,葬礼队伍继续以坚忍的决心继续行进。

2023-10-13 12:56:20 210

翻译 设计数据密集型应用 第七章:事务

一些作者声称,支持通用的两阶段提交代价太大,会带来性能与可用性的问题。让程序员来处理过度使用事务导致的性能问题,总比缺少事务编程好得多。—— James Corbett 等人,Spanner:Google 的全球分布式数据库(2012)

2023-08-24 13:03:16 334

翻译 设计数据密集型应用 第六章:分区

6. 分区我们必须跳出电脑指令序列的窠臼。 叙述定义、描述元数据、梳理关系,而不是编写过程。—— Grace Murray Hopper,未来的计算机及其管理(1962)文章目录6. 分区术语澄清分区与复制键值数据的分区根据键的范围分区根据键的散列分区一致性哈希负载倾斜与消除热点分片与次级索引基于文档的二级索引进行分区基于关键词(Term)的二级索引进行分区分区再平衡平衡策略反面教材:hash mod N固定数量的分区动态分区按节点比例分区运维:手动还是自动平衡请求路由执行并行查询本章小结参考

2021-11-22 15:02:49 592

翻译 设计数据密集型应用 第五章:复制

设计数据密集型应用 第五章:复制与可能出错的东西比,'不可能’出错的东西最显著的特点就是:一旦真的出错,通常就彻底玩完了。——道格拉斯·亚当斯(1992)文章目录设计数据密集型应用 第五章:复制领导者与追随者同步复制与异步复制关于复制的研究设置新从库处理节点宕机从库失效:追赶恢复主库失效:故障切换复制日志的实现基于语句的复制传输预写式日志(WAL)逻辑日志复制(基于行)基于触发器的复制复制延迟问题读己之写单调读一致前缀读复制延迟的解决方案多主复制多主复制的应用场景运维多个数据中心需要离线操作的

2021-07-19 12:57:05 977

翻译 设计数据密集型应用 第四章:编码与演化

设计数据密集型应用 第四章:编码与演化唯变所适——以弗所的赫拉克利特,为柏拉图所引(公元前360年)文章目录设计数据密集型应用 第四章:编码与演化编码数据的格式术语冲突语言特定的格式JSON,XML和二进制变体二进制编码Thrift与Protocol Buffers字段标签和模式演变数据类型和模式演变Avro作者模式与读者模式模式演变规则但作者模式到底是什么?动态生成的模式代码生成和动态类型的语言模式的优点数据流的类型数据库中的数据流在不同的时间写入不同的值归档存储服务中的数据流:REST与R

2021-07-11 12:54:01 737

翻译 设计数据密集型应用 第三章:存储与检索

3. 第三章:存储与检索建立秩序,省却搜索——德国谚语文章目录3. 第三章:存储与检索驱动数据库的数据结构哈希索引SSTables和LSM树构建和维护SSTables用SSTables制作LSM树性能优化B树让B树更可靠B树优化比较B树和LSM树LSM树的优点LSM树的缺点其他索引结构将值存储在索引中多列索引全文搜索和模糊索引在内存中存储一切事务处理还是分析?数据仓库OLTP数据库和数据仓库之间的分歧星型和雪花型:分析的模式列存储列压缩面向列的存储和列族内存带宽和向量处理列存储中的排序顺序几个

2021-06-27 14:46:06 821

翻译 设计数据密集型应用 第二章:数据模型与查询语言

2. 数据模型与查询语言语言的边界就是思想的边界。—— 路德维奇·维特根斯坦,《逻辑哲学》(1922)文章目录2. 数据模型与查询语言关系模型与文档模型NoSQL的诞生对象关系不匹配多对一和多对多的关系文档数据库是否在重蹈覆辙?网络模型关系模型与文档数据库相比关系型数据库与文档数据库在今日的对比哪种数据模型更有助于简化应用代码?文档模型中的架构灵活性查询的数据局部性文档和关系数据库的融合数据查询语言Web上的声明式查询MapReduce查询图数据模型属性图Cypher查询语言SQL中的图查询三

2021-06-27 06:05:35 685

翻译 设计数据密集型应用 第一章:可靠性,可伸缩性,可维护性

第一章:可靠性,可伸缩性,可维护性原文地址互联网做得太棒了,以至于大多数人将它看作像太平洋这样的自然资源,而不是什么人工产物。上一次出现这种大规模且无差错的技术, 你还记得是什么时候吗?——阿兰·凯在接受Dobb博士杂志采访时说(2012年)文章目录第一章:可靠性,可伸缩性,可维护性关于数据系统的思考可靠性硬件故障软件错误人为错误可靠性有多重要?可伸缩性描述负载描述性能延迟和响应时间实践中的百分位点应对负载的方法可维护性可操作性:人生苦短,关爱运维简单性:管理复杂度可演化性:拥抱变化本章小结

2021-06-27 01:24:31 679

原创 计算机视觉中的深度学习11: 神经网络的训练2

Slides:百度云 提取码: gs3n接着第10讲继续总览单次设置激活函数数据预处理权重初始化正则化动态训练学习率规划large-batch 训练;超参数优化训练后模型融合迁移学习今天将介绍第二点和第三点。学习率规划我们有多种梯度下降的方式:SGD, SGD+Momentum, Adagrad, RMSProp, Adam对于这些梯度下降的方式,学习率都是一个超参数。我们要怎么选取一个合适的学习率呢?对于任何的方式,初始情况下,我们都应该选择较大

2020-12-06 13:55:12 1040

原创 计算机视觉中的深度学习10: 神经网络的训练1

Slides:百度云 提取码: gs3n第9课讲的是神经网络的软硬件,感觉比较科普,不做总结。总览单次设置激活函数数据预处理权重初始化正则化动态训练学习率规划large-batch 训练;超参数优化训练后模型融合迁移学习今天第一讲讲解的是第一点,第二讲将介绍第二点和第三点。激活函数之前也介绍了激活函数是什么,不同的激活函数在训练上,在效果上,在解决问题的方面都各有侧重。下面一一来介绍。Sigmoid非常常用的激活函数,在很多线性分类的machi

2020-09-20 09:48:27 882

原创 计算机视觉中的深度学习8: 卷积神经网络的结构

Slides:百度云 提取码: gs3n今天这一讲,我们以ImageNet Classification Challenge中使用的CNN的发展来进行介绍。AlexNet在2012年以前,ImageNet Classification Challenge的获胜者都是人工进行特征提取的线性分类模型。在2012年,AlexNet成功登顶。AlexNet的结构蓝色部分是神经网络的结构,从这我们能够看得出来,这个神经网络的各项长宽大小都是没有明显规律的。这花费了研究人员很长时间进行调整。黄色的部分

2020-09-11 14:07:35 649

原创 计算机视觉中的深度学习7: 卷积神经网络

Slides:百度云 提取码: gs3n之前说了全连接神经网络,说了线性分类,这些东西全都没有保留图片原本的2D特性,全都是将图片转化为1D的数组。而今天说的CNN,则是能更好地保留图片的2D特性,在CV中有着更广泛地运用。卷积层对于一个32x32x3的一个图片,全连接层将它平摊成一个3072x1的数组对于同样的图片,卷积层则是这么做的它通过一个和输入图片同样高的filter,让filter与输入图片进行卷积,得出了一个28x28x1的新的图片同时,我们可以有多个filter,从而产生多个

2020-08-27 13:42:21 470

原创 计算机视觉中的深度学习6: 反向传播

Slides:百度云 提取码: gs3n神经网络的梯度下降我们之前在学习线性分类器的时候,使用Loss函数以及梯度下降法来更新权重。那么对于神经网络,我们该如何计算每层神经元的权重呢?对每层W直接求导(愚蠢的方法)如上公式所示,Loss函数最终是能被表达成由各层W组成的函数公式,并且也完全有可能直接对其进行求导。问题非常乏味,需要大量矩阵演算,需要大量纸张如果我们想改变损失怎么办? 例如。 使用softmax代替SVM? 需要从头开始重新派生。这种方式不是模块化的。对于非常复杂的NN模型

2020-08-24 08:53:38 447

原创 计算机视觉中的深度学习5: 神经网络

Slides:百度云 提取码: gs3n前情回顾我们讲解了用线性模型进行图片分类用Loss函数来表示不同的权重的好坏用SGD来训练模型,使得Loss函数最小新的挑战线性分类并不能解决一切问题比如,下图的非线性分类问题再比如,对于每个类别,都需要一个模板来表示,从而它不能识别一个类中其他状态的图片。特征转化用如图的方式进行极坐标和直角坐标的转化,从而使得右图是线性可分的图片特征:颜色直方图将图片进行统计学意义上的特征提取图片特征:边缘梯度直方图用到了经典CV边缘判断,计

2020-08-23 02:58:20 893

原创 计算机视觉中的深度学习4: 优化

优化优化的本质目标就是ω∗=argminωL(ω)\omega^*=argmin_{\omega}L(\omega)ω∗=argminω​L(ω)其中的L(ω)L(\omega)L(ω)是Lost函数,即,找到能够使得L(ω)L(\omega)L(ω)最小的ω\omegaω。优化的方式随机搜索(愚蠢的决定)梯度计算对于一维函数,通过微分得到梯度df(x)dx=lim⁡h→0f(x+h)−f(x)h{df(x)\over dx}=\lim_{h\rightarrow 0}{f(x+h)-f(

2020-08-20 14:02:33 502

原创 计算机视觉中的深度学习3: 线性分类

Slides:百度云 提取码: gs3n线性分类的参数线性分类的公式f(x,W)=Wx+bf(x, W) = Wx + bf(x,W)=Wx+b其中WWW为参数或者权重以一个有101010类的32×32×332\times 32\times 332×32×3的图片为例其中f(x,W)f(x, W)f(x,W)和bbb为(10,)(10,)(10,)向量,WWW为(10,3072)(10, 3072)(10,3072)的矩阵,xxx为(3072,)(3072,)(3072,)的向量。也可以把b

2020-08-17 14:34:12 373

原创 计算机视觉中的深度学习2: 图片分类

计算机视觉中的深度学习2: 图片分类Slides:百度云计算机与人眼的区别对于一张灰度图片,计算机能看到的是像素大小的0~255的灰度值;对于RGB图片,则是一张像素大小的3通道矩阵,即800x600x3。计算机视觉的挑战视角变化的挑战视角的变化带来的像素的变化是非常巨大的。在不同的角度拍摄一只猫,人类很容易分辨这是同一种猫,而像素的变化却非常巨大,只有设计出了更加完备的算法才能让计算机程序更稳定地运行。图片交叉的挑战多只猫会重叠在一起。粒度更细的分类我们不仅仅需要分辨

2020-08-14 14:15:05 977

原创 Leetcode 851. Loud and Rich 以及一些面试的想法

Leetcode 851. Loud and Rich 以及一些面试的想法Leetcode 851. Loud and Rich 这道题本身没有什么很特殊的地方,但是它引发了我对面试写算法题的一些想法和思考。题意:给你一个拓扑序列richer,给你一个安静值quiet。对于每一个节点,找到拓扑序列严格在这个节点之后的最小的quiet值的节点。(无法排列拓扑关系的,则不是严格在节点之后的)。思路看到题目第一眼,首先想到排一个拓扑序列,再对于每个节点,取拓扑序列后一段的最小值(和最小值代表的节点)。

2020-07-13 03:24:10 326

原创 异步调用future/promise模式(C++版本)

Future/Promise 编程模式如何减少服务器应答时间,如何更强地进行并发。异步调用的Future/Promise1模式就是实现这一目的的手段之一。一个 Future 就是说“将来”你需要某些东西(一般就是一个网络请求的结果),但是你现在就要发起这样的请求,并且这个请求会异步执行。或者换一个说法,你需要在后台执行一个异步请求。C++中的应用C++11创建了线程以后,我们不能直接从th...

2019-07-29 13:30:57 1812

原创 未定义行为与求值顺序

未定义行为若违反某些规则,则令整个程序失去意义。定义在计算机程序设计中,未定义行为(undefined behavior)是指执行某种计算机代码所产生的结果,这种代码在当前程序状态下的行为在其所使用的语言标准中没有规定。常见于编译器对源代码存在某些假设,而执行时这些假设不成立的情况。同时语言规范也不要求编译器诊断未定义行为(尽管许多简单情形确实会得到诊断),而且不要求所编译的程序做任何有意...

2019-07-29 11:14:55 779

转载 golang中的io.Reader/Writer

本文整理自Go编程技巧–io.Reader/WriterGo原生的包中有一些核心的interface,其中io.Reader/Writer是比较常用的接口。很多原生的结构都围绕这个系列的接口展开,在实际的开发过程中,你会发现通过这个接口可以在多种不同的io类型之间进行过渡和转化。本文结合实际场景来总结一番。关系图表type Reader interface { Read(p []b...

2019-04-09 05:35:02 23737 2

原创 Goroutine的调度

本文整理自The Go schedulerGoroutine的调度Go语言之所以要自己实现一个调度器有以下两个原因:协程调度。因为系统内核不能再决定协程的切换,那么协程的切换时间点则是由程序内部的调度器决定的。垃圾回收。垃圾回收的必要条件是内存位于一致状态,这就需要暂停所有的线程,如果交给系统去做,那么会暂停所有的线程使其一致。程序自身的调度器知道什么时候内存位于一致状态,那么就没有必要...

2019-04-08 23:52:24 816

转载 文本相似度-bm25算法原理及实现

转载自文本相似度-bm25算法原理及实现原理BM25算法,通常用来作搜索相关性评分。一句话概况其主要思想:对Query进行语素解析,生成语素qiq_iqi​;然后,对于每个搜索结果D,计算每个语素qiq_iqi​与D的相关性得分,最后,将qiq_iqi​相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。BM25算法的一般性公式如下:Score(Q,d)=∑inWi⋅R(...

2019-04-08 09:00:27 1504

原创 go中的并发

go中的并发从并发模型说起并发目前来看比较主流的就三种:多线程每个线程一次处理一个请求,线程越多可并发处理的请求数就越多在高并发下,多线程的调度开销会比较大。协程无需抢占式的调度,开销小,可以有效的提高线程的并发性,从而避免了线程的缺点的部分基于异步回调的IO模型利用Linux内核的AIO进行异步IO1nginx使用的就是epoll模型,通过事件驱动的方式与异步...

2019-04-05 11:06:47 1674

原创 进程和线程、协程的区别

现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,go里面的goroutine也是一个非常棒的协程库。本文主要介绍进程、线程和协程三者之间的区别。概念进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,也是基本的执行单元,是操作系统结构的基础。每个进程都有自己的独立内存空间,不同进程通过...

2019-04-04 11:03:40 2583

原创 PageRank算法 -- 从原理到实现

本文整理自博文PageRank算法 – 从原理到实现1. 算法来源这个要从搜索引擎的发展讲起。最早的搜索引擎采用的是 分类目录1的方法,即通过人工进行网页分类并整理出高质量的网站。那时 Yahoo 和国内的 hao123 就是使用的这种方法。后来网页越来越多,人工分类已经不现实了。搜索引擎进入了 文本检索 的时代,即计算用户查询关键词与网页内容的相关程度来返回搜索结果。这种方法突破了数量的限...

2019-04-02 06:37:51 52448 14

原创 布隆过滤器:集合去重

简介布隆过滤器(Bloom Filter)实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。原理当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在集合中(获得在这个集合中的概率)。Fa...

2019-03-31 08:01:19 1583

原创 golang传值和传引用

golang传值和传引用这里不会解释关于指针的情况,如果读者对C语言或者C++的指针比较了解,那么就能更好地理解本文。定义对于代码modify(a);a.modify();如果modify中对于a的修改不会改变传入的a的值,那么就是传值调用;否则,是传引用。传值调用是将传入的变量在内存中复制一份进行操作,所以本质是存储在不同内存地址的不同变量。传引用是将传入变量的内存地址,在函数操...

2019-01-02 09:53:04 5001 2

原创 Twosigma在线笔试 substring

题意给你一个字符串,让你找出这个字符串以元音字母开头(a,e,i,o,u),辅音字母结尾的所有子串,中的字典序最大串和最小串。思路虽然是面试题,但是我觉得这是我见过的最难的面试题暴力解#include<iostream>#include<unordered_set>#include<string>using namespace std;...

2018-09-19 21:08:58 2545 1

原创 Leetcode 699. Falling Squares

Leetcode 699. Falling Squares很久没有写题解了,主要是leetcode没啥有意思的题目,写来没啥意思。今天这题还算有点意思,可以分析分析。描述给你一个序列表示下落的俄罗斯方块的情况。序列里面含有 NNN 对值 (L,S)(L,S)(L, S),其中LLL表示方块下落的左坐标,SSS表示下落方块的边长,这里下落的方块永远是正方形。其中N≤1000,L≤...

2018-07-16 15:04:24 1531

原创 golang defer的使用

golang defer的使用基本使用在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。为了更好的学习defer的行为,我们首先来看下面一段代码:func CopyFile(dstName, srcName string) (wr...

2018-07-08 14:24:05 990

原创 golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。# 定义示例类型和变量type Human struct { Name string}var people = Human{Name:"sujing"}普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf(“%v”...

2018-07-01 09:12:04 4237

转载 理解 go interface 的 5 个关键点

理解 go interface 的 5 个关键点原创: wecatch wecatch 2017-07-23 这篇关于 go 的 interface 的介绍。1、interface 是一种类型type I interface {    Get() int}首先 interface 是一种类型,从它的定...

2018-06-27 14:14:34 8929 5

原创 go 数组(array)、切片(slice)、map

go 数组(array)、切片(slice)、map数组(array)go语言中的数组是固定长度的。使用前必须指定数组长度。go语言中数组是值类型。如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址。var arrayName = [arraySize]dataType{xxx,xxx,xxx....}  //定义全局数组var b ...

2018-06-27 14:11:49 2729

转载 Go语言中函数new与make的使用和区别

大家都知道Go语言中的函数new与函数make一直是新手比较容易混淆的东西,看着相似,但其实不同,不过解释两者之间的不同也非常容易,下面这篇文章主要给大家介绍了关于Go语言中函数new与make区别的相关资料,需要的朋友可以参考下。前言本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量...

2018-06-12 05:09:38 542

转载 使用@property

原文https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Stud...

2018-06-07 01:19:17 270

转载 Priority Inversion - 优先级翻转

英文: Priority Inversion 中文: 优先级翻转、优先级倒置、优先级逆转 介绍: 即当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,而这个低优先级任务在访问共享资源时可能又被其它一些中等优先级任务抢先,因此造成高优先级任务被许多具有较低优先级任务阻塞,实时性难以得到保证。什么是优先级反转简单从字面上来说,就是低优先级的任务先于高优...

2018-05-03 22:48:02 816

原创 C++中的make_shared,shared_ptr与weak_ptr

C++中的make_shared,shared_ptr与weak_ptrC++11中引入了智能指针,同时还有一个模板函数std::make_shared可以返回一个指定类型的std::shared_ptr。shared_ptr的基本操作#include <memory>#include <iostream>struct Foo { Foo() ...

2018-04-14 12:45:28 3501

poj第1200题

北京大学在线测评网站POJ第1200题的解答,已经AC通过

2013-11-30

空空如也

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

TA关注的人

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