精华内容
下载资源
问答
  • 善于动脑解决问题名言.doc
  • 善于动脑解决问题名言精选.doc
  • 问题以及发现问题解决问题

    千次阅读 2010-12-11 21:06:00
    发现问题解决问题更重要,如果发现了问题的所在,解决它仅仅是一个时间的问题,可能有些问题永远解决不了,但是我们最终知道它永远解决不了也算是解决了问题。问题的实质其实是一种反差,也就是期望和实际的...

    发现问题比解决问题更重要,如果发现了问题的所在,解决它仅仅是一个时间的问题,可能有些问题永远解决不了,但是我们最终知道它永远解决不了也算是解决了问题。问题的实质其实是一种反差,也就是期望和实际的反差,这是好事,如果每件事都和我们期望的一致,那么我们的脑子里面就不会有问题了,思维就僵化了。解决问题的本质就是缩小这种反差,其实是两种方式,第一种方式是结果向期望靠拢,第二种方式是期望向结果靠拢,还有一种是同时向对方靠拢。将我不熟悉的东西往我们熟悉的东西上靠拢,这既是对之前经验积累的一种利用,同时又是一种新的经验积累,这在软件开发当中很重要。当期望和实际发生的一致了,那么问题就解决了。
         解决问题最重要的你要有一个信念,那就是原因一定会导致结果,这好像是废话一句,然而却是由因导果和执果索因的依据,发生了一个问题的时候,如果我们找不到蛛丝马迹解决它怎么办?找不到任何线索怎么办?这就说明执果索因行不通了,那么由因导果就要使用了,其实这是一种更简单的方法,但是实际上却很少有人使用,除了高中时我们解数学题的时候使用过,实际生活中很少有人使用。现有一个问题,程序崩溃了,但是调试环境中没有gdb,没有core,日志又帮不了忙,那怎么办,程序崩溃只是一个结果,我们要找它的原因,很难,但是如果我们知道所有导致程序崩溃的方式,那么就可以手工的以这些方式触发这个崩溃,然后观察现象,如果现象和问题出现时的现象一致,那么就算是解决一半问题了,为何是解决一半呢?因为我们不能保证其它的原因不会导致现象一致的崩溃。另一半问题就好办了,我们只要能及时挽救就可以。
         为何我们社会上出了那么多的专家和学者,却没有出现顶级的科学家,这就是因为这些所谓学者都是问题的解决者而不是发现者,解决问题是简单的,只要有问题,肯定会解决的,而且有那么多现成的公理和经验可用,这些学者的工作就是在现成的N个公理/定理中找出一个可用的,最后将这些东西堆积在一起即可,这在实质上和我们程序员复制粘贴代码以及一些学生们引用名言警句以作文是一致的,心里完全没有问题,只是堆积一些现成的原因然后导致一个结果,而从来没有人会添加一个新的原因,这也决定了为何我们能将一个数据精确到很精细的地步却从来没有人能提出这个数字。我们的高铁速度能刷新世界纪录却不是发明火车的国家。

    展开全文
  • c语言经典案例

    2014-10-30 08:06:57
    实例119 递归解决年龄问题 158 实例120 递归解决分鱼问题 159 实例121 小数分离 160 实例122 求任意数的n次幂 161 实例123 固定格式输出当前时间 163 实例124 设计函数计算学生平均身高 164 实例125 求数组元素中的...
  • 用margin解决缩进问题

    2021-01-19 21:09:40
    复制代码代码如下: <p><strong>名言:土地是以它的肥沃和收获而被估价的;才能也是土地,不过它生产的不是粮食,而是真理。如果只能滋生瞑想和幻想的话,即使再大的才能也只是砂地或盐池,那上面连小草也长不出来的...
  • 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决. 这句话几乎概括了计算机软件体系结构的设计要点.整个体系从上到下都是按照严格的层级结构设计的. 而这个中间层通过映射来连接上下文. 不仅是...

    计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决.

    这句话几乎概括了计算机软件体系结构的设计要点.整个体系从上到下都是按照严格的层级结构设计的.

    而这个中间层通过映射来连接上下文.

    不仅是计算机系统的整个体系是这么设计的, 体系里面的每个组件,比如操作系统,很多应用程序甚至很多硬件系统结构都是按照层次化的结构来设计的.

    遗憾的是,这句经典的名言出处无从考证.

    本文就此展开.

    计算机硬件体系架构

    我们先看经典的 Von Neumann 架构:

    1233356-13b12f18931840dd.png

    基于上面的架构, 典型的 PC 机架构图如下

    1233356-036c432c51146967.png

    虽然硬件结构体系越来越复杂, 但目前来看, 计算机的架构还是没有脱离最初的 CPU, 内存以及 IO 的基本结构.

    1233356-28769d242e64fc74.png

    计算机软件体系架构

    1233356-a9ba9545e9a16b88.png

    作为一个整体的计算机系统, 硬件跟软件都是必不可少的.计算机体系结构图如下:

    1233356-3dd7d068fa267c5e.png

    计算机软件的体系结构分层示意图:

    1233356-29dbd013a954a308.png

    每个层次之间都要相互通信,既然需要通信就必须有一个通信协议,我们一般将其称为接口(Interface),接口的下面那层是借口的提供者,由它定义接口;接口的上面那层是接口的使用者,它使用接口来实现所需要的功能。在层次体系中,接口是被精心设计过的,尽量保持稳定不变,那么理论上层次之间只要遵循这个接口,任何一个层都可以被修改或是替换。除了硬件和应用程序,其他都是所谓的中间层,每个中间层都是对它下面的那层的包装和扩展。使得应用程序和硬件之间保持相对的独立,比如硬件和操作系统都在日新月异的发展,但是最初为80386芯片和DOS系统设计的软件在最新的多核处理器Windows Vista下还是能够运行的,这方面硬件和操作系统本身保持了向后兼容性,另一方面不得不归功于这种层次结构的设计方式。

    我们的软件体系中,位于最上层的是应用程序,比如我们平时用的网络浏览器、Email客户端、多媒体播放器、图片浏览器等。从整个层次结构上来看,开发工具与应用程序是属于同一个层次的,因为它们都是用一个接口,那就是操作系统应用程序编程接口(API)。应用程序接口的提供者是运行库,什么样的运行库提供什么样的API,比如Linux下的Glibc库提供的POSIX的API;Windows的运行库提供的Windows API。

    运行库使用操作系统提供的系统调用接口(System call Interface),系统调用接口在实现中往往以软件中断的方式提供,比如Linux使用0x80号中断作为系统调用接口,Windows使用0x2E号中断作为系统调用接口。

    操作系统内核层对硬件层来是硬件接口的使用者,而硬件是接口的定义者,硬件的接口定义决定了操作系统内核,具体来讲就是驱动程序如何操作硬件,如何与硬件进行通信。这种接口往往叫做硬件规格,硬件的厂商提供硬件规格,操作系统和驱动程序的开发者通过阅读硬件规格文档所规定的各种硬件编程接口标准来编写操作系统和驱动程序。

    内存的分配问题: 一切皆是映射

    如何将计算机上有限的物理内存分配给多个程序使用。在早期的计算机中,程序是直接运行在物理内存上的,也就是说,程序在运行时所访问的地址都是物理地址。但这样做的话会出现很多问题。

    1 地址空间不隔离
    所有的程序都直接访问物理地址,程序所使用的内存空间不是相互隔离的。恶意的程序很容易改写其他程序的内存数据,以达到破坏目的。

    2 内存使用效率低
    由于没有有效的内存管理机制,通常要一个程序执行时,监控程序就将整个程序装入内存然后开始执行。

    举个例子:计算机有128MB内存,程序A运行需要10MB,B需要100MB,C需要20MB。如果我们要同时运行A和B,比较直接的做法是将内存的前10MB分配给程序A,10MB~110MB分配给程序B。这样就能够实现A和B同时运行。但是,如果我们忽然要运行C,那么这时内存空间已经不够了。由于程序所需要的空间是连续的,那么这个例子里面,如果我们将A换出到磁盘所释放的内存空间是不够的,所以只能将B换出,将C换入执行。可以看到整个过程中有大量的数据在换入换出,导致效率十分低下。

    3 程序运行地址不确定
    因为程序每次需要装入运行时,我们都需要给它从内存中分配一块足够大的空闲区域,这个空闲区域的位置是不确定的。这给编程造成了一定的麻烦,因为在程序编写时,它访问数据和指令跳转时的目标地址很多都是固定的。

    解决方案

    作为普通的程序,它需要一个简单的执行环境,有一个单一的地址空间。地址空间是一个比较抽象的概念,可以把它想象成一个很大的数组,每个数组的元素就是一个字节,数组的大小由地址空间的地址长度决定,比如32位的地址空间为2^32=4GB,地址空间的有效地址是0~4294967295,用16进制表示为0x0000 ~ 0xFFFFFFFF。

    地址空间分为两种:虚拟地址空间和物理地址空间。

    1233356-cb033c76ca948f52.png

    物理地址空间是实实在在存在的,存在于计算机当中,而且对于每一台计算机来说是唯一的,可以想象成为计算机的物理内存,比如你的计算机用的是32位的处理器,即计算机地址线有32条,那么物理空间就有4G。虚拟地址空间是指虚拟的、想象出来的地址空间,现实中并不存在,每个进程都有自己独立的虚拟空间,而且每个进程只能访问自己的地址空间,这样就有效地做到了进程的隔离。

    分段(Segmentation)

    最开始人们使用的是一种分段的方法,基本思路是把一段与程序所需要的内存空间大小的虚拟空间映射到某个地址空间。比如程序A需10MB内存,那么我们假设有一个地址从0x00000000到0x00A00000的10MB大小的虚拟空间,然后我们从实际物理内存中分配一个相同大小的物理地址,假设物理地址是0x00100000到0x00B00000。然后我们把这两块相同大小的地址空间一一映射,即虚拟空间里的每个字节对应物理空间中的每个字节。这个映射过程由软件来设置,实际的地址转换由硬件完成。

    比如,A和B同时运行时,它们的虚拟空间和物理空间映射关系如图所示。

     

    1233356-c14410ecf51b9219.png

     

    分段的方法基本上解决了上面问题中的第一个和第三个。

    首先做到了地址隔离,因为A和B被映射到了两块不同的物理空间,它们之间没有任何重叠,如果A访问虚拟空间的地址超过了0x00A00000这个范围,硬件就会判断这是一个非法的访问,并将这个请求报告给操作系统或者监控程序,由它决定如何处理。

    再者,对于每个程序来说,无论它们被分配到地址空间的哪一个区域,对于程序来说都是透明的,它们不需要关心物理地址的变化,它们只要按照从地址0x00000000到0x00A00000来编写程序、放置变量,所以程序不需要重定位。

    分页(Pageing)

    但是分段的方法没有解决内存使用效率的问题。分段对于内存区域的映射还是按照程序为单位,如果内存不足,被换入换出的磁盘的都是整个程序,这样势必会造成大量的磁盘访问操作,从而严重影响速度,这种方法还是显得粗糙,粒度比较大。事实上根据程序的局部性原理,当一个程序正在运行时,在某个时间段内,它只是频繁用到了一小部分数据,也就是说,程序的很多数据其实在一个时间段内是不会被用到的。人们很自然地想到了更小粒度的内存分割和映射方法,使得程序的局部性原理得到充分利用,大大提高了内存的使用率。这种方法就是分页

    分页的基本方法是把地址空间人为得等分成固定大小的页,每一个页的大小由硬件决定,或硬件支持多种页的大小,由操作系统选择决定页的大小。目前几乎所有PC的操作系统都是用4KB大小的页。我们使用的PC机是32位虚拟地址空间,也就是4GB,按4KB分页,总共有1048576个页。

    举个例子,如图所示:

     

    1233356-b4707d0a2ddf2d26.png

     

    那么,当我们把进程的虚拟地址空间按页分割,把常用的数据和代码装载到内存中,把不常用的代码和数据保存在磁盘里,当需要用到的时候再把它们从磁盘里取出即可。图中的线表示映射关系,我们可以看到虚拟空间有些页被映射到同一个物理页,这样就可以实现内存共享。

    我们可以看到Process 1 的VP2和VP3不在内存中,但是当进程需要用到这两个页的时候,硬件就会捕获到这个消息,就是所谓的页错误(Page Fault),然后操作系统接管进程,负责将VP2和VP3从磁盘读取出来装入内存,然都将内存中的这两个页和VP2和VP3建立映射关系。以页为单位存取和交换数据非常方便,硬件本身就支持这种以页为单位的操作方式。

    保护页也是页映射的目的之一,简单地说就是每个页可以设置权限属性,谁可以修改,谁可以访问,而且只有操作系统有权修改这些属性,那么操作系统就可以做到保护自己和保护进程。

    虚拟存储的实现需要硬件支持,几乎所有CPU都采用称为MMU的部件来进行页的映射:

     

    1233356-d8788b2c2f422646.png

     

    在页映射模式下,CPU发出的是Virtual Address ,即我们程序看到的是虚拟地址。经过MMU转换以后就变成了Physical Address。一般MMU集成在CPU内部,不会以独立的部件存在。

    计算机网络体系架构: OSI 模型

    1233356-99e7427bd6f45fbe.png

    The International Standards Organization (ISO) developed the Open Systems Interconnection (OSI) model. It divides network communication into seven layers. In this model, layers 1-4 are considered the lower layers, and mostly concern themselves with moving data around. Layers 5-7, called the the upper layers, contain application-level data. Networks operate on one basic principle: "pass it on." Each layer takes care of a very specific job, and then passes the data onto the next layer.

    The 7 Layers of the OSI
    In the OSI model, control is passed from one layer to the next, starting at the application layer (Layer 7) in one station, and proceeding to the bottom layer, over the channel to the next station and back up the hierarchy. The OSI model takes the task of inter-networking and divides that up into what is referred to as a vertical stack that consists of the following 7 layers.

    Layer 7 - Application
    Layer 6 - Presentation
    Layer 5 - Session
    Layer 4 - Transport
    Layer 3 - Network
    Layer 2 - Data Link
    Layer 1 - Physical
    

    1233356-64ddea3079609b80.png

    OSI 模型中的信息交换:

    1233356-7905c554d2719c53.png

    操作系统架构

    操作系统是一个一直运行在计算机中的程序。它管理着计算机的硬件和软件资源,提供一些服务给计算机的程序。

    Linux OS

    以 Linux OS 为例.

    现代 Linux 系统内核结构采用组件化结构,如图

     

    1233356-74f218c6657925c4.png

     

    1233356-b9c290c93634fc8d.png

    Linux is one the popular modified version of UNIX operating system. It is an Open Source OS and it is free to use as well as for modifications. Linux was design by considering UNIX compatibility. Its functionality list is quite similar to that of UNIX.

    The operating system architecture is organized in two parts :

    • Kernel Mode
    • User Mode

    Kernel Mode executes the operating system processes.
    User Mode executes application program of the user.

    The architecture of operating system consist of five Components:

    Kernel
    Shell
    System Utilities
    User application
    Hardware platform
    

    权限等级

    1233356-6fd6068cc8f5c402.png

    Windows OS 架构:

    1233356-640ba70af6c6b264.png

    Diagram of Mac OS X architecture:

     

    1233356-3d3ed13e1374c584.png

    iOS 架构:

    1233356-9056e1acf4412751.png

    As shown above, the Core OS and Core Services make up the base and very strongly support the iOS application. On top of that comes the Media and Cocoa Touch which are again very essential for supporting an iOS application. All of these reside on top of the Kernel and device drivers.

    1233356-0b75c3721a94a3e2.png

    Cocoa has a very important role to play for supporting an iOS application. It provides UIKit for the application to work which is essentially the USP of an iOS application.

    Android 系统架构:

    Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图所示为 Android 平台的主要组件。

    1233356-c287281df2986685.png

    Linux 内核

    Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。

    使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

    硬件抽象层 (HAL)

    硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

    Android Runtime

    对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运行。

    ART 的部分主要功能包括:

    预先 (AOT) 和即时 (JIT) 编译
    优化的垃圾回收 (GC)
    更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段

    在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。

    Android 还包含一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能,包括一些 Java 8 语言功能。

    原生 C/C++ 库
    许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。

    如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。

    Java API 框架

    您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

    丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
    资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
    通知管理器,可让所有应用在状态栏中显示自定义提醒
    Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
    内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据
    开发者可以完全访问 Android 系统应用使用的框架 API。

    系统应用

    Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。

    系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。

    来自: https://developer.android.com/guide/platform

    JVM 体系架构

    JVM stands for Java Virtual Machine. It provides you with environment to execute your compiled programs, called bytecode. There are multiple implementations of JVM from different vendors for variety of platforms. In this article I will explain the main components of JVM, including memory management, class loading and the Garbage collector.

    Usually we do not dig deep into the internal mechanics of JVM. If our code works, then we go on without caring much about the internal mechanics… until the day something goes wrong and we need to tweek JVM or fix a memory leak for example.

    Java Virtual Machine questions are very popular in job interviews. Interviewers love to ask various questions about JVM to prove your general understanding of the Java platform.

    1233356-885f1940170288ce.png

    Java Virtual Machine Architecture
    The Java virtual machine consists of three main areas:

    • Class loader subsystem
    • Runtime data area
    • Execution engine

    We will look at each one in greater details:

     

    1233356-6144a56cf1f494b8.png

    Java Platform:

    The following conceptual diagram illustrates the components of Oracle's Java Platform Products:

    Jave SE Platform at a Glance

    1233356-83d731ea4730b9a3.png

    数据库系统架构

    The following diagram shows in-memory and on-disk structures that comprise the InnoDB storage engine architecture.

    1233356-9b5ce1cf726470b0.png

    参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html

    MySQL InnoDB File Architecture

    Keep in mind that /var/lib/mysql/ibdata1 is the busiest file in the InnoDB infrastructure. It normally houses six types of information:

    Table Data
    Table Indexes
    MVCC (Multiversioning Concurrency Control) Data
    Rollback Segments
    Undo Space
    Table Metadata (Data Dictionary)
    Double Write Buffer (background writing to prevent reliance on OS caching)
    Insert Buffer (managing changes to non-unique secondary indexes)
    

    Please find below architecture for complete details

     

    1233356-f07420c175a35bde.png

    Spring 5 架构

    1233356-afbd7b480798055e.png

    太阳系结构图

    The Solar System is our local neighborhood in space. This incredible system of celestial pobjects contains a star, eight planets, 140 moons, and a variety of other objects such as asteroids, comets, and dwarf planets. At the center the is an average-sized, middle aged yellow star known as the Sun. The eight planets and other bodies orbit the Sun in a perpetual dance that has been going on for nearly five billion years. The planets in this system range in size from small, rocky worlds to gigantic balls of gas and ice. These planets are orbited by a multitude of moons that vary from asteroid-sized chunks of rock to nearly planet-sized worlds with atmospheres of their own.

    1233356-bf863cb537991599.png

    http://www.seasky.org/solar-system/solar-system.html

    Structure Of Atom

    1233356-e46b81f1dae68cd4.png

    Food Chain

    A Food Web displays more of the interactions that take place within the ecosystem and therefore would be a better representation. Food web is a realistic, true to life representation.

    Explanation:

    1233356-b9af05a19de25336.png

    The Food Web shows more of the interactions between the organisms of the ecosystem and the trophic levels included from Producers to Primary/Secondary Consumers up through the Tertiary Consumers.

    1233356-013e2911da956967.png

    https://sciencezoneja.files.wordpress.com

    While a food Chain is more of a linear representation of a specific line of interaction within the greater Food Web. Thus food chain is a part of the whole story.

    阴阳

    1233356-539203488560ffc3.png

    老子在《道德经》中说:“道生一,一生二,二生三,三生万物。万物负阴而抱阳,冲气以为和”。阴阳的特性如下:

    “对立而统一关系”( the contradictoryunity)(太极)

    两者互相对立:万物皆有其互相对立的特性。如热为阳,寒为阴;天为阳,地为阴,说明了宇宙间所有事物皆对立存在。然这种相对特性并非绝对,而是相对。如上为阳,下为阴,平地相对于山峰,山峰为阳,平地为阴;但平地若相对于地底,则平地属阳、地底属阴,可见阴阳的相对性关系。

    两者相互依靠、转化、消长:阴阳存在互根互依,互相转化的关系,阴中有阳,阳中有阴,因彼此的消长,阴阳可以变化出许多不同的现象分类。

    阴阳的例子:

    阳的代表:天、父、雄性、光、热、表面、进行、单数、刚强(主导性)。
    阴的代表:地、母、雌性、暗、寒、里面、完成、偶数、柔顺(包容性)。


    Kotlin 开发者社区

    1233356-85557eb302fca71c.jpg

    国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

    展开全文
  • 软件开发名言警句

    2019-08-25 22:12:30
    当你试图解决一个你不理解的问题时,复杂化就产成了。——Andy Boothe 用几个小时来制定计划,可以节省几周的编程时间。—— 匿名 控制复杂性是计算机编程的本质。—— Brian Kernighan 计算机...
    • 生 命太短暂,不要去做一些根本没有人想要的东西。——Ash Maurya

    • 如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。——David Leinweber

    • 软件设计有两种方式:一种方式是,使软件过于简单,明显没有缺陷;另一种方式是,使软件过于复杂,没有明显的缺陷。——C.A.R. Hoare

    • 其实,我尝试着使 Ruby 更自然,而不是简单。Ruby 看起来很简单,但内部是非常复杂的,就像我们的身体一样。——松本行弘,Ruby 之父

    • 大部分情况下,构建程序的过程本质上是对规范调试的过程。——Fred Brooks,《人月神话》作者

    • 软件开发往往是这样:最开始的 90% 代码占用了开始的 90% 的开发时间;剩下 10% 代码同样需要 90% 的开发时间。——Tom Cargill

    • 当你试图解决一个你不理解的问题时,复杂化就产成了。——Andy Boothe

    • 用几个小时来制定计划,可以节省几周的编程时间。—— 匿名

    • 控制复杂性是计算机编程的本质。—— Brian Kernighan

    • 计算机科学领域的所有问题都可以通过其他方式间接解决。——David Wheeler

    • 编程是两队人马在竞争:软件工程师努力设计出最大最好的连白痴都会使用的程序;而宇宙在拼命制造最大最好的白痴。到目前为止,宇宙是胜利者。—— Rick Cook

    • 调试一个初次见到的代码比重写代码要困难两倍。因此,按照定义,如果你写代码非常巧妙,那么没有人足够聪明来调试它。—— Brian W. Kernighan

    • 我不是一个伟大的程序员,我只是一个具有良好习惯的优秀程序员。― Kent Beck

    • 你们中大多数人都熟悉程序员的美德,有三种:那就是懒惰、急躁和傲慢。– Larry Wall,Perl 語言发明人

    • 任何一个傻瓜都会写能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码。——Martin Fowler

    • 靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度。——比尔·盖茨

    • 这不是一个 bug,这只是一个未列出来的特性。——匿名

    • 作为一个程序员,郁闷的事情是,面对一个代码块,却不敢去修改。更糟糕的是,这个代码块还是自己写的。—— Peyton Jones

    • 它在我的机器上可以很好运行!——大部分程序员

    • 能说算不上什么,有本事就把你的代码给我看看。—— Linus Torvalds,Linux 之父

    • 我认为对象就像是生物学里的细胞,或者网络中的一台计算机,只能够通过消息来通信——Alan Kay,Smalltalk 的发明人,面向对象之父

    • 当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch

    • 质量、速度、廉价,选择其中两个。——匿名

    • 过早的优化是罪恶之源。——Donald Knuth

    • 没有什么代码的执行速度比空代码更快。——Merb 核心原则

    • 如果你是房间里最聪明的人,那么你走错房间了。——匿名

    • 如果只需更改一个单一的代码行,你的部门需要花费多长时间?——Mary Poppendieck

    • 九个人不能让一个孩子在一个月内出生。——Fred Brooks,《人月神话》作者

    • 好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释。——Steve McConnell,Code Complete 作者

    • 一个人在教会电脑之前,别说他真正理解这个东西了。——Donald Knuth

    展开全文
  • 数据分析有关的名言警句

    千次阅读 2019-10-15 10:17:32
    ** 1,数据是21世纪的石油,而分析则是内燃机。...对《圣经》所有了解的朋友,可能会知道在《圣经》(启示录21章2节)中有个广为传颂的名言: 看哪!上帝的帐幕在人间。他要与人同往,他们要作他的子民;上...

    **

    1,数据是21世纪的石油,而分析则是内燃机。

    **
    这是Gartner研究院高级副总裁Peter Sondergaard在一次报告上的讲话观点。没有内燃机,石油也仅是一堆埋在地下的烃化物。没有分析,数据也就是磁盘中的二进制。价值是“用”出来的。
    对《圣经》所有了解的朋友,可能会知道在《圣经》(启示录21章2节)中有个广为传颂的名言:
    看哪!上帝的帐幕在人间。他要与人同往,他们要作他的子民;上帝要亲自与他们同在,作他们的上帝。
    印度专家(严格来说是一个多才的电视广告人)Varun Mohanpuria在LinkedIn发表了一篇有关大数据博文,就套用了圣经的这段话,完美地“戏谑”大数据一把,仔细品味一番,还有点意思:
    看哪,大数据管理的洞见,将与人们同住,人们要做它的子民,大数据要亲自与他们同在,做他们的神。

    2.大数据不是新石油。

    这是创造性研究办公室的联合创始人Jer Thorp的一篇文章,2010-2012年,Jer Thorp是驻《》的数据艺术家。
    对这句话,要稍微解释一下:想一想,我们所用的石油,它的生成时间轴至少需要200万年,你和石油之间,除了你用它和它被你用之外,其生产过程,和你有一毛钱的关系吗?
    而数据就不一样了,现在能成气候的大数据,诸如Facebook、新浪微博之类的社交大数据,再诸如亚马逊、阿里巴巴的电商大数据,无不与人有密切关联,人人都是大数据的生产者,你说的每一句话、做的每一笔交易,点滴汇成大数据。从这个角度看,大数据哪里是和你什么关系都没有的“石油”?明明就是一种全新的资源嘛。
    这么说,其实是有另外一层含义的。既然大数据和“人人”都有关系,当大公司把它当作一种获取利益的资源来用,那不仅仅就让技术人员参与其中了,还要呼唤更多的人文情怀在里面。在大数据的挖掘过程中,哲学家、伦理学家、艺术家和工程师的地位,应该同等重要!

    3.数据是新科学,大数据能hold住一切答案。

    当你想向客户兜售大数据解决方案时,这可是最棒的金句。不要被财务人员的质疑唬住,这帮人,就是仅仅拥有数字,却对数字麻木不仁的一群人。现在就是你的机会,用大数据把他们hold住。
    这句话,语出EMC CEO Pat Gelsinger发表于《福布斯》的一篇文章:《大数据上押下重注》(Big Bets on Big Data, Forbes)。

    4.老数据,如同葡萄酒一样,而老应用(application),则像鱼。

    译者按:这是在2009年布里斯班召开的开源开发者大会上一位名叫Andy的演讲者说的一句话。不太懂这个金句是啥意思?先来思考下:
    10年的葡萄酒好,还是30年的葡萄酒好?你肯定说,30年的好,愈久弥香,价值越高嘛。数据也是这样!大数据的价值,在一定程度上是积累出来的。
    那老应用为什么像鱼?作为食材,你是知道的,鱼的年龄越大,是不是肉质越差?肉质越差,是不是价值就越低?应用程序也是这样!找个20年前的Word程序,即使能运行,估计你也不用,相比于日新月异喷涌而出的新应用程序,老应用程序的价值几乎荡然无存。

    5.如果我们有数据, 就让数据来发声。如果我们仅仅是意见不一,那就得听我的。

    权威的标签,其实就是傲慢。
    团队的领导人,是有绝对话语权的。如果没有数据,他们可能就是一言堂,就是一个人掌控整个团队的行动方向。
    你可以用这句话,砸在每个对大数据蠢蠢欲动的人脸上——数据带了客观和民主,要不要由你!
    这是网景公司前CEO Jim Barksdale的一句名言。

    6.如果你拷问数据到一定程度,它会坦白一切。

    别介意啊,这句话说的,可不是数据的力量,而是说的是人本身。
    用这句话来支撑数据的重要性,会让你的潜在客户或者上司两眼发光。接下来他们极可能会问:“嘿,给我整点数据,来支撑我的观点吧”。然后,就是你表忠诚的时候到了。
    说这句话的来头可不小,他是新制度经济学的鼻祖Ronald H. Coase,1991年诺贝尔经济学奖的获得者。
    可这句话的更深一层含义,你看懂了吗?
    数据做久了,不管别人信不信,自己都信了!人们很容易陶醉于自己的数据结论中。同一个问题,看待的角度不同,就有不同的解释,而且都能找到数据支撑自己的观点。比如说,大型电商的不同业务部,通过自己部门的数据分析,给出的商品推荐,其结论就可能大相径庭。解决问题的方式之一,就是跨部门融合这些数据。

    7.没有大数据,你就是在高速公路上的瞎子或聋子。

    这句话是想说明,有了大数据,整个世界变得更加智能。
    但是,先别在意这些智能是不是真的由大数据创造,而是应该思考:我是不是也该整整大数据了,要不然,成为在高速公路上的瞎子或聋子,那不是“死”只有一个字吗?
    说这句话的人是Geoffrey Alexander Moore,他是高科技营销魔法之父,硅谷战略与创新咨询专家,其所创立的关于技术产品生命周期的定律,被称为新摩尔定律。

    8.数据本身是无用的,除非你从中获取到有价值的洞察。

    9.我们只信奉上帝,其他人都必须携数据而来。

    如果有人给你讲理性,你就给它聊聊感性,而这句话就是最棒的武器,看有谁在这么强大的感性面前,给我讲理性,哈哈。
    数据,就是我们新的上帝,其他人必须向这个全能的神,俯首称臣。
    说这话的是W.Edwards.Deming博士,他是世界著名的质量管理专家,在日本更是大名鼎鼎地一塌糊涂。在涂子沛先生的著作《数据之巅》有此君理念的详细描述,可以找来一读。

    10.数据是钢,分析是铸造。如果你想制造出一件好兵器,二者缺一不可。如果其中存在一个短板,你可能就会因为一件烂兵器而死在战场上。

    展开全文
  • 计算机经典名言

    千次阅读 2019-07-22 23:27:56
    1、计算机并不解决问题,它们只是执行解决方案。 2、最好的程序员跟好的程序员相比可不止好那么一点点。这种好不是一个数量级的,取决于标准怎么定:概念创造性、速度、设计的独创性或者解决问题的能力。 3、永远要...
  • 作者:康熙师爷全文共 1882 字,阅读需要 5 分钟———— / BEGIN / ————有人说,最重要的工作技能,就是解决问题的能力。想测试下你的解决问题的水平吗?试着解一下这道题目吧:“公司销售业绩同比下降了20%,...
  • 局域网是互联网的雏形,广域网是在局域网的基础上进行了放大(这使我想起了鹤老师的一句经典名言:世界上的所有事物,都不能简单的放大处理。因为一旦放大,难度不是线性增长的,而是以幂指数形式增长的。) 不是题...
  • 计算机的名人名言

    千次阅读 2019-07-22 23:23:25
    计算机并不解决问题,它们只是执行解决方案. --Laurent Gasser “Large increases in cost with questionable increases in performance can be tolerated only in race horses and women.” - Lord Kelvin ...
  • 101条计算机名言

    2019-07-22 23:26:07
    “现有的大多数软件其作用并非解决问题而是与别的软件交互。” – IO Angell “好的规范总能够比任何编程工具或技术更好地改进程序员的生产力。” – Milt Bryce,系统方法论之父 “理论和实践的区别...
  • 本文通过用蒙特卡洛树搜索(MCTS)解决一个朴素寻路问题,测试了MCTS的实际表现,对于具体场景给出了实际实现的优化,并对其效率进行了部分探讨,与传统寻路算法进行了优劣比较。 关键词:蒙特卡洛树搜索 寻路算法
  • 摘要:本文介绍了深度学习和Bongard问题,以及如何用深度学习更好的解决Bongard问题。Bongard问题是苏联计算机科学家Mikhail Bongard提出的。从20世纪60年代,他致力于研究模式识别,并且设计了100个这样的谜题,使...
  • 程序员励志名言

    千次阅读 2016-12-01 09:21:26
     25、对程序员来说大部分的快乐是从解决问题,特别是独立解决问题中获得,而不是从这个CASE有多大,奖金有多少中获得。  26、人呐,眼光放得长远一些,看到的东西也会多一些,生活也就会过得更有意义一点。 ...
  • 编程名言名句

    千次阅读 2013-10-09 11:34:28
    下面是一些迄今为止最好的关于编程的名言名句。阅读它们时相信你会有几分愉悦,你可以在一些会谈场合引用它们,一定能为你的团队吸引到不少的好程序员。 UNIX很简单。但需要有一定天赋的人才能理解这种简单。 ...
  • 测试经典名言100句

    千次阅读 2021-01-22 17:06:35
    57)持续性的迭代质量需要一个规范的流程来保障,需要团队成员包含领导层有共同的质量意识 58)软件质量是设计出来的不是测出来的,不能把所有的问题都遭留给功能测试团队去解决。 59)软件设计模式的选取很重要,选对了,...
  • 只要有人通过研究,逆向工程,反复试验或只是提出问题发现其逻辑规则,它就不再是寻找假货的可靠测试。 没有秘密会永远存在,每个秘密都只是一个被利用而不会受到损害的漏洞。 This concept can seem confusing at ...
  • SharePoint 2010 名言警句 Web部件

    千次阅读 2014-06-05 17:03:14
    使用这个Web部件,每天你在页面上都可以看到名言警句。这个Web部件可用于波斯语和英语,以后也可能添加其他语言。
  • 名人名言

    2013-08-22 19:41:25
    我们开发的很快,但经常会遇到问题,而且可以看出来出错了——毕竟这是一个图形化的编程语言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但
  • 问题解决

    千次阅读 2012-10-08 11:01:11
    问题解决力 ([日]大前研一 斋藤显一) ...我以这些工作经验为基础制定的学习计划,叫做《经营管理者养成计划——解决问题必须的技巧课程》,这里面集中了所有问题解决法(PSA=problem solving approach)的秘诀
  • php导出excel,数据量小的时候使用phpexcel可轻松解决问题,仅仅限于5w行以下数据,但实际上我在使用phpexcel导出4w行数据的时候就出问题了: 一开始是报内存溢出,然后随手给了1g内存,当然是程序里ini_set动态...
  • 最给人启迪的30条编程名言

    万次阅读 2016-08-19 11:10:36
    程序员编程需要经验,很多经验可以通过自己的实践来积累,但很多经验知识需要从他人哪里...下面就是这30个著名的编程名言。 一个好的程序员应该是那种过单行线都要往两边看的人。 — Doug Linder, 系统管理员
  • 17句名言

    千次阅读 2014-09-16 13:12:31
     小班课教学期待在讨论中解决问题,讨论有助于学习知识,更有助于同学完善自我;  通识教育能让同学们广泛涉猎、横跨文理,同学们要用一些时间广泛阅读,多读经典,对人生有一次宽泛的思考;  我们要学习的不...
  • 区块链如何解决社会问题

    千次阅读 2017-09-12 10:24:04
    所谓市场,我引用一下 Adam Smith 的名言:市场不是将买卖双方汇集在一起的具体地点或服务(尽管有时可能涉及到这些),而是广泛的供应链使产品协调一致的成对交易。 货币和市场激励创造出更准确的价格,从而...
  • ​ — Bjarne Stroustrup,C++语言的创始人 ​ 评论:解决问题大多数都很容易;找到问题出在哪里却很难。 ​ — 无名 ​ 看看目前我们的计算机编程上的这种糟糕的状态,软件开发很显然仍然处于一种黑色艺术状态,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,194
精华内容 5,677
关键字:

发现问题解决问题名言