从锦囊妙计想到的17–同步和异步

  categories:儿童计算机  author:

很久都没时间写这个系列的东西了, 今天感觉还得继续下去,因此在继续继续一下, 今天要谈的是什么是同步, 什么是异步, 为了说明这个问题,先讲个故事,来说明一下 同步和异步的重要性!

 

一。 听对了,说对了, 不等于都对了!

先说一下, 甲对乙说了一句话, 甲说对了, 乙也听对了, 然后乙就去按照甲的意思去办理了, 那么乙一定能办对吗?当然假设乙在办理事情的过程中没有任何失误等等。

其实结果是大家 未必像大家想象的!

不啰嗦了,说故事。

本人现在在北京居住了很多年, 一天吃饭时, 家里发出了一个奇怪的声音, 于是我就去找一下, 别是什么电器什么坏了前兆, 若是发现了, 好及时修理。

找了几个地方, 都没找到, 于是我就说, 哪里来的声音?  一旁的老婆说了, 是南京大陆分吹过大陆架发出的声音。

我听后就特别奇怪, 我在北京怎么能听到 远在地球最南边的南极的声音?  我真要成为 顺风耳不成? 奇怪呀奇怪!

我不解的说着, 怎么可能是南极的声音, … 阅读全文

从锦囊妙计想到的16–面向过程和面向对象的计算机编程

  categories:儿童计算机  author:

本文是 从锦囊妙计联想到的16集, 从本集开始 要开始些实用的东西, 然后在分享一下 使用的视频教程, 参照这些教程可以进行简单的计算机的入门等操作了。

前面的加上本集, 大概一共15集 , 主要是说明了一下计算机基本上都工作原理, 由于本人水平有限, 也未必都是正确的, 仅仅是给初学者提供一个帮助。前面通过各种例子试图说明 计算机就是执行程序的一个 机器, 他的执行必须依赖指令, 而指令其实就相当于锦囊一样。

 下面的一段文字内容很重要, 要仔细瞧

     计算机程序复杂到一定程度后, 就会有大量的锦囊(指令的存在), 而锦囊多到一定程度后, 就很难管理了,这个时候, 我们就需要根据各个锦囊的相关程度和特点以及一些执行顺序把这些锦囊要分类打包到一个大的锦囊中去。然后别人才好使用。

现在的问题是当问题复杂到一定程度后, 这个负责打包的人负责整理的人能否完整的考虑清楚 每个分类, 每个打包的情况吗? 这个是非常重要的问题。

先放下这个问题, 先仔细看看 常见的解决问题的过程, 看看是否能解决上述的问题。

一。基于过程,基于函数,面向过程

上面的几个说法基本上没什么特别大的区别, 基本是一样就像谁能说出老鼠同耗子的区别, 反正我不知道有什么区别。

1.

阅读全文

从锦囊妙计想到的15–让我们了解程序运行情况与参与程序的运行

  categories:儿童计算机  author:

本文是 从锦囊妙计联想到的15集(中间跳过了一个编号, 那个不吉利)

这个文章重点研究一下window和android里面的activity他们的作用

本文是上一集的延续,继续说一下如何与程序运行的, 了解程序运行的必要性。

一。人机交互的必要性

在本系列的最开始, 说过 计算机是个 笨东西, 你给他安排了什么工作他就做什么工作, 你说错了, 他也会重复错的, 你牵来一只羊, 对计算机说这个是马, 计算机就认为这个是马, 他没有智能不能自己思考(有一类特殊程序例外, 后面我们会慢慢谈到这个的), 因此你说了什么他就认为什么。这个就是计算机, 就是一个忠实的程序员的信徒。

那么随着程序员编写程序的功能的变多, 功能多了, 程序复杂了, 程序可能错的情况就多了, 因此需要在程序运行过程中, 让外面的人了解程序运行的状况, 看程序是否还在正常运行。

另外 有时候程序运行时还需要用户提供一定的信息和数据, 例如到一些政府部门去办理业务, 他们操作的也是计算机, 但是需要您自己提供一些数据等, 这样程序才能继续进行操作。

再有有些程序需要用户的积极参与才能运行, 例如电脑游戏,需要用操作电脑终端,进而操作计算机里面的角色, 参与计算机程序的运行。这样用户相当于进入了一个新的思想世界,参与其中。

那么如何 了解程序内部,或者操作程序内部, 计算机如何将内部信息展示给外部世界?… 阅读全文

从锦囊妙计想到的13–运行时同用户交互动态获得指示

  categories:儿童计算机  author:

本文是从锦囊妙计想到的13集,主要说一下如何在运行(工作的)时候,现场同用户获取工作的进一步指示,然后提高程序的工作满意度。

一。总结一下前面程序的一些特点和缺点

前面的烙饼程序是 关羽写的一些列锦囊, 然后张飞去烙饼,其实就是去执行或者运行程序。

关羽写的一系列锦囊叫做程序,这个时候关羽仅仅是预测了未来这个程序执行时的一些可以预见的事情, 对于一些无法预测的事情还不知道如何处理, 例如突然天上巨大闪电造成厨房大停电,就没办法处理了。

因此程序是事先写好的, 考虑到将来运行时的一些情况的一个一系列的指令(锦囊)的东西。这些东西可以打包到一个超级大的麻袋中, 麻袋里面可以放非常多的小麻袋, 小麻袋里面在放小麻袋。。。 最后放锦囊等等

张飞拿到外面的这个最大的麻袋, 然后打开,然后依照这里的锦囊进行工作时, 直到工作完成, 是需要一段时间的,整个这个过程叫程序的执行或者运行。运行中的程序 可以叫做进程。

在一个执行中的程序可能存在几个执行路线, 具体的看张飞是否三头六臂了。

若是张飞3头6臂 就可能有三张饼在同时烙,因此可能有3个行进路线,也就是三个线程。  当然也可能仅仅有一个,这个情况比较复杂, 以后深入计算机就明白了。现在了解一下就好。

另外, 关羽写的程序,除了可以被张飞执行,其实可以被很多人执行, 只要这些人会认字, 有一定厨房的本事就可以了。

因此一个程序其实可以 被执行多次, 别多人执行等等。

但是, 一个写好的程序其实也有一个问题,就是这个程序是按照写程序的人的想法写的, 但是写程序的人没办法预料到程序执行时一些具体的情况。例如

张飞烙饼是参照关羽写的锦囊进行的, 那么关羽一定写了自己喜欢吃的饼的做法, 例如关羽喜欢吃葱花饼, 但是改天赵云来了,赵云爱吃馅饼,等张飞端着一盆馅饼上来, 赵云一看,好家伙都是葱花饼, 没一个馅饼。。。… 阅读全文

从锦囊妙计想到的12–锦囊打包与函数和过程

  categories:儿童计算机  author:

这里是“从锦囊妙计想到的12”, 本文是通过给锦囊打包, 从而引出函数(或者过程,子程序)的概念,从而对指令部分进行细化分析。

一. 给众多小锦囊打个包

还是说个故事,依然还是烙饼的故事(谁让这个东西好吃呢)。

关羽写锦囊, 张飞烙饼, 已经持续很多天了, 就像柯南永远也长不大那样,故事就这么一个场景, 反正, 人家柯南每次都不一样, 我们每次内容说明的知识也是不一样的。

关羽已经吃惯了张飞烙的大饼,每天都要来蹭一顿, 每天关羽都要写呀写呀一些锦囊,然后老张去烙饼。

最近老有人来蹭饭因此每次烙的饼数不一样了, 这样关羽每次都得重新写一下, 关羽很郁闷。 后来关于发现数量的变化可以通过增加一个锦囊, 在锦囊里面放一个装豆子的袋子就解决了。

不过每次锦囊数量很多,拿起来很不方便, 然后还得整理一番, 给这些锦囊重新编号。  关羽还是个聪明的人, 他用了一个非常大的袋子把这些锦囊都收集到一起,然后每次把这个大袋子给张飞拿起, 然后张飞可以打开袋子从里面拿出锦囊(也就是指令去执行了)去工作。如下图

通过一个大好的 麻袋把众多带有指令的锦囊和带有数据的锦囊打包到一起, 然后做为一个整体进行处理,管理,使用等就方便多了。

二. 形实结合的参数

上面通过一个麻袋把全部锦囊都打包的办法可以解决了很多的问题了, 但是还有一个问题就是, 每次当有需要修改麻袋里面内容的时候,需要将麻袋整体打开,然后修改, 最后在整体都打包在一起。

这样尽管也可以, 但是长时间工作后发现,有的时候由于士兵粗心,在重新装麻袋时会偶尔忘记个别的锦囊,这样就有了麻烦。如何解决这个问题?

出现这个问题是, 每次还是有一些东西要修改, 由于这些要修改的东西同其他东西放到一起了, … 阅读全文

从锦囊妙计想到的11–给锦囊分分类

  categories:儿童计算机  author:

本文是:从锦囊妙计想到的11, 内容是给锦囊分分类。

前面重点说明了, 锦囊的执行路线, 就像可以把这些锦囊串接到一起形成一串, 类似一条线, 因此就有了线程。 同时随着工作量的增加, 一个人已经忙不过来了, 因此需要多个人同时工作, 那么每个人都有了一个执行路线, 因此就了多线程。

多线程中自然存在一些原来一个线程没有的问题,特别是一些非常容易出现错误的问题, 例如

1. 多个线程(两个人)同时拿起一个苹果去吃, 这个如何是好? 这个就是竞争关系, 有多时候, 两个人都看看苹果是没问题的, 但是若是有一个线程(人)去吃, 有人去看 那苹果可能已经比咬了一口, 而看到的是 被咬了的苹果

2. 多个人在不同时间向1号储物柜放东西, 那么最后储物柜里面的东西是那个人的, 是否有意都成问题了。 例如甲在1号储物柜放了兔子, 乙放了一条狗, 最后结果如何?

上述问题都是并行计算中常见一些问题, 并行计算里面还有很多问题, 暂时先不说了, 否则跑题太远了, 今天聊聊 锦囊的分类问题。

一. 可以灵活复用的一堆锦囊

阅读全文

从锦囊妙计想到的10–内容总结

  categories:儿童计算机, 原创  author:

内容回顾与总结

本文已经是这个文章系列的第9个文章了(中间跳过一个编号),

前面8个文章中, 通过比喻或者类比的办法了解到, 其实计算机就是一个执行指令(类似于古代的锦囊)的机器, 这些指令是程序员自己在程序运行前, 根据需要进行编制的。

然后, 后面7,8,9开始介绍一些分布式下的程序的工作情况, 到底什么是分布式的, 分布式可以类比 不在一个工作地点的不同人们的工作来联想。说的在通俗一点, 有时候我们可以把参加工作的各个人们都集中在一个房间, 一个地点让后让他们参加一项工作。 但是这个办法并不是总是有效, 例如人太做,房间装不下了, 或者一个军营,一个地点容不下了, 因此人们就会分别 安排到不同地点中去, 这个工作人员 分布在不同地点 的工作的安排方式叫分布式。

现实生活中,有这个问题, 计算机中也有这个问题。 那么在分布式系统中, 我们首先要必须明确的几点:

1. 异地同时工作问题

各个地点的人们是  同时在工作的, 也就是  甲地张三工作时, 乙地的 王五也在工作, 当然可以采用一定的办法 可以让他们  分别工作, 例如, 甲第, 白天工作, … 阅读全文

从锦囊妙计想到的08–分布式计算

  categories:儿童计算机, 原创  author:
——分布式任务协作, 数量老是不正确的问题! 每次都不对, 谁来救救我哦!!

前情回顾

前面几回都是在烙饼, 一开始烙饼给关羽累坏了,  原因是关羽不会循环语句, 把循环用顺序结构写, 造成400张饼的锦囊要写很久, 累坏了关羽。 关羽学会了循环语句, 但是立刻把张飞累死了, 原来关羽的循环语句没有退出语句,因此张飞永远干不完(这个类型的循环是死循环), 只有关羽改进了循环,在循环中添加了判断语句若是满足了数量的要求, 就退出循环,这样张飞就不那么累了。可是问题是张飞烙饼的速度还是慢, 因此恰巧天神哪咤经过传送张飞三头六臂的办法(其实就是开多线程),这样张飞就可以在单位时间内生产出3倍数量的饼来, 可以加快时间。

出名的张飞

俗话说, 人怕出名猪怕壮, 张飞自从有三头六臂的烙饼神功后, 烙饼速度和手艺大进, 全军都已经尽人皆知了。一日,训练归来, 大家训练的很累, 大家也都知道三爷(张飞), 有烙饼的神艺, 因此纷纷说要品尝一下三爷的烙饼。张飞心想, 俺老张有神艺在身, 正好显示一下。

三爷数了数, 这些人吃饼 , 正正好5000张饼。心想看来我要大显身手了!

狭小的厨房

张飞心里算计了一下, 上次5头10臂2个小时烙饼200张, 那么1小时1个人(1个头)20张饼。

那么5000张饼, 按照这个速度烙下去就需要250个小时, … 阅读全文

从锦囊妙计想到的07–cpu和线程定义、开始

  categories:儿童计算机, 原创, 资料  author:

前面几个, 我们都先回顾了很多内容才开始讲东西, 我们今天变化一下形式, 先讲个故事在说明事情。

着急的关羽

话说关羽写 完  烙饼的锦囊, 然后就同众兄弟一边喝酒, 一边等 张飞 烙好的 大饼, 等呀等, 这四百张饼, 都两个小时也没烙好。

关羽等等 肚子咕咕叫了,  心想 我这个三弟 是个 急脾气, 这次 干事情怎么这么慢, 关羽实在 等地不耐烦了, 迈步不厨房而来。

关羽同学一边走, 一边 大声说着, 三弟,三弟, 这饼烙的  如何这么时间长呀!

张飞听到了, 哭着脸说,  我就一个人, 两双手,已经忙的 不可开交了, 才烙了100张饼

一个人烙饼--累呀

 … 阅读全文

从锦囊妙计想到的06–流程线程总结

  categories:儿童计算机, 原创  author:

知识回顾

1. 分支结构

前面我们已经了解了 分支的情况, 分支做啥?  就是某些不确定的事情,若是甲事情发生,就做同甲相关的事情, 若是乙发生就做同乙相关的事情。

造成不确定的原因是, 在写锦囊的时候 没办法确定“将来” 执行锦囊(指令)的人(计算机)遇到到底啥情况, 因此 做锦囊时(写程序)时, 要考虑到不同情况发生

如下图:

分支结构

 

图中, 我们明确看到了, 两个分支, 分支1, 分支2, 同时在执行分支前, 有个 判断的 东西

上面过程(流程)  用通俗语言可以描述为

 

如果  xxx   情况发生    就做下面的事情

 锦囊x1

  锦囊x2

   等等

否则(就是没有发生上面的情况)就执行下面的事情

  锦囊y1

  锦囊y2

  锦囊y3阅读全文



快乐成长 每天进步一点点      京ICP备18032580号-1