- 敏捷方法对我最大的影响也许正是这样一种理念,即团队做事方法应基于价值观和原则而不是基于实践。实践往往对情境非常敏感——用于Web应用程序的实践与用于商业佣金系统的实践不同,而用于商业佣金系统的实践与用于大型机的工资系统的实践也不同。在这3种情况下采用同样的实践就是制造麻烦。而价值观和原则往往更广泛适用。“敏捷软件开发宣言”和“敏捷宣言背后的原则”通常被认为是敏捷价值观的代表。本文将论述我对知... 敏捷方法对我最大的影响也许正是这样一种理念,即团队做事方法应基于价值观和原则而不是基于实践。实践往往对情境非常敏感——用于Web应用程序的实践与用于商业佣金系统的实践不同,而用于商业佣金系统的实践与用于大型机的工资系统的实践也不同。在这3种情况下采用同样的实践就是制造麻烦。而价值观和原则往往更广泛适用。“敏捷软件开发宣言”和“敏捷宣言背后的原则”通常被认为是敏捷价值观的代表。本文将论述我对知...
- 同步有两种属性:互斥性和可见性。synchronized关键字与两者都有关系。Java同时也提供了一种更弱的、仅仅包含可见性的同步形式,并且只以volatile关键字关联。假设你自己设计了一个停止线程的机制(因为无法使用Thread不安全的stop()方法))。清单1中ThreadStopping程序源码展示了该如何完成这项任务。清单1 尝试停止一个线程清单2中的main()方法声明了一个叫... 同步有两种属性:互斥性和可见性。synchronized关键字与两者都有关系。Java同时也提供了一种更弱的、仅仅包含可见性的同步形式,并且只以volatile关键字关联。假设你自己设计了一个停止线程的机制(因为无法使用Thread不安全的stop()方法))。清单1中ThreadStopping程序源码展示了该如何完成这项任务。清单1 尝试停止一个线程清单2中的main()方法声明了一个叫...
- 字符串有点像一个整数链表。对于每个字符,除了自身占用存储空间外,还需要保存一个指向剩余列表的链接。此外,如果想向列表中增加元素——不管是中间还是末尾——都必须要遍历整个列表直到需要修改的那个位置,然后才能增加元素。不过,向列表中前置增加(prepend)元素时,有所不同:A = [a] B = [b|A] = [b,a] C = [c|B] = [c,b,a] 进行列表前置操作时,A、B或者... 字符串有点像一个整数链表。对于每个字符,除了自身占用存储空间外,还需要保存一个指向剩余列表的链接。此外,如果想向列表中增加元素——不管是中间还是末尾——都必须要遍历整个列表直到需要修改的那个位置,然后才能增加元素。不过,向列表中前置增加(prepend)元素时,有所不同:A = [a] B = [b|A] = [b,a] C = [c|B] = [c,b,a] 进行列表前置操作时,A、B或者...
- 学习新东西的方法有很多,一直以来我们被教育的方式都是:从基础开始,积微成著,最终搭建起自己的知识体系。这种方式最明显的好处是可以夯实自身基础,但弊端却是毁灭性的——枯燥乏味的过程及大脑中的知识无处可用的沮丧,时刻伴随着学习的每一天,最终会让我们失去兴趣,选择放弃。对于设计而言,尤其如此。每一条设计准则都源于对人心理的研究。想要从事设计,就要懂得人们如何感知、学习、推理和记忆。但是,为什么我们... 学习新东西的方法有很多,一直以来我们被教育的方式都是:从基础开始,积微成著,最终搭建起自己的知识体系。这种方式最明显的好处是可以夯实自身基础,但弊端却是毁灭性的——枯燥乏味的过程及大脑中的知识无处可用的沮丧,时刻伴随着学习的每一天,最终会让我们失去兴趣,选择放弃。对于设计而言,尤其如此。每一条设计准则都源于对人心理的研究。想要从事设计,就要懂得人们如何感知、学习、推理和记忆。但是,为什么我们...
- 1 引言尽管你已是一个编程老手,但bug仍有可能在代码中存在。于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例。这个用例通过了。接着你用了一个稍微复杂的测试用例。再次通过了。接下来更难的测试用例也通过了。这时,你开始觉得也许这段代码已经没有bug了。如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念。贝叶斯推断很少会... 1 引言尽管你已是一个编程老手,但bug仍有可能在代码中存在。于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例。这个用例通过了。接着你用了一个稍微复杂的测试用例。再次通过了。接下来更难的测试用例也通过了。这时,你开始觉得也许这段代码已经没有bug了。如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念。贝叶斯推断很少会...
- 如果你想试着用一下Git的话,那么我们马上就可以开始了。本文将会带领你创建自己的第一个项目。我们会为你演示那些用于提交修改版本、查看历史和与其他开发者交换版本的命令。1 准备Git环境首先,我们需要安装好Git。你可以在Git的官网上找到你所需要的一切: http://git-scm.com/downloadGit是一个高可配置软件。首先,我们可以宣布用config命令配置一下用户名和用户邮... 如果你想试着用一下Git的话,那么我们马上就可以开始了。本文将会带领你创建自己的第一个项目。我们会为你演示那些用于提交修改版本、查看历史和与其他开发者交换版本的命令。1 准备Git环境首先,我们需要安装好Git。你可以在Git的官网上找到你所需要的一切: http://git-scm.com/downloadGit是一个高可配置软件。首先,我们可以宣布用config命令配置一下用户名和用户邮...
- 每一个做过支付对接的少年上辈子都是折翼的天使。——题记三方支付对接是一件比较有意思的事儿,今天就拿这个话题来掰扯掰扯。相信每个做过支付对接的小伙伴都有段血与火的经历,那段日子只有痛苦与煎熬,恨不得大骂写文档的都是傻逼,堂堂这么大的互联网公司支付文档都是外包出去的么?然后你在搜索引擎(Google)输入”支付的坑“这几个大字就会找到约4240000条结果,清一色的微信支付宝的坑,当然微信占大多... 每一个做过支付对接的少年上辈子都是折翼的天使。——题记三方支付对接是一件比较有意思的事儿,今天就拿这个话题来掰扯掰扯。相信每个做过支付对接的小伙伴都有段血与火的经历,那段日子只有痛苦与煎熬,恨不得大骂写文档的都是傻逼,堂堂这么大的互联网公司支付文档都是外包出去的么?然后你在搜索引擎(Google)输入”支付的坑“这几个大字就会找到约4240000条结果,清一色的微信支付宝的坑,当然微信占大多...
- 隐写术到底是什么,这里给大家讲个故事吧:2012年大众点评和食神网的竞争非常激烈,后者开始大规模地爬取前者的数据,主要是图片。大众点评没有走中国的司法流程,而是直接向APP STORE提交了证据,使食神的APP下架2次。这些证据就是食神爬取的图片,图片中用隐写术嵌入了大众点评的版权信息!这是如何实现的呢?下面有一张lenna的图片:提取该图片的绿色分量:取绿色分量的最低位,如果是1就设置图片... 隐写术到底是什么,这里给大家讲个故事吧:2012年大众点评和食神网的竞争非常激烈,后者开始大规模地爬取前者的数据,主要是图片。大众点评没有走中国的司法流程,而是直接向APP STORE提交了证据,使食神的APP下架2次。这些证据就是食神爬取的图片,图片中用隐写术嵌入了大众点评的版权信息!这是如何实现的呢?下面有一张lenna的图片:提取该图片的绿色分量:取绿色分量的最低位,如果是1就设置图片...
- 事实1需求其实并非在谈需求。对于软件产品、硬件产品、服务或任何你想构建的东西,需求就是它们要做的事或要成为的东西。不论你发现还是没发现,写下来或没写下来,需求都存在。显然,除非产品满足需求,否则就不对。所以从这个角度你可以认为,需求是某种自然法则,等着你来发现。这就是说,需求活动主要不是编写需求文档。相反,它专注于理解业务问题,并为之提供解决方案。软件是要解决某种问题,硬件和服务也是。需求发... 事实1需求其实并非在谈需求。对于软件产品、硬件产品、服务或任何你想构建的东西,需求就是它们要做的事或要成为的东西。不论你发现还是没发现,写下来或没写下来,需求都存在。显然,除非产品满足需求,否则就不对。所以从这个角度你可以认为,需求是某种自然法则,等着你来发现。这就是说,需求活动主要不是编写需求文档。相反,它专注于理解业务问题,并为之提供解决方案。软件是要解决某种问题,硬件和服务也是。需求发...
- 如果有人问我,要想学好一门编程语言,应该阅读什么样的书籍呢?毫无疑问,在大多数场合下我都会向他推荐市面上最新出版的书籍。原因就是:以现在计算机领域内技术的发展速度,几乎是每隔一段时间,我们就需要对自己现有的知识进行更新,这样看来,使用一本比较新的书籍,里面的内容将会比较贴近当前技术的发展,因而也就能够让你更容易掌握你所要学的东西。但有一本讲述C语言的书,自出版以来,历经14载,它一直都被各个... 如果有人问我,要想学好一门编程语言,应该阅读什么样的书籍呢?毫无疑问,在大多数场合下我都会向他推荐市面上最新出版的书籍。原因就是:以现在计算机领域内技术的发展速度,几乎是每隔一段时间,我们就需要对自己现有的知识进行更新,这样看来,使用一本比较新的书籍,里面的内容将会比较贴近当前技术的发展,因而也就能够让你更容易掌握你所要学的东西。但有一本讲述C语言的书,自出版以来,历经14载,它一直都被各个...
- 研究算法给实际编程的程序员带来许多好处。先进的算法工具有时候对软件系统影响很大——减少开发时间,同时使执行速度更快。算法与其他那些深奥的思想一样重要,但在更一般的编程层面上具有更重要的影响。在《啊哈!灵机一动》一书中(本文的标题就借鉴了它),Martin Gardner1描述了深得我心的一个思想:“看起来很困难的问题也可以有一个简单的、意想不到的答案。”与高级的方法不同,算法的啊哈!灵机一动... 研究算法给实际编程的程序员带来许多好处。先进的算法工具有时候对软件系统影响很大——减少开发时间,同时使执行速度更快。算法与其他那些深奥的思想一样重要,但在更一般的编程层面上具有更重要的影响。在《啊哈!灵机一动》一书中(本文的标题就借鉴了它),Martin Gardner1描述了深得我心的一个思想:“看起来很困难的问题也可以有一个简单的、意想不到的答案。”与高级的方法不同,算法的啊哈!灵机一动...
- 首先我们来认识一下Kanbaneros:他们将穿***来提出问题,甚至挑战我们,并从你的角度提出实际中的困惑。如果我们介绍的是另外一种流程,比如Scrum、极限编程、Rational统一软件开发过程,将会是完全不同的风格。因为我们将集中精力介绍新流程如何工作、该做什么、不该做什么、迭代周期多长、产品负责人(Product Owner)的任务,等等。看板与他们完全不同,它根本没有事先规定那么多内... 首先我们来认识一下Kanbaneros:他们将穿***来提出问题,甚至挑战我们,并从你的角度提出实际中的困惑。如果我们介绍的是另外一种流程,比如Scrum、极限编程、Rational统一软件开发过程,将会是完全不同的风格。因为我们将集中精力介绍新流程如何工作、该做什么、不该做什么、迭代周期多长、产品负责人(Product Owner)的任务,等等。看板与他们完全不同,它根本没有事先规定那么多内...
- zsh可以被视为是对Bourne shell的一种扩展,完全兼容bash。它强大的自动补全功能对我还是非常有吸引力的。 总体来说,zsh的功能主要包括: 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。在用户启动的所有shell中 共享命令历史。通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。改进的变量与数组处理。在缓冲区中编辑多行命... zsh可以被视为是对Bourne shell的一种扩展,完全兼容bash。它强大的自动补全功能对我还是非常有吸引力的。 总体来说,zsh的功能主要包括: 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。在用户启动的所有shell中 共享命令历史。通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。改进的变量与数组处理。在缓冲区中编辑多行命...
- 可以实现路由器功能的开源软件很多,为什么只有OpenWrt成功了?OpenWrt软件成功的关键在于3个方面:领导者、基础设施以及实现软件的技术。通常领导者是最重要的,因为领导者决定着社区的规则和技术方向,但是每个人都是独特的而且是无法复制的,因此通常无法借鉴。基础设施和实现软件的技术则是可以借鉴的。OpenWrt社区采用六大基础设施工具支撑整个社区的运转,这六大基础设施工具分别是代码管理工具... 可以实现路由器功能的开源软件很多,为什么只有OpenWrt成功了?OpenWrt软件成功的关键在于3个方面:领导者、基础设施以及实现软件的技术。通常领导者是最重要的,因为领导者决定着社区的规则和技术方向,但是每个人都是独特的而且是无法复制的,因此通常无法借鉴。基础设施和实现软件的技术则是可以借鉴的。OpenWrt社区采用六大基础设施工具支撑整个社区的运转,这六大基础设施工具分别是代码管理工具...
- 有人说,在学习一门编程语言的过程中是否觉得有趣,很大程度上取决于对这门语言的介绍方式。那么……有趣的旅程就此开始了……Erlang是什么Erlang是一门函数式编程语言。如果你曾经用过命令式语言,那么像i++这样的语句对你来说再普通不过了,但是在函数式编程中,却不能这样使用。事实上,改变任何变量的值都是绝对不允许的。乍一听这似乎很奇怪,但是想想上过的数学课,你学到的内容是这样的:y = 2x... 有人说,在学习一门编程语言的过程中是否觉得有趣,很大程度上取决于对这门语言的介绍方式。那么……有趣的旅程就此开始了……Erlang是什么Erlang是一门函数式编程语言。如果你曾经用过命令式语言,那么像i++这样的语句对你来说再普通不过了,但是在函数式编程中,却不能这样使用。事实上,改变任何变量的值都是绝对不允许的。乍一听这似乎很奇怪,但是想想上过的数学课,你学到的内容是这样的:y = 2x...
上滑加载中
推荐直播
-
基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战(Day1)
2025/03/29 周六 09:00-18:00
华为开发者布道师
本次为期两天的课程将深入讲解OpenHarmony操作系统及其与星闪技术的结合应用,涵盖WS63E星闪开发板的详细介绍、“OpenHarmony+星闪”的创新实践、实验环境搭建以及编写首个“Hello World”程序等内容,旨在帮助学员全面掌握相关技术并进行实际操作
回顾中 -
基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战(Day2)
2025/03/30 周日 09:00-12:00
华为开发者布道师
本次为期两天的课程将深入讲解OpenHarmony操作系统及其与星闪技术的结合应用,涵盖WS63E星闪开发板的详细介绍、“OpenHarmony+星闪”的创新实践、实验环境搭建以及编写首个“Hello World”程序等内容,旨在帮助学员全面掌握相关技术并进行实际操作
回顾中 -
从AI基础到昇腾:大模型初探、DeepSeek解析与昇腾入门
2025/04/02 周三 16:00-17:30
不易 / 华为云学堂技术讲师
昇腾是华为研发的AI芯片,其具有哪些能力?我们如何基于其进行开发?本期直播将从AI以及大模型基础知识开始,介绍人工智能核心概念、昇腾AI基础软硬件平台以及昇腾专区,旨在为零基础或入门级学习者搭建从AI基础知识到昇腾技术的完整学习路径。
回顾中
热门标签