薄小破

厚德载物


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Java8_Collector整理

发表于 2016-08-26   |   分类于 Java   |     |   阅读次数

收集器

Stream中的collect可以将流中的元素累积成一个汇总结果,使用收集器可以简洁而灵活地定义collect用来生成结果集合的标准。更具体的来说,对流调用collect方法将对流中的元素触发一个归约操作,由Collector来参数化。一般来说,Collector会对元素应用一个转换函数(很多时候是不体现任何效果的恒等转换,例如toList()),并将结果累积在一个数据结构中,从而产生这一过程的最终输出。
Collector主要提供3大功能:

  • 将流元素归约和汇总成为一个值
  • 元素分组
  • 元素分区

元素归约和汇总

toList

toList把流中的项目收集到一个List

阅读全文 »

Java8_Stream整理

发表于 2016-08-21   |   分类于 Java   |     |   阅读次数

Java8-Stream

流是Java8 API的新成员,它允许你以声明方式处理数据集合,你可以把它看成遍历数据集的高级迭代器;此外,流还可以透明地的并行处理,让你的代码性能更好。

构建流

由值创建流

使用静态方法Stream.of,通过显式创建一个流。它可以接受任意数量的参数。

1
Stream<String> stream = Stream.of("java8","name","passWord");

阅读全文 »

MongoDB学习笔记03【进阶】

发表于 2016-06-17   |   分类于 NoSql   |     |   阅读次数

MongoDB索引

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

语法

db.COLLECTION_NAME.ensureIndex({KEY:1,...})

语法中KEY值为你要创建的索引字段,1为指定按升序创建索引,-1为按降序。

ensureIndex()接收可选参数,参见列表:

阅读全文 »

MongoDB学习笔记02【基础知识】

发表于 2016-06-16   |   分类于 NoSql   |     |   阅读次数

在MongoDB中基本的概念是文档、集合、数据库,下图与RDBMS对比,比较容易理解。

SQL术语 MongoDB术语 解释
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

数据库DataBase

一个MongoDB可以建多个数据库。MongoDB的默认数据库为”db”,即启动时前创建的”/data/db”目录。

常用命令

  • 查看数据库 show dbs

    如果数据库为空,则不会显示

  • 显示当前数据库对象 db
  • 切换/创建数据库 use local
  • 删除数据库 db.dropDatabase()
阅读全文 »

MongoDB学习笔记01【搭建环境】

发表于 2016-06-16   |   分类于 NoSql   |     |   阅读次数

MongoDB简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB特点

  • MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=”Sameer”,Address=”8 Gandhi Road”)来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

MongoDB安装

安装

系统环境 CentOS release 6.6 (Final)

阅读全文 »

Reactor模式

发表于 2016-06-04   |   分类于 Design Pattern   |     |   阅读次数

转载 http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html

什么是Reactor模式

要回答这个问题,首先当然是求助Google或Wikipedia,其中Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to associated request handlers.”。从这个描述中,我们知道Reactor模式首先是事件驱动的,有一个或多个并发输入源,有一个Service Handler,有多个Request Handlers;这个Service Handler会同步的将输入的请求(Event)多路复用的分发给相应的Request Handler。如果用图来表达:

从结构上,这有点类似生产者消费者模式,即有一个或多个生产者将事件放入一个Queue中,而一个或多个消费者主动的从这个Queue中Poll事件来处理;而Reactor模式则并没有Queue来做缓冲,每当一个Event输入到Service Handler之后,该Service Handler会主动的根据不同的Event类型将其分发给对应的Request Handler来处理。

阅读全文 »

Redis配置文件示例

发表于 2016-05-24   |   分类于 NoSql   |     |   阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Redis 配置文件示例
#
# 为了加载配置,Redis必须以配置文件作为第一参数启动。
# ./redis-server /path/to/redis.conf

# 当你需要配置内存大小的时候,必须要带上单位,
# 通常的格式就是 1k 5gb 4M 等酱紫:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 单位不区分大小写,你写1GB 1Gb 1gB 是一样的的。

################################## INCLUDES ###################################

# 假如说你有一个可用于所有的 redis server 的标准配置模板,
# 但针对某些 server 又需要一些个性化的设置,
# 你可以使用 include 来包含一些其他的配置文件,这对你来说是非常有用的。
#
# 但是要注意哦,include 是不能被 config rewrite 命令改写的
# 由于 redis 总是以最后的加工线作为一个配置指令值,所以你最好是把 include 放在这个文件的最前面,
# 以避免在运行时覆盖配置的改变,相反,你就把它放在后面(其实就是你把标准模板放在前面,需要特殊配置的写在后面会覆盖标准配置)。
#
# include /path/to/local.conf
# include /path/to/other.conf

################################## NETWORK #####################################

# 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。
# 你如果只想让它在一个或者多个网络接口上监听,那你就绑定一个IP或者多个IP。
#
# 示例,多个IP用空格隔开:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
bind 127.0.0.1

# 保护模式防止 redis 实例被网络操作恶意关闭。
#
# 当保护模式开启时,而且:
# 1)redis 监听全部的网络接口
# 2)没有配置密码验证
#
# 时,redis 服务器只接受本地(127.0.0.1 and ::1)或者是Unix实例的socket链接。
#
# 默认情况下,保护模式是开启的,除非你确定你接受其他的客户端链接,即使这些链接没有密码验证、指定网络接口时才关闭。
protected-mode yes
阅读全文 »

Java类加载器梳理

发表于 2016-05-19   |   分类于 Java   |     |   阅读次数

什么是类加载器

虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块成为“类加载器”。

简单的讲,类加载器就是Java程序在运行时动态加载class文件到内存中的模块。类加载器是Java语言的一项创新,在类层次划分、OSGi、热部署、代码加密等领域都有着极其重要的应用。

Java默认的类加载器

  • 启动类加载器(Bootstrap ClassLoader):这个类加载器负责将存放在\lib目录中,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名称识别,如rt.jar,名字不符合的类库即使放在lib目录中也不会被加载)类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用,这个类加载器使用C++实现,是虚拟机自身的一部分。比如打包dmeo.jar,含类到
  • 扩展类加载器(Extension ClassLoader):这个加载器由sun.misc.Luncher$ExtClassLoader实现,它负责加载\lib\ext目录中的,或者被java.ext.dirs系统变量所指定的路径中的所有类库,开发者可以直接使用扩展类加载器。
  • 应用程序类加载器(Applicaition ClassLoader):这个类加载器是ClassLoader中的getSystemClassLoader()方法的返回值,也成为系统类加载器。它负责加载用户类路径(ClassPath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。
阅读全文 »

Git学习笔记 - 命令拾遗

发表于 2016-05-15   |   分类于 Git   |     |   阅读次数

查看Git版本

1
~ git --version

初始化仓库

1
~ git init

远程仓库

1
2
3
~ git remote -v
~ git remote add origin git@github.com:bochenlong/study-demo.git
~ git remote remove origin // 取消关联

提交到暂存区

1
2
~ git add 1.txt ...
~ git add ./

提交到版本库

1
2
3
~ git commit -m "add the README.md"
~ git commit ./1.txt -m "modify 1.txt"
~ git commit ./ -m "modify 1.txt"

查看仓库当前状态

1
~ git status

对比文件

1
~ git diff 1.txt
阅读全文 »

Github+Hexo搭建个人博客

发表于 2016-05-15   |     |   阅读次数

前言

想搭建个人博客,Github+Hexo是个不错的选择。

为什么选择Github+Hexo

  • Git - 最先进的开源分布式版本控制系统
  • GitHub - 全球最大的社交编程及代码托管网站

    • Github Pages - Github提供的免费的静态站点,Github pages具备两种模式:
      1 User/Organization Pages个人或公司站点
      2 Project Pages项目站点
  • Hexo快速、简洁且高效的博客框架

    • 急速生成页面
    • 支持Markdown
    • 一键部署博客
    • 丰富的插件、主题支持

创建Github Pages

  1. Github网站注册账号
  2. 创建仓库username.github.io

需要注意,新建仓库名称必须符合标准要求,username为Github账号的用户名称,建立成功之后,Github会自动将识别此仓库为Github Pages站点

创建博客

以下为Mac环境操作记录,个别安装请根据自己系统调整

Hexo安装

  • 安装依赖软件

    • Node.js ( 含npm )

      $ brew install node

    • Git

      $ brew install git

  • 安装Hexo

    $ sudo npm install hexo-cli -g

    Linux / OS X 系统下需要 sudo 管理员安装,否则会出现以下错误。如果出现可以尝试 npm install hexo –no-optional 安装解决。但此错误并不影响Hexo正常使用。

    1
    2
    3
    { [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }    
    { [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
    { [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
阅读全文 »
12
bochenlong

bochenlong

唯有努力不负人!

11 日志
4 分类
12 标签
RSS
GitHub
博客收藏
  • 美团点评技术团队
  • 阿里中间件团队
© 2015 - 2016 bochenlong
由 Hexo 强力驱动
主题 - NexT.Muse