当前位置:首页 » 操作系统 » jls算法

jls算法

发布时间: 2022-05-18 09:40:36

❶ jdk 7.0比jdk6.0有什么改进

JDK7.0和JDK6.0有什么区别?jdk7是模块化程序,模块间的依赖性变小了.jdk的好多功能间有相互依赖性,导致一个配置不对,好多不能用.举例来说:假设你正使用LoggingAPI(java.util.logging)),Logging需要NIO和JMX,JMX需要JavaBeans,JNDI,RMI和CORBA,JNDI需要java.applet.Applet而且JavaBeans依赖AWT.JDK7新特性:JSR203:JDK中会的IOAPI(“NIO.2”)访问文件系统与之前的JDK中通过java.io.File访问文件的方式不同,JDK7将通过java.nio.file包中的类完成。JDK7会使用java.nio.file.Path类来操作任何文件系统中的文件。(这里说的任何文件系统指的是可以使用任何文件存储方式的文件系统)示例:Java7之前Filefile=newFile(“some_file”);使用Java7Pathpath=Paths.get(“some_file”);在File类中加入了新的方法toPath(),可以方便的转换File到PathPathpath=newFile(“some_file”).toPath();Socket通道绑定和配置在JDK7中面向通道的网络编程也得以更新!JDK7中可以直接绑定通道的socket和直接操作socket属性。JDK7提供了平台socket属性和指定实现的socket属性。JDK7加入了一个新的字节通道类,是面向网络通道编程模块中的又一个新的超接口。利用它可以方便的绑定通道socket,并且方便设置和获取socket的属性。MulticastChannel接口方便创建IP协议多播。多播实现直接绑定到本地的多播设备。灵活的异步I/O可以通过真正的异步I/O,在不同的线程中运行数以万计的流操作!JKD7提供了对文件和socket的异步操作。一些JDK7中的新通道:AsynchronousFileChannel:异步文件通道可以完成对文件的异步读写操作。AsynchronouseSocketChannel:Socket中的一个简单异步通道,方法是异步的并且支持超时。:异步的:基于数据包的异步socketJSR292:Java平台中的动态编程语言DaVinciMachine项目(JSR292)的主旨是扩展JVM支持除Java以外的其它编程语言,尤其是对动态编程语言的支持。所支持的语言必须和Java一样不收到歧视并共同存在。JSR334:Java语言的一些改进OpenJDK项目的创造(JSR334)的主旨是对Java语言进行一些小的改进来提高每天的Java开发人员的工作。这些改进包括:Switch语句允许使用String类型支持二进制常量和数字常量中可以使用下划线使用一个catch语言来处理多种异常类型对通用类型实例的创建提供类型推理Try-with-resources语句来自动关闭资源JSR119:Java编译器APIJSR199是在JDK6中加入的,主要用来提供调用Java编译器的API。除了提供javac的命令行工具,JSR199提供Java编译器到程序交互的能力。Java编译器API要达到三个目标:对编译器和其它工具的调用对结构化的编译信息进行访问对文件输入输出定制化处理的能力JSR206:JavaXML处理的API(JAXP)JSR206即JavaAPIforXMLProcessing(JAXP),是Java处理XML文档的一个与实现无关,灵活的API。JAXP1.3的主要特性包括:DOM3内建通过XMLSchema进行文档校验的处理器对XMLSchema中的数据类型的实现,在javax.xml.datatype包中。XSLTC,最快的转换器,也是XSLT处理中的默认引擎。提供对XInclude的实现。这将会方便我们使用文本和其它已有的XML来创建新的文档,这样可以对文档片段进行重用。JDK7中会包含JAXP1.3,这个是JAXP的最新实现。绑定技术(JAXB)JSR222即JavaArchitectureforXMLBinding(JAXB)。JAXB的目的是便于Java程序进行Java类到XML文档的映射。JAXB2的主要特性:支持全部的W3CXMLSchema特性。(JAXB1.0说明了对于W3CXMLSchema中某些特性的不支持)支持绑定Java到XML文档,通过添加javax.xml.bind.annotation包来控制绑定。大量减少了对于schema衍生出来的类。通过JAXP1.3的校验API来提供额外的校验能力。JDK7中将包括JAXB2.2JSR224:基于XML的Web服务API(JAX-WS)JSR224即JavaAPIforXML-basedWebServices(JAX-WS),是一个基于Annotation标注的编程模型,主要针对WebService应用和客户端开发。JAX-WS2的主要特性包括:对JAXB2.1API的支持(JSR222)对WebServicesAddressing1.0的支持EndpointReference(EPR)的API:创建(BindingProvider.getEndpointReference(),Endpoint.getEndpointReference(),MessageContext.getEndpointReference())事务处理(使用JAXB2.1绑定W3CEPR到W3CEndpointReference类,使用JAXBMarshall/类)提供友好的API来启用和停止某些特性,例如MTOM特性和Addressing特性JDK7将包含JAX-WS2.2可插拔的Annotation处理APIJSR269即PluggableAnnotation-ProcessingAPI从JDK5开始,Annotation标注就成了强大的机制用来标注我们的类、属性和方法。通常Annotation标注是在创建阶段或者运行阶段进行处理的,并获取语义结果。JSR269主要用来定义一套API,允许通过可插拔的API来进行标注处理器的创建。规范包括一部分的API用来对Java编程语言进行构建,还有就对标注处理器声明和控制运行的部分。有了程序中的Annotation标注,就需要有标注处理器框架来反射程序的结构。Annotation处理器会指定他们处理的标注并且的处理器可以合作运行。标注处理器和程序结构的API可以在构建阶段访问。小的改进java.util.Objects提供了一套9个静态方法。其中两个方法用来检测当前对象是null还是非null。两个方法用来提供生成toString()字符串同时支持null对象。两个用来处理hash的方法。两个方法用来处理equals。最后一个compare方法用来进行比较。SwingJLayer组件JXLayer是一个组件装饰器,提供了用来装饰多个组合组件的方式,并且可以捕获所有鼠标、键盘和FocusEvent的事件,并针对所有的XLayer子组件。这个组件只会对publicswing的api起作用,对全局设置没有作用,例如对EventQueue或者RepaintManager。(除了这些,Swing还将在JDK7中提供JXDatePicker和CSS方式样式)并发和集合APIJSR166,并发和集合API提供了灵活的异步处理,并发HashMap,传输队列和轻量级的fork/join框架以及本地线程方式的伪随机数生成器。类加载器体系结构类加载器已经升级到了可以在无等级类加载器拓扑中避免死锁。JDK7中包含了一个对于多线程自定义类加载器的增强实现,名字为具有并行能力的类加载器。使用平行能力的类加载器加载class,会同步到类加载器和类名。Locale类的改进JavaLocale避免由于小的变化导致数据丢失。除此,Locale应该提供的特性,例如IETFBCP47和UTR35(CLDR/LDML)。分离用户Locale和用户接口LocaleJDK7分离了UI语言的locale和格式化locale,这个已经在Vista之后的windows系统中实现了。严格的类文件检测通过JavaSE6的规范,version51(SE7)的类文件和之后的版本必须通过类型检测来检验。对于老的推理验证VM不可以宕掉Elliptic-CurveCryptography(ECC)椭圆曲线加密从JDK7开始,Java提供对标准的ECC算法的灵活实现(基于椭圆曲线的公钥加密算法)Swing中的Nimbus外观Nimbus是JDS(JavaDesktopSystem)中的新外观。这个也是Solaris11的GTK主题Java2D中的XRenderPipelineJDK7中加入了基于X11XRender扩展的Java2D图形管道。这将提供的对于当前先进的GPUs访问的功能。TLS1.2TLS(TransportLayerSecurity)是一个用在Internet上的数据传输安全协议,用来避免监听、引诱和消息伪造。TLS的主要目的是提供两个应用间通信的隐私和数据完整。TLS是RFC5246标准,在JDK7中提供1.2JDBC4.0/4.1JDBC4.1特性只在JDK7或者更高版本中存在。JDBC4.1只是对JDBC4.0进行较小的改动。关于一些JDBC4.0/4.1的特性:数据源—Derby包括了对于javax.sql.DataSource的新的实现JDBC驱动自动加载—应用不必在通过Class.forName()方法来加载数据库驱动了。取而代之的是DriverManager会根据应用请求连接的情况,自动查找到合适的JDBC驱动。包装—这是JDBC4.0中的新的概念,主要是通过这种机制可以让应用获取的厂商提供的标准JDBC对象实现,例如Connections,Statements和ResultSets。Statement事件—连接池可以监听Statement的关闭和错误时间。addStatementEventListener和removeStatementEventListener被加入到了javax.sql.PooledConnectionJDK7提供了JDBC4.1全部的支持透明窗体和异形窗体为了6u10版本的图形处理,JDK提供了透明效果的支持(简单透明和像素透明)并且提供了对于异形窗体的支持(可以将窗体设置成任意形状),轻重混合并且增强了AWT安全警告。透明效果和异形窗体是通过com.sun.awt.AWTUtilities类实现的。Unicode6.0Unicode6.0提供了诸如2.088字符集、对已经存在字符集的属性改进、格式化改进以及新的属性和数据文件。JDK7已经更新到对Unicode6.0的支持。要来关闭URLClassLoader的方法对JMX代理和MBeans的改进通过URLClassLoader,应用可以通过URL搜索路径来加载类和资源。JKD7提供了close()新方法来帮助URLClassLoader清理资源。这个改进来至于JRockit,可以方便连接平台。MBean服务器可以通过防火墙提供一套MBeans,这些暴露了VM中的一些内部操作的信息新的垃圾回收器JDK7提供了新的垃圾回收器,针对目前的CMS垃圾回收器,这将会让垃圾回收器有更少的停顿时间和更高的语言效果。改进的JSRJSR901:JavaLanguageSpecification(JLS)Java语言计划JSR901包括了从第一版Java规范到现在为止的所有的变化、说明和补充。Java语言通过JLS规范。对于JLS的改变通过JSR901进行管理JDK7将会包括最新的JSR901JSR924:JVM平台规范JSR924目的是维护Java虚拟机规范的变化,其中第二版是为了J2SE1.5的。JavaSEAPIJavaSEAPIs保持着对例行维护和小范围改进的加入计划的记录延期到JDK8或者之后的规范JSR294:Java语言和虚拟机对模块编程技术的支持—当前JSR主要的目的是提供在编译期和运行期的模块编程支持JSR308:对于Java类型的Annotation注释—这将是对于当前注释符号系统的扩展,将允许我们在类型中出现注释符号。JSR296:Swing应用框架—主旨是消除Swing编程中的模板代码并且提供Swing程序更加简单的结构。模块化—提供一个明确的、简单的、低级别的模块系统,主要目的是将JDK模块化。JSRTBD:Lambda项目—Lambda表达式(通俗的也称为“闭包“)和对Java编程语言的保护方法JSRTBD:对于集合支持的语言—常量表达式对于lists、sets和maps的迭代以及通过索引符号对lists和maps的访问。SwingJDatePicker组件—添加SwingLabsJXDatePicker组件到平台。

❷ ASP.NET程序员常见面试题有什么

很多用这个.

1. 问:怎样用 Win95 的记事本 (Notepad) 来编辑 Java源程序?

答:记得存档时扩展名要加上".java",文件类型改成:“所有的文件(*.*)”。

2. 问:到底 Java 是如何传递参数的?是by value或by reference?

答:All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。

3. 问:String这个类型的class为何定义成final?

答: 主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。

4. 问:finalizers和C++ 的 destructors有何差异?

答:Java内部具有“内存使用回收” 的机制, 虽然它也提供了类似 (C++ 的) destructors的 finalize(),每个对象都可以使用这个方法 method,但必须冒着破坏原先回收机制的危险。所以建议尽量避免使用finalize(),不妨考虑多使用 null 及 dispose() 来释出资源会好一些。

5. 问:继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢?

答:记住每当您定义了一个 class的constructor,除非您一开始就去call 这个constructor,否则 Java 会自动引入superclass原先不含参数的 constructor, 如果superclass的 constructor都是有参数的,那么问题中的错误提示便出现了。 解决的方法很简单, 找一找 API文件,加上正确的参数就得了。

6. 问:怎样让char类型的东西转换成int类型?

答:

char c = 'A';

int i = c;

//反过来只要作强制类型转换就行了

c = (char) I;

7. 问:我的applet原先好好的, 一放到web server就会有问题,为什么?

答:一般来说,从以下方向试试:

确定class文件的格式没错——已经编译过,也没有损坏的情形;

确定所有用到的class文件放到web server上,少一个都不行;

确定所有的文件名和class名称一致,特别检查大小写有无差错;

如果程序中用到package,web server上的目录就要当心了。譬如您在class中宣告了一个叫COM.foo.util的package,那么web server的applet codebase目录底下就非得有 COM/foo/util这个子目录不可。(注意目录名称也有大小写之分);

web server上的文件档案应该事先设定好。(尤其是search,read和execute权限)

8. 问:怎样在 Applet中用某个图形涂满整个背景?

答:在背景建立 Panel 或 Canvas, 然后用图形填满它。

9. 问:怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?

答:首先在Applet的init() 方法中建立Frame instance, 然后将Menus, Menubar都加上去即可。 (setMenuBar() 是 Frame下的方法)或者,找到Applet上层的Frame后依法炮制。

Container parent = getParent();

while (! (parent instanceof Frame) )

parent = parent.getParent();

Frame theFrame = (Frame) parent;

注意:第二个方法在Mac或某些browsers上并不可行。

如果您使用的是JDK 1.1,也可以考虑使用popup menu,这样就不必理会Frame的问题了。

10. 怎样比较两个类型为String的字符串?

答:在两个对象之间使用 "==",会将“两个对象是否有同一reference”的结果传回。也就是说, 这等同于“两个对象是否拥有同一地址 (address)”,或者“两个对象物件是否为同一对象”。如果您的意思是判断两个字符串的内容是否相同,那么应该使用以下的方法才对:

if (s1.equals(s2) )

or if (s1.equalsIgnoreCase(s2) )

or if (s1.startsWith(s2) )

or if (s1.endsWith(s2) )

or if (s1.regionMatches(s1_offset, s2, s2_offset, length) )

or if (s1.compareTo(s2) <0)

11. 怎样将浮点数(float)相加 ? Float 好像没有办法?

答:我猜想您的程式大概写成这样:

Float One;

Float Two;

Float Hard = One + Two;

请注意 float 和 Float 是不同的,前者是 Java 基本类型之一, 而后者却是class。您应该将源代码改为:

float One;

float Two;

float Hard = One + Two;



Float One = new Float(1.0);

Float Two = new Float(2.0);

Float Hard = new Float(One.floatValue() + Two.floatValue());

❸ 89S51单片机详细介绍

89S51 单片机

MCS-51 单片机是美国INTE 公司于1980 年推出的产品,典型产品有 80 31(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51 的5 倍,实际使用方面已经被市场淘汰)和8751 等通用产品,一直到现在, MCS-5 1 内核系列兼容的单片机仍是应用
的主流产品(比如目前流行的89S51、已经停产的89C51 等),各高校及专业学校的培训教材仍与MCS-51 单片机作为代表进行理论基础学习。

有些文献甚至也将8051 泛指MCS-51 系列单片机,8051 是早期的最典型的代表作,由于MCS-51 单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51 内核实际上已经成为一个8 位单片机的标准。

其他的公司的51 单片机产品都是和MCS-51 内核兼容的产品而以。同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL 的89C51(已经停产)、89S51, PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51 指的是ATMEL公司的 AT 89C51 单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写 1000 次)存储器取带了原来的 ROM(一次性写入),AT89C51 的性能相对于8051 已经算是非常优越的了。

不过在市场化方面,89C51 受到了PIC 单片机阵营的挑战,89C51 最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP 功能等新功能才能更好延续MCS-51 的传奇。89S51就是在这样的背景下取代89C51 的,现在,89S51 目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel 目前公司已经停产AT89C51,将用AT89S51 代替。89S51 在
工艺上进行了改进,89S51 采用 0.35 新工艺,成本降低,而且将功能提升,增 加了竞争力。89SXX 可以像下兼容89CXX 等51 系列芯片。市场上见到的89C51 实际都是Atmel 前期生产的巨量库存而以。如果市场需要,Atmel当然也可以再恢复生产AT89C51。

AT89S51/LS51单片机是低功耗的、具有4KB在线课编程Flash存储器的单片机。它与通用80C51系列单片机的指令系统和引脚兼容。片内的Flash可允许在线重新编程,也可使用非易失性存储器编程。他将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能性价比的微控制器。

AT89S51/LS51具有如下特性:

--片内程序存储器含有4KB的Flash存储器,允许在线编程,檫写周期可达1000次;

--片内数据存储器内含128字节的RAM;

--I/O口具有32根可编程I/O线;

--具有两个16位I/O线;

--中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;

--串行口是一个全双工的串行通信口;

--具有两个数据指针DPTR0和DPTR1;

--低功耗节电模式有节电模式和掉电模式;

--包含3级程序锁定位;

--AT89S51的电源电压为4.0-5.5V,AT89LS51的电源电压为2.7-4.0V;

-振荡器频率0-33MHz(AT89S51),0-16MHz(AT89LS51);

--具有片内看门狗定时器;

--灵活的在线片内编程模式(字节和页编程模式);

--具有断电标志模式POF;

89S51 相对于89C51 增加的新功能包括:
-- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51 更低!

-- ISP 在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作
环境中剥离。是一个强大易用的功能。
-- 最高工作频率为33MHz,大家都知道89C51 的极限工作频率是24M,就是说S51 具有更
高工作频率,从而具有了更快的计算速度。
-- 具有双工UART 串行通道。
-- 内部集成看门狗计时器,不再需要像89C51 那样外接看门狗计时器单元电路。
-- 双数据指示器。
-- 电源关闭标识。
-- 全新的加密算法,这使得对于89S51 的解密变为不可能,程序的保密性大大加强,这样
就可以有效的保护知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51 全部字系列产品。比如8051、89C51 等等早期MCS-51 兼
容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051 还
是89C51 还是MCS-51 等等),在89S51 上一样可以照常运行,这就是所谓的向下兼容。

引脚排列及功能

AT89S51/LS具有PDIP,TQFP和PLCC三种封装形式。PDIP封装的引脚排列如图所示。

引脚功能如下:

--P0口——8位、开漏极、双向I/O口。

P0口可作为通用I/O口,但必须外接上拉电阻;作为输出口,每个引脚课吸收8个TTL的灌电流。作为输入时,首先应将引脚置1。

P0口也可用作外部程序存储器和数据存储器是的低八位地址/数据总线的复用线。在该模式下,P0口含有内部上拉电阻。

在Flash编程时,Po口接受代码数据;在编程校验时,P0口输出代码字节数据(需要外接上拉电阻)。

--P1口——8位、双向I/O口、内部含有行拉电阻。

P1可作为普通I/O口。输出缓冲器可驱动4个TTL负载;用作输入时,先交引脚置1,有片内上拉电阻将其抬到高电平。P1口的引脚可由外部负载拉倒低电平,通过上拉电阻提供拉电流。

在Flash并行

编程和校验时,P1口可输入低字节地址。

在串行编程和校验时,P1.0/MOSI,P1.6/OSI和P1.7/SCK分别是串行数据输入、输出和移位脉冲引脚。

I/O具有内部拉电阻的8位双向I/O。

P2口用作输出口时,可驱动四个TTL负载;用作输入口时,先将引脚置1,由内部上拉电阻将其提高到高电平。若负载为低电平,则通过内部上拉电阻向外输出电流。

CPU访问外部16位地址的存储器时,P2口提供高8位的地址。当CPU用8位地址寻址外部存储器时,P2口为P2特殊功能寄存器内容。

在FLASH并行编程和校检时,P2口可输入高字节地址和某些控制信号。

--P3口——局有内部上拉电阻8位双向口。

P3口左忽出口时,输出缓冲器可吸收4个TTL的灌电流;用作输入口时,手先将引脚置1,有内部上拉电阻抬为高电平。若外部负载是低电平,则通过内部上拉电阻向外输出电流。

在与FLASH并行编程和校检时,P3口可输入某些控制信号。

P3口除了通用I/O功能外,还有替代功能,如下表所示:

引脚
符号
说明

P3.0
RXD
串行口输入

P3.1
TXD
串行口输出

P3.2
INT0
外部中断0

P3.3
INT1
外部中断0

P3.4
T0
T0定时器的外部计数输入

P3.5
T1
T1定时器的外部计数输入

P3.6
WR
外部数据存储器的写选通

P3.7
RD
外部数据存储器的读选通

--ALE/PROG——地址锁存允许/编程脉冲信号端。

在CPU访问外部程序存储器或者外部数据存储器时,ALE提供一个地址锁存信号,将低8位地址锁存在骗外地址锁存中。

在与FLASH并行编程时,该引脚也是编程负脉冲的输入端。

在正常操作状态下,该引脚端口输出额定频率的脉冲,其频率为额定频率的1/6,可做外部定时或者其它引发信号。应注意,CPU每次访问外部数据存储器时,都要丢失一个ALE脉冲。

如果需要,则通过将SFR(8EH)的第0位置1,可禁止ALE操作,但在使用MOVC或者MOVX指令时候,ALE仍有效。也就是说,ALE的禁止位不影响对外部存储器的访问。

--PSEN——外部程序存储器读选通信号,低电平有效。

当AT89S51/LS51执行来自外部程序存储器指令代码时候,PSEN每个机器周期两次有效。在访问外部数据存储器时候,则无效

--EA/Vpp——外部程序存储器允许。

当EA接地时,CPU只执行外程序存储器的程序;当EA接Vcc时,CPU首先执行片内程序存储器中的程序(0000H ——0FFFH),然后自动转向执行片外程序存储器中的程序(1000H——FFFFH).

如果程序锁定位LB1别编程(P),那么EA值将在复位时有片内锁存。

在与FLASH并行编程时,该引脚可介入12V的编程电压Vpp.

--XTAL1和XTAL2——XTAL1是片内振荡器反相放大器和时钟发生器的输入端,XTAL2是片内振荡器反相放大器的输出端。

--RST——复位输入段,高电平有效。

在振荡器稳定有效运行状态下,RST端维持两个机器周期的高电平,便可复位器件,当看门狗定时器溢出输出端时,该引脚将输出长达98个震荡周期的高电平。

--Vcc—电源电压输入端。

--GND—电源地。

特殊功能存储器

AT89S51/LS51的特殊功能存储器

序号
地址
符号
复位值
说明

1
80H
P0
FFH
P0口锁存器

2
81H
SP
07H
堆栈指针

3
82H
DP0L
00H
数据指针DPTR0低字节

4
83H
DPoH
00H
数据指针DPTR0高字节

5
84H
DP1L
00H
数据指针DPTR1低字节

6
85H
DP1H
00H
数据指针DPTR1高字节

7
87H
PCON
0XXX0000B
定时器控制计时器

9
89H
TMOD
00H
定时器模式寄存器

10
8AH
TL0
00H
定时器0低字节

11
8BH
TL1
00H
定时器1低字节

12
8CH
TH0
00H
定时器0高字节

13
8DH
TH1
00H
定时器1高字节

14
8EH
AUXR
XXX00XX0B
辅助寄存器

15
90H
P1
FFH
P1口锁存器

16
98H
SCON
00H
串行口控制寄存器

17
99H
SBUF
XXXXXXXXB
串行口数据缓冲器

18
0AOH
P2
FFH
P2口锁存器

19
OA2H
AUXR1
XXXX XXX0B
辅助寄存器1

20
0A6H
WDTRST
XXXX XXXXB
WDT复位寄存器

21
0A8H
IE
0XX00000B
中断允许寄存器

22
0BOH
P3
FFH
P3口锁存器

23
0B8H
IP
XX00000B
中断优先寄存器

24
0D0H
PSW
00H
程序状态字

25
0E0H
ACC
OOH
累加器

26
0FOH
B
00H
B寄存器

电源断电标志POF

POF是PCON.4位。电源上电时,POF置1,POF位可用软件置位与清零。复位不影响POF位值。

终端和中断寄存器

AT89S51/LS51含有6个中断源,5个中断矢量(中断服务程序入口地址),如图:

图中定时器0和定时器1的中断标志TF0和TF1是在每个机器周期的S5P2时刻设置(当溢出时)的,然后在下个机器周期由片内线路查询。

没个中断源都可单独地通过设定或清除特殊功能存储器IE中某一位来允许/禁止,IE内含一个中断总控制位EA,可允许/禁止所有中断。

IE各位功能如下:

IE 地址=A8H 复位值=0XX0 0000B

可以寻址位

MSB LSB

位地址
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H

位符号
EA


ES
ET1
EX1
ET0
EX0

每位置1表示允许中断,每位清0表示禁止中断。

其中:

EA 中断总控制位。EA=0,禁止所有中断;EA=1,每个中断是否允许还取决于其它各中断的控制位。

ES 串行口串行中断允许位。

ET1 定时器1中断允许位。

EX1 外部中断1中断允许位。

ET0 定时器0中断允许位。

EX0 外部中断0中断允许位。

❹ java se8的新特性有哪些

java se8新特性如下:

Java Programming Language
1、lambda expressions,一个新的语言特性,它可以将功能作为方法的参数or代码作为数据,它使你表达单一方法接口的实例更加简洁。
2、对已经有方法名的方法提供一个更加可读的lambda expressions为方法的引用。
3、默认方法使新的功能添加到库的接口,确保与旧版本的接口编写的代码的二进制兼容
4、重复注解提供不止一次应用同样的注解类型
5、类型注解提供应用注解的能力,任何一个类型的使用,不仅在声明上使用。用于一个可插拔式的系统,此功能提高你代码的类型检查。
6、提高类型的推断
7、方法参数的反射

Collections

1、新的java.util.stream包,提供了stream api支持流元素上的功能性操作。stream api集成到collections api中,使用批量操作,如串行or并行 map-rece 转换。
2、使用key collisions改进HashMap的性能
compact profiles
包含java SE平台预定义的子集和使不需要整个平台被部署和运行在小型设备中的应用

security

1、客户端默认启用TLS1.2
2、新的AccessController.doPrivileged,用代码断言它的privileges的子集,没有防止全栈遍历时检查其他权限
3、更强的基于密码的加密算法
4、SSL/TLS SNI扩展在JSSE服务器中支持
5、支持AEAD算法:SunJCE提供增强的支持AES / GCM / nopadding密码的实现以及GCM算法参数,SunJSSE提供基于密码套件的AEAD模式增强
6、keystore增强,包含新的keystore类型java.security.DomainLoadStoreParameter,和新的命令行选项-importpassword
7、SHA-224 Message Digests
8、NSA Suite B加密支持
9、更好的支持High Entropy 随机数生成
10、新的java.security.cert.PKIXRevocationChecker类为配置撤销X.509证书
11、win下64-bit PKCS11
12、新的rcache 类型在Kerberos 5 Replay Caching
13、支持Kerberos 5协议转换和约束代理
14、默认禁用Kerberos 5弱的加密
15、未绑定SASL为GSS-API/Kerberos 5机制
16、多主机名下SASL服务
17、在Mac OS X上JNI桥接到native JGSS
18、在sunjsse提供更强的实力,EDH键的支持
19、在JSSE支持服务器端密码套件个性设置

JavaFX
1、新Modena theme实现
2、新SwingNode类容许开发者嵌套Swing内容到javaFX应用中
3、新UI Controls 包含DatePicker 和TreeTableView
4、javafx.print包为JavaFX提供公共printing API
5、三维图形特性,目前包含3D shapes、camera、lights、subscene、material、picking和antialiasing
6、WebView类提供的新功能和改进,支持更多关于HTML5的特性,Web Scokets,Web Workers和Web Fonts
7、增强文本的支持
8、支持Hi-DPI 显示
9、css样式类变成公共API
10、新的ScheledService类允许自动重启服务
11、ARM平台可用JavaFX

tools
1、jjs命令调用Nashorn引擎
2、java命令允许JavaFX应用
3、java man page已经更新
4、jdeps命令行工具提供分析类文件
5、Java Management Extensions (JMX) 提供远程诊断命令
6、jarsiger工具可选,从TSA请求签名时间抽
7、javac tool
7.1、-parameters选项存储正式的参数名和反射API检索正式参数的名称
7.2、JLS 15.21相等操作的类型规则通过javac命令正确的执行
7.3、javac工具现在支持检查javadoc注释的内容,该特性通过-Xdoclint选项
7.4、javac工具现在提供生成native header的能力。移除javah工具,通过javac的-h选项使用
8、javadoc tool
8.1、javadoc工具支持新DocTree API
8.2、javadoc工具支持新的javadoc 访问API,允许在java 应用直接调用javadoc 工具,没有执行新的进程
8.3、javadoc工具现在支持检查javadoc注释的内容,该特性通过-Xdoclint选项

Internationalization
1、unicode增强,支持unicode6.2.0
2、采用unicode CLDR数据和java.locale.providers 系统属性
3、新的Calendar和Locale APIs
4、安装一个自定义的资源包作为一个扩展的能力

Deployment
1、对sandbox applet和 java web start app,URLPermission现在是用来允许连接到服务器从它们启动完成后。SocketPermission不再授权
2、在所有安全级别,在主要jar文件的jar文件的manifest中必须给定权限属性

Date-Time Package
一个新的软件包,提供更加全面的日期-时间模型

Scripting
Nashorn js 引擎

Pack200
1、Pack200支持常量池条目和由JSR 292引入了新的字节码
2、JDK8支持由JSR-292, JSR-308 and JSR-335指定类文件的变化

IO and NIO
1、基于Solaris在Solaris事件端口机制实现新的SelectorProvider。使用系统属性java.nio.channels.spi.Selector设置的值sun.nio.ch.EventPortSelectorProvder运行
2、减少<JDK_HOME>/jre/lib/charsets.jar文件中数量
3、提高java.lang.String(byte[], *)构造器和java.lang.String.getBytes()方法的性能

java.lang and java.util.Pack ages
1、并发的数组排序
2、标准的编码和解码Base64
3、无符号运算的支持

JDBC
1、移除JDBC-ODBC桥
2、JDBC4.2引入新的功能

Java DB
1、JDK8 包含 Java DB 10.10

Networking
1、添加java.net.URLPermission类
2、在java.net.HttpURLConnection中,如果安装安全管理,请求要求打开一个连接请求的权限

Concurrency
1、在java.util.concurrent包中新增类和接口
2、java.util.concurrent.ConcurrentHashMap类添加方法支持聚合操作,基于新的流设施和lambda expressions
3、java.util.concurrent.atomic包中添加类支持可扩展可更新的变量
4、 java.util.concurrent.ForkJoinPool类中添加方法支持通用池
5、 java.util.concurrent.locks.StampedLock类已经添加使用3种模式控制读/写访问的基于能力的锁

Java XML – JAXP

HotSpot
1、硬件特性增加了AES,UseAES和UseAESIntrinsics标签在打开基于硬件AES可用(Inter 硬件),硬件必须是2010或更新Westmere硬件,如:打开硬件AES,使用下面标记
-XX:+UseAES -XX:+UseAESIntrinsics
关闭硬件AES:
-XX:-UseAES -XX:-UseAESIntrinsics
2、移除PermGen
3、通过为方法调用引入字节码指令支持默认方法

❺ JDK1.8版本对于CMS算法有哪些改进

JDK7.0和JDK6.0有什么区别?

jdk7是模块化程序,模块间的依赖性变小了.jdk的好多功能间有相互依赖性,导致一个配置不对,好多不能用.举例来说:假设你正使用Logging API(java.util.logging)),Logging需要NIO和JMX,JMX需要JavaBeans, JNDI, RMI和CORBA,JNDI需要java.applet.Applet而且JavaBeans依赖AWT.

JDK7 新特性:

JSR203:JDK中会更多的IO API(“NIO.2”)访问文件系统与之前的JDK中通过java.io.File访问文件的方式不同,JDK7将通过java.nio.file包中的类完成。JDK7会使用java.nio.file.Path类来操作任何文件系统中的文件。(这里说的任何文件系统指的是可以使用任何文件存储方式的文件系统)

示例:

Java7之前

File file = new File(“some_file”);

使用Java7

Path path = Paths.get(“some_file”);

在File类中加入了新的方法toPath(),可以方便的转换File到Path

Path path = new File(“some_file”).toPath();
Socket通道绑定和配置在JDK7中面向通道的网络编程也得以更新!JDK7中可以直接绑定通道的socket和直接操作socket属性。JDK7提供了平台socket属性和指定实现的socket属性。
JDK7加入了一个新的字节通道类,SeekableByteChannel
NetworkChannel是面向网络通道编程模块中的又一个新的超接口。利用它可以方便的绑定通道socket,并且方便设置和获取socket的属性。
MulticastChannel接口方便创建IP协议多播。多播实现直接绑定到本地的多播设备。
灵活的异步I/O可以通过真正的异步I/O,在不同的线程中运行数以万计的流操作!JKD7提供了对文件和socket的异步操作。一些JDK7中的新通道:
AsynchronousFileChannel:异步文件通道可以完成对文件的异步读写操作。
AsynchronouseSocketChannel:Socket中的一个简单异步通道,方法是异步的并且支持超时。
:异步的ServerSocket
AsynchronousDatagramChannel:基于数据包的异步socket
JSR292:Java平台中的动态编程语言Da Vinci Machine项目(JSR292)的主旨是扩展JVM支持除Java以外的其它编程语言,尤其是对动态编程语言的支持。所支持的语言必须和Java一样不收到歧视并共同存在。JSR334:Java语言的一些改进OpenJDK项目的创造(JSR334)的主旨是对Java语言进行一些小的改进来提高每天的Java开发人员的工作。这些改进包括:
Switch语句允许使用String类型
支持二进制常量和数字常量中可以使用下划线
使用一个catch语言来处理多种异常类型
对通用类型实例的创建提供类型推理
Try-with-resources语句来自动关闭资源
JSR119:Java编译器APIJSR199是在JDK6中加入的,主要用来提供调用Java编译器的API。除了提供javac的命令行工具,JSR199提供Java编译器到程序交互的能力。Java编译器API要达到三个目标:
对编译器和其它工具的调用
对结构化的编译信息进行访问
对文件输入输出定制化处理的能力
JSR206:Java XML处理的API (JAXP)JSR206即Java API for XML Processing(JAXP),是Java处理XML文档的一个与实现无关,灵活的API。

JAXP1.3的主要特性包括:
DOM3
内建通过XML Schema进行文档校验的处理器
对XML Schema中的数据类型的实现,在javax.xml.datatype包中。
XSLTC,最快的转换器,也是XSLT处理中的默认引擎。
提供对XInclude的实现。这将会方便我们使用文本和其它已有的XML来创建新的文档,这样可以对文档片段进行重用。
JDK7中会包含JAXP1.3,这个是JAXP的最新实现。
绑定技术(JAXB)JSR222即Java Architecture for XML Binding(JAXB)。JAXB的目的是便于Java程序进行Java类到XML文档的映射。

JAXB2的主要特性:
支持全部的W3C XML Schema特性。(JAXB1.0说明了对于W3C XML Schema中某些特性的不支持)
支持绑定Java到XML文档,通过添加javax.xml.bind.annotation包来控制绑定。
大量减少了对于schema衍生出来的类。
通过JAXP1.3的校验API来提供额外的校验能力。
JDK7中将包括JAXB2.2
JSR224:基于XML的Web服务API(JAX-WS)JSR224即Java API for XML-based Web Services(JAX-WS),是一个基于Annotation标注的编程模型,主要针对Web Service应用和客户端开发。

JAX-WS2的主要特性包括:
对JAXB2.1 API的支持(JSR222)
对Web Services Addressing 1.0的支持
EndpointReference(EPR)的API:创建(BindingProvider.getEndpointReference(),Endpoint.getEndpointReference(),MessageContext.getEndpointReference())

事务处理(使用JAXB2.1绑定W3C EPR到W3CEndpointReference类,使用JAXB Marshall/Unmarshall W3CendpointReference类)
提供友好的API来启用和停止某些特性,例如MTOM特性和Addressing特性
JDK7将包含JAX-WS2.2
可插拔的Annotation处理APIJSR269即Pluggable Annotation-Processing API
从JDK5开始,Annotation标注就成了强大的机制用来标注我们的类、属性和方法。通常Annotation标注是在创建阶段或者运行阶段进行处理的,并获取语义结果。JSR269主要用来定义一套API,允许通过可插拔的API来进行标注处理器的创建。
规范包括一部分的API用来对Java编程语言进行构建,还有就对标注处理器声明和控制运行的部分。
有了程序中的Annotation标注,就需要有标注处理器框架来反射程序的结构。
Annotation处理器会指定他们处理的标注并且更多的处理器可以合作运行。
标注处理器和程序结构的API可以在构建阶段访问。
小的改进java.util.Objects提供了一套9个静态方法。其中两个方法用来检测当前对象是null还是非null。两个方法用来提供生成toString()字符串同时支持null对象。两个用来处理hash的方法。两个方法用来处理equals。最后一个compare方法用来进行比较。Swing JLayer组件JXLayer是一个组件装饰器,提供了用来装饰多个组合组件的方式,并且可以捕获所有鼠标、键盘和FocusEvent的事件,并针对所有的XLayer子组件。这个组件只会对public swing的api起作用,对全局设置没有作用,例如对EventQueue或者RepaintManager。(除了这些,Swing还将在JDK7中提供JXDatePicker和CSS方式样式)并发和集合APIJSR166,并发和集合API提供了灵活的异步处理,并发HashMap,传输队列和轻量级的fork/join框架以及本地线程方式的伪随机数生成器。类加载器体系结构类加载器已经升级到了可以在无等级类加载器拓扑中避免死锁。JDK7中包含了一个对于多线程自定义类加载器的增强实现,名字为具有并行能力的类加载器。使用平行能力的类加载器加载class,会同步到类加载器和类名。Locale类的改进Java Locale避免由于小的变化导致数据丢失。除此,Locale应该提供更多的特性,例如IETF BCP 47和UTR 35(CLDR/LDML)。分离用户Locale和用户接口LocaleJDK7分离了UI语言的locale和格式化locale,这个已经在Vista之后的windows系统中实现了。严格的类文件检测通过JavaSE6的规范,version51(SE7)的类文件和之后的版本必须通过类型检测来检验。对于老的推理验证VM不可以宕掉Elliptic-Curve

Cryptography (ECC)椭圆曲线加密
从JDK7开始,Java提供对标准的ECC算法的灵活实现(基于椭圆曲线的公钥加密算法)Swing中的Nimbus外观Nimbus是JDS(Java Desktop System)中的新外观。这个也是Solaris11的GTK主题Java2D中的XRender PipelineJDK7中加入了基于X11 XRender扩展的Java2D图形管道。这将提供更多的对于当前先进的GPUs访问的功能。TLS1.2TLS (Transport Layer Security)是一个用在Internet上的数据传输安全协议,用来避免监听、引诱和消息伪造。TLS的主要目的是提供两个应用间通信的隐私和数据完整。TLS是RFC5246标准,在JDK7中提供1.2JDBC4.0/4.1JDBC4.1特性只在JDK7或者更高版本中存在。JDBC4.1只是对JDBC4.0进行较小的改动。关于一些JDBC4.0/4.1的特性:
数据源—Derby包括了对于javax.sql.DataSource的新的实现
JDBC驱动自动加载—应用不必在通过Class.forName()方法来加载数据库驱动了。取而代之的是DriverManager会根据应用请求连接的情况,自动查找到合适的JDBC驱动。
包装—这是JDBC4.0中的新的概念,主要是通过这种机制可以让应用获取的厂商提供的标准JDBC对象实现,例如Connections,Statements和ResultSets。
Statement事件—连接池可以监听Statement的关闭和错误时间。addStatementEventListener和removeStatementEventListener被加入到了javax.sql.PooledConnection
JDK7提供了JDBC4.1全部的支持
透明窗体和异形窗体为了6u10版本的图形处理,JDK提供了透明效果的支持(简单透明和像素透明)并且提供了对于异形窗体的支持(可以将窗体设置成任意形状),轻重混合并且增强了AWT安全警告。透明效果和异形窗体是通过com.sun.awt.AWTUtilities类实现的。Unicode6.0Unicode6.0提供了诸如2.088字符集、对已经存在字符集的属性改进、格式化改进以及新的属性和数据文件。

JDK7已经更新到对Unicode6.0的支持。
要来关闭URLClassLoader的方法

对JMX代理和MBeans的改进
通过URLClassLoader,应用可以通过URL搜索路径来加载类和资源。JKD7提供了close()新方法来帮助URLClassLoader清理资源。

这个改进来至于JRockit,可以方便连接平台。MBean服务器可以通过防火墙提供一套MBeans,这些暴露了VM中的一些内部操作的信息
新的垃圾回收器JDK7提供了新的垃圾回收器,针对目前的CMS垃圾回收器,这将会让垃圾回收器有更少的停顿时间和更高的语言效果。改进的JSRJSR901:Java Language Specification(JLS)Java语言计划
JSR901包括了从第一版Java规范到现在为止的所有的变化、说明和补充。Java语言通过JLS规范。
对于JLS的改变通过JSR901进行管理
JDK7将会包括最新的JSR901
JSR924:JVM平台规范
JSR924目的是维护Java虚拟机规范的变化,其中第二版是为了J2SE1.5的。
Java SE API
JavaSE APIs保持着对例行维护和小范围改进的加入计划的记录
延期到JDK8或者之后的规范
JSR294:Java语言和虚拟机对模块编程技术的支持—当前JSR主要的目的是提供在编译期和运行期的模块编程支持
JSR308:对于Java类型的Annotation注释—这将是对于当前注释符号系统的扩展,将允许我们在类型中出现注释符号。
JSR296:Swing应用框架—主旨是消除Swing编程中的模板代码并且提供Swing程序更加简单的结构。
模块化—提供一个明确的、简单的、低级别的模块系统,主要目的是将JDK模块化。
JSR TBD:Lambda项目—Lambda表达式(通俗的也称为“闭包“)和对Java编程语言的保护方法
JSR TBD:对于集合支持的语言—常量表达式对于lists、sets和maps的迭代以及通过索引符号对lists和maps的访问。
Swing JDatePicker组件—添加SwingLabs JXDatePicker组件到平台。

❻ 请高手破解加密代码

那上面的,说明白一点!!

❼ 字符串排序(冒泡法),无法运行成功,哪里错了怎么改(请用指针法,不要用数组)

算法没有问题,但是只用char *s="bssfjlsdjlj";定义字符串的话,此指针指向的字符串内存地址会默认为const类型,这样就没有办法进行数值修改了,象下面这样多加一个char型数组,然后让s指针指向它,就不会是const类型的了。这样就可以修改数值进行冒泡算法了。

输出结果是"bdfjjjllsss" ,应该没有问题。



#include"stdio.h"
#include"string.h"
voidmain()
{
char*s;
charTempString[]="bssfjlsdjlj";
inti,j,n;
chartemp;
s=TempString;
n=strlen(s);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(*(s+j)>*(s+j+1))
{
temp=*(s+j);
*(s+j)=*(s+j+1);
*(s+j+1)=temp;
}
}
}
printf("%s",s);
}

❽ 什么叫"母函数"

生成函数(也有叫做“母函数”的,但是我觉得母函数不太好听)是说,构造这么一个多项式函数g(x),使得x的n次方系数为f(n)。
生成函数最绝妙的是,某些生成函数可以化简为一个很简单的函数。也就是说,不一定每个生成函数都是用一长串多项式来表示的。比如,这个函数f(n)=1 (n当然是属于自然数的),它的生成函数就应该是g(x)=1+x+x^2+x^3+x^4+...(每一项都是一,即使n=0时也有x^0系数为1,所以有常数项)。再仔细一看,这就是一个有无穷多项的等比数列求和嘛。如果-1<x<1,那么g(x)就等于1/(1-x)了。在研究生成函数时,我们都假设级数收敛,因为生成函数的x没有实际意义,我们可以任意取值。于是,我们就说,f(n)=1的生成函数是g(x)=1/(1-x)。

我们举一个例子说明,一些具有实际意义的组合问题也可以用像这样简单的一个函数全部表示出来。
考虑这个问题:从二班选n个MM出来有多少种选法。学过简单的排列与组合的同学都知道,答案就是C(4,n)。也就是说。从n=0开始,问题的答案分别是1,4,6,4,1,0,0,0,...(从4个MM中选出4个以上的人来方案数当然为0喽)。那么它的生成函数g(x)就应该是g(x)=1+4x+6x^2+4x^3+x^4。这不就是……二项式展开吗?于是,g(x)=(1+x)^4。
你或许应该知道,(1+x)^k=C(k,0)x^0+C(k,1)x^1+...+C(k,k)x^k;但你或许不知道,即使k为负数和小数的时候,也有类似的结论:(1+x)^k=C(k,0)x^0+C(k,1)x^1+...+C(k,k)x^k+C(k,k+1)x^(k+1)+C(k,k+2)x^(k+2)+...(一直加到无穷;式子看着很别扭,自己写到草稿纸上吧,毕竟这里输入数学式子很麻烦)。其中,广义的组合数C(k,i)就等于k(k-1)(k-2)(k-i+1)/i!,比如C(4,6)=4*3*2*1*0*(-1)/6!=0,再比如C(-1.4,2)=(-1.4)*(-2.4)/2!=1.68。后面这个就叫做牛顿二项式定理。当k为整数时,所有i>k时的C(k,i)中分子都要“越过”0这一项,因此后面C(k,k+1),C(k,k+2)之类的都为0了,与我们的经典二项式定理结论相同;不同的是,牛顿二项式定理中的指数k可以是任意实数。

我们再举一个例子说明一些更复杂的生成函数。n=x1+x2+x3+...+xk有多少个非负整数解?这道题是学排列与组合的经典例题了。把每组解的每个数都加1,就变成n+k=x1+x2+x3+...+xk的正整数解的个数了。教材上或许会出现这么一个难听的名字叫“隔板法”:把n+k个东西排成一排,在n+k-1个空格中插入k-1个“隔板”。答案我们总是知道的,就是C(n+k-1,k-1)。它就等于C(n+k-1,n)。它关于n的生成函数是g(x)=1/(1-x)^k。这个生成函数是怎么来的呢?其实,它就是(1-x)的-k次方。把(1-x)^(-k)按照刚才的牛顿二项式展开,我们就得到了x^n的系数恰好是C(n+k-1,n),因为C(-k,n)*(-x)^n=[(-1)^n*C(n+k-1,n)]*[(-1)^n*x^n]=C(n+k-1,n)x^n。这里看晕了不要紧,后文有另一种方法可以推导出一模一样的公式。事实上,我们有一个纯组合数学的更简单的解释方法。因为我们刚才的几何级数1+x+x^2+x^3+x^4+...=1/(1-x),那么(1+x+x^2+x^3+x^4+...)^k就等于1/(1-x)^k。仔细想想k个(1+x+x^2+x^3+x^4+...)相乘是什么意思。(1+x+x^2+x^3+x^4+...)^k的展开式中,n次项的系数就是我们的答案,因为它的这个系数是由原式完全展开后k个指数加起来恰好等于n的项合并起来得到的。

现在我们引用《组合数学》上暴经典的一个例题。很多书上都会有这类题。
我们要从苹果、香蕉、橘子和梨中拿一些水果出来,要求苹果只能拿偶数个,香蕉的个数要是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个。问按这样的要求拿n个水果的方案数。
结合刚才的k个(1+x+x^2+x^3+x^4+...)相乘,我们也可以算出这个问题的生成函数。

引用内容
g(x)=(1+x^2+x^4+...)(1+x^5+x^10+..)(1+x+x^2+x^3+x^4)(1+x)
=[1/(1-x^2)]*[1/(1-x^5)]*[(1-x^5)/(1-x)]*(1+x) (前两个分别是公比为2和5的几何级数,
第三个嘛,(1+x+x^2+x^3+x^4)*(1-x)不就是1-x^5了吗)
=1/(1-x)^2 (约分,把一大半都约掉了)
=(1-x)^(-2)=C(1,0)+C(2,1)x+C(3,2)x^2+C(4,3)x^3... (参见刚才对1/(1-x)^k的展开)
=1+2x+3x^2+4x^3+5x^4+....

于是,拿n个水果有n+1种方法。我们利用生成函数,完全使用代数手段得到了答案!
如果你对1/(1-x)^k的展开还不熟悉,我们这里再介绍一个更加简单和精妙的手段来解释1/(1-x)^2=1+2x+3x^2+4x^3+5x^4+....。
1/(1-x)=1+x+x^2+x^3+x^4+...是前面说过的。我们对这个式子等号两边同时求导数。于是,1/(1-x)^2=1+2x+3x^2+4x^3+5x^4+....。一步就得到了我们所需要的东西!不断地再求导数,我们同样可以得到刚才用复杂的牛顿二项式定理得到的那个结论(自己试试吧)。生成函数还有很多其它的处理手段,比如等式两边同时乘以、除以常数(相当于等式右边每一项乘以、除以常数),等式两边同时乘以、除以一个x(相当于等式右边的系数“移一位”),以及求微分积分等。神奇的生成函数啊。
我们用两种方法得到了这样一个公式:1/(1-x)^n=1+C(n,1)x^1+C(n+1,2)x^2+C(n+2,3)x^3+...+C(n+k-1,k)x^k+...。这个公式非常有用,是把一个生成函数还原为数列的武器。而且还是核武器。

接下来我们要演示如何使用生成函数求出Fibonacci数列的通项公式。
Fibonacci数列是这样一个递推数列:f(n)=f(n-1)+f(n-2)。现在我们需要求出它的生成函数g(x)。g(x)应该是一个这样的函数:
g(x)=x+x^2+2x^3+3x^4+5x^5+8x^6+13x^7+...
等式两边同时乘以x,我们得到:
x*g(x)=x^2+x^3+2x^4+3x^5+5x^6+8x^7+...
就像我们前面说过的一样,这相当于等式右边的所有系数向右移动了一位。
现在我们把前面的式子和后面的式子相加,我们得到:
g(x)+x*g(x)=x+2x^2+3x^3+5x^4+8x^5+...
把这最后一个式子和第一个式子好好对比一下。如果第一个式子的系数往左边移动一位,然后把多余的“1”去掉,就变成了最后一个式子了。由于递推函数的性质,我们神奇地得到了:g(x)+x*g(x)=g(x)/x-1。也就是说,g(x)*x^2+g(x)*x-g(x)=-x。把左边的g(x)提出来,我们有:g(x)(x^2+x-1)=-x。于是,我们得到了g(x)=x/(1-x-x^2)。
现在的任务是要把x/(1-x-x^2)还原成通项公式。这不是我们刚才的1/(1-x)^n的形式,我们要把它变成这种形式。我们发现,1-x-x^2=[1-(1-√5)x/2]*[1-(1+√5)x/2] ((1-√5)/2和(1+√5)/2是怎么算出来的?显然它们应该是x^2-x-1=0的两个根)。那么x/(1-x-x^2)一定能表示成?/[1-(1-√5)x/2]+?/[1-(1+√5)x/2]的形式(再次抱歉,输入数学公式很麻烦,将就看吧)。这是一定可以的,因为适当的?的取值可以让两个分式通分以后分子加起来恰好为一个x。?取值应该是多少呢?假设前面一个?是c1,后面那个是c2,那么通分以后分子为c1*[1-(1+√5)x/2]+c2*[1-(1-√5)x/2],它恰好等于x。我们得到这样两个式子:常数项c1+c2=0,以及一次项-c1*(1+√5)/2-c2*(1-√5)/2=1。这两个式子足够我们解出c1和c2的准确值。你就不用解了,我用的Mathematica 5.0。解出来c1=-1/√5,c2=1/√5。你不信的话你去解吧。现在,我们把x/(1-x-x^2)变成了-(1/√5)/[1-(1-√5)x/2] + (1/√5)/[1-(1+√5)x/2]。我们已经知道了1/[1-(1-√5)x/2]的背后是以(1-√5)/2为公比的等比数列,1/[1-(1+√5)x/2]所表示的数列公比为(1+√5)/2。那么,各乘以一个常数,再相加,我们就得到了Fibonacci数列的通项公式:f(n)=-(1/√5)*[(1-√5)/2]^n + (1/√5)*[(1+√5)/2]^n。或许你会问,这么复杂的式子啊,还有根号,Fibonacci数列不都是整数吗?神奇的是,这个充满根号的式子对于任何一个自然数n得到的都是整数。熟悉用特征方程解线性递推方程的同学应该知道,以上过程实质上和找特征根求解没有区别。事实上,用上面所说的方法,我们可以求出任何一个线性齐次递推方程的通项公式。什么叫做线性齐次递推呢?就是这样的递推方程:f(n)等于多少个f(n-1)加上多少个f(n-2)加上多少个f(n-3)等等。Fibonacci数列的递推关系就是线性齐次递推关系。

我们最后看一个例子。我们介绍硬币兑换问题:我有1分、2分和5分面值的硬币。请问凑出n分钱有多少种方法。想一下刚才的水果,我们不难得到这个问题的生成函数:g(x)=(1+x+x^2+x^3+...)(1+x^2+x^4+...)(1+x^5+x^10+..)=1/[(1-x)(1-x^2)(1-x^5)]。现在,我们需要把它变成通项公式。我们的步骤同刚才的步骤完全相同。我们把(1-x)(1-x^2)(1-x^5)展开,得到1-x-x^2+x^3-x^5+x^6+x^7-x^8。我们求出-1+x+x^2-x^3+x^5-x^6-x^7+x^8=0的解,得到了以下8个解:-1,1,1,1,-(-1)^(1/5),(-1)^(2/5),-(-1)^(3/5),(-1)^(4/5)。这个不是我解出来的,我还是用的Mathematica 5.0。不是我不想解,而是我根本不会解这个8次方程。这也是为什么信息学会涉及这些东西的原因:次数稍微一高,只好交给计算机解决了。于是,(1-x)(1-x^2)(1-x^5)=(1+x)(1-x)^3(1+(-1)^(1/5) x)()()() (省略不写了)。注意那个(1-x)^3。由于等根的出现,我们不得不把(1-x)^3所包含的(1-x)和(1-x)^2因子写进一会儿的分母里,不然会导致解不出合适的c来。你可以看到很多虚数。不过没关系,这些虚数同样参与运算,就像刚才的根式一样不会影响到最后结果的有理性。然后,我们像刚才一样求出常数满足1/(1-x)(1-x^2)(1-x^5)=c1/()+c2/(1-x)+c3/(1-x)^2+c4/(1-x)^3...+c8/()。这个解太复杂了,我用Mathematica解了几分钟,打印出了起码几十KB的式子。虽然复杂,但我确实是得到了通项公式。你有兴趣的话可以尝试用Mathematica解决一下1/[(1-x)(1-x^3)] (只有1分和3分的硬币)。解c的值时可以用SolveAlways[]函数。你可以亲眼见到,一个四五行的充满虚数的式子最后总是得到正确的整数答案。

生成函数还有很多东西,推导Catalan数列啊,指数生成函数啊,之类的。我有空再说吧,已经5000多个字了。

huyichen一直在问那道题。很显然,那道题目和上面的兑换硬币有些联系。事实上,很多与它类似的题目都和生成函数有关。但那个题却没有什么可以利用生成函数的地方(或许我没想到吧)。或许每个max的值有什么方法用生成函数解出来,但整个题目是不大可能用生成函数解决的。
近来有个帖子问一道“DP天牛”题目的。那个题目也是这样,很多与它类似的题目都和DP有关,但那道题却不大可能动规。我总觉得它可以归约到装箱问题(考虑体积关系,最少要几个箱子才能把物品放完),而后者貌似属于NPC。或许我错了吧,现在没事就在研究理论的东西,很久没有想过OI题了,这方面的能力已经开始退化了。

❾ 如何java读取海量中文文本

使用Boyer-Moore算法
或者使用KMP算法
建议使用后者

KMP算法(java)
public class KMP {
/**
* @param args
*/

//计算模式串的next值
public static void getNext(String strModel, int dNext[]){
int i = 0,j = 1;
dNext[1] = 0;
while(j < strModel.length()){
while(i > 0 && strModel.charAt(i) != strModel.charAt(j))//递推
i = dNext[i];
i++;
j++;
if(j == strModel.length())
break;
if(strModel.charAt(j) == strModel.charAt(i))//得出next值
dNext[j] = dNext[i] + 1;
else
dNext[j] = i;
}
}

//利用next值查询子串
public static int getSubString(String strMain, String strModel, int dStart){
int dPos = -1;
int i = dStart;
int j = 1;
int dNext[] = new int[200];
getNext(strModel, dNext);
while(i<strMain.length()){
if(strMain.charAt(i) == strModel.charAt(j)){//当前字符匹配
if(j == (strModel.length()-1)){//查找成功
dPos = i - j + 1;
break;
}
i++;
j++;
}
else{//当前字符不匹配
if(dNext[j] == 0){
i++;
j = 1;
}
else{
j = dNext[j];
}
}
}
return dPos;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String strModel = " jlsdjflskjdm";
int[] dNext = new int[20];
getNext(strModel, dNext);
for(int i = 1; i<strModel.length(); i++)
System.out.print(dNext[i] + " ");

String strMain = " ";
System.out.println();
System.out.println(getSubString(strMain, strModel, 1));
}
}

❿ 怎么计算人力成本

人工成本=企业从业人员工资总额+社会保险费用+福利费用+教育费用+劳动保护费用+住房费用+其他人工成本

人力成本是指企业在一定的时期内,在生产、经营和提供劳务活动中,因使用劳动者而支付的所有直接费用与间接费用的总和。

人力成本构成:

直接成本:员工的直接所得,包括工资、奖金、加班费、红利、职务津贴、遣散补偿等。换句话说,直接成本就是企业以货币的形式直接发放给员工的报酬。

间接成本:企业付出但员工未必能够直接所得,包括社会保险、商业保险、住房公积;还包括为增加企业人员数量或能力而支出的招聘费用、培训费用等。

(10)jls算法扩展阅读

首先,人力成本不等于工资和奖金。比如:企业给员工支付1000元的工资,那么人力成本绝不会是这直接的1000元,还有其它的间接费用。

其次,人力成本不等于工资总额。按照劳动部1997年261号文件规定,人力成本包括工资总额、社会保险费用、福利费用、教育经费、住房费用以及其它人工成本。

再次,人力成本不等于使用成本。从人力资源的分类来看,人力成本可分为获得成本、使用成本、开发成本、离职成本,可见“使用成本”只是人力成本的一部分而已。

热点内容
格式化linux 发布:2025-01-14 18:35:14 浏览:592
如何进入安卓原生市场 发布:2025-01-14 18:22:06 浏览:557
台式电脑找不到服务器 发布:2025-01-14 18:19:58 浏览:422
androidsdk网盘 发布:2025-01-14 18:17:43 浏览:79
个别用户访问不了腾讯云服务器 发布:2025-01-14 18:03:27 浏览:276
oracle链接sqlserver 发布:2025-01-14 17:58:33 浏览:729
sql完全手册 发布:2025-01-14 17:53:03 浏览:248
幻三脚本下 发布:2025-01-14 17:20:20 浏览:910
我的世界基岩版如何创自己的服务器 发布:2025-01-14 17:15:01 浏览:329
花果算法 发布:2025-01-14 17:09:57 浏览:775