个人觉得google这个命名来源于古希腊哲学家阿基米德一个公式。
就是天下中所有沙漠中的沙粒等于10的100次方,这是阿基米德一个伟大的数学思想。
10的100次方是无限大的。
还有就是其他人说的:Google公司选用“Google”一词用来代表在互联网上可以获得的海量的资源。“Google”一词源于单词“Googol” ,据说是因拼错而产生的。“Googol” 指的是10的100次幂,写出的形式为数字1后跟100个零。该词现在也可以用作动词,例如“google某物”的意思是在google搜索引擎上搜索“某物”这个关键词! Googol是由美国数学家Edward Kasner九岁的侄子 Milton Sirotta 发明的,后来在数学家Edward Kasner和James Newman的著作《Mathematics and the Imagination》中被引用。Google公司采用这个词显示了公司想征服网上无穷无尽资料的雄心。Google公司没有采用Googol可能是因为版权的问题,而且当他们注册Google.com的时候,Googol.com已经被注册。 Google词义的另一种解释:G意义为手,00为多个范围,L意为长,E意为出,把它们合一起,意义为:我们GOOGLE无论在哪里都能为您找出很长的一大堆您想要的。
百宝云网络验证系统是一款集合验证、防破解、自动售卡等众多优点于一身的网络验证系统,自其发布之日起就收到了各个语言作者的关注。但是部分作者在使用过程中遇到了不少问题,为此我们特意为易语言作者准备了详细的视频教程。 一、一键安装即可使用 二、为多个语言的作者提供了接入示例,接入简单 三、简单直观的WEB操作界面,每个应用都能随时掌控 四、性能可根据业务需求自由拓展 免费版支持只支持单个项目,同时承载在线用户80人左右;VIP版同时在线800-1000人,支持多项目管理;针对大用户我们推出了MySQL版
在Android平台URI主要分五个部分:scheme, authority, path, queryParameter, queryString。其中authority又分为host和port。格式如下:(url的所有字母命名只能为小写) scheme://host:port/path?qureyParameter=queryString 例如:myscheme://www.febmaple.com:80/mypath?key=mykey
在Android的Manifest配置文件中,在要启动的activity下配置项中有配置。 其中包含内容有:
<data android:host="" android:mimeType="" android:path="" android:pathPattern="" android:pathPrefix="" android:port="" android:scheme="" android:ssp="" android:sspPattern="" android:sspPrefix=""/> 1、web端html里写入 Click 2、android端在menifest的响应activity的intentfilter下配置,一般只需配置scheme和host即可。 3、这样手机系统自带浏览器碰到不能处理的scheme之后会发送intent给能处理的应用,因为我们的app可以处理该scheme,所以我的app得到启动。(ps:如果用webview加载html,webview碰到处理不了的scheme并不会发送intent找app处理,而系统自带浏览器是可以的,当然我们的需求就是用系统自带浏览器触发)。
Show u my code:
一、跳到app首页:新建一个app工程用webview加载所写的html,用以触发目标app。(实际需求是直接在系统浏览器里触发目标app) 1、建立html放到工程的main/assets目录下
</span> <html> <body> <h1>Test Schemeh1> <a href="myscheme://www.febmaple.com:80/mypath?key=mykey">Clicka> body> html> 2、webview加载本地html内容来触发目标app
wvUrl.loadUrl("file:///android_asset/test.html"); 3、在app manifeset的**欢迎**activity添加intent-filter配置data标签.
<activity android:name=".ui.launching.DemoLaunchingActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="myscheme"/> intent-filter> activity> 4、在配置好的Activity里即可获取外部跳转的参数信息。
@Override protected void onCreate(Bundle savedInstanceState) { super.
黑暗的网络是正确的地方,购买被盗的登录凭证到主要的网络服务,上周的同事在HackRead报告销售超过100万Gmail和雅虎帐户由卖家与“SunTzu583”昵称在线 几天后,提供Gmail和Yahoo帐户销售的同一家供应商开始销售PlayStation帐户。
SunTzu583提供销售640,000 PlayStation帐户,为USD 35.71(0.0292 BTC)。 被盗帐户的来源不清楚,转储包括电子邮件和明文密码。
SunTzu583确认该存档不是从PlayStation网络直接被盗,但它包含PlayStation用户的唯一帐户。 卖家补充说,即使这些帐户可能适用于其他网络服务,他们是所有的PlayStation帐户。
几个月前,几个Playstation用户报告他们的帐户已被黑客入侵,骗子已经窃取了资金。 索尼否认其服务器被骗子骗了,并补充说,PlayStation帐户是通过使用第三方数据泄露的凭据访问。
在我写作的时候,没有确认640,000个PlayStation帐户的真实性。
以任何方式建议更改PS帐户的密码,像往常一样,重要的是共享使用相同登录凭据的所有网站的密码。
最近其他游戏平台被黑客攻击,包括Clash of Clans论坛,ESEA和Epic Games。
作者:Pierluigi Paganini ,由悬镜小编编译,如需转载请标注:http://www.xmirror.cn/
最近在学习Unity3D 5.0的基于物理的渲染,说实话,这玩意比unity4里的传统光照模型好理解,而且也多了很多的贴图可用,效果也好了很多,尤其是加入了AO贴图以后,能够很好的表现模型暗部的阴影了。出于个人兴趣,就使用了mmd的模型放到unity5.0里做效果,能在unity里看到可爱的妹子,对于我来说是很开心的,这里用到了mmd4mecanim(以下简称mmd4)这个插件,实在是非常感谢作者nora先生,这个插件能非常完美的将mmd模型导入到unity中去。这里附上作者的twitter:https://twitter.com/Stereoarts 注意需要翻墙。
这个插件能将mmd模型和里面的动作转换为fbx文件,这个格式能很方便的导入3dmax,maya,c4d等3d建模软件进行修改。
接下来我稍微讲一下导入mmd模型进入unity里的步骤,其实本身就非常的方便和简洁。
1.导入mmd4插件,导入完成以后应该就会看到红箭头标出的3个文件夹了
2.找一个mmd模型,一般mmd模型格式为pmd和pmx,下载过来的mmd模型一般会是一个文件夹包含pmd或者pmx文件和一堆贴图文件,注意不要改变文件夹结构,直接将文件夹放入unity工程里,如图,这时候mmd4插件会自动对应pmx和pmd文件生成一个.MMD4Mecanim文件。
3.选中这个.MMD4Mecanim文件之后,就能在inspector窗口里看到模型使用条约,我们都勾选上并点击同意,之后就可以看到转换界面了,点击process,稍等一会儿,模型就生成了。生成的模型会在对应的pmx或者pmd的同一个文件夹下,并生成一个Materials的文件夹,里面是这个模型的所有材质。
4.将这个模型拖到场景里就能看到漂亮的mmd模型了。
5.接下来是重点,由于mmd4里的shader是完全模仿mmd效果的shader,并不是基于物理的shader,所以需要将生成出来的shader全部调为unity5里的standard,选中materials文件夹里的所有材质球,将shader改为standard。
因为没有仔细调整,所以模型会变成这个样子
mmd模型的材质命名基本都是日语的罗马音,所以懂日语的人会比较好找对应的材质球。
将材质球稍微调整之后,得到一个看上去比较正常的模型。
6.以上的效果看上去还不错,但是细节部分完全就不行了。unity可以使用lightmap来烘焙静态的物体,使得其阴影能够很好的表现出来,但是动态物体就不行了,这里就需要给动态物体添加AO贴图,在standard的shader里这个就是Occlusion贴图。接下来就需要得到一个比较好的Occlusion贴图。
7.使用3dmax打开这个fbx文件。查看该模型的uv发现,这个模型的uv非常混乱,并且使用了镜像和重叠的uv,这是因为mmd模型原本是为了做视频而做的模型,所以可能在制作的时候并没有按照游戏模型的制作标准来分uv和制作贴图,但是Occlusion贴图的烘焙又必须依靠正确的uv来烘焙,所以这里需要重新分一下模型的uv。
8.一般mmd模型会有两个网格部分,一个是脸部,一个是除脸部以外的其他部分。选择除脸以外的部分,选择可编辑网格中该部分的所有顶点,将焊接值设置为0.001,然后焊接。
焊接之后顶点应该会变少
9.选择脸以外的部分,因为焊接了顶点,可能面的平滑会出问题,选择脸以外部分网格的所有面,并自动平滑一次,选中脸以外的部分,选择导出选定对象,并导出为obj
10.将导出的obj文件导入到Zbrush 4R6中。这里准备使用zbrush 4R6里的uvmaster进行自动拆分uv。
11.在Zbrush里找到Zplugin,选择uvmaster,并使用里面的unwrap命令,稍等片刻,uvmaster将会自动把模型的uv分好
12.稍等之后在右边的tool工具栏中选择texturemap,选择create -> newfromUVcheck查看分好的uv,如果看到这样的图,则说明uv已经分好了
将模型导出成obj保存,用max将导出的obj打开并添加uvw展开修改器检查uv是否正确。现在的uv是不是好看多了。
13.将uv从3dmax中导出,回到最早obj模型的max工程中,选择身体部分的网格,添加uvw展开修改器,将贴图通道选择为2
弹出窗口中选择移动。点击加载,选择新的uv。加载之后可能会有一些显示错误,不过没关系,打开uv编辑器,随便框选几个顶点就显示正常了。
14.因为从unity导入到3dmax中会丢失模型的所有贴图,这一步要将导入的3dmax中的模型还原到unity中的正常样子,具体方法就是调整3dmax里的材质球,对应贴图就好。
15.3dmax菜单中选择 渲染–>渲染到纹理,添加渲染元素为diffusemap,渲染通道选择为2,填充设置为16,分辨率设置为2048×2048,如图
然后选择好保存位置点击渲染,渲染出来的贴图看上去感觉是有问题的,但是其实用photoshop打开或者放到unity里去之后是没有问题的
16.确保漫反射贴图正确以后打开工具->通道信息,选中贴图2并点击清除,
之后会多出一个uvw清除修改器
17.将uvw展开和uvw贴图清除修改器移动到蒙皮的下面,可编辑网格的上面
然后将这两个修改器右键–》塌陷,塌陷完以后将只留下蒙皮和可编辑网格两个修改器。
18.塌陷完以后再次添加uvw修改器,确保贴图通道为1,再次加载之前保存的uv,
这样就完成了漫反射贴图的烘焙和新uv的合并。 由于烘焙漫反射贴图会把之前的多个材质球合并为一个,接下来就是还原本来的多个材质球以便调整单个部位。 19.打开材质编辑器,点击吸管,移动到模型身上吸取材质。 20.将吸取到的材质球付给第二个新的材质球,方法选择实例。 21.最后将材质球拖到模型身上,完成材质球还原。 22.将新添加的uvw展开修改器塌陷之后就可以烘焙AO贴图了,最后把这个模型导出为fbx之后,重新放进unity中。 模型最终效果就变成这样了,是不是比最早的好很多呢
导读 信息时代给我们的生活带来极大便利和好处的同时也带来了很大的风险,我们通过浏览器来了解外面世界,但我们的足迹也将会被记录,进而为我们带来安全隐患,对此我们可以采取一些手段来降低这种风险。 信息时代给我们的生活带来极大便利和好处的同时也带来了很大的风险。一方面,人们只要点击几下按钮,就能基本上访问已知存在的全部信息和知识;另一方面,要是这种权力落到个别不法分子手里,就会引起重大破坏和灾难。我在本文中将介绍保护网上私密信息的几个步骤。
一些人可能会认为这是“锡箔”思维方式,但是正如全球各地的许多情报组织的信息反馈中看到的,政府监视已从被认为一种疯狂的阴谋论变成了几乎赤裸裸的公然威胁。关注隐私、希望尽可能不被人监视的那些人会发现,如果使用得当,Linux 是一款相当有用的工具。实际上,在网上尽量保持匿名的那些人会发觉 Linux 是唯一的选择,因为众所周知,Windows 和 Mac OS X 会收集关于用户的尽可能多的信息。只要上网搜索“Windows 10监视”或“Mac OS X 隐私”,你就会有切身的体会。
在我们开始入手之前,想完全确保计算机安全、私密,唯一的办法就是从互联网上断开,并关闭电源。因为连接到互联网的设备不可能做到绝对百分百安全。总是有办法避开安全机制,就算没有,也会有人不断开发出工具,找到新的法子。所以,这里的指导原则并不是要求更改计算机上的几个设置,你就可以建立起坚不可摧的堡垒,而是说要设置尽可能多的障碍,尽量让任何潜在的攻击者或间谍很难访问你的系统或私密信息。
你可以使用几个 Linux工具,尽可能保持匿名性(同样在当下,这越来越难做到,但是如果隐私对你来说很重要,你已经知道英勇地抵抗的重要性)。
1.Tails OS 我们要介绍的第一款工具是 Tails OS ,不过说它是“工具”也许用词不当,因为 Tails 是一款完整的 Linux 发行版,而不仅仅是工具,Tails 旨在成为一款匿名、可自我销毁的操作系统,一旦你用完,它就会抹除任何存在的痕迹。很显然,它不大适合用作日常发行版,但是如果网上有你需要访问的东西,你又想保持私密,或者想匿名浏览,那么 Tails 是不错的选择。Tails 完全作为 Live 系统来运行,一旦关闭,就会清除自己,而不是永久地安装在硬盘上。
你可以下载最新的 Tails ISO 文件,把它刻录到 DVD 或拷贝到可启动 U 盘上(后者容易得多,耗时较短,浪费的空间也较少)。Linux 有几个工具来刻录 DVD,主要是 Brasero 和 DeVeDe。或者,如果你更希望制作一个可启动 U 盘,会发觉 Unetbootin 很理想(或者可以在终端使用“dd”命令)。一旦将 Tails 拷贝到可启动介质上,只要用它来启动计算机,就像安装新的操作系统或运行Live系统那样。
Tails 网站似乎只允许你用火狐或 Tor 浏览器下载 Tails。我试图通过谷歌 Chrome 下载 ISO 文件时,它告诉我浏览器不支持。它还迫使你安装火狐浏览器附件,一旦安装完毕,该附件会使用校验和验证机制,自动验证 ISO 下载软件。这实际上实施了一项很好的安全措施,因为它确保你不会得到一份损坏的 Tails,不然里面可能会有安全漏洞,就像 Linux Mint 发生的情况那样。
我的电脑是AMD的R9 200系列显卡。
安装完Ubuntu系统之后,进入system setting可以看到当前使用的是开源驱动。
接下来我把我整理出来的目前可行的安装方法分享给大家。
(额外补充一点,在你安装完Ubuntu系统之后,建议马上在设置中将镜像服务器,也就是源换成中国的源,我使用的是中科大的源,貌似是mirror.ustc.edu)
第一步:去AMD官网下载对应版本的驱动包。
去官网下载时发现,一共有4个包,前缀分别是fglrx-core 、fglrx_… 、fglrx-amdccc和fglrx-dev。先把这4个包都下载下来。
第二步:安装dependencies依赖项。
刚入门Ubuntu的人可能会被依赖项整懵逼,我也是被坑过很多次了……在terminal终端中输入以下命令:
sudo apt-get install xserver-xorg-dev build-essential cdbs dh-make dkms execstack dh-modaliases libqtgui4 debhelper debconf libc++6 dkms libqtgui4 libelfg0 linux-headers-generic
点击回车之后开始安装,不过你很有可能会碰到一个提示说dependencies出问题,然后列出一些依赖包说不会安装(英文后缀是not to be installed)。这个时候你不要慌,此时遇到这个问题很有可能是你在装Ubuntu系统的时候就已经装了一些依赖包,导致你后面装额外包的时候会因为这些包已经装过了就出问题。一般来说可以忽略掉,但是如果你不放心的话,就sudo apt-get remove XXX,(其中XXX就是那些提示已经安装的包,也就是提示说not to be installed的包),然后重新执行上面那一长串的代码。安装完了之后记得再执行一下下面这段代码:
sudo apt-get install unity-control-center
因为如果你把那些已经安装的依赖包卸载了重新装的话,卸载的时候可能就把系统设置那个功能包也删了(Ubuntu的依赖包就是这么诡异),所以你需要重新安装那个部分。
然后还要安装一部分依赖包,而这部分依赖包主要的作用是在64bit系统下兼容32bit的编译方法。
sudo apt-get install lib32gcc1 libc6-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 第三步:安装AMD驱动
(如果你直接忽略了第二部所说的那个依赖包的提示,那么在开始安装驱动之前,你需要安装dkms,语法是sudo apt-get install dkms;如果你是卸载并重装依赖包,就不用再装dkms了)
从官网上下载了4个包,这些包的安装顺序是有讲究的。
首先,在Terminal中进入你放驱动包的目录。(一般来说,在Ubuntu中用浏览器下载的话,都是先放在Downloads那个文件夹下面的)
cd path-to-the-package (记住,path-to-the-package是需要替换成具体的路径的,不懂的话可以去百度一下Ubuntu系统命令行的使用)
然后按照以下代码顺序安装(一次输入一行代码):
sudo dpkg -i fglrx-core (然后按Tab键可以自动补全名称,下同不赘述)
分布式爬虫的设计与实现
基本环境 linux操作系统、pycharm集成开发环境 主要功能 设计并实现一种基于“C/S”结构的爬虫,在并发爬取的情况下实现对大规模网页的爬取,并提取出网页的相关信息。 关键技术 python、mongodb、广度优先与深度控制 系统结构 实现方案 Mongodb数据库中用于存放url对应的记录,每条记录格式为:
{ “_id”:url, “state”:OUTSTANDING|PROCESSING|COMPLETE “deepth”: } 其中,用url作为id,使得数据库中的url唯一;state记录url的访问状态——未访问、正在访问、访问过;deepth代表当前url的深度,在广度优先情况下对深度进行控制。同时,mongodb的虽然不支持事务,但原子操作保证了多线程之间的并发同步。
Client端运行相同的爬虫程序,从mongodb数据库队列中取出url进行爬取页面;由于数据库存储速率的瓶颈,本次选择将页面存储在本地,通过正则表达式提取页面的url,并将其加入mongodb数据库队列。Client端采用“多线程+多进程”的方式,使用线程池和进程池,进程数目等于cpu核心数目,每个进程中线程数目为5。
主要难点 Mongodb数据库的远程连接
Python访问HDFS,一直失败
爬取速率不好控制,间隔时间需要手动调试,特别是在多线程+多进程下更难以控制速率 有待改进 使用数据库连接池
使用HDFS存储
在hadoop平台上运行爬虫程序
Mongodb队列需要进一步优化,如使用索引、数据压缩存储、搭建分布式mongodb
使用布隆过滤器,记录已经爬取的url 相关技术点 http状态响应码 2XX:成功
3XX:跳转
4XX:客户端错误
5XX:服务器错误 网页抓取策略
广度优先:1)重要的网页离种子站点比较近;2)广度优先有利于并行爬虫。 基于队列实现广度优先;同时,限制爬取深度。
记录抓取历史
用HashSet集合保存:查询复杂度为O(1);消耗内存较大 Url经MD5处理后存入hashset:消耗内存较小 Url存入数据库:C/数据库模式下有利于并发操作 布隆过滤器:时间、空间效率高,但只在本地存储,不适于分布式并发操作
解析网页
用正则表达式:时间最快;容错能力有限 用beautifulsoup解析:时间比较慢;容错能力好 用lxml解析器:时间和容错能力均衡:css选择器、xpath
网站评估
<网页根目录>/robots.txt查看网站限制信息 进入sitemap查看网站地图 Site:<网址>查看网站的规模
页面处理
提取超链接时,注意排除内部锚点,内部锚点以“#数字”开头 用Chrome的Inspector查看网页元素
项目源代码
GitHub地址
本系列文章是斯坦福CS231n: Convolutional Neural Networks for Visual Recognition (winter 1516) 的听课笔记与课下补充资料。
计算机视觉历史回顾 这是一个视觉时代,目前(2016)有85%的网络信息是像素形式,它们难以被利用,李飞飞将它们称为“网络中的暗物质”。CS231n聚焦于神经网络这一模型和计算机视觉这一应用。
视觉大约在5.4亿年前出现,有人认为,视觉的出现导致并驱动了生物大爆发。
16世纪,达芬奇发明了照相暗盒,开始复制人们看到的信息。
1959年,Huber&Wiesel研究生物的大脑是如何处理视觉信息的。他们发现,大脑从简单的形状(例如,边缘)开始处理视觉信息。在视觉处理的第一步,基础视觉区的神经元按一列一列组织起来,每一列神经元只“喜欢”某一种特定的形状。
1963年,Larry Roberts认为是边缘决定了物体外形,他的博士论文Block World是现代CV先驱。
1966年,MIT的人工智能实验室成立,标志着CV的诞生。
20世纪70年代,David Marr提出了一个重要思想,“视觉是分层的”。这一思想被Deep Learning/CNN汲取。
20世纪90年代,进入彩色时代,问题转向“感知分组”(人看到世界时会在脑中自动分割出各物体,而不是觉得只是一堆像素),这一问题现在仍未彻底解决。
进入21世纪,问题焦点从3D建模变迁到识别问题。出现了第一个商用的CV算法(实时人脸检测),它的特征学习过程有很强的深度学习特质。此后又出现了SIFT, Deformable Part Model等。后来又出现了ImageNet和神经网络的复兴。
CS231n 课程大纲 CS321n聚焦于视觉识别中的一个重要问题,图像分类。视觉识别中有很多问题与图像分类相关,比如物体检测、图像说明。
CNN是物体识别的重要工具。2012年之前的ILSVRC冠军模型采用的是“特征+SVM”,没有端到端学习的风格特色。2012年,Hinton和他的学生引领了神经网络的复兴。到2015年的MSRA,采用的仍是CNN。
AlexNet的成功离不开大量数据和高性能GPU,AlexNet只在1998年LeNet上做了很少改动。
视觉识别远不止物体识别,还包括很多内容,比如对全场景中的物体都打上标签、深入理解一幅图像……
try{
//代码区
}catch(Exception e){
//异常处理
}
代码区如果有错误,就会返回所写异常的处理。
首先要清楚,如果没有try的话,出现异常会导致程序崩溃。
而try则可以保证程序的正常运行下去,比如说:
try{
int i = 1/0;
}catch(Exception e){
……..
}
一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错!
try catch 是捕捉try部分的异常,当你没有try catch的时候,如果出现异常则程序报错,加上try catch,出现异常程序正常运行,只是把错误信息存储到Exception里,所以catch是用来提取异常信息的,你可以在Catch部分加上一句System.out.println(e.ToString());,如果出现异常可以把异常打印出来
Java的异常处理机制(try…catch…finally)
1 引子
try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。
public class TestException { public TestException() { } boolean testEx() throws Exception { boolean ret = true; try { ret = testEx1(); } catch (Exception e) { System.out.println("testEx, catch exception"); ret = false; throw e; } finally { System.out.println("testEx, finally; return value="