我正在使用Spring和Hibernate来开发Java中的Web应用程序.我们假设我有一张桌子.当我从该表中删除一些记录时,有时我需要重置主键字段的值.
假设我在表中有10条记录,我删除了最后5条记录.现在,当我插入新记录时,主键字段的值应该从at开始,6但它将从那里开始11.
如果我需要在MySql 中的6(maximum +1)处启动主键值,我只需要执行以下SQL语句.
alter table table_name auto_increment=1;
Run Code Online (Sandbox Code Playgroud)
这将自动重置价值auto_increment,以maximum + 1该字段的值(在概念是不正确的,但它的工作原理).
在Oracle(10g)中,我正在使用sequence主键.在从数据库中删除某些记录时,Oracle是否有办法重置sequenceto maximum + 1值?
考虑Java中的以下两段代码,
Integer x=new Integer(100);
Integer y=x;
Integer z=x;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
Run Code Online (Sandbox Code Playgroud)
在我的系统上测试时的内存使用情况:使用的内存(字节):287848
和
int a=100;
int b=a;
int c=a;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
Run Code Online (Sandbox Code Playgroud)
在我的系统上测试时的内存使用情况:使用的内存(字节):287872
和以下
Integer x=new Integer(100);
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
Run Code Online (Sandbox Code Playgroud)
和
int a=100;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
Run Code Online (Sandbox Code Playgroud)
在上述两种情况下,在我的系统上测试时内存使用情况完全相同:使用的内存(字节):287872
该声明
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
Run Code Online (Sandbox Code Playgroud)
将显示当前正在使用的总内存[可用内存总量 - 当前可用内存],(以字节为单位).
我已经通过上述方法验证了在第一种情况下,内存使用(287848)低于第二种(287872),而在其余两种情况下,它完全相同(287872).当然,显然,它应该是这样的,因为在第一种情况下,y和z包含x中保存的引用的副本,并且它们的所有(x,y和z)指向相同/共同的对象(位置)意味着第一种情况比第二种情况更好,更合适,在这两种情况的其余情况下,存在具有完全相同的内存使用情况的等效语句(287872).如果是这样的话,那么在Java中使用原始数据类型应该是无用的并且可以避免,尽管它们基本上是为了更好的内存使用和更高的CPU利用率而设计的.为什么Java中的原始数据类型存在?
有点类似于这个问题的问题已在这里发布,但它没有这样的情况.
我无法在JSP中显示图像(并且无法通过SRC访问外部Javascript/jQuery等其他内容).以下JSP页面只包含一个<img>无法显示SRC所定位图像的标记.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form action="Temp.htm" method="post">
<img src="/images/temp.jpg" alt="Not available">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
图像在/WEB-INF/jsp/images.我还试图改变图像位置,并确保给予SRC的路径的所有时间都是正确的,但事实并非如此.没有框架的应用程序也可以这样做.它完美地在那里工作.我在这里错过了什么?
我只想知道Java中的一个简单的事情.让我们考虑Java中的以下代码段.
int x=10;
String temp="x = "+x;
System.out.println(temp);
Run Code Online (Sandbox Code Playgroud)
在Java中完全有效并产生输出,x = 10作为字符串.
虽然变量x的类型为int,但它会自动转换为String类型(包装类型).Java如何做到这一点?像C++和C#一样,运算符重载在某种程度上或某处存在于Java中,尽管它已从Java中删除.这里使用哪个特定概念将x转换为字符串.我唯一想知道的事情
还有一个问题,在Java中,布尔数据类型(不是布尔值,包装类)不能转换为任何其他类型(根据我所知).为什么会这样,在某些非常特殊的情况下,将它转换为字符串或其他类型可能会有用.
让我们考虑Java中的以下简单表达式.
char c='A';
int i=c+1;
System.out.println("i = "+i);
Run Code Online (Sandbox Code Playgroud)
这在Java中完全有效,并返回66,即c + 1的字符(Unicode)的相应值.
String temp="";
temp+=c;
System.out.println("temp = "+temp);
Run Code Online (Sandbox Code Playgroud)
这在Java中太有效了,String类型变量temp自动接受char类型的c并在控制台上生成temp = A.
所有以下陈述在Java中也令人惊讶地有效!
Integer intType=new Integer(c);
System.out.println("temp = "+intType);
Double doubleType=new Double(c);
System.out.println("temp = "+doubleType);
Float floatType=new Float(c);
System.out.println("temp = "+floatType);
BigDecimal decimalType=new BigDecimal(c);
System.out.println("temp = "+decimalType);
Run Code Online (Sandbox Code Playgroud)
虽然c是一种char,但它可以在各自的构造函数中没有错误地提供,并且所有上述语句都被视为有效语句.它们分别产生以下输出.
temp = 65
temp = 65.0
temp = 65.0
temp = 65
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Java中可用的char类型的内部行为是什么?
Java中的ArrayList,List和Collection几乎以相同的方式运行,并且它们有许多共同的方法.如果是这样的话,那么它们之间的主要区别是什么?以下简单的代码片段演示了它.
package collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
final public class Main
{
public static void main(String[] args)
{
Collection<String> collection=new ArrayList<String>();
List<String>list=new ArrayList<String>();
ArrayList<String>arrayList=new ArrayList<String>();
collection.add("A");
collection.add("B");
list.add("A");
list.add("B");
arrayList.add("A");
arrayList.add("B");
Iterator<String>collectionIterator=collection.iterator();
Iterator<String>listIterator=list.iterator();
Iterator<String>arrayListIterator=arrayList.iterator();
while(collectionIterator.hasNext())
{
System.out.println(collectionIterator.next());
}
while(listIterator.hasNext())
{
System.out.println(listIterator.next());
}
while(arrayListIterator.hasNext())
{
System.out.println(arrayListIterator.next());
}
}
}
Run Code Online (Sandbox Code Playgroud)
何时何地使用ArrayList,Collection和List?在哪些特定情况下,它们之间的差异可能是显着的?
可能重复:
使用强制转换为基本类型的奇怪java行为
我们来看看Java中的以下代码片段.
package typecasting;
final public class TypeCasting
{
public static void main(String[] args)
{
int i = (byte) + (char) - (int) + (long) - 1;
System.out.print("\n i = "+i+"\n");
}
}
Run Code Online (Sandbox Code Playgroud)
该陈述System.out.print("\n i = "+i+"\n");显示i = 1.怎么样?
按照惯例,Java中的静态方法只能访问静态字段或其他静态方法.但是,以下简单的代码段似乎违反了约定.让我们考虑Java中的以下简单代码片段.
class Super
{
protected static int x;
protected static int y;
public Super(int x, int y)
{
Super.x=x;
Super.y=y;
}
public static int sum()
{
return(x+y);
}
}
final class Sub extends Super
{
public static int temp=100;
public Sub(int x, int y)
{
super(x, y);
}
public void concreateMethod()
{
System.out.println("\nInstance variable x = "+x);
System.out.println("Instance variable y = "+y);
}
}
final public class Main
{
public static void main(String[] args)
{
Sub s=new Sub(10, 5);
System.out.println("\nAssociating …Run Code Online (Sandbox Code Playgroud) 可能重复:
在接口中受保护
以下代码片段显示Java中的接口只能有一个公共修饰符.在接口中不允许使用其他修饰符(私有和受保护的),既不使用字段也不允许使用任何方法.显然在修饰符中,private在接口中没有任何意义,但是应该允许在接口中使用protected,因为它可以通过它的实现类来合并.
interface Demo
{
private final static int a=10; //Will not be compiled.
protected final static int b=20; //Will not be compiled.
public final static int x=0; //ok
abstract public void showSum();
}
Run Code Online (Sandbox Code Playgroud)
允许抽象类将所有修饰符设置为private,public和protected.我的问题是只有一个受保护的修饰符是不是多少有些似乎被允许在一个界面中允许的.为什么?
我目前正在与一个电子商务购物网站合作,不同的产品需要评级.我正在使用星级评分脚本.
一切都运行正常,但产品应根据访问者的IP进行一次评级,一旦访问者点击一颗星(五星之中),所有星星都应该被禁用,以便具有相同IP的同一产品的重复评级可以被阻止(我也使用服务方验证),根据数据库中的新值的平均评级应该由相同的星号(刚被禁用)表示.
它在Firefox上运行完全没有问题.当访问者单击某个星形时,新值将传递给数据库(使用Ajax),并根据新值计算并显示平均评级,但Internet Explorer无法使用Ajax从数据库中检索新值.
我只是用非常简单的代码演示问题,如下所示.
以下是Temp.php文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function ajax()
{
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp = new ActivexObject("Microsoft.XMLHTTP");
}
}
function loadStars(prod_id)
{
ajax();
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ajax_response").innerHTML=xmlhttp.responseText;
var rating= document.getElementById("rating_value").value;
alert(rating); //Rating value of hidden field from the ajax response is alered.
}
}
var queryString="Temp1.php?prod_id="+prod_id;
xmlhttp.open("GET", queryString, true);
xmlhttp.send();
} …Run Code Online (Sandbox Code Playgroud)