最新 | 最热门 | 最高评价

+0  如何读懂并写出装逼的函数式代码

Tag: 杂项资源 | 程序设计 | 编程语言 | Closure | functional | Javascript | Y combinator
陈皓 发于 2016年10月23日 17:56 | 点击: 467 | 展开摘要
今天在微博上看到了 有人分享了下面的这段函数式代码,我把代码贴到下面,不过我对原来的代码略有改动,对于函数式的版本,咋一看,的确令人非常费解,仔细看一下,你可能就晕掉了,似乎完全就是天书,看上去非常装逼,哈哈。不过,我感觉解析那段函数式的代码可能会一个比较有趣过程,而且,我以前写过一篇《函数式编程》的入门式的文章,正好可以用这个例子,再升华一下原来的那篇文章,顺便可以向大家更好的介绍很多基础知识,所以写下这篇文章。

先看代码

这个代码平淡无奇,就是从一个数组中找到一个数,

查看全文: http://www.udpwork.com/item/15886.html

+0  Linus:为何对象引用计数必须是原子的

Tag: 程序设计 | 编程语言 | Atomic | Concurrency | Linus Torvalds | lock-free | Parallelism
Leo 发于 2014年12月31日 09:59 | 点击: 1431 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

Linus大神又在rant了!这次的吐槽对象是时下很火热的并行技术(parellism),并直截了当地表示并行计算是浪费所有人时间(“The whole “let’s parallelize” thing is a huge waste of everybody’s time.”)。大致意思是说乱序性能快、提高缓存容量、降功耗。当然笔者不打算正面讨论并行的是是非非(

查看全文: http://www.udpwork.com/item/13700.html

+0  Leetcode 编程训练

Tag: C/C++语言 | 杂项资源 | 编程语言 | Algorithm | C++ | Leetcode | Programmer | Programming | 程序员 | 算法 | 面试
陈皓 发于 2014年10月23日 10:51 | 点击: 1983 | 展开摘要
Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。

我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了大学里的“算法和数据结构”里的好些最基础最基础的知识,基本上没有什么训练。所以,当我看到有人在做这些题的时候,我也蠢蠢

查看全文: http://www.udpwork.com/item/13421.html

+0  TCP 的那些事儿(下)

Tag: 程序设计 | 编程语言 | 网络安全 | Congestion Avoidance | Fast Recovery | RTO | RTT | TCP | Window
陈皓 发于 2014年05月28日 08:20 | 点击: 1926 | 展开摘要
这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源,所以,不适合在厕所中阅读。

TCP的RTT算法

从前面的TCP重传机制我

查看全文: http://www.udpwork.com/item/12569.html

+0  TCP 的那些事儿(上)

Tag: 程序设计 | 编程语言 | 网络安全 | ACK | ISN | MSL | SACK | SYN | TCP | TIME_WAIT
陈皓 发于 2014年05月28日 08:15 | 点击: 3562 | 展开摘要
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相关的技术文档。

之所以想写这篇文章,目的有三个,

一个是想锻炼一下自己是否可以用

查看全文: http://www.udpwork.com/item/12570.html

+0  C语言的整型溢出问题

Tag: C/C++语言 | 程序设计 | 编程语言 | 网络安全 | C++ | Overflow | 安全
陈皓 发于 2014年04月21日 08:18 | 点击: 1056 | 展开摘要
整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码。

什么是整型溢出

C语言的整型问题相信大家并不陌生了。对于整型溢出,分为无符号整型溢出和有符号整型溢出。

对于unsigned

查看全文: http://www.udpwork.com/item/12154.html

+0  C语言结构体里的成员数组和指针

Tag: C/C++语言 | 编程语言 | C++
陈皓 发于 2014年04月01日 08:17 | 点击: 1176 | 展开摘要
单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章。

为了方便你把代码copy过去编译和调试,我把代码列在下面:

#include <stdio.h>
struct str{
int len;
char s[0];
};

struct

查看全文: http://www.udpwork.com/item/12054.html

+0  Python修饰器的函数式编程

Tag: Python | 程序设计 | 编程语言 | Decorator | functional | Programming | 函数式
陈皓 发于 2014年03月20日 09:50 | 点击: 1539 | 展开摘要
Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西。虽然好像,他们要干的事都很相似——都是想要对一个已有的模块做一些“修饰工作”,所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去。但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedi

查看全文: http://www.udpwork.com/item/11978.html

+0  函数式编程

Tag: Python | 程序设计 | 编程语言 | functional | Javascript | 函数式
陈皓 发于 2013年12月27日 08:11 | 点击: 1725 | 展开摘要
当我们说起函数式编程来说,我们会看到如下函数式编程的长相:

函数式编程的三大特性:

immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出bug的,在并行中这样的问题就更多了)

first class functions:这

查看全文: http://www.udpwork.com/item/11411.html

+0  Lua简明教程

Tag: 杂项资源 | 编程工具 | 编程语言 | C++ | Javascript | Lua
陈皓 发于 2013年12月03日 08:29 | 点击: 8706 | 展开摘要
这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源码,这可能是我看过最干净的C的源码了。

我不想写一篇大而全的语言手册,一方面是因为已经有了(见本文后面的链接),重要的

查看全文: http://www.udpwork.com/item/11273.html

+0  程序的本质复杂性和元语言抽象

Tag: 编程语言
Todd 发于 2013年10月31日 08:00 | 点击: 1571 | 展开摘要
(感谢 @文艺复兴记(todd) 投递此文)

组件复用技术的局限性

常听到有人讲“我写代码很讲究,一直严格遵循DRY原则,把重复使用的功能都封装成可复用的组件,使得代码简短优雅,同时也易于理解和维护”。显然,DRY原则和组件复用技术是最常见的改善代码质量的方法,不过,在我看来以这类方法为指导,能帮助我们写出“不错的程序”,但还不足以帮助我们写出简短、优雅、易理解、易维护的“好程序”。对于熟悉Martin Fowler《重构》和GoF《设计模式》的程序员,我常常提出这样一个

查看全文: http://www.udpwork.com/item/11047.html

+0  数据即代码:元驱动编程

Tag: C/C++语言 | Ruby | 杂项资源 | 编程语言 | C++ | Javascript | Lisp
Todd 发于 2013年08月09日 10:18 | 点击: 1923 | 展开摘要
(感谢 @文艺复兴记(todd) 投递此文)

几个小伙伴在考虑下面这个各个语言都会遇到的问题:

问题:设计一个命令行参数解析API

一个好的命令行参数解析库一般涉及到这几个常见的方面:

1) 支持方便地生成帮助信息

2) 支持子命令,比如:git包含了push, pull, commit等多种子命令

3) 支持单字符选项、多字符选项、标志选项、参数选项等多种选项和位置参数

4) 支持选项默认值,比如:–port选项若未指定认为5037

5) 支持使

查看全文: http://www.udpwork.com/item/10359.html
|<<<1234567>>>| 一共9页, 106条记录