微软释出补丁修补 Meltdown 补丁带来的漏洞

微软本周五向 64 位 Windows 7 和 Windows Server 2008 R2 系统
释出安全更新,修补今年初释出的 Meltdown 补丁的漏洞。Meltdown 补丁旨在修复英特尔芯片的漏洞,但却被发现存在更严重的漏洞。补丁用意是保护内核内存,防止机密信息泄露,结果是内核内存的漏洞反而更大了,新的漏洞允许任意应用从内核内存提取或写入内容。新释出的补丁 KB4100480 修复了这个严重问题。

文章来源:http://www.solidot.org

原文地址:http://www.solidot.org/story?sid=56004

艺术家为C罗雕像被喷 重塑作品终证明自己



去年2017年3月29日,为了表彰葡足球巨星克里斯蒂亚诺.罗纳尔多为其家乡带来的荣耀,葡萄牙马德拉国际机场正式更名为“C罗机场”,雕塑家Emanuel Santos为了纪念此次命名,为C罗制作了一个半身雕像,本是好意,却因作品太辣眼被网友疯狂吐槽PS。

听闻批评之后,雕塑家Emanuel Santos倍感失败,甚至留下了伤心的泪水。

于是今年Emanuel Santos准备重新证明自己,重塑C罗的雕像。

下面就是他第二次尝试的结果,相比起上次,这座新雕像显然正常多了,雕塑家Emanuel Santos可以放心了,这次应该不会被喷了。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712381.htm

一个世纪前的一战军火重返岸边



尽管第一次世界大战结束都一个世纪了,但是废弃的军火和其他战争物资却陆续在美国各地的海滩上被发现。从微小的引信到全尺寸的地雷,都在海滩补给项目中被发现,它们从海底被带到岸边,或者被强烈的风暴卷上岸。最近一次发现是在本月早些时候,在新泽西州Mantoloking的海滩上发现了7枚WWI步枪手榴弹,这是一个进行中的海滩补给项目,以用来补救5年前桑迪飓风造成的破坏。

在第一次世界大战结束,许多军用物品被扔到了海里,此外还有一些来自军事演习或目标训练的军用物品。从新泽西到夏威夷,至少有16个州发现了它们。

德州农工大学海洋学教授Niall Slowey对这一现象进行了广泛的研究,他说:“令人惊讶的是,这种现象还在继续。”“他们处理了数百万吨这种东西。”

没有人知道有多少弹药仍然在海上,部分原因是军方自己有关处置弹药的记录并不详实。美国国防部在2009年向国会提交的一份报告称,有一半以上的军火在大西洋海域被处置。

太平洋地区是35%,其他则被丢弃在夏威夷、阿拉斯加、墨西哥湾和加勒比海地区。这些物品被倾倒在离海岸5英里(8千米)远的地方,水深只有50英尺(15米)。

Slowey和一个同事在2012年发表了一项研究,估计仅在墨西哥湾就有数百万磅海底炸弹。

1022x575.jpg


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712379.htm

霍金教授将在剑桥举行葬礼 墓地与牛顿接近



3月14日,著名的理论物理科学家斯蒂芬•霍金教授在剑桥的家中去世,享年76岁。据报道,当地时间本周六下午14:00,霍金教授的葬礼将在剑桥举行,预计将有多达500名受邀的家人、朋友和同事参加在圣玛丽大教堂举行的葬礼仪式。

his2543-1280x703.jpg

尽管霍金教授的葬礼是私下举行的,但预计会有很多人聚集在剑桥市中心的圣玛丽教堂外,一起见证霍金教授的葬礼。葬礼之后,三一学院将举行私人招待会。

虽然目前还没有公布会在当天全面封路,但随着葬礼队伍从在剑桥城市西部的教授之家经过圣玛丽教堂周围的道路交通,这座城市的部分交通将短暂地被封锁。

此外,据了解,今年的6月15日将在伦敦的威斯敏斯特教堂举行一场感恩节仪式,且霍金教授的骨灰将被埋葬在著名物理学家牛顿的墓旁。

牛顿先生于1727年被葬在威斯敏斯特教堂,他的坟墓与著名生物学家达尔文的坟墓很接近,而达尔文先生于1882被葬在威斯敏斯特教堂。

威斯敏斯特学院的院长约翰•霍尔博士说,霍金先生的墓地是“完全合适的”,因为霍金教授的最后安息地应该与其他杰出的科学家们相近。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712377.htm

发布会请来半个娱乐圈明星助阵 2999元起OPPO R15明日开售



3月31日消息,和去年的R11新品发布会一样,OPPO请来萧敬腾、郑恺、周杰伦、李易峰、王俊凯、陈伟霆、田馥甄、郭富城等,几乎半个娱乐圈的明星联合浙江卫视在深圳召开了一场演唱会+新品发布会,开年新旗舰OPPO R15系列也再次亮相。

之所以说“再次亮相”是因为此前OPPO R15系列在北京已经开过一场发布会了。简单回顾下这款产品,它这次采用了全新的外观设计,改用玻璃后壳的设计,而非此前的金属材质机身。提供了白、红以及星空紫多种配色,其中星空紫采用渐变色设计。

另外,OPPO R15还采用了异形全面屏设计,指纹识别设计在背部,其屏幕尺寸为6.28英寸,比例为19:9,屏占比高达90%。

拍照一直是OPPO手机的强项,这次的R15配备后置1600万像素+500万像素双摄组合,并且升级到了定制的索尼IMX519传感器。同时软件上加入了AI算法的支持,支持3D人像打光等模式拍摄,前置则还是2000万像素镜头。

值得一提的是,R15系列这次升级到了全新UI设计的Colour OS5.0操作界面,支持AI智能助手、全屏多任务等。核心方面则是搭载联发科Helio P60处理器和高通骁龙660处理器双版本,标配6GB+128GB存储空间,后置电池容量为3450毫安时。

除此之外,OPPO这次还带了R15梦镜红版和陶瓷黑版,售价分别为3299元和3499元,普通版则是2999元,将于4月1日上市开售。其中梦镜红版采用3D玻璃机身,黑红渐变色设计,陶瓷黑则是19道工序的陶瓷机身设计,搭载骁龙660移动平台,6+128GB内存组合,3400毫安时电池,其他配置不变。

OPPO副总裁吴强此前曾指出OPPO今年的关键词是“改变”。除了保持不变的初心这个根本,OPPO今年将有四个循序渐进的改变:科技创新、品牌升级、市场布局和产品观。

科技创新方面,OPPO将成立自己的研究院,下设6大研究中心,进行前沿科技的沉浸式研究。

品牌升级则是希望把它做到让全球的年轻人都能够关注OPPO,让他们都能够了解OPPO,并且最终获得全球年轻人的喜爱。

市场布局方面,OPPO今年将开启全球化2.0时代,随着今年1月底正式宣布进军日本市场,OPPO目前已进入30个海外市场,今年还将进一步开拓欧洲市场。

关于产品,未来OPPO将会坚持做具有全球竞争力的产品,本地化的体验,做全球年轻人喜爱的品牌,做全球年轻人喜爱的产品。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712375.htm

JeeSite 4.0.1 发布,企业级快速开发平台

新增

  • 新增:国际化登录相关和错误页面信息(中文、英文)

  • 新增:数据表格实例,多表头、行分组、合计行、小计行、编辑表格,实例

  • 新增:表单组件实例,栅格布局(一列、两列、三列、四列),组件应用实例

  • 新增:日志查询,表增加执行时间记录字段,分析页面的执行效能

  • 新增:CookieUtils.getCookie() 增加 path 参数

  • 新增:支持Oracle、SqlServer、PostgreSQL数据库

  • 新增:zTree 增加扩展方法 expandNodeByLevel 方便根据层级展开节点

  • 新增:接口API,获取用户权限信息:/a/authInfo;获取用户菜单信息:/a/menuTree

修正

  • 修正:DataGrid冻结行的时候超连接未绑定btnList事件问题

  • 修正:Excel导入导出中的DictUtils反射方法参数顺序不对问题 #IINDU

优化

  • 优化:Spring Boot 1.5.9 升级 1.5.10

  • 优化:错误页面优化、升级 beetl 2.7.26

  • 优化:手机端API接口测试优化,支持验证码登录

  • 优化:解压war包后可直接执行startup.bat运行项目

  • 优化:一些体验和性能优化

了解更多:

文章来源:http://www.oschina.net

原文地址:https://www.oschina.net/news/94766/jeesite-4-0-1-released

Gogs 0.11.43 发布,自助 Git 托管服务

Gogs 0.11.43 发布了,建议升级。

Bug 修复

  • 保护分支可以在完成合并请求后被删除 #4514

  • 不支持 MSSQL 数据库的 SYSNAME 字段类型 #4642

  • 仓库快速开始页面只有仓库管理员可见 #4646

  • 分支页面名称包含 # 的分支链接错误 #4874

  • 在合并提交时使用衍合导致合并失效 #5051

  • 分支一旦被设置为保护后,加锁标志在取消保护后也不消失 #5053

  • IPython Notebook 中的 SVG 支持 #5077

功能改进

  • 支持 HTTP HEAD 请求 #2857

  • 添加配置选项以允许在启动时重写 authorized_keys 文件 #4435

  • 添加配置选项以设置邮件的全局主题前缀 #4524

  • 默认禁用联合头像查找 #5126

其它变更

  • 添加新语种支持:印度尼西亚语、波斯语

文章来源:http://www.oschina.net

原文地址:https://www.oschina.net/news/94765/gogs-0-11-43-released

turbo-rpc 0.0.5 发布,大幅提高性能

turbo-rpc 是一款速度超凡的异步响应式 RPC 框架

功能特点: 

  • 仅支持异步调用, Service 接口所有 public 方法返回值都必须为 CompletableFuture

  • 配置定义在 Service 接口上, 而非实现类上, 方法实现者和调用者都不需要引入奇奇怪怪的注解

  • 同时支持 RPC REST 调用

  • 支持失败回退, 支持熔断, 支持心跳, 支持自动重连

  • 支持自定义 服务注册 负载均衡 序列化

  • 支持 Filter, 可通过该机制实现 Tracing 限流限速 黑白名单 等功能

  • 支持 Spring Boot.

turbo-0.0.4 更新说明: 

  1. FastClock AtomicMuiltInteger 引入缓存行填充

  2. 最大在途请求数可以配置为不做任何限制,以减少锁竞争

  3. 消除 FutureContainer 的锁竞争,使用 IntObjectHashMap 替换掉 NonBlockingHashMapLong

  4. 删除 jctools 依赖

  5. 升级 kryo 到 4.0.2

文章来源:http://www.oschina.net

原文地址:https://www.oschina.net/news/94764/terbo-rpc-0-0-5-released

哔哩哔哩223366卡大福利:微博、贴吧免流,看视频返流量

IT之家3月31日消息 在各种联通卡均在福利升级的当下,B站卡也没有闲着,在今天晚上宣布对旗下套餐进行升级。

首先是新增免流功能,B站卡此前仅支持B站客户端免流,在此次升级之后支持了贴吧、微博免流,贴吧客户端可直接支持,微博则需要在设置当中激活。

第二项福利则为赚流量功能,看视频/直播可赚流量,每月最高可获赠900MB,100MB起兑换使用,赚积分可兑换大会员或“直播老爷”。

针对B站卡用户,可通过“福利社”功能赚取“福利点”,每天基础可获得10点,22卡可兑换220点/月、33卡可兑换330点/月,而66卡为660点,可通过点数兑换大会员、流量包等福利。

文章来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/353473.htm

热点问答:美国签证新规影响几何



美国国务院30日公布文件,拟要求外国人在申请美国签证时提交社交媒体用户名等个人信息,引发广泛关注。美国国务院公布在《联邦政府纪事》上的文件显示,这项新规定要求外国人在申请美国签证时提供过去5年在指定社交媒体平台上使用的用户名。

据美国《纽约时报》报道,新规针对的指定社交媒体平台有20家,其中大部分设在美国,包括脸书、推特、领英、优兔等。

此外,新规还涉及设在中国的豆瓣、QQ、新浪微博、腾讯微博和优酷视频以及俄罗斯社交媒体平台VK、比利时交友平台Twoo和拉脱维亚社交问答平台Ask.fm。

签证申请者也可以自行选择提供非指定社交媒体平台上的个人用户信息。

此外,签证申请者还被要求提供过去5年曾使用的电话号码、电子邮箱地址、国际旅行记录以及是否曾违法移民法、是否曾被驱逐出境、是否有家庭成员参与恐怖主义活动等信息。

影响范围有多广

此前美国只要求那些需要接受额外审查的签证申请者提供社交媒体、电子邮件和电话号码等信息。据统计,每年有6.5万名申请者属于这一范畴。

而此次的新规将适用于几乎所有美国签证申请者。据美国国务院估计,将有71万移民签证申请者和1400万非移民签证申请者受到影响。外交、公务等特定类型签证申请者不受新规影响。

目前新规尚未生效。美国国务院在文件中说,现面向公众征集对新规的意见,即日起至5月29日止,为期60天。新规施行前还须得到美国行政管理和预算局批准。

出台目的是什么

美国国务院在文件中说,收集这些信息的目的在于对签证申请者进行身份识别和审查。国务院在另外一份声明中表示,这些额外信息“将强化对签证申请者审查及确认他们身份的流程”。

分析人士认为,这项新规定迎合了总统特朗普要求对所有申请进入美国的外国人进行“极端审查”的主张。特朗普认为,“极端审查”将有助于防范恐怖主义。美国国土安全部实际上从去年开始就已经加强对入境人员的筛查。去年10月底纽约发生卡车撞人恐袭事件后,特朗普曾责令国土安全部继续加强筛查措施。

特朗普在移民问题上立场强硬,主张限制移民并提出修建边境隔离墙、废除“连锁移民”和“绿卡抽签”项目、抓捕和遣返非法移民等举措,并颁布针对多国公民的旅行禁令。这些主张和举措不断受到政界和法律界人士的挑战。

批评人士指出,此次的签证新规不仅会侵犯签证申请者的隐私,也势必将加大审查工作量及获签难度,而且未必能达到特朗普的设想。

新华社记者孙丁 刘阳


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712373.htm

三星Galaxy J8/J8 Plus曝光:分别配3000/3500mAh电池



世界移动通信大会(MWC)已经开幕,三星在本次展会上推出了新旗舰Galaxy S9和Galaxy S9+,今年上半年高端手机布局初步完成,接下来就是中端和入门系列了,现在三星中端手机已经悄然而至。3月31日,知名爆料大神Slashleaks放出了三星Galaxy J8和Galaxy J8 Plus的电池谍照,三星Galaxy J8配备了3000mAh电池,Galaxy J8 Plus配备了3500mAh电池。两款手机电池容量和Galaxy S9、Galaxy S9+完全一致。

根据此前跑分网站GeekBench放出的消息,三星Galaxy J8搭载的是Exynos 7870处理器,该芯片基于14nm工艺制程打造,采用Cortex A53架构、八核心设计,CPU主频为1.6GHz,GPU为Mali-T830,配备3GB内存,拥有1600万像素摄像头,运行安卓8.0系统。

目前尚不清楚Galaxy J8 Plus的详细规格,我们会持续关注。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712371.htm

国际原子能机构:天宫一号碎片没有放射性威胁



据俄罗斯卫星通讯社报道,奥地利劳动社会事务卫生和消费者权益保护部3月30日发布消息称,国际原子能机构和欧洲航天局相信,天宫一号碎片坠落没有放射性危险。来自该部门消息指出,“国际原子能机构和欧洲航天局表示,中国轨道空间站没有放射性材料,因此不存在对人体健康有害的放射性威胁。”

该部门指出,部分碎片理论上可能会落到地球,最有可能发生在南纬43度至43北纬43度之间,碎片预计将落入海中,因此人们无需对此感到担心。

欧洲航天局3月28日发布最新预测,天宫一号可能于3月31日早到4月1日上午这一时间段脱离轨道进入地球大气层。

2016年3月该航天站功能完全失效,并已超期服役两年半。此前预计,”天宫一号”将于2017年底在地球大气层中烧毁。

“天宫一号”于2011年9月29日发射。因此,中国成为了继俄美之后第3个建造自己航天站的大国。2016年9月15日从中国酒泉航天发射场发射了第2个科学试验室”天宫二号”,以替代”天宫一号”。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712367.htm

疑似锤子科技工业设计副总裁李剑叶意向离职

IT之家3月31日消息 今日,据业内人士爆料称,锤子科技工业设计副总裁李剑叶有意向离开锤子科技。

李剑叶并未确认该消息,本人在新浪微博发布消息称“我爱锤子科技,我爱你们!”锤子科技UX产品总监朱萧木则以“爱你”进行回应,不少用户在微博下方进行询问以确认离职的相关消息。

资料显示,李剑叶1999年毕业于北京理工大学工业设计系;2002年毕业于清华大学美术学院工业设计系,师从柳冠中先生,获硕士学位。2002年,就职于摩托罗拉北亚设计中心,产品设计师;2004-2012年,就职于香港飞利浦设计中心,是飞利浦香港最年轻的中国籍产品设计顾问,2013年至今,就职于锤子科技,工业设计副总裁。

文章来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/353470.htm

01:JAVA_四则运算题目生成程序(基于控制台)



一、题目要求

1. 使用 -n 参数控制生成题目的个数,例如
       Myapp.exe -n 10 -o Exercise.txt
将生成10个题目。
2. 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如 
      Myapp.exe -r 10
 将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。
3. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数
4. 每道题目中出现的运算符个数不超过3个。
5. 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:
     1. 四则运算题目1
     2. 四则运算题目2
          ……
 
其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。
6. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:
    1. 答案1
    2. 答案2
 
    特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
7. 程序应能支持一万道题目的生成。
8. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,并会输出所有题目中重复的题目,输入参数如下:
     Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt -o Grade.txt
 
统计结果输出到文件Grade.txt,格式如下:
 
Correct: 5 (1, 3, 5, 7, 9)
Wrong: 5 (2, 4, 6, 8, 10)
Repeat:2
RepeatDetail:
(1)   2,45+32  Repeat 3,32+45                    
(2)   5,3+(2+1)  Repeat 7,1+2+3
 
解释:
Correct: 5 —-5道题目正确,正确的题号 1,3,5,7,9
Wrong:5 —–5道题目错误,错误的题号 2,4,6,8,10
Repeat:2   2—组题目重复
(1) 第一组 题号2,题目 45+32  与题号3的题目重复,题号3为 32+45
(2)第二组  题号5,题目 3+(2+1) 与题号7的题目重复,题号7为 1+2+3

二、需求分析

1.可以根据给定参数,自动生成四则远算题库

2.根据提交的题目答案,生成相应的成绩

3.检查题库是否有重复

4.考虑到实际应用,需要根据年级划分题库难度

三、功能设计

1.用户输入出题数量,题目数值范围,题目难度及题库名

2.系统根据难度要求生成相应题目,并且检查题目是否重复,即查重

3.根据用户提交的答案,返回成绩

四、设计实现

com.cal.generate包:

  FileCal.java  →  题库文件写入操作

  GenerateCal →  根据用户参数生成四则远算,并组合成题库

com.cal.main包:

  GetExercise →  生成四则运算程序入口,读取参数(-n,-r,-o)

  VaildateExe  → 检查四则运算结果程序入口,读取参数(-e)

com.cal.mold包:

  FractionCal         → 分数加减乘除计算结果

  FractionStack     → 分数分装

  MainParameter  → 程序入口参数分装

  OutFileCal          → 题库分装

  RPNCalculator    → 四则远算转后缀表达式,即进行逆波兰操作

trashcan包:

  暂时没有用处或已经被替换的类

五、关键代码说明


package com.cal.mold;

import java.util.HashMap;
import java.util.List;
import java.util.Stack;

/**
 * 逆波兰表达式转换
 * 计算四则运算结果
 */
public class RPNCalculator {

    //运算符优先级
    private static HashMap<String,Integer> opLs;
    private FractionCal fc = new FractionCal();
    private String src;

    public RPNCalculator(String src) {
        this.src = src;
        if(opLs==null)
        {
            opLs = new HashMap<String,Integer>(6);
            opLs.put("+",0);
            opLs.put("-",0);
            opLs.put("*",1);
            opLs.put("/",1);
            opLs.put("%",1);
            opLs.put(")",2);
        }
    }

    //将中缀表达式转化为后缀表达式
    public String toRpn()
    {
        String[] tmp = split(src);
        // 后缀栈
        Stack<String> rpn = new Stack<String>();
        // 临时栈
        Stack<String> tmpSta = new Stack<String>();

        for (String str : tmp) {
            if (isNum(str)) {
                //是操作数,直接压入结果栈
                rpn.push('('+str+')');
            }else{
                //是操作符号
                if(tmpSta.isEmpty())
                {//还没有符号
                    tmpSta.push(str);
                }else{
                 //判读当前符号和临时栈栈顶符号的优先级
                    if(isHigh(tmpSta.peek(),str))
                    {
                        if(!str.equals(")"))
                        {
                            do{
                                //1在临时栈中找出小于当前优先级的操作符
                                //2压入当前读入操作符
                                rpn.push(tmpSta.peek());
                                tmpSta.pop();
                            }while(!tmpSta.isEmpty()&&(isHigh(tmpSta.peek(),str)));
                            
                            tmpSta.push(str);
                        }else{
                            //是)依次弹出临时栈的数据,直到(为止
                            while(!tmpSta.isEmpty()&&!tmpSta.peek().equals("("))
                            {
                                rpn.push(tmpSta.pop());
                            }
                            if((!tmpSta.empty())&&(tmpSta.peek().equals("(")))
                            {//弹出(
                                tmpSta.pop();
                            }
                        }
                    }else if(!isHigh(tmpSta.peek(),str)){
                        tmpSta.push(str);
                    }
                }
            }

        }
        while(!tmpSta.empty())
        {//把栈中剩余的操作符依次弹出
            rpn.push(tmpSta.pop());
        }
        StringBuilder st = new StringBuilder();
        for (String str : rpn) {
                st.append(str);
        }
        rpn.clear();
        return st.toString();
    }

    //分割(56+4)3*6+2=>(,56,+,4,
    private String[] split(String src) {
        StringBuilder sb = new StringBuilder(src.length());
        for(char ch:src.toCharArray())
        {
            if(ch=='+'||ch=='-'||ch=='*'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='%')
            {
                sb.append(",");
                sb.append(ch);
                sb.append(",");
            }else{
                sb.append(ch);
            }
        }
        String string = sb.toString().replaceAll(",{2,}", ",");
        return string.split(",");
    }

    //比较操作符的优先级
    private boolean isHigh(String pop, String str) {
        if(str.equals(")"))
            return true;
        if(opLs.get(pop)==null||opLs.get(str)==null)
          return false;
        return opLs.get(pop)>=opLs.get(str);
            
    }

    //是否是数字
    public boolean isNum(String str) {
        for (char ch : str.toCharArray()) {
            if(ch=='+'||ch=='-'||ch=='*'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='%')
                return false;
        }
        return true;
    }

    //得到结果
    public FractionStack calculate() {
        String rpn = toRpn();
        Stack<FractionStack> res = new Stack<FractionStack>();
        StringBuilder sb = new StringBuilder();
        for(char ch:rpn.toCharArray())
        { 
            if(ch=='(')
            {
                continue;
            }else if(ch>='0'&&ch<='9'||ch=='.'){
                sb.append(ch);
            }else if(ch==')')
            {
                FractionStack fs = new FractionStack();
                fs.setNumerator(Integer.parseInt(sb.toString()));
                fs.setDenominator(1);
                res.push(fs);
                sb = new StringBuilder();
            }else{
                 if(!res.empty())
                 {
                     FractionStack rear = res.pop();
                     FractionStack front = res.pop();
                     System.out.println("rear:"+rear.getRes());
                     System.out.println("front:"+front.getRes());
                     switch (ch) {
                    case '+':
                         res.push(fc.fracAdd(front, rear)); 
                        break;
                    case '-':
                        res.push(fc.fracSub(front, rear)); 
                        break;
                    case '*':
                        res.push(fc.fracMul(front, rear)); 
                        break;    
                    case '/':    
                        res.push(fc.fractDiv(front, rear)); 
                        break;
                     }
            }
            }
        }
        FractionStack result = res.pop();
        res.clear();
        return result;
    }
    /* 
    *计算生成题目的结果
    */
    public List<OutFileCal> GetExerciseRes(List<OutFileCal> caList){
        for(int i=0;i<caList.size();i++){
            String exe = caList.get(i).getCalExe();
            RPNCalculator analyer = new RPNCalculator(exe);
            String res = analyer.calculate().getRealRes();
            caList.get(i).setCalRes(res);
        }
        return caList;
    }
    
}

View Code

上面为逆波兰表达式转换过程和计算四则运算结果


package com.cal.mold;

public class FractionCal {
    //private FractionStack fs = new FractionStack();
    //分数加法
    public FractionStack fracAdd(FractionStack f1,FractionStack f2){
        FractionStack fs = new FractionStack();
        int first_numerator = f1.getNumerator();int first_denominator = f1.getDenominator();
        int second_numrator = f2.getNumerator();int second_denominator = f2.getDenominator();
        int denominator;
        int numerator;
        
        if(first_denominator==second_denominator)  //分母相同时加分子     
        {      
             denominator=first_denominator;      
             numerator=first_numerator+second_numrator;      
        }      
        else  //否则同分比较分子     
        {      
            denominator=first_denominator*second_denominator;      
            numerator=first_numerator*second_denominator+first_denominator*second_numrator;      
        }    
        int gcd = gcd(numerator,denominator);
        denominator = denominator / gcd;
        numerator = numerator / gcd;
        fs.setNumerator(numerator);
        fs.setDenominator(denominator);
        System.out.println("加法输出的结果是"+fs.getRes());
        return fs;      

    }
    //分数减法
    public FractionStack fracSub(FractionStack f1,FractionStack f2){
        FractionStack fs = new FractionStack();
        int first_numerator = f1.getNumerator();int first_denominator = f1.getDenominator();
        int second_numerator = f2.getNumerator();int second_denominator = f2.getDenominator();
        int denominator;
        int numerator;
        
        if(first_denominator==second_denominator)  //分母相同时加分子     
        {      
             denominator=first_denominator;      
             numerator=first_numerator-second_numerator;      
        }      
        else  //否则同分比较分子     
        {      
            denominator=first_denominator*second_denominator;      
            numerator=first_numerator*second_denominator-first_denominator*second_numerator;      
        }    
        int gcd = gcd(numerator,denominator);
        denominator = denominator / gcd;
        numerator = numerator / gcd;    
        fs.setNumerator(numerator);
        fs.setDenominator(denominator);
        System.out.println("减法输出的结果是"+fs.getRes());
        return fs;      

    }
    //分数乘法
    public FractionStack fracMul(FractionStack f1,FractionStack f2){
        FractionStack fs = new FractionStack();
        int first_numerator = f1.getNumerator();int first_denominator = f1.getDenominator();
        int second_numerator = f2.getNumerator();int second_denominator = f2.getDenominator();
        int denominator;
        int numerator;
        
        denominator=first_denominator*second_denominator;      
        numerator=first_numerator*second_numerator; 
          
        int gcd = gcd(numerator,denominator);
        denominator = denominator / gcd;
        numerator = numerator / gcd;    
        fs.setNumerator(numerator);
        fs.setDenominator(denominator);
        System.out.println("乘法输出的结果是"+fs.getRes());
        return fs;      

    }
    //分数除法
    public FractionStack fractDiv(FractionStack f1,FractionStack f2){
        FractionStack fs = new FractionStack();
        int first_numerator = f1.getNumerator();int first_denominator = f1.getDenominator();
        int second_numerator = f2.getNumerator();int second_denominator = f2.getDenominator();
        
        int denominator;
        int numerator;
        
        numerator = first_numerator*second_denominator;
        denominator = first_denominator*second_numerator;
                    
        int gcd = gcd(numerator,denominator);
        denominator = denominator / gcd;
        numerator = numerator / gcd;
        fs.setNumerator(numerator);
        fs.setDenominator(denominator);
        System.out.println("除法输出的结果是"+fs.getRes());
        return fs;     

    }
    //获取最大公约数
    static int gcd(int x,int y){
         int r;      
            while( y!= 0)      
            {      
                r = x%y;      
                x = y;      
                y = r;      
            }      
        return x;        
    }
}

View Code

上面为分数计算器

六、运行测试

1.生成题库

2.题目结果验证

七、PSD统计

PSP2.1 Personal Software Process Stages Time Senior Student Time  
Planning 计划 12 12  
· Estimate 估计这个任务需要多少时间 12 12  
Development 开发 6 6  
· Analysis 需求分析 (包括学习新技术) 6 10  
· Design Spec 生成设计文档 5 6  
· Design Review 设计复审 4 6  
· Coding Standard 代码规范 3 3  
· Design 具体设计 10 12  
· Coding 具体编码 36 21  
· Code Review 代码复审 7 9  
· Test 测试(自我测试,修改代码,提交修改) 13 21  
Reporting 报告 9 6  
  测试报告 3 2  
  计算工作量 2 1  
  并提出过程改进计划 3 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

八、作业小结

  1.题目生成难度还有待开发

  2.四则运算题目出题关键代码部分还可以改进,括号增减更加灵活

  3.查重仍待开发

  4.文件流读写代码冗余程度较大

GitHub:https://github.com/Umbrellazc/JavaCalculation


文章来源:http://www.cnblogs.com

原文地址:https://www.cnblogs.com/umblog/p/8684415.html

我国首次在东南太平洋发现大面积富稀土沉积

据新华社北京3月31日报道,记者31日从中国大洋协会了解到,我国科考队员近日在东南太平洋海域首次发现大面积富稀土沉积。这一发现刷新了我国和国际上深海稀土资源调查研究的新纪录。科考队已在东南太平洋深海盆地内初步划分出了面积约150万平方公里的富稀土沉积区。

“向阳红01”科考船 人民日报 资料图

科考队员是在中国首次环球海洋综合科学考察第五航段暨中国大洋46航次第四航段科考作业中获此发现的。本航段,我国科学家首次在东南太平洋进行了海洋综合科学考察。

据中国大洋46航次首席科学家石学法介绍,大洋46航次第四航段对东南太平洋约260万平方公里范围内的深海盆地进行了海洋地质调查和环境综合考察,采集了丰富的沉积物样品、海水样品以及浅地层剖面、多波束地形、水文气象和生物化学资料。

科考队员利用相关仪器对所获沉积物样品进行现场测试。结果显示,该区域多站深海黏土中稀土元素含量较高,达到“成矿”条件,表明在东南太平洋海盆局部区域内沉积物具有非常高的稀土成矿潜力。

石学法说,根据对沉积物现场元素测试数据、浅地层和多波束测量资料综合分析,科考队在东南太平洋深海盆地内初步划分出了面积约150万平方公里的富稀土沉积区。这是国际上首次在东南太平洋海域发现大范围富稀土沉积,为在该区域深入开展深海稀土资源调查和相关环境研究奠定了基础。

中国大洋协会办公室副主任李波表示,由中国大洋协会办公室指导下的中国大洋46航次科考,是实现“蛟龙探海”工程“十三五”阶段目标、完善我国深海活动三大洋战略布局的重要举措。中国大洋协会办公室2012年立项开展深海稀土资源调查研究,是国际上第二个开展深海稀土资源调查的国家。

据介绍,经过科学家前期研究,我国已在太平洋和印度洋初步划分出了4个富稀土成矿带,提出了全球12个深海稀土资源潜在富集调查区,并对全球海底稀土资源潜力进行了评估。目前,我国在深海稀土资源的调查研究水平处于国际先进之列。

搭载科考队员的“向阳红01”科考船目前正在驶往本航次最后一个航段的科考作业现场,进行以地质、水文、环境、生态、大气为主的海洋综合科学考察。

文章来源:http://www.guancha.cn

原文地址:http://www.guancha.cn/industry-science/2018_03_31_452245.shtml

上周发生致命车祸的特斯拉汽车使用了自动驾驶

上周五早晨苹果工程师 Walter Huang 驾驶特斯拉 Model X 汽车在加州 101 公路和 85 公路交接处发生车祸,汽车撞在了隔离带,期间汽车启用了自动驾驶。而据 ABC
报道,Huang 曾向汽车零售商抱怨自动驾驶曾多次在同一地点转向隔离带。特斯拉发表
声明称,“通过恢复车载电脑中的行车日志,对于事故当时可能发生的情况,我们已经了解了更多的信息。在碰撞发生前( 3 月 23 日周五上午 9 点 27 分之前)的时段里 ,自动辅助驾驶处于使用状态,主动巡航控制中的跟车距离被设置为最小距离。在驾驶过程中,系统发出了数次影像提示和 1 次声音提示,要求驾驶员双手握住方向盘。但在事故发生前的 6 秒内,系统没有检测到驾驶员将双手放在方向盘上。从距离高速公路混凝土隔离带 150 米处,驾驶员的视野就可以清晰看到隔离带,并有 5 秒左右的反应时间。但遗憾的是,行车日志显示,驾驶员并未采取任何行动…在美国,平均每行驶 8600 万英里就有一起致命汽车事故发生。而对于配有自动辅助驾驶硬件的特斯拉车辆,这个数据为平均每行驶 3.2 亿英里(其中包括已知的行人致死事故)。这意味着,如果你驾驶装备自动辅助驾驶硬件的特斯拉车辆,遭遇致死事故的可能性会低于平均值的 3.7 倍…目前,全世界每年有近 125 万人被车祸夺去生命。如果配备与特斯拉同等安全级别的车辆在世界范围内得到广泛应用,意味着每年有大约 90 万人能免于在车祸中失去生命。我们认为自动驾驶车辆的安全水平将比非自动驾驶车辆高出 10 倍。”

文章来源:http://www.solidot.org

原文地址:http://www.solidot.org/story?sid=56003

Google 将关闭 Goo.gl 缩址服务

不要太依赖于 Google 的服务,因为你不知道这些服务什么时候会被杀死。Goo.gl 缩址服务
成为搜索巨人最新的牺牲品。从 4 月 13 日起,用户将不能再创建 Goo.gl 缩址,现有的缩址仍可通过 Goo.gl 终端管理,不过这也有时间限制,到 2019 年 3 月 30 日用户将无法访问控制终端了, 但所有的缩址链接仍然能工作。Google 推荐用户使用它的产品新服务
Firebase Dynamic Links (FDL) ,或改用替代缩址服务 Bitly、 Ow.ly 和 Tinyurl。至于 FDL,Google 的介绍是,“动态链接是一种智能网址,可方便您将现有和潜在用户转到您的 iOS 或 Android 应用中的任意位置。动态链接可横跨应用安装过程发挥作用,因此即使是新用户首次打开应用,也能看到要查找的内容。无论应用规模如何,动态链接均永远免费。”永远免费并不意味着它不会被杀死。

文章来源:http://www.solidot.org

原文地址:http://www.solidot.org/story?sid=56002

苹果钱包出现陌生人凭证 客服:原因不明



千呼万唤始出来,北京时间30日,苹果推送了iOS 11.3正式版。新版本中,除了推出电池管理功能以及引入更新的数据和隐私信息以外,还更新了Animoji表情功能。当然,最让围观群众期待的莫过于Apple Pay支持北京一卡通和上海交通卡刷卡,并可通过钱包APP(Wallet)直接为绑定的公交卡充值。

听起来似乎棒的很,不过在一片鼓掌叫好中编辑刷到了某位朋友的一条朋友圈,大意是为了体验一把手机刷地铁进站的快感,他打开iPhone手机钱包(Wallet)应用准备创建虚拟交通卡,却在无意间发现钱包中有很多非本人凭证,甚至出现了实名制购票信息,其中涉及的他人信息竟超过10人!

宅宅急忙戳开这位朋友的微信询问,对方表示钱包中出现的凭证都并非是他认识的亲戚朋友,完全是陌生人。

随后他致电了苹果客服,电话转接了两个部门也没有得到明确答复,在苹果实体店咨询也未得到有效回应。

无独有偶,编辑在网上搜索后发现实际有不少用户遭遇过这种情况。

有豆瓣和知乎网友发帖晒出自己的钱包凭证,称在自己的钱包中发现了他人卡劵及机票、车票等凭证。

楼下网友也纷纷留言表示自己出现过类似情况,除了一览无余的陌生人姓名及电话信息,就连最隐私的开房记录也藏不住。

而出现这种情况,用户们也只能手动删除别人的信息。

这到底是什么回事?

编辑在一条知乎问题下看到某条评论,称出现这种情况的原因可能用户在淘宝上购买过破解版游戏,并登陆了别人的Apple ID。

为此编辑咨询某位iOS系统的研究员,对方表示因购买破解版游戏导致钱包出现他人凭证是有可能的,毕竟购买游戏时一般需要登陆别人的 Apple ID下载,之后再换回自己的账号,很可能在使用别人账号时同步了凭证。

而另一位安全研究员则称,据他了解,每次更换AppleID都需要重新绑定银行卡,而Wallet是用NFC功能(近场通信)实现刷卡,本身就需要每次都绑定银行卡,所以银行卡不会外泄。

那多出来的凭证怎么解释?

这位安全研究员亲自尝试用Wallet绑定信用卡,发现绑定信用卡或者会员卡后都会出现显示近期交易记录的按钮。

因此,他认为只要添加了别人的信用卡或者会员卡就可看到别人用绑定的这张卡使用ApplePay付款后的凭证。“但如果你绑定了信用卡,却没有使用ApplePay支付,而是用微信或者支付宝等第三方支付平台,应该不会显示出凭证。”

不过以上回答皆为两位安全研究员的猜想,未有确凿证据。

编辑也致电了苹果官方客服,客服表示之前并未听过类似情况,并询问了编辑是否无意泄露了自己的Apple ID或将Apple ID账号密码借给过他人。

在具体应该如何解决这一问题时,客服建议重新设置AppleID密码并开启双重认证。至于这种情况究竟因何出现,苹果客服并非给出原因。

在这里我们倒可以了解下如何利用Wallet添加登机牌、电影票、团购券、会员卡等各类凭证。

在少数派的一篇文章中曾介绍过利用工具将会员卡添加到Wallet中的方式。具体来说,如果你的会员卡上有二维码,或者同时拥有卡号+条形码,那你可以直接使用Stocard来识别和存储会员卡信息,这是一款免费的会员卡储存应用,可以将其作为将会员卡添加到Wallet的跳板。

如果你的会员卡上只有卡号或者条形码,那就需要换个思路。比如通过QRCode Generator这个网页端工具,将会员卡上的卡号转换成二维码。然后下载二维码并传输到你的其他设备上,再通过Stocard添加会员卡,最后添加到Wallet。

如果你的会员卡上只有条形码,可以先通过ZXing Decode Online这个工具将条形码反译成数字,然后再使用QRCode Generator转换成二维码,接着添加到Wallet。

总之,Wallet是个好东西,但需要谨慎使用,毕竟个人信息的泄露更可怕。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712365.htm

英特尔Hades Canyon NUC有多强?来看看外媒的测试成绩吧



在今年年初的CES 2018消费展期间,Intel公布了他们与AMD合作的产物,采用Kaby Lake架构CPU+Vega架构GPU的Core i7处理器,首款搭载这块处理器的产品为Intel代号为Hades Canyon的NUC(读音似:那啊),这可让不少小主机的玩家兴奋死了。

不久前便有外媒按耐不住,偷跑了个开箱测试,大概知道了它的性能表现,而到近日Intel这台有史以来最强的NUC已经解禁了评测。

图片来源Anandtech

外媒有关于Hades Canyon NUC评测文章和视频都比较多了,这里简要地选择了Anandtech的评测。

他们拿到的是NUC8i7HVK,这是Hades Canyon NUC中的高配版,售价为999美元起,为Intel Core i7-8809G处理器(四核八线程,默频3.1GHz,可最大boost到4.2GHz,支持超频,100W TDP),显卡为AMD Radeon RX Vega M GH(24个CU,1063-1190MHz核心频率,4GB HBM2显存)。

Intel给他们的评测机已经内置了118GB的Optane SSD 800p+512GB的545s M.2 SATA SSD,内存为金士顿Hyper X Impact DDR4-3200 8GB*2,这样下来总价在1617美元。

对比机型方面,Anandtech选择了Intel老款代号Skull Canyon NUC,第七代中最强的NUC,还有索泰带独显版本的ZBOX。

由于Anandtech他们喜欢测很多项目,所以这里只选择几个大家比较熟悉的跑分成绩,全部的内容可以点这里去看原文。

CPU性能部分:

PCMark 10


基础分


生产力分


数位内容创作

PCMark 8


家用


办公


创作

CineBench R15


单线程


多线程


OpenGL

x264 Benchmark

Intel/AMD合体迷你机实测:残暴得不像话

7-Zip

Intel/AMD合体迷你机实测:残暴得不像话
压缩

Intel/AMD合体迷你机实测:残暴得不像话
解压

Hades Canyon NUC的Core i7-8809G处理性能果然相当强,多个项目都强于移动版的Core i7-6700HQ、7700HQ,甚至桌面级的Core i7-6700,接近于Core i7-7700。

游戏性能部分:

Anandtech在这部分还加入了与游戏本的对比,但可能是为了和更早的机型对比,或者他们编辑不怎么喜欢玩游戏,所以选的游戏…有点古老,这里只拿了1080p分辨率下的游戏成绩。

3DMark

Intel/AMD合体迷你机实测:残暴得不像话

Fire Strike

Intel/AMD合体迷你机实测:残暴得不像话

Sky Diver

热血无赖

Intel/AMD合体迷你机实测:残暴得不像话

古墓丽影

Intel/AMD合体迷你机实测:残暴得不像话

生化奇兵:无限

Intel/AMD合体迷你机实测:残暴得不像话

尘埃:决战

Intel/AMD合体迷你机实测:残暴得不像话

超级房车赛:汽车运动

Intel/AMD合体迷你机实测:残暴得不像话

DOTA 2

Intel/AMD合体迷你机实测:残暴得不像话

中土世界:暗影魔多

Intel/AMD合体迷你机实测:残暴得不像话

游戏方面,AMD这块Vega M GH的图形性能同样表现很不俗,跑分可以比肩GTX 980,但一些游戏表现上则更接近于GTX 970,也就是高于GTX 1050 Ti。

功耗

Intel/AMD合体迷你机实测:残暴得不像话
待机

Intel/AMD合体迷你机实测:残暴得不像话
满载

Hades Canyon NUC在待机时的功耗表现良好,接近64W TDP桌面处理器的表现,但满载时功耗就远高于一些游戏本,但低于ZBOX这种主打高性能的迷你主机。

散热

Intel/AMD合体迷你机实测:残暴得不像话

AIDA6烤机频率变化

Intel/AMD合体迷你机实测:残暴得不像话

烤机温度

Intel/AMD合体迷你机实测:残暴得不像话

烤机功耗

散热方面,Hades Canyon NUC在AIDA64烤机测试中,可以保持多核最大3.9GHz的频率到接近100°C,最后稳定在80°C左右,但频率始终可以高于默认的3.1GHz。


文章来源:http://www.cnbeta.com

原文地址:https://www.cnbeta.com/articles/tech/712363.htm

斯蒂芬·霍金教授葬礼在剑桥举行

英国物理学家霍金(Stephen Hawking)的葬礼于英国当地时间周六(3月31日)下午2时(北京时间晚上9时)在剑桥大学的教堂举行。

霍金的葬礼将在剑桥大学大圣玛丽教堂(St Mary the Great)举行,他生前曾花了50多年时间,在教堂附近的冈维尔与凯斯学院(Gonville and Caius College)研究宇宙。

霍金葬礼现场直播点此访问

由于葬礼是以私人形式举行,届时只有家人、朋友及同事等约500人出席。

据BBC报道,今年6月15日,霍金的骨灰将被安葬在威斯敏斯特大教堂,与著名物理学家牛顿(1727年下葬)、生物学家达尔文(1882年下葬)毗邻。

斯蒂芬·威廉·霍金(Stephen William Hawking,1942年1月8日至2018年3月14日),男,出生于英国牛津,英国剑桥大学著名物理学家,现代最伟大的物理学家之一、20世纪享有国际盛誉的伟人之一。

1963年,霍金21岁时患上肌肉萎缩性侧索硬化症(卢伽雷氏症),全身瘫痪,不能言语,手部只有三根手指可以活动。1979至2009年任卢卡斯数学教授,主要研究领域是宇宙论和黑洞,证明了广义相对论的奇性定理和黑洞面积定理,提出了黑洞蒸发理论和无边界的霍金宇宙模型,在统一20世纪物理学的两大基础理论——爱因斯坦创立的相对论和普朗克创立的量子力学方面走出了重要一步。获得CH(英国荣誉勋爵)、CBE(大英帝国司令勋章)、FRS(英国皇家学会会员)、FRSA(英国皇家艺术协会会员)等荣誉。

2012年4月6日播出的热播美剧《生活大爆炸》第五季第21集中,史蒂芬·霍金本色出演参与了客串。2017年为英国BBC录制纪录片《探索新地球》。[1] 物理学家斯蒂芬·霍金11月6日表示,技术有望逆转工业化对地球造成的一些危害,有助于消除疾病和贫困,但人工智能需要加以控制。[2] 2017年11月,霍金预言2600年能源消耗增加,地球或将变成“火球”。

2018年3月14日,霍金逝世,享年76岁。

文章来源:http://it.ithome.com

原文地址:https://www.ithome.com/html/it/353467.htm