情热传说配置要求怎么样 你们说一下

扫二维码浏览手机版
打开微信,扫一扫我吧
当前位置: &
装甲联盟T-10坦克怎么样 T10全解
今天给大家讲一下装甲联盟手游T-10坦克怎么样 T-10坦克性能全解。装甲联盟手游T-10坦克厉害吗?相信大家听了装甲联盟手游T-10坦克以后会对它有更深一层的了解呢!一起来看看吧。【重型坦克T-10】这款坦克算是比较重的呢,全重是51.5吨;发动机的最大功率是750马力;最大的公路速度可以达到50千米/小时,最大的越野速度也可以达到50千米每小时,公路的最大行程是350千米,最大的越野行程只有1700千米,然后呢就是武器了,比较牛逼的。1门122mm L/47主炮(半自动装填)和1挺14.5毫米并列机枪以及1挺14.5毫米高射机枪。弹药填充量也基本ok.122毫米的炮弹有30发,然后机枪弹是1000发,一点都不虚。下面来讲一下坦克机身了,装甲大约29到250毫米,车长有10.56米,车身长7.52米,宽度是3.556米,高度是2.58米。发动机的功率算是比较大的了,有551.25千瓦,单位功率可以达到10.73千瓦/吨,最多乘员是4人呢!总体来讲,还是很不错的。【结构特点】T-10的总体布局还不错,属于传统式,驾驶室、战斗室和动力室依次从前到后排列。车体的侧面可以有放工具的工具箱和乘务员物体箱,旁边带有2条钢缆绳,但是没有侧裙板。T-10的车尾上有装甲板,它是用铰链链接到下装的那个装甲板上面的,当你检修的时候可以把它放下来。更好的是,车尾自带2块备用的履带板,另外还有布置外组燃油箱。更厉害的是,有的T-10车体的下面居然还带有自救的圆木,小编我都觉得很神奇。
72G手游网官方微信
微信公众号:72G手游网
扫码关注“72G手游网”公众微信号,参加活动即可赢取王者荣耀最新英雄和限定皮肤,还要更多限量手游礼包哦!赶紧来参加吧!
【责任编辑:别写我的名字】
(window.slotbydup=window.slotbydup || []).push({
id: '3906049',
container: s,
size: '300,270',
display: 'inlay-fix'
剩余数量:0
剩余数量:4
剩余数量:48
剩余数量:292
剩余数量:289
剩余数量:0
剩余数量:0
剩余数量:0
剩余数量:43
(window.slotbydup=window.slotbydup || []).push({
id: '3911265',
container: s,
size: '300,270',
display: 'inlay-fix'最近做的项目有一个特殊的需求,由于系统是CS的,客户端需要自己编写JAVA类上传至服务器运行,整个流程如下:
1.客户端编写JAVA类,并实现特定接口
2.由客户端的JAVA编译器将其编译成class
3.客户端通过socket将class文件上传至服务器
4.服务器将class文件放至自己的classpath中,加载并执行
问题出在最后一步上,服务器虽然由我们完全控制,客户端编写的类虽然需要实现特定的接口,但执行具体内容不在我们控制范围内。也就是说,客户端上传的类中,完全可能写一段程序,读取服务器的所有文件,然后上传给另一台客户端可控制的机器上,这样就很容易地窃取了我们的整个系统。为了避免这种情况,能想到的解决方案有:
1.服务器接收到客户端上传的class后,不立即执行,而是增加一个审核的步骤,当上传的class通过审核后,才能够执行
2.让客户端上传的class在独立的沙箱中运行,类似于applet
第一种方案理论上是可行的,但是审核的步骤靠程序来实现相当困难,你需要先反编译class,然后再检查里面是否有类似file.listFiles(),reader.read(byte[] arr)这样的调用,这几乎无法实现。因为JAVA读取文件的方式有很多种,并且创建对象的方式也有很多种,可以直接new,也可以使用反射去创建,甚至调用读取方法也不直接调用,而使用反射去调,你如何使用程序去检查呢?那么能不能把审核的这一步骤交给人来做呢,安排一工作人员在class上传后先看看里面有没有恶意代码。这当然是可以的,但不是多出一个人员成本了吗?
第二种方案是比较理想的,即把你想控制的访问权限通过配置的方式告诉JVM,剩下的工作交给JVM来做。
虽然有了方向,但由于以前没有做过类似的功能,所以决定先上网搜一把。搜索的关键字为“java.policy配置”或“java沙箱模型”。不过很遗憾,文章虽然有很多,但经过自己动手测试才发现,写文章的人几乎没有人真正实践过,要么互相抄袭,要么就是随便翻译一下国外的文章。没办法,还是看JDK的文档吧,原文地址如下:
虽然写的不是很详细,但还算到位,关键的地方都写到了。经过一番摸索,终于实现了我想要的功能,客户端上传的代码如果有读写文件或者创建socket对象的操作,程序就会报权限不足的错误。这个功能的实现不需要修改服务器的代码,实在是太棒了。现将主要步骤分享如下:
1.启动SecurityManager开关
默认情况下,JVM是不启动安全检查的,所以要想让程序在沙箱中运行,必须将开关打开。打开的方式有两种,一种是在启动运行中追加JVM参数-Djava.security.manager,还有一种方式是在程序中直接设置:System.setSecurityManager(new SecurityManager());,这两种方式是等价的
2.修改jvm自带的java.policy文件,
java.policy文件位于%JAVA_HOME%/ jre/lib/security/下,默认内容如下:
// Standard extensions get all permissions by default
grant codeBase &file:${{java.ext.dirs}}/*& {
permission java.security.AllP
// default permissions granted to all domains
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See &/notes& for more information.
permission java.lang.RuntimePermission &stopThread&;
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission &localhost:1024-&, &listen&;
// &standard& properies that can be read by anyone
permission java.util.PropertyPermission &java.version&, &read&;
permission java.util.PropertyPermission &java.vendor&, &read&;
permission java.util.PropertyPermission &java.vendor.url&, &read&;
permission java.util.PropertyPermission &java.class.version&, &read&;
permission java.util.PropertyPermission &os.name&, &read&;
permission java.util.PropertyPermission &os.version&, &read&;
permission java.util.PropertyPermission &os.arch&, &read&;
permission java.util.PropertyPermission &file.separator&, &read&;
permission java.util.PropertyPermission &path.separator&, &read&;
permission java.util.PropertyPermission &line.separator&, &read&;
permission java.util.PropertyPermission &java.specification.version&, &read&;
permission java.util.PropertyPermission &java.specification.vendor&, &read&;
permission java.util.PropertyPermission &java.specification.name&, &read&;
permission java.util.PropertyPermission &java.vm.specification.version&, &read&;
permission java.util.PropertyPermission &java.vm.specification.vendor&, &read&;
permission java.util.PropertyPermission &java.vm.specification.name&, &read&;
permission java.util.PropertyPermission &java.vm.version&, &read&;
permission java.util.PropertyPermission &java.vm.vendor&, &read&;
permission java.util.PropertyPermission &java.vm.name&, &read&;
里面定义了JAVA程序默认的权限,第一个grant定义了系统属性${{java.ext.dirs}}路径下的所有的class及jar(/*号表示所有class和jar,如果只是/则表示所有class但不包括jar)拥有所有的操作权限(java.security.AllPermission),java.ext.dirs对应路径为%JAVA_HOME%/jre/lib/ext目录,而第二个grant后面定义了所有JAVA程序都拥有的权限,包括停止线程、启动Socket 服务器、读取部分系统属性。由于我要禁止客户端的class类启动socket,所以需删除或注释掉下面这句:
permission java.net.SocketPermission &localhost:1024-&, &listen&;
3.指定自己的policy文件,为了便于理解,这里我举个例子。假设客户端的class我放在C:/tmp目录下,假设类的代码如下:
package com.
import java.io.BufferedR
import java.io.F
import java.io.FileInputS
import java.io.FileW
import java.io.InputS
import java.io.InputStreamR
import java.lang.reflect.M
import java.net.ServerS
import java.net.S
public class PolicyTest {
public static void main(String[] args) {
Class clazz = Class.forName(&java.lang.Object&);
Object o = clazz.newInstance();
Method m = o.getClass().getDeclaredMethod(&toString&);
m.invoke(o);
System.out.println(&reflect access ok&);
} catch (Throwable e) {
System.out.println(e.getMessage());
String userdir = System.getProperty(&user.home&);
System.out.println(&property read ok&);
// File f = new File(userdir + &/conf/x.properties&);
} catch (Throwable e) {
System.out.println(e.getMessage());
ServerSocket s = new ServerSocket(8889);
System.out.println(&create socket server ok&);
} catch (Throwable e) {
System.out.println(e.getMessage());
Socket s2 = new Socket(&localhost&, 8889);
s2.close();
System.out.println(&create socket client ok&);
} catch (Throwable e) {
System.out.println(e.getMessage());
File file = new File(&C:/test.txt&);
read(file);
System.out.println(&file read ok&);
} catch (Throwable e) {
System.out.println(e.getMessage());
write(file);
System.out.println(&file write ok&);
} catch (Throwable e) {
System.out.println(e.getMessage());
private static void read(File file) throws Throwable {
InputStream in =
BufferedReader reader =
in = new FileInputStream(file);
reader = new BufferedReader(new InputStreamReader(in));
String temp =
while ((temp = reader.readLine()) != null) {
// System.out.println(&read--&& + temp);
} catch (Throwable e) {
} finally {
if (in != null) {
in.close();
if (reader != null) {
reader.close();
private static void write(File file) throws Throwable {
FileWriter fw = new FileWriter(file);
for (int i = 0; i & 10; i++) {
String temp = new java.util.Date() + & & + new java.util.Random().nextLong();
// System.out.println(&write--&& + temp);
fw.write(temp + &\r\n&);
fw.flush();
fw.close();
代码很简单,包括使用反射、读取系统属性、创建socket、读写文件的操作,把编译后的class放至C:/tmp/com/test目录下,然后在C:/tmp目录用命令行下执行java com.test.PolicyTest,可以看到,操作都可以成功:
但如果执行java -Djava.security.manager com.test.PolicyTest,你会看到以下结果:
很明显,由于我们启动了安全检查,这里的操作全部失败。现在,到了编写自己的policy文件的时候了,我取名为my.policy,内容如下:&
grant codeBase &file:/C:/tmp/*& {
permission java.security.AllP
我把这个文件也放在C:/tmp下,然后执行
java -Djava.security.manager -Djava.security.policy=my.policy com.test.PolicyTest
由于我分配的是AllPermission,所以全部操作都能成功,但这不是我想要的。我希望使用反射和读取系统属性能成功,而创建socket和读写文件要失败,于是更改my.policy:
grant codeBase &file:/C:/tmp/*& {
permission java.lang.reflect.ReflectPermission &suppressAccessChecks&;
permission java.lang.RuntimePermission &accessDeclaredMembers&;
permission java.util.PropertyPermission &*&, & read,write&;
然后再次执行java -Djava.security.manager -Djava.security.policy=my.policy com.test.PolicyTest
达到理想效果了,反射和系统属性读取没有问题,socket创建及文件读写被禁止。
4.通过上面的PolicyTest示例,得出解决我的问题的方案是,把服务器的class和客户端class分别放在不同的classpath 下,以windows为例(如果是在linux上,只需要更改对应的路径即可),假设服务器的class文件放在C:/classes/local下,而客户端上传的class放在C:/classes/remote下,my.policy放在C:/classes下,内容为:
grant codeBase &file:/C:/classes/local/*& {
permission java.security.AllP
grant codeBase &file:/C:/classes/remote/*& {
permission java.lang.reflect.ReflectPermission &suppressAccessChecks&;
permission java.lang.RuntimePermission &accessDeclaredMembers&;
permission java.util.PropertyPermission &*&, & read,write&;
对应的启动脚本为java -Djava.security.manager -Djava.security.policy=C:/classes/my.policy -classpath C:/classes/C:/classes/remote xx.MainClass注意:如果是linux,除了更改对应路径外,还需要把classpath中的;号改为:号。
5.大功告成!你可能会问,我怎么知道有哪些权限可以配置,如何配置呢?除了看官方的文档说明外,还有一个小技巧。就是实现自己的SecurityManager,然后覆盖checkPermission(Permission perm)方法,如下:
package com.
import java.security.P
public class MySecurityManager extends SecurityManager {
public void checkPermission(Permission perm) {
System.out.println(&perm=& + perm);
super.checkPermission(perm);
为了让MySecurityManager有效,你可以直接在代码中通过System.setSecurityManager(new MySecurityManager());设置,或者在JVM参数中设置-Djava.security.manager=com.test.MySecurityManager,这两种方式是一样的,运行方式还是一样:java -Djava.security.manager=com.test.MySecurityManager -Djava.security.policy=my.policy
com.test.PolicyTest
内容太多,未显示全,不过可以看到,你需要获取的权限都被打印了出来。
本文已收录于以下专栏:
相关文章推荐
基本情况Policy对象可能有多个实体,虽然任何时候只能有一个起作用。当前安装的Policy对象,在程序中可以通过调用getPolicy方法得到,也可以通过调用setPolicy方法改变。Policy...
Java安全体系结构的真正好处在于,它可以对代码授予不同层次的信任度来部分地访问系统。
Microsoft提供了ActiveX控件认证技术,它和Java的认证技术相类似,但是...
HDFS JAVA客户端的权限错误:Permission denied
搭建了一个Hadoop的环境,Hadoop集群环境部署在几个Linux服务器上,现在想使用windows上的Java客户端来操...
众所周知,Java语言具有完善的安全框架,从编程语言,编译器、解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运作。但是,...
众所周知,Java语言具有完善的安全框架,从编程语言,编译器、解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运作。但是,...
原文转自:http://blog.csdn.net/naruto1021/article/details/7968664,只做收藏用。
由于项目需要根据日志来跟踪了解系统信息,方便查看传输数据以及异...
MapReduce提供了表连接操作其中包括Map端join、Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效...
多表关联和单表关联类似,它也是通过对原始数据进行一定的处理,从其中挖掘出关心的信息。如下
输入的是两个文件,一个代表工厂表,包含工厂名列和地址编号列;另一个代表地址表,包含地址名列和地址编号列。
package com.
import java.io.IOE
import java.net.InetSocketA
import java.nio...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)您所访问的页面未找到-牛车网蝴蝶孔令辉纯木(30711)性能如何?请大家评说一下。
来源网站: &
发表时间: 11:21
【您可能关心这些器材】
&&&&& 偶空闲时逛文体器材超市看到一块蝴蝶孔令辉纯木(30711也就是孔五木)底板,开价700元,打8折后560元。因其品相较好,本人也是孔迷,欲购之。偶用拇指和中指捏住拍边在头上敲了敲,声音清晰又不长不短(咚-咚-咚的声音),和我使用的oc较相似。但不知其性能如何,只知是蝴蝶公司仿照令辉原来使用的p500制作的,且是小球时代的底板。请使用过的朋友评说一下孔五木的性能如何,顺便说说孔五木如何搭配套胶。谢谢!
[此贴子已经被作者于 11:41:31编辑过]
二百多元的东西,居然卖560 ?
这拍现在一般评价不好,是属于过时(小球时期)的产品。
请问2楼——蝴蝶孔令辉纯木(30711也就是孔五木)底板只要二百多元?我只查到孔令辉纯木(中式直拍)价格是400元,横板(30711)价格究竟是多少?请大家告知。谢谢!
实在太黑了,居然要那么多!是以前未改40mm时的小板面还是改了40mm后的大板面?总之,要的确实是太贵了,孔芳碳在专卖店打折后700多就能下来,还算是贵的。孔五木还500多,没有道理!是好板,但是打起来会累人的那种,缺少一击必杀的威力!
我在2000年前买的孔五木.当时是500+.现在的孔五木是210元可以拿到的.这个板是个不错的弧圈板.板偏软了一些借力的不适合用这块板.我七年没打球了.现在又复出打球了还是用这块小球板.拉冲下旋这样的球很稳定.一打一个准.中远台发力也很容易打透.个人感觉就是了.看你自己发力好不好.
谢谢6楼的答复。在好奇和冲动的驱使下我以550元买下了横板孔五木(30711),可能是心里没谱,看到楼主的评说,心里就一个子——“烧”。偶可能以两块板的价格买了一块板了。
汗 价格实在是黑 孔木大概就两三百块& 比较均衡的板
只适合打被动球,主动反而会输
550我晕。和我当年的成本一样了。不过我现在准备换拍了。。。换尼塔古的。
都快赶上孔芳碳啦……楼主太性急了!这板最大的特点就是——软!!!
It costs less than 300.
Don't buy it from that shop.I recommend using tension rubber to compensate for its softness.
I used Yasaka New Era (42-44) + Zap (36-38).
The configuration is good enough in speed and control.
你遇到奸商了!
【您可能还喜欢这些帖子】
声明:此文内容来自互联网,版权归原网站,爱乒乓网作为搜索引擎仅展示其快照,并非原始内容。若发现内容有所不妥,请尽快联系爱乒乓网撤掉本文。

我要回帖

更多关于 炉石传说配置 的文章

 

随机推荐