最近几天因为工作生病而厌倦了我的大脑,我决定尝试挖掘一些旧代码.我可以找到一些我写过的古代Atari ST的二进制版本,但我找不到任何来源.我确实设法挖掘了一个旧的ModeX库,这个库是我在很久以前从传奇的旧x2ftp站点的存档中编写的.
http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos
爆炸从过去:-)
; Actually Sticks Us Into ModeX - With 240 Scanlines Per Page
; Set The Variable LSCAN To The Virtual Scanline Length You Want
; Trashes AX, CX, DX, DS, SI
; Shouldn't Matter Though As This Should Be The First Thing You Call!
Set_X_240 PROC
Call Set_Graph ; Set Mode 13h
mov dx, Seq_Port
mov ax, 00604h ; Index 4 (Memory Mode Reg.) In AL
; Bit 3 = Chain 4
out dx, ax ; …Run Code Online (Sandbox Code Playgroud) 我正在尝试消除一个缓慢的数据库,这是我支持的分布式应用程序的一些性能问题的原因.我已经对服务器本身的应用程序和性能监视的各个方面进行了本地分析,这使我怀疑数据库至少是造成性能不佳的部分原因.
目前我正在使用JBoss作为后端(使用Hibernate/JDBC层连接到数据库),但我只能访问某些代码.
我找到了Elvyx,但是这个项目似乎在2008年被放弃了.是否有更新的JDBC Profiler可用 - 在分布式应用程序中分析数据库的当前'事实上'标准是什么?
或者,任何人都可以建议更好/替代方法吗?
我有一个方法,在名为"PlaceParser"的类中,extends"ModelParser":
protected Place parseModel(JSONObject element) ...
Run Code Online (Sandbox Code Playgroud)
Place是Model的子类.是否应将@Override注释添加到上面的代码中?由于该方法具有不同的返回类型,这仍然算作覆盖具有相同名称和参数的基类方法/返回类型是否改变了"签名"?
"ModelParser"方法看起来像"ModelT"也扩展了"Model":
protected abstract ModelT parseModel(JSONObject element)
throws JSONException;
Run Code Online (Sandbox Code Playgroud)
更新@Jon Skeet:
基类声明如下:
public abstract class ModelParser<ModelT extends Model> {
Run Code Online (Sandbox Code Playgroud)
我以前没见过类的<ModelT extends Model>样式声明.
阅读2010年的这篇(Spring 3)文章,它讨论了如何使用扩展来提供一种包含可选路径段的便捷方法:
@RequestMapping("/houses/[preview/][small/]{id}")
public String handlePreview(@PathVariable long id, @PathVariable("preview/") boolean preview, @PathVariable("small/") boolean small) {
return "view";
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以实现一些请求映射来实现相同的效果:
@RequestMapping(value="/houses/preview/{id}")
...
@RequestMapping(value="/houses/{id}")
...
~~~ snip ~~~
Run Code Online (Sandbox Code Playgroud)
但是根据可能的排列数量,它似乎是一个非常冗长的选择.
Spring的任何后续版本(3之后)是否提供了这样的功能?或者,是否有任何机制将请求URL的部分链接起来以提供更大的响应方法签名?
更新
有关共享路径变量和请求参数的问题的答案表明了一种方法:
@RequestMapping(method=RequestMethod.GET, value={"/campaigns","/campaigns/{id}"})
@ResponseBody
public String getCampaignDetails(
@PathVariable("id") String id)
{
~~~ snip ~~~
Run Code Online (Sandbox Code Playgroud)
但路径变量不能设置为null.刚刚/campaigns将返回400响应.
通常,我的Tomcat实例启动没有任何问题.但是,当我向"预览"Web应用程序添加新过滤器时,该应用程序无法启动:
09-Jun-2011 12:23:49 org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
09-Jun-2011 12:23:49 org.apache.catalina.core.StandardContext start
SEVERE: Context [] startup failed due to previous errors
09-Jun-2011 12:23:49 com.polopoly.application.StandardApplication destroy
INFO: Application 'preview' destroy started.
Run Code Online (Sandbox Code Playgroud)
Tomcat本身就很好 - 其他战争/网络应用程序部署并正常启动.
由于日志中没有堆栈跟踪,我不确定问题是什么.我无法将远程调试器连接到应用程序,因为它不再运行.我可以在应用程序或过滤器的init处放置断点吗?
在Tomcat中启动Web应用程序期间调试问题的最佳方法/首选方法是什么?
我看到以下JavaScript代码并且它让我感到困惑,因为从逻辑上0永远不会是4或5:
if (0 === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (0 === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
Run Code Online (Sandbox Code Playgroud)
我将假设此代码有效.那么程序员是否设法以某种方式重新定义0或者0不知何故不是指数字0?任何人都可以解释这个代码,为什么有人这样编码?这种技术的优点是什么?(除了让像我这样迷惑的人!)
为了完整起见,此片段来自YouTube Center Grease Monkey插件.其URL是:
https://github.com/YePpHa/YouTubeCenter/wiki/Developer-Version
而完整的方法是:
function initListeners() {
if (support.CustomEvent) {
window.addEventListener("ytc-content-call", eventListener, false);
} else {
window.addEventListener("message", messageListener, false);
}
window.addEventListener("unload", windowUnload, false);
if (0 === 4) { // Safari
safari.self.addEventListener("message", safariMessageListener, false);
} else if (0 === 5) { // Opera
opera.extension.onmessage = operaMessageListener;
}
}
Run Code Online (Sandbox Code Playgroud) 我一定在这里做了些蠢事.但我似乎无法弄清楚为什么这个简单的代码不起作用.InputMismatchException有效,但ArithmeticException永远不会被捕获.
import java.util.InputMismatchException;
import java.util.Scanner;
public class SubChap02_DivisionByZero {
public static double quotient(double num, double denum) throws ArithmeticException {
return num / denum;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double num, denum, result;
boolean continueLoop = true;
do {
try {
System.out.printf("Please enter the numerator: ");
num = scanner.nextFloat();
System.out.printf("Please enter the denumerator: ");
denum = scanner.nextFloat();
result = quotient(num, denum);
continueLoop = false;
System.out.printf("THIS: %.2f/%.2f is %.2f\n", num, denum, result);
scanner.close();
} catch …Run Code Online (Sandbox Code Playgroud) 我正在使用(学习......)Struts 1.3来构建一个MVC Web应用程序.为清楚起见,我想包含多个<message-resources>元素 - 将消息分离为应用程序特定模块的文件.
官方的Apache文档说明:
您可以
<message-resources>为您的webapp 定义一个或多个元素; 模块可以定义自己的资源包.可以在应用程序中同时使用不同的包,"key"属性用于指定所需的包.
但是,当我包含多个元素时,JSP会导致异常,指出密钥缺少消息:
SEVERE: Servlet.service() for servlet jsp threw exception javax.servlet.jsp.JspException: Missing message for key "label.username" in bundle "(default bundle)" for locale en_GB
at org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:233)
at org.apache.jsp.index_jsp._jspx_meth_bean_005fmessage_005f0(index_jsp.java:197)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:107) ~~~snip~~~
Run Code Online (Sandbox Code Playgroud)
这是XML:
<struts-config>
~~~snip~~~
<message-resources parameter="resources.DefaultResource"/>
<message-resources parameter="resources.Registration"/>
</struts-config>
Run Code Online (Sandbox Code Playgroud)
如果没有第二个"注册"资源,则不会抛出异常."label.username"仅存在于"DefaultResource"中.
非常感谢.
使用VisualVM,我观察JBoss服务器上的以下堆使用情况:

使用以下(相关)JVM选项启动服务器:
-Xrs -Xms3072m -Xmx3072m -XX:MaxPermSize=512m -XX:+UseParallelOldGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
Run Code Online (Sandbox Code Playgroud)
我们目前还启用了GC日志记录:
-XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:log\gc.log
Run Code Online (Sandbox Code Playgroud)
基本上我对观察到的模式很满意,因为看起来我们没有任何内存泄漏(模式在几天内重复).
不过我想知道是否有优化空间?
首先,我不明白为什么当堆使用量达到2GB左右时垃圾收集已经开始了?它看起来像是因为它可以提供3GB,因为它可以在以后启动?
更多我会对有关观察到的堆使用模式和使用的JVM选项的提示感兴趣:
观察到的模式是否允许我得出有关使用的GC策略(UseParallelOldGC)的结论?我认为这个策略是正确的,或者考虑到观察到的堆使用情况,我应该尝试使用另一个策略吗?
我可以优化GC过程,以便使用完整的堆大小(3GB)吗?
现在它似乎从未使用过3GB的全部,我应该将Xms/Xmx降低到2.5GB吗?
我缺少任何明显的GC优化吗?像调整-XX:NewSize或-XX:NewRatio?
想到的任何其他提示?
谢谢!
在编写了一些基本代码来计算a中的字符数之后String,我发现了一个例子,其中UTF-8编码输出从5"字符"创建了21个字节String.
这是输出:
Run Code Online (Sandbox Code Playgroud)String ==¦ ??????? ¦== Code units 7 UTF8 Bytes 21 8859 Bytes 7 Characters 5
我知道Java的内部表示char是2个字节,并且有些字符可能需要两个Unicode代码单元才能显示它们.
由于UTF-8每个字符不使用超过4个字节,对于5个字符,如何byte[]长度超过20个String?
这是来源:
import java.io.UnsupportedEncodingException;
public class StringTest {
public static void main(String[] args) {
displayStringInfo("???????");
}
public static void displayStringInfo(String s) {
System.out.println("Code units " + s.length());
try {
System.out.println("UTF8 Bytes " + s.getBytes("UTF-8").length);
} catch (UnsupportedEncodingException e) { // not handled }
System.out.println("Characters " + characterLength(s));
}
public static int characterLength(String …Run Code Online (Sandbox Code Playgroud) 我已经玩UITableView了一段时间,在敲击键盘和滚动问题时,我决定通过使用它来解决它,UITableViewController并在键盘出现时利用自动滚动.不幸的是,这对我来说并不存在,我无法弄清楚为什么,我已经尝试了很多东西并且放弃去问社区.
这是我到目前为止:
UIViewController处理UIView(MyView.xib)(这也是根视图)UITableViewController处理a
(MyTable.xib)UITableViewXIBUITableViewCell被拖入(MyTable.xib)并与之并排放置UITableView.这UITableViewCell没有自定义类.还有一个连接到UITableViewController课堂的插座.UITextField坐在UITableViewCellUITableViewController类UITableView到文件的所有者这就是它在MyTable.xib中的IB外观
UITableViewUITableViewCell
UITextField因此,当我在UITableViewController中生成我的表行时,我将前5行作为常规单元格出列,而对于最后一行,我返回我的出口"myCell"(UITableViewCell).这是具有UITextField的那个.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
if (indexPath.row == 5) return myCell;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text …Run Code Online (Sandbox Code Playgroud) 我正在用Java编写加密程序,我需要将输入字符串更改为某个值.当我到达Z并且需要将其更改为A而不是ASCII代码中的下一个字符时,我遇到了问题.我如何将它从Z改为A?我知道我还需要更改它被加密的值,但我在如何将ASCII中的Z更改为A时画了一个空白.
考虑以下基本类:
public class ConstructorExample {
public ConstructorExample(){
System.out.println("Constructor called.");
}
public static void main(String[] args) {
ConstructorExample ce = new ConstructorExample();
}
}
Run Code Online (Sandbox Code Playgroud)
执行上面的代码时,"构造函数被调用".只打印一次.显然,在调用main方法时会显式调用构造函数.
但是,当JVM加载类并最初启动应用程序时,为什么不调用构造函数?
java ×10
jboss ×2
68000 ×1
annotations ×1
ascii ×1
assembly ×1
constructor ×1
debugging ×1
distributed ×1
encoding ×1
encryption ×1
hibernate ×1
inheritance ×1
iphone ×1
javascript ×1
jdbc ×1
jvm ×1
legacy-code ×1
overloading ×1
overriding ×1
performance ×1
rest ×1
servlets ×1
spring ×1
spring-mvc ×1
struts-1 ×1
tomcat ×1
uitableview ×1
unicode ×1
utf-8 ×1