自1998年 JDK 1.0(Java 1.0) 发布以来,Java 已经受到了学生.项目经理和程序员等一大批活跃用户的欢迎.这一语言极富活力,不断被用在大大小小的项目里.从 Java 1.1(1997年) 一直到 Java 7(2011年),Java 通过增加新功能,不断得到良好的升级.Java 8 则是在2014年3月发布的.Java 8 所做的改变,在许多方面比 Java 历史上任何一次改变都深远,而且极大的提高了 Java 代码的简洁性. 1. lambda 表达式 本文通过筛选苹果的需…
你将了解行为参数化,这是Java 8非常依赖的一种软件开发模式,也是引入 Lambda表达式的主要原因.行为参数化就是可以帮助你处理频繁变更的需求的一种软件开发模式.一言以蔽之,它意味 着拿出一个代码块,把它准备好却不去执行它.这个代码块以后可以被你程序的其他部分调用.本章通过筛选苹果这个实际需求来一步步引出Lambda表达式,同时我也会把代码贴出来,读完你会看到代码是如何一步一步的向Lambda转化.多代码来袭,保护我方ADC!! 代码演化 1.实习生版本 package com.lujiah…
1. Lambda简介 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 匿名--我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多! 函数--我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类.但和方法一样,Lambda有参数列表.函数主体.返回类型,还可能有可以抛出的异常列表. 传递--Lambda表达式可以作为参数传递给方法或存储在变量中. 简洁--无需像…
1. 流简介 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行处理.让我们来看一个实例返回低热量(<400)的菜肴名称: Java7版本: List<Dish> lowCaloricDishes = new ArrayList<>(); // 用累加器筛选元素 for(Dish d: menu){ if(d.getCalories() &l…
流让你从外部迭代转向内部迭代,for循环显示迭代不用再写了,流内部管理对集合数据的迭代.这种处理数据的方式很有用,因为你让Stream API管理如何处理数据.这样Stream API就可以在背后进行多种优化.此外,使用内部迭代的话,Stream API可以决定并行运行你的代码.这要是用外部迭代的话就办不到了,因为你只能用单一线程挨个迭代. 1. 筛选和切片 1.1 用谓词筛选 该操作会接受一个谓词(一个返回 boolean的函数)作为参数,并返回一个包括所有符合谓词的元素的流.筛选出所有素菜…
传统上,Java程序的接口是将相关方法按照约定组合到一起的方式.实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现. 但是,一旦类库的设计者需要更新接口,向其中加入新的方法,这种方式就会出现问题.现实情况是,现存的实体类往往不在接口设计者的控制范围之内,这些实体类为了适配新的接口约定也需要进行修改. 由于Java 8的API在现存的接口上引入了非常多的新方法,这种变化带来的问题也愈加严重,一个例子就是前几章中使用过的 List 接口上的 sort 方法. 想象一下其他备…
1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法.ALGOL W是第一批在堆上分配记录的类型语言之一.Hoare选择null引用这种方式,"只是因为这种方法实现起来非常容易".虽然他的设计初衷就是要"通过编译器的自动检测机制,确保所有使用引用的地方都是绝对安全的",他还是决定为null引用开个绿灯,因为他认为这是为"不存在的值"建模最容易的方式.很多年后,他开始为自己曾经做过这样的决定而…
某个网站的数据来自Facebook.Twitter和Google,这就需要网站与互联网上的多个Web服务通信.可是,你并不希望因为等待某些服务的响应,阻塞应用程序的运行,浪费数十亿宝贵的CPU时钟周期.比如,不要因为等待Facebook的数据,暂停对来自Twitter的数据处理. 第7章中介绍的分支/合并框架以及并行流是实现并行处理的宝贵工具;它们将一个操作切分为多个子操作,在多个不同的核.CPU甚至是机器上并行地执行这些子操作.与此相反,如果你的意图是实现并发,而非并行,或者你的主要目标是在同…
在Java 1.0中,对日期和时间的支持只能依赖java.util.Date类.同时这个类还有两个很大的缺点:年份的起始选择是1900年,月份的起始从0开始. 在Java 1.1中,Date类中的很多方法被废弃,取而代之的是java.util.Calendar类.然而Calendar类也有类似的问题和设计缺陷,导致使用这些方法写出的代码非常容易出错. DateFormat方法也有它自己的问题.比如,它不是线程安全的.这意味着两个线程如果尝试使用同一个formatter解析日期,你可能会得到无法预…
SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性认识即可 首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Servic…
Chapter 3. Compiling for the Java Virtual Machine 内容列表 3.1. Format of Examples 3.2. Use of Constants, Local Variables, and Control Constructs 3.3. Arithmetic 3.4. Accessing the Run-Time Constant Pool 3.5. More Control Examples 3.6. Receiving Argument…
Strut2中,Action可以不继承任何特殊的类或不实现任何特殊的接口,可以只编写一个普通的Java类作为Action类,只要该类含有一个返回字符串的无参的public方法即可!实际开发中,通常继承ActionSupport类(该类继承了Action接口)来编写Action请求处理类.以下就以普通Java类作为Actoin类进行示例: 项目结构 1.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <…
建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它们都是在运行期解释执行的.为什么Java这种强编译型语言会需要这些脚本语言呢?那是因为脚本语言的三大特征,如下所示: 灵活:脚本语言一般都是动态类型,可以不用声明变量类型而直接使用,可以再运行期改变类型. 便捷:脚本语言是一种解释性语言,不需要编译成二进制代码,也不需要像Java一样生成字节码.它的…
Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge . (2) 对于熟悉C/C++的程序员来说,Java 并不难学,找本书,一两周业余时间就可以搞定了.当然,这里只是指一般编程,想熟悉所有的Java库还是需要些时间的.事实上,Java 只相当于C++的一个改进版,所有的语法都几乎是C++的,很少有变动. (3) 在一般比赛中,Java程序会有额外的时间和空间,而实际上经过实…
一.抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成部分. 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用.而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰. 而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明. 范例:定义一个抽…
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出.Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码.这样有时可读性更好,表达更清晰.在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进步.将进…
今天做springbook项目前端输入日期传到数据库保存报了一下错误 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sun Feb 09 16:31:32 CST 2020 There was an unexpected error (type=Bad Request, status=400). Validation…
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?  可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有没有goto? java中的保留字,现在没有在java中使用. 3.说说&和&&的区别.  &和&…
啥也不说了,实战java虚拟机,好好学习,天天向上!针对自己的软肋制定学习计划. 一部分内容看完,自己做的学习笔记和感想. 学java很简单,但懂java会有难度,如果你的工资还没超过1W,那是时候深入学习一下子了.    边学习边奉上5篇笔记 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实战Java虚拟机之四“禁用System.gc()” 实战Java虚拟机之五“开启JIT编译”  <实战Java虚拟机>一书的…
搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586.exe . 出现选择安装路径,可以根据需要更改安装路径.这里我们使用默认路径,直接下一步. 安装完成. 2.接下来配置环境变量 右键“我的电脑”->属性->“高级”选项卡 点击“环境变量” 我们要配置JAVA_HOME,PATH,CLASSPATH三项属性. 首先,配置 JAVA_HOME 找到我…
来源:http://www.imooc.com/code/1556 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~). Arrays 中常用的方法: 1. 排序 语法:  可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如: 运行结果: 2. 将数组转换…
编译的时候 中出现如下异常: Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0        at java.lang.ClassLoader.defineClass1(Native Method)        at java.lang.ClassLoader.de…
在dos中运行java程序,若出现Exception in thread “main" java.lang.NoClassDefFoundError,可以检查一下几项: 环境变量配置: 注意JAVA_HOME.classpath.path是否配置正确. 格式: 编译: javac HelloWorld.java 执行: java HelloWorld,不需要带扩展名“class” 同时注意大小写,Java是大小写敏感的 执行路径: javac应该在工程的根目录下执行,若java文件在某个包中,需…
异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.IllegalStateException: Cannot conver…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http://blog.sina.com.cn/s/blog_639403840100i5rt.html 下面先来了解一下什么是dos吧 dos 我们使用计算机接触最频繁的就是DOS.DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”,顾名思义,DOS主要是一种面向磁盘的系统软…
出现java cannot find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 主要的愿意是因为没有jstl的jar包,如果你里面有了,那么可能是版本的问题,j2ee版本如果是1.4那么就要加jstl.jar包,如果是以上就不用加了,还有一个问题是jstl.jar包版本的问题,如果你里面是jstl1.1那么http://Java.sun.com/jsp/jstl/core就是这样,如果是1.0那…
原地址: http://bbs.chinaitlab.com/dispbbs.asp?boardid=148&id=34276 国内: www.chinajavaworld.com-论坛人很多,高手也多,不过好像都在潜水      www.cn-java.com-也很不错,文章很好,但是就是商业性浓了点.      www.chinaitlab.com-非常有系统性,而且推出的java远程教育是中国最全面的scjp远程教育. www.huihoo.com-灰狐动力,有个jfox,而且很多关于企业…
Java内存模型是保障多线程安全的根基,这里不过认识型的理解总结并未深入研究. 一.什么是内存模型,为什么须要它 Java内存模型(Java Memory Model)并发相关的安全公布,同步策略的规范.一致性等都来自于JMM. 1 平台的内存模型 在架构定义的内存模型中将告诉应用程序能够从内存系统中获得如何的保证,此外还定义了一些特殊的指令(称为内存栅栏或栅栏),当须要共享数据时,这些指令就能实现额外的存储协调保证. JVM通过在适当的位置上插入内存栅栏来屏蔽在JVM与底层平台内存模型之间的差…
1.java 使用Class对象来执行其RTTI.java 中每个类在编译后都会对应产生一个Class对象(更恰当地说是被保存在一个同名的.class文件中),甚至void和基本类型也都对应一个class对象. jvm使用类加载器来将所需要的类动态的加载到JVM.所有的都是在第一次使用时动态加载到JVM中.当程序创建第一个对类的静态成员引用时,就加载这个类.构造器也是类的静态方法,即使没有static关键字,因此在使用new操作符创建新对象时也会被当做对类的静态成员的引用. 类加载其首先加载这个…