01
首先经过测试,国际服的安卓和苹果是可以一起玩的,这两个平台的玩家可以相互添加好友,并且在地图中也可以看到各自的身影。既然国际服才用了互通的规则,那么国服自然也应该互通,但是受到系统兼容等问题的影响,官方表示公测之初两个服务器不会互通,要等待后续版本更新。
《光·遇》是一款社交冒险游戏。光之后裔秉持蜡烛,在天空王国探索过去的历史,拯救先祖灵魂;与伙伴们遨游云端,携手冒险,寻找自我的价值。 目前游戏包含了七个地图,分别是迷雾氤氲的初生地晨岛、绿意盎然的云野、潮湿繁茂的雨林、晚霞瑰丽的霞谷、庄严肃穆的暮土、寂静神圣的禁阁以及最终挑战”暴风眼”。
安卓和苹果可以一起玩,但前提是国际服,国际服可以一起玩,国内服则不可以。在国服中,安卓玩家是不能够和苹果玩家一起玩的,以为苹果手机的系统和国服安卓系统不兼容,所以是不能够一起玩的。但是在国际服中安卓玩家是可以和苹果玩家一起联机的。玩家只要在登录游戏就可以相互添加好友了,这样玩家就能够一起玩耍了。
玩家在游戏中有很多的玩法能够选择,不同的玩法能够为玩家带来不一样的游戏体验。在游戏中玩家最重要的玩法就是在游戏中获得更多的游戏奖励了,玩家想要得到游戏奖励就要在游戏中寻找失落的先祖,在游戏中有很多的先祖能够被玩家找到,这些先祖都是在之前的一场战斗中失落的,玩家要在游戏中进行自由的探索来寻找这些先祖,玩家可以在探索的时候收集不同的物品来解放先祖。
Mysql的隔离级别分为: 读未提交、读已提交、可重复读、串行读
比较常用的两种分别是读已提交、可重复读,那么Mysql是如何保证多个事务读取一条数据的隔离性的?
undo Log 当我们读取一条被其他事务变更的数据时,会在undo Log中产生一条变更前的日志.这个日志可以专门用于回滚。
我们大概来看一下这个日志的大概结构:
前面三个字段属于变更前的,另外:
trx_id : 代表是哪个事务编号修改的。
需要注意的是该编号是严格按照递增顺序产生的。比如1、2、3、4、5
roll_pointer : 相当于一个链表,往下查找就是上一次更改前的。当一条数据被更改了多次之后,由该字段构建成一个链表俗称版本链。
有了undo Log的话可以很快追溯到更改之前的数据,有了这个之后,假设多个事务都在读同一条记录,并且还发生了修改,这个时候
哪些能读?哪些版本才是符合当前事务该看到的数据呢? MVCC 多版本并发控制,指的就是在使用读提交和可重复读隔离级别的事务,在执行普通select操作时,访问记录版本链的过程;使不同事务的读写、写读操作并发执行,提高系统性能;
Read View 读视图 基于当前活跃事务列表构成的ReadView,当某个事务创建ReadView时,会将当前活跃的事务也加入其中。
我们来看一下大概结构:
readview中四个比较重要的概念:
m_ids:表示在生成readview时,当前系统中活跃的读写事务id列表;
比如创建事务10创建RV时,系统正在活跃的事务有5,6,7那么5,6,7都会加入到10的m_ids中.
min_trx_id:表示在生成readview时,当前系统中活跃的读写事务中最小的事务id,也就是m_ids中最小的值;
max_trx_id:表示生成readview时,系统中应该分配给下一个事务的id值;
creator_trx_id:表示生成该readview的事务的事务id;
有了readview,在访问某条记录时,按照以下步骤判断记录的某个版本是否可见:
基于可重复读 下面是对于同一条数据的多个事务读取流程:
ReadView(简称RV)一旦创建是不可变的,即便其中某个线程事务提交了,也不会影响当前线程创建的ReadView,你可以理解为一个副本快照。
总的来说判断就三个条件:
undo log的数据中包含的trx_id是否符合min_trx_id和max_trx_id之间
1.1 如果小于min_trx_id说明创建RV 之前 的时候这个trx_id就已经事务提交了,不活跃了,说明可以读。
1.2 如果大于max_trx_id说明这个版本是在创建RV 之后 产生的,不可读。因为创建RV时你这个版本还不存在。
1.3 如果是在这之间的再看步骤2查看trx_id是否包含m_id之中:
2.1 包含说明创建RV的时候,还是活跃(没提交)事务。那么是不可见的,脏读;继续看步骤3
2.2 不包含说明创建RV之前这个事务已经被提交了,那么是可见的。到了这里说明这条数据的变更版本在RV之内,则要查看creator_trx_id与trx_id是否一致:
3.1 一致说明就是当前事务创建的;允许使用;
3.2 否则说明是当前RV的其他事务操作的不能使用; 基于上述规则,很好的解决了一致性读的问题;当前线程创建完RV之后,读到的数据都是相同的;不会读到其他事务未提交和后提交的数据。
可重复读的RV是以一个事务的开始和结束作为它的生命周期的
基于读提交级别的流程 读提交级别是能够读到其他事务提交的数据的,那么这个时候上面的流程是不是满足不了呀?因为假设ABC都在一个RV之中,C提交了数据,但是B看不到呀,因为条件2就满足不了呀;
这个时候Mysql就把这个级别的RV做了调整,每次读取数据的时候会创建一个新的ReadView
当RV中的事务B提交了事务的时候,A每次会创建一个新的RV来查看数据版本,新的RV的m_ids肯定是不包含已经提交的事务B的,这个时候就能够读到事务B的数据了。
之前一直以为可重复读没有解决幻读的问题,现在基于这个流程另外加上命令行调试之后发现应该是解决了的。
因为一旦创建RV的话,当前活跃事务快照已经生成,这个时候如果新来的事务或者快照内的事务新增了数据也不会读到:
快照事务内产生的变更在前面说的2.1会被跳过快照之后会在1.2被过跳过 如有问题,欢迎留言交流。
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 1993: illegal multibyte sequence 今天在命令行执行python代码时报了编码错误,很奇怪,网上搜查了,都只说了解决方法,却没有说原因
我找了半天整理了一下我遇到的情况和原因
我是在读取文件时报了这个错,错误的大概意思是,gbk编码方式无法读取我的我的文件,非法的字节序列,很明显是编码格式的问题,但是为什么会有这个问题呢
>>> f = open('D:\\Cynthia\\Desktop\\businesstrip\\依赖文档.txt','r') >>> f.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 14: illegal multibyte sequence 我按照网上提示的改了代码,可以了
>>> f = open('D:\\Cynthia\\Desktop\\businesstrip\\依赖文档.txt','r',encoding='UTF-8') >>> f.read() 'dubbo 地址:\n\n<dependency>\n <groupId>com.huatu</groupId>\n <artifactId>esb-interface</artifactId>\n <version>1.1.1.RELEASE</version>\n</dependency>' 说明确实编码环境的问题,那么问题来了,是因为python的默认编码是gbk的原因吗?
python3默认编码 >>> import sys >>> print(sys.stdout.encoding) utf-8 结果是,python3的默认编码是utf-8
文档的编码格式UTF-8 那么我的文档的编码格式呢,这边无法截图,只能告诉结果,编码是UTF-8的
联想R7000的Deepin20系统开启显示器扩展 深度论坛里我的问题贴
基本信息 机器配置:联想拯救者R7000 2020;CPU:AMD R7 4800h;独显:NVIDIA 1650
出现的问题:系统安装时勾选了闭源的NVIDIA驱动,但是外接HDMI时,显示器无信号无法正常显示。百度教程,卸载了预装的闭源驱动,重装了NVIDIA网站上的最新驱动NVIDIA-Linux-x86_64-465.31。重启电脑后发现,HDMI可以显示了,但是笔记本的屏幕不能进入桌面了。
安装NVIDIA官网驱动 参考Deepin安装NVIDIA显卡驱动其中的卸载及安装操作
开启独显直连 进入拯救者的BIOS,开启独显直连即可。
第一种方式:
1.1 导出项目依赖包:
pip freeze > requirements.txt
1.2 先将本地包打包到packages目录下:
pip download -d packages/ -r requirements.txt 1.3 然后到将包离线安装到执行环境:
pip install --no-index --find-links=packages/ -r requirements.txt 第二种方式:
使用setup.py文件,配置依赖包:
然后到执行环境安装:python setup.py install
第三种方式:(打包成二进制可执行文件)
pyinstaller可以打包成执行程序。
缺点:在Mac系统上打成的执行程序只能在Mac上执行,在windows上打出的包,只能在windows系统中运行,linux系统同样。
wheel 打包方式:https://www.jianshu.com/p/7983c0206dc8
python虚拟环境管理: virtualenv(https://www.bilibili.com/read/cv4755237/)、pyenv、pipenv
others:
flask项目+nginx+uwsgi web部署:https://www.jb51.net/article/165215.htm
原标题:PC平板二合一 运行win10/安卓双系统
前瞻科技 1 月 18 日讯:小米要做笔记本大家都知道了,携带着极致性价比的小米笔记本将给 PC 领域带来什么新的风暴,不过想要在 PC 领域搅风搅雨的并非只有小米,华为去年 10 月份也曝光了 MateBook 商标,紧参一脚也跟着进入 PC 领域,前不久更是曝光了华为挖人研发 PC,可以说是确认了华为 MateBook 的存在,只不过和小米笔记本一样,到现在都只有传闻,并没有官方的真容现身。
就在今天早上,微博著名爆料博主@摩卡 RQ 发布一条微博称,他从供应链获得消息,华为并不是打算做传统的笔记本,而是想打造一款 PC 平板二合一的产品,该产品将搭载 Intel 处理器,运行安卓+Win10 双系统。
按照博主的说法“拆开就是个安卓平板,插上又是个标准 PC。”
更有意思的是后面一句话,他表示这类产品并不是没有先例,只不过是没有在市场上普及,所知者不多而已,而华为小米的进入很有可能会推动二合一本的市场占有率和知名度。
这句话请注意“华为小米”,那么言下之意,就是小米笔记本也有可能会是 PC 平板二合一产品咯?
如此一来,你会选择华为还是小米笔记本呢?返回搜狐,查看更多
责任编辑:
本地连接远程zookeeper,显示zookeeper not connected 连接失败
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'consumerComponet': Injection of @Reference dependencies is failed; nested exception is java.lang.IllegalStateException: zookeeper not connected 解决方案:
设置 以下连接超时时间
dubbo.registry.timeout=10000000 dubbo.consumer.timeout=10000000 # 设置最大等待时间为10秒 dubbo.metadata-report.timeout=10000000 # 配置中心连接时间改为10秒 dubbo.config-center.timeout=10000000 参考资料1
参考资料2
题目 B Crazy Binary String(签到+前缀和)D Big Integer (循环节)F Planting Trees(单调队列)G Removing Stones (分治)H Magic Line (几何思维)I Median (DP求方案数)J LRU management (双向链表) B Crazy Binary String(签到+前缀和) 题意:给定一个 01 字符串,求最长的 01数量相等的子串和子序列的长度。
思路:前缀和相等的位置累积一下答案即可。
#include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e5+5; int n; char s[100010]; map<int,int> mp; int main() { scanf("%d",&n); scanf("%s",s+1); mp[0]=0; int now=0,ans1=0; int cnt0=0,cnt1=0; for(int i=1; i<=n; ++i) { now+=(s[i]=='1'?1:-1); if(mp.count(now)) ans1=max(ans1,i-mp[now]); else mp[now]=i; if(s[i]=='1') cnt1++; else cnt0++; } int ans2=min(cnt0,cnt1)*2; printf("
我个人本是要处理60景遥感影像,需逐像元处理,但是由于刚开始我对matlab掌握不深,所以不会编程,就全部用最低级的方法也就是ArcGIS来处理,two thousand years later…我用arcgis处理完毕。
后来又研究了一番,写出了完整的代码,想想都是泪/(ㄒoㄒ)/~~
以下代码是批量读取数据后,求了一下均值,其他针对多景影像逐像元栅格计算等处理的都是同样的思路。
代码思路:
(1)第一部分:批量读取文件夹下的所有文件,通用;
(2)第二部分(核心):利用for循环创建三维矩阵。一景栅格影像是二维m×n矩阵,那么对于多景影像的话,就可以将其排列为三维矩阵,新加的影像位于三维矩阵的页上,也就是说有多少景影像,三维矩阵就有多少页。进度条可要可不要。
(3)将处理得到的结果栅格影像输出,也是通用的。
具体代码如下(没有任何删减):
%%选择目标文件夹,注意文件夹里的数据名要按顺序排列 %特别是进行时间序列分析时 path=uigetdir('','Select a location'); %选择文件夹位置,获取路径 fileList=dir(fullfile(path,'*.tif')); %获取文件夹下所有tif文件 n=length(fileList); %获取文件个数 %%创建三维矩阵,并获取参考矩阵和投影信息 h=waitbar(0,'Running','name','3DMAT'); %进度条1 for i=1:n filePath=fullfile(path,fileList(i).name); data(:,:,i)=geotiffread(filePath); info=geotiffinfo(filePath); R=info.RefMatrix; %参考矩阵 proj=info.GeoTIFFTags.GeoKeyDirectoryTag; %投影信息 str=['Completed:','',num2str(round(i*100/n)),'%']; waitbar(i/n,h,str); %进度条2 end delete(h); %删除进度条 %%进行所需各项计算 [m,n,p]=size(data); %行、列、页 for i=1:m %行循环 for j=1:n %列循环 pixel=reshape(data(i,j,:),[p,1]); %重点!每页对应的像元转为一列 pixelMean(i,j)=mean(pixel); %求对应像元的均值,并将其放在原始(i,j)位置 end end %%将计算结果写入到新的TIFF影像数据中 [outName,outPath]=uiputfile('*.tif','Save a new tif file'); geotiffwrite(fullfile(outPath,outName),pixelMean,... R,'GeoKeyDirectoryTag',proj); %使输出的投影与原始一致 注意:
(1)for循环中info信息的读取必不可少,参考矩阵信息和投影信息是为了最后输出的栅格影像与原始影像保持一致,记住就好。有matlab基础的话,每行代码的意思不难理解,重要的部分注释已标注。
(2)对遥感影像一般都是转成tiff格式进行处理,但要注意,有些软件转换为tiff格式后仍会会带有**.hdr文件**(头文件),这种情况下是无法读取的。建议采用IDL将文件格式批量转为tiff后再处理。
希望本篇内容可以对大家有帮助~
一、不设置 proxy_set_header Host 不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值,参考
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header
# cat ngx_header.conf server { listen 8090; server_name _; location / { proxy_pass http://172.31.5.0:5000; } } 结果如下:返回proxy_pass 后面的值
二、设置proxy_set_header Host $host server { listen 8090; server_name _; location / { proxy_set_header Host $host; proxy_pass http://172.31.5.0:5000; } } 结果如下:不再是 proxy_pass代理的ip地址了, 不包含端口
三、设置proxy_set_header Host $http_host server { listen 8090; server_name _; location / { proxy_set_header Host $http_host; proxy_pass http://172.
解析:
求区间[L,R]满足条件的个数?
直接前缀和[0,R]-[0,L-1]
设区间[0,x],二进制下1的个数为奇数的总和为 ⌊ x 2 ⌋ \lfloor\frac{x}{2}\rfloor ⌊2x⌋+count(x)
count(x):表示x的二进制1的个数是否为奇数
按分类讨论
x是偶数 答案 ⌊ x 2 ⌋ \lfloor\frac{x}{2}\rfloor ⌊2x⌋+count(x)
x是奇数 答案 ⌊ x + 1 2 ⌋ \lfloor\frac{x+1}{2}\rfloor ⌊2x+1⌋
#include<bits/stdc++.h> using namespace std; typedef long long ll; int t; ll l,r; int lowbit(ll x){ return x&(-x); } int count(ll x) { int c = 0; while(x) { x-=lowbit(x); c++; } if(c &1) return 1; return 0; } ll get(ll a) { if(a&1) return (a+1)/2; else return a/2+count(a); } int main() { scanf("
解析:
t秒内,从(0,0)走到(x,y) 说明t和(x+y)的奇偶性必须保持一致性且t>=(x+y)
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int t,n; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; struct node { int k,x,y; }a[N]; bool check(int time ,int x,int y,int lastx,int lasty) { bool f = false; for(int i=0;i<4;i++){ int xx = dx[i]+x; int yy = dy[i]+x; if(xx>=0 && yy>=0){ int dis = xx+yy-(lastx+lasty); if((time-dis)%2){ f=true; } } } return f; } int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d %d %d"
CVPR 2021 论文:
https://github.com/52CV/CVPR-2021-Papers
本文分享几篇近期值得关注的 CVPR 2021 的开源论文,包括图像到图像翻译、全景分割、语义分割、域适应、图像检索、无监督学习,以及一篇关于首次对从人们相互注视的图像/视频中学习弱监督的三维视线范式(LAEO)的研究。
相信其中有些工作肯定会让你大开眼界。
01 High-Resolution Photorealistic Image Translation in Real-Time: A Laplacian Pyramid Translation Network
来自香港理工大学&阿里达摩院
作者称是首个在 4K 分辨率图像上实时实现逼真 I2IT(图像到图像翻译) 的工作。其次,在轻量级和快速的推理模型,仍然在转换能力和逼真度方面在逼真的I2IT应用上实现了可比或优越的性能。定性和定量的结果都表明,所提出的方法与先进的方法相比表现良好。
论文链接:https://arxiv.org/abs/2105.09188
项目链接:https://github.com/csjliang/LPTN
标签:图像到图像翻译
02 PPR10K: A Large-Scale Portrait Photo Retouching Dataset with Human-Region Mask and Group-Level Consistency
来自香港理工大学&阿里达摩院
与一般的人像照片修饰任务不同,portrait photo retouching(PPR)的目的是提高一组外观扁平的人像照片的视觉质量,有其特殊的实际要求,如 human-region priority(HRP)和 group-level consistency(GLC)。HRP 要求对更多关注 human regions(人体区域),GLC 则要求将一组人像照片修饰成一致的色调。而在现有的一般照片修饰数据集上训练的模型,很难满足 PPR 的这些要求。
为了促进这一高频任务的研究,作者在本次工作中构建了一个大规模的 PPR 数据集:PPR10K,并称这是首个此类相关的数据集。PPR10K 共包含 1,681 个组和 11,161 张高质量的原始人像照片。以及人类区域的高分辨率分割掩码。每张原始照片都由三位专家进行修饰,并对每组照片进行精心调整,使其色调一致。作者定义了一套评估 PPR性能的客观指标,并提出了学习具有良好 HRP 和 GLC 性能的 PPR 模型的策略。而 PPR10K 数据集为研究自动 PPR 方法提供了一个很好的基准,实验证明,所提出的学习策略能够有效地提高修饰性能。
denierliu100(ID:denierliu100)
精华帖子
粉丝:0
关注:0
Z金豆:0
城市:
注册时间:2013-04-07
最后登录:2016-04-23
等 级:Lv.1
经 验:4
当前经验4分,升级还需276分
下一等级:Lv.2如何升级?
发表于 2016-04-13 05:03:53
17楼
RemixOS大家应该都听过,目前安卓for PC两大系统之一,和凤凰系统各有优点。这里我带来的是Remix OS和Windows7双系统组建
Remix OS
技德为谷歌安卓项目合作伙伴,所以系统优化方面将来没的说,拥有32位64位系统支持UEFI启动,这在Win8.1和Win10下兼容性不错,系统内核位5.1,当然X86的兼容性还是很差的。很多app是打不开的,但是日常使用足够了。
镜像安装都是非常简单的一键安装,由于是硬盘安装所以选择硬盘,安装分区随意
硬盘安装对目前现有分区无任何损坏,安装后的系统都是挂载img文件进行操作,相当于虚拟机操作,所以不用担心当然系统或硬盘分区损坏
这里我制作了2个data分区文件,因为默认remix会在首次启动时自动创建一个8GB的data文件,并不能手动选择,所以这两个文件就是提前手动创建。data分区就是相当于手机的ROM大小16G即为你的分区位16G,32G就是32G
解压至remixos安装分区的RemixOS文件夹下,16G的data.img文件为16000MB,32G为32000M,就是实际占有的硬盘空间,压缩比非常高解压需要点时间
data.img解压完成
这个是我已经做好的RemixOS,D盘单独分了40G,data为32G
这时重启就可以了
首次重启也许不会出现remix OS的引导项
这时开机时按下快速引导按键(如戴尔联想为 F12, 惠普为 F9, 微星为F11 ,并进入BIOS菜单, 关闭 “Secure Boot”(安全启动))
选择Remix OS就能进入Remix OS系统了
PS:这个好像只有在UEFI安装win7下出现,win8.1和Win10是直接出现引导项的
第二次启动就会出现这个引导画面,这个是为了兼容Win7特有的引导项,目前我还不知道怎么手动创建,选择win7就进入win7选择remix OS进入Remix OS。这时双系统建立完毕
引导Remix OS过程
这个就是data.img的作用
镜像已经添加访问本地磁盘功能
建议安装ES文件管理器,默认第二硬盘作为USB设备,这个盘就是我的媒体盘电影什么的都在这里面
下载地址:
PS:这个是我修改的镜像,已ROOT并添加授权管理软件,记得授权管理不要更新更新后会失效。添加本地磁盘识别,添加时间和windos同步,请关闭RemixOS下自动同步时间,不然Windows 下时间会早12个小时
安卓要获取用户输入的数字,可不是一句代码能够解决的。真够烦的,让人更多心思要考虑语法上,而不是在业务上。private double getEditTextDouble(int id)
{
EditText editText = (EditText)findViewById(id);
String s = editText.getText().toString();
if (s.equals("") || s.equals("."))
{
return 0;
}
else
{
return Double.parseDouble(s);
}
}
首先,getText() 返回的类型是 Editable,要先 toString()。
其次,判断有没有输入字符串,用的是 equals,不能用 ==。
最后,由于我们限定了 EditText 的 android:inputType="numberDecimal",所以,只要 s 不是零长度和点,就可以转换了,这里用的是 Double.parseDouble,也可以用 Double.valueOf。请参见Java 的 Double.valueOf 与 Double.parseDouble 区别 。
题目 A Eddy Walker (概率思维)B Eddy Walker 2 (线性递推)D Kth Minimum Clique (bitset 维护团)E MAZE (线段树上维护矩阵中DP值的转移)F Partition problem (dfs + 优化)H Second Large Rectangle (单调栈)J Subarray (思维 + 抓住小范围) 链接:https://ac.nowcoder.com/acm/contest/882
A Eddy Walker (概率思维) 题意: n 个点构成一个环,标记为 0 , … , n − 1 0,\dots,n-1 0,…,n−1 。小明会随机往前走,或者往后走。当每个点都被走过至少一次时,就会停止,问最终落在 m 点的概率是多少 。
思路:
设 f ( n , m ) f(n,m) f(n,m) 是最终结束走到 m 点的概率。那么可以得到两个关系: f ( n , m ) = f ( n , m − 1 ) + f ( n , m + 1 ) 2 f(n,m)=\frac {f(n,m-1)+f(n,m+1)}{2} f(n,m)=2f(n,m−1)+f(n,m+1),且 f ( n , m ) = f ( n , n − m ) f(n,m)=f(n,n-m) f(n,m)=f(n,n−m)。由此可以得到每个点的概率相同。特判一下特殊情况: n=1 ,m=0 时,概率为 1 。n >1 ,m=0 时,概率为 0 。因为 0 这个点一开始就被访问了,最后不可能落在 0 点上面。题目要求的概率,是每次询问概率的累乘。 #include <bits/stdc++.
问题:AttributeError: ‘str’ object has no attribute ‘endwith’ catdog_label = {"cats": 0, "dogs": 1} data_info = list() for root, dirs, _ in os.walk(data_dir): # 遍历类别 for sub_dir in dirs: img_names = os.listdir(os.path.join(root, sub_dir)) img_names = list(filter(lambda x: x.endwith('.jpg'), img_names)) 解决:endwith改成endswith
本文将带你了解Android应用开发之BroadcastReceiver(广播)的静态注册和动态注册 --Android开发,希望本文对大家学Android有所帮助
BroadcastReceiver是安卓四大组件之一,本例通过代码的方式演示静态注册和动态注册。
1、静态注册
静态注册只需要AndroidManifest.xml中进行配置:
AndroidManifest.xml:
下面是相关的代码:
MyBroadcastReceiver.java:
package thonlon.example.cn.ipdaildemo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/** * Created by NIUXINLONG on 2018/6/21. */public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String number = getResultData(); setResultData(number+"123456"); }}
MainActivity.java:
package thonlon.example.cn.ipdaildemo;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { private MyBroadcastReceiver myBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver();//在主活动中调用了广播使广播生效}
2、动态注册
需要在Java代码中进行如下设定:
MainActivity.java:
package thonlon.
android:id="@+id/toast_layout"
android:layout_width="200dip"
android:layout_height="fill_parent"
android:background="#f0f0f0"
android:orientation="vertical" >
android:id="@+id/txt_Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:text="@string/toast_text_1"
android:textColor="#ffffff"
android:textSize="20dip" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#999999"
android:orientation="horizontal" >
android:id="@+id/image_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:src="@drawable/icon_message_nub" >
android:id="@+id/txt_context"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|right"
android:text="@string/toast_text_2"
android:textColor="#ffffff"
android:textSize="15dip" >
--------------------------Activity代码------------------------
public class ToastActivity extends Activity implements OnClickListener {
private Button style1btn;
private Button style2btn;
private Button style3btn;
private Button style4btn;
private Toast toast = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_main);
initViews();
initListeners();
实验内容: 本实验要求利用两输入与非门和异或门设计一个1位二进制全加器,其中a为被加数、b为加数,ci为低位来的进位,s为本位和,co为向高位的进位,图3.4为1位二进制全加器的框图,原理图如图3.5所示。同时,要求使用并行进位实现四位加法器,并使用两组这样的加法器串行构成一个八位加法器。
并行加法器的原理: 全加器真值表:
Si的卡诺图:
经过化简:
Ci的卡诺图:
经过化简:
于是:
令进位生成项,进位传递条件,则:
实验原理图: ①一位全加器:
其中,输入a、b绑定在键K0、K1上,ci绑定在K2上,输出s绑定在LR0上,c0绑定在LR1上。
②八位加法器
其中,输入a0 ~ a7绑定在键K0 ~ K7上,b0 ~ b7绑定在键K8 ~ K15上,进位输入绑定在键K16上;输出sum0 ~ sum8绑定在键LD0 ~ LD8上。
③判断BCD码的奇偶性
其中,输入a0 ~ a3绑定在键K0 ~ K3上,输出out绑定在LR0上。
④4位并行加法器:
其中,输入B3 ~ B0、A3 ~ A0绑定在键K7 ~ K0上,输出S4 ~ S0绑定在LDR4~LDR0上。
⑤两组四位并行加法器构成的八位加法器:
其中,输入B7 ~ B0绑定在键K15 ~ K8上,A7 ~ A0绑定在键K7 ~ K0上,输出S8 ~ S0绑定在小灯LDR8~LDR0上。