各位前辈,你们好! 小弟刚毕业正在找工作,昨天面试遇到一个难题请教了好多同学都无解,现在将自己的想法思路列出来,请各位前辈指点,谢谢!
题目:建一个数据库表user:
id no name mobile birthdate
1 S0001 张三 134******** 1990-03-02
2 S0002 王五 134******** 2005-7-1
表的输入要求是:id字段是递增;用户编号no是顺序递增不能重复,格式用S字母+4位数字;mobile电话号必须以134开头的11位随机数字。
编写同时启动10个线程,每个线程插入10000个用户数据,同时实现以关键字no,name,mobile,birthdate的查询。
小弟的解题思路:
先用存储过程实现对表的种操作,再写一个类实现数据封装和逻辑验证,但具体代码试了几次都不成功,请各位指点,谢谢!
是让你在计算机上做这么一个程序吧?带数据库的
线程的同步是个挑战
多线程问题,id,数据库自增,不用管它, no获取完数据,插入之前,先写个函数 取数据库中最大的那个值 然后+1 重新赋值,电话就简单了 134+ radom() 产生一个8位数。然后 就同时启动10个线程进行插入啊。
"但具体代码试了几次都不成功" 出现什么错误?你具体是怎么做的?最终想完成什么目的??
三楼说的 不错
唯一的问题应该是在“用户编号顺序递增不能重复”。对获取用户编号的方法上锁即可。
private static Object o = new Object(); public static String GetUserNo() { String reuslt = String.Empty; lock (o) { //do something } return reuslt; }
用户编号no设计的有问题,位数不够哦
错题吧~~~9999最大的咋整