在C#中,微软基于IEnumerable接口,提供许多便捷的扩展方法,便于实际的开发.在Java 1.8中,Collection接口新增了default stream方法.我们可以针对java集合,在stearm()上,可以使用链式函数式编程. 一.外部迭代 首先调用iterator方法,产生一个新的Iterator对象,进而控制整个迭代过程.(迭代过程通过显示调用Iterator对象的hasNext和next方法完成迭代) public static void main(String[] ar…
default出现的原因 Java 8中对API最大的改变在于集合类,Java在持续演进,但是它一直保持着向后兼容. 在Java 8中为Collection接口增加了stream方法,这意味着所有实现Collection接口的类都必须实现stream方法.这时候问题在于:核心自带的类能轻松在JDK实现,但是如果是我们平时自定义的集合类,我们是否需要一个一个的去修改代码? Java 8为了解决这个问题,在Java 8中添加新的语言特性:默认方法 1.默认方法(default) 这时候给Collec…
1.并发与并行的区别 并发: 一个时间段内有几个程序都处于已启动到运行完毕之间,且这几个程序都是在同一个处理机上运行.但在任一个时刻点只有一个程序在处理机上运行 并行: 在同一个时刻,多核处理多个任务.把工作拆分,同时在多核CPU上执行 2.parallelStream及parallel 在C#中,有Parallel类提供并行编程,同样在Java 8中针对Stream,Java 8也提供了parallelStream并行化编程. 2.1C#的Parallel static void Main(s…
C#中系统提供了许多IEnumerable的扩展方法.同样在Java 8中新引入了Collector类. 1.方法引用 定义: 简而言之:就是一个Lambda表达式.在Java 8中,我们我们会使用Lambda表达式创建匿名方法.但是更多的时候,我们的Lambda表达式可能需要调用一个已存在的方法.这时候我们可以通过个一个方法名字来引用已存在的方法会更加清晰. 语法: Classname::methodName 与C#的类比: 类似C#的委托.C#的委托其实就是方法的指针.而在Java 8中,方…
函数接口介绍 在Java1.8中,新增了Lambda表达式.在.net3.5(C# 3.0)在原先的匿名方法基础上演变出了Lambda表达式.学过C# Lambda表达式的同学,对于Java的Lambda表达式就不会太陌生. 在Java中,没有委托的概念,为了配合Lambda表达式,Java推出了函数接口这个概念,来作为Java Lambda表达式的类型. 1. 函数接口定义: 函数接口是只有一个抽象方法的接口,用作于Lambda表达式的类型 注解: 1.在所定义的接口类上加上@Function…
上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作: 一. 插入一条数据 1.首先编写USER.XML(表的xml)使用insert元素,元素写在mapper中: <insert id="insertitem" parameterType="cn.qkp.po.user"> INSERT INTO user(username,birthday,sex,address) VALUES(#{username},…
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了解Groovy的朋友不妨去看看我Blog中的 Groovy分类 .下面我将通过Groovy与Java的比较,解开Groovy的神秘面纱.Ready? Start! 注意:本教…
[编者按]在之前文章中,我们介绍了 Java 8和Scala的Lambda表达式对比.在本文,将进行 Hussachai Puripunpinyo Java 和 Scala 对比三部曲的第二部分,主要关注 Stream 和 Collection,本文由 OneAPM 工程师编译整理. 首先,为大家做一个简短的介绍,collection 是有限的数据集,而 stream 是数据的序列集,可以是有限的或无限的. Streams API 是 Java 8 中新发布的 API,主要用于操作 collec…
转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了解Groovy的朋友不妨去看看我Blog中的 Groovy分类.下面我将通过Groovy与Java的比较,解开Groovy的神秘面纱.Ready? Start! 注意:本教程是针对Groovy最新版本编写的 Groovy和Java的相同点有:0+, 3+, 4+, 6+, 8+, 10+, 12+,…
本篇文章继续介绍Java 8的另一个新特性--Stream API.新增的Stream API与InputStream和OutputStream是完全不同的概念,Stream API是对Java中集合操作的增强,可以利用它进行各种过滤.排序.分组.聚合等操作.Stream API配合Lambda表达式可以加大的提高代码可读性和编码效率,Stream API也支持并行操作,我们不用再花费很多精力来编写容易出错的多线程代码了,Stream API已经替我们做好了,并且充分利用多核CPU的优势.借助S…
轻松入门vue系列 Vue组件化开发 五.组件化开发 1. 组件注册 组件命名规范 组件注册注意事项 全局组件注册 局部组件注册 2. Vue调试工具下载 3. 组件间数据交互 父组件向子组件传值 props传递数据原则:单向数据流. 子组件向父组件传值 非父子组件之间传值 4. 组件插槽 基本用法 具名插槽用法 作用域插槽 组件化思想:标准.分治.重用.组合 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码 五.组件化开发 1.…
转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力-(本文的demo源码已上传至github:https://github.com/iOSGeek0829/XSurfing) 一.Swift常用语法 Swift是Apple去年推出的一门新的语言,基于…
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线. 所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程.今天我们要讲的是,…
AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs轻松入门(二)数据绑定 AngularJs轻松入门(三)MVC架构 AngularJs轻松入门(四)模块化 AngularJs轻松入门(五)过滤器 AngularJs轻松入门(六)表单校验 AngularJs轻松入门(七)多视图切换 AngularJs轻松入门(八)Cookies读写 Angular…
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文将演示的是一个基于MINA2的UDP服务端和一个标准UDP客户端(Java实现)双向通信的完整例子. 实际上,MINA2的官方代码里有完整的UDP通信Demo代码,但Demo里客户端是需要依赖MINA2的客户端库的,而如果简单地去掉MINA2的li…
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/17/104391.html Groovy轻松入门--搭建Groovy开发环境 多日来,我发表了多篇关于Groovy的文章,想必大家对Groovy或多或少已经有所了解,今后我会抽空写些Groovy入门性质的文章,供大家参考. 由于时间仓促,水平有限,不足之处请各位朋友多包涵提点,谢谢. 既然是入门,我先不介绍那些IDE的东西,比如Eclipse中的Groovy插件(如果您迫不及待的话,可以先看…
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试:且看一个简单例程 2.1 引子 2.2 例程实作 2.3 历史的评价 2.4 如何运行 作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心 并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机会为ST…
1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我们用微信和别人聊天也依赖它,我们玩网络游戏时依赖它,读者们能够阅读这篇文章也是因为有它在背后默默地支持着网络通信. 本篇文章依然尝试使用动画图片的方式,来对这个知识…
Java编程一天入门 v0.0.1 alpha 共享协议 本作使用署名-非商业使用-禁止演绎协议共享. 前言 Java入门代码用中文写(举例如下)更能被新手理解. 由于至今没有看到类似教程, 在此抛砖引玉. 欢迎指正/批评/意见/建议. public class 小孩类 extends 人类 { String 想做的事 = "大人的事"; public 小孩类(String 姓名, int 年龄) { super(姓名, 年龄); } public void 长大() { System…
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java 字节码都在你面前,它是 Java 虚拟机的基础. 总监.管理者和非技术人员可以放轻松点:他们所要知道的就是开发团队在正在进行下一版的开发,Java 字节码默默的在 JVM 平台上运行. 简单地说,Java 字节码是 Java 代码(如,class 文件)的中间表现形式,它在 JVM 内部执行,那么…
脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?     http://www.52im.net/thread-1732-1-1.html   1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我…
Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁.死循环.请求外部资源导致的长时间等待等. 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么…
Java的多线程 简单入门 首先能够先搞清楚什么是程序.进程.线程,以及它们之间的关系: 定义: 一 程序仅仅是一组指令的有序集合.它是静态的 二 进程是具有一定独立功能的程序关于某个数据集合上的一次执行活动,是系统进行资源分配和调度的一个独立单位. 三 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立执行的基本单位.线程自己基本上不拥有系统资源,仅仅拥有一点在执行中不可缺少的资源(如程序计数器,一组寄存器和栈),一个线程能够创建和撤销还有一个线程: 进程与线程差别与联…
Netty入门二:开发第一个Netty应用程序 时间 2014-05-07 18:25:43  CSDN博客 原文  http://blog.csdn.net/suifeng3051/article/details/25238243 主题 Netty 既然是入门,那我们就在这里写一个简单的Demo,客户端发送一个字符串到服务器端,服务器端接收字符串后再发送回客户端. 2.1.配置开发环境 1.安装JDK 2.去官网下载jar包 (或者通过pom构建) 2.2.认识下Netty的Client和Se…
Java学习笔记之---入门 一. 为什么要在众多的编程语言中选择Java? java是一种纯面向对象的编程语言 java学习起来比较简单,适合初学者使用 java可以跨平台,即在Windows操作系统上使用java编写的程序在Linux操作系统上也可以使用 二. 为什么Java可以跨平台? (-)什么是跨平台? 什么是跨平台(计算机系统),跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境.一个操作系统下开发的应用,放到另一个操作系统下依然可以运行. (二)Java跨平…
Java 8 - 函数编程(lambda表达式) 我们关心的是如何写出好代码,而不是符合函数编程风格的代码. @pdai Java 8 - 函数编程(lambda表达式) 简介 lambda表达式 分类 惰性求值方法 及早求值方法 stream & parallelStream stream & parallelStream parallelStream原理: stream与parallelStream性能测试对比 Stream中常用方法如下: 常用例子 匿名类简写 forEach 方法引…
很多小伙伴们在刚接触Java的时候,会有些迷茫,不知道该从哪里入手,不管是做前端还是后端,程序员都会用到JAVA,那该掌握哪些必要的基础知识呢.今天就跟大家分享新手学Java,有哪些入门知识点? 下面总结了零基础学习Java编程语言的几个基础知识要点.希望对刚入门的Java新手有所帮助. 一.先了解Java的四个方面 先弄清Java的基本概念是必不可少的,不提倡一味的死记硬背,重在理解,弄清它们之间的区别和联系,以及分别有哪些应用. 在敲代码时也不要一味的照着书本狂敲,而是要思考这些代码中用到了…
Java网关服务-AIO(二) 概述 AIO的特点就是用户程序注册一个事件后就可以做其他事情,当事件被内核执行并得到结果后,我们的CompletionHandler会在I/O回调线程中被自动调用,有点类似观察者模式:因此我们的服务端会有很多个CompletionHandler Handlers 接口定义 为了区别一个Handler是从接收缓冲区读入数据到ByteBuffer,还是将ByteBuffer中的内容写入发送缓冲区,我们定义了两个接口 InboundHandler /** * serve…
目录 JAVA数组的基础入门 什么是数组,什么情况下使用数组 数组的创建方式 获取数组的数据 数组的内存模型 为什么数组查询修改快,而增删慢? 查询快的原因 增删慢的原因 数组的两种遍历方式以及区别 fori的遍历方式 数组获取极值及其索引 增强foreach的遍历方式 两种遍历方式区别 JAVA数组的基础入门 什么是数组,什么情况下使用数组 数组的创建方式 获取数组的数据 数组的内存模型 为什么数组查询修改快,而增删慢? 查询快的原因 增删慢的原因 数组的两种遍历方式以及区别 fori的遍历方…
轻松入门vue系列 Vue基础语法 一.HelloWord 二.MVVM设计思想 三.指令 1. v-cloak 2. v-text 3. v-html 4. v-show 4. v-pre 5. v-once 6. v-model(双向数据绑定) 7. v-on 事件修饰符 按键修饰符 自定义按键修饰符 8. v-bind class样式绑定 style样式绑定 9. v-if.v-else.v-else-if 10.v-for 四.Vue常用特性 1. 表单操作 基于vue的表单操作 表单域…