• Java进阶知识


    今天分享有关java方面的知识

    Paradigm

    除了Java语言基础,通常在每种语言中还有很多paradigm,这些paradigm往往是衡量老鸟和新手的地方,比如函数命名,异常处理,泛型等等,下面用异常处理的两种类型来说明,笔者见过很多的Java程序员写过很多年的代码仍然分不清楚其中的区别。

    Checked 和 unchecked exceptions

    Unchecked exceptions
    一般用于表示程序中的Bug, 比如函数调用中的非法参数异常,Java 创始人对Unchecked exceptions的解释是Unchecked exceptions是通常不可以恢复的运行时异常,换句话说,Unchecked exceptions其实就是RuntimeException,常用的Unchecked exceptions有IllegalArgumentException, NullPointerException, 和 IllegalStateException,Unchecked exceptions通常不需要添加到函数签名列表,并且在调用方不需要强制使用try…catch。

    Checked exceptions
    通常用于表示函数执行过程中的一些pre condition 没有得到满足,这些条件通常超出了函数的控制范围,比如无效输入,数据库连接问题,网络异常,文件丢失等问题,Checked exceptions的父类是Exception,Checked exceptions需要添加到函数签名列表,并且在调用方需要强制使用try…catch来捕获Checked exceptions。

    2. 效率和速度

    记得有一次一个朋友的老板和客户谈了一个项目,客户想先看看效果然后做决定某些功能是不是他想要的,于是老板问下面的一个工程师需要多久做出一个demo,这个人想了一天,说最快也要一个月,老板觉得太慢,于是问另外一个工程师,他给出的结论是demo只需要3天,结果3天的确实做完了,而且没有加班。那么为什么差这么多呢,脚本语言,脚本语言可以大幅的提升工作效率,特别是原型设计阶段,下面以Groovy操作XML为例加以说明。假设有很多这样的XML数据需要处理,试想一下如果使用Java会是一番什么样的景象呢。

    复制代码

    Scott Meyers Scott Meyers Stanley B. Lippman Cay S. Horstmann Joshua Bloch

    复制代码

    下面演示一下如何通过Groovy Script驾驭上面那段XML, 输出配对的书名和作者,并且过滤出所有Scott Meyers的著作,可以看出,除了打印输出,几乎所有的需求只要一行代码就可以解决。

    复制代码

    println"–solidmango design start–"
    languages = new XmlParser().parse(‘TestXML.xml’)

    println “Books and authors”

    languages.each {
    println “<<${it.@name}>> authored by ${it.author[0].text()}”
    }

    def languagesByAuthor = { authorName ->
    languages.findAll { it.author[0].text() == authorName }.collect {
    it.@name }.join(', ')
    }

    println"-------------------------"
    println “Languages by Scott Meyers:” + languagesByAuthor(‘Scott Meyers’)

    println"–solidmango design end–"

    复制代码

    输出:

    复制代码

    –solidmango design start–
    Books and authors
    <> authored by Scott Meyers
    <> authored by Scott Meyers
    <> authored by Stanley B. Lippman
    <> authored by Cay S. Horstmann
    <> authored by Joshua Bloch

    Languages by Scott Meyers:Effective C++, More Effective C++
    –solidmango design end–

    复制代码

    谢谢

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【面试题】圣杯布局和双飞翼布局
    数据同步工具DataX从Mysql同步数据到HDFS实战
    在Ubuntu18.04系统下搭建redis 一主(服务器)多从
    Spring Boot 2020 官方基础68课程第24个 gateway
    Python每日一练 07
    找到 K 个最接近的元素
    结合实战,浅析GB/T28181(七)—— 球机云台控制
    mongodb数据同步到hive
    [leetcode] 1675. 数组的最小偏移量 | 思维贪心 | 大疆笔试题
    python绘制方形螺旋 青少年编程电子学会python编程等级考试二级真题解析2021年9月
  • 原文地址:https://blog.csdn.net/m0_67390788/article/details/126059409