black

IT兄弟连 HTML5教程 CSS3属性特效 小结及习题

不想你离开。 提交于 2019-12-06 09:27:34
本章小结 CSS3新增了许多属性,CSS3样式新增了一种颜色模式rgba用来制作透明色,比CSS的颜色模式多了一个透明度的设置。文字的CSS3特效有文字阴影、文字描边、文字排版和文字省略等。另外,CSS3增加了弹性盒模型,我们可以为盒模型增加阴影和倒影。CSS3的分栏布局让WEB开发人员轻松的让文本呈现多列显示。传统的圆角生成方案,必须使用多张图片作为背景图案。CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,仅需要通过设置border-radius属性即可。通过CSS3,我们能够创建圆角边框,向矩形添加阴影,使用图片来绘制边框。CSS3 Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。CSS3规范中对背景这一部分,新加入设定多个背景图片、指定背景大小、设置背景渐变等功能。遮罩提供一种基于像素级别的,可以控制元素透明度的能力,类似于png24位或png32位中的alpha透明通道的效果。transition允许CSS的属性值在一定的时间区间内平滑地过渡。2D变换和3D变换能够对元素进行移动、缩放、转动、拉长或拉伸。制作动画需要使用animation属性,执行动作需要由关键帧@keyframes来控制。 本章习题 1.在CSS中,注释代码是(B) A.<!--> B./**/ C.// D.|| 2

(翻译)RabbitMQ Java Client教程(四)路由

妖精的绣舞 提交于 2019-12-05 15:05:58
原文地址: https://www.rabbitmq.com/tutorials/tutorial-four-java.html 在前一篇教程中我们构建了一个日志系统。现在我们知道如何把日志消息广播发送给多个接受者了。 在本篇教程中我们将增加一个功能——允许订阅者只获取它感兴趣得一部分消息。比如我们仅把严重错误的日志存储到日志文件,而将所有的日志消息都打印到控制台。 绑定 在之前的章节中我们已经创建过交换器和队列的绑定。你可能还记得下边的代码: channel.queueBind(queueName, EXCHANGE_NAME, ""); 绑定表示交换器和队列之间的一种关系。这可以简单描述为:队列只对这个交换器的消息感兴趣。 绑定关系可以使用一个额外的==routingKey==参数。为了避免与==basic_publish==中的参数混淆,在这里我们叫它==binding key==。下边是我们使用一个key参数创建绑定关系的代码: channel.queueBind(queueName, EXCHANGE_NAME, "black"); binding key的作用于交换器的类型有关。我们之前使用的fanout交换器,会直接忽略该参数。 Direct 交换器 我们前一篇教程的日志系统会广播消息给所有的消费者。现在我们要扩展这个系统,使它可以根据消息的严重程度进行过滤

Flutter 之 ListView

左心房为你撑大大i 提交于 2019-12-05 12:16:04
在 Flutter 中,ListView 可以沿一个方向(垂直或水平方向)来排列其所有子 Widget,常被用于需要展示一组连续视图元素的场景 ListView 构造方法 ListView:仅适用于列表中含有少量元素的场景 ListView.build:适用于子 Widget 比较多的场景 ListView.separated:适用于需要设置分割线的场景 构造方法名 特点 使用场景 ListView 一次性创建好所有子 Widget 适用于展示少量连续子 Widget 的场景 ListView.build 提供了子 Widget 创建方法,仅在需要展示时才创建 适用于子 Widget 较多,且视觉效果呈现某种规律性的场景 ListView.separated 提供了子 Widget 创建方法,仅在需要展示时才创建,且提供了自定义分割线的功能 适用于子 Widget 较多,且视觉效果呈现某种规律性、每个子 Widget 之间需要分割线的场景 ListView 可以通过设置 children 参数,将所有子 Widget 包含到 listView 中,但这种创建方法要求提前将所有子 Widget 一次性创建好,而不是等到真正需要在屏幕上显示时才创建,即这种方法是导致性能下降。因此,这种方式只适合列表中含有少量元素的场景 class List extends

聊聊Garbage Collector的SATB

安稳与你 提交于 2019-12-05 05:46:25
序 本主要研究一下Garbage Collector的SATB CMS、G1、Shenandoah在进行concurrent marking的都采用了SATB的技术 Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark 包括Init Mark(Pause)、Concurrent Mark、Final Mark(Pause) Concurrent evacuation( 这个阶段用到了Brooks Pointers( object version change with additional atomically changed indirection )进行copy ) Concurrent update references (optional) 包括Init update Refs(Pause)、Concurrent update Refs、Final update Refs(Pause) Shenandoah在进行concurrent marking的时候采用了SATB的技术 SATB SATB全称为Snapshot At The Beginning,其要点如下: mark的过程就是遍历heap标记live object

JavaScript继承(六)——寄生组合式继承

余生长醉 提交于 2019-12-04 19:50:05
JavaScript继承(三)——组合继承 中讲到,组合继承是JavaScript中最常用的继承模式,但是它也有自己的不足之处,现在我们就来剖析它的不足,如下示例: function Human(name){ this.name = name; this.colors = ['white', 'yellow', 'black']; } Human.prototype.sayName = function(){ return this.name; } function Person(name, job){ //继承属性 Human.call(this, name); //定义自己的属性 this.job = job; } //继承方法 Person.prototype = new Human(); Person.prototype.constructor = Person; //定义自己的方法 Person.prototype.sayJob = function(){ return this.job; } let p = new Person('bob', 'JavaScript'); console.log(p.sayName());//bob 使用组合继承让 Person 继承 Human 实际上分为两步: Human.call(this, name) 继承属性。 Person

JavaScript继承(二)——借用构造函数

夙愿已清 提交于 2019-12-03 17:57:24
JavaScript继承(一)——原型链 中提出原型链继承的两个问题:一是原型的数据共享问题,二是创建子类型的实例时,不能向父类型的构造函数中传递参数。这两个问题的根源还是在于使用原型模式创建对象,可以参考 JavaScript创建对象(三)——原型模式 。本篇文章来讨论一下这两个问题的解决方案——借用构造函数继承。 借用构造函数也被称为伪造对象或经典继承。这种技术的基本思想相当简单,即在子类型构造函数的内部调用父类型构造函数。在Javascript中,从本质上来讲,我们声明的函数不过是 Function 类型在特定执行环境中执行代码的实例,因此可以通过使用 apply 方法在创建子类型的对象时,把子类型的执行环境传递给父类型。 首先我们来看下 apply 的用法,如下代码所示: var nums = { n1: 10, n2: 8 } function sum(a, b) { console.log(this); console.log(arguments); } sum(2, 4);//this: window 。 arguments:[2, 4] sum.apply(nums, [2, 4]);//this: nums 。 argument:[2, 4] 直接调用 sum 时,函数 sum 中的 this 指代的是调用 sum 的执行环境的变量对象,即全局变量对象

2017acm香港区域赛 Black and White

匿名 (未验证) 提交于 2019-12-02 22:56:40
题目: 有一个初始颜色全为白色的n*n的棋盘,每次选一个长方形区域反转颜色,问最后会有几个黑色格子。n,k<=10000 分析: 和扫描线求面积并一样。记录每条横边,向x轴投影。只不过不区分上边和下边。按高度排序后,对于每条边,向x轴投影,将投影的区间进行一次 xor 1 的操作。所以线段树维护区间异或操作,然后每次询问区间和。 代码: #include<bits/stdc++.h> #define lson rt<<1,l,(l+r)/2 #define rson rt<<1|1,(l+r)/2+1,r using namespace std; const int MAXN = 1e4+5; int n,k,cnt; struct Edge { int l,r,h; bool operator < (const Edge &e) const { return h < e.h; } }e[MAXN<<1]; struct Seg_Tree{ int sum[MAXN << 2], tag[MAXN<<2]; void build() { memset(sum,0,sizeof sum); memset(tag,0,sizeof tag); } void pushup(int rt) { sum[rt] = sum[rt<<1] + sum[rt<<1|1]; } void

BeagleBone Black教程之BeagleBone Black使用到的Linux基础

≡放荡痞女 提交于 2019-12-01 23:46:01
BeagleBone Black教程之BeagleBone Black使用到的Linux基础 BeagleBone Black涉及到的Linux 基础 在许多没有 Linux 相关经验的人看来, Linux 看起来非常可怕。一些“好”发行版会给你配备华丽的桌面(例如 OpenSUSE 使用的 KDE 和 Ubuntu 使用的 Unity ),“差一些”的就配备一些朴素的桌面(例如 Xfce ),而“没人性”的就只有命令行界面了。实际上 Linux 并不可怕,可怕的是连尝试的勇气都没有。本章就带你了解一下 Linux 最基础的命令行和文件系统。在你亲自尝试了其中的每个命令之后,你就会了解到命令行的魔力,同时也为之后的学习打下基础。 BeagleBone Black的 命令行 在第 2 章中,我们的主要任务就是连接 BeagleBone ,并且得到命令提示符。在命令提示符下,你可以输入命令来执行启动程序、管理文件、更新系统以及编译程序等等的操作。默认情况下, BeagleBone 的命令提示符类似这样: root@beaglebone:~# 这看似是一串没规律的字符串,但其中大有文章,下面就来一一解释其中的各个部分: q root :这部分用来表示当前的登录用户,这里是 root 。 root 用户是一个特殊的用户,它存在于每一个 Linux 系统中。它也被称作超级用户(

其他主流开源硬件简介BeagleBone Black快速入门

做~自己de王妃 提交于 2019-12-01 23:44:49
其他主流开源硬件简介BeagleBone Black快速入门 1.3 其他主流开源硬件简介 开源硬件种类繁多,但主要有两款开源硬件常与 BeagleBone 比较。它们就是 Arduino 和 Raspberry Pi (即树莓派)。之所以常拿他们来比较,是因为他们有共同点也有不同点。在笔者看来,他们之间可以互相补充,但是均是不可替代的。下面就来简单介绍一下这两种开源硬件本文选自 BeagleBone Black快速入门教程 。 1.3.1 Arduino Arduino 常被用来称呼 Arduino 的硬件控制器板。严格来说, Arduino 代表着由软件、硬件、社区以及分享精神组成的一个完整体系。鉴于本书的定位,这里笔者暂且以 Arduino 来表示 Arduino 的控制器板。 Arduino 要比 Beaglebone Black 小一些,如图 1.2 所示是一款 Arduino 兼容板 本文选自 BeagleBone Black快速入门教程 。 图 1.2 Arduino 兼容板 Arduino 主要以 Atmel 的微控制器为核心,并且定义了一组标准的接口规范,搭配以丰富的函数库,可以非常容易地驱动各种传感器和致动器。 Arduino 主要有如下特点: q 价格比较低廉; q 有丰富的盾板可以直接使用; q 有配套的 IDE ,免费并且开源; q 硬件开源

Beaglebone Black的启动

人盡茶涼 提交于 2019-11-30 19:46:22
Beaglebone Black的启动 第 1 章 准备开始 Beaglebone Black 上最显眼的恐怕就是板子两侧的扩展端口,一侧有 46 个端口,共 92 个端口 Beaglebone Black的启动 。并且,每个数字端口有 8 种不同的模式供选择。通常许多人对这样一个灵活并且集多种功能于一身的设备会显得无从下手。在之后的学习中,你无时无刻都会体会到完成一件不会只有一种方式:有许多不同的方式可以得出相同的结果。暂且不提端口的 8 种模式,就连连接方式都有多种不同的方式本文选自 BeagleBone Black项目实训手册大学霸 。 1.1 启动你的 Beaglebone Black 你有多种连接 Beaglebone Black 开发板的不同方式——更准确地说,你有多种不同的方式访问到它并开始使用 BoneScript 编程。 Beaglebone Black 最容易使用的编程软件是基于 Web 的 Cloud9 IDE ,它已经内建在操作系统中了。当然,在本节中也会介绍到其他的编程方式 本文选自 BeagleBone Black项目实训手册大学霸 。 1.1.1 使用 USB 连接 Beaglebone Black 已经将驱动和帮助页面内建在了操作系统中,这可以使你很方便地将 Beaglebone Black 连接到你的电脑。最新版本的 Beaglebone