草庐IT

php - 如何找出与 Web 服务器建立连接的端口(分配的 nat)

基本上我可以访问Apache服务器,我想制作一个NAT穿越应用程序。我曾考虑过在两侧随机尝试端口,但很快就放弃了这个想法。我无法在服务器上运行我的软件,也无法打开任何端口,但可以更改Apache设置。现在我的问题是:Web服务器是否有任何方法可以检测从哪个点发送传入连接?我知道网络服务器必须将它保存在内存中,以便将生成的html发送到正确的ip和端口,否则NAT系统会破坏http。但是我如何获得端口?我在考虑一些日志记录选项,但我找不到任何有用的东西。或者也许是一个php函数... 最佳答案 试试$_SERVER['REMOTE_P

java - 需要检查 MaxPermSize : Unrecognized VM option

如何从命令行检查maxpermsize?获取错误无法识别的VM选项。版本如下D:\apps\Tomcat\bin>java-XX:+PrintFlagsFinalUnrecognizedVMoption'+PrintFlagsFinal'CouldnotcreatetheJavavirtualmachine.D:\apps\Tomcat\bin>java-versionjavaversion"1.6.0_20"Java(TM)SERuntimeEnvironment(build1.6.0_20-b02)JavaHotSpot(TM)ClientVM(build16.3-b01,mixe

java - java "VM thread"是做什么的?

我使用jstack来输出线程信息。还有一个线程:“虚拟机线程”prio=10tid=0x0878b400nid=0x760a可运行这个线程是用来做什么的?它占用50%的CPU使用率和大部分CPU时间 最佳答案 VM线程定义here作为:ThisthreadwaitsforoperationstoappearthatrequiretheJVMtoreachasafe-point.Thereasontheseoperationshavetohappenonaseparatethreadisbecausetheyallrequirethe

用于聊天应用程序的 Java nat 遍历

我正在尝试为我的网络类(class)创建一个Java聊天应用程序。截至目前,我一直在尝试连接到不同路由器后面的某个人。我现在拥有我的项目的方式是我有一个客户端程序和一个服务器程序。客户端程序首先登录到服务器程序,服务器程序将他们的IP和端口记录在数据库中,然后服务器返回他们的好友列表以及他们的IP和端口。然后客户端关闭与服务器的连接,并尝试使用服务器发回的信息连接到另一个客户端。到目前为止,我的程序只能连接到服务器并获取friend的IP和端口,但是当我使用这些值连接到其他客户端时,我无法连接。socket=newSocket();socket.setReuseAddress(true

java - Java Atomics 是否只需要相对于 VM 的原子性

我查看了AtomicInteger类(找到here)的Java源代码,以了解实现JVM需要哪些原子原语。我注意到他们使用未记录的UnsafeAPI来实现他们的原子整数操作,他们使用的唯一两个原语似乎是compareandswap和compareandset操作。并且Unsafe类将这些指令实现为本地方法,这让我相信他们正在使用在一般情况下执行这些原始操作的本地指令。然而,并非每个处理器(尽管大多数现代处理器都有)都有一个原生支持这些原语的指令集。现在,即使没有native处理器支持,这些原语也可以由VM以保证与其他VM线程的原子性的方式实现,但不一定与其他native线程。那么java

java - 使用依赖于硬件的 VM 参数(重新)启动 Java 应用程序的正确方法?

编辑我不想使用JavaWebStart我有一个Java应用程序,我想使用不同的VM参数运行它,具体取决于启动它的系统所具有的内存量。例如,如果机器有1GB或更少的内存,如果它有2GB,我想传递“-Xmx200m”和“-Xmx400m”,如果它有8GB,我想传递“-Xmx800m”(这些只是示例).有没有可移植的方法来做到这一点?我试过第一个微型Java应用程序(因此可移植)确定可用内存量,然后启动一个新的Java应用程序,但我认为这不是很干净。截至目前,我已经编写了Bashshell脚本,这些脚本根据配置使用正确的参数调用Java应用程序,但它仅适用于OSX上的Linux。解决这个问题

Java VM 无法识别 -XX :G1YoungGenSize?

我在JDK1.7.0中使用G1垃圾收集器,但VM无法识别G1YoungGenSize选项。具体来说,当我运行时:java-XX:+UnlockExperimentalVMOptions-XX:+UseG1GC-XX:G1YoungGenSize=512m...我收到以下错误:UnrecognizedVMoption'G1YoungGenSize=512m'Error:CouldnotcreatetheJavaVirtualMachine.Error:Afatalexceptionhasoccurred.Programwillexit.我也尝试过在G1YoungGenSize之前加上一个

java - Visual VM 中的 RMI TCP Accept、Attach Listener 和 Signal Dispatcher 是什么?

我正在使用VisualVM分析一个程序。我的程序运行了一段时间,最后使用XChart弹出了一些图。显示结果。图表显示后,我注意到VisualVM中有一些Activity线程“RMITCPAccept”、“AttachListener”和“SignalDispatcher”。这些线程是什么?我假设它们仅与VisualVM有关。我说的对吗?? 最佳答案 这篇文章粗略地回答了https://stackoverflow.com/a/7698906/573057如你所想;Attach、Signal和RMITCPAccept用于通过jConso

Java HotSpot(TM) 64 位服务器 VM 警告、CentOS、SmartGit、SmartSvn

在运行SmartGit提供的shell脚本时,JavaHotSpot(TM)64-BitServerVMwarning:Youhaveloadedlibrary/home/User/.smartgit/6/jna-tmp/com/sun/jna/linux-i386/libjnidispatch.sowhichmighthavedisabledstackguard.TheVMwilltrytofixthestackguardnow.It'shighlyrecommendedthatyoufixthelibrarywith'execstack-c',orlinkitwith'-znoex

java - 哪些 VM 或 GC 支持 JNI 固定?

GetArrayElements函数族被记录为复制数组或将它们固定到位(并且这样做可以防止压缩垃圾收集器移动它们)。它被记录为比GetPrimitiveArrayCritical更安全、限制更少的替代方案.但是,我想知道哪些VM和/或垃圾收集器(如果有的话)实际固定数组而不是复制它们。 最佳答案 较旧的IBMJVM已固定(1.4及更早版本-即:不是当前的IBMJ9JVM),但从那时起,它们就没有了。一般来说,JVM不喜欢固定,因为它确实会扰乱复制垃圾收集器,而这正是当今大多数生产JVM所做的事情。我不是100%最新的(即:最新的Ja