第十一讲 脚本
大家好。我前两年意识到一件事情,就是Java里面有一个很好的功能许多人没有注意到,而要做大型一点的系统或者是做扩展性好一点的系统却都会用到,那就是脚本(script)技术。

学技术之前,还是先看场景。

我们做的应用系统里面,经常需要设置一些业务规则。比如权限控制,不管是网络层的防火墙还是应用层的数据权限,一般用户是希望设置一个规则,网络权限像IP between 192.168.2.101 and 192.168.2.149,像port=80 or port=8080 or port=21等,数据权限像level>3 and department in (‘’IT,’ADMIN’)等。还有一些计算方法,不希望写死在代码中,而是拉出来让用户自己配置,比如算保费,可能是根据一堆条件和计算公式算出来的,更关键的是每年可能都会有改动,修改源代码自然可以,但是如果把计算公式设计成可以配置的,系统就更加灵活,可扩展了。

应用程序员的一大痛苦就是要面对每天不断的需求变化,有的时候令人崩溃。国内企业习惯把系统打成一个包,不管付出多少劳动都是这个包的价格,用户不断加内容,不断修改,觉今是而昨非,而销售部门觉得不就是这么一点改动吗,还不对人好一点?于是程序员们只好不停地修改,疲于奔命,还不落好。我的一位前任公司领导曾开玩笑地跟我说:“看你们程序员一个个天天咬牙切齿,一副很努力工作的样子,也产出不来什么东西。你们都在干什么呀?”

从那个时候开始,我就在想,能不能把这些权限规则、计算公式、流程之类的都外部化为配置文件,让用户自己定义ÿ

《Java编程十五讲》第十一讲:脚本相关推荐

  1. Java语言十五讲(前言)

    特此声明:本文为本人公司郭总原创书籍的前言,该书已出版,传送门 ->>>>Java编程十五讲 本人微信公众号内已更新完成.喜欢学习的小伙伴可以搜索微信公众号:程序员Hotel ...

  2. Java语言十五讲(第十二讲 Multi-Thread多线程12.2)

    实例变量如balance在线程间是共享的.有的时候,我们真的需要线程级别的变量,不希望共享,也是有办法的.Java里面有ThreadLocal变量. 比如,我们的线程从inventory里面拿东西,上 ...

  3. Java语言十五讲——前言

    前言 每年技术媒体都会评选最受欢迎的编程语言,Java总是高居前位.自然,没有办法说一个语言绝对比另一种语言好,这个话题一如既往地会引起大家无谓的争论不休.对别的行业的人来讲也许会觉得莫名其妙,但是对 ...

  4. [丁奇四十五讲]第8讲学习笔记

    1.事务开启类型 begin/start transaction到具体的语句再开启事务 start transaction with consistent snapshot直接开启事务 非显式运用be ...

  5. [丁奇四十五讲]第9讲学习笔记

    普通索引和唯一索引 1.索引类型 index:普通索引 unique:唯一索引(查找到第一个满足条件的记录之后,就会停止) primary key:主键索引​ foreign key:外键索引 inn ...

  6. C++面向对象高级编程十九讲

    文章目录 0 背景 1 内容 0 背景 因为本人的C++基础不是很扎实,很多面向对象的基本语法掌握的不是很熟练,导致写程序出错时,经常会犯错,于是就去网上找到了侯捷老师的C++课进行观摩学习. 本文是 ...

  7. Java基础第一讲:Java的故事和Java编程环境搭建

    { Android学习指南 } 适于自学的ANDORID学习指南,基于ANDROID 2.2.2.3.3及3.0版本讲解 <ANDROID学习指南>目录 RSS Java基础第一讲:Jav ...

  8. java的网络编程有用吗_十大有用但又偏执的Java编程技术

    java的网络编程有用吗 经过一段时间的编码(以我为例,大约20年左右,当您玩得开心时光飞逝),人们开始接受这些习惯. 因为,你知道... 任何可能出错的事情都会发生. 这就是为什么人们会采用&quo ...

  9. 十大有用但又偏执的Java编程技术

    经过一段时间的编码(以我为例,大约20年左右,当您玩得开心时光飞逝),人们开始接受这些习惯. 因为,你知道... 任何可能出错的事情都会发生. 这就是为什么人们会采用"防御性编程" ...

  10. Java编程思想第四版——第十五天

    2012-04-23 121-131/913 Java编程思想第四版--第十五天 5.5.3 终结条件 通常不能指望finalize(),必须创建其他的"清理"方法,并明确的调用它 ...

最新文章

  1. 翻转单词顺序与左旋转字符串
  2. Lottie开源动画库
  3. 三维数组设置索引_10-Unity入门学习之C#基础9「数组」
  4. 刺激战场战斗服务器无响应,绝地求生刺激战场网络异常怎么办 波动异常解决...
  5. 分布式理论和分布式一致性协议
  6. 机器学习实战(九)K-means(K-均值)
  7. 1从控制台输入年份,判断是闰年还是平年;
  8. android UI 标签
  9. php bc gmp,php中ipv6转纯数字和反转
  10. Html中代码换行造成空格间距的问题
  11. mysql损坏打不开_mysql 断电导致表打不开解决方案
  12. 红宝书第四版的一个错误?
  13. 在西安参加Java培训该怎么学习?
  14. 问答网站Stack Overflow的成功之道
  15. t台式计算机如何安装2个硬盘,台式机械硬盘怎么安装?机械硬盘安装图解教程(SATA固态可参考)(2)...
  16. pbe服务器无限火力模式,LOL4月9日PBE更新:无限火力模式上线!
  17. 达芬奇密码 第八十二章
  18. JavaScript时间格式化
  19. 【AMD、CMD和CommonJS】
  20. html密码框ml表单文本框,表单组件 PasswordInput 密码输入框 - 闪电教程JSRUN

热门文章

  1. Centos linux 修改ip地址
  2. 用python求3的阶乘_Python 阶乘实例 - Python 3 基础教程
  3. 翻译PDF 翻译PPT 保留原格式 一键搞定
  4. linux下制作dos启动u盘启动,在Linux系统下创建FreeDOS可启动U盘
  5. Office2013 及 WPS 设置护眼文档颜色方法
  6. 数学【1】:矩阵特征值与特征向量的求法
  7. 2017年网易校招Java面试题
  8. 【Pycharm】安装及激活、界面调整、导入anaconda的依赖库、字体设置微软雅黑
  9. 技嘉ide模式怎么改,电脑BIOS中怎么设置硬盘为IDE模式
  10. linux三星电脑开机怎么进入页面,三星Samsung笔记本电脑开机进入BIOS的方法与BIOS设置全功能菜单(F2)...