都应该是基本的吧 但是我都没答上来 希望大家别鄙视 留下答案
1.Id generator(native,assigned,increment,uuid)应用场景,原理,实现2.用java socket编程,读服务器几个字母,在写入本地显示3.事物定义以及隔离级别4.String 和 StringBuffere在做字符串拼接时会有什么缺点?
1.Id generator(native,assigned,increment,uuid)应用场景,原理,实现2.用java socket编程,读服务器几个字母,在写入本地显示3.事物定义以及隔离级别4.String 和 StringBuffere在做字符串拼接时会有什么缺点?
native根据数据库底层实现选择hilo/increment/identity其中一个
assigned是主键ID自己填写
increment是根据数据库底层实现自增,但是必须是sequence数据库,如oracle
2还真不会
3,也有点晕
4,String生成的对象是不可变的,因此再拼接时会生成很多多余的对象
StringBuffer可通过appened方法对字符串进行拼接,生成一个对象即可
事物的隔离级别有四个 你可以查下,socket 编程就是 相互之间流传输,对流熟悉 应该没有什么问题
String在做拼接的时候会被优化成StringBuilder 做 ,要么然每个中间结果都要生成一个String 对象。
StringBuffer是线程安全的 ,部分方法 利用 synchronized 进行了同步
native根据数据库底层实现选择hilo/sequence/identity其中一个
public class Ssocket { public static void main (String args[]) {
try {
ServerSocket ssocket = new ServerSocket(4700);
Socket s =ssocket.accept();
BufferedReader sreader = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter swriter = new PrintWriter(s.getOutputStream());
String smsg = null;
while((smsg = sreader.readLine()) != null) {
System.out.println("smsg:"+smsg);
if(smsg.equals("谢谢!")) {
break;
}
}
swriter.println("你好!");
swriter.flush();
swriter.println("我叫XXX");
swriter.flush();
swriter.println("你叫什么?");
swriter.flush();
swriter.println("谢谢!");
swriter.flush();
sreader.close();
swriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//客户端
public class Csocket { public static void main(String[] args) {
try {
Socket csocket = new Socket("127.0.0.1",4700);
BufferedReader creader = new BufferedReader(new InputStreamReader(csocket.getInputStream()));
PrintWriter cwriter = new PrintWriter(csocket.getOutputStream());
cwriter.println("你好!");
cwriter.flush();
cwriter.println("你叫什么?");
cwriter.flush();
cwriter.println("我叫XXX");
cwriter.flush();
cwriter.println("谢谢!");
cwriter.flush();
String cmsg = null;
while((cmsg = creader.readLine()) != null) {
System.out.println("cmsg:"+cmsg);
if(cmsg.equals("谢谢!")) {
break;
}
}
cwriter.close();
creader.close();
} catch (IOException e) {
e.printStackTrace();
} }}3.事物定义以及隔离级别
4#楼是对的
String 和 StringBuffere在做字符串拼接时会有什么缺点?
对这个我只知道,String是不可变的,StringBuffere是可以变的,如果要字符串拼接最好用StringBuffere
UUID含义是通用唯一识别码
UUID uuid=UUID.randomUUID();//UUID java.util包下面的
生成的字符串类似这样:53569a9e-fbe2-418a-bfe9-bf6ce977be1d
(根据方言:hibernate.cfg.xml中的<property name="dialect">org.hibernate.dialect.MySQLDialect</property>)判断提供何种数据库
------------------------------------------------------------
sequence 主键生成器 Oracle Postgre DB2 实现原理:调用数据库中底层存在squence生成主键Oracle 建序列:create sequence xxx increment by1 start with 1 xxx.nextval--->下一个值
----------------------------------------------
assigned 手工分配主键生成器
--------------------------------------------------
identity SQLServer MySQL特点:建表时可以为主键 指定一个主键自动生成关键字
id int primary key auto_increment;
2.网络编程
3.ACID
4.StringBuffere速度快,占用空间少
第二个问题 也就是socket通信,这个比较easy
第三个问题 目前没有思路。
第四个问题 String 和StringBuffer的主要区别是
比如 String s = "abc";
s = s + "bcd" \\这里中间在String pool中产生了两个临时变量“bcd”和"abcbcd"然后把abcbcd 才赋值给s;
对象的StringBuffer s = new StringBuffer("abc");StringBuffer 是java5 引入的,是线程不安全的。
abc.append("bcd");这里没有产生临时变量。希望可以明白,不明白的还可继续问
对String的操作
类似:"a"+"b"
需要进行内存复制操作,重新新建String对象并相加.
而StringBuffer只需要在一个引用内操作.而且可以给定缓冲区可以认为String s = "a"+"b"
相当于
StringBuffer sb = new StringBuffer(2);
sb.append("a").append("b")
2倍的开销.
会用一个算法生成一全宇宙几乎很难小概率重复的String来
事物的四个隔离级别(好像默认的是第二种,很久不看了,忘得差不多了)
只知道是Hibernate主键生成器
http://blog.sina.com.cn/s/blog_57554ed50100e3cu.html2.用java socket编程,读服务器几个字母,在写入本地显示
http://blog.sina.com.cn/s/blog_458b389e010006bv.html3.事物定义以及隔离级别
http://maizhiye.blog.163.com/blog/static/32792332201067101435309/4.String 和 StringBuffere在做字符串拼接时会有什么缺点?http://www.cnblogs.com/aaronbao/archive/2010/03/15/1685700.html
一般你使用String拼接字符串的时候,编译器自动会进行优化,转化为StringBuffer的append。
从面试题上来看,这公司貌似是在招苦工。走走过场罢工了。
不去也罢。
2.我能写 不过这里就不写了
3.没明白题意 也不知道他针对啥
4.String 操作符+的实现就是StringBuffer的append