C#技术分享-基于Socket的断点续传功能

最近开发了一个异地灾备传输工具,每周从广州服务器传输 5G的数据库备份文件 到北京服务器。

第一个版本的传输工具开发得很简单,两个window服务,一个负责发送,另一个负责接收,利用 socket 建立 tcp 连接进行数据传输,在测试服务器上传输10G大小的文件没有问题。

但部署到生产环境之后,每次传输了3G左右的数据就中断了,经分析是由于网络不稳定造成的,所以需要对传输工具添加断点续传功能,当传输意外中断时,可以自动连接,并完成上一次未完成的传输。

断点续传的原理很简单,就是分割需要传输的文件,每次传输一小块数据,并附带数据的位置和大小信息,服务器成功接收数据之后,则继续下一块数据的传输,否则重复上一块数据的传输,直到成功为止。

阅读更多

JavaScript的__proto__属性介绍

在 JavaScript 中我们会约定俗成,如果一个方法是被 new 出来使用的,那么该方法名首字母通常会大写,例如下面代码块中的 Person。(我们也可以把 Person 看成 Java 或 C# 中的类)

1
2
3
var Person = function(name) {
this.name = name;
}

在 JavaScript 中一个类被 new 出来的具体过程如下:

1
2
// 初始化一个对象 p
var p = new Person();

1
2
3
4
// 初始化一个对象 p
var p = {};
p.__proto__ = Person.prototype;
Person.call(p);

以上两段代码的作用完全一样,关键在第2段代码的第2行,我们来证明一下:

阅读更多

被邀创业随笔

昨天ojj(同学名字缩写)给我打电话,想拉我一起创业,做一个款社交类型的app,前期主打线下体育活动,后期再扩充其他娱乐活动,如果发展的不错,还可以搭建二手市场,最终理想状态是做成 综合性陌生人线下社交平台

想法不错,愿景也非常好,但是市面上同类的app已经非常多了,而且不乏一些巨头公司也在其中,我们如何能吸引到用户,我们的核心竞争力在哪,app做出来了该如何推广,这是我们前期就必须考虑清楚的。

举个栗子,阿里巴巴的社交app 往来 和网易的社交app 易信,用户体验都非常棒,也都有自己的亮点功能,而且花费了大量时间、人力、物力、财力去推广,可依旧是半死不活的。

其根本原因还是产品定位不对,没有抓住用户的痛点,且市场趋于饱和(基本被腾讯独霸天下),用户重新学习的成本高于收益,当人就没人转过来了。

所以在即时通讯领域千万不要和腾讯对着干,下场基本都是死路一条。只有做细分市场才可能一线生机,比如:脉脉、Linkedin、陌陌、YY、微博、秘密、无秘、知乎、豆瓣等。

阅读更多

导出Excel失败“服务器无法在发送HTTP标头之后设置内容类型”

昨天用户反映导出 excel 失败,我试了一下,只有在导出数据量稍大时,才会出现这个问题。上了半天度娘也没有找到合适的解决方案,突然想到系统其他模块也有导出 excel 功能,便参照相关代码进行了修改,虽然解决了问题,但原理还是不懂,如果哪位朋友知道其原理,还望指导。

阅读更多

读书笔记《把时间当朋友》

最近在读李笑来的《把时间当朋友》一书,这本书把很多高效运用时间的方法讲解得浅显易懂,大家有空可以看看。


  • 优秀的人更容易建立人脉,假如比尔盖茨要来结识我,我一定会用我最大的热情接待他。

  • 心智不同,面对完全相同的事情,作出的选择却大不相同的。这就是有些人只会抱怨,有些人会用行动改变现状的原因。

  • 方法论固然重要,但坚持和努力更重要,有再好的方法你不坚持实践,对你来说也没有任何用处。

  • 什么是兴趣,当你做一件事情,做得比其他人都好了,有成就感了,自然就有兴趣的。如果你怎么都做不好,自然就没有兴趣了。

  • 人有一种特殊的能力就是“忘记痛苦”,你试着回想一下昨天、前天、上周、上月、去年、前年的痛苦的事情,能写出来的事情越来越少了。

  • 正是因为人有这种特殊的能力,所以同样的错误,会一次又一次的犯,因为痛苦的事情是很容易忘记的。比如女人生小孩的痛,背单词很容易忘记。

阅读更多