自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spark streaming 中的singleton pattern

我们再spark streaming 中用了singleton pattern模式大大的减少了初始化时间,速度快了4倍。在[Spark Streaming Guide中](http://spark.apache.org/docs/latest/streaming-programming-guide.html),dstream.foreachRDD { rdd => rdd.foreachPartition { partitionOfRecords => // Connecti

2021-07-17 11:21:14 264 2

原创 东南亚电商龙头 shopee 社招,校招 内推(长期有效)

Shopee 内推Shopee 是东南亚领航电商平台,覆盖新加坡、马来西亚、菲律宾、印度尼西亚、泰国及越南等市场,2020年第三季度Shopee总订单量达7.4亿,斩获全球购物类App总下载量第二名,且蝉联东南亚市场购物类App下载量、月均活跃数、安卓使用总时长三冠王。2017年3月,Shopee在深圳成立研发中心,逐步展开卖家、买家、供应链、金融等方向多条业务线。各产品在东南亚市场均已上线,并取得了良好的成绩。如果你错过了20年前的淘宝,10年前的美团,5年前的拼多多,那么请你一定不要再错过Sho

2021-07-17 11:01:07 476

原创 DIN 用户深度兴趣CTR 模型 归纳

在电商的场景下面,用户的兴趣是动态变化的,并且是多种兴趣并存的,而非只对某个类目的商品感兴趣。在display ads的场景下更加的明显,与搜索不同,在display ads推荐的时候,用户更多的是没有明确的意图,需要结合模型来挖掘用户的需求。分组对feature进行处理,然后汇总把embedding concat 在一起,如下图所示:这个模型结构比youtube Net的文章,拥有更多的借鉴的点:1) 行为序列中的每个item 都是由若干个feature 构成的group。2)为了保.

2021-04-16 13:28:40 294

原创 读人性的优点-笔记

如果你有担忧的问题,就应用威力 卡瑞尔的万灵公式,做好以下三件事: 第一,问你自己“可能发生的最坏情况是什么?” 第二,如果你必须接受的话,就做好准备接受它。 第三,镇定地想办法改善最坏的情况。 > 当我们强迫自己面对最坏情况,并且先从精神上接受它时,我们就能够权衡所以可能的情形,使我们可以集中精力解决问题。 >你们要愿意承担这种情况,因为接受即成事实,是客服随之而来的任何不幸的第一个步骤。 >当我们也做好了接受任何最坏的情况的准备时,我们就不会再损失什么,也就是说一切都可以重新获得。.

2020-12-12 21:29:33 215 1

原创 LSH 在spark 中的实现

spark 采用了RandomProjection 算法实现了LSH。两个变量 number bucket length r, numHashTables=k。模型为每个hash Table 训练一个d dimension的 random unit vector给定一个d dimension的vector v,首先计算 每个HashTable 的 bucket,公式见第二行的 ha,b(v)。因为每个hashtable 都会计算一次hash,所以会总共计算k次hash。在transform这..

2020-12-01 22:12:56 1189

原创 算法面试题- 合并排好序的小文件成一个单独的大文件

现在你有 10 个日志文件,每个日志文件大小约 300MB,每个文件里的日志都是按照时间戳从小到大排序的。你希望将这 10 个较小的日志文件,合并为 1 个日志文件,合并之后的日志仍然按照时间戳从小到大排列。如果处理上述排序任务的机器内存只有 1GB,你有什么好的解决思路,能“快速”地将这 10 个日志文件合并吗?解法1: 先读取每个文件的开头和结尾 timestamp,然后以中间的start 作为分界点pivot,将日志文件分拆成两份,一份是大于pivot(若干文件),一份是小于pivot(若干.

2020-11-20 16:06:00 1394

原创 维特比算法(Viterbi algorithm) 的理解

维特比算法实际是动态规划解隐马尔科夫模型预测问题,用动态规划求概率最大路径,这时一条路径就是一个状态序列。根据动态规划原理,最优路径在时刻t,如果最优路径 通过节点Node_t_k, 那么这一路径从节点Node_t_k 到终点的Node_T的部分路径,对于从Node_t_k 到Node_T的所有可能的部分路径来说,必须是最优的。所以当遍历到状态t 下面的节点k的时候,我们只记录从Begin Point 到 t状态下的Node k的最短路径就行了。这样可以达到提前剪枝的效果。避免重复的计算。dijk.

2020-11-15 19:00:05 812 1

原创 毕业后工作四年,谈谈工作中的感悟

工作四年了,有时间的时候给自己做些总结:1. 做过码农,别人设计好了的东西,我只需要快速按照task的描述完成任务就好,这样的工作是简单重复的,我想人人都不喜欢。但是为了解决这个问题,我开发了一个工具。2. 我从后台开发转到了算法组。看了很多paper,也试过很多的算法,然后就是各种碰头。问题出在,当时一心执着于各种看上去很NB的算法,但是并没有考虑算法所解决的问题和实际的我们自己的业务场景。3. 代码是人来维护的,人离职了,基本上很难维护的代码,很容易就被其他的开发重构或代替了。4. 开发

2020-11-04 21:38:54 608 1

原创 当使用spark 遇到 data skew 数据不均衡问题时解决方法

那什么是spark 数据不均衡的问题呢?​​当某一个column 的value 出现特别多次,比如1000次以上。然后table1 与table2 join 的时候,就会导致某个分区的task 执行时间特别长。详见下图,​​下图就是在spark join操作的时候遇到的数据分布不均衡,导致的某个task 执行时间过长。​​比如,table1:​itemid userid 123 abc 123 abce 123 acd 123 acd ​ta.

2020-11-01 16:47:15 598 1

转载 经历没有亮点可讲?你需要做份“详历”

一个好的简历,应该具备4个特点:有价值、易匹配、无硬伤、有亮点。那么,有位朋友就问了:“我的项目经历不多,也没有获过奖,感觉没什么亮点可写,怎么办呢?”别慌,今天我们就来聊一聊:如何从过去的经历中,发现亮点。这里提到的一些方法,不仅对面试,即使对你与老板的工作沟通,也会有帮助。写简历,有一个误区:很多人觉得简历上列的项目越多越好,堆的技术名词越多越好,显得自己十八般武艺样样精通。但是面试官不一定这么认为。一个原因是,你列那么多技术和经历,不一定这个待招职位都...

2020-11-01 14:55:57 446

原创 xgboost 学习笔记(树的分裂过程分析)

两大集成学习的框架:bagging 和 boosting。xgboost 是属于boosting系列的算法。这篇文章主要介绍一下,xgboost 模型的训练过程。从宏观来说,就是创建一棵树拟合目标函数,期望loss 最小,然后构建另外一个树来拟合前面所有树的残差。那从每一棵树来说,它是如何构造一棵树的呢。具体的从第0层开始,如果分裂能够比不分裂带来提升,那么就选择分裂,看一下。所以在分裂的过程当中就考虑了 normalization。首先,1) 只有一个节点,这个节点是包含了所有的训练.

2020-10-31 14:25:52 1664

原创 工作了,为什么还要学好数据结构和算法?

对于一个已经工作的人,为什么还是需要学好数据结构和算法?汇集一些网上的答案,总结一下:1. 训练自己的大脑思维的为数不多的方法之一,提高自己的解决问题的能力。让自己越来越有竞争力,而不是在日复一日的重复写业务的代码中消磨自己的能力。2. 平时工作涉及的领域比较小,而且不会涉猎太多的数据结构和算法,底层的库都会帮你实现了,但是你不可能一辈子只是甘于做一个CRUD 数据库增删改查的程序员,需要突破自己。3. 对于基础架构师,目标应该是设计比较NB的开源框架或软件,这种比较底层的软件,需要考...

2020-10-29 10:58:46 446 1

原创 深度学习-Transformer模型结构分析

BERT是自然语言处理里面一个非常强大的模型。BERT 的英文是 Pre-training of Deep Bidirectional Transformers for Language Understanding本篇主要讲解一下BERT的底层模型结构 Transformer。Transformer 原论文的链接在这里。Attention is All you Need - NIPS ProceedingTransformer最开始是解决。 在machine translation ..

2020-10-27 22:52:16 510

转载 修改putty非常暗的注释字体颜色

转载自http://m.blog.csdn.net/blog/astrotycoon/9729961个人很喜欢使用putty,不但小巧,也很喜欢他的默认配色方案。唯一美中不足的就是它的默认注释颜色,很暗淡,大白天有时根本看不清。       上网查了查,终于知道可以通过vim的hi(highlight)命令改变。    以下是vim不同关键字字体颜色修改方法    修改字符串颜色

2013-11-10 11:58:01 2774

原创 c++纯虚函数

c++的纯虚函数是在函数中至少有一个纯虚函数,该函数没有实现任何的方法。现在怀疑 是否是对每个输入的变量都进行了运算符重载。因为cin接受的参数不止一个。

2013-11-06 20:49:51 726

原创 leveldb中的编码方式的分析

leveldb除去测试部分,也不到2w行,看完代码才发觉这是由于编程的人太牛了。好多代码的实现几行代码就可以实现,当然非常简单了。 先说说他的变长编码的实现方法。char* EncodeVarint32(char* dst, uint32_t v) { // Operate on characters as unsigneds unsigned char* ptr = rein

2013-11-03 10:06:32 948

原创 IBM的顺序流预取算法SARC的思考与困惑

SARC为IBM的顺序流预取算法。现在想实现这个算法,但是最大的困惑是如何才能保证替换线程可以很好的完成任务。该Cache算法中的元素是以块(页面)为元素进行存储的。1.RANDOM 命中将该元素放到RANDOM的MRU端2.SEQ命中调整参数,然后放到MRU端,并重新计算SeqCount。若SeqCount(i-1)=0 SeqCount(i)=13.两个链表都未命中

2013-11-02 16:44:06 1346

转载 maven的安装方法

1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;2.进入下载文件夹,找到下载的文件,运行如下命令解压,并安装到/usr/local目录当中tar -xvf apache-maven-3.0.3-bin.tar.gzmv -rf apache-maven-3.0.3 /us

2013-08-17 09:26:10 702

原创 调试内核的方法总结2-NMI watchdog原理分析

上一次改zfs代码导致系统死机,sysrq尝试过,由于键盘已经不能用了,所以sysrq用不上了,然后又尝试了Kdump工具,结果仍然是失败了,系统依然死机,而且也没看到发生一次内核转储。所以打算采用以下的NMI watchdog的方法检测死机问题,强制内核转储。      NMI(Not Maskable Interrupt)的意思是:不可屏蔽中断的意思。最开始用在内存校验错误的时候通知CPU

2013-08-06 10:57:41 3488

原创 linux常见错误的错误码及错误信息对照

一些常见的错误的值,print出来的只有值,对应的错误列表,我在linux内核中找到了,分享出来。对比查看会相对方便。#define EPERM   1 /* Operation not permitted */#define ENOENT   2 /* No such file or directory */#define ESRCH   3 /* No such process *

2013-08-06 10:57:39 1023

原创 黑客与画家

优秀的语言拥有内核简洁,设计简单,短小精悍的特点。只有这样,才能够存活于编程语言进化的主干上。像Java的进化已经结束,很难让其他的编程语言继承并延续下去。很多数据结构的存在都与计算机的速度有关。 管理员在2009年8月13日编辑了该文章文章。 --> -->

2013-08-06 10:57:36 704

原创 gcc调试segmentation fault的方法

前一阵编了大概3500+lines的代码,一直运行稳定,结果今天出现了segmentation fault的错误,这可怎么办? 用gdb 一行一行调吗?  确实让人头疼,后来发现gdb功能强大,现分享解决方法:  调试方法如下:   1. gcc 编译的时候 -g   2. 执行gdb filename 点击(此处)折叠或打开

2013-08-06 10:57:34 1854

原创 linux中数据类型的表示与思考

uint64_t 类型 可以支持64位的无符号数,使用这个关键字,需要引用头文件#include在使用多线程的过程中,pthread_create(&tid,NULL,func,arg);如果只是想传一个数进去,那么可以直接写成pthread(&tid,NULL,func,(void *)arg);然后在实际的func函数中将数据转换回来。void *func(void *ar

2013-08-06 10:57:32 706

原创 算法导论-傅里叶变换

系数形式表示的多项式的快速乘法,通过精心挑选求指点,将系数表达转换为点值表达,然后运算,再将点值表达转换成系数表达。而系数表达到点值表达时间为O(nlogn) 点值运算时间复杂度为O(n)再从点值表示转换成系数表示花费时间为O(logn),所以总的时间复杂度从原来的O(n2)到了现在的O(nlogn)。 管理员在2009年8月13日编辑了该文

2013-08-06 10:57:30 887

原创 gcc编译错误总结

avl.c:882: error: conflicting types for ‘avl_is_empty’avl.h:251: note: previous declaration of ‘avl_is_empty’ was here出现上面的错误说明声明和实现的函数名称不对应,比如 extern int f(char *p);    而实现是 int f(char p){}

2013-08-06 10:57:27 1277

原创 常用脚本总结

1.查看.c文件共有多少行代码。find . -type f -name "*.c" | xargs cat | wc -l2.但是如果项目当中含有多级目录,可以采用如下的方法算出包含目录的.h .c文件的代码行数。find . -name "*.[ch]" | xargs cat | wc -l 管理员在2009年8月13日编辑了该文章

2013-08-06 10:57:25 688

原创 算法导论-动态规划

钢筋分割问题长度i对应价格p(i)那么给定长度i,如何分割才能够使得收益最大呢?动态规划是将问题划分子问题然后求解,所以动态规划的前提是问题是可分解成子问题的。由于每一节都有两种情况分,或者部分,所以总共有2^(n-1)次方的分解方法。解法一:   cutFc(int n,p){   int q;   if n == 0        return

2013-08-06 10:57:23 744

原创 用printf打印uint64_t的符号

在32位平台 typedef unsigned long long int uint64_t;在64位平台 typedef unsigned long int uint64_t;不同的typdef,要求在printf中使用不同的length modifier,uint64_t 在32位使用ll,在64位使用l。除了定义数据类型,C99还定义了相应数据类型的打印方式,使用PRIu64打

2013-08-06 10:57:21 41044

原创 算法导论-堆排序学习笔记

最开始研究的是大顶堆,父亲节点的值会大于两个孩子节点的值,但是左孩子跟右孩子没有值之间的差异。插入一个元素的时候,整个堆可能不满足堆的性质,所以要调整堆,调整算法如下:MAX_HEAPIFY(A,i)l = Left(i)r = Right(i)if l A(i)    largest = lelse largest = iif r A(largest) 

2013-08-06 10:57:19 775

原创 算法导论-计算时间复杂度主定理

递归式与分治方法是紧密相关的,因为使用递归式可以清晰的刻画分治算法的运行时间。主方法如下:T(n) = aT(n/b) + f(n)a>=1 b>1 f(n) 是给定的函数。这种形式的递归式很常见。刻画了一个分治算法。生成a个子问题。每个子问题是原来的1/b。分解和合并步骤共消耗f(n)主方法是计算时间复杂度的时候用的。利用上面的这个定理就可以计算递归式的时间复杂度了,

2013-08-06 10:57:16 2125

原创 ChinaUnix博客的博客访问次数的计算问题

说起那天我发现当访问一个用户的博客主页的时候,博客访问次数会自动+1,所以我就通过curl方法模拟用户的访问,看是否服务器能够识别我的模拟脚本的频繁访问。结果发现真识别不出来,我记得那个时候的博客访问流量才23000,但是运行完脚本,发现博客访问流量到50000多了,我感觉这样不好,于是我就将脚本停止下来。不知道CU服务器内部啥原理,更新缓慢,过了一段时间再查看CU的博客访问流量发现已经到了2

2013-08-06 10:57:14 799

原创 理解1024叉树方式的文件组织形式

在ZFS当中用一种类似于1024叉树的方法组织一个文件(dnode)。所有的叶子节点存真正的数据,而间接块存放的是元数据。元数据存放的是数据在磁盘上的位置。可以看到这个是一个倒挂的树,当要查找某个叶子节点的时候。DBUF_HOLD(level,blkid)1.通过hash查找,看是否在内存当中存在,如果存在直接返回该dbuf中的数据。2.如果查找不到,那么说明在磁盘上,

2013-08-06 10:57:12 897

原创 x86架构-学习笔记

x86-64是x86架构的延续,是64位微处理器架构机器相应的指令集。在x86-64出现以前,Intel与惠普联合推出IA-64架构,此架构与x86不兼容且没什么市场。AMD首次公开64位集为IA-32提供扩展,称为x86-64,后来命名为amd64,后来Intel也采用了这个架构,叫做intel 64.后来这个名字为了不偏袒任何一家,所以起名为x86-64架构,能够将x86架构移植到64

2013-08-06 10:57:10 2007

原创 NP完全问题

彩蛋:个人照片放在这里.jpeg 不能排除NP完全问题可以在多项式时间内解决。研究NP完全问题的人非常之多,但是没有人发现任何一个问题的多项式时间解决方案。如果确定一个问题是NP完全问题,那么工程师应该花时间开发一种近似算法或解决某种易处理问题的特例。对每一个NP完全问题的证明思想是:将问题A的任何实力α,转换成B的具有如下特征的某个实例β:1.给定问题A的实例a,利用多项

2013-08-06 10:57:08 794

原创 KVM虚拟化原理-创建KVM

kvm这个结构体包含了vCPU,内存,APIC,IRQ,MMU,Event事件管理等信息。该结构体中的信息主要在kvm虚拟机内部使用,用于跟踪虚拟机的状态。对于一个kvm,就对应一个线程。Kvm完全利用了硬件虚拟化技术,通过cat /proc/cpuinfo 查看信息,如果是intel处理器,那么就加载kvm-intel.ko用户态创建一个虚拟机就是通过ioctl向/dev/kvm字符

2013-08-06 10:57:02 1150

原创 开源代码中的递归宏

这个是将所有的字节顺序完全颠倒的一个宏,调用BSWAP_64(x) 即可将x的Byte顺序完全颠倒,实现非常简洁,足见实现者的功力。#define BSWAP_8(x) ((x) & 0xff)#define BSWAP_16(x) ((BSWAP_8(x) > 8))#define BSWAP_32(x) ((BSWAP_16(x) > 16))#define BSWAP_64(

2013-08-06 10:57:00 1719

原创 重读GFS的设计

GFS作为经典的作品,但是自己不读原文,永远不会理解全文的意思。     下面的是我对GFS的体悟:1.系统架设故障是经常发生的。2.所处理的文件级别很大,上G级别的文件是常事,而且文件大概为100M左右。3.大多数的文件是采用append的方式追加到文件结尾的,而不是采用覆盖写的方式,采用这种方式是为了提高写的效率。4.将应用和文件系统综合考虑,做成的这样的一个GFS 使我们

2013-08-06 10:56:58 805

原创 块设备设备号的概念

在kernel目录树的documentation/devices.txt文件,里面详细的描述了块设备驱动的设备号的信息。在创建一个块设备的时候需要指定dev_t这个结构,该结构通过宏MKDEV()实现。而这个宏MKDEV(major,minor) 也就是通过指定一个主设备号,和次设备号,主设备号相同说明使用相同的设备驱动程序。在/dev/目录下 ll发现:rw-rw----

2013-08-06 10:56:56 1425

原创 内核线程创建与销毁

查看内核线程的方法:ps -aux 可以查看系统中的所有线程,其中带有[ ]的表示是内核线程。内核线程创建方法:thread = kthread_create(taskq_thread, tqt, "%s/%d", name, i);wake_up_process(thread);其中taskq_thread为该内核函数需要做的事情。内核线程的销毁函数如下:kthr

2013-08-06 10:56:53 880

原创 脚本备份

生成一个fio.cfg文件。这个配置文件时fio的配置文件的格式,主要是为了测试100个zvol而设置的配置文件。#!/bin/bashfor i in {1..100}doitx=`expr $i - 1`;itx=`expr $itx \* 16`;cat >conftest.a[test$itx]filename=/dev/zd$itxbs=512ki

2013-08-06 10:56:51 867

空空如也

空空如也

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

TA关注的人

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