博客园 - Jone Zhang
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=28441
2019-06-12T11:12:51Z
Jone Zhang
https://www.cnblogs.com/ccdev/
feed.cnblogs.com
https://www.cnblogs.com/ccdev/p/3341234.html
高并发服务端分布式系统设计概要(下) - Jone Zhang
高并发服务端分布式系统设计概要(下) 上篇 链接地址:http://www.cnblogs.com/ccdev/p/3338412.html 中篇 链接地址:http://www.cnblogs.com/ccdev/p/3340484.html 现在接着设计我们的“山推”系统。有了前面两篇的铺垫,我们的系统现在已经有了五脏六腑,剩下的工作就是要让其羽翼丰满。那么,是时候,放出我们的“山推”系统全貌了: 前面啰嗦了半天,也许不少同学看的不明不白,好了,现在开始看图说话环节: (1)整个系统由N台机器组合而成,其中Global Master一台,Global Slave一台到...
2013-09-26T09:41:00Z
2013-09-26T09:41:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】高并发服务端分布式系统设计概要(下) 上篇 链接地址:http://www.cnblogs.com/ccdev/p/3338412.html 中篇 链接地址:http://www.cnblogs.com/ccdev/p/3340484.html 现在接着设计我们的“山推”系统。有了前面两篇的铺垫,我们的系统现在已经有了五脏六腑,剩下的工作就是要让其羽翼丰满。那么,是时候,放出我们的“山推”系统全貌了: 前面啰嗦了半天,也许不少同学看的不明不白,好了,现在开始看图说话环节: (1)整个系统由N台机器组合而成,其中Global Master一台,Global Slave一台到... <a href="https://www.cnblogs.com/ccdev/p/3341234.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/p/3340484.html
高并发服务端分布式系统设计概要(中) - Jone Zhang
高并发服务端分布式系统设计概要(中) 上篇(链接)我们完成了在此分布式系统中,一个group的设计。那么接下来,我们设计系统的其他部分。如前文所述,我们的业务及其数据以group为单位,显然在此系统中将存在many many的groups(别告诉我你的网站总共有一个业务,像我们的“山推”,那业务是一堆一堆地),那么由谁来管理这些groups呢?由Web过来的请求,又将如何到达指定的group,并由该group处理它的请求呢?这就是我们要讨论的问题。 我们引入了一个新的角色——Global Master,顾名思义,它是管理全局的一个节点,它主要完成如下工作:(1)管理系统全局配置,发...
2013-09-26T05:24:00Z
2013-09-26T05:24:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】高并发服务端分布式系统设计概要(中) 上篇(链接)我们完成了在此分布式系统中,一个group的设计。那么接下来,我们设计系统的其他部分。如前文所述,我们的业务及其数据以group为单位,显然在此系统中将存在many many的groups(别告诉我你的网站总共有一个业务,像我们的“山推”,那业务是一堆一堆地),那么由谁来管理这些groups呢?由Web过来的请求,又将如何到达指定的group,并由该group处理它的请求呢?这就是我们要讨论的问题。 我们引入了一个新的角色——Global Master,顾名思义,它是管理全局的一个节点,它主要完成如下工作:(1)管理系统全局配置,发... <a href="https://www.cnblogs.com/ccdev/p/3340484.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/p/3338412.html
高并发服务端分布式系统设计概要(上) - Jone Zhang
高并发服务端分布式系统设计概要(上) 张峻崇 原创。转载请注明出处。 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写
2013-09-26T02:41:00Z
2013-09-26T02:41:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】高并发服务端分布式系统设计概要(上) 张峻崇 原创。转载请注明出处。 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写 <a href="https://www.cnblogs.com/ccdev/p/3338412.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/29/2837754.html
高性能分布式计算与存储系统设计概要(下篇) - Jone Zhang
高性能分布式计算与存储系统设计概要(下篇) (上篇) 在上篇里,我们主要讨论了,这个系统怎样处理大数据的“读”操作,当然还有一些细节没有讲述。下篇,我们将主要讲述,“写”操作是如何被处理的。我们都知道,如果只有“读”,那几乎是不用做任何数据同步的,也不会有并发安全问题,之所以,会产生这样那样的问题,
2012-12-28T16:02:00Z
2012-12-28T16:02:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】高性能分布式计算与存储系统设计概要(下篇) (上篇) 在上篇里,我们主要讨论了,这个系统怎样处理大数据的“读”操作,当然还有一些细节没有讲述。下篇,我们将主要讲述,“写”操作是如何被处理的。我们都知道,如果只有“读”,那几乎是不用做任何数据同步的,也不会有并发安全问题,之所以,会产生这样那样的问题, <a href="https://www.cnblogs.com/ccdev/archive/2012/12/29/2837754.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/28/2836599.html
高性能分布式计算与存储系统设计概要(上篇) - Jone Zhang
高性能分布式计算与存储系统设计概要(上篇) 2012年底,末日之后,看到大家都在写年末总结,我也忍不住想一试。工作已经3年半了,头一次写总结。虽然到现在仍是无名小码农一名,但工作这些年,技术着实有不少积累。成长最大的,当然就是这篇文章标题提到的——高性能分布式计算与存储系统的设计和研发过程,这也是我
2012-12-27T16:38:00Z
2012-12-27T16:38:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】高性能分布式计算与存储系统设计概要(上篇) 2012年底,末日之后,看到大家都在写年末总结,我也忍不住想一试。工作已经3年半了,头一次写总结。虽然到现在仍是无名小码农一名,但工作这些年,技术着实有不少积累。成长最大的,当然就是这篇文章标题提到的——高性能分布式计算与存储系统的设计和研发过程,这也是我 <a href="https://www.cnblogs.com/ccdev/archive/2012/12/28/2836599.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/27/2836448.html
【原创】Performanced C++ 经验规则 目录 - Jone Zhang
Performanced C++ 经验规则===========================================================================================前言: Performanced C++,意为“高性能C++“编程,是笔者和所在团队多年C++编程总结的经验规则,按条款方式讲述(参考了《Effective C++》的方式),希望能对初入C++的程序员提供帮助,少走弯路,站在前人的肩膀上,看得更高走的更远。我们也同样是脚踩许许多多大牛的经典著作,还有无数默默付出的程序员的辛劳,以及自己许许多多惨痛的编程体验,才有了这些..
2012-12-27T13:38:00Z
2012-12-27T13:38:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】Performanced C++ 经验规则===========================================================================================前言: Performanced C++,意为“高性能C++“编程,是笔者和所在团队多年C++编程总结的经验规则,按条款方式讲述(参考了《Effective C++》的方式),希望能对初入C++的程序员提供帮助,少走弯路,站在前人的肩膀上,看得更高走的更远。我们也同样是脚踩许许多多大牛的经典著作,还有无数默默付出的程序员的辛劳,以及自己许许多多惨痛的编程体验,才有了这些.. <a href="https://www.cnblogs.com/ccdev/archive/2012/12/27/2836448.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/26/2833884.html
【原创】Performanced C++ 经验规则 第五条:再谈重载、覆盖和隐藏 - Jone Zhang
第五条:再谈重载、覆盖和隐藏在C++中,无论在类作用域内还是外,两个(或多个)同名的函数,可能且仅可能是以下三种关系:重载(Overload)、覆盖(Override)和隐藏(Hide),因为同名,区分这些关系则是根据参数是否相同、是否带有const成员函数性质、是否有virtual关键字修饰以及是否在同一作用域来判断。在第四条中,我们曾提到了一些关于重载、覆盖的概念,但只是一带而过,也没有提到隐藏,这一篇我们将详细讨论。1、首先说的是重载,有一个前提必须要弄清楚的是,如果不在类作用域内进行讨论,两个(或多个)同名函数之间的关系只可能是重载或隐藏,这里先说重载。考虑以下事实:1 int foo
2012-12-26T09:09:00Z
2012-12-26T09:09:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】第五条:再谈重载、覆盖和隐藏在C++中,无论在类作用域内还是外,两个(或多个)同名的函数,可能且仅可能是以下三种关系:重载(Overload)、覆盖(Override)和隐藏(Hide),因为同名,区分这些关系则是根据参数是否相同、是否带有const成员函数性质、是否有virtual关键字修饰以及是否在同一作用域来判断。在第四条中,我们曾提到了一些关于重载、覆盖的概念,但只是一带而过,也没有提到隐藏,这一篇我们将详细讨论。1、首先说的是重载,有一个前提必须要弄清楚的是,如果不在类作用域内进行讨论,两个(或多个)同名函数之间的关系只可能是重载或隐藏,这里先说重载。考虑以下事实:1 int foo <a href="https://www.cnblogs.com/ccdev/archive/2012/12/26/2833884.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/25/2832268.html
【原创】Performanced C++ 经验规则 第四条:静态和多态,亦敌亦友 - Jone Zhang
第四条:静态和多态,亦敌亦友这一篇,我们讨论C++中静态和多态的关系。我们都知道,C++并不是一门“动态”语言,虽然它提供了同样强大于其它动态语言的多态性,但很多时候,我们之所以选择C++,看重中正是其“静态”所带来的High Performance。所谓静态,通常是指,在程序运行的过程,是“静止”不变,固定的(特别是内存地址),当然“多态”就是与之对立的概念。这一篇我们并不讨论静态(成员)变量或静态(成员)函数有什么作用,而是讨论“静态”的行为,对比“多态”。我们这里所说的静态,是指:compiler time,即编译时绑定、早绑定、静态联编;而“多态”就是真正的runtime绑定、晚绑定、
2012-12-25T09:45:00Z
2012-12-25T09:45:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】第四条:静态和多态,亦敌亦友这一篇,我们讨论C++中静态和多态的关系。我们都知道,C++并不是一门“动态”语言,虽然它提供了同样强大于其它动态语言的多态性,但很多时候,我们之所以选择C++,看重中正是其“静态”所带来的High Performance。所谓静态,通常是指,在程序运行的过程,是“静止”不变,固定的(特别是内存地址),当然“多态”就是与之对立的概念。这一篇我们并不讨论静态(成员)变量或静态(成员)函数有什么作用,而是讨论“静态”的行为,对比“多态”。我们这里所说的静态,是指:compiler time,即编译时绑定、早绑定、静态联编;而“多态”就是真正的runtime绑定、晚绑定、 <a href="https://www.cnblogs.com/ccdev/archive/2012/12/25/2832268.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/24/2830976.html
【原创】Performanced C++ 经验规则 第三条:你不知道的构造函数(下) - Jone Zhang
第三条:你不知道的构造函数(下)前面两篇,我们已经讨论了C++构造函数中诸多细枝末节,但百密一疏,还有一些地方我们没有考虑到。这一篇将对这些问题进行完结。7、构造函数中的异常当你在构造函数中写代码的时候,你有没有想过,如果构造函数中出现异常(别告诉我,你不抛异常。“必要”时系统会替你抛的),那会出现怎样的情况?对象还能构建完成吗?构造函数中已经执行的代码产生的负面效应(如动态分配内存)如何解决?对象退出其作用域时,其析构函数能被调用吗?上述这些问题,正是构造函数中产生异常要面临的问题。让我们先看结论,再分析过程:尽可能不要在构造函数中产生(抛出)异常,否则,一定会产生问题。我们先看一段代码:
2012-12-24T06:38:00Z
2012-12-24T06:38:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】第三条:你不知道的构造函数(下)前面两篇,我们已经讨论了C++构造函数中诸多细枝末节,但百密一疏,还有一些地方我们没有考虑到。这一篇将对这些问题进行完结。7、构造函数中的异常当你在构造函数中写代码的时候,你有没有想过,如果构造函数中出现异常(别告诉我,你不抛异常。“必要”时系统会替你抛的),那会出现怎样的情况?对象还能构建完成吗?构造函数中已经执行的代码产生的负面效应(如动态分配内存)如何解决?对象退出其作用域时,其析构函数能被调用吗?上述这些问题,正是构造函数中产生异常要面临的问题。让我们先看结论,再分析过程:尽可能不要在构造函数中产生(抛出)异常,否则,一定会产生问题。我们先看一段代码: <a href="https://www.cnblogs.com/ccdev/archive/2012/12/24/2830976.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/23/2830085.html
【原创】Performanced C++ 经验规则 第二条:你不知道的构造函数(中) - Jone Zhang
第二条:你不知道的构造函数(中)上一篇你不知道的构造函数(上)主要讲述了,C++构造函数在进入构造函数体之前,你可能不知道的一些细节。这一篇将讲述,进入构造函数体后,又发生了什么。4、虚表初始化上一篇曾提到,如果一个类有虚函数,那么虚表的初始化工作,无论构造函数是你定义的还是由编译器产生的,这部分工作都将由编译器隐式“合成”到构造函数中,以表示其良苦用心。上一篇还提到,这部分工作,在“刚”进入构造函数的时候,就开始了,之后,编译器才会理会,你构造函数体的第一行代码。这一点,通过反汇编,我们已经看的非常清楚。虚表初始化的主要内容是:将虚表指针置于对象的首4字节;用该类的虚函数实际地址替换虚表中该
2012-12-23T11:00:00Z
2012-12-23T11:00:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】第二条:你不知道的构造函数(中)上一篇你不知道的构造函数(上)主要讲述了,C++构造函数在进入构造函数体之前,你可能不知道的一些细节。这一篇将讲述,进入构造函数体后,又发生了什么。4、虚表初始化上一篇曾提到,如果一个类有虚函数,那么虚表的初始化工作,无论构造函数是你定义的还是由编译器产生的,这部分工作都将由编译器隐式“合成”到构造函数中,以表示其良苦用心。上一篇还提到,这部分工作,在“刚”进入构造函数的时候,就开始了,之后,编译器才会理会,你构造函数体的第一行代码。这一点,通过反汇编,我们已经看的非常清楚。虚表初始化的主要内容是:将虚表指针置于对象的首4字节;用该类的虚函数实际地址替换虚表中该 <a href="https://www.cnblogs.com/ccdev/archive/2012/12/23/2830085.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/23/2830001.html
【原创】Performanced C++ 经验规则 第一条:你不知道的构造函数(上) - Jone Zhang
Performanced C++ 经验规则前言:Performanced C++,意为“高性能C++“编程,是笔者和所在团队多年C++编程总结的经验规则,按条款方式讲述(参考了《Effective C++》的方式),希望能对初入C++的程序员提供帮助,少走弯路,站在前人的肩膀上,看得更高走的更远。我们也同样是脚踩许许多多大牛的经典著作,还有无数默默付出的程序员的辛劳,以及自己许许多多惨痛的编程体验,才有了这些“规则”。icc(JoneZhang,张峻崇)原创内容,难免有错误,欢迎拍砖指正,共同进步。转载请注明出处,保留追究一切责任的权利。============================
2012-12-23T08:16:00Z
2012-12-23T08:16:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】Performanced C++ 经验规则前言:Performanced C++,意为“高性能C++“编程,是笔者和所在团队多年C++编程总结的经验规则,按条款方式讲述(参考了《Effective C++》的方式),希望能对初入C++的程序员提供帮助,少走弯路,站在前人的肩膀上,看得更高走的更远。我们也同样是脚踩许许多多大牛的经典著作,还有无数默默付出的程序员的辛劳,以及自己许许多多惨痛的编程体验,才有了这些“规则”。icc(JoneZhang,张峻崇)原创内容,难免有错误,欢迎拍砖指正,共同进步。转载请注明出处,保留追究一切责任的权利。============================ <a href="https://www.cnblogs.com/ccdev/archive/2012/12/23/2830001.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html
C++ 线程安全的单例模式 - Jone Zhang
废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式: 1 class Singleton 2 { 3 private: 4 static Singleton* m_instance; 5 Singleton(){} 6 public: 7 sta...
2012-12-19T10:38:00Z
2012-12-19T10:38:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式: 1 class Singleton 2 { 3 private: 4 static Singleton* m_instance; 5 Singleton(){} 6 public: 7 sta... <a href="https://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/12/2682246.html
算法探讨——Top K算法详细解析(转载) - Jone Zhang
Top K算法详细解析—百度面试问题描述:这是在网上找到的一道百度的面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。问题解析:【分析】:要统计最热门查询,首先就是要统计每个Query出现的次数,然后根据统计结果,找出Top 10。所以我们可以基于这个思路分两步来设计该算法。下面分别给出这两步的算法:第一步:Query统计
2012-09-12T10:45:00Z
2012-09-12T10:45:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】Top K算法详细解析—百度面试问题描述:这是在网上找到的一道百度的面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。问题解析:【分析】:要统计最热门查询,首先就是要统计每个Query出现的次数,然后根据统计结果,找出Top 10。所以我们可以基于这个思路分两步来设计该算法。下面分别给出这两步的算法:第一步:Query统计 <a href="https://www.cnblogs.com/ccdev/archive/2012/09/12/2682246.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/12/2682098.html
Mac OS X Git安装教程 - Jone Zhang
下载:http://code.google.com/p/git-osx-installer/下载最新的PGK文件。图形化OpeninGitGui:http://code.google.com/p/git-osx-installer上也提供了一个Git的图形化客户端:OpenInGitGui,可以从这里获得,OpenInGitGui十分小巧,下载解压后也只有16K,OpenInGitGui不用安装,双击即可使用,OpenInGitGui刚启动时,会记录打开过的资源库。github使用SSH链接,需要设置SSH1.检查SSH key cd ~/.ssh2.备份已有的key,(如果有的话) mkdi
2012-09-12T09:16:00Z
2012-09-12T09:16:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】下载:http://code.google.com/p/git-osx-installer/下载最新的PGK文件。图形化OpeninGitGui:http://code.google.com/p/git-osx-installer上也提供了一个Git的图形化客户端:OpenInGitGui,可以从这里获得,OpenInGitGui十分小巧,下载解压后也只有16K,OpenInGitGui不用安装,双击即可使用,OpenInGitGui刚启动时,会记录打开过的资源库。github使用SSH链接,需要设置SSH1.检查SSH key cd ~/.ssh2.备份已有的key,(如果有的话) mkdi <a href="https://www.cnblogs.com/ccdev/archive/2012/09/12/2682098.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/11/2680334.html
C语言面试那些事儿──一道指针与数组问题 - Jone Zhang
首先看如下代码:1 int main(int argc, char** argv)2 {3 int a[5] = {1,2,3,4,5};4 int* ptr = (int*)(&a + 1);5 printf("%d,%d\n", *(a+1), *(ptr-1));6 return 0;7 }这道题在很多所谓经典C语言面试题里是常见的不能再常见,你知道输出结果吗?答案是:2,5但是仍有许多人不能答对,也包括当初的我。这道题简简单单,但是考察了不少于如下内容:数组指针、数组首地址概念、数组指针和数组首地址和数组首元素地址之间的关系,指针运算规则,指针类型,in..
2012-09-11T07:50:00Z
2012-09-11T07:50:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】首先看如下代码:1 int main(int argc, char** argv)2 {3 int a[5] = {1,2,3,4,5};4 int* ptr = (int*)(&a + 1);5 printf("%d,%d\n", *(a+1), *(ptr-1));6 return 0;7 }这道题在很多所谓经典C语言面试题里是常见的不能再常见,你知道输出结果吗?答案是:2,5但是仍有许多人不能答对,也包括当初的我。这道题简简单单,但是考察了不少于如下内容:数组指针、数组首地址概念、数组指针和数组首地址和数组首元素地址之间的关系,指针运算规则,指针类型,in.. <a href="https://www.cnblogs.com/ccdev/archive/2012/09/11/2680334.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/09/2677328.html
算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间 - Jone Zhang
算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间给定任一数字序列,如{-5,4,-20,16,-2,-3},求出其最大子序列和,绝对值最大子序列和以及对应的区间,在这个例子中,人肉计算可知最大子序列和为16,区间为[3,3)(数组下标从0开始),而绝对值最大子序列和为-21,区间为[0,2],那么算法如何描述及实现呢?在经典的书籍《数据结构与算法分析 C语言描述第2版》中,作者向我们介绍了求最大子序列和的三种算法,时间复杂度从O(N3)下降到O(N),求最大子序列和绝对值和以及其区间是我对这一问题的扩展。一、求最大子序列和以及其区间求最大子序列和的算法相对简单,并且可
2012-09-09T03:25:00Z
2012-09-09T03:25:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间给定任一数字序列,如{-5,4,-20,16,-2,-3},求出其最大子序列和,绝对值最大子序列和以及对应的区间,在这个例子中,人肉计算可知最大子序列和为16,区间为[3,3)(数组下标从0开始),而绝对值最大子序列和为-21,区间为[0,2],那么算法如何描述及实现呢?在经典的书籍《数据结构与算法分析 C语言描述第2版》中,作者向我们介绍了求最大子序列和的三种算法,时间复杂度从O(N3)下降到O(N),求最大子序列和绝对值和以及其区间是我对这一问题的扩展。一、求最大子序列和以及其区间求最大子序列和的算法相对简单,并且可 <a href="https://www.cnblogs.com/ccdev/archive/2012/09/09/2677328.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/08/2676485.html
通过迭代(非递归)及递归将单链表逆序 - Jone Zhang
通过迭代(非递归)及递归将单链表逆序老生常谈的问题了,不过很多地方面试还是很喜欢问这个问题。实际工程中感觉用处不大,需要逆序的存储为什么要选择单链表呢?为什么不用list(in c++)或iterator(in any language)?或者将数据全部推入栈中再依次弹出。说了这么多有点无聊了,参看酷壳的《我为什么反对纯算法面试》。迭代(非递归)算法描述:设置两个临时指针prev和next分别标记当前结点的前驱和后继,将当前结点的next指针指向前驱,然后把前驱指针替换为当前结点,当前结点替换为next,即向“后”移动,直到链表空了(next为NULL)。C/C++实现: 1 typedef
2012-09-08T04:18:00Z
2012-09-08T04:18:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】通过迭代(非递归)及递归将单链表逆序老生常谈的问题了,不过很多地方面试还是很喜欢问这个问题。实际工程中感觉用处不大,需要逆序的存储为什么要选择单链表呢?为什么不用list(in c++)或iterator(in any language)?或者将数据全部推入栈中再依次弹出。说了这么多有点无聊了,参看酷壳的《我为什么反对纯算法面试》。迭代(非递归)算法描述:设置两个临时指针prev和next分别标记当前结点的前驱和后继,将当前结点的next指针指向前驱,然后把前驱指针替换为当前结点,当前结点替换为next,即向“后”移动,直到链表空了(next为NULL)。C/C++实现: 1 typedef <a href="https://www.cnblogs.com/ccdev/archive/2012/09/08/2676485.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/07/2674789.html
C堆上申请二维数组 - Jone Zhang
C堆上申请二维数组之前写了一篇《C++堆上申请二维数组》,应该说C++的方式相对于C还是更简单容易理解一些,那么C如何写呢?方法一:通过数组指针申请连续的空间 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 // 申请a[3][2]三行两列二维数组 6 int (*a)[2] = (int(*)[2])malloc(sizeof(int)*3*2); 7 a[0][0] =1; 8 a[0][1] =2; 9 a[1][0] =3;10 a[1][1] = 4;11 ...
2012-09-07T03:31:00Z
2012-09-07T03:31:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】C堆上申请二维数组之前写了一篇《C++堆上申请二维数组》,应该说C++的方式相对于C还是更简单容易理解一些,那么C如何写呢?方法一:通过数组指针申请连续的空间 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 // 申请a[3][2]三行两列二维数组 6 int (*a)[2] = (int(*)[2])malloc(sizeof(int)*3*2); 7 a[0][0] =1; 8 a[0][1] =2; 9 a[1][0] =3;10 a[1][1] = 4;11 ... <a href="https://www.cnblogs.com/ccdev/archive/2012/09/07/2674789.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/06/2673799.html
Using Property in Obj-C(Obj-C中属性的使用) - Jone Zhang
Using Property in Obj-C(Obj-C中属性的使用)基础格式:1 @interface YourMotherObject : YourMothersMotherObject2 {3 ... // 声明成员变量4 }5 @property (属性值) 成员变量类型 成员变量名6 @end属性值介绍(懒得写,Copy来的):readonly此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器。或者如果你使用@synthesize关键字,也是有读取器方法被解析。而且如果你试图使用点操作符为属性赋值,你将得到一个编译...
2012-09-06T09:04:00Z
2012-09-06T09:04:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】Using Property in Obj-C(Obj-C中属性的使用)基础格式:1 @interface YourMotherObject : YourMothersMotherObject2 {3 ... // 声明成员变量4 }5 @property (属性值) 成员变量类型 成员变量名6 @end属性值介绍(懒得写,Copy来的):readonly此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器。或者如果你使用@synthesize关键字,也是有读取器方法被解析。而且如果你试图使用点操作符为属性赋值,你将得到一个编译... <a href="https://www.cnblogs.com/ccdev/archive/2012/09/06/2673799.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/ccdev/archive/2012/09/06/2673702.html
(Mac OS X)基础弱智系列问题——如何让Finder显示出根目录的/usr和/etc等隐藏文件夹 - Jone Zhang
两种方法都可以,好坏自己体会:方法一:终端输入:1 defaults write com.apple.finder AppleShowAllFiles TRUE2 killall Finder同理将上面的TRUE改回FALSE就可以恢复隐藏方法二:终端输入:1 cd /2 sudo chflangs nohidden *要恢复隐藏属性,嘿嘿:1 sudo chflags hidden *
2012-09-06T08:26:00Z
2012-09-06T08:26:00Z
Jone Zhang
https://www.cnblogs.com/ccdev/
【摘要】两种方法都可以,好坏自己体会:方法一:终端输入:1 defaults write com.apple.finder AppleShowAllFiles TRUE2 killall Finder同理将上面的TRUE改回FALSE就可以恢复隐藏方法二:终端输入:1 cd /2 sudo chflangs nohidden *要恢复隐藏属性,嘿嘿:1 sudo chflags hidden * <a href="https://www.cnblogs.com/ccdev/archive/2012/09/06/2673702.html" target="_blank">阅读全文</a>