最新 | 最热门 | 最高评价

+0  API设计原则

Tag: C/C++语言 | 技术读物 | 程序设计 | 系统架构 | API | api-design | API设计 | C++ | Coding | Design | Programmer
李 鼎 发于 2017年07月25日 14:16 | 点击: 507 | 展开摘要
(感谢好友 @李鼎 翻译此文)

原文链接:API Design Principles – Qt Wiki

基于Gary的影响力上 Gary Gao 的译文稿:C++的API设计指导

译序

Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节

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

+0  如何重构“箭头型”代码

Tag: C/C++语言 | 程序设计 | 编程语言 | Code Review | Programming | Refactory
陈皓 发于 2017年04月05日 18:07 | 点击: 900 | 展开摘要
本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步。

文章有点长,我在文章最后会给出相关的思考和总结陈词,你可以跳到结尾。

所谓箭头型代码,基本上来说就是下面这个图片所示的情况。

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

+0  浅谈移动应用的跨平台开发工具(Xamarin和React Native)

Tag: 技术读物 | 编程工具 | Android | C++ | Facebook | iOS | Javascript | ReactNative | Xamarin | 开发工具 | 移动开发
jnj 发于 2016年06月06日 12:35 | 点击: 695 | 展开摘要
谈移动应用的跨平台开发不能不提HTML5,PhoneGap和Sencha等平台一直致力于使用HTML5技术来开发跨平台的移动应用,现在看来这个方向基本算是失败的,基于HTML5的移动应用在用户体验上与原生应用仍然存在着明显的差距。

与上述HTML5平台不同,Xamarin和React Native通过各自的方式来实现跨平台。Xamarin基于Mono框架将C#代码编译为原生平台代码,React Native则是在UI主线程之外运行一个JavaScript线程,两者呈现给用户

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

+0  Xcode 如何让 Objective C 项目链接 C++ 静态库

Tag: C/C++语言编程 | Cocoa | MacOSX
ideawu 发于 2016年03月08日 18:50 | 点击: 809 | 展开摘要
如果你的 OC 项目引入了一个 C++ 静态库, 那么编译时会提示找不到 vtable 之类的的错误, 因为 OC 是 C 语言, 无法识别 C++ 的静态库, 解决方法是让 Xcode 认为你在使用 C++/Objective-C++, 假装也行.

所以解决方法是:

往项目里添加一个.cpp文件, 文件是空的.

将 main.m 改名为 main.mm

Related posts:
Objective-C 单引号中包含4个字符

Objective-C 对二进制数据

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

+0  Cuckoo Filter:设计与实现

Tag: C/C++语言 | 数据库 | 程序设计 | 趣味问题 | Algorithm | filter | hashing | 海量数据
Leo 发于 2015年09月02日 09:18 | 点击: 1293 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

对于海量数据处理业务,我们通常需要一个索引数据结构,用来帮助查询,快速判断数据记录是否存在,这种数据结构通常又叫过滤器(filter)。考虑这样一个场景,上网的时候需要在浏览器上输入URL,这时浏览器需要去判断这是否一个恶意的网站,它将对本地缓存的成千上万的URL索引进行过滤,如果不存在,就放行,如果(可能)存在,则向远程服务端发起验证请求,并回馈客户端给出警告。

索引的存储又分为有序和无序,前者使用关联式容器,比如B树,后者使用哈希

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

+0  经典的 TCP socket 读取报文错误

Tag: C/C++语言编程 | 网络编程
ideawu 发于 2015年07月16日 16:41 | 点击: 1210 | 展开摘要
面试了很多做了多年网络编程的人, 从TCP socket中读取报文这项基本技能, 许多人都做不对. 经典的错误用法是:

char buf[1024]; // 1024或者更大
read(sock, buf, sizeof(buf));
if(parse(buf) == 1){
// 报文解析完毕
}else{
// 不是一个完整的报文, 丢弃
}

这是非常经典的错误! 没有任何文档或者手册表明, read()会读到*完整*的报文, 对于read()函数来说

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

+0  什么时候用C而不用C++?

Tag: 编译技术 | 随笔 | C++
skywind 发于 2015年06月16日 12:00 | 点击: 657 | 展开摘要
知乎问题《什么时候用C而不用C++?》:

前两天不是有一个问题是“什么时候用C++而不用C”,我一直觉得问错了,难道不是“能用C++就不用C”么?那么当然就要讨论什么时候用C而不用C++啦。

一直以来都严格遵循OO的原则来进行开发(用的工具是C#和Qt),直到最近,开始接手某同事的代码,整个项目20多个小工程(代码量并不多),除了界面部分用了MFC这种不伦不类的OO以外,所有的代码都是C写的。但是模块化做的非常好。后来跟他讨论为何不用C++,他说其实没有什么特别的,就是习

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

+0  简单的 C++ 网络服务框架 Sim 介绍

Tag: C/C++语言编程 | 网络编程
ideawu 发于 2015年05月18日 17:22 | 点击: 1103 | 展开摘要
可测性

Sim 采用了一种极简的报文格式, 在你没有开始写 Client 时, 你就可以利用手上现成的工具, 如 nc, telnet 来测试. 可测性非常重要, 你可以随时查看代码的执行效果, 这对开发者的心理会产生非常正面的促进作用. 即使你不想使用 nc 这样的命令, 你想写 PHP 或者 Python 脚本, 也是非常简单的.

例如, 你采用 Sim 框架写了一个计算加法的服务器. 这时怎么测试呢? 很简单! 在命令行执行

$ nc 127.0.0.1 8800

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

+0  在Linux进行IO的正确姿势

Tag: C/C++语言编程 | Linux
ideawu 发于 2015年05月08日 10:56 | 点击: 1607 | 展开摘要
很多C/C++程序虽然在做网络编程, 但大多用别人封装好的库, 对底层不甚了解, 感觉 IO 操作不是很简单吗? 我敢说, 大多数人进行 IO 的姿势都不对, 所谓的 IO, 主要是 read()/write() 两个函数.

先说错误的 IO 读操作:

int ret = read(fd, buf, len);
if(ret == -1){
exit(-1);
}else if(ret == 0){
close(fd);
}

看起来好像很正确的样子, 返

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

+0  PHP 解码 C 字符串

Tag: C/C++语言编程 | PHP
ideawu 发于 2015年05月07日 12:51 | 点击: 1103 | 展开摘要
有时候, 需要将 C 语言字符串字面量编码的字符串转换成其在内存中实际的值, 如果用 Python, 是有内置的函数, 但 PHP 没有, 只能写一个.

C 语言字符串字面量编码, 就是类似:

\r\n\x90

它们在内存中肯定不是这样.

完整代码如下, 需要 PHP 5.4+.

function unescape_c_str($str){
$ret = '';
$len = strlen($str);
for($i=0; $i

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

+0  C/C++编程的现代习惯

Tag: C/C++语言编程
ideawu 发于 2015年05月05日 14:39 | 点击: 1432 | 展开摘要
相对于汇编语言是一门操作 CPU 寄存器的语言, C/C++ 是一门操作内存的语言, 这是传统的观点. 但现代的程序应用开发, 大多是把 C/C++ 当作一门应用层语言, 所以必须适当地减少对内存的关注. 这也是本文所要讲的 - C/C++ 编程的现代习惯.

1. 不要害怕返回结构体和类的实例

在一些古董级的编程书里, 你绝对看不到返回结构体或者类的实例, 它们告诉你"不能返回局部变量的内存". 事实上, 返回结构体(类)的实例, 并不是把局部变量的内存(指针)返回给调用

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

+0  vfork 挂掉的一个问题

Tag: C/C++语言 | Unix/Linux | 操作系统 | fork | Linux | Unix | vfork
陈皓 发于 2014年11月21日 00:48 | 点击: 1345 | 展开摘要
在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?并给出了如下的代码,下面的代码一运行就挂掉了,但如果把子进程的return改成exit(0)就没事。

我受邀后本来不想回答这个问题的,因为这个问题明显就是RTFM的事,后来,发现这个问题放在那里好长时间,而挂在下面的几个答案又跑偏得比较严重,我觉得可能有些朋友看到那样的答案会被误导,所以就上去回答了一下这个问题。

下面我把问题和我的回答发布在这里,也供更多

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