工作始终会遇到很多需要收集的资料,时间长了,难免会忘记。作个简要记录,以资后用....
1. EJB容器下面使用JPA处理大批量数据,最终还是直接使用JDBC来做底层处理,容器处理事务,
不需要对事务做单独处理。
public void importData(final List<TimetableJourneyDetail> retList) { if (null != retList && retList.size() > 0) { final EntityManagerFactory emf = entityManager.getEntityManagerFactory(); final BrokerFactory factory = JPAFacadeHelper.toBrokerFactory(emf); final OpenJPAConfiguration conf = factory.getConfiguration(); final DataSourceWrapper dw = new DataSourceWrapper((DataSource) conf.getConnectionFactory()); final SystemUser user = SecurityUtil.getCurrentUser(); final Long userId = user.getId(); final String loginId = user.getLoginId(); PreparedStatement pst = null; Connection conn = null; try { conn = dw.getConnection(); //conn.setAutoCommit(false); final StringBuffer sql = new StringBuffer("INSERT INTO \"LR_TIMETABLE_JOURNEY_DETAIL\""); sql.append("(\"ID\",\"PARENT_ID\",\"LINE_NAME\",\"TRAIN_NO\",\"TRS_NO\",") .append("\"TRIP_NO\",\"REVENUE_FLAG\",\"DIRECTION\",\"FROM_STOP_PLATFORM\",") .append("\"FROM_STOP_ARRIVAL_TIME\",\"FROM_STOP_DEPART_TIME\",\"TO_STOP_PLATFORM\"") .append(",\"TO_STOP_ARRIVAL_TIME\",\"TO_STOP_DEPART_TIME\",\"DEPART_IN_OUT_INDICATOR\"") .append(",\"SINGLE_COUPLE_CAR\",\"KM\",\"TRIPS\",\"LAST_UPD_USER_ID\",") .append("\"LAST_UPD_USER\",\"LAST_UPD_DATETIME\") VALUES") .append("(SEQ_JOURNEY_DETAIL.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,") .append(userId).append(",'").append(loginId).append("',(CURRENT DATE))"); pst = conn.prepareStatement(sql.toString()); for (TimetableJourneyDetail d : retList) { pst.setLong(1, d.getParentId()); pst.setString(2, d.getLineName()); pst.setString(3, d.getTrainNo()); pst.setString(4, d.getTrsNo()); pst.setString(5, d.getTripNo()); pst.setString(6, d.getRevenueFlag()); pst.setString(7, d.getDirection()); pst.setString(8, d.getFromStopPlatform()); pst.setString(9, d.getFromStopArrivalTime()); pst.setString(10, d.getFromStopDepartTime()); pst.setString(11, d.getToStopPlatform()); pst.setString(12, d.getToStopArrivalTime()); pst.setString(13, d.getToStopDepartTime()); pst.setString(14, d.getDepartInOutIndicator()); pst.setString(15, d.getSingleCoupleCar()); pst.setDouble(16, d.getKm()); pst.setDouble(17, d.getTrips()); pst.addBatch(); } final int []count = pst.executeBatch(); System.out.println("number : " + count.length); //conn.commit(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (null != pst) { try { pst.close(); if (null != conn && !conn.isClosed()) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } }
2. 利用Java异常特性来校验日期格式,代码简洁,不错的功能...
/** * To check the date is valid or not * @param input * @return */ public static boolean isValidDate(final String input) { boolean isValid = false; final String formatString = "yyyy-MM-dd"; try { final SimpleDateFormat format = new SimpleDateFormat(formatString); format.setLenient(false); format.parse(input); isValid = true; } catch (ParseException e) { isValid = false; } catch (IllegalArgumentException e) { isValid = false; } return isValid; }
3. Java操作内存溢出几个案例...
/** * * outOfmemory * @param a * @param b * @return the void */ private static void outOfmemory(int a , int b) { //java.lang.StackOverflowError outOfmemory // outOfmemory(a*b, b); //java.lang.OutOfMemoryError: Java heap space List<String> str = new ArrayList<String>(0); int ab = 0; while(true) { //ab++; str.add("abc"); //Object obk = new Object(); } //java.lang.OutOfMemoryError: PermGen space // List<String> str = new ArrayList<String>(0); // int i = 0; // while(true) { // i++; // str.add(String.valueOf(i).intern()); // } }
4. 四舍五入处理方法...
/** * * jsfRound * @param a * @return the void */ private static void jsfRound(double a) { System.out.println("==0==" + a + "==" + String.format("%.2f", a)); //please attention ROUND_HALF_DOWN ROUND_HALF_UP System.out.println("==1==" + a + "===" + new BigDecimal(String.valueOf(a)).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue()); System.out.println("==2==" + a + "==" + new BigDecimal(String.valueOf(a)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); }
5. 处理集合中重复数据....
/** * * dealWithDuplicationObjArray * @return * @return the List<Object[]> */ private static List<Object[]> dealWithDuplicationObjArray() { final List<Object[]> listObj = new ArrayList<Object[]>(0); listObj.add(new Object[]{"20/10/2012","a","1 REV 4"}); listObj.add(new Object[]{"21/10/2012","b","1 REV 4"}); listObj.add(new Object[]{"22/10/2012","c","1 REV 4"}); listObj.add(new Object[]{"23/10/2012","d","1 REV 4"}); listObj.add(new Object[]{"23/10/2012","666","1 REV 3"}); final List<Object[]> retList = new ArrayList<Object[]>(0); final Map<Object, Object[]> map = new HashMap<Object, Object[]>(); for (Object[] objects : listObj) { map.put(objects[0], objects); } final Set<Entry<Object, Object[]>> set = map.entrySet(); for (Entry<Object, Object[]> entry : set) { retList.add(entry.getValue()); System.out.println("key = " + entry.getKey() + "=value=" + ((Object[])entry.getValue())[1] + "---" + ((Object[])entry.getValue())[2]); } return retList; }
处理重复集合元素另一方法,从已有集合元素中找出重复的元素:
/** * Find Collection duplicated elements,get duplicated elements * @param elements * @return Collection */ public static Collection<?> findCollectionDuplicateElements(final Collection<?> elements) { final Set<Object> set = new HashSet<Object>(); final Set<Object> retSet = new HashSet<Object>(); for (Object object : elements) { set.add(object); } if (elements.size() == set.size()) { return retSet; } else { for (Object object : set) { elements.remove(object); } } for (Object object : elements) { retSet.add(object); } return retSet; }
6. 反射找出javabean对象属性名以及对应值:
/** * * copyObjectToHashMap * @param object * @return * @throws Exception * @return the Map<?,?> */ public static Map<?,?> copyObjectToHashMap(final Object object) throws Exception { final Class clazz = object.getClass(); final Method[] methods = clazz.getDeclaredMethods(); final Map<String, Object> vo = new HashMap<String, Object>(); for (Method method : methods) { String methodName = method.getName(); String tempName = ""; if (methodName.startsWith("get")) { tempName = methodName.substring(3, 4).toLowerCase() + methodName.substring(4); final Object obj = method.invoke(object, (Object[]) method.getParameterTypes()); if (null != obj && !"".equals(obj)) { vo.put(tempName, obj); } } tempName = null; methodName = null; } return vo; }
7. 对于大数值的运算公式(任意整数使用BigInteger类,对于任意浮点数使用BigDecimal类)
private static final int DEF_DIV_SCALE = 10; public static BigDecimal add(BigDecimal v1, BigDecimal v2) { return v1.add(v2); } public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) { return v1.subtract(v2); } public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) { return v1.multiply(v2); } public static BigDecimal div(BigDecimal v1, BigDecimal v2) { return div(v1, v2, DEF_DIV_SCALE); } public static BigDecimal div(BigDecimal v1, BigDecimal v2, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } return v1.divide(v2, scale, BigDecimal.ROUND_HALF_UP); } public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static void main(String[] args) { BigDecimal a = new BigDecimal("123456789123"); BigDecimal b = new BigDecimal("987654321987"); System.out.println(add(a, b)); System.out.println(subtract(a, b)); System.out.println(div(a, b)); System.out.println(multiply(a, b)); }
8. 深度克隆方法(推荐数据流方法,或者自己重写必须要写最小的基本数据类型为止(难度大))
//深度克隆, 克隆对象必须实现 java.io.Serializable public final static Object objectCopy(Object oldObj) { Object newObj = null; ByteArrayOutputStream bo = null; ObjectOutputStream oo = null; ByteArrayInputStream bi = null; ObjectInputStream oi = null; try { bo = new ByteArrayOutputStream(); oo = new ObjectOutputStream(bo); oo.writeObject(oldObj);//源对象 bi = new ByteArrayInputStream(bo.toByteArray()); oi = new ObjectInputStream(bi); newObj = oi.readObject();//目标对象 } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { bo.close(); oo.close(); bi.close(); bo.close(); } catch (IOException e) { e.printStackTrace(); } } return newObj; }
9,图形化校验一例
三种方式输出:流文件直接输出、base64(有些浏览器存在问题)、保存文件路径方式
后端
private static class GenerateVerifyPicture {
private static char pictureChars[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '0' };
public static String getCertPic(int width, int height, OutputStream os) {
if (width <= 0)
width = 60;
if (height <= 0)
height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// Graphics2D g = image.createGraphics();
// 定义字体样式
Font myFont = new Font("黑体", Font.BOLD, 20);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
// 画边框
g.setColor(Color.black);
g.setFont(myFont);
g.drawRect(0, 0, width - 1, height - 1);
// 取随机产生的认证码
StringBuffer strEnsure = new StringBuffer("");
for (int i = 0; i < 5; ++i) {
strEnsure.append(pictureChars[(int) (pictureChars.length * Math.random())]);
}
g.setColor(Color.black);
// g.setColor(getRandomFontColor());
g.setFont(new Font("Atlantic Inline", Font.PLAIN, 18));
String str = strEnsure.substring(0, 1);
g.drawString(str, 8, 17);
str = strEnsure.substring(1, 2);
g.drawString(str, 20, 15);
str = strEnsure.substring(2, 3);
g.drawString(str, 35, 18);
str = strEnsure.substring(3, 4);
g.drawString(str, 45, 15);
str = strEnsure.substring(4, 5);
g.drawString(str, 60, 17);
// 随机产生50个干扰点
Random rand = new Random();
for (int i = 0; i < 50; i++) {
int x = rand.nextInt(width);
int y = rand.nextInt(height);
g.drawOval(x, y, 1, 1);
//g.setColor(getRandomBgColor());
}
// 释放图形上下文
g.dispose();
String base64 = "";
Map<Object, Object> m = new LinkedHashMap<Object, Object>();
String uuid = StringUtil.getUUID();
try {
// 输出图像到页面
ImageIO.write(image, "jpg", os);
//os.flush();
} catch (IOException e) {
e.printStackTrace();
m.put("errorCode", -1);
return StringUtil.toJsonString(m);
}
m.put("picValue", base64);
m.put("picKey", uuid);
RedisAPI.setex(uuid, strEnsure.toString(), EXPIRE_TIME);
////do something database into database
System.out.println("picture base64 map=====uuid:\t" + uuid + "\tvalue:\t" + strEnsure.toString());
return StringUtil.toJsonString(m);
}
private static void generateImage(String uuid, byte[] imageInByte)
throws FileNotFoundException, IOException {
if (!AlipayConfig.IS_VERIFY_CODE) {//是否生成指定目录路径下面图片
FileOutputStream fos = new FileOutputStream("/data/image/"+uuid+".jpg");
fos.write(imageInByte, 0, imageInByte.length);
fos.flush();
fos.close();
}
}
public static String getCertPic(int width, int height) {
if (width <= 0)
width = 60;
if (height <= 0)
height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// Graphics2D g = image.createGraphics();
// 定义字体样式 // 设置字体
Font myFont = new Font("黑体", Font.BOLD, 20);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
// 画边框
g.setColor(Color.black);
g.setFont(myFont);
g.drawRect(0, 0, width - 1, height - 1);
// 取随机产生的认证码
StringBuffer strEnsure = new StringBuffer("");
for (int i = 0; i < 5; ++i) {
strEnsure.append(pictureChars[(int) (pictureChars.length * Math.random())]);
}
g.setColor(Color.black);
// g.setColor(getRandomFontColor());
g.setFont(new Font("Atlantic Inline", Font.PLAIN, 18));
String str = strEnsure.substring(0, 1);
g.drawString(str, 8, 17);
str = strEnsure.substring(1, 2);
g.drawString(str, 20, 15);
str = strEnsure.substring(2, 3);
g.drawString(str, 35, 18);
str = strEnsure.substring(3, 4);
g.drawString(str, 45, 15);
str = strEnsure.substring(4, 5);
g.drawString(str, 60, 17);
// 随机产生50个干扰点
Random rand = new Random();
for (int i = 0; i < 50; i++) {
int x = rand.nextInt(width);
int y = rand.nextInt(height);
g.drawOval(x, y, 1, 1);
//g.setColor(getRandomBgColor());
}
// 释放图形上下文
g.dispose();
String base64 = "";
Map<Object, Object> m = new LinkedHashMap<Object, Object>();
String uuid = StringUtil.getUUID();
try {
// 输出图像到页面
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", baos);
baos.flush();
// IOUtils
byte[] imageInByte = baos.toByteArray();
generateImage(uuid, imageInByte);
base64 = Base64.encodeBase64String(imageInByte);
//System.out.println("base64==============" + base64);
baos.close();
} catch (IOException e) {
e.printStackTrace();
m.put("errorCode", -1);
return StringUtil.toJsonString(m);
}
m.put("picValue", base64);
m.put("picKey", uuid);
RedisAPI.setex(uuid, strEnsure.toString(), EXPIRE_TIME);
////do something database into database
System.out.println("picture base64 map=====uuid:\t" + uuid + "\tvalue:\t" + strEnsure.toString());
return StringUtil.toJsonString(m);
}
@SuppressWarnings("unused")
private static Color getRandomFontColor() {
//Random random = new Random();
String [] cs = {"FF6347","FFA500","FF69B4","FF3030","FF0000","EE5C42","EE7AE9","E066FF","CD2626","CD0000","BF3EFF","8B1A1A","8B008B","7D26CD","3A5FCD","191970","303030","000000","1F1F1F","333333","4F4F4F"};
String color = cs[StringUtil.getRandomNum(cs.length)];
//r =
return Color.getColor(color);
}
@SuppressWarnings("unused")
private static Color getRandomBgColor() {
//Random random = new Random();
String [] cs = {"FFF5EE","F8F8FF","EEE8AA","E5E5E5","D4D4D4","CCCCCC","CAE1FF","D1EEEE","EE9A49","CD6889"};
String color = cs[StringUtil.getRandomNum(cs.length)];
//r =
return Color.getColor(color);
}
}
spring前端控制输出:
/*
* generate picture information
*/
@RequestMapping(value = "/generatePic.do")
public String generatePic(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
// 设置不缓存图片
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
int width = 80;
int height = 25;
// try {
// width = Integer.parseInt(request.getParameter("width"));
// height = Integer.parseInt(request.getParameter("height"));
// } catch (Exception ex) {
// width = 80;
// height = 25;
// ex.printStackTrace();
// }
String base64 = "";
try {
base64 = purchaseOrderService.generatePictureCode(width, height);
model.put("message", base64);
} catch (Exception ex) {
Map<Object, Object> m = new LinkedHashMap<Object, Object>();
m.put("errorCode", -1);
model.put("message", StringUtil.toJsonString(m));
// ex.printStackTrace();
}
return "message.json";
}
/*
* generate picture information
*/
@RequestMapping(value = "/generatePic2.do")
public String generatePic2(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
// 设置不缓存图片
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
int width = 80;
int height = 25;
// try {
// width = Integer.parseInt(request.getParameter("width"));
// height = Integer.parseInt(request.getParameter("height"));
// } catch (Exception ex) {
// width = 80;
// height = 25;
// ex.printStackTrace();
// }
String base64 = "";
try {
base64 = purchaseOrderService.generatePictureCode(width, height, response.getOutputStream());
model.put("message", base64);
} catch (Exception ex) {
Map<Object, Object> m = new LinkedHashMap<Object, Object>();
m.put("errorCode", -1);
model.put("message", StringUtil.toJsonString(m));
// ex.printStackTrace();
}
return "message.json";
}
//前端获取图片
<%@ page contentType="text/html;charset=GB2312" %>
<script type="text/javascript">
function reloadcode(){
var verify=document.getElementById('code');
verify.setAttribute('src','../generatePic2.do?it='+Math.random());
}
</script>
<html>
<head><title>Picture check code</title></head>
<body>
<table align="center" border="0">
<tralign="center"><td><fontcolor="red"><html:errors/></font></td></tr>
<form. action="#" method="post" >
<tr><td><img src="../generatePic2.do" id="code" > <input type="text" name="strEnsure" value=""/></td></</td></tr>
<br/>
<tr><td><img src="data:image/jpeg;base64,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" id="code" > <input type="text" name="strEnsure" value=""/></td></</td></tr>
<tr><td><input type="button" onclick="reloadcode()" value="看不清楚,换一张" style="cursor: pointer;"/> </td></tr>
<tralign="left"><td>
<!-- <input type="submit" value="确定"/></td></tr> -->
</form>
</table>
</body>
</html>
效果如图:
相关推荐
JAVA手机记事本,是很好用的JAVA手机记事本,VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV。经验证,金立手机L18可用。JAVA手机记事本,是很好用的JAVA手机记事本,...
Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本Java日期记事本
JAVA 记事本 实现各项功能 JAVA 记事本 实现各项功能 JAVA 记事本 实现各项功能
java记事本java记事本java记事本java记事本java记事本java记事本java记事本
java记事本java记事本java记事本java记事本
Java制作记事本 Java制作记事本 Java制作记事本 Java制作记事本Java制作记事本 Java制作记事本
基于java的记事本基于java的记事本基于java的记事本基于java的记事本基于java的记事本
java_记事本的设计与实现报告.pdf
JAVA简单记事本程序设计实验报告(带源码) 课题:学生成绩管理 4.功能要求: 编写一个简单记事本程序,要求包含以下菜单项 文件 新建、打开、保存、退出 编辑 剪切、拷贝、粘贴、查找 帮助 关于 5.实现文件和编辑...
java 记事本java 记事本java 记事本java 记事本java 记事本java 记事本java 记事本java 记事本
纯Java编写的记事本 包含源码 实现了许多功能例如:定时保存、日历、字数统计,工具栏等一些功能。特别适合初学swing的人员阅读。
java带记事本日历.rarjava带记事本日历.rarjava带记事本日历.rarjava带记事本日历.rar
基于Java语言的记事本代码,基于Java语言的记事本代码
Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本Java SE程序 记事本...
java写的记事本程序源代码,界面简洁大方,模仿实现了Windows记事本的基本功能!
基于Java的记事本的设计与实现答辩PPT.ppt 基于Java的记事本的设计与实现答辩PPT.ppt 基于Java的记事本的设计与实现答辩PPT.ppt 基于Java的记事本的设计与实现答辩PPT.ppt 基于Java的记事本的设计与实现答辩PPT.ppt ...
关于记事本的编辑,里面有查找替换,字体,颜色。不过对于对齐方式自己设计的不怎么行
java swing 记事本java swing 记事本java swing 记事本
netbeans项目 日历+记事本+课程表+计时提醒功能+导出导入课程列表
java jframe actionlister file java制作记事本实现文件的打开保存,关闭,复制粘贴剪切等功能