本文的目的是介绍php和Java之间的差异的详细情况,特别关注php与java区别的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解php和Java之间的差异的机会,同
本文的目的是介绍php和Java之间的差异的详细情况,特别关注php与java区别的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解php和Java之间的差异的机会,同时也不会遗漏关于.net和Java之间的字符串编码、Akka Scala和Java之间的差异、ArrayList容量增长中Java 6和Java 7之间的差异、C ++和Java之间的低延迟IPC的知识。
本文目录一览:- php和Java之间的差异(php与java区别)
- .net和Java之间的字符串编码
- Akka Scala和Java之间的差异
- ArrayList容量增长中Java 6和Java 7之间的差异
- C ++和Java之间的低延迟IPC
php和Java之间的差异(php与java区别)
目前市场上的电子商务软件基本上可以分为两个阵营,即,php阵营和Java阵营。但是对于未在电子商务期间的用户来说,通常只看自己的外貌,但很难看到他们的实际差别。事实上,php+mysql的价值不局限于电子商务软件,php+mysql开发的软件整体上不值得java开发的软件。为什么php+mysql电子业务不是钱吗?首先要了解php和Java之间的差异。
- 系统技术结构比较
分层是有效组织系统的方法。分寸思想在电脑领域很重要。在良好的层次思维指导下,可以实现“高我的家和低结合”和个别问题的分离。它很容易分配控制、扩张和自愿。php简单的分布式2层或3层体系结构结构。虽然可以,Java在这方面可以实现多层网络体系结构。mvc设计模式的应用可以使电子商务软件更加高效合理的系统。落后的技术结构是php编制的电子商务软件由于天生不足而得到的软件无法弥补。该系统是Java(java)所制作的电子商务系统和扩张性的差距越来越大。PHP的电子商务因小家庭的japer无法与Java一样的大企业竞争。
- 数据库存取比较
php可以编辑连接到很多数据库的含量。切换自己的外围含量,间接访问数据库。在更改用户使用的数据基础时,为了适应这一种类,可以很容易修正。但是php提供的数据库对比不同。例如,oracle、mysql、sql2000.php在其它数据库访问另一个数据库时不使用数据库访问代码。
- 安全性比较
在java面前,php已经失去了很多优势。Code安全性特别显著。php开发程序可以很容易得到代码修改。Java开发程序不能看到完整的原始代码,只能看到一些编辑的文件。种类,因此安全性更高。除系统成员的优势之外,php和java的安全性方面也存在很多。如果你在安全性方面,php和java,这种小偷是php,这是随机变化,想要拥有什么。即使拥有想要的喜悦也是一个灿烂的。访问Java时,警察警卫员,自动申报装置,甚至闯入了很多障碍。贵重物品放在加密的金库里,只能叹息和寓言。
- 展望和扩张性
不管怎样,php适合中小型系统,Java适合大型系统。php虽然能处理好单一事件,但固执性度不适宜多重并行。为什么php不适合中型系统?
首先,php缺乏多层结构支援。大型系统负荷只能使用分散式计算。数据库、应用逻辑层和逻辑层相互分离,同层分离,形成二次元数码组。php缺乏这种支持。
接着,php提供的数据库接口并未统一。其他数据库数据库数据库数据库数据数据数据要付出很大的努力。Java没有这样的缺陷。sun java的java的java种类和ejava可以通过规模的支援,可以得到ejb/corba与许多制造企业的应用服务器可以得到结构支持。例如,专业企业的Mechant One电子交易软件系列。
如果你与将军比较php,你有独立自立的能力。Java是一个圆坚和扩张性强的布局和合作力强的人才,可以指挥天军万马,最终可以争夺中原。
.net和Java之间的字符串编码
我有一个Silverlight客户端应用程序,它将一个字符串“包括字符şăă和î”发送到Java jax-ws SOAP服务.
现在,无论我做什么,我总是在另一边“包括角色……和—. (“â”工作,但其他人没有).
我甚至在Silverlight中尝试过HttpUtility.UrlEncode(“şţă和â”),但是Java中的URLDecoder.decode(inputText,“UTF-8”)仍然给了我而不是那3个字符.
这是怎么回事? Java字符串默认情况下以UTF-8编码,对吧?而.net中的编码是Unicode(实际上是UTF-16).但是,如果我在java端使用Unicode或UTF-16进行解码,我会将所有这些特殊字符转换为?(包括在内).
任何帮助非常感谢!
[编辑]我很想看看我在Silverlight端使用的编码,或者自己指定编码.问题是,我无法弄清楚在哪里/如何做到这一点:我创建的客户端是服务参考 – >在我指定WSDL的地方添加引用,从那里,.NET为我做了一切,创建了一个Client类以及所需的事件和函数.以下是我的客户的主旨:
FooWildcardSOAPClient client = new FooWildcardSOAPClient();
client.CallFooServiceCompleted += new EventHandler<CallFooServiceCompletedEventArgs>(client_CallFooServiceCompleted);
client.CallFooServiceAsync(param1, HttpUtility.UrlEncode(inputString), args);
我浏览了自动生成的代码,但无法确定指定编码的位置.
这是Java方面:
@WebService(targetNamespace = "http://jaxwscalcul.org",
name="FooWildcardSOAP",
serviceName="FooWildcardService")
@SOAPBinding( style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LIteraL)
public class FooWildcardServiceImpl {
@WebMethod(operationName="CallFooService", action="urn:FooWildcardService")
@WebResult(name="result")
public String getoutput(
@WebParam(name="FooServiceWSDL") String param1,
@WebParam(name="inputTextOrXML") String inputText,
@WebParam(name="otherArgsstring") String[] otherArgs)
{
try {
inputText = URLDecoder.decode(inputText, "UTF-16LE");//ISO-8859-1
} catch (UnsupportedEncodingException e) {
e.printstacktrace();
}
System.out.println("\r\n\r\n"+inputText);
}
[编辑2]我使用过fiddler,我可以看到线上的内容是text / xml UTF-8,以及实际数据,如在java中没有显示的“şţă”字符,DO正确显示在电线上.
这是来自fiddler的一些糊状物:
Client:
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,ro;q=0.4,fr-FR;q=0.2,de;q=0.2
Entity:
content-type: text/xml; charset=utf-8
解决方法:
通过Luther Blissett’s answer “UTF-16 != UTF-16”:
在Java中,getBytes(“UTF-16”)是big-endian.
在C#中,Encoding.Unicode.GetBytes是little-endian.
在Java端,尝试getBytes(“UTF-16LE”).
有关详细说明,请参阅Big and little endian byte order.
Akka Scala和Java之间的差异
这两者之间是否存在重大的功能/性能差异?
@H_301_7@
谢谢@H_301_7@
解决方法
ArrayList容量增长中Java 6和Java 7之间的差异
当我们使用默认构造函数初始化ArrayList而不设置容量时,默认情况下容量设置为10.
此时,当我们向列表中添加另一个元素时,Oracle文档说“当元素添加到ArrayList时,其容量会自动增长.除了添加元素具有常量这一事实之外,未指定增长策略的详细信息摊销时间成本.“
如果我们看看Java内部,容量增长政策已经改变了它的功能.直到Java 6它是:
(1) int newCapacity = (oldCapacity * 3)/2 + 1;
从Java 7(和> 7)开始,它是:
(2) int newCapacity = oldCapacity + (oldCapacity >> 1);
但这两个数学系列略有不同.从默认值(10)开始,我们有:
(1)10,16,25,38,58,88,133,200,301,452 ……
(2)10,15,22,33,49,73,109,163,244,366 ……
我认为这对ArrayList的使用没有任何影响,但为什么他们改变了这个功能呢?有任何表现原因吗?他们发现了旧的瑕疵还是虫子?
解决方法
新代码小心避免不必要的整数溢出.即使oldCapacity * 3/2没有,oldCapacity * 3也会溢出.新行oldCapacity(oldCapacity>> 1)不会.如果它确实溢出并且变为负数,则需要额外的代码来将容量设置为Integer.MAX_VALUE(或接近它).
/** * The maximum size of array to allocate. * Some VMs reserve some header words in an array. * Attempts to allocate larger arrays may result in * OutOfMemoryError: Requested array size exceeds VM limit */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; private void grow(int minCapacity) { // overflow-conscIoUs code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size,so this is a win: elementData = Arrays.copyOf(elementData,newCapacity); } private static int hugeCapacity(int minCapacity) { if (minCapacity < 0) // overflow throw new OutOfMemoryError(); return (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE; }
bug report的详细信息:
I’ve noticed bugs in
java.util.ArrayList
,java.util.Hashtable
andjava.io.ByteArrayOutputStream
which arise when the capacities of the
data structures reach a particular threshold. More below.When the capacity of an
ArrayList
reaches(2/3)*Integer.MAX_VALUE
its
size reaches its capacity and an add or an insert operation is
invoked,the capacity is increased by only one element. Notice that
in the following excerpt fromArrayList.ensureCapacity
the new
capacity is set to(3/2) * oldCapacity + 1
unless this value would not
suffice to accommodate the required capacity in which case it is set
to the required capacity. If the current capacity is at least(2/3)*Integer.MAX_VALUE
,then(oldCapacity * 3)/2 + 1
overflows and
resolves to a negative number resulting in the new capacity being set
to the required capacity. The major consequence of this is that each
subsequent add/insert operation results in a full resize of theArrayList
causing performance to degrade significantly.06001
…
It is interesting to note that any statements about the amortized time
complexity of add/insert operations,such as the one in theArrayList
javadoc,are invalidated by the performance related bugs. One
solution to the above situations is to set the new capacity of the
backing array toInteger.MAX_VALUE
when the initial size calculation results in a negative number during a resize.
C ++和Java之间的低延迟IPC
在以下情况下,实现C ++ / Java IPC的最佳方法是什么?
-
我有两个程序需要相互通信,一个是用C ++编写的,另一个是用Java编写的。两者都在同一台计算机上运行。
-
程序相互发送消息。消息通常很短(少于几百个字节),但是大小可能为100KB或更大。
-
不需要确认消息(即不需要像HTTP这样的请求/响应模型)。例如,C 程序向Java程序发送一条消息,而Java程序可以在以后的某个时间向C 程序发送一条消息进行回复,反之亦然。
-
理想的解决方案将具有以下优势:a)非常低的延迟,b)没有安全方面的麻烦(用户不必授权打开端口等),并且c)与平台无关。
我的第一个想法是使用 套接字
-每个程序将充当另一个的服务器。套接字比其他形式的IPC的开销更大,如果我让系统自动分配端口号,我不知道服务器如何将端口号通知客户端。我也考虑过
命名管道 ,但是跨不同平台不(至少一直不支持)它们。 JNI 看起来像一个选项,但是它可以跨越流程边界吗?
有什么建议?
谢谢!
后续问题
- 如果我使用套接字,是否需要打开 两个 套接字以允许如上所述进行异步通信?
关于php和Java之间的差异和php与java区别的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net和Java之间的字符串编码、Akka Scala和Java之间的差异、ArrayList容量增长中Java 6和Java 7之间的差异、C ++和Java之间的低延迟IPC的相关知识,请在本站寻找。
本文标签: