down

Android触摸反馈

限于喜欢 提交于 2019-12-09 12:12:03
事件分发 当点击事件发生时,事件最先传递给Activity,Activity会首先将事件将被所属的Window进行处理,即调用 superDispatchTouchEvent() 方法。通过观察superDispatchTouchEvent()方法的调用链,我们可以发现事件的传递顺序: PhoneWinodw.superDispatchTouchEvent() DecorView.dispatchTouchEvent(event) ViewGroup.dispatchTouchEvent(event) 事件一层层传递到了ViewGroup里。 每到一个子view,看他的onInterceptTouchEvent 方法是否拦截,ontouch是否消费方法,如果没有继续向下dispatchTouchEvent分发事件,都不处理向上传,当回到顶级,若顶层(activity)也不对此事件进行处理,此事件相当于消失了(无效果)。 View没有onInterceptTouchEvent()方法,有dispatchTouchEvent,一但有点击事件传递给它,它的ouTouchEvent()方法就会被调用。 ouTouchEvent是否消费事件取决于 ACTION_DOWN 事件 或 POINT_DOWN 事件是否返回 为 true 递归 ViewGroup(View)

学习MotionEvent的分发

社会主义新天地 提交于 2019-12-07 17:26:12
事件分发学习 事件的分发肯定是从Activity开始的. Acivity的dispatchTouchEven代码如下 public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } 这里就从Activity到了window. Window只有唯一一个实现类PhoneWindow. 所以代码就到了PhoneWindow的superDispatchTouchEvent(ev); @Override public boolean superDispatchTouchEvent(MotionEvent event) { return mDecor.superDispatchTouchEvent(event); } 这个mDecore的声明如下: // This is the top-level view of the window, containing the window decor. private DecorView

Android触摸反馈

依然范特西╮ 提交于 2019-12-06 20:26:23
事件分发 当点击事件发生时,事件最先传递给Activity,Activity会首先将事件将被所属的Window进行处理,即调用 superDispatchTouchEvent() 方法。通过观察superDispatchTouchEvent()方法的调用链,我们可以发现事件的传递顺序: PhoneWinodw.superDispatchTouchEvent() DecorView.dispatchTouchEvent(event) ViewGroup.dispatchTouchEvent(event) 事件一层层传递到了ViewGroup里。 每到一个子view,看他的onInterceptTouchEvent 方法是否拦截,ontouch是否消费方法,如果没有继续向下dispatchTouchEvent分发事件,都不处理向上传,当回到顶级,若顶层(activity)也不对此事件进行处理,此事件相当于消失了(无效果)。 View 没有onInterceptTouchEvent()方法 ,有dispatchTouchEvent,一但有点击事件传递给它,它的ouTouchEvent()方法就会被调用。 ouTouchEvent是否消费事件取决于 ACTION_DOWN 事件 或 POINT_DOWN 事件是否返回 为 true 递归 ViewGroup(View)

ceph osd 知识

◇◆丶佛笑我妖孽 提交于 2019-12-06 14:35:03
osd对象存储设备: ceph中数据存储过程首先数据会被分割成多个object,(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。由于object的数量很多,为了有效减少了Object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group ):PG用来管理object,每个object通过Hash,映射到某个pg中,一个pg可以包含多个object。 Pg再通过CRUSH计算,映射到osd中。如果是三副本的,则每个pg都会映射到三个osd,保证了数据的冗余。写入数据的过程如下图所示: 完成存储用户数据的工作绝大多数都是由osd daemon进程来实现的。集群中一般有多个osd,client将直接与osd进行I/O操作的交互,而不再需要ceph monitor干预。在ceph集群中每个osd高度自治,数据复制,数据恢复,数据迁移等都由osd自主进行而无需中心控制器干预;osd之间相互监督,确保故障能够被及时捕获和上报至monitor;通过osd与客户端、以及osd之间相互学习和点对点传播osdmap,ceph能够快速进行故障切换和恢复,并最大程度保证对外提供不中断的存储服务。 网络通讯 在设计上,ceph将整个RADOS集群网络分为两个独立的平面

Caffe源码-Layer类

浪子不回头ぞ 提交于 2019-12-06 13:12:34
Layer类简介 Layer是caffe中搭建网络的基本单元,caffe代码中包含大量Layer基类派生出来的各种各样的层,各自通过虚函数 Forward() 和 Backward() 实现自己的功能。 Forward() 函数用于前向计算过程,由 bottom blob 计算 top blob 和 loss ,实现数据由浅至深的传递。而 Backward() 函数用于反向传播过程,由 top blob 的计算 bottom blob 的梯度,将网络的预测误差向浅层网络传递,以便更新网络的参数。 layer.hpp源码 /** * @brief An interface for the units of computation which can be composed into a * Net. * * Layer%s must implement a Forward function, in which they take their input * (bottom) Blob%s (if any) and compute their output Blob%s (if any). * They may also implement a Backward function, in which they compute the error * gradients with

部署gitlab并汉化

大憨熊 提交于 2019-12-06 12:45:42
一.gitlab简介 gitlab是一个用于仓库管理系统的开源项目。使用git作为代码管理工具,并在此基础上搭建起来的web服务。可通过web界面进行访问公开的或者私人的项目。它拥有与github类似的功能,能够浏览源代码,管理源代码缺陷和注释。可以管理团队对仓库的访问,它非常易于为浏览器提交过的版本提供一个文件历史库。团队成员可以利用内置的简单聊天程序(wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。 二.gitlab安装 1.下载任意版本的gitlab的rpm包 官方地址: https://about.gitlab.com/ 推荐下面的地址下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm这里使用的是gitlab-ce-12.3.5版本,你可以根据自己的需求下载。 [root@git ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm 2.安装gitlab [root@git ~]# yum -y localinstall gitlab-ce-12.3.5-ce.0.el7

十字链表完成稀疏矩阵相加

谁说我不能喝 提交于 2019-12-06 11:43:54
#include <iostream> #include <malloc.h> #include <stdio.h> using namespace std; typedef struct OLNode { int i,j; int e; struct OLNode *right,*down; }OLNode,*OLink; typedef struct { OLink *rhead,*chead; int mu,nu,tu; }CrossList; int CreateSMatrix_OL(CrossList &M) { int i,j,k,e; OLink p,q,q1; cout<<"请分别输入该矩阵的行数,列数,所含非零元的个数:"<<endl; cin>>M.mu>>M.nu>>M.tu; if(!M.mu||!M.nu||!M.tu||M.mu*M.mu<M.tu) return 0; M.rhead=(OLink *)malloc((M.mu+1)*sizeof(OLink));//默认从第一行和第一列开始 if(!M.rhead) return 0; M.chead=(OLink *)malloc((M.nu+1)*sizeof(OLink)); if(!M.chead) return 0; for(k=1;k<=M.mu;k++) M.rhead[k]=NULL;

我不算好,但我想变好

眉间皱痕 提交于 2019-12-06 08:45:26
一直以来我都是一个“特殊日主义者“。制定计划都是在月首一日、周一等等这样具有开始意味的日子,莫名感觉会比较有仪式感! 可是呢,事实上计划开始的那一日才是最值得回味,最有意义的!对吧! 哪怕就在刚才我都在考虑,要不要下个周一 再 开始跑步,下个周一 再 开始写博客。为什么用再,是因为我曾无数次给自己定下目标,无数次开始然后无数次结束!周复一周,月复一月,时间这样浪费掉了! 作为一个正在度过自己第二个本命年的女性来说,我真的会惶恐!惶恐自己不再年轻,特别是身边都是些97的弟弟妹妹!记得前不久突然有一天我意识自己真的不在是最年轻的那一批人了,然后失落,恐惧,焦灼都在那一天袭来! 我有一个坏毛病:心情down到低谷的时候,我就会像一只脱缰的野马,没有办法控制自己!无心工作,暴饮暴食,重复以往!作为一个一直在减肥事业上奔腾的人,暴饮暴食会让我原本down到谷底的心再次下沉!因果循环,不可终日。这个坏毛病是真的病,得改! 虽然我制定过很多计划都没有实现,但是我还是依旧要恬不知耻的在这里说,离2020年还有29天的时间,希望再给自己一次机会! 在这29天的时间里,我会用心记录自己的生活。完成制定的目标! 希望大家都好!做到恰到好处的投入和喜欢! 来源: https://www.cnblogs.com/Cocoomg/p/11973591.html

ICPC 2019-2020 North-Western Russia Regional Contest

时光毁灭记忆、已成空白 提交于 2019-12-06 07:44:58
目录 Contest Info Solutions Problem A. Accurate Movement Problem B. Bad Treap Problem E. Equidistant Problem H. High Load Database Problem I. Ideal Pyramid Problem J. Just the Last Digit Problem K. King’s Children Problem M. Managing Difficulties Contest Info Practice Link Solved A B C D E F G H I J K L M 8/13 O O - - O - - O O O Ø - O O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Solutions Problem A. Accurate Movement 签到题。 代码: view code #include <bits/stdc++.h> using namespace std; int ceil(int x, int y) { return (x + y - 1) / y; } int main() { int a, b, n; while (scanf("%d%d%d", &a, &b, &n) != EOF) { int

python_守护线程

∥☆過路亽.° 提交于 2019-12-06 05:34:25
一、守护线程 1、主线程结束,子线程立马结束 实例: 1 import threading,time 2 def down_load(): 3 time.sleep(5) 4 print('运行完了') 5 for i in range(10): 6 t = threading.Thread(target=down_load) 7 t.setDaemon(True) #设置子线程为守护线程 8 t.start() #启动xianc 9 print('over') 来源: https://www.cnblogs.com/xumb/p/11964170.html