黑马程序员Java培训、Android培训_银行业务调度系统笔记
银行业务调度系统
一、学习心得:
第一点,和交通灯系统一样,银行业务调度系统也必须用面相对象的思想来设计,不然会很繁琐。所以,必须在平时的学习中重视面向对象设计的练习和掌握。
第二点,要设计这个银行业务系统,就要将这个银行的业务搞明白,细节之处不能忽视,比如这几个问题的解决,这么多业务窗口,怎么知道谁是客户,该叫哪一个号呢?明明是有三种不同类型的客户,普通客户、快速客户、VIP客户,肯定是按三种不同类型排号的,但银行明明没有过那么多的排号机器啊,号码机器是不是应该只有一个啊?不细心观察银行的业务,是不会注意到这些的,就像之前的交通灯系统设计中一样,如果不是老师提醒,我还真没注意:红灯之后立刻就是绿灯,而不经过黄灯这个过程的。所以分析问题得仔细,平时就该养成对待事物多观察多思考的习惯。
第三点,要简化无关项,集中问题落脚点。至于什么的客户才算普通客户,什么样的客户算快速客户?我们没必要深究,只要知道客户在号码管理机器上选择了相应的操作信息 后,我们就知道他是什么样的客户了。
二、银行业务调度系统分析及设计过程:
这个系统最终要达到的工作过程是这样的:客户来了之后,通过号码机器选择号码,与此同时,业务窗口要循环向号码机器要号码,当客户选择一个号码后,业务窗口就可以从号码机器中读取到一个号码,然后通知这个客户到窗口办理业务。业务窗口收到一个号码并成功接收一个客户到他的窗口办理业务时,就停止向号码机器要号码。再来客户时,号码机器就把号码分配给别的业务窗口。在程序的相应地方,要根据业务的不同,打印显示一下业务和客户信息,以便验证程序的正确性。
从这个过程中,不难分析出,有三个模块需要设计。产生号码的模块、分配管理号码的模块和业务窗口的模块,在理解和分析过程中,可以用画图的方式来分析,这样清楚明白,方便理解:
在实际写代码过程中,以下几点要注意掌握和理解:
1、 自己要熟练掌握好单例的设计:
自行提供这一个实例并向整个系统提供这个实例
模式一:饿汉式单例:
private numberMachine(){}
public static NuberMachine getInstance(){
return instance;
}
private static NumberMachine instance = new NumberMachine();
模式二:懒汉式单例
public class numberMachine() {
private static NumberMachine instance = null;
public static synchronized NumberMachine getInstance() {
if (instance==null)
instance=new NumberMachine ();
return instance;
}
}
2、Executors类启动管理线程:
1 public static ExecutorService newCachedThreadPool()
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将它们重用。
2 public static ExecutorService newFixedThreadPool(int nThreads)
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
3 public static ExecutorService newSingleThreadExecutor()
创建一个使用单个线程的 Executor,以无界队列方式来运行该线程。
这三个方法都可以配合接口ThreadFactory的实例一起使用。并且返回一个ExecutorService接口的实例。
4接口 ThreadFactory
根据需要创建新线程的对象。使用线程工厂就无需再手工编写对 new Thread 的调用了,从而允许应用程序使用特殊的线程子类、属性等等。
此接口最简单的实现就是:
class SimpleThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) { return new Thread(r); }
}
5. 接口ExecutorService该接口提供了管理终止的方法。
3、if else和Switch语句效率比较:
如果要深入验证比较两者的效率,个人现阶段掌握的知识不够,通过网友的邮箱例子比较分析,得到以下结论(来着互联网):
(1)switch的效率一般比if-else高 ;switch 效率高, 从汇编代码可以看出来switch 只计算一次值,然后都是test , jmp, if...else 是每个条件都要计算一遍的;
(2) switch的效率与分支数无关 ;
(3) 当只有分支比较少的时候,if效率比switch高(因为switch有跳转表),分支比较多,switch效率要高。
4、使用List比使用ArraList好处多:
private List<Integer> queueNumber = new ArrayList <Integer>();
一般情况下,如果没有必要,推荐代码只同List,Map接口打交道。
这样做的原因是list就相当于是一个泛型的实现,如果想改变list的类型,只需要: List list = new LinkedList();//LinkedList也是List的实现类,也是ArrayList的兄弟类。
这样,就不需要修改其它代码,这就是接口编程的优雅之处.
另外,如果在类的方法中声明:private void queueNumber (List list){}
这个方法就能能处理所有实现了List接口的类,一定程度上实现了泛型函数.
黑马程序员Java培训、Android培训_银行业务调度系统笔记相关推荐
- 黑马程序员Java零基础视频教程_下部(P52-P134)
黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...
- 黑马程序员Java零基础视频教程_下部(P135-P200)
黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...
- 黑马程序员Java零基础视频教程_上部(P1-P80)
黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...
- 2023年黑马程序员Java学习路线图
2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...
- 黑马程序员 JAVA WEB 第三节 MYSQL 约束
这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记.希望可以帮助跟我一样正在学习Java web的同学们.我们一起进步. b_d 若果有同学也想学习黑马程序员Java w ...
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
- 黑马 程序员——Java基础---IO(下)
黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...
- 黑马程序员——Java字符流、字节流IO流
黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
最新文章
- flowable工作流_【程序源代码】Springboot开源工作流开发框架
- python 特性和方法同名_Python语言特性的梳理
- 轻松进行iPad Safari设置
- 已知数据信息为 16位,最少应附加( )位校验位,以实现海明码纠错。
- 虚拟机测试必备虚拟机之VirtualBox 使用
- Android四级缓存,RecyclerView的四级缓存-初探
- 常用Flex IOC框架比较分析【转载】
- (转)CentOS 和 Ubuntu 下的网络配置
- php编程 之php基础 表单
- 查看SQLSERVER内部数据页面的小插件Internals Viewer
- 408考研复试之计算机组成原理笔记第一二三章
- Yandex安装第三方crx插件的方法
- 电源 PFC(功率因数校正)电路拓扑,共计100多份,内含A PFC,连续断续,交错,维也纳,各功率段的PFC电路,还有电感 设计选型
- 【iOS】越狱入门梳理
- java自我介绍_口语化java自我介绍
- 转发 :QQ游戏百万人同时在线服务器架构实现
- 知云文献翻译打不开_科研星火 | 基础技能——翻译篇
- nginx【nginx跨域、nginx开启gizp压缩、nginx服务器部署项目】
- ssm基于微信小程序的电影影评交流平台系统 uni-app
- eureka + kafka +zookeeper
热门文章
- UGA内存泄露问题 ORA-600 [729] Space Leak Errors [ID 403584.1]
- Spark调优、DataFrame API使用、大表Join、动态分区
- ros中的map_server package分析
- 东北大学OJ-1229: 实验4-1 :华氏摄氏温度转换(顺序结构)
- 台湾精锐APEX行星减速机行业应用案例
- 机器视觉检测技术在汽车行业中的应用
- Python 搭建云服务和小程序“云办公”
- 图形验证码实现和判断并点击验证码切换
- java中遍历数组_java循环取数组值
- pdf解析,获取字段数据