从锦囊妙计想到的22–逐步细化的办法解决复杂问题

  categories:儿童计算机  author:

前面的18,19,20,21都在围绕图形输出的功能来进行说明一些事情, 为什么画了这么多时间来说明一个问题?

因为这个问题非常重要!  是输出吗?  当然不是, 而是一种思想:  总体看问题=》划分为若干的零散的部分=》每个零散的部分独立考虑=》零散的实现=》整体检验是否合适

总结一下就是, 不断的 总=》分=》总的一个   不断的重复的过程!

一个重要的事情, 至少要说3遍以上才会有印象, 更多次的训练才慢慢加深影像!

那么18中到底说的是什么? 18中有很多打印输出的内容!  确实是的, 因为我们要说明问题, 必须有一个实际的例子, 而最实用, 最简单的一些 可以看到的东西就是计算机的 输出了!  在比这个简单的不好找, 就算找到也未必比这个更实用! 因为我们后面写程序中会到处用到屏幕输出的!!!

在18中, 要了解到, 屏幕输出是 从左到右,从上到下,  在输出时就像一个流从左向右流动, 知道遇到换行符号, 会从上一行流到下一行的 左边, 然后在从左到右流动,一直进行, 知道屏幕满了, … 阅读全文

从锦囊妙计想到的21–函数参数法控制输出

  categories:儿童计算机  author:

前面18,19,20都在围绕图形输出进行说明, 本文仍然采用类似的方法进行说明。

为什么老是围绕字符输出进行说明?

1. 字符输出简单, 是计算机编程里面最简单的有输出的方法之一了

2. 字符图形输出是可以看到的, 这样程序编写的是否正确马上能看到

3. 通过不但修改您编写的称, 您可以体会程序中的各种情况

4. 最后程序输出是以后调试程序的必不可少的技能

本文的内容还是输出一个图形, 现在输出图形如下:

一。 分析图形特点

还是按照前面的文章的办法, 我们要分析一下这个图形输出的特点

如上图, 图形由多行组成, 因此最简单的办法, 是一行一行的输出

如下图

二。编写文档说明程序的实现方法

我们可以定义

函数f1输出  第一行,

函数f2输出 第二行,

。。。

函数f6输出  第六行。

最后需要一个主函数, 然后调用这些函数

如下:

main(){

f1();

f2();… 阅读全文

流程图的绘制流程分享

  categories:资料  author:

近来一段时间,忙于整理业务流程图,期间,关于流程图的绘制方法和工具也与内部团队和外部做了心得交流,恰好,个人生活也牵涉在买房,婚礼,户口迁移等流程中。不知不觉,伴随着实践与反思,个人所得的系统知识趋于完整,今儿天气极好,坐在飘窗一隅,听着间或几声鸟鸣歌唱,偶尔瞥一眼窗外的遍地绿荫,真真觉得是个写点什么的日子。所以就整理成文,如果恰好对你有所帮助,那是真真好的。

真实整理的流程牵涉到公司未公布的计划,不好公开,所以在本文中会借助一个简单的案例替代(这个案例呢,也就是计划写本文前30分分钟才想到的,如有考虑不周,请各位见谅),但是仅传达概念和方法,倒也足够了。恩,甄環体告一段落,咱们开始吧。

224A61255-0

图1 用即时贴与白板做的简单流程图

本文会包含几块内容:

  1. 什么是流程图?流程图和其他图表(如线框图,概念图,架构图,用例图)有什么不同?
  2. 为什么需要流程图?
  3. 流程图的分类?
  4. 如何绘制流程图?
  5. 流程图绘制工具

视篇幅情况,会在行文时略加划分为系列,敬请关注并多多交流。

第一部分:什么是流程图?

1. 定义

了解一个事情,我习惯从它的定义开始。至于为什么,可以参见我之前的博客文章:点击查看

我们因为厌恶十年教育,厌恶背各种定理和定义,所以我发现生活中和工作中很多人都很讨厌给一个事情下定义以及去参考定义。所以你会发现很多人在一起争吵得不可开交,仔细去听,原来是鸡同鸭讲,根本不在一个频道上。对于一个事情的描述,没有一个共同的语言,没有所谓的术语。有定义很好办,你们共同引用一个定义,发现定义有问题,OK,去补充这个定义,并扩展到更多的人群。当然,任何事情过犹不及,我们相互提醒吧。

那什么是流程图呢?说文解字是一种了解定义的好方法。流程图=流程+图,如下图:

224AC227-1

图2 流程图的定义

流程:Flow,是指特定主体为了满足特定需求而进行的有特定逻辑关系的一系列操作过程,流程是自然而然就存在的。但是它可以不规范,可以不固定,可以充满问题。所以就会造成看似没有流程。前不久,团队每个人对接一个业务团队去调研流程,反馈给我的流程有一些缺失。询问时,负责人反馈给我的答复是:这一块业务他们没有流程。其实严格意义上讲,业务已经开展,不可能没有流程,只是说没有固定的流程或者你调研的对象也讲不清楚。

图:Chart 或者 Diagram, 是将基本固化有一定规律的流程进行显性化和书面化,从而有利于传播与沉淀、流程重组参考。

从定义可以看出,只要有事情和任务,流程就会有,但是并不是所有的流程都适合用流程图的方式去表现,适合用流程图去表现的流程是一定程度固定的有规律可循的,流程中的关键环节不会朝令夕改的。

2. 流程图与其他图表的对比

工作中我们还用到或听到很多其他类型的图表,比如交互设计师们经常说的线框图(Wireframes),信息架构图或站点地图(Site Map),,开发工程师们经常说的用例图(Use Case)或E-R图。这些不同的图表要表达的内容有何种差异呢?简单做个对比,如图:

224A632b-2

图3 流程图VS其他常用图表

如果要串到某一个项目来说,可以理解成:

用例图(Use Case):表现了一个角色在系统里要完成的活动是什么,比如用户这个角色与ATM取款机的交互过程中,用户需要完成的活动有存钱,取钱,查询等。而存钱这个活动再可以进一步细分为插卡,输入密码,输入金额,ATM吐钞,用户收款,退卡等活动。用例图可以不考虑用户动作的前后次序,而仅仅提取一些关键的动宾短语,映射出系统应该满足的功能点。常用用例图的人是产品经理和开发工程师。

流程图则表示用户每一个活动的前后次序,比如用户必须要先插入银行卡,才能够输入密码,且流程图必须直接表现出各种异常判断,比如当密码错误时,出现什么提示,密码输入错误超过多少次时,出现什么提示和动作。常用流程图的人是产品经理,设计师,或者任何需要讲述业务如何运作的人。… 阅读全文

从锦囊妙计想到的20–在计算机屏幕打印输出

  categories:儿童计算机  author:

前面, 18和19都是围绕计算机屏幕的输出和输入进行的, 本文在进一步说明一下, 主要围绕编写应用程序进行说明

一。 计算机屏幕的坐标

默认的计算机屏幕的坐标情况如下:

通常情况下, 计算机屏幕没有 格着

真正的情况如下:

有了上述事实后, 我们好分析如下程序的编写

二。编写程序在屏幕输出上述的用“*”组成的矩形

一) 分析一下

1. 首先是要在计算机屏幕上输出字符, 并且字符有要求

既然在屏幕上输出, 那么就需要到  System.out

2. 输出的图形由多行组成

3. 每个行由多个字符组成

因此基于上面我们就可以进行如下工作

二) 谋划如何进行

基于上面的系统分析情况计划进行如下

如上图, 采用一行一行的方式进行打印, 然后没行依次打印字符, 最后打印换行字符

三)。 实现代码

如下图

上图是程序执行结果,和部分代码  参考代码: OutputJx阅读全文

从锦囊妙计想到的19–计算机输出和输入

  categories:儿童计算机  author:

前面的第18说明的计算机的输入和输出等一下事情, 然后举列了打印一个图形, 后来回头看了一下, 感觉说的不太清楚, 因此在那在补充一下, 同时在介绍点其他的东西

一。 计算机的输入和输出工作

一个计算机总要有输入的, 否则没办法接受用户的命令, 也要有输出的, 否则没办法告诉用户 结果是什么! 如下图:

如上图, 计算机中的键盘是典型的输入设备, 鼠标也是典型的输入设备

这个是键盘

这个是鼠标

如下图的几个设备都是输入设备, 功能类似鼠标

一般笔记本上比较多。

二。 输入的回显

一般情况下, 人们在操作电脑进行输入时, 很有可能会发生错误, 主要是键盘比较小, 或是鼠标有时候不灵敏等,因此我们如何知道我们输入的数据是正确的?

因此通常情况下, 计算机会把您在键盘的输入的数据显示到计算机屏幕上, 这样您就可以立即发现您的输入是否正确了, 正确您继续输入下一个, 错误了, 您可以返回去修改信息, 然后在输入下一个数据。

鼠标也类似, 鼠标在屏幕上有一个指针式的东西, 移动鼠标时, 指针也移动因此您就知道您在哪里了, … 阅读全文

Android 中如何发送自定义广播

  categories:资料  author:

1 发送标准广播

先新建一个广播接收器用于来接收自定义的广播:

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"接收到自定义的广播",Toast.LENGTH_SHORT).show();
    }
}

然后修改 AndroidManifest.xml 文件,注册要监听的自定义广播(假设是 net.deniro.android.MY_BROADCAST):

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
阅读全文

Android Fragment的用法

  categories:资料  author:

1、碎片是什么

碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛。虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为它和活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。你甚至可以将碎片理解成一个迷你型的活动,虽然这个迷你型的活动有可能和普通的活动是一样大的。

那么究竟要如何使用碎片才能充分地利用平板屏幕的空间呢?想象我们正在开发一个新闻应用,其中一个界面使用ListView展示了一组新闻的标题,当点击了其中一个标题,就打开另一个界面显示新闻的详细内容。如果是在手机中设计,我们可以将新闻标题列表放在一个活动中,将新闻的详细内容放在另一个活动中,如图1所示。

可是如果在平板上也这么设计,那么新闻标题列表将会被拉长至填充满整个平板的屏幕,而新闻的标题一般都不会太长,这样将会导致界面上有大量的空白区域,如图2所示。

因此,更好的设计方案是将新闻标题列表界面和新闻详细内容界面分别放在两个碎片中,然后在同一个活动里引入这两个碎片,这样就可以将屏幕空间充分地利用起来了,如图3所示。

2、碎片的使用方式

新建一个FragmentTest项目,然后开始我们的碎片探索之旅吧。

新建一个左侧碎片布局left_fragment.xml,代码如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button 
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Button"
        />
    
</LinearLayout>

这个布局非常简单,只放置了一个按钮,并让它水平居中显示。然后新建右侧碎片布局right_fragment.xml,代码如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00"
    android:orientation="vertical" >
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="20sp"
        android:text="This is right fragment"
        />
    
阅读全文

Kafka Consumer的底层API-SimpleConsumer

  categories:资料  author:

来源:http://blog.csdn.net/suifeng3051/article/details/38657465

1.Kafka提供了两套API给Consumer

  1. The high-level Consumer API
  2. The SimpleConsumer API
第一种高度抽象的Consumer API,它使用起来简单、方便,但是对于某些特殊的需求我们可能要用到第二种更底层的API,那么先介绍下第二种API能够帮助我们做哪些事情
  • 一个消息读取多次
  • 在一个处理过程中只消费Partition其中的一部分消息
  • 添加事务管理机制以保证消息被处理且仅被处理一次

2.使用SimpleConsumer有哪些弊端呢?

  • 必须在程序中跟踪offset值
  • 必须找出指定Topic Partition中的lead broker
  • 必须处理broker的变动

3.使用SimpleConsumer的步骤

  1. 从所有活跃的broker中找出哪个是指定Topic Partition中的leader broker
  2. 找出指定Topic Partition中的所有备份broker
  3. 构造请求
  4. 发送请求查询数据
  5. 处理leader broker变更

4.代码实例

  1. package bonree.consumer;
  2. import java.nio.ByteBuffer;
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import
阅读全文

关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较

  categories:资料  author:

ViewPager
ViewPager类提供了多界面切换的新效果。新效果有如下特征:
[1] 当前显示一组界面中的其中一个界面。
[2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。
[3] 滑动结束后,界面自动跳转到当前选择的界面中
ViewPager来源于google 的补充组件android-support-v4.jar,位置在androidSDK文件夹
android-sdks\extras\android\support\ 下
将android-support-v4.jar 引用到项目中
注:该包需要在Android SDK Manager中额外下载Extras下的Android Support package,
或直接下载该jar包到项目中引用
引入后可直接当作控件在项目中使用。
配置文件页面文件

<android.support.v4.view.ViewPager
android:id=”@+id/viewPager1″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:layout_centerVertical=”true” />

初始化控件
viewPager1 = (ViewPager) findViewById(R.id.viewPager1);
viewPager1.setAdapter(new PageAdapter(new ArrayList<View>()));
配置适配器的页面变化事件

viewPager1
.setOnPageChangeListener(new OnPageChangeListener() … 阅读全文

安卓 LayoutInflater详解

  categories:资料  author:

Android LayoutInflater详解

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

具体作用:

1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

LayoutInflater 是一个抽象类,在文档中如下声明:

public abstract class LayoutInflater extends Object

获得 LayoutInflater 实例的三种方式

  1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater()
  2. LayoutInflater inflater = LayoutInflater.from(context);
  3. LayoutInflater inflater = (LayoutInflater)context.getSystemService
                          (Context.LAYOUT_INFLATER_SERVICE);

其实,这三种方式本质是相同的,从源码中可以看出:

getLayoutInflater():

Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码:

public PhoneWindow(Context … 阅读全文



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