澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

上学笔记,2016读书笔记
分类:脚本专栏

1. Hive什么

学习笔记,2015学习笔记

参考:

less学习笔记(一),less学习笔记(

less的写法如下
.content {
ul{
list-style: none;
}
li{
height: 25px;
line-height: 25px;
padding-left: 15px;
background: url("arr.jpg") no-repeat center left;
a{
text-decoration: none;
color: #535353;
font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica;
}
}
}
注释的写法
//只会在LESS中显示
/*就会在LESS和CSS中显示*/

编译less的一个工具koala(学习node.js之前可以使用)

定义变量用@开头
定义变量为属性名或者选择器时:
@a:width;
[email protected]{a}{
@{a}:960px;
}
定义变量为url时:@url:"/*里面是地址*/";
定义变量又延迟加载特性,即可以先使用变量,后定义变量;
定义多个变量时采用在同一兄弟作用域就近原则取值。

混合模式:把共同的css样式放入一个类似于类的选择器中:.a(){/*共同的样式*/}
使用时在样式中加上.a即可饮用.a()中的样式

带选择器的混合:.b{&:hover:{border:1px solid red;}}
div{.b();}
带参数的混合:.b(@color:red){border:1px solid @color}
div{&hover{b(yellow)}}
&:带表当前元素的父元素,如果把&放在选择器后,就会将当前选择器插入到所有父选择器之前;
传有多个参数时:
如果传参的括号里面全部都是以“,”分割,那么会依次传给各个参数值,
如果传参的括号里面既有“,”又有“;”那么,会把“;”前面的看作一个整体,传给一个参数值
命名参数:
.mixin(@color: black; @margin: 10px; @padding: 20px) {
color: @color;
margin: @margin;
padding: @padding;
}

.class1 {
.mixin(@margin: 20px; @color: #33acfe);
}
.class2 {
.mixin(#efca44; @padding: 40px);
}
.class3{
.mixin(@padding: 80px;)
}

@arguments的使用:
.border(@x:solid,@c:red){
border: 21px @arguments;
}
.div1{
.border(solid);
}

匹配模式的使用:
.border(all,@w: 5px){
border-radius: @w;
}
.border(t_l,@w:5px){
border-top-left-radius: @w;
}
.border(t_r,@w:5px){
border-top-right-radius: @w;
}
太阳集团太阳娱乐登录,.border(b-l,@w:5px){
border-bottom-left-radius: @w;
}
.border(b-r,@w:5px){
border-bottom-right-radius: @w;
}

footer{
.border(t_l,10px);
.border(b-r,10px);
background: #33acfe;
}
混合的返回值:
.average(@x, @y) {
@average: ((@x + @y) / 2);
@he:(@x + @y);
}

div {
.average(16px, 50px);
padding: @average;
margin: @he;
}

运算:
less会自动为你推断出单位,所以只要在运算时有任意一个值有单位就能实现运算
less在运算时,先将颜色值转为rgb模式,然后再转换为16进制的颜色值并返回
rgb模式他的值是 0~255 ,当你的值超过255 ,那么就会以255进行相加操作
运算时不能直接使用英文颜色名称进行运算
函数:
rgb在less中是一个函数,会返回16进制的颜色值
red(),green(),blue()传入一个16进制的颜色值会返回一个相应颜色的十进制值
命名空间:
demo1:
#bgcolor(){
background: #ffffff;
.a{
color: #888888;
&:hover{
color: #ff6600;
}
.b{
background: #ff0000;
}
}
}

.wi{
background: green;
color: #fff;
.a{
color: green;
background: #ffffff;
}
}

.bgcolor1{
background: #fdfee0;
#bgcolor>.a;
}
.bgcolor2{
.wi>.a;
}
demo2:
//省略>写法
#bgcolor(){
background: #ffffff;
.a{
color: #888888;
&:hover{
color: #ff6600;
}
.b{
background: #ff0000;
}
}
}
.wi {
background: green;
color: #fff;
.a {
color: green;
background: #ffffff;
}
}
.bgcolor1{
background: #fdfee0;
#bgcolor .a;
}
.bgcolor2{
.wi .a;
}
总结命名空间:有以上两个demo可见,less中引用重复的样式时与css中使用子集选择器的方式相类似。

less的写法如下 .content { ul{ list-style: none; } li{ height: 25px; line-height: 25px; padding-left: 15px; background: url("arr.j...

a.Hive是基于Hadoop的一个数据仓库工具,将结构化的数据文件映射成一张数据库表。

复习:AngularJS的数据绑定

  • 显示文本
<p>{{greeting}}</p>
<!-- 或者 -->
<p ng-bind=”greeting”></p>
  • 表单输入
<form ng-controller=”SomeController”>
    <input type=”checkbox” ng-model=”youCheckedIt”>
</form>
  • 列表
<ul ng-controller=’StudentController’>
    <li ng-repeat=’student in students’>
        <a href=’/student/view/{{student.id}}’>{{student.name}}</a>
    </li>
</ul>
  •  表格
<table ng-controller=’AlbumController’>
    <tr ng-repeat=’track in album’>
        <td>{{$index+1}}</td>
        <td>{{track.name}}</td>
        <td>{{track.duration}}</td>
    </tr>
</table>

 使用$watch监控数据模型的变化

b.Hive是SQL的解析引擎,可以把sql语句转换成MapReduce,但也允许自定义mr程序。

Knockout基础学习

示例代码出现错误,显示jquery-tmpl版本太久,参考解决办法。jquery.tmpl.js的下载地址:

库的在线引用地址:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="./jquery.tmpl.js"></script>
<script type="text/javascript" src="http://knockoutjs.com/downloads/knockout-latest.js"></script>

c.Hive不适合用于联机事务处理,也不提供实时查询功能。它适用于基于大量不可变数据的批处理作业。

入门

重要概念:

  • 声明式绑定
  • UI界面自动刷新
  • 依赖跟踪
  • 模板

启用绑定

ko.applyBindings(viewModel)

 数据模型

var viewModel = {
  chosenMeal: ko.observable(availableMeals[0])
}

数据

var availableMeals = [
    { mealName: 'Standard', description: 'Dry crusts of bread', extraCost: 0 },
    { mealName: 'Premium', description: 'Fresh bread with cheese', extraCost: 9.95 },
    { mealName: 'Deluxe', description: 'Caviar and vintage Dr Pepper', extraCost: 18.50 }
  ];

使用绑定,写变量

Chosen meal: <select data-bind="options: availableMeals,
                              optionsText: 'mealName',
                              value: chosenMeal"></select>

使用绑定,读变量,并作为参数提供给函数

<p>
  You've chosen:
  <b data-bind="text: chosenMeal().description"></b>
  (price: )
</p>
<script>
  function formatPrice(price) {
    return price == 0 ? "Free" : "$" + price.toFixed(2);
  }        
</script>

d. Hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。

 Observables 可观察变量

概念

observables, Dependent Observables, Observable Array

核心功能

         observables 可观察变量 Dependency tracking 依赖跟踪

         declarative bindings 显式绑定

         templating 模板

View-Model 视图模型

激活Knockout

ko.applyBindings(myViewModel, document.getElementById('someElementId'))

 可观察变量,声明

var myViewModel = {
    personName: ko.observable('Bob'),
    personAge: ko.observable(123)
};

 可观察变量,读写

         读:myViewModel.personAge()

         写:myViewModel.personName('Mary'),支持链式语法

         绑定,data-bind,注册到可观察变量

可观察变量,显示订阅

var subscription = myViewModel.personName.subscribe(function (newValue) { /* do stuff */ });
// ...then later...
subscription.dispose(); // I no longer want notifications

 依赖可观察变量

var viewModel = {
       firstName: ko.observable('Bob'),
       lastName: ko.observable('Smith')
};
viewModel.fullName = ko.dependentObservable(function () {
    return this.firstName() + " " + this.lastName();
}, viewModel);

 从依赖变量写入可观察变量

viewModel.fullName = ko.dependentObservable({

    read: function () {
        return this.firstName() + " " + this.lastName();
    },

    write: function (value) {
        var lastSpacePos = value.lastIndexOf(" ");
        if (lastSpacePos > 0) { // Ignore values with no space character
            this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
            this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
        }
    },
    owner: viewModel
});

 使用依赖变量数组observable array

var myObservableArray = ko.observableArray();    // Initially an empty array
myObservableArray.push('Some value');          // Adds the value and notifies observers

// This observable array initially contains three objects
var anotherObservableArray = ko.observableArray([
    { name: "Bungle", type: "Bear" },
    { name: "George", type: "Hippo" },
    { name: "Zippy", type: "Unknown" }
]);

 js等价读取信息:length, indexOf, slice

js数组等价操作:pop, push, shift, unshift, reverse, sort, splice

特殊操作:remove, removeAll

2.Hive的架构

绑定语法一

         visible: 绑定到DOM元素,控制元素是否显示

         text: 控制元素的文本值

         html: 控制元素显示的HTML值

         css: 添加或删除一个或多个CSS class到DOM元素上

         style: 添加或删除一个或多个DOM元素上的style值

         attr: 提供了一种方式可以设置DOM元素的任何属性值

太阳集团太阳娱乐登录 1

绑定语法二

         click

         event, 例如keypress, mouseover, mouseout

         submit

         enable

         disable

a.Hive提供了三种用户接口:CLI,JDBC/ODBC和Web GUI(浏览器访问hive).

绑定语法三

         value, <input>, <select>, <textarea>

         checked, <input type=’checkbox’>, <input type=’radio’>

         options, <select>, <select size=’6’>

         selectedOptions, multi-select

         uniqueName

b.元数据存储(Metastore)在数据库中,例如mysql。元数据包括表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。

模板绑定

使用jquery.tmpl,你可以使用任何你模板引擎支持的语法。jquery.tmpl执行如下语法:

    ${ someValue } — 参考文档

    {{html someValue}} — 参考文档

    {{if someCondition}} — 参考文档

    {{else someCondition}} — 参考文档

  {{each someArray}} — 参考文档

c. 解释器、编译器、优化器完成HQL查询语句从词法分析,语法分析、优化及查询计划的生成。结果存储在HDFS中,并在随后又MR调用执行。

创建自定义绑定

ko.bindingHandlers.yourBindingName = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        // This will be called when the binding is first applied to an element
        // Set up any initial state, event handlers, etc. here
    },

    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        // This will be called once when the binding is first applied to an element,
        // and again whenever the associated observable changes value.
        // Update the DOM element based on the supplied values here.
    }
};

编译器把Hive QL转换操作符。操作符是Hive的最小处理单元,代表HDFS的一个操作或者一道MR作业。

加载或保存JSON数据

加载或保存数据:例如使用jQuery的$.getJSON, $.post, $.ajax

转化ViewModel数据到JSON格式,有时需要json2.js类库

         ko.toJS 转化为JS对象

         ko.toJSON 转化为JSON字符串

使用JSON更新ViewModel数据

  手动方式

// 载入冰解析JSON
var someJSON = /* 使用你期望的任何方法获取JSON */
var parsed = JSON.parse(someJSON);

// 更新view model属性
viewModel.firstName(parsed.firstName);
viewModel.pets(parsed.pets);

 或者使用 knockout.mapping

d.Hive的数据存储在HDFS中,大部分查询由MR完成。(包含*的查询,例如 select * from table 不会生成MR任务)

 使用Mapping插件

var viewModel = ko.mapping.fromJS(data); //创建ViewModel
ko.mapping.fromJS(data, viewModel); //更新ViewModel

用法:

         key, create, update, ignore, include, copy

3.Hive的三种模式

两种方式创建viewModel

var viewModel = {
    firstName: ko.observable("Planet"),
    lastName: ko.observable("Earth")
};

viewModel.fullName = ko.dependentObservable({

    read: function() {
        return this.firstName() + " " + this.lastName();
    },

    write: function(value) {
        var lastSpacePos = value.lastIndexOf(" ");
        if (lastSpacePos > 0) { // Ignore values with no space character
            this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
            this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
        }
    },
    owner: viewModel
});

 

var clickCounterViewModel = function() {
    this.numberOfClicks = ko.observable(0);

    this.registerClick = function() {
        this.numberOfClicks(this.numberOfClicks() + 1);
    }

    this.hasClickedTooManyTimes = ko.dependentObservable(function() {
        return this.numberOfClicks() >= 3;
    }, this);
};

ko.applyBindings(new clickCounterViewModel());

 

local模式,单用户模式,多用户模式

 应用举例

 

 常用的控件

太阳集团太阳娱乐登录 2

 源代码:视图

<div class="readout">
    <h3>What's in the model?</h3>
    <table>
        <tr>
            <td class="label">Text value:</td>
            <td data-bind="text: stringValue"></td>
        </tr>
        <tr>
            <td class="label">Password:</td>
            <td data-bind="text: passwordValue"></td>
        </tr>
        <tr>
            <td class="label">Bool value:</td>
            <td data-bind='text: booleanValue() ? "True" : "False"'></td>
        </tr>
        <tr>
            <td class="label">Selected option:</td>
            <td data-bind="text: selectedOptionValue"></td>
        </tr>
        <tr>
            <td class="label">Multi-selected options:</td>
            <td data-bind="text: multipleSelectedOptionValues"></td>
        </tr>
        <tr>
            <td class="label">Radio button selection:</td>
            <td data-bind="text: radioSelectedOptionValue"></td>
        </tr>
    </table>
</div>

<h3>HTML controls</h3>
<table>
    <tr>
        <td class="label">Text value (updates on change):</td>
        <td><input data-bind="value: stringValue" /></td>
    </tr>
    <tr>
        <td class="label">Text value (updates on keystroke):</td>
        <td><input data-bind='value: stringValue, valueUpdate: "afterkeydown"' /></td>
    </tr>
    <tr>
        <td class="label">Text value (multi-line):</td>
        <td><textarea data-bind="value: stringValue"> </textarea></td>
    </tr>
    <tr>
        <td class="label">Password:</td>
        <td><input type="password" data-bind="value: passwordValue" /></td>
    </tr>
    <tr>
        <td class="label">Checkbox:</td>
        <td><input type="checkbox" data-bind="checked: booleanValue" /></td>
    </tr>
    <tr>
        <td class="label">Drop-down list:</td>
        <td><select data-bind="options: optionValues, value: selectedOptionValue"></select></td>
    </tr>
    <tr>
        <td class="label">Multi-select drop-down list:</td>
        <td><select multiple="multiple" data-bind="options: optionValues, selectedOptions: multipleSelectedOptionValues"></select></td>
    </tr>
    <tr>
        <td class="label">Radio buttons:</td>
        <td>
            <label><input type="radio" value="Alpha" data-bind="checked: radioSelectedOptionValue" />Alpha</label>
            <label><input type="radio" value="Beta" data-bind="checked: radioSelectedOptionValue" />Beta</label>
            <label><input type="radio" value="Gamma" data-bind="checked: radioSelectedOptionValue" />Gamma</label>
        </td>
    </tr>
</table>

 

 源代码:View Model

var viewModel = {
    stringValue : ko.observable("Hello"),
    passwordValue : ko.observable("mypass"),
    booleanValue : ko.observable(true),
    optionValues : ["Alpha", "Beta", "Gamma"],
    selectedOptionValue : ko.observable("Gamma"),
    multipleSelectedOptionValues : ko.observable(["Alpha"]),
    radioSelectedOptionValue : ko.observable("Beta")
};
ko.applyBindings(viewModel);

 

参考: 复习:AngularJS的数据...

4.Hive多用户模式搭建

本文由澳门太阳娱乐集团官网发布于脚本专栏,转载请注明出处:上学笔记,2016读书笔记

上一篇:【太阳集团太阳娱乐登录】fill与memset的区别 下一篇:没有了
猜你喜欢
热门排行
精彩图文