首页> 标签> Android开发
"Android开发"
共 54628 条结果
全部 问答 文章 公开课 课程 电子书 技术圈 体验
IDEA安装及使用详细教程
下载安装官网下载最新版本ideaIDEA官网下载如果下载专业版本,在试用期内使用(可私信我激活码),或使用破解版本或购买正版。(下面这个截图是在网页上新截的图)咱们一般选择左边的Ultimate版本进行下载安装,接下来就是一直下一步傻瓜式安装即可下面这个页面可以全选 然后继续下一步进行安装,最后选择【finish】安装完成IDEA使用1、Create New Project这个就是我们创建新项目的地方,一般出在第一次安装或者没有项目时出现这个。2、Import Project这个就是引入工程,导入,可以支持eclipse开发的项目,注意修改配置文件以及Maven项目。3、Open打开现有项目,别的IDEA开发的,拿过来打开4、Check out from Version Control里面下拉框有:CVS , Git,TFS,Mercurial,Subversion五个选项,这是版本控制功能,很强大,可以和对应的相关网站上的项目直接克隆到本地,很是强大。前提是本机上面jdk安装成功,如果在cmd控制台输入java没有效果,说明jdk安装不成功;如果输入java有效果而javac没有效果,说明环境变量配置不成功。IDEA创建项目选择 file--->new--->project新建工程在新弹出界面内,idea帮助我们提供java基本模板。注意Project SDK这里选择1.8创建的java项目基本架构如下图:创建简单项目在 src包里新建名为Hello_Worls.java的包public class Hello_Worls{ public static void main(String[] args){ System. out. printf("Hello World"); } }这里有用到两个快捷键,我在前面的博客中也有提过main函数快捷键:psvm + Tab(单词开头首字母)打印语句:souf + Tab最后输出:Hello World
文章
Java  ·  开发工具  ·  Maven  ·  Android开发  ·  git
2023-02-04
Cocos Creator 花了一个月入门经历
先说一下自己的水平,之前干过一阵子安卓原生,后来改成uniapp这种快开,再后来就做网站,知道的游戏引擎有cocos、白鹭、phaser。经验:用phaser做过一个红包雨,cocos最早的时候百度过,但是面对cocos creator的仪表盘的时候,就放弃了,经验等于0,但是基本的学习思路还是有一些的。下面开始学习介绍• 入门先百度找到官网• 开始百度各种学习资料,比如怎么入门啥的• 根据自己的学习思路开始找对应的视频资料• 最后定的观看官方的视频教程刚开始肯定是百度的。。。后来开始手输了https://www.cocos.com。个人感觉新手入门用到这几个菜单就足够了但是在刚入门的时候,即使点开了那个文档,我也是一脸蒙圈,尤其是新手上路里面的教程,完全都是3D游戏的教程,我这入个门就想先入个2D的,这就尴尬了,一下子不知道接着看什么的。然后顺手又去百度了,逛了一圈都是今年超去年的,没啥新意,而且里面来不来就上代码,这连文档都看不懂呢上代码,那不成了直接劝退了。实在没办法了,没个视频教程,对我这样的人来说入门太难了,还是踏实的找一套适合自己的教学视频吧。先说一下自己的学习游戏的思路吧• 最早接触的时候,游戏是想做红包雨,然后跟着教程的飞机大战来的,红包雨是往下掉,飞机大战子弹是网上飞,到时候倒过来就行了。• 学习一个游戏引擎,个人感觉飞机大战还是比较好的一个游戏,该练习到的知识点能囊括很多了。元素可锻炼的地方我方飞机手指或鼠标拖拽物体跟随移动手指触摸时触发开始发射子弹跟地方飞机或子弹碰撞以后需要做的事情敌方飞机随机在屏幕外生成,需要设置随机位置需要设置速度或者重力从屏幕外到屏幕内的时候开始发射子弹,考验动态计算飞机的位置。飞机跟我放子弹碰撞的时候需要进行回收飞机我方子弹手拖到飞机哪里,子弹就得跟着在哪里发射发射子弹需要一定的时间间隔敌方子弹飞机飞到哪里子弹就得在哪发射发射也需要一定的时间间隔其他内容子弹一直在发射,这是需要优化的地方,要不制造出来的子弹太多,游戏想当然的就会卡死。拖动我方飞机的时候,移动的细节需要调整。得动态的设置各个飞机的位置。飞机跟子弹可以弄个池子,一般游戏的教程都会讲到,就是飞机子弹不是每次都创建,先建好一个池子,里面有飞机子弹什么的,用的时候拿,不用的时候放回去。感觉这个游戏做完,基本上就入门了最后给大家介绍一下,我入门用的视频教程吧。从B站上面看了很多视频,无论是观看量多的或者少的,新的旧的。个人看教学视频的时候对讲的那个人比较挑剔,有的人那个声音听着就烦,有的废话太多,各种等等。最后挑到的还是官方的教学视频。【游戏开发教程 | 只需25节课学会用 Cocos Creator 做一款经典射击游戏 | 零基础入门】 https://www.bilibili.com/video/BV1HY411H7V5/?share_source=copy_web&vd_source=d5193250e158e65c52c55c28b00b48dd这个视频刚开始看的时候,也放弃了,因为一上来讲的就是3D,而我想入门2D,后来转了一圈又回来看了一遍,心想没找到好的,就刚这一个得了,先看完再说,谁成想,讲了两级以后,除了素材用的是3D的,其他的让我入门2D足够了,就这么稀里糊涂的入门了就。感谢看完,希望视频教程对你有帮助。自己写着玩弄了个小游戏,大家可以看看,有需要的功能可以给我要源码。谢谢大家
文章
Android开发
2023-02-04
Java web项目怎么创建以及没有出现web.xml的解决方法
项目结构图这里先给大家看一下正常情况和没有的情况在上面第二个图中我们可以看到在eclipse上面创建的web项目中没有web.xml首先我们先来看下web项目怎么创建第一步:新建项目点击“file->new->Dynamic Web Project”,如下图所示:第二步:进去创建项目界面首先输入项目名称,点击next,如下图所示:第三步:添加src文件夹,继续点击next如下图所示: 第四步:勾选web.xml部署进去最后一步时,大家可以看到这里有个需要勾选的地方:只有勾选住“Generate web.xml deployment descriptor”,才会创建web.xml文件,点击finish,如下图所示: 第五步:xml文件显示可以看到新建的WEB项目已经有web.xml文件了,如下图所示: 看到这里相信有很多同学应该知道为什么web.xml没出来了吧 这里提供三种解决办法:第一种最简单,第三种比较麻烦,第二种比较省事第一种:直接生成第一步:选取创建的项目名称右击第二步:我们找到 Java EE Tools 中的下图画圈部分前面有小瓶子这标志地方点击。第三步:再次打开WEB-INF下,就会发现生成了web.xml第二种:新建项目时勾选web.xml部署我们可以再重新创建一个web项目,在创建项目的同时,就自动生成web.xml        创建web项目时,一直点next,不要直接点finish,直到出现下面界面,选取画圈部分即可自动生成web.xml第三种:创建Web.xml第一步:右键选择【WEB-INF】 ,选择【New】再选择【Other...】第二步:下滑找到【XML】,点击打开后选择【XML File】,然后点击下一步第三步:我们一般改名为:【Web.xml】然后点击完成第四步:回到项目就可以看到:web.xml里面的内容xml 里面的内容是可以改的毕竟 Web项目启动运行的入口文件是 web.xmlWeb项目运行需要依赖 tomcat服务器默认内容:但我这里为了项目运行改了代码:不一样的项目改的内容是不一样的<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
文章
XML  ·  Java  ·  应用服务中间件  ·  Android开发  ·  数据格式
2023-02-04
交易所开发推荐一些高级功能
安全性是至关重要的。虽然这是一个显而易见的事实,但我还是很痛苦地看到大多数普通人都缺乏安全意识。而许多专家以为每个人都对安全问题有深入的理解,然后设计或推荐一些高级功能,这些功能不仅难用,一不小心还容易搞砸了,这也让我很痛苦。安全性是一个广泛的议题,虽然在很多相关领域中我不是专家,但我目睹了许多人遇到安全问题。近期,加密货币价格上涨,市场活动越发频繁,很多新入市者又回到加密货币领域中来。在这篇文章中,我将尽我所能,使用平实易懂的语言来解释一些与持有加密货币息息相关的安全概念。它们包括:一些有关安全性的基础概念我们要/不要自行持有加密货币,应该如何持有我们要/不要在交易平台上持有加密货币,应该如何持有其它话题首先,没有任何事务是100%安全的。比方说,万一哪天真的小行星撞地球,那么无论你采用哪种储蓄方式,资金都不太可能安全吧。是的,你可以把资金存在在太空中,但这种储蓄能维持多久呢?而且如果地球都不在了,它的价值还在吗?也许到了那时候,你早已不在乎这件事了。所以,当我们说到安全性,我们其实在问这样一个问题:“这样足够安全吗?”那么我们先来定义一下“足够安全”这个概念吧。对于不同人、不同目的而言,其定义也是不同的。如果你把100美元存进消费用钱包,你可能不需要超高安全性,放进手机钱包就可以了。但是对于数百万美元,或者是关乎身家性命的钱财,你就需要采取更强大的安全保障措施了。在下文内容中,我们将探讨较大金额资金的安全保障问题。要想保障所持有的加密货币的安全,你只需要做以下3件事:防止他人窃取。防止自己丢失。找到一种资金转移方法,万一你不在了,这笔资金还可以转给你深爱的人。听起来很简单,对吧?但要真正做到这3件事是需要一定的知识、努力和智慧的,而大多数人都要么不懂,要么忽略了它们。下面我们展开来说。我们要/不要自行持有加密货币,应该如何持有“我的密钥,我的资金”。真的是这样吗?很多创世加密货币都坚持说只有自己持有加密货币才是安全的,但从未考虑这样做对普通人来说是多大的技术难题。这真的是最好的建议吗?我们现在来讨论一下这种做法。让我先问你一个问题:比特币私钥长什么样?如果你不知道,那请你继续读下去。比特币私钥长这样:KxBacM22hLi3o8W8nQFk6gpWZ6c3C2N9VAr1e3buYGpBVNZaft2p它只是一串数字和字母的组合。拥有它就能通过该地址转移比特币。还有一个概念就是“助记词”,它由12或24个英文单词按特定顺序组合而成。它们可以用来生成一系列私钥。很多钱包都使用助记词。在后续内容中,我们会使用“私钥”这一词汇,但文章提及的多数流程和相关推荐对“助记词”也同样适用。回到正题。要想保障自己持有的加密货币的安全性,你需要:防止他人获取你的私钥;防止黑客攻击,防止电脑遭受病毒和网络攻击等等。防止自己丢失私钥;对数据进行备份以防止丢失或设备损坏,并做好备份。找到一种资金转移方法,如果你不幸离世,还可以把私钥转移给你深爱的人。这一设想并不那么令人愉悦,但作为对所爱的人负责任的成年人,我们必须管理这一风险。下面让我们来仔细一一分析。防止他人获取你的私钥这是显而易见的风险。我们都听说过黑客、病毒、木马等等。我们都不想让这些东西靠近我们存放代币的地方。要充分做到这一点,我们的设备就不能连接到互联网,也不能从网上下载任何文件。这样的话,我们又能怎样以安全的方式发送和接收加密货币呢?让我们来说说可以使用的一些不同设备。计算机是其中一个选择,其通常功能也比较丰富。如果使用计算机来储存代币,那计算机就不能接入互联网,或者其它任何网络。一旦接入了网络,黑客就有可能利用操作系统或者其它应用软件的漏洞找到攻击机会。要知道,所有的软件都是有漏洞的。那么,如果计算机没有接入网络,我们又如何安装软件呢?我们可以用CD ROM或者U盘,并安装至少3种杀毒软件来确保它们是干净的。下载软件(操作系统或钱包)到U盘上,等待72小时,不断检查更新通知,确保所下载的软件或者下载软件的网站没有安全性问题。官方网站被黑、下载包被木马替换的情况非常多见。我们下载软件一定要到官方网站。另外,用开源软件也可以减少蠕虫出现几率。虽然我们自己不是程序员,但开源软件已经过其他程序员检查,蠕虫出现的概率较低。所以,操作系统我们应该使用稳定版本的Linux(而不是Windows或者Mac),并且只用开源的钱包软件。安装好所有软件和操作系统以后,我们就可以用一个干净的U盘进行交易的脱机签名。对于不同钱包而言,操作方式也不尽相同,这就不在本篇文章的探讨范围了。除了比特币,其它很多代币都没有可以进行脱机签名的钱包。同时,我们需要确保所用设备的物理安全性。因为如果有人偷了这一设备,他就可以直接进入这一设备。因此,我们要确保对硬盘进行强加密,这样即使有人拿到了硬盘,也没有办法读取它。不同操作系统有不同的加密工具。硬盘加密教程也不在本篇文章的内容范围,但在网上可以轻易找到。如果以上几件事都做好了,你可能不必再看下面的内容了。但如果你不喜欢这些,还有其它几种选项。接下来一个选项是手机。现在,因为有了沙盒设计的移动设备操作系统,非根/越狱手机要比计算机安全得多。Android系统版本太多了,没办法一一追踪, 所以我通常推荐使用iPhone 。我们应该有这样的一台手机,它仅用于钱包的安装,不用于其它任何用途。这台手机应该一直处于飞行模式,只有在进行钱包交易时才打开。我也推荐为这台手机配备单独的SIM卡,并且只用4G接入互联网。千万不要连接任何WiFi。仅在进行交易签名和软件升级时才连接到网络。如果账户里资金数额不是太大的话,这样做一般是没问题的。一些手机钱包有脱机签名功能(通过扫描二维码进行),这样从钱包App下载完成到生成私钥的过程中我们的手机完全不需要联网。这样我们就可以确保私钥从未在一台连过网的手机上存在过。这样做可以避免钱包App被蠕虫病毒入侵,或是向开发者回送数据。这些情况以前很多钱包都发生过,即便官方版本也不例外。但这样做的缺点是,我们也无法进行钱包App或者操作系统的升级。要升级软件就要在另一台手机上安装App的最新版本,将其设为飞行模式,生成一个新地址,备份(后续会讲到),然后将资金发送到新手机上。这样做很麻烦。另外,这些钱包所支持的代币/区块链数量也有限。同时,我们还需要确保手机的物理安全性。虽然最新版本的iPhone硬盘是完全加密的,但据称也有可以通过破解pin码对iPhone解锁的设备。硬件钱包我们也可以使用硬件钱包。这些设备就是为了永久保存私钥而设计的,这样就不需要进行电脑备份。交易签名也直接在硬件上进行。但不是所有东西都是100%完美的。硬件钱包也可能存在硬件、软件漏洞等。市面上有很多不同的硬件钱包。我们通常建议选择有较长历史的、品牌知名度更高的那些,因为它们经过了更多检验。两个主流的硬件钱包品牌之中,已有不同报告称其中一个一旦被黑客拿到手,就能轻易获取私钥。所以,我们一定要确保它们的物理安全性。另外,几乎所有硬件钱包都需要与计算机(或者手机)软件互动才能完成操作。所以,我们还得确保计算机是没有病毒、不受黑客攻击的。有些病毒可以在交易的最后一刻把目的地址篡改成黑客的地址。所以,我们要在设备上仔细验证交易的目的地址是否正确。即便是这样,确保计算机的安全也是必须的。有了硬件钱包,的确可以避免一些最简单的黑客窃取私钥的操作,但我还是强烈建议准备一台干净的计算机作为专用计算机,并且把防火墙功能全部打开。但总体来说,想要自行持有代币的话,硬件钱包是一个不错的选择。但它比较麻烦的是备份的保存,我们在下一节将会讲到。钱包和设备还有很多类型。我无法在此一一介绍,但以上所说都是最标准的类型了。现在我们已经探讨了如何降低(而不是消除)被他人窃取私钥的概率,那么对于如何自行持有代币这个问题,我们就已经解答1/3了。防止自己丢失密钥我们可能会遇到丢失储存代币的设备,或者设备受损的情况。因此,我们需要:备份。There are many different methods here too. Each has pros and cons.备份也有很多种方法,并且每一种都有其优缺点。但根本上来说,我们希望做到的是在不同地理位置的多重备份,并且不被他人看见(加密)。我们可以用一张纸写下来。有些使用助记词的钱包会推荐这一方式,因为写下12或24个英文单词还算比较容易。但对于私钥来说,我们很容易弄错大小写,或者字迹太潦草(比如分不清O和0),并且后续我们很难弄清楚到底是哪里出了问题。然而,用纸记还有很多更严重的问题。这些纸可能被:丢失 – 和其它纸一起弄丢了毁坏 – 被火烧了或是被洪水冲走了容易被他人读取 – 没有加密有些人把密钥纸条存进银行保险库,但因为以上原因,我通常不建议这么做。不要以为给纸条拍照(或者截图)或者把它上传到云就已经安全备份了。如果黑客攻击邮箱或者计算机,它们会轻而易举就找到你的密钥。此外,云服务商也可能对其进行多重备份,存放在不同地方,他们的员工也有可能看到这些信息。有些专门设计的金属标签可以用于助记词备份的保存。这些金属标签基本上不会被毁坏,因此大体上可以避免火烧或洪水的风险。但是,它并不能解决实体丢失或者容易被读取的问题。很多人会把金属标签存在银行保险库,并且通常和黄金和其它金属放在一块。我猜喜欢买金属产品的人很容易会这样做。如果你采用这种方法,就要了解它的局限性和风险。我推荐的做法是使用几个U盘。 但是这不需要什么技术手段(典型的“为专家而设计”谬论)。市面上有抗震/防水/防火/防磁的U盘。我们可以把加密版本的私钥备份存进几个这样的U盘,并把它们存放在不同地点(朋友家或亲戚家)。这样就解决了之前提到了所有问题了:多个地点、不容易损坏或丢失、不容易被他人读取。这样做的关键是强加密。相应的工具市面上很多,并且还会不断变得更先进。VeraCrypt就是其中一款入门级工具,加密程度还不错。它的前身TrueCrypt曾经流行过一段时间,但后来在同行评议中被发现有一些安全漏洞,因此停止开发了。所以,我们建议用户自己去了解不同产品,并为自己选出一款最好的、最新的加密工具。此外,不要给任何人你的备份,即便是加密的也不例外。另外,我们还建议每一段时间就进行一次私钥轮换(即生成新的私钥,并把资金从旧地址发送到新地址)。为深爱的人提供保障人类不能永生。因此我们需要继承/遗产计划。事实上,加密货币可以把财富传承变得更简单,并且可以减少第三方介入。同样,要做到这一点,有以下几种不同的方式:如果你使用的是低安全性的纸条或者金属标签,那么直接交给继承人就可以了。但这当然有一些潜在的缺点。他们如果太年轻或是技术水平不足,就可能会对备份保存不当。如果安全保障被他们搞砸了,黑客就可以轻而易举地通过他们窃取资金。此外,继承人还可以在任何时候带走你的资金。至于你希不希望他们这么做,就取决于你们之间的信任关系了。我强烈建议避免与他人分享私钥,无论你们之间关系多亲密。原因很简单,万一资金被取走/被盗,根本无法确定操作者是谁,或是谁保管不当,这会引起混乱。我们可以把纸条或者金属标签放进银行保险库,或者交给律师。但是,如上所说,如果哪位经手人得知了密钥,他们可以不留痕迹地取走资金。这跟律师需要到银行操作把资金转给继承人完全不同。但如果我们使用的是上面提到的U盘方法,就可以更安全地转移资金了。但这会需要更多设置步骤。有一种在线服务叫“死人键”(Deadman’s switch)。他们会定期(比如一个月)向用户发送短信/邮件,用户需要点击链接或者登陆进行回复。如果超过一定时期未回复,该账户将被视为处于“死人”状态,系统会自动按照该用户此前设定的接收人和内容一一发送邮件。我并不推荐这种服务,但大家如果感兴趣可以自行上Google了解并试用。事实上,Google自己就有这种服务。在它的众多设置中有一个选项,即用户超过3个月未登录账户的话,可以让其他人进入该账户。我个人没有试用过这一选项,所以无法评论。还请自行检验。如果你在想:“噢!太好了,我只要把密钥放进邮件里就可以传承给我的孩子了。”那请你从头再读一遍这篇文章。可能你会想,我可以把用来加密U盘的密码放进邮件里,这样我的伴侣或孩子就能进行解锁。这很接近正确做法了,但还不够。正如我们不能把密码跟互联网服务器上的备份放在一起,因为这会大大削弱备份/资金的安全性。如果你在想,那我可以打乱/加密包含了U盘密码的邮件,再另外设一个密码,告知我爱的人。这样想就对了。事实上,你不需要第二个密码。这个时候,你可以使用一种久经考验的加密工具,叫PGP (或者GPG)。PGP事实上是早期采用非对称加密(比特币也是用这一方式)的工具之一。在这里,我也不会介绍PGP使用教程,网上一搜便有。总结来说就是,让你的伴侣或孩子生成一个属于他们的PGP私钥,然后你使用他们的公钥来加密“死人”信息。这样一来,除了他们,就没有人可以读取信息内容了。这样的方式是相对安全的,但这需要他们能确保PGP私钥的安全性,并且不丢失它们。当然,他们还需要知道如何使用PGP邮件,这需要一定技术含量,而且过程还比较繁杂。如果你理解了以上建议,那么你自行持有大量加密货币的能力就已经达到基本水平(而不是高级水平)了。关于以上提及的一些问题,我们还有许多可探讨的解决方法,包括多重签名、门槛签名等等,但它们属于更高级的指南了。在下一部分,我们将探讨:使用交易平台这篇文章中的“交易平台”指的是对资金进行托管的中心化交易平台。在阅读了文章的先前部分后,你可能会说:“天呐,那真是太麻烦了。我直接把代币存到交易平台去吧。”但是,交易平台也不是没有风险的。虽然交易平台对托管资金和系统安全性负责任,但我们还是需要进行一些操作来保障我们账户的安全性。仅使用声誉好的大型交易平台交易平台存在交易对手风险。很多小型/新的交易平台刚开始可能都会制造一场退出骗局。他们会在收集用户的存款后跑路。所以,一定要远离那些“非盈利”、零交易费、高额折扣和/或返利奖励的交易平台。如果这些平台的目标不是正常获取业务收入,那么你的资金可能就是它们的唯一目标。正规的安全性保障措施需要投入大量资金,所以要求平台有可持续的商业模式。在安全性方面,不要对自己的资产敷衍了事。盈利能力强的大型交易平台不会制造退出骗局,他们没有这方面的驱动力。如果一个平台盈利能力强,商业模式可持续,拥有价值数十亿美元的业务,还有什么理由去盗窃几百万美元,然后在躲避和恐惧中生存?大型交易平台在安全性方面也经受了更多检验。是的,大型平台更加容易成为黑客的目标,这也是一种风险。但是,黑客也会以小型平台为目标,而且其中有些更容易得手。大型交易平台通常轮流和5-10个外部保安公司合作来进行渗透测试和安全性测试。保障你的账户安全在使用交易平台时,保障账户安全显然很重要。就让我们从一些基础知识说起。保障计算机的安全。通常来说, 计算机是整个安全链中最脆弱的一环。 可以的话,尽可能使用专用计算机来登陆交易账户。在计算机上安装商业杀毒软件(没错,保障安全性需要投资),并尽量减少垃圾软件的数量。把防火墙的功能全部打开。玩游戏、网上冲浪、下载等等都使用另一台计算机,并且杀毒软件、防火墙也全部打开。因为这台计算机上的病毒很有可能让黑客侵入同一网络中的其它计算机。所以,请确保这台计算机也是干净的。避免下载文件即使你并未在计算机上安装钱包,我也强烈建议不要在计算机或手机上下载任何文件。 如果有人向你发送word文件,让他们以Google doc链接的形式发送。如果发送PDF,在浏览器中用Google drive打开,而不要在计算机上打开。如果他们给你发来一个搞笑视频,让他们在视频平台上以链接形式发给你。 是的,我知道这很麻烦,但安全性保障不是免费的,资金损失也是真金白银的。在云端查看所有文件,不要下载任何东西到本地。此外,请关闭即时通讯软件的“自动保存照片和视频”功能。很多软件都有自动下载表情和视频的默认设置,这会对安全性的保障产生影响。软件要及时升级我知道,操作系统升级令人厌烦,但升级可以完善已发现的安全漏洞。黑客也会关注这些升级,并利用这些发现的漏洞来入侵那些懒于升级的用户的电脑。钱包软件或者交易平台App通常也是遵循同一模式。所以,一定要确保你所用的软件是最新版本。保障邮箱账户的安全。我推荐使用Gmail 或Protonmail账户。这两个邮件服务商总体上安全性要比其它强。 我们在其它邮件平台上看到了更多安全事故的发生。我强烈建议用户为每个交易平台创建一个专用邮件帐户,并使用一些晦涩的名字。这样一来,即使其它交易平台遭遇了安全事故,你在币安的账户也不会受到影响。这也能降低邮件钓鱼诈骗的概率。在邮件服务中开启2FA服务。我强烈建议使用Yubikey。它可以防御很多类型的黑客攻击,包括钓鱼网站等。在后面我们会讲到更多关于2FA的内容。如果你所在的国家出现过SIM卡交换诈骗,请不要绑定手机号作为邮件帐户恢复手段。我们看到很多SIM交换诈骗受害者遭受了邮件帐户密码被重置、账户被黑的后果。总体来说,我不推荐进行手机号和邮件帐户之间的绑定。请把它们分开。保障密码的安全性。给每一个平台的账户配置一个独一无二的强密码。不要害怕想不起密码。使用密码管理工具即可。对于大多数人来说,LastPass或者1Password就可以了。这两个软件都和浏览器、手机等集成得很好。两者都声称仅在本地存储密码,但在仅使用加密密码的设备之间会同步。如果想要更专业的工具,可以用KeePass,或者使用其适用于你的操作系统的版本。KeePass仅在本地存储信息。不会在设备之间进行同步,手机支持也少。它是开源的,所以不需要担心蠕虫等安全漏洞。请自行了解并选择一款适合你的工具。但不要因为“节省时间”这个理由就使用简单密码或者在所有平台都用同一个密码。一定要使用强密码,不然,你节省下来的时间可能是以大量资金损失为代价的。有了这些工具,如果你的计算机还出现病毒,那你就完蛋了。所以,请使用好的杀毒软件,并让它们保持运行。开启2FA验证。我强烈建议在创建币安账户后立即开启2FA(双因子验证)验证,如果此前没有做这件事,请现在立刻去做。因为2FA码通常存在手机中,在邮件和密码被黑时它可以提供一定程度上的保护。然而,2FA并不能提供完全的防护。例如,如果计算机病毒窃取了邮件地址和密码,通过追踪你的2FA码键盘输入,它可以继续窃取你的2FA码。再例如,如果你进入了钓鱼网站,输入了邮件地址、密码和2FA码,那么黑客就可以同时使用这些信息登陆你真正的币安账户。可能的情况有很多种,我们不能详尽列举。所以,我们还是要好好保护计算机,并且当心钓鱼网站(后续还有更多相关内容)。安装U2F。U2F是一种硬件设备,可以生成一个独一无二的基于时间、域名特定的代码。Yubikey可以说是最适合U2F的设备。(虽然很多硬件钱包也可以使用U2F,但用户体验没有那么好,需要安装App,整个操作流程也比较慢。)U2F有三大优势。第一,它基于硬件,所以存储在设备中的秘密几乎不可能被窃取。第二,它是针对特定域名的。即使你不经意进入了钓鱼网站,它也能提供保护。最后,它的使用非常简单。基于以上原因,我强烈建议大家在币安账户绑定Yubikey。针对黑客窃取资金,它能提供最好的保障措施之一。同时,也请将Yubikey与Gmail账户、LastPass和其它支持的账户进行绑定,保障这些账户的安全。停止使用短信验证。曾经有一段时间短信验证很流行。但时代已经不同了。随着SIM交换诈骗更加高发,我们建议大家不要再使用短信认证,并转换成上面提到的2FA或者U2F等验证方式。创建提现地址白名单我们强烈建议使用币安的提现白名单功能。开通后,用户可以向已认证地址快速提现,而黑客想要新增提现地址也更困难。API安全性我们很多用户使用API进行交易和提现。币安提供不同版本的API,最新版本支持非对称加密,也就是说,我们只需要知道用户的公钥。这样,用户就可以自行保留私钥,仅向我们提供公钥信息即可。我们通过公钥来确定订单所有权,并且永远不会要求获取用户私钥。请妥善保管你的私钥。如果使用交易平台,我们并不需要向自行持币那样进行API备份。如果API密钥丢失,你可以随时创建新密钥。只需确保他人并未获知你的API密钥即可。完成L2层KYC验证。保障账户安全的最佳方式之一就是完成L2层KYC验证。这样我们就能知道你的样子,并在我们的大数据风险引擎检测到账户异常时用先进的自动视频验证技术进行验证。保障手机和其它设备的实体安全一定要保障手机的安全。因为手机上可能安装了你的邮件App、Binance App、你的2FA密码等。不要进行手机越狱。那样会大大降低安全性。此外,还要保证手机不被丢失,并加上屏幕锁。其它设备也一样。确保他们不会落入他人手中。当心网络诱骗当心网络诱骗。这些行为通常发生在邮件、信息或者社交媒体上,在点击链接后会弹出一个看起来很像币安网站的页面,它会让你输入证件信息等,黑客就可以使用这些信息来进入你真正的币安账户。我们只要谨慎行事就能避免诈骗。不要点击邮件或社交媒体网页中的任何链接。在进入币安网站时手动输入网页地址,或者使用书签。不要和他人共用邮箱。不要在不同网站使用同一邮箱。如果电报群、Instagram上有陌生人(特别是叫CZ或者类似名字的人)突然联系你,一定要当心。总体来说,只要遵循了以上建议,你的币安账户就能获得相对较高的安全性。其它话题诈骗现象层出不穷。诈骗者通过创建虚假社交账号,并让它们看起来像一些明星账号,例如@cz_binance_,然后试着说服你转钱给他们。请记住这个原则:除非这是你的本意,不要给任何人发送资金。在交易时,一定要通过两个不同渠道核实对方真实身份。如果CZ突然联系你,并以一些很有说服力的理由让你转一些代币给他,请立即举报这个账户。如果朋友突然发信息给你,要你发送一些加密货币救急,一定要打电话核实,或者让他们发一个短视频核实。这个时候我们要设想,朋友的即时通讯软件是否有可能被黑,或者手机被偷了。YouTube 欺诈YouTube的诈骗者现在越来越精明了,他们甚至编辑一些CZ在做空投的假视频。看到这些,举报就是了。社会欺诈如果有奖励活动需要你先发送一些代币到某个地址,然后以更多数量返还,不要相信,你不会获得返还的。记住一个简单原则:发送加密货币时一定要谨慎。不要点击邮件中的链接不要点击邮件中的链接,然后在弹出的页面上输入用户名或密码。这一定是一个陷阱。所以,不要在社交媒体网站上点击关注链接,也不要在其弹出的页面进行登陆。要自动把它们看成钓鱼网站。不要理它们就是了。进入常用加密货币交易平台网站时,一定要手动输入网页地址。请记住Binance.com的拼写,或者使用书签。交易所源码丨交易所APP开发正式版丨交易所系统开发技术逻辑分析数字货币交易所开发详情丨数字货币交易所系统开发(详细及逻辑)丨数字货币交易所源码原生交易所开发详情丨原生交易所系统开发(成熟技术)丨原生交易所现成源码部署交易所系统丨交易所系统开发(逻辑及功能)丨交易所开发源码交付秒合约开发原理丨秒合约系统开发(详细规则)丨秒合约源码案例部署永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例)数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情数字货币交易所系统开发方案详细丨数字货币交易所开发成品技术源码合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署海外版数字货币交易所系统开发(逻辑及功能)丨多语言数字货币交易所系统开发(案例及源码)交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案)交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署Uniswap交易所开发稳定版丨Uniswap交易所系统开发(开发模板)丨Uniswap交易所系统源码案例部署数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案)DAPP数字货币交易所开发逻辑,DAPP数字货币交易所系统开发(案例及源码)
文章
存储  ·  安全  ·  程序员  ·  API  ·  网络安全  ·  定位技术  ·  区块链  ·  数据安全/隐私保护  ·  Android开发  ·  iOS开发
2023-02-03
气象监测软件的程序设计
气象监测软件的程序设计项目指导书(一)基本信息        运用面向对象的思想设计一个气象监测软件。并综合运用Java的Swing包中GUI容器和组件,以及多线程机制等面向对象的方法与技术进行编程实现。(二)项目目标(1)能够运用面向对象设计思想进行项目的整体设计(2)能够构造图形用户界面程序及根据需要运用GUI组件(3)能够根据事件驱动的原理搭建类结构(4)能够利用多线程机制处理多任务(三)任务描述        编写一个气象监测软件,气象监测软件可以定时从气象站获取最新的气象数据包括:温度、湿度、气压。气象监测软件可以把获得的气象数据通过柱状图、可视化数字窗口或控制台呈现动态气象数据的变化。未来还可以根据用户的需求,对数据呈现方式进行扩展。备注:测试时可以通过存根模块用随机数的方式模拟气象数据的变化。(四)指导内容1、相关知识:(1)运用面向对象思想进行及项目设计(2)构造图形用户界面及常用GUI组件(3)事件处理模型(4)构建多线程2、开发环境:JDK8(及以上)+Eclipse(或Intellij Idea)3、过程与步骤:对气象监测软件中涉及的实体进行抽象,分析各个类间的关系,具体步骤如下:任务 1:根据MVC的设计原则,设计气象数据视图【解决思路】一个接口IDisplay定义了所有三种显示视图的共有方法。CurrentDisplay类是一个具体的观察者,它可以在控制台上显示最新的气象信息;NumberDisplay类通过可视化数字窗口显示最新的气象信息;BarDisplay是通过气象数据转化为三条柱状图呈现给用户。【运行效果】CurrentDisplay视图的运行效果如下:NumberDisplay视图的运行效果如下,位置任意,宽260,高120:BarDisplay视图的运行效果如下,位置任意,宽500,高400:【类图】任务 2 :根据MVC的设计原则,设计气象数据的主题模型【解决思路】WeatherData封装了从气象站获取气象数据的方法getTemprature()、getHumidity()、getPressure(),这里可以用随机数的方式模拟气象数据的更新。【类图】任务 3:根据MVC的设计原则,设计气象数据更新的控制器组件【解决思路】WeatherStation是模拟气象站的服务器程序,这个气象站每隔5秒钟从WeatherData获取气象数据更新,然后通过三种不同的展示方式,对外展示气象情况。【类图】
文章
前端开发  ·  数据可视化  ·  Java  ·  Android开发  ·  容器
2023-02-03
Polarr泼辣修图2023最新版有哪些新增功能?
泼辣修图5.11.4最新版为用户带来更多新版的修改工具,进一步优化相关的设备,可以更舒畅的使用去修改图片,还有很多贴纸,文字等等小工具使用,丰富照片情景,感兴趣的可以来试试。适用于Windows的泼辣修图摄影爱好者都在用泼辣处理照片泼辣修图是一款全平台专业修图软件,只要你订阅了泼辣修图的会员服务,即可同步解锁所有平台的高级功能。适用于 maOs 的泼辣修图泼辣修图是一款强大的专业修图软件,拥有上百款调色工具,还有丰富的图层素材,更有智能的人像修饰面板。适用于Android的泼辣修图泼辣修图app是一款手机实用的修图软件,工具操作简单快捷,一键就对图片进行处理,生成最美的图。适用于iOS的泼辣修图泼辣修图app是一款手机实用的修图软件,工具操作简单快捷,一键就对图片进行处理,生成最美的图。化繁为简 轻松驾驭泼辣修图专业版是一款强大的专业修图软件,拥有上百款调色工具还有丰富的图层素材, 更有智能的人像修饰面板,具备物体识别的智能蒙板,高效的滤镜管理系统和强大的文字工具,支持批量处理。一切围绕摄影,无论是新手还是专业用户,都能得心应手。丰富调色工具高质量图层泼辣拥有上百款专业调色工具,包括HSL、曲线、色调分离、畸变校正等,帮助你雕琢图像的每一个细节高质量图层素材泼辣内置上百款高质量图层素材,搭配十几种混合模式轻松实现创意图像效果智能人像修饰泼辣可以自动识别画面中的人脸并定位其五官,轻松滑动即可实现磨皮、瘦脸等美颜效果。精细局部调整泼辣拥有包括线性、圆形、选色、明度等多种维度的局部调整工具,轻松实现图像的分区调整。高效滤镜管理泼辣可以将你的调整保存为滤镜并快速应用至其他照片,高效管理你的色彩灵感。批量图片导出泼辣可以将处理完的多张照片一次性批量导出,大幅提升你的修图效率。强大文字面板利用泼辣的文字面板,不仅可以实现文字添加与编辑,更能搭配混合模式实现创意文字效果。轻量简单易用泼辣拥有专业与简易两种操作模式,你可以基于自己的使用习惯打造专属的软件界面。泼辣免费和会员功能对比Polarr5-Mac安装包下载如下:https://wm.makeding.com/iclk/?zoneid=54528Polarr5-Win安装包下载如下:https://wm.makeding.com/iclk/?zoneid=54529泼辣修图Pro版常见问题1、开通会员一定要注册泼辣账号吗?可以用手机号注册还是邮箱注册?是的,必须先注册泼辣账号,否则无法开通会员。请注意,泼辣PC版仅支持邮箱登录,所以您的账号不可以是手机号!请重新注册邮箱账号,否则将无法使用PC版的高级功能。2、泼辣修图会员支持多少台设备同时使用?是否支持换机?会员权益与您的泼辣修图账号是绑定关系,您可以同时在Windows、macOS、iPhone、Android、iPad设备上同时登录同一个账号,享受会员专属高级功能,最多5台同时在线。换机时,请在旧的设备程序中退出账号登录,并在新设备中重新登录。3、泼辣修图会同步我的照片到各个设备吗?它支持同步哪些数据?泼辣修图不会上传您的照片到云上,所以您的图片仅保存在本机,不会存在泄露的风险。泼辣修图会同步您自己创建、收藏和购买过的各种滤镜,会员将享受不限数量的滤镜同步,免费版最多支持3个。4、泼辣修图如何获取滤镜?您可以使用泼辣修图的“获取滤镜”功能导入和安装滤镜。首先点击滤镜图标,然后点击左侧的更多,这时候会弹出一个滤镜面版,我们选择右上角的获取滤镜:一是扫描滤镜,二是从相片导入。6、泼辣修图是否支持RAW格式?目前只有Windows版的泼辣修图支持RAW格式,并且需要会员才可以使用,您可以在版本对比页面查看到会员的所有高级功能。7、软件后续如果有升级,我是否需要再交钱?泼辣修图会员根据您的订阅期提供相应的免费升级服务,如果您的会员过期,不论您使用的是什么版本软件,只要是高级功能均需要再次付费才可以继续使用。软件可以免费升级到后续的新版。8、泼辣修图Pro版会员,是分电脑版和手机版的吗?电脑手机随便切换用吗?Pro版会员是同时支持电脑上的(Win/Mac),还有手机上iOS/Android版,还有网页版的。但是您在手机版上购买的订阅会员(如Lite和Studio),仅支持解锁手机APP相关功能,并不能解锁PC版本的高级功能。
文章
Android开发  ·  iOS开发  ·  计算机视觉  ·  MacOS  ·  Windows
2023-02-03
android mPaas H5容器加载H5页面,关于权限的问题
页面中已经申请权限,在百度、QQ浏览器中测试都会弹窗,并能使用; MPNebula.startUrl()加载页面后该怎么处理呢
问答
移动开发  ·  Android开发  ·  容器
2023-02-03
JVM监控及诊断工具
@[toc]命令行jps 查看正在运行的Java进程ps(Java Process Status):显示指定系统内所有的HotSpot虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程。说明:对于本地虚拟机进程来说,进程的本地虚拟机ID与操作系统的进程ID是一致的,是唯一的。基本使用语法为:jps [options] [hostid]我们还可以通过追加参数,来打印额外的信息options参数-q:仅仅显示LVMID(local virtual machine id),即本地虚拟机唯一id。不显示主类的名称等-l:输出应用程序主类的全类名 或 如果进程执行的是jar包,则输出jar完整路径-m:输出虚拟机进程启动时传递给主类main()的参数-v:列出虚拟机进程启动时的JVM参数。比如:-Xms20m -Xmx50m是启动程序指定的jvm参数。说明:以上参数可以综合使用。补充:如果某 Java 进程关闭了默认开启的UsePerfData参数(即使用参数-XX:-UsePerfData),那么jps命令(以及下面介绍的jstat)将无法探知该Java 进程。hostid参数RMI注册表中注册的主机名。如果想要远程监控主机上的 java 程序,需要安装 jstatd。对于具有更严格的安全实践的网络场所而言,可能使用一个自定义的策略文件来显示对特定的可信主机或网络的访问,尽管这种技术容易受到IP地址欺诈攻击。如果安全问题无法使用一个定制的策略文件来处理,那么最安全的操作是不运行jstatd服务器,而是在本地使用jstat和jps工具。jstat:查看JVM统计信息jstat(JVM Statistics Monitoring Tool):用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。常用于检测垃圾回收问题以及内存泄漏问题。基本使用语法为:jstat - [-t] [-h] [ []]查看命令相关参数:jstat-h 或 jstat-help其中vmid是进程id号,也就是jps之后看到的前面的号码option参数选项option可以由以下值构成。类装载相关的:-class:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等垃圾回收相关的:-gc:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。-gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。-gcutil:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。-gccause:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。-gcnew:显示新生代GC状况-gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间-geold:显示老年代GC状况-gcoldcapacity:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间-gcpermcapacity:显示永久代使用到的最大、最小空间。JIT相关的:-compiler:显示JIT编译器编译过的方法、耗时等信息-printcompilation:输出已经被JIT编译的方法jinfo:实时查看和修改JVM配置参数jinfo(Configuration Info for Java):查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数。在很多情况卡,Java应用程序不会指定所有的Java虚拟机参数。而此时,开发人员可能不知道某一个具体的Java虚拟机参数的默认值。在这种情况下,可能需要通过查找文档获取某个参数的默认值。这个查找过程可能是非常艰难的。但有了jinfo工具,开发人员可以很方便地找到Java虚拟机参数的当前值基本使用语法为:jinfo [options] pid说明:java 进程ID必须要加上jmap:导出内存映像文件&内存使用情况map(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。开发人员可以在控制台中输入命令“jmap -help”查阅jmap工具的具体使用方式和一些标准选项配置。基本使用语法为:jmap [option]jmap [option] <executablejmap [option] [server_id@]jhat:JDK自带堆分析工具jhat(JVM Heap Analysis Tool):Sun JDK提供的jhat命令与jmap命令搭配使用,用于分析jmap生成的heap dump文件(堆转储快照)。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,用户可以在浏览器中查看分析结果(分析虚拟机转储快照信息)。使用了jhat命令,就启动了一个http服务,端口是7000,即http://localhost:7000/,就可以在浏览器里分析。说明:jhat命令在JDK9、JDK10中已经被删除,官方建议用VisualVM代替。基本适用语法:jhatjstack:打印JVM中线程快照jstack(JVM Stack Trace):用于生成虚拟机指定进程当前时刻的线程快照(虚拟机堆栈跟踪)。线程快照就是当前虚拟机内指定进程的每一条线程正在执行的方法堆栈的集合。生成线程快照的作用:可用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题。这些都是导致线程长时间停顿的常见原因。当线程出现停顿时,就可以用jstack显示各个线程调用的堆栈情况。在thread dump中,要留意下面几种状态死锁,Deadlock(重点关注)等待资源,Waiting on condition(重点关注)等待获取监视器,Waiting on monitor entry(重点关注)阻塞,Blocked(重点关注)执行中,Runnable暂停,Suspended对象等待中,Object.wait() 或 TIMED_WAITING停止,Parkedjcmd:多功能命令行在JDK 1.7以后,新增了一个命令行工具jcmd。它是一个多功能的工具,可以用来实现前面除了jstat之外所有命令的功能。比如:用它来导出堆、内存使用、查看Java进程、导出线程信息、执行GC、JVM运行时间等。cmd拥有jmap的大部分功能,并且在Oracle的官方网站上也推荐使用jcmd命令代jmap命令jcmd 进程号 具体命令:显示指定进程的指令命令的数据Thread.print 可以替换 jstack指令GC.class_histogram 可以替换 jmap中的-histo操作GC.heap_dump 可以替换 jmap中的-dump操作GC.run 可以查看GC的执行情况VM.uptime 可以查看程序的总执行时间,可以替换jstat指令中的-t操作VM.system_properties 可以替换 jinfo -sysprops 进程idVM.flags 可以获取JVM的配置参数信息GUIJDK自带的工具jconsole:JDK自带的可视化监控工具。查看Java应用程序的运行概况、监控堆信息、永久区(或元空间)使用情况、类加载情况等Visual VM:Visual VM是一个工具,它提供了一个可视界面,用于查看Java虚拟机上运行的基于Java技术的应用程序的详细信息。JMC:Java Mission Control,内置Java Flight Recorder。能够以极低的性能开销收集Java虚拟机的性能数据。第三方工具MAT:MAT(Memory Analyzer Tool)是基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗JProfiler:商业软件,需要付费。功能强大。Jconsolejconsole:从Java5开始,在JDK中自带的java监控和管理控制台。用于对JVM中内存、线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监控工具。Visual VMVisual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具。它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等,甚至代替JConsole。在JDK 6 Update 7以后,Visual VM便作为JDK的一部分发布(VisualVM 在JDK/bin目录下)即:它完全免费。主要功能:1.生成/读取堆内存/线程快照2.查看JVM参数和系统属性3.查看运行中的虚拟机进程4.程序资源的实时监控5.JMX代理连接、远程环境监控、CPU分析和内存分析官方地址:https://visualvm.github.io/index.htmlEclipse MATMAT(Memory Analyzer Tool)工具是一款功能强大的Java堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的,不仅可以单独使用,还可以作为插件的形式嵌入在Eclipse中使用。是一款免费的性能分析工具,使用起来非常方便。MAT可以分析heap dump文件。在进行内存分析时,只要获得了反映当前设备内存映像的hprof文件,通过MAT打开就可以直观地看到当前的内存信息。一般说来,这些内存信息包含:所有的对象信息,包括对象实例、成员变量、存储于栈中的基本类型值和存储于堆中的其他对象的引用值。所有的类信息,包括classloader、类名称、父类、静态变量等GCRoot到所有的这些对象的引用路径线程信息,包括线程的调用栈及此线程的线程局部变量(TLS)MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如Sun,HP,SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM的 PHD 堆存储文件等都能被很好的解析。最吸引人的还是能够快速为开发人员生成内存泄漏报表,方便定位问题和分析问题。虽然MAT有如此强大的功能,但是内存分析也没有简单到一键完成的程度,很多内存问题还是需要我们从MAT展现给我们的信息当中通过经验和直觉来判断才能发现官方地址: https://www.eclipse.org/mat/downloads.phpJProfiler在运行Java的时候有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在IDEA中也有这么一个插件,就是JProfiler。JProfiler 是由 ej-technologies 公司开发的一款 Java 应用性能诊断工具。功能强大,但是收费。特点:使用方便、界面操作友好(简单且强大)对被分析的应用影响小(提供模板)CPU,Thread,Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket等进行分析支持多种模式(离线,在线)的分析支持监控本地、远程的JVM跨平台,拥有多种操作系统的安装版本主要功能:1-方法调用:对方法调用的分析可以帮助您了解应用程序正在做什么,并找到提高其性能的方法2-内存分配:通过分析堆上对象、引用链和垃圾收集能帮您修复内存泄露问题,优化内存使用3-线程和锁:JProfiler提供多种针对线程和锁的分析视图助您发现多线程问题4-高级子系统:许多性能问题都发生在更高的语义级别上。例如,对于JDBC调用,您可能希望找出执行最慢的SQL语句。JProfiler支持对这些子系统进行集成分析官网地址:https://www.ej-technologies.com/products/jprofiler/overview.htmlArthas上述工具都必须在服务端项目进程中配置相关的监控参数,然后工具通过远程连接到项目进程,获取相关的数据。这样就会带来一些不便,比如线上环境的网络是隔离的,本地的监控工具根本连不上线上环境。并且类似于Jprofiler这样的商业工具,是需要付费的。那么有没有一款工具不需要远程连接,也不需要配置监控参数,同时也提供了丰富的性能监控数据呢?阿里巴巴开源的性能分析神器Arthas应运而生。Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态?怎么快速定位应用的热点,生成火焰图?
文章
Arthas  ·  存储  ·  监控  ·  数据可视化  ·  安全  ·  Java  ·  测试技术  ·  数据库连接  ·  编译器  ·  Android开发
2023-02-03
Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试
Python自动化,大概也许或者是今年最具热度的话题之一了。七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那么Python自动化到底能帮我们做些什么呢?第一,Python自动化可以避免熟练工种的重复工作,对于功能相对完整和成熟的软件,每发布一个新的版本,无论是大版本还是小版本,其中大部分功能和界面都几乎和上一个版本相似或完全相同,但所谓向上兼容,你不能因为新功能的产生而不对老版本功能进行测试工作,而这些老功能又在上一个版本上线时测过,所以这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。第二,Python自动化可以帮助我们提高测试效率:比如一个项目要的开发周期只有短短的几个月,而在测试期间是每周都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,人工测试是非常的耗时和繁琐,这样必然会使测试效率低下,而自动化流程恰恰帮我们提高了测试效率。那么对于移动App测试领域,如果一个新的应用发布版本,QA人员面临的挑战就是如何应对市场上数以千计的机型兼容性测试,毫无疑问,这是一个非常浩大的工程,更别提有些工程机在市面上根本就采购不到,比如谷歌的Nexus和Pixel系列手机,所以本次我们就在Win10系统下尝试利用Genymotion模拟器配合Docker构建Appium容器,实现短时间内上千款机型的自动化测试工作。首先关于Android模拟器为什么选择Genymotion,诚然,国内也有蓝神等模拟器可供选择,但是Genymotion作为Android模拟器领域的执牛耳者,其启动及运行速度非常快,不仅支持多个Android版本,还可以多个Android系统同时启动运行,这就为我们并行测试脚本提供了便利,当然了,Genymotion也有自身的缺点,就是客户端版本为内核x86架构暂不支持arm框架的应用,但是云端服务已经支持了arm架构,这无疑在模拟器领域是一个重大利好。进入Genymotion注册页面:https://www-v1.genymotion.com/account/create/注册成功后,注意邮箱需要激活一下,随后进入下载页面:https://www.genymotion.com/download/这里Win10系统会有两个版本,因为Genymotion内核是基于VirtualBox虚拟机,所以如果未安装VirtualBox,则选择with Virtualbox,否则可以选择without Virtualbox,直接选择Genymotion本体即可。安装成功后,用刚刚注册的账号进行登录,随后选择personal use(个人版):随后选择需要测试的机型创建即可:创建好对应手机的虚拟机,还需要进行一些设置,才能保证虚拟机正常运行。将Virtualbox设置常规选项中的版本重新选择Ohter Linux-64位同时将网络选项的混杂模式选择:允许虚拟电脑,这个稍后链接虚拟机的时候会用到:最后,为了安全起见,最好将宿主机的hyper-v功能关闭,管理员权限打开终端,执行命令bcdedit /set hypervisorlaunchtype off重启电脑后,启动手机模拟器,出现Android界面则表示配置成功:接着我们来配置Android ADB,Android ADB又是什么?ADB 全称是 Android Debug Bridge,是开发或使用 Android 时很常用到的工具。可以从电脑透过 USB 连线到 Android 手机上,利用指令列来控制你的手机。这里我们主要是通过ADB命令来获取虚拟机的终端ip,直接下载压缩包文件:https://dl.google.com/android/repository/platform-tools-latest-windows.zip将其解压到C盘根目录,C:\platform-tools\_r31.0.2-windows\platform-tools然后将该目录配置全局环境变量,使其可以在终端内直接访问:C:\Users\liuyue>adb --version Android Debug Bridge version 1.0.41 Version 31.0.2-7242960 Installed as C:\platform-tools_r31.0.2-windows\platform-tools\adb.exe现在执行设备列表命令:C:\Users\liuyue>adb devices List of devices attached 192.168.42.103:5555 device可以看到,刚刚我们启动的虚拟机已经出现在设备列表中了,直接通过connect命令就可以进行连接,和真机几乎没有任何差别:C:\Users\liuyue>adb devices List of devices attached 192.168.42.103:5555 device C:\Users\liuyue>adb connect 192.168.42.103:5555 already connected to 192.168.42.103:5555 C:\Users\liuyue>下面轮到Docker出场了,Docker的任务主要是利用容器运行Appuim自动化脚本,这样就避免了繁缛的Appuim安装配置环节,当然了,您的电脑得提前装好Docker,如果没有,请移步:win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)随后下载Appium基础镜像,Dockerhub上的镜像鱼龙混杂,这里还是推荐官方的版本:https://hub.docker.com/r/appium/appium执行命令:docker pull appium/appium查看镜像:liuyue@DESKTOP-NVU6CCV MINGW32 ~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE appium/appium latest 70f3d328b949 6 weeks ago 1.55GB紧接着启动容器:docker run --privileged -d -p 4723:4723 --name appium appium/appium这里我们启动Appium容器,端口映射到4723,privileged参数让其具备root权限,-d后台执行。随后查看容器运行状态:liuyue@DESKTOP-NVU6CCV MINGW32 ~ $ docker run --privileged -d -p 4723:4723 --name appium appium/appium a2e8f11fdf7c561b075b563dfcc1efb6e5381e78dc3d4435a89cf8f97be52f6d liuyue@DESKTOP-NVU6CCV MINGW32 ~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a2e8f11fdf7c appium/appium "/bin/sh -c '/root/w…" 7 minutes ago Up 19 seconds 4567/tcp, 0.0.0.0:4723->4723/tcp appium此时,我们就可以利用docker容器内的adb服务进行操作了:docker exec -it appium adb connect 192.168.42.103:5555可以看到,docker连接手机配对成功:liuyue@DESKTOP-NVU6CCV MINGW32 ~ $ docker exec -it appium adb connect 192.168.42.103:5555 connected to 192.168.42.103:5555常用的adb命令都可以进行操作,例如查看手机Android版本:liuyue@DESKTOP-NVU6CCV MINGW32 ~ $ docker exec -it appium adb shell getprop ro.build.version.release 5.0下面我们来编写一套简单的Appium自动化测试脚本,首先安装Appium库:pip install Appium-Python-Client编写appium\_test.py:from appium import webdriver cap = { "platformName": "Android", "platformVersion": "5", "deviceName": "192.168.42.103:5555", "udid":"192.168.42.103:5555", # 真机的 # "platformName": "Android", # "platformVersion": "7.1.2", # "deviceName": "10d4e4387d74", "noReset": True, "unicodeKeyboard": True, "resetkeyboard": True } driver = webdriver.Remote('https://192.168.99.100:4723/wd/hub', cap) # 安装APP driver.install_app(app_path='C:\\test.apk', replace=False, # 不允许覆盖 timeout=10000, # 超时时间为10秒 allowTestPackages=True, # 允许测试包 useSdcard=False, # 不要安装在Sdcard grantPermissions=False) # 授予权限 driver.quit()这里的192.168.42.103:5555是Genymotion模拟的手机客户端地址,而https://192.168.99.100:4723/wd/hub则是基于Docker的Appium容器,这里我们为手机安装一款测试的app。安装操作脚本执行以后,可以判断是否安装成功:from appium import webdriver cap = { "platformName": "Android", "platformVersion": "5", "deviceName": "192.168.42.103:5555", "udid":"192.168.42.103:5555", # 真机的 # "platformName": "Android", # "platformVersion": "7.1.2", # "deviceName": "10d4e4387d74", "noReset": True, "unicodeKeyboard": True, "resetkeyboard": True } driver = webdriver.Remote('https://192.168.99.100:4723/wd/hub', cap) # 判断APP是否安装,传递的参数为包名 res = driver.is_app_installed('com.tencent.android.qqdownloader') print(res) driver.quit()也可以利用脚本启动一些app,比如内置的计算器应用:from appium import webdriver from time import sleep cap = { "platformName": "Android", "platformVersion": "5", "deviceName": "192.168.42.103:5555", "udid":"192.168.42.103:5555", # 真机的 # "platformName": "Android", # "platformVersion": "7.1.2", # "deviceName": "10d4e4387d74", "appPackage": "com.android.calculator2", "appActivity": "com.android.calculator2.Calculato", "noReset": True, "unicodeKeyboard": True, "resetkeyboard": True } driver = webdriver.Remote('https://192.168.99.100:4723/wd/hub', cap) # 等待3秒 sleep(3) # 将APP置于后台运行5秒钟,然后再切回前台 driver.background_app(5) # 关闭APP driver.close_app() sleep(3) # 重新启动APP driver.launch_app() sleep(3) driver.quit()这里计算器的包名和activity信息都配置在cap变量中。杀死应用进程:from appium import webdriver cap = { "platformName": "Android", "platformVersion": "5", "deviceName": "192.168.42.103:5555", "udid":"192.168.42.103:5555", # 真机的 # "platformName": "Android", # "platformVersion": "7.1.2", # "deviceName": "10d4e4387d74", "appPackage": "com.android.calculator2", "appActivity": "com.android.calculator2.Calculato", "noReset": True, "unicodeKeyboard": True, "resetkeyboard": True } driver = webdriver.Remote('https://192.168.99.100:4723/wd/hub', cap) # 等待3秒 sleep(3) # 如果应用程序没有运行或正在后台运行,则激活该应用程序 driver.activate_app('com.android.calculator2') sleep(3) # 终止应用程序 driver.terminate_app('com.android.calculator2') sleep(3) driver.quit()几乎所有的移动端应用操作都可以编写Python脚本进行自动化测试,我们可以将Appium理解为移动端的Selenium,使用起来非常方便。结语:莎士比亚说过,“一千个观众眼中有一千个哈姆雷特”。而在千万个Genymotion模拟器中,移动App也可以是千万种样子,通过编写Appium自动化脚本就可以将测试人员将这千万种的重复测试劳动中解放出来,何乐而不为呢?
文章
安全  ·  测试技术  ·  Android开发  ·  虚拟化  ·  Docker  ·  Python  ·  Windows  ·  容器
2023-02-03
嵌入式(一)——初步了解
一、什么是嵌入式开发1.软件:应用软件(上层)2.操作系统:系统软件:驱动、BSP、内核(底层)3.硬件嵌入式开发:在已有的硬件上移植操作系统发展趋势:专业化、小型化二、嵌入式开发 VS 传统开发传统开发:软硬件耦合度高;嵌入式开发:应用软件将释放活力嵌入式 = 保姆回家只需要发号施令,先吃饭还是先喝汤(算法)不用关心(放多少盐、多少糖)保姆不会做植入新菜系,教会她(做驱动)高级的保姆需要更多的钱降低了软硬件耦合度,提高了可以移植性保姆是宝藏(之前会了很多事情=很多开源的工具和库)提高了开发效率实现了多任务,网络,实现智能苹果:闭源(生态差、管理易)安卓:开源(生态好、管理难)三、学习路线应用软件(上层开发)1.嵌入式Linux安装及使用;(命令)2.嵌入式Linux开发工具;(gcc、gdb、make、git、shell、cmake)3.嵌入式C语言开发;4.嵌入式Linux C开发;(文件io、多任务、网络、数据库);5.嵌入式C++开发(网络服务器、中间件)6.嵌入式GUI开发(Qt)+人工智能硬件(底层开发)fpga+IC设计7.嵌入式硬件基础;(51、stm32)8.嵌入式硬件开发;(crotex-A)9.嵌入式系统移植;(BSP:u-boot)10.嵌入式Linux内核开发;(内存管理)11.嵌入式底层驱动开发;12.嵌入式操作系统开发
文章
NoSQL  ·  算法  ·  中间件  ·  Linux  ·  Shell  ·  开发工具  ·  C语言  ·  Android开发  ·  C++  ·  git
2023-01-29
1 2 3 4 5 6 7 8 9
...
20
跳转至:
mPaaS 移动开发平台
96 人关注 | 302 讨论 | 157 内容
+ 订阅
  • 拜托,不用记密码真的超酷好吗?
  • 动态卡片:富媒体内容井喷式增长下,新一代移动端动态研发的模式
  • 【重磅发布】蚂蚁动态卡片,让 App 首页实现敏捷更新
查看更多 >
开发与运维
5618 人关注 | 131425 讨论 | 301517 内容
+ 订阅
  • WiFi密码忘记?电脑密码忘记?
  • 笔记本电脑亮度调整无效、字体大小改变的解决方案
  • IDEA安装及使用详细教程
查看更多 >
安全
1191 人关注 | 23954 讨论 | 81173 内容
+ 订阅
  • WiFi密码忘记?电脑密码忘记?
  • 数据库、数据仓库与数据湖的概念与基本特点
  • MySQL和Navicat怎么连接
查看更多 >
大数据
188280 人关注 | 29193 讨论 | 80336 内容
+ 订阅
  • 数据库、数据仓库与数据湖的概念与基本特点
  • 使用谱聚类(spectral clustering)进行特征选择
  • Java web项目怎么创建以及没有出现web.xml的解决方法
查看更多 >
云原生
233902 人关注 | 11325 讨论 | 45191 内容
+ 订阅
  • 四位一体水溶交融,Docker一拖三Tornado6.2 + Nginx + Supervisord非阻塞负载均衡容器式部署实践
  • 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
  • 函数计算如何安装字体
查看更多 >