自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang技巧

函数和函数变量函数func Print(){ fmt.Println("Hello world")}fmt.Println("Print:", Print, " type:", reflect.TypeOf(Print))函数变量printFunc := func(){ fmt.Println("Hello world")}printFunc = Printfmt.Prin

2017-05-13 23:21:56 496

原创 线段树

线段树英文叫做segment tree。最近研究了下,发现非常有用,面试中考的也比较多。那什么样的题目可以使用线段树呢?它具有以下几个特点,当遇到这样的题目时,可以考虑用线段树。求一组区间值原始数据会发生变化什么是线段树?线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时

2017-02-15 15:49:28 436

原创 go中的interface

用了9年的C++,1年的C#,最近改用go语言开发,深感go语言的设计简单,其设计宗旨也是less is more,它极大的加快了开发速度。 go语言吸取了很多现代语言的优点,一个比较重要的特性就是基于接口编程,函数是程序世界的第一公民,这个有点像scalar语言。实现这个接口的语言原型是interface。基于接口编程C++中不支持接口,接口的实现方式是用纯虚函数来实现的,C#具有接口,但是它认

2016-12-10 10:57:28 3933

原创 mac下用vscode搭建golang集成开发环境

新公司采用golang作为主要的开发语言,而且开发环境是mac,对我来说是一个不小的挑战,生平第一次使用mac系统,另外一个在mac下没有一个类似VS一样的优秀的IDE,现在才发现微软的伟大。 对一个IDE我有两个最基本的需求,第一需要能够语法识别高亮自动补全跳转,第二就是能够debug。只有vscode能够完美的支持这两个功能。 公司的started手册推荐的编辑器是intelij

2016-11-23 17:39:18 6904

转载 [转载]REST API

看到朋友圈里的一片文章,关于RESTAPI的阐述,挺不错的,原文link RESTAPI是资源类型的CRUD,它有五种类型:Get:获取资源Post:创建资源Put:替换资源,有副作用但应该是幂等PATCH:修改资源DELETE:删除资源 ps:幂等是相同参数每次调用结果都是一样的,如果有副作用,副作用也必须是一样的。 Header: Accept:客户端指明支持的数据类型,比如客

2016-11-15 14:00:36 349

转载 [转载]C#综合揭秘——细说多线程(上)

转载C#综合揭秘——细说多线程(上)引言本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。 而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用

2016-11-02 21:47:25 412

原创 分布式锁的实现

锁的目的是为了解决共享资源的竞争问题,比如共享资源C,用户A要在C的基础上加上A1,用户B要在C的基础上加上B1,这种情况下是很难保证最终C的结果是多少;还有比如共享资源C,用户A要做操作A1和A2,要保证A1和A2必须连续执行,即是一个原子操作,用户B同样是原子操作B1和B2,如果没有锁的话就没有办法保证操作的原子性。在单机情况下,锁的控制在操作系统内核中,也就是一个中央控制管理器,但是在分布式系

2016-10-07 21:03:05 332

原创 算法之数组上的左右指针

数组类型的题目是一种非常普遍的题目,根据题目不一样的,解决的策略也有很多,今天主要讲的是采用左右指针和扫描线来解决的题目类型。左右指针左右指针一般用来解决区间内某个值得问题,看上去非常相类似DP问题,但是它和DP又有本质的区别,归纳为有以下两个特点:一个区间内或者两个元素的最大,最小,和,或者中间值,求区间内的某个数:比如求两个水柱之间最大水量,求window下的中间数,求一个数组指定和的组合左

2016-10-04 21:53:45 1472

转载 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正

2016-09-24 18:56:20 252

原创 [翻译]Why you don’t want to shard

原文链接 shard在某些情况下有道理,但是在很多情况下它只会让系统更加复杂。 所以对于系统而言,首先应该优化其它的东西,当此时performance还是不够好,或者说还是性能非常差,就需要猛药了,一般来说做shard可以归结为以下两个原因:巨大的workset:当经常访问的数据超过整个单机的缓存或者数据库单张表太过于巨大导致查询插入速度非常慢,就需要考虑用shard将整个workset进行s

2016-09-23 22:23:04 370

原创 算法之回溯

排列和组合是两种类型的问题,一开始挺怵这种题,觉得很难,其实都是有模板的,解题的思路都是递归。 然后会说下这种题的一种followup组合问题求一个字符串的所有组合?先假设没有重复元素比如123,它的所有组合有 {},{1},{2},{3},{1,2},{1,3},{1,2,3} 从结果来进行分析,可以转化为 {1} {1,2} {1,2,3} {1,3} 可以理解为先选择1,然后再

2016-09-23 21:20:04 378

原创 算法---二分法

二分法可以归为两大类: * 二分查找算法 * 二分排序算法 * 二分合并算法二分查找算法算法中经常用到二分查找算法,比如最常规的应用就是在一个有序数组中找特定的数,但是如何写出一个完整准确的二分法呢,边界条件如何判断,到底是等于还是不等?可能会困恼大家,比如说查找第一个等于5的数,那又在如何查找呢?查找最后一个等于5的数,又该如何改变? 这里有一个公式,可以解决所有这类的问题,它分为四步走:

2016-09-21 22:39:33 27151

原创 《流金时代》有感

流金时代小说有感

2016-06-26 12:39:17 641

原创 高质量自动化部署策略

互联网企业要求的都是快速迭代满足用户需求而且还要有一定的可靠性。那如何能做到上面三点呢?一般是两种策略,对于每个新上的功能和bug都需要做一个开关,当这个功能有问题的时候可以直接关掉回归稳定版本另外一种策略就是建一个stage环境,这个环境就是一个稳定可靠环境,当新部署的产品不可解决的问题时候需要回滚的时候就可以将stage环境顶上去,满足基本需求从而留有足够的时间来解决新部署产品的问题,

2016-05-19 22:54:16 758

原创 什么情况下应用纯虚类

前几天跟同事brainstorm,讨论一个关于纯虚类的使用问题,挺有意思。回来心中久久不能平静,写出来一吐为快。不论在C++中还是C#中,纯虚类都是不能实例化的,这是因为纯虚类其实是一个对业务类型的一种高度抽象,本质上是不存在这种东西的,所以也就不能实例化它。对于C++中只要类中含有一个纯虚函数就是纯虚类,而C#中是abstract修饰的类就是纯虚类,即使类中没有虚方法也可以是纯虚类,在这里我

2016-05-07 11:00:42 3958

原创 知更鸟女孩

读书能够让人沉静下来,多一些思考,少一点喧闹,回归本心。要不然以前只要停下来就是看手机要么就是看美剧,其实到最后都是很无聊,当时间流逝之后内心更加孤独和不安,孤独是内心无人陪伴,不安是时间就这么浪费了,我在浪费青春。回归正题吧,写写这部小说《知更鸟女孩》当看到封面就被这本书吸引住了,在整个黑色的背景下,有一张漂亮女孩的脸,有一些忧伤有一丝恐惧,她的左半边脸被一只紫色的鸟遮挡,我想这只鸟就是

2016-05-02 19:51:42 12101

原创 new和delete重载(1)

 new和delete是语言关键字,它分为两个部分new:operator new(申请空间)------构造函数初始化delete:析构函数析构---------------operator delete(释放空间)而在operator new 和operator delete中又分为global new和placement new以及global delete和placemen

2009-02-10 15:21:00 4782 4

原创 关于图片透明效果的实现

画图函数有两个bitblt和bitbltTransparent,这两个函数都可以实现透明效果,不同的是第一个透明效果需要做在图片当中,第二个是需要事先设定一个透明色,然后才能实现透明效果。第一种方法透明效果是由图片来决定的,也就是通常说的双通道,它可以用来实现透明和半透(比例可以选择),其实是在图片的属性当中是有一个半透效果的属性,它是一个比例,用来决定背景透的比例,如果是100%,则是全部覆盖,

2009-01-08 19:24:00 1182

原创 把类的析构函数写成虚函数的用意

#include class Base { public: Base() { mPtr = new int; } ~Base() { delete mPtr; coutprivate:   int* mPtr; } ;class Derived : public Base { public:   Derived() { mDerived = new long; }   ~Derived() { d

2009-01-04 20:07:00 611

原创 关于scratchpad修改所想到

今天花了将近一天的时间修改一个低优先级的CR,不是coding太慢,而是自己在两种解决方案中徘徊,开始选择一种方案,但是后来发现这种解决方案,给目前系统带来了很大的不确定性,虽然可以很好的解决问题,但是修改太多,其中很多逻辑都要发生变化,需要将很多测试用例重新测试一遍,可能导致引入更大的风险。直到下午3点才放弃,改用打patch的方法对它进行修改。一个很小的CR,本来是可以比较快的解决,却花了将近

2008-12-30 18:38:00 635

原创 做一个programmer,而不做一个coder

programmer是程序的思考者,而coder只是一个执行者             劳心者制人,劳力者制于人如果项目不紧的情况下,应该从需求做起,最好能够穷尽所有的需求,遇到与别人模块交互的情况,规定好与别人交互的接口。然后才是开始设计,抓住需求当中的名词,想想是否设计成为类,然后根据测试用例,来设计框架结构,至少要说出这么做的优点,遇到其中比较复杂的模块,详细设计内部逻辑,遇上需要维护状态,

2008-12-23 18:29:00 733 1

原创 转载:关于如何快速提高英语阅读水平

曲刚老师回答:要警惕服“刀枪不入”的“假读”。很多人天天读英语,可就是阅读水平不见提高,老是猜来猜去地猜不明白,糊里糊涂的,这是怎么回事呢?这就是由“假读”造成的。什么叫“假读”呢?首先要讲讲我经过长期研究后发现的英语阅读中的“母语转移现象”。我们的大脑在阅读外语时有一个顽固的习惯,就是顽固地把一切读进来的英语单词都统统转化成汉语来理解和记忆,并且达到了顽固不化的程度,这造成一篇英语文章读完后,英

2008-12-17 10:58:00 780 1

空空如也

空空如也

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

TA关注的人

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