http://docs.datastax.com/en/landing_page/doc/landing_page/archivedDocuments.html
http://pimin.net/archives/388
http://pimin.net/topics/tech/nosql/page/4
一、基本介绍
DataStax,是一家位于加州的初创公司,提供了一个商业版本的Apache Cassandra NoSQL数据库,近日该公司获得了4500万美元的D轮融资,该轮融资由Scale Ventures引导,这是一位新投资者,同时还有DFJ Growth和Next World Capital,现有的投资者Lightspeed Venture Partners、Crosslink Capital以及Meritech Capital Partners也进行了参投。从2010年发布产品以来,DataStax已经获得了总计8370万美元的风险投资。

Cassandra目录结构

由于NoSQL中没有像传统数据库那样定义数据的组织方式为关系型的,所以只要内部的数据组织采用了非关系型的方式,就可以称之为NoSQL数据库。
目前,可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类:

  1. Key/Value的NoSQL数据库
  2. 面向文档的NoSQL数据库
  3. 面向列的NoSQL数据库
  4. 面向图的NoSQL数据库

不同的数据组织适合于不同的应用场景,后面将进行介绍。

SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等) 是通用的数据解决方案,占有绝大多数的市场。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品,它们具有如下特性:

  1. 频繁的写入操作、相对较少的读取统计信息的操作(如网站访问计数器),应该使用基于内存的Key/Value(键/值)存储系统(如Redis) 或者是具备本地更新特性的文档存储系统(如MongoDB)。
  2. 海量数据(如数据仓库中需要分析的数据) 适合存储在一个结构松散、分布式的文件存储系统中,如Hadoop。
  3. 存储二进制文件(如mp3或者pdf文档) 并且能够直接为用户的浏览器提供下载功能,可以使用AmazonS3。
  4. 临时性的数据(如网站的session、缓存HTML页面信息等) 适合存储在Memcache中。
  5. 如果希望数据具备高可用性,并且能够将数据丢失的风险降到最低,同时整个系统具备线性扩展的能力,可以考虑使用Cassandra和HBase。

4. Cassandra单节点安装

首先确保安装了JDK。

然后,修改配置文件,cassandra-0.7.6-2的conf下有以下几个配置文件:

(1) access.properties:设置每个数据库或者表的访问权限

(2) cassandra.yaml:主配置文件,包括日志路径,数据存放路径,各种参数配置等

(3) cassandra-topology.properties:配置网络的拓扑结构

(4) log4j-server.properties:log4j的配置选项

(5) passwd.properties:配置用户密码,与access.properties配合使用

对于简单的使用,只需配置cassandra.yaml文件:

(1) 集群名称cluster_name:同一个集群中的集群名称应该一样。

(2) 数据存放路径data_file_directories:可以根据情况配置一个有写权限的路径

(3) commit log路径commitlog_directory:同上

(4) saved cache路径saved_caches_directory:同上

(5) 日志文件路径log4j.appender.R.File:同上(这个选项在log4j-server.properties文件中)

此外,还需要修改服务监听的地址和thrift访问地址,即ListenAddress和ThriftAddress,配置文件默认监听的都是localhost:

1
2
3
4
5
6
7
<!-- Cassandra节点之间通信的监听地址,这里设置所在节点的ip-->
 
<ListenAddress>100.200.3.1</ListenAddress>
 
<!-- 这个是Thrift监听的地址,建议设置为0.0.0.0 -->
 
<ThriftAddress>0.0.0.0</ThriftAddress>

经过上面的配置就可以启动节点了:

进入bin目录,直接执行:./cassandra

5. Cassandra多个节点安装

首先,在各节点上,按照第4节方法配制各自对应文件。

然后,配制seeds。Cassandra没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息。为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信。种子节点可以指定多个,通过在 conf/ cassandra.yaml中的seeds属性配置。

seeds:

- 100.200.3.81

- 100.200.3.78

6. Cassandra附带工具使用方法介绍

bin目录下自带了很多工具,可以帮助用户很方便地进行一些操作。常用的工具有nodetool,cassandra-cli,sstable2json等

(1) nodetool

nodetool是一个cassandra集群管理工具,这里只简单介绍一些简单的命令,详细的命令可以参见工具的帮助信息。

ring命令

ring命令用于查看集群的节点信息,ring来源于consistent hash,在consistent hash中,各个节点组成一个环,通常称为ring。

Info命令

info可以参看某个节点负载,内存使用情况:

cfstats命令

cfstats命令可以查看各个CF的详细统计信息,包括读写次数、响应时间、memtable信息等。

(2) cassandra-cli

cassandra-cli是一个命令行工具,可以用于对数据库进行数据查询和检索。具体可参见这篇文章:

(3) sstable2json

将sstable中的数据转化为json格式,使用方法为:

Usage: sstable2json [-f outfile] <sstable> [-k key [-k key [...]]]

===============================================
一、安装
 
1、安装cassandra
 
    1.1 下载安装程序
在http://cassandra.apache.org/下载Cassandra的安装程序;
 
    1.2 安装配置
1)解压下载后的程序apache-cassandra-2.2.6-bin.tar.gz到某个目录,如d:\cassandra;
 
2)修改conf目录下配置文件
    A)使用记事本打开cassandra.yaml文件,修改如下参数: 
    data_file_directories:
     - /var/lib/cassandra/data
    为 - d:\cassandra\data 
    注意:-后面需要有空格
 
    commitlog_directory: /var/lib/cassandra/commitlog
    为:commitlog_directory: d:\cassandra\commitlog
    saved_caches_directory: /var/lib/cassandra/saved_caches
    为:saved_caches_directory: d:\cassandra\saved_caches
 
  B)使用记事本打开log4j-server.properties文件,修改如下参数:
    log4j.appender.R.File=/var/log/cassandra/system.log
    为:log4j.appender.R.File=D:\Cassandra\logs
 
2、安装JRE
  
    2.1 下载安装程序
在http://www.oracle.com/technetwork/java/javase/downloads/index.html上下载jre的安装程序;
jre和jdk区别:jre只是java环境,jdk包含了开发工具和jre;
 
    2.2 直接双击执行jre-6u25-windows-i586.exe进行安装,默认安装在C:\Program Files\Java\jre6目录即可;
 
3、配置环境变量
 
    3.1 打开windows的环境变量配置窗口
 
鼠标右键点击我的电脑,选择属性,在弹出界面点击【高级】页签,再点击【环境变量】按钮;
 
    3.2 配置JAVA_HOME环境变量
在“系统变量”添加JAVA_HOME,点击【系统变量】下方的【新建】按钮,输入
          变量名:JAVA_HOME
    变量值:C:\Program Files\Java\jre6
 
    3.3 配置Cassandra_HOME环境变量
在“系统变量”添加Cassandra_HOME,点击【系统变量】下方的【新建】按钮,输入
          变量名:Cassandra_HOME
    变量值:D:\EBOOK\NoSQL\apache-cassandra-2.2.6
 
4、启动Cassandra
 
  开始运行中敲入cmd回车打开命令窗口,敲入cd D:\EBOOK\NoSQL\apache-cassandra-2.2.6\bin回车,敲入d:回车,转到D:\EBOOK\NoSQL\apache-cassandra-2.2.6\bin目录后,直接敲入cassandra就可以启动cassandra服务了,如下:
 
D:\EBOOK\NoSQL\apache-cassandra-2.2.6\bin>cassandra
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>cassandra
WARNING! Powershell script execution unavailable.
Please use 'powershell Set-ExecutionPolicy Unrestricted'
on this user-account to run cassandra with fully featured
functionality on this platform.
Starting with legacy startup options
Starting Cassandra Server
INFO :: Node configuration:[authenticator=AllowAllAuthenticator; authorizer=AllowAllAuthorizer; auto_bootstrap=true; auto_snapshot=true; batch_size_fail_threshold_in_kb=; batch_size_warn_threshold_in_kb=; batchlog_replay_throttle_in_kb=; broadcast_address=null; broadcast_rpc_address=null; cas_contention_timeout_in_ms=; client_encryption_options=<REDACTED>; cluster_name=Test Cluster; column_index_size_in_kb=; commit
...
...
artition":"NONE"},defaultTimeToLive=0,minIndexInterval=128,maxIndexInterval=2048,speculativeRetry=99.0PERCENTILE,droppedColumns={},triggers=[],isDense=false]
INFO :: Initializing system_auth.role_members
INFO :: Netty using Java NIO event loop
INFO :: Using Netty Version: [netty-buffer=netty-buffer-4.0..Final.208198c, netty-codec=netty-codec-4.0..Final.208198c, netty-codec-http=netty-codec-http-4.0..Final.208198c, netty-codec-socks=netty-codec-socks-4.0..Final.208198c, netty-common=netty-common-4.0..Final.208198c, netty-handler=netty-handler-4.0..Final.208198c, netty-transport=netty-transport-4.0..Final.208198c, netty-transport-rxtx=netty-transport-rxtx-4.0..Final.208198c, netty-transport-sctp=netty-transport-sctp-4.0..Final.208198c, netty-transport-udt=netty-transport-udt-4.0..Final.208198c]
INFO :: Starting listening for CQL clients on localhost/127.0.0.1:...
INFO :: Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
INFO :: Created default superuser role 'cassandra'
验证有没有启动,用要确认Cassandra有没有再跑,可以用nodetool.bat这个工具进行确认。

bin>nodetool -h 127.0.0.1 ring
结果:
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>nodetool -h 127.0.0.1 ring
Starting NodeTool Datacenter: datacenter1
==========
Address Rack Status State Load Owns Token 127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% -
...
...
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00%
127.0.0.1 rack1 Up Normal 97.06 KB 100.00% Warning: "nodetool ring" is used to output all the tokens of a node.
To view status related info of a node use "nodetool status" instead. D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>
二、使用
 
1、连接Cassandra服务
   从cassandra2.x之后,就没有了Cassandra CLI 的工具,而是CQL替代。开始运行中敲入cmd回车进入命令窗口,敲入cd D:\EBOOK\NoSQL\apache-cassandra-2.2.6\bin后,在敲入d:回车转到bin目录中敲入cqlsh.bat命令回车,直接敲入如下命令可以连接到本机已经启动的cassandra数据
D:\EBOOK\NoSQL\apache-cassandra-2.2.\bin>cqlsh.bat

WARNING: console codepage must be set to cp65001 to support utf- encoding on Windows platforms.
If you experience encoding problems, change your console codepage with 'chcp 65001' before starting cqlsh. Connected to Test Cluster at 127.0.0.1:.
[cqlsh 5.0. | Cassandra 2.2. | CQL spec 3.3. | Native protocol v4]
Use HELP for help.
WARNING: pyreadline dependency missing. Install to enable tab completion.
cqlsh>
2、创建keyspace
create keyspace keyspace1;
use keyspace1;
 
3、创建column family
create column family Standard1 with column_type = 'Standard' and comparator = 'BytesType';
describe keyspace keyspace1;
list standard1;
drop column family standard1;
 
--必须指定column_type和comparator
create column family cf1 with column_type = 'Standard' and comparator = 'BytesType';
create column family cf2 with column_type = 'Standard' and comparator = 'UTF8Type' and rows_cached = 10000;
create column family Super1 with column_type=Super and comparator=BytesType;
 
--设置列值
set cf1['key_1']['column_1']='value_1';
set cf1['key_1']['column_2']='value_2';
set cf1['key_2']['column_1']='value_3';
set cf1['key_2']['column_2']='value_4';
 
--设置列值
set cf2['key_1']['column_1']='value_1';
set cf2['key_1']['column_2']='value_2';
set cf2['key_2']['column_1']='value_3';
set cf2['key_2']['column_2']='value_4';
 
set super1['key_1']['column_1']='value_1';
 
get cf2['key_2']['column_2'];  --提示错误Column family Super1 may only contain SuperColumns
 
--取列值
get cf1['key_1'];
--计数
count  cf1['key_1'];
count  cf1['key_2'];
 
--取列值
get cf1['key_1']['column_1'];
--删除列值
del cf1['key_1']['column_1'];
 
list cf2[key_1:];
 
---二级索引的使用
1、定义:在Cassandra中,对列值(column values)的索引叫做"二级索引",它与列簇(column families)中对key的
 
索引不同。二级索引允许我们对列值进行查询,并且在读取和写入的时候不会引起操作阻塞。
 
2、使用方法:
create keyspace demo;
use demo;
--注意大小写,索引birth_date
create column family users with comparator=UTF8Type and column_metadata=
 
[{column_name:full_name,validation_class:UTF8Type},
 
{column_name:birth_date,validation_class:LongType,index_type:KEYS}];
 
--插入数据:
set的语法大概长的像下面这样:

.set Keyspace1.Standard1['geffzhang']['blog'] = 'http://www.dotnetting.cn'
. \ \ \ \ \
. \ \ \_ key \ \_ value
. \ \ \_ column
. \_ keyspace \_ column family
就按照上面的语法来加几个数据进去,然后用get把数据拉出来看看
set users[a][full_name]='a';
set users[a][birth_date]=1977;
 
set users[b][full_name]='b';
set users[b][birth_date]=1978;
 
set users[c][full_name]='c';
set users[c][birth_date]=1979;
 
set users[d][full_name]='d';
set users[d][birth_date]=1977;
 
--查询birth_date=1977的数据:
get users where birth_date=1977;
 
--查询结果如下:
[default@demo] get users where birth_date=1977;
-------------------
RowKey: a
=> (column=birth_date, value=1977, timestamp=1306733443578000)
=> (column=full_name, value=a, timestamp=1306733438406000)
-------------------
RowKey: d
=> (column=birth_date, value=1977, timestamp=1306733577125000)
=> (column=full_name, value=d, timestamp=1306733572687000)
 
2 Rows Returned.
 
--多个二级索引使用
set users[a][card_no]='111';
 
--更新列簇users设置card_no和birth_date都索引
update column family users with comparator=UTF8Type and column_metadata=
 
[{column_name:full_name,validation_class:UTF8Type},
 
{column_name:birth_date,validation_class:LongType,index_type:KEYS},
 
{column_name:card_no,validation_class:UTF8Type,index_type:KEYS}];
 
--查询证件号码为111的列
get users where card_no='111';
 
get users where card_no='111' and birth_date=1977;
 
--虽然full_name没有索引,但是也能够查出结果
get users where card_no='111' and birth_date=1977 and full_name='a';
get users where card_no='111' and full_name='a';
get users where birth_date=1977 and full_name='a';
 
--如果仅仅通过full_name查询则出错
get users where full_name='a';
--结果如下:
[defualt@demo] get users where full_name='a';
No indexed columns present in index clause with operator EQ
 
--退出
quit;

Cassandra在设计的时候,就是支持Thrift的,这意味着我们可以使用多种语言开发。对于Cassandra的开发本身而言,这是使用Thrift的好处:支持多语言。坏处也是显而易见的:Thrift API功能过于简单,不具备在生产环境使用的条件。

Cassandra 建议用户在它们的程序内用高阶API与Cassandrar进行通信,以C#来说,像是FluentCassandra 或 Aquiles。但是你也可以用官方出的最低阶API - Thrift 来与Cassandra沟通。

Thrift这个是Cassandra自带的最简单的一类API,这个文件在apache-cassandra-0.5.1.中包含了。可以直接使用。我们也可以自己安装一个Thrift,然后通过cassandra.thrift文件自动生成。如果你要使用Cassandra,那么我们必须要了解Thrift API,毕竟所有的其他更加高级的API都是基于这个来包装的。

    1. 准备运行环境
      1.1 cassandra可以安装在windows和linux下,本例子安装在centos6.7的环境下。
      1.2 关闭防火墙。或者开放9042(默认的CQL本地服务端口)、9160(默认的Cassandra服务端口)、7000(Cassand集群内节点间通讯端口)、7199端口(Cassandra JMX 监控端口)
        关闭防火墙:

      1 service iptables stop
      2 chkconfig iptables off

      开放端口:

      1 vi /etc/sysconfig/iptables
      2 -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(仿照这个写)
      3 /etc/init.d/iptables restart

      1.3 安装JDK,配置环境变量
            下载JDK:

      yum -y install wget     //安装wget插件
      wget –P /usr http://download.oracle.com/otn/java/jdk/8u60-b15/jdk-8u60-linux-i586.rpm?AuthParam=1467614887_3fe640855a43a439fb5f5fec1f5045e2
      rpm -ivh jdk-8u60-linux-i586.rpm

      配置环境变量:

      1 vi /etc/profile
      2 JAVA_HOME=/usr/java/jdk1.8.0_60
      3 JRE_HOME=/usr/java/jdk1.8.0_60/jre
      4 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
      5 CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      6 export JAVA_HOME JRE_HOME PATH CLASSPAH
      7 source /etc/profile
    2. 安装
      2.1 下载并解压cassandra安装包,本例子用的版本是2.1.14(这个镜像不行的话去官网找别的镜像)
      1 wget http://mirrors.cnnic.cn/apache/cassandra/2.1.14/apache-cassandra-2.1.14-src.tar.gz
      2 tar -zxvf apache-cassandra-2.1.14-bin.tar.gz -C /opt/cassandra

      2.2 新建cassandra数据存放的文件夹(用安装包的方式就需要这一步)。

      1 //可以根据磁盘情况设置这3个文件夹,但是要和cassandra.yaml里的想对应
      2 mkdir /var/lib/cassandra/data
      3 mkdir /var/lib/cassandra/commitlog
      4 mkdir /var/lib/cassandra/saved_caches

      2.3 打开解压后的/opt/apache-cassandra-2.1.14/cassandra/conf的目录,修改其中的cassandra.yaml中的一些参数

      1 cluster_name: 'xxx'  //集群名称。同一个集群要使用同一名称
      2 data_file_directories:
      3 - /var/lib/cassandra/data //数据文件存放路径。打开这个注释,注意不要合并成一行,合并成一行好像会出问题,这里要与前面新建的文件夹对应。
      4 commitlog_directory: /var/lib/cassandra/commitlog //操作日志文件存放路径。打开注释,与前面新建的文件夹对应。
      5 saved_caches_directory: /var/lib/cassandra/saved_caches //缓存文件存放路径。打开注释,与前面新建的文件夹对应。
      6 - seeds: "192.168.x.x" //集群种子节点ip,新加入集群的节点从种子节点中同步数据。可配置多个,中间用逗号隔开。
      7 listen_address: 127.0.0.1 //需要监听的IP或主机名。改成本机IP
      8 rpc_address: 127.0.0.1 //用于监听客户端连接的地址。建议设置成IP或0.0.0.0。若设置0.0.0.0,则要放开broadcast_rpc_address: 1.2.3.4的注释。

      2.4 进入到bin目录下

      1 ./cassandra

      如果提示没有权限什么的

      1 ./cassandra -R //用root用户启动

      如果没有报什么奇奇怪怪的ERROR然后看到 Node /x.x.x.x state jump to NORMAL,这样cassandra就算安装完成了,也可以在在bin目录下使用./nodetool status 查看集群信息确认一下。

      UN 表示的是该服务器的状态,UN是运行中,DN是宕机。
      Note: xxxxxxx  这个问题是因为同一个键空间里存在不同复制策略的表,不影响使用,但是最好建表和修改表的时候注意一下。

Cassandra在Windows上安装及使用方法的更多相关文章

  1. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  2. (转)在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  3. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  4. Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows

    知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html ------------------------ 安装方式有3种: (1)Windows ...

  5. 在 windows 上安装免安装版的mysql

    在 windows 上安装免安装版的 1. 下载路径 https://downloads.mysql.com/archives/community/ 2. 解压 假设解压后的路径为:E:\Enviro ...

  6. Git学习系列之Windows上安装Git详细步骤(图文详解)

    前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...

  7. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  8. 【python安装】Windows上安装和创建python开发环境

    1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,所以需要自行安装. 第1步:访问 python官网,下载Windows ...

  9. 在 Windows 上安装 TensorFlow(转载)

    在 Windows 上安装 TensorFlow windows下配置安装Anaconda+tensorflow Spyder——科学的Python开发环境 Windows7 安装TensorFlow ...

随机推荐

  1. Android 编程下去除 ListView 上下边界蓝色或黄色阴影

    默认的情况下,在 ListView 滑动到顶部或者是底部的时候,会有黄色或者蓝色的阴影出现.在不同的版本上解决的方法是不同的,在 2.3 版本之前可以在 ListView 的属性中通过设置 andro ...

  2. Sklearn库例子4:分类——Lasso分类例子

    Lasso回归: #-*- encoding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn.met ...

  3. Unicode基本概念

    Unicode是计算机可以支持这个星球上多种语言的秘密武器.通过使用一个或者多个字节来表示一个字符的方法突破了ASCII的限制.Unicode可以表示超过90000个字符. 使用方式:a=u'hell ...

  4. 让EDIUS中素材小距离精确移动的教程

    我们在使用EDIUS视频编辑软件编辑视频的时候,发现想要把剪辑好的视频片段做小距离的调整非常的不容易,一不小心手滑就移多了.这个问题是不是很令人烦躁?不过你们看完今天的文章就不会再为这个问题发愁了.本 ...

  5. Python 统计IIS日志行数

    __author__ = 'Administrator' import codecs def blocks(file, size=65536): while True: b = file.read(s ...

  6. linux工具之log4j-LogBack-slf4j-commons-logging

    log4j http://commons.apache.org/proper/commons-logging/ http://logging.apache.org/log4j/2.x/ The Com ...

  7. json字符串转map

    <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</ar ...

  8. DW(五):polybase集群安装

    目录: Prerequisites 集群配置规划 polybase install firewall config 集群配置 删除计算节点 install Prerequisites Microsof ...

  9. WEB用户访问控制方法

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 一直以来,我对用户/权 ...

  10. Python(迭代器 生成器 装饰器 递归 斐波那契数列)

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...