GCM游戏用什么打开
GCM游戏是NGC游戏镜像,需要用模拟器才能运行。Dolphin是目前支持GCM格式最好的NGC游戏模拟器,现在最新版本是Dolphin
Ver8999Ex。你先去下载安装Dolphin,然后就能运行GCM格式了。
Dolphin使用注意事项:
①
运行模拟器前必须安装最新DirectX和Visual
C++支持库;
②
游戏镜像请勿和模拟器放在相同目录内,以免卸载时被删;
③
必须使用英文路径安装,必须用管理员权限运行模拟器;
④
运行模拟器前建议关闭其它占用资源的程序(如浏览器)避免影响速度。
1、首先打开谷歌浏览器,点击浏览器右上角的三个点如下图所示。
2、然后在打开的下拉菜单中,选择“设置”,如下图所示。
3、然后在打开的设置页面中,找到并点开“高级”选项,如下图所示。
4、然后在打开的页面中,找到“保护您和您的设备不受危险网站的侵害”一项,将其右侧的开关关闭。
5、这样,再打开刚才那个网页时,就不会有提示了。
谷歌的通知提供了一个唯一的id参数,只要设置不同的id,就可以避免重复,方法如下:
private void showNotification(String title, Context context) {
int requestCode = (int) SystemcurrentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
getSystemService(androidcontentContextNOTIFICATION_SERVICE);
Notification notification = new Notification(Rdrawableic_launcher,
"90上门洗车", SystemcurrentTimeMillis());
notificationflags = NotificationFLAG_AUTO_CANCEL;
notificationdefaults |= NotificationDEFAULT_VIBRATE;
notificationdefaults |= NotificationDEFAULT_SOUND;
notificationdefaults |= NotificationDEFAULT_LIGHTS;
notificationvibrate = new long[]{0, 100, 200, 300};
Intent intent = null;
if (pushType == 1) {
intent = new Intent(context, Advertisementclass);
} else if (pushType == 2) {
intent = new Intent(context, HomePageclass);
} else if (pushType == 3) {
intent = new Intent(context, OrderListclass);
}
PendingIntent contentIntent = PendingIntentgetActivity(context, 0,
intent, 0);
notificationsetLatestEventInfo(context, "90上门洗车", title, contentIntent);
notificationManagernotify(requestCode, notification);
}
在这里,把notify()里面的id参数变成了时间戳,编译,运行。
对于移动app,性能优化是永无止境的话题,而在性能指标中,耗电量又是重中之重,android的大神们当然也在为此努力,所以从android 60开始,谷歌引入了两项新的省电技术延长电池使用时间,分别是Doze(休眠)和App Standby(app待命模式),只要app是运行在60(api 23)及以上的系统,
无论app编译时是否使用的target=23,都会受到这两种技术的限制
。
一、理解什么是Doze模式
如果设备满足
1、屏幕关闭;
2、没有连接电源,
这样持续一段时间后系统就会进入Doze模式,在Doze模式下,系统通过限制app访问网络和其对CPU使用来达到省电的目的,app的网络访问功能会被禁用,同时延时执行作业,异步任务及标准闹钟事件。
同时,为了保证app的工作,系统会周期地退出Doze模式,以保证app完成那些被延时的任务,如下图,这个状态被称作maintenance window(维护窗口)。且随着系统处于Doze模式时间增长,进入maintenance window的频率会降低。
二、Doze 模式下的限制
网络访问功能被关闭
系统会忽略wake locks,即app无法持续占有电源
标准闹钟 AlarmManager(包括 setExact() )和 setWindow() ))都会被延时到下一个maintenancewindow才激活
1 如果app仍需要在Doze时使闹钟生效,可以使用 setAndAllowWhileIdle() )或 setExactAndAllowWhileIdle() )
2 使用函数 setAlarmClock() )设置的闹钟在Doze时仍会生效,系统会在闹钟生效前推出Doze。
系统不会进行Wi-Fi扫描
系统不允许异步Adapters运行
系统不允许 JobScheduler 运行
三、理解App Standby
android系统通过App Standby机制可以把用户没有使用的app置为空闲状态,当然前提是app没有命中以下条件:
用户明确的启动了该app
app有前台进程(包括前台的activity、前台service,或者正在被其他activity及前台service使用)
app当前没有在锁屏界面或者通知栏有通知
当设备连接到电源时,系统会把所有处于standby的设备恢复到正常运行状态,如果设备长期处于空闲状态, 系统会每天允许standby 的app联网一次
四、当设备处于Doze模式时,使用GCM与app进行交互。
Google Cloud Messaging (GCM)是谷歌提供的一套用于服务端实时推送消息的服务,通过high-priority GCM messages,GCM实现了在Doze和App Standby模式下的正常工作,GCMhigh-priority messages会唤醒app并允许其进行网络访问,即使当前设备正处于Doze模式或app整除standby状态。而当app处理完推送消息后,app又会进入Standby状态。所以GCM high-priority messages并不会影响系统的Doze状态,也不会影响其他出于Standby状态的app,这样有助于最小化电量的消耗。
五、支持其他的用户场景
如果使用GCM仍不能满足app的需求,android还提供了白名单机制使app能在Doze和Standby时仍能够 访问网络和使用 partial wakelocks ,然而,其他的限制,如作业调度,异步操作,及闹钟仍不会执行。
开发者可以通过接口 isIgnoringBatteryOptimizations() )来判断当前app是否处于白名单中。对于白名单,有以下几点值得关注:
用户可以手动配置白名单,其位置在 设置->电池->电池优化 。
开发者可以通过发送action为REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的Intent来调起电池优化配置页面。
开发者也可以通过添加权限REQUEST_IGNORE_BATTERY_OPTIMIZATIONS使其可以触发系统对话框,询问用户是否将该app添加到白名单中。触发添加白名单确认对话框的action为ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
当然,如果用户需要,他们可以随时在电池优化配置里把app从白名单中移除。
六、测试Doze及App Standby下的应用工作状态
(一)在Doze时测试APP
1 需要一台系统版本大于等于60(api23)的设备
2 连接USB,运行被测app,保持app在活动状态
3 关闭设备屏幕
4 通过下面的adb命令强制系统进入Doze模式
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
第二个命令需要执行多次才能使系统进入idle状态
5 退出Doze状态,检查app的工作状态符合预期
(二)测试App Standby
1 需要一台系统版本大于等于60(api23)的设备
2 连接USB,运行被测app,保持app在活动状态
3 通过下面的adb命令使app进入standby
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive true
4 通过下面的adb命令模拟唤醒app
$ adb shell am set-inactive false
$ adb shell am get-inactive
5 app唤醒后检查其工作状态符合预期,尤其是通知和后台任务是否正常
检测到远端XFS服务正在运行中漏洞
临时关闭fsauto服务:
可以通过编辑/etc/inetdconf文件,重新启动Inetd进程来关闭fsauto服务:
1 注释/etc/inetdconf文件中的如下一行:
#fs stream tcp wait nobody /usr/openwin/lib/fsauto fs
2 重新启动inetd进程:
# ps -elf |grep inetd
root 138 1 0 Oct 15 0:00 /usr/sbin/inetd
# kill -1 138
solaris 查找文件 find命令
1 find命令格式
find: [-H | -L] 路径列表 谓词列表
可以使用:man find 查看命令选项。
2 通过文件名查找法:
如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了sshd_config(ssh 服务器 的配置文件)这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令
find / -name sshd_config
这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpdconf这个目标文件名即可。稍等一会系统会在计算机 屏幕 上显示出查找结果列表:
#find / -name sshd_config
/var/sadm/pkg/SUNWsshdr/save/pspool/SUNWsshdr/reloc/etc/ssh/sshd_config
/etc/ssh/sshd_config
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name sshd_config 命令,而可能是你的系统中没有安装ssh 服务器 ,这时只要你安装了ssh服务器,然后再使用find / -name sshd_config 就能找到这个配置文件了。
服务器支持 TLS Client-initiated 重协商攻击 (CVE-2011-1473)
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。
重协商就是大部分TLS连接都以handshake为开始,经过应用数据的交换,最后关闭会话。如果在第一次handshake之后(可能经历了应用数据的交换也可能没有)请求重新协商,就会发起一次新的handshake,对新的安全参数达成一致
关闭命令:ssl renegotiation disable
远端rsh 服务允许部分用户登录。需要禁止rsh 服务 。
方法:
cat /rhosts 查看是否有 + 号,意思是允许所有其他机器访问。 我们主要VI编辑将+去掉即可。(该配置文件,其做用就是控制访问IP)
因为RSH服务不能控制入访因此我们需要禁用内网所有主机的出访服务
禁用RSH出访服务 svcadm disable svc:/network/shell:default
禁用rlogin服务 svcadm disable svc:/network/login:rlogin
检测到远端rsh 服务正在运行中。禁用RSH 服务,改用SSH 代替 。
方法:
1、vi /rhosts 去掉其中的+号
2、vi /etc/default/login
CONSOLE=/dev/console 将这一行#注释掉。
因为RSH服务不能控制入访因此我们需要禁用内网所有主机的出访服务
3、禁用RSH出访服务 svcadm disable svc:/network/shell:default
4、禁用rlogin服务 svcadm disable svc:/network/login:rlogin
SSL 30 POODLE攻击信息泄露漏洞(CVE-2014-3566)
现场次漏洞只存在于服务器,后又发现此漏洞依赖于服务器的5989端口,可以在防火墙禁用此端口或杀掉此进程
方法一 编辑: vi /etc/sysconfig/iptables
添加:-A INPUT -p tcp --dport 5989 -j DROP
-A INPUT -p tcp --sport 5989 -j DROP
重启网络服务:service iptables restart
方法二 根据netstat –tunlp|grep 5989 查找PID ,pwdxPID查看程序路径,如没问题则可以杀死此进程。
POODLE = Padding Oracle On Downgraded Legacy Encryption是最新安全漏洞(CVE-2014-3566)的代号,俗称“贵宾犬”漏洞。 此漏洞是针对 SSL 30中CBC模式加密算法的一种padding oracle攻击,可以让攻击者获取 SSL 通信中的部分信息明文,如果将明文中的重要部分获取了,比如cookie,session,则信息的安全出现了隐患。
从本质上说,这是 SSL 设计上的缺陷, SSL 先认证再加密是不安全的。
修复措施:
禁用sslv3协议
不同的web server不尽相同。这边列举主流的服务器的禁用方式
Nginx服务器:
注意:nginx和openssl套件版本过低可能会导致无法启用新型加密套件和算法,请升级最新版本。
(openssl101+版本支持TLS11和TLS12协议)
ssl_protocols TLSv1 TLSv11 TLSv12;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
apache服务器:
注意:apache和openssl套件版本过低可能会导致无法启用新型加密套件和算法,请升级最新版本。
(openssl101+版本支持TLS11和TLS12协议)
apache2X版本:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL
SSLHonorCipherOrder on
Tomcat服务器:
JDK版本过低也会带来不安全漏洞,请升级JDK为最新版本。升级JDK风险请安按照系统升级风险酌情考虑。
(先备份再配置,低版本的配置后有启动不了的风险,请升级tomcat和jdk版本,JDK17及以上支持TLS12协议)
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="keystore/domainjks" keystorePass="证书密码"
clientAuth="false" sslProtocol="TLS"
ciphers="TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
SSL_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
使用apr的tomcat(windows环境路径请使用“\”,证书文件是for apache压缩包中的三个文件)
maxThreads="150"
protocol="orgapachecoyotehttp11Http11AprProtocol"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLProtocol="all -SSLv2 -SSLv3"
SSLCertificateFile="conf/domiancomcrt"
SSLCertificateKeyFile="conf/domiancomkey"
SSLCertificateChainFile="conf/root_bundlecrt"
SSLCipherSuite="ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL" />
生活里,你在使用手机时是否有过这样的烦恼?那就是每天都会收到不计其数的通知消息,不管你关没关APP的消息推送。无论是天气预报、新闻资讯,还是工作安排或是交友短,都会推送到你的手机上。
这开启消息推送能收到消息很正常,为什么有人已经关掉了APP还可以接收到消息通知呢?想解答这个问题就要从手机的消息推送说起了。
打开百度App,看更多美图
一般来说,手机消息都是通过服务器推送到我们手机上的,像iOS的用户,他们接收的消息就是苹果APNs服务器来负责推送的。这些服务器有记忆功能,当你第一次使用APP时,在系统询问是否接收通知时选择了是,那么服务器就会记录你的ID,以便后面推送消息时将消息推送到你手机。
而且,这类推送消息,是先将数据推送到苹果的服务器中,然后通过苹果的APN服务器推送到用户手机上的。这就导致了你即使后来关掉了消息推送,一样能接收到消息通知。
最先开始设计人员是很满意这样的设计的,因为它能让软件彻底关闭的时候还可以接收到消息通知。一方面释放内存,一方面也不会耽误接收消息。并且因为这样的设计,一些社交软件在没有上网的时候也可以接收到通知消息。
而对于Android手机的用户来说,谷歌也有类似的GCM服务器来推送消息。不过国内因为网络的限制,是无法收到谷歌GCM服务器推送的消息的。所以国内大多安卓手机会采用轮询和长连接两种方式来实现消息推送。
轮询这种方法,需要手机软件定时的向服务器请求推送。这样就加大了手机的负担,因为不仅费时费力,还要让软件一直有进程在后台运行。这样的方法不仅占用内存,还耗费流量,对手机电量也是个不小的考验。
而另一种长连接方式,是通过第三方的推送服务器来推送消息通知。开发者将推送数据传到第三方服务器上,然后再由这服务器推送给设备。这种方法也是目前国内Android手机所使用的方法,因为它不会占用手机本身的内存和空间。
因为我们目前的消息通知都是通过第三方的服务器推送到我们的手机上的,这样一个推送的服务进程会一直运行在后台保证消息及时推送,而且是你想关也关不掉的。所以即使关掉了软件的进程,软件的消息依然可以推送到你的手机。
当然,也不是没有办法解决。如果你真的想关闭软件推送,那就在系统设置里面找到应用设置,在里面关闭掉允许通知的按钮,这样就能免去大部分软件推送的消息了。
打
目前GCM的服务器都在国外,不能保证国内的用户随时能连接到国外的服务器。要等以后谷歌在国内建了GCM服务器,才能保证Google Cloud Messaging(GCM)服务的可靠性。
0条评论