事件模型指的是对象之间进行通信的设计模式
事件模型指的是对象之间进行通信的设计模式。 对象1给对象2发送一个信息相当于对象1引用对象2的方法。 模型即是一种设计模式(约定俗成) 对象对为三种: ①事件源:发出事件者; ②事件对象:发出的事件本身; ① 事件监听器:提供处理事件指定的方法。 Java AWT事件模型也称为授权事件模型,指事件可以和监听器之间事先建立一种关系:约定那些事件如何处理,由谁去进行处理。这种约定称为授权。 一个事件源可以授权多个监听者(授权也称为监听者的注册); 多个事件源也可以注册多个事件监听器。 监听者对于事
Linux平台 Oracle 18c RAC安装Part1:准备工作
一、实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二、安装前期准备工作 2.1 各节点系统时间校对 2.2 各节点关闭防火墙和SELinux 2.3 各节点检查系统依赖包安装情况 2.4 各节点配置/etc/hosts 2.5 各节点创建需要的用户和组 2.6 各节点创建安装目录 2.7 各节点系统配置文件修改 2.8 各节点设置用户的环境变量 Linux平台 Oracle 18c RAC安装指导: Part1:Linu
opencv-阈值分割 Wellner 自适应阈值二值化算法
关于自适应阈值,可参考:Wellner 自适应阈值二值化算法 一、大津法OTSU(最大类间方差法) 参考:非黑即白——图像分割入门篇之Otsu阈值 自适应阈值分割—大津法(OTSU算法)C++实现 灰度图像的自动阈值分割(Otsu 法) 在实际运用过程中,大津法表现得最稳定,且无需参数,对于现实图像保持了最好的均匀性和形状特性,而且被商业软件GIMP 和学术软件Matlab采纳为自动阈值法。 原理: Otsu分割方法求取阈值是求得使类间方差最大的阈值: 假设待分割图像的像素数为N(就是常说的几
在多线程中使用静态方法是否有线程安全问题
类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类,实例成员则属于对象,即类的实例。 简单讨论一下在一个类中使用静态字段(static field)和静态方法(static method)是否会有线程安全问题。 我们在知道, 静态字段(static field)和静态方法(static method)的调用是通过类来调用。静态方法不对特定的实例操作,只能访问静态成员。实例方法可对特定的实例操作,既能访问静态成员,也能访问实例成
没有备份怎么恢复被drop的表(利用undrop-for-innodb)
介绍: 也许大家都难以理解,这么重要的数据为啥不备份(或者备份不可用)?而且还任性的drop table了。显然有备份是最好的,但是它们并不总是可用的。这种情况令人恐惧,但并非毫无希望。在许多情况下,可以恢复数据库或表中的几乎所有数据。恢复计划取决于InnoDB是否将所有数据保存在一个ibdata1中,还是每个表都有自己的表空间。本文将考虑innodb_file_per_table=OFF的情况。 drop 表恢复其他方法: 利用master同步 伪master+Binlog+同步 利
图解TCP/IP笔记(3)——IP协议
目录 IP协议 IP寻址 IP地址组成 IP地址分类 广播地址 子网掩码 全局地址和私有地址 IP协议 跨越不同数据链路,实现两端节点之间的数据包传输 数据链路:只负责某一个区间之间的通信传输 IP协议:将数据包发给最终的目标地址,点对点通信 面向无连接 在发包之前,不需要建立与对端目标地址的连接 【好处】简化和提速 IP寻址 IP地址——连接到网络中,所有主机中识别出进行通信的目标地址 每块网卡都得设置IP地址,可以配置多个IP地址。 IPv4 4个8位 / IPv6 8个8位 IP地址组成
随机验证码 随机字符串
Math.ceil()向上取整 Math.floor()向下取整 Math.round() 四舍五入 Math.pow(n,x);n的x次方 Math.random()获取随机数0-1 [0,1) Math.Max() 第一步: 先定义一个变量, 接收字符串 var str='1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 第二步: 定义一个数组, 接收分割的字符串; 用split分割字符串, 返回一
容器与容器编排实战系列 1 -- Docker 安装
CentOS7.4 下安装Docker 详细步骤 第一步:安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
systemctl ena
【阅读笔记】0x01 位运算
1.补码表示: ~x=-1-x 2.自然溢出:unsigned long long 自动对2^32取模,可以用来hash。 3.基本位运算操作: 左移:1<<n=2^n n<<1=2n,n<<2=4n,n<<3=8n。。。 算术右移:n>>1=n/2 ,n>>4=n/16。。。算术右移=除以2向下取整 e.g. (-3) >> 1 = -2,3>>1=1 P.S. 整数/2 = 除以2向0取整 e.g. (-3)/2=-1 , 3/2=1 tips:以下二进制以0为最低位,即k从0开始。 取出
Linux 内核链表实现和使用(一阴一阳即为道~)
0. 概述 学习使用一下 linux 内核链表,在实际开发中我们可以高效的使用该链表帮我们做点事, 链表是Linux 内核中常用的最普通的内建数据结构,链表是一种存放和操作可变数据元 素(常称为节点)的数据结构,链表和静态的数组不同之处在于,它所包含的元素都是动 态创建插入链表的,在编译时不必知道具体需要创建多少个元素。 另外也因为链表中 每个元素的创建时间各不相同,所以它们在内存中无须占用连续内存区,正是因为元素 不连续存放,所以各元素需要通过某种方式被连接在一起,于是每个元素都包含一个指
自定义view 布局
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_par
Frangment+Tabyout布局
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android=&
Fragment管理
package com.example.w.fqyuekao;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
...
vector和list的使用
vector是C++标准模板库中的部分内容,是一种容器。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
使用它时需要包含头文件:#include
vector类型的初始化:
vector a ; //声明一个int
今日推荐
周排行