Java Stream流编程

Stream流编程也是java8中的新特性。Stream是一个高级的迭代器,不是一个数据结构,不是一个集合,不会存放数据。它是将数据放在一个流水线中处理,在流水线的一边输入数据,在流水线的尾端得到结果,中间有一系列的操作。

外部迭代和内部迭代

先看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.stream.IntStream;

public class StreamDemo1 {
public static void main(String[] args) {
int[] nums = {1,2,3};
//外部迭代
int sum = 0;
for(int i:nums){
sum += i;
}
System.out.println("结果为" + sum);
//使用stream的内部迭代
int sum2 = IntStream.of(nums).sum();
System.out.println("结果为" + sum2);
}
}

Java函数式编程及lambda

为什么要使用函数式编程

从jdk1.8开始,java开始支持函数式编程以及lambda表达式,本文简单描述一下函数式编程以及lambda表达式的常见使用方法。函数式编程是一种编程范式,他和命令式编程的区别有几点:

  • 最大区别在于关注点不同:命令式编程关注怎么做,函数式编程中关注做什么

例如,利用java实现找到最小的数,命令式编程的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MinDemo{
public static void main(String[] args){
int[] nums = {34,45,65,11,-47,23,75};

int min = Integer.MAX_VALUE;
for(int i:nums){
if(i < min){
min = i;
}
}
System.out.println(min);
}
}

Redis学习(下)

Redis Keys操作

1
2
3
4
5
6
7
8
keys * #查询所有keys,*,?,[]都是通配符,*匹配任意多个字符,?匹配一个字符,[]匹配括号内某一个字符
keys test* #查询所有以test开头的keys
del [key1] [key2] ... #删除keys
exists [key] #判断key是否存在,存在为1,不存在为0
rename [oldkey] [newkey] #重命名key
expire [key] [seconds] #设置key的过期时间,单位秒
ttl [key] #查询key的剩余时间,当key没有设置过期时间,返回-1
type [key] #获取key的类型

Redis学习(中)

Redis的数据结构

  • 字符串(String)(常用)
  • 字符串列表(list)
  • 有序字符串集合(sorted set)
  • 哈希(hash)(常用)
  • 字符串集合(set)

Redis是一个key-value的数据库,key定义时候要注意不要过长,最好不要超过1024字节,不仅消耗内存,而且还会降低查找效率;也不要太短,会降低key的可读性;最好有统一命名规范。

Redis学习(上)

之前使用Nodejs参加比赛项目的时候使用过redis,但是当时开发时间紧迫,仅仅会一些最最基础的使用,并且也仅仅用来保存临时的验证码,了解还不够深入,现在主要使用JAVA来开发后端,redis是后端开发中十分重要,因此这段时间系统的学习一下。

NoSQL概述

Redis是一个NoSQL(Not Only SQL)的数据库,即非关系型数据库,主要解决高并发读写、海量数据的高效率存储和访问以及高可扩展性和高可用性等传统关系型数据库实现起来困难的场景。NoSQL数据库有四大分类:

  • 键值(Key-Value)存储:redis等
  • 列存储:Hbase等
  • 文档数据库:mongodb等
  • 图形数据库:Neo4j等

Spring高级装配

由于前几天学SpringBoot自动装配时,发现自己的Spring的某些装配方式掌握的还不到位,因此这两天又看了几遍Spring高级装配。

Spring高级装配内容

  • Profile环境装配
  • Conditional条件装配
  • 处理装配时的歧义性
  • bean的作用域
    • 单例 - Singleton
    • 原型 - Prototype
    • 会话 - Session
    • 请求 - Request
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×