sinA=sin2B求a²-b²=bc
亲亲,非常荣幸为您解答[开心][开心]首先将sin2B表示为2sinBcosB,化简得到:sinA=2sinBcosB,移项可得:cosB=(1/2)sin(A/B)。根据余弦定理:a²=b²+c²-2bc·cosA,将cosB代入得到:a²=b²+c²-2bc·(1/2)sin(A/B)。化简得:a²-b²=bc·sin(A/B)。因为sinA=sin2B,所以可以得到sinA=2sinBcosB,即sinA=2sinB·(1/2)sin(A/B),即sinA=sin(A/B),则A/B=180°/n(n∈N*),代入上式得:a²-b²=bc·sin180°/n。因为正弦函数的周期为360°,所以sin180°/n=sin(180°-180°/n)。由于a、b、c为三角形的三边,所以满足a<b+c,即a-b<c,代入上式得:a²-b²=c(b-c)·sin(180°-180°/n)。因此,a²-b²=bc·sin(180°-180°/n)。【摘要】
sinA=sin2B求a²-b²=bc【提问】
麻烦快一点【提问】
亲亲,非常荣幸为您解答[开心][开心]首先将sin2B表示为2sinBcosB,化简得到:sinA=2sinBcosB,移项可得:cosB=(1/2)sin(A/B)。根据余弦定理:a²=b²+c²-2bc·cosA,将cosB代入得到:a²=b²+c²-2bc·(1/2)sin(A/B)。化简得:a²-b²=bc·sin(A/B)。因为sinA=sin2B,所以可以得到sinA=2sinBcosB,即sinA=2sinB·(1/2)sin(A/B),即sinA=sin(A/B),则A/B=180°/n(n∈N*),代入上式得:a²-b²=bc·sin180°/n。因为正弦函数的周期为360°,所以sin180°/n=sin(180°-180°/n)。由于a、b、c为三角形的三边,所以满足a<b+c,即a-b<c,代入上式得:a²-b²=c(b-c)·sin(180°-180°/n)。因此,a²-b²=bc·sin(180°-180°/n)。【回答】
开心][开心]相关拓展:sin是三角函数中的一个,指的是一个角的正弦值。正弦函数的符号与坐标系中角的位置有关。在单位圆上,一个角的正弦值就是该角的对边长度除以斜边长度,即sinA=opposite/hypotenuse。sinA的取值范围为-1≤sinA≤1。在一些教科书中,sin也可以缩写为s。【回答】
阿桑奇获保释英文翻译
维基解密'朱利安阿桑格获英国法庭保释
英国一家法院今天授予维基解密创始人朱利安阿桑格保释,从检察官驳回上诉。阿桑格先生是通缉的犯强奸和去年八月在瑞典性侵犯的指控质疑。
卫报今天上午,“正义与邓肯Ouseley一个由威斯敏斯特市决定在本周早些时候发布了严格的条件阿桑格上同意”,其中包括放弃他的护照,戴着电子追踪器,并检查与当地警察站夜间。
周二英国法官授予31万美元保释出狱阿桑格释放,但不到两个小时后,上诉阿桑格公告表示,将继续被拘留至少在未来48小时,美联社报道。
阿桑格先生必须返回到全面引渡1月11日庭审。这位39岁的澳大利亚本土自首交给英国当局上周,虽然他否认对他的瑞典的性侵犯指控。
维基解密,引发了与敏感信息在伊拉克和阿富汗战争释放国际舆论哗然,最近在美国释放的秘密外交电报成千上万的过程中。
有强烈阿桑格逮捕美国的支持。纽约时报昨天报道,司法部官员的证据表明,在鼓励阿桑格PFC的亲自参与寻找。布拉德利在维基解密泄露机密信息,因此可以收取曼宁在泄漏的同谋。
但律师芽孢林德菲尔德,瑞典国家代表,向伦敦法院:“政治和阿桑格的积极性没有任何关系的话,”箴言报。她说,对Assage的指控是“可信的指控的强奸案件正在对阿桑格简单的由两个妇女,而且他应该被带到瑞典受审。”
卡琳Rosander,通信主任瑞典的检察官办公室,告诉卫报:。“这项决定是由英国检察官提出我得到它证实了这一准则今天上午的决定提出上诉的批准保释,完全是为准则问题。瑞典检察官无权在英国作出的决定。
这是完全由英国当局来处理它。“
因此,她说,瑞典将不会提出任何新的证据或论据,高等法院聆讯明天早上。 “瑞典当局没有参与这些诉讼程序。我们还没有在所有保释的看法。”
关于混乱谁呼吁阿桑格的保释领导通过分布式服务[DDoS攻击]的无名氏,一个电脑黑客松散集合发动攻击上的一个否定的(Aklagare.se)瑞典检察官网站攻击,卫报。
一个非官方的媒体发言人,匿名,格雷格Housh告诉监视器上周攻击,如拒绝服务是对维基解密阿桑格的代表战斗的有效途径。
“唯一的原因,这些拒绝服务的实际工作这么好是因为每次记者来运行,并为他们做的文章吨问:”先生Housh说,在坐下来接受采访。 “如果他们不这样做的DDoS攻击的,他们将获得一个月的文章也许对他们,如果他们对一些博客背页幸运。当他们喜欢的DDoS签证的东西,
然后我结束对纽约时报的头版,并在CNN当天了。“
监视器周二报导,一个阿桑格的保释部分是由电影制片人迈克尔摩尔,谁在一份声明中还发誓:“我的网站,我的服务器,我的域名,以及任何援助,我可以做的,让维基解密活着和繁荣付出“。
如何产生 java heap dump
JavaCore/HeapDump这两个文件可以用手工的方式生成,当我们会遇到系统变慢或无响应的情况,这时就以采用手工的方式生成JavaCore及HeapDump文件。
在Unix/Linux上,产生这两个文件的方法如下:
# ps -ef | grep java
user 4616 4582 0 17:30 pts/0 00:00:00 grep java
root 5580 1 0 Oct27 ? 00:02:27 /usr/bin/java -server -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat8090/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat8090/endorsed -classpath:/usr/local/tomcat8090/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat8090 -Dcatalina.home=/usr/local/tomcat8090 -Djava.io.tmpdir=/usr/local/tomcat8090/temp org.apache.catalina.startup.Bootstrap start
# kill -3 5580
首先,找出Java进程id ,然后再执行‘kill -3 进程号’的操作,等文件生成后再做一次同样的操作,再产生一组文件。
详情请参考:http://blog.csdn.net/newhappy2008/article/details/7592697
如何获取java heap dump
C:/Program Files/Java/jdk1.6.0_20/bin>jmap
Usage:
jmap -histo
(to connect to running process and print histogram of java object heap
jmap -dump:
(to connect to running process and dump java heap)
dump-options:
format=b binary default
file= dump heap to
Example: jmap -dump:format=b,file=heap.bin
或者,运行jconsole, 选择 MBeans -> com.sun.management -> HotSpotDiagnostic -> Operations -> dumpHeap 在参数p0中填写保存dump文件的路径,如果要使用Eclipse Memory Analyzer来分析则文件的后缀要为hprof。点击dumpHeap按钮生成dump文件。
或者在Eclipse Memory Analyzer中直接生成
如何解决java.lang.OutOfMemoryError
java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。导致OutOfMemoryError异常的常见原因有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动参数内存值设定的过小;此错误常见的错误提示:tomcat:java.lang.OutOfMemoryError: PermGen spacetomcat:java.lang.OutOfMemoryError: Java heap spaceweblogic:Root cause of ServletException java.lang.OutOfMemoryErrorresin:java.lang.OutOfMemoryErrorjava:java.lang.OutOfMemoryError解决java.lang.OutOfMemoryError的方法有如下几种:一、增加jvm的内存大小。方法有: 1)在执行某个class文件时候,可以使用java -Xmx256M aa.class来设置运行aa.class时jvm所允许占用的最大内存为256M。 2)对tomcat容器,可以在启动时对jvm设置内存限度。对tomcat,可以在catalina.bat中添加:set CATALINA_OPTS=-Xms128M -Xmx256Mset JAVA_OPTS=-Xms128M -Xmx256M或者把%CATALINA_OPTS%和%JAVA_OPTS%代替为-Xms128M -Xmx256M3)对resin容器,同样可以在启动时对jvm设置内存限度。在bin文件夹下创建一个startup.bat文件,内容如下:@echo offcall "httpd.exe" "-Xms128M" "-Xmx256M":end其中"-Xms128M"为最小内存,"-Xmx256M"为最大内存。二、 优化程序,释放垃圾。主要包括避免死循环,应该及时释放种资源:内存, 数据库的各种连接,防止一次载入太多的数据。导致java.l
如何定位:java.lang.OutOfMemoryError:GC overhead limit exceeded
Java常见的几种内存溢出及解决方法【情况一】:
java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另一个原因是程序中有死循环;
如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:
-Xms3062m
-Xmx3062m
【情况二】
java.lang.OutOfMemoryError:GCoverheadlimitexceeded
【解释】:JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。
【解决方案】:
1、查看系统是否有使用大内存的代码或死循环;
2、通过添加JVM配置,来限制使用内存:
-XX:-UseGCOverheadLimit
【情况三】:
java.lang.OutOfMemoryError:PermGenspace:这种是P区内存不够,可通过调整JVM的配置:
-XX:MaxPermSize=128m
-XXermSize=128m
【注】:
JVM的Perm区主要用于存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace,这个区域成为年老代,GC在主程序运行期间不会对年老区进行清理,默认是64M大小,当程序需要加载的对象比较多时,超过64M就会报这部分内存溢出了,需要加大内存分配,一般128m足够。
【情况四】:
java.lang.OutOfMemoryError:Directbuffermemory
调整-XX:MaxDirectMemorySize=参数,如添加JVM配置:
-XX:MaxDirectMemorySize=128m
【情况五】:
java.lang.OutOfMemoryError:unabletocreatenewnativethread
【原因】:Stack空间不足以创建额外的线程,要么是创建的线程过多,要么是Stack空间确实小了。
【解决】:由于JVM没有提供参数设置总的stack空间大小,但可以设置单个线程栈的大小;而系统的用户空间一共是3G,除了Text/Data/BSS/MemoryMapping几个段之外,Heap和Stack空间的总量有限,是此消彼长的。因此遇到这个错误,可以通过两个途径解决:1.通过-Xss启动参数减少单个线程栈大小,这样便能开更多线程(当然不能太小,太小会出现StackOverflowError);2.通过-Xms-Xmx两参数减少Heap大小,将内存让给Stack(前提是保证Heap空间够用)。
轻烃燃气的简介
轻烃燃气的原料来源 一、油气田开采过程中的伴生副产品,C4-C10的液态烃类混合物。对其叫法各地不同,有称轻质油、轻油、也有称轻石脑油、轻汽油,这部分石油付产品一般由生产单位的三产或多种经营公司负责销售。二、由湿性天然气净化厂所得伴生副产品,主要成份C5-C8的液态烃类混合物,称凝析油。三、石化厂生产的副产品“拔头油”是以戊烷为主的液态烃类混合物。扬子石化、广州石化、茂名石化等石化企业均有供应。四、炼油厂生产的碳五是以戊烷为主的液态烃类混合物。液态轻烃在我国的储量与液化石油气产量相当,作为一次能源替代液化气、柴油、电等二次能源,对优化我国能源结构,提高能源利用效率,作为天然气投入产出不经济市场的有益补充,具有重要的战略意义和现实意义。
轻烃燃气与液化气、天然气比较?
1)瓶装液化石油气与轻烃燃气的经济性比较: 按液化石油气48元/瓶(13公斤)估算,1公斤液化石油气约相当于2.1m3(5000Kcal/m3)的轻烃燃气。若一户居民一个月用一瓶液化石油气,费用为48元,同样情况使用轻烃燃气的费用约为35元左右。 (2)管道液化石油气与轻烃燃气的经济性比较: 按管道液化石油气10元/m3估算,1m3管道液化石油气约相当于4.6m3(5000Kcal/m3)的轻烃燃气,将1m3液化石油气价格折算为1 m3轻烃燃气的价格约为2.17元。由此可见,轻烃燃气较液化石油气的经济性要好。 另外,使用液化石油气存在着以下几方面的问题: 第一,国产液化石油气质量不好,残液较多,装量不足;第二,每次换瓶给使用者带来许多麻烦,尤其是楼层较高居民更加不便;第三,管道液化石油气虽避免了瓶装供应方式的诸多不便,但供气站的系统压力高,又都布置在地面上,危险性大;第四,运输、贮存和汽化液化石油气的容器均为压力容器,按规定必须定期检测;第五,防火间距要求严,在住宅小区内选址困难。
如何在自定义 Dojo widget 时避免内存泄漏
在测试过程中,我发现很多自定义 widget 在销毁时,其内部包含的子 widget 并没有被释放。并且,通过在 Firebug 的 console 中执行 dojo.byId 函数,还能引用到这些未释放的 widget 实例。这就造成了很大的内存泄漏。为了解决这个问题,笔者通过阅读代码和实验研究了 Dojo widget 的销毁过程并总结除了几条在编写自定义 widget 时需要遵循的规则。在这里把研究结果和大家分享。回页首使用Firebug Dojo 插件监控内存泄漏FireBug 是一款基于 FireFox 浏览器的开发类浏览器插件。FireBug 本身支持多种插件,我们要用到的 Dojo 插件就是 firebug 的一个插件。Dojo 插件提供了以下功能: 查看所有已注册的 widget 查看Dojo 的版本信息、Dojo 模块信息、widget 总数、connections 和 subscriptions 总数 查看详细的 connection 和 subscription 信息 在connection 和 subscription 的处理过程中设置断点 打开widget 的帮助文档我们可以通过观察 widget 总数是否有变化来判断是否存在内存泄漏(先创建自定义 widget 然后销毁,如果 widget 总数变大说明该自定义 widget 中包含的子 widget 没有释放)。回页首Widget 销毁过程分析我们在项目过程中创建的自定义 widget 大部分是继承自 dijit._Widget 和 dijit._Templated 这两个 widget 类。其中,dijit._Templated 这个类是一个 mixin 类,其保存了 attachpoints 和 attachEvents 两个数组并在自身的 destroyRendering 方法中释放了这两个数组。因此,我们不必考虑其资源释放的问题。dijit._Widget 类中虽然也没有定义 destroy 方法,但是其父类 dijit._WidgetBase 中有一系列用于销毁自身实例的方法需要我们仔细分析,具体方法见下表。表1.dijit._WidgetBase destroy 方法 方法名 描述 destroyRecursive Destroy this widget and its descendants destroy Destroy this widget, but not its descendants. destroyRendering Destroys the DOM nodes associated with this widget destroyDescendants Recursively destroy the children of this widget and their descendants. uninitialize a stub function destroyRecursive 方法分析首先来看 destroyRecursive 方法,根据 Dojo 代码中的注释我们可以看到这个方法是销毁过程的一个总的入口点。其代码如下:清单1. _WidgetBase destroyRecursive 方法 this._beingDestroyed = true; this.destroyDescendants(preserveDom); this.destroy(preserveDom); 我们可以看到,widget 在这个方法内先调用 destroyDescendants 销毁所有的子 widget, 再调用 destroy 方法销毁自身实例。destroyDescendants 方法分析让我们先考察下 destroyDescendants 这个方法都做了哪些工作。先看如下的代码:清单2. _WidgetBase destroyDescendants 方法 dojo.forEach(this.getChildren(), function(widget) { if(widget.destroyRecursive) { widget.destroyRecursive(preserveDom); } }); 看来,子 widget 能否被正确销毁的关键是 this.getChildren 这个函数能否返回所有的子 widget。从 _WidgetBase 的代码可以看到,该函数是以 Widget 的 containerNode 为 root Node,采用 dijit.findWidgets 查找并得到 widget 列表。让我们做一个实验,创建一个自定义控件:MemoryLeakTest。该控件继承自 dijit._Widget 和 dijit._Templated. 模板代码如下:清单3.MemoryLeakTest Widget Template I have attach point no attach point I am sub's sub with attachpoint js 代码中只定义两个方法:清单4 MemoryLeakTest widget 部分 js 代码 addContentPane:function() { var temp=new dijit.layout.ContentPane({id:"dcd"}); this.domNode.appendChild(temp.domNode); }, listChildren:function() { dojo.forEach(this.getChildren(), function(widget){ console.log("Widget:"+widget.get("id")); }); } 在测试页面中,我们直接调用方法 listChildren,控制台中没有任何输出。通过 firebug,我们可以跟踪的当前 widget 的 containerNode 等于 null。让我们重载下 buildRendering 方法,在该方法中给 containerNode 赋值: this.containerNode=this.domNode; 再调用 listChildren,可以看到几个子 widget 的 id 都被输出。由此,我们可以得出编写自定义 widget 时需要注意的几条规则: 给containerNode 赋值。一般是将 domNode 赋给 containerNode,在 dijit._Container 中已经有相应的动作,如有需要可以从该类继承。 如果有特殊需求,不能将 containerNode 设置为 domNode,请自行调用位于 containerNode 外部的子 widget 的 destroyRecursive 方法destroy 方法分析接下来,我们接着看 destroy 方法中都做了些什么。清单5. _WidgetBase destroy 方法 this._beingDestroyed = true; this.uninitialize(); var d = dojo, dfe = d.forEach, dun = d.unsubscribe; dfe(this._connects, function(array) { dfe(array, d.disconnect); }); dfe(this._subscribes, function(handle) { dun(handle); }); // destroy widgets created as part of template, etc. dfe(this._supportingWidgets || [], function(w) { if(w.destroyRecursive) { w.destroyRecursive(); }else if(w.destroy) { w.destroy(); } }); this.destroyRendering(preserveDom); dijit.registry.remove(this.id); this._destroyed = true; 我们可以看到,在清单 5 的第二行调用了 dijit._WidgetBase 的 uninitialize 方法。这是一个虚方法。在这个方法里面,我们应该将创建和使用 Widget 过程中收集的资源释放掉(例如,取消属性对象的引用,清空数组类型属性中的对象等)。清单5 的第 6 行至第 11 行完成了两样工作:对 _connects 数组中的每个元素执行 dojo.disconnect 和对数组 _subcribes 中的每个元素执行 dojo.unsubscribe 方法。从 _WidgetBase 的其他部分代码,我们可以得知这两个数组中分别存储的是 dojo.connect(在 this.connect 方法中)和 dojo.subscribe(在 this.subscribe 方法中)得到的句柄。由此,我们可以得出编写自定义 widget 时需要注意的另外几条规则: 重载uninitialize 方法释放资源。 采用this.connect 方法代替 dojo.connect。 采用this.subscribe 方法代替 dojo.subscribe。回页首总结从上面的分析可以看出,在自定义 Dojo widget 时,我们遵循下面的几条规则可以很轻松的避免不必要的内存泄漏。 给containerNode 赋值。一般是将 domNode 赋给 containerNode,在 dijit._Container 中已经有相应的动作,如有需要可以从该类继承。 如果有特殊需求,不能将 containerNode 设置为 domNode,请自行调用位于 containerNode 外部的子 widget 的 destroyRecursive 方法。 重载uninitialize 方法释放资源。 采用this.connect 方法代替 dojo.connect。 采用this.subscribe 方法代替 dojo.subscribe。参考资料 学习 参考GetFireBug.com: FireBug 官方网站。参考DojoFirebugExtension Reference Guide: FireBug Dojo 插件的详细说明和参考手册。参考Dojo Tool kit: 获取 Dojo 源代码和帮助文档。developerWorks Web development 专区:通过专门关于 Web 技术的文章和教程,扩展您在网站开发方面的技能。developerWorks Ajax 资源中心:这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。developerWorks Web 2.0 资源中心,这是有关 Web 2.0 相关信息的一站式中心,包括大量 Web 2.0 技术文章、教程、下载和相关技术资源。您还可以通过 Web 2.0 新手入门 栏目,迅速了解 Web 2.0 的相关概念。查看HTML5 专题,了解更多和 HTML5 相关的知识和动向。讨论加入developerWorks 中文社区。
Dojo学习1 dojo是什么?
它能够使我们更容易编写javascript,更快速的制作大型的界面,在一定程度上使我们更容易开发动态的用户界面。dojo的最根本的东西是“Dojo Base”,一个很小的单独的库文件,这个文件包括了Ajax,事件句柄,页面特效,blazing fast CSS queries,语言工具等等。除此之外,还有一些高质量的工具,比如拖动工具,Ajax表单工具,I/O工具,Json-RPC,国际化(i18n),还有回调方法等。DOJO的核心层面是窗口系统--dijit,他能够迅速是开发和重用用户接口组件。如果你熟悉HTML和CSS,dijit允许你很快的开发出能够重用的客户端组件。dojo使用HTML的扩展属性来声明和配置一个窗口组件。(比如<div dojoType=dijit.Tree store=JsonItemStore ....</div)。在页面上放置一个时间选取组件就像你给<input添加一个属性一样简单。通过升级标准的HTML,而不是开发一个新的标记语言,DOJO使用户接口开发起来更容易。它非常的进步,有挑战性,并且它能够是你的用户界面看上去很漂亮,很好用,而且运行的迅速。Dojo已经被小心的编写了,从单元测试到数据绑定系统,它的2D画图API使dojo的界面非常统一。dojo内在的一个特性就是支持国际化和本地化,非常用意体现在所有的窗口组件上,向下支持统一的键盘事件,并且能够控制所有组件在一个CSS文件中。Dijit项目的核心就是追求高效率和高统一行。因此,一些边缘的特性被放到了dojox模块儿中了。dojox主要是2D画图一类的。dojox中包括一个Readme文件,你能够从中了解一些东西。许多质量测试和文档级的需求已经包含到核心中了。