public void createPicTwo2(int x,int y)
 {
     try
     {
       //读取第一张图片
       File fileOne = new File("h:\\h.jpg");
       BufferedImage ImageOne = ImageIO.read(fileOne);
       int width = ImageOne.getWidth();//图片宽度
       int height = ImageOne.getHeight();//图片高度
       //从图片中读取RGB
       int[] ImageArrayOne = new int[width*height];
       ImageArrayOne = ImageOne.getRGB(0,0,width,height,ImageArrayOne,0,width);
       //对第二张图片做相同的处理
       File fileTwo = new File("h:\\img.png");
       BufferedImage ImageTwo = ImageIO.read(fileTwo);
       int widthTwo = ImageTwo.getWidth();//图片宽度
       int heightTwo = ImageTwo.getHeight();//图片高度
       int[] ImageArrayTwo = new int[widthTwo*heightTwo];
       ImageArrayTwo = ImageTwo.getRGB(0,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);
       
       //生成新图片
       BufferedImage ImageNew = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
       ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置左半部分的RGB
       ImageNew.setRGB(x,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
       ImageNew.setRGB(x*2,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
       File outFile = new File("h:\\out.png");
       ImageIO.write(ImageNew, "png", outFile);//写图片

}
     catch(Exception e)
     {
       e.printStackTrace();
     }
 }

public static void main(String[] args) {
ImageDraw he = new ImageDraw();
he.createPicTwo2(100, 0);
}

 
 
// 个人代码实例
 
  1. /**
    * 实物商品分享赚 - 分享商品图片(规则最低价格)
    *
    * @param goodId
    * @param groupId
    * @param memberId
    * @return
    */
    @ApiOperation(value = "新增前关键字查重", notes = "新增前关键字查重", httpMethod = "POST")
    @ApiImplicitParams({
    @ApiImplicitParam(name = "goodId", value = "商品Id", required = true, dataType = "Long", paramType = "query", example = ""),
    @ApiImplicitParam(name = "groupId", value = "商户编号", required = true, dataType = "Long", paramType = "query", example = ""),
    @ApiImplicitParam(name = "memberId", value = "会员id", required = true, dataType = "Long", paramType = "query", example = "")
    })
    @ApiResponses(value = {
    @ApiResponse(code = 200, message = "成功")
    }
    )
    @RequestMapping(value = "wxsharegoodpicture")
    @ResponseBody
    @SysLogger(value = "wxsharegoodpicture", servicename = "shop-service")
    public ShareMallEntityGood wxsharegoodpicture(@RequestParam(required = true) Long goodId,
    @RequestParam(required = true) Long groupId,
    @RequestParam(required = true) Long memberId) throws Exception {
  2.  
  3. logger.info("分享赚-分享商品信息图片");
    if (goodId == null) {
    throw new ApplicationException(Rescode.NULL_POINTER, "goodId 商品不能为空!");
    }
    if (groupId == null) {
    throw new ApplicationException(Rescode.NULL_POINTER, "groupId 不能为空!");
    }
    if (memberId == null) {
    throw new ApplicationException(Rescode.NULL_POINTER, "memberId 不能为空!");
    }
    ShareMallEntityGood shareMallEntityGood = new ShareMallEntityGood();
    String fileName = null;
    byte[] data = new byte[1024];
    BASE64Encoder encoder = null;
    BufferedOutputStream bos = null;
    BufferedImage image;
    try {
    int imageWidth = 750; //图片的宽度
    int imageHeight = 1350; //图片的高度
    int H_title = 300; //头部高度
    int H_activity = 430; //活动高度
    int H_mainPic = 750; //广告高度
    int H_tip = 300; //商品价格栏
    int tip_2_top = (H_title + H_mainPic);
    MallEntityGood mallEntityGood = mallEntityGoodService.queryFindEntityGoodPictureDetail(goodId, groupId);
    image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
    //设置图片的背景色
    Graphics2D main = image.createGraphics();
    main.setColor(Color.white);
    main.fillRect(0, 0, imageWidth, imageHeight);
    //***********************页面头部
    Graphics title = image.createGraphics();
    title.setColor(Color.BLACK);
    // 商品标题字体
    Font titleFont = new Font("微软雅黑", Font.PLAIN, 46);
    title.setFont(titleFont);
    // 如果商品名大于12个字符,截取12个字符在第一行中显示,剩余的在第二行显示
    // 完成之后优化 考虑用户在使用英文的前提下 每行字数乘两倍
    if (mallEntityGood.getName().length() > 14) {
    String goodName1 = URLCodeUtil.encodeParam(mallEntityGood.getName().substring(0, 14));
    if (mallEntityGood.getName().length() > 14 && mallEntityGood.getName().length() < 27) {
    String goodName2 = URLCodeUtil.encodeParam(mallEntityGood.getName().substring(14));
    title.drawString(goodName2, 20, (H_title) / 3 + 80);
    } else if (mallEntityGood.getName().length() > 27) {
    String goodName2 = URLCodeUtil.encodeParam(mallEntityGood.getName().substring(14, 27));
    title.drawString(goodName2 + "...", 20, (H_title) / 3 + 80);
    }
    title.drawString(goodName1, 20, (H_title) / 3 + 5);
    } else {
    title.drawString(URLCodeUtil.encodeParam(mallEntityGood.getName()), 20, (H_title) / 3 + 5);
    }
    // 获取商品所参加的活动
    Graphics activity = image.createGraphics();
    activity.setColor(Color.red);
    Font activityFont = new Font("微软雅黑", Font.PLAIN, 34);
    activity.setFont(activityFont);
    // 普通动态活动
    List<ActivityUnroutine> activityUnroutineList = activityUnroutineService.queryActivityListById(goodId);
    // 拼团活动(根据用户等级判断是否享有拼团价拼团活动)
    ActivityBulk activityBulk = activityBulkService.queeryActivityBulkByGoodInfo(goodId, groupId);
    // 价格处理
    DecimalFormat df = new DecimalFormat("0.00");
    // 时间处理
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  4.  
  5. if (activityBulk != null) {
    Member member = memberService.selectByPrimaryKey(memberId);
    // 用户等级Id
    Long gradeId = member.getGradeId();
    if (activityBulk.getUserGradeList().equals("-1")) {
    // 用户等级列表 其全部会员等级为-1时 皆可以参与分享拼图活动 分享图文拼图
    String activityName = activityBulk.getActivityName();// 拼团活动名称
    Date endTime = activityBulk.getEndTime(); // 拼图活动结束时间
    ActivityBulkGoodDetail activityBulkGoodDetail = activityBulkGoodDetailService.queryGoodInfo(activityBulk.getId(), goodId);
    Long amount = activityBulkGoodDetail.getAmount(); // 拼团价
    // 商品存在拼图活动的话 拼团活动优先 (拼团活动名排布)
    ptMethod(H_activity, H_tip, tip_2_top, activity, df, format, activityName, endTime, amount,image);
  6.  
  7. } else if (activityBulk.getUserGradeList().contains(String.valueOf(gradeId))) {
    String activityName = activityBulk.getActivityName();// 拼团活动名称
    Date endTime = activityBulk.getEndTime(); // 拼图活动结束时间
    ActivityBulkGoodDetail activityBulkGoodDetail = activityBulkGoodDetailService.queryGoodInfo(activityBulk.getId(), goodId);
    Long amount = activityBulkGoodDetail.getAmount(); // 拼团价
    ptMethod(H_activity, H_tip, tip_2_top, activity, df, format, activityName, endTime, amount,image);
  8.  
  9. }
    } else {
    // 商品没有参与拼团活动 那么查询时候有参与普通的动态活动
    if (activityUnroutineList != null) {
    for (int i = 0; i < activityUnroutineList.size(); i++) {
    if (StringUtils.isNotEmpty(activityUnroutineList.get(i).getActivityName())) {
    String activityNames = activityUnroutineList.get(i).getActivityName();
    if (activityNames.length() > 20) {
    activity.drawString("活动:" + URLDecoder.decode(activityNames, "UTF-8").substring(0, 21) + "...", 20, (H_activity) / 2 + 30);
    } else {
    activity.drawString("活动:" + URLDecoder.decode(activityNames, "UTF-8"), 20, (H_activity) / 2 + 30);
    }
    break;
    }
    }
    } else {
    String activityName = "";
    activity.drawString(activityName, 20, (H_activity) / 2);
    }
    // 会员价排布
    Graphics2D tip = image.createGraphics();
    tip.setColor(Color.red);
    Font tipFont = new Font("微软雅黑", Font.PLAIN, 56);
    tip.setFont(tipFont);
    // 查询该商品时候含有规格--若有去规格的最小价格显示
    List<MallEntityGoodSpec> mallEntityGoodSpecs = mallEntityGoodSpecService.selectByGoodId(goodId);
    if (mallEntityGoodSpecs.size() != 0) {
    List<Integer> pirceList = new ArrayList<>();
    for (MallEntityGoodSpec mallEntityGoodSpec : mallEntityGoodSpecs) {
    // 取出所有规格的会员价冒泡排序
    pirceList.add(mallEntityGoodSpec.getPrice());
    }
    int temp = 0;
    for (int j = 0; j < pirceList.size(); j++) {
    int minprice = pirceList.get(0);
    Integer pirce = pirceList.get(j);
    if (pirce < minprice) {
    temp = minprice;
    minprice = pirce;
    pirce = temp;
    }
    tip.drawString("¥" + df.format((float) minprice / 100), 250, tip_2_top + (H_tip) / 2 - 40);
    }
    } else {
    tip.drawString("¥" + df.format((float) mallEntityGood.getPromotionPrice() / 100), 250, tip_2_top + (H_tip) / 2 - 40);
    }
    // 会员分享图片插入
    Graphics mainPic3 = image.getGraphics();
    BufferedImage bimg3 = null;
    String imgurl3 = "http://ebank007.oss-cn-hangzhou.aliyuncs.com/background/20180802190802Zoa43H.jpg";
    // String imgurl3="http://ebank007.oss-cn-hangzhou.aliyuncs.com/20180731173813D9PJ9Q.jpg";
    bimg3 = ImageIO.read(new URL(imgurl3).openStream());
    int width = bimg3.getWidth();
    int height = bimg3.getHeight();
    // 图片距离随价格长度的增加而增加(价格长度每增加1+图片x轴位移+25)
    int priceLength = df.format(mallEntityGood.getPromotionPrice() / 100).length();
    int priceSize = 3;
    int pictureWidth = 380;
    int clength = (priceLength - priceSize) * 31;
    int addPictureWidth = pictureWidth + clength;
    mainPic3.drawImage(bimg3, addPictureWidth, tip_2_top + (H_tip) / 2 - 85, width, height - 5, null);
    mainPic3.dispose();
    }
    //***********************插入中间广告图
    Graphics mainPic = image.getGraphics();
    BufferedImage bimg = null;
    // 获取商品图片
    if (mallEntityGood.getPicture() != null) {
    String[] picture = mallEntityGood.getPicture().trim().split(",");
    for (int i = 0; i < picture.length; i++) {
    if (picture[i].trim().length() > 0) {
    bimg = ImageIO.read(new URL(picture[i]).openStream());
    mainPic.drawImage(bimg, 0, H_title, imageWidth, H_mainPic, null);
    mainPic.dispose();
    break;
    }
    }
    }
    // 原价排布
    Font btnFont2 = new Font("微软雅黑", Font.PLAIN, 30);
    Graphics2D btn2 = image.createGraphics();
    btn2.setColor(Color.black);
    btn2.setFont(btnFont2);
    String salePrice = "原价";
    btn2.drawString(URLDecoder.decode(salePrice, "UTF-8") + ": ¥" + df.format(mallEntityGood.getSalePrice() / 100), 250, tip_2_top + (H_tip) / 2 + 20);
    int proLength = df.format(mallEntityGood.getSalePrice() / 100).length();
    int proSize = 3;
    String logSign = "----------";
    String str = "";
    for (int i = 0; i < proLength - proSize; i++) {
    str += "--";
    }
    btn2.drawString(logSign + str, 250, tip_2_top + (H_tip) / 2 + 20);
    // 确定二维码所在的位置
    Graphics2D tip1 = image.createGraphics();
    tip1.setColor(Color.black);
    Font tipFont2 = new Font("微软雅黑", Font.PLAIN, 28);
    tip1.setFont(tipFont2);
    String ccLog = "长按识别二维码";
    tip1.drawString("[" + URLDecoder.decode(ccLog, "UTF-8") + "]", 20, tip_2_top + (H_tip) / 2 + 130);
    // 用户分享链接二维码
    String shareGoodQRcode = HOME_URL + "/api/oAuth2/goodDetailShare?gid=" + goodId + "&" + "memberid=" + memberId + "&" + "groupId=" + groupId;
    int qrcode_height = 210;
    int qrcode_width = 210;
    BufferedImage imageQR = createImage1(shareGoodQRcode, qrcode_width, qrcode_height,image);
    // 确定二维码在图中的位置
    Graphics mainPic1 = image.getGraphics();
    if (image != null) {
    // 二维码插入图片
    mainPic1.drawImage(imageQR, 20, tip_2_top + 30, qrcode_width, qrcode_height, null);
    mainPic1.dispose();
    }
    // 开始二维码图片与主图合成
    //QR
    int widthQR = imageQR.getWidth();
    int heightQR = imageQR.getHeight();
    int[] ImageArrayQR = new int[widthQR * heightQR];
    ImageArrayQR = imageQR.getRGB(0,0,widthQR,heightQR,ImageArrayQR,0,widthQR);
    //ZT
    int widthZT = image.getWidth();
    int heightZT = image.getHeight();
    int[] ImageArrayZT = new int[widthZT*heightZT];
    ImageArrayZT =image.getRGB(0,0,widthZT,heightZT,ImageArrayZT,0,widthZT);
  10.  
  11. //生成新图片
    BufferedImage ImageNew = new BufferedImage(widthZT,heightZT,BufferedImage.TYPE_INT_RGB);
    ImageNew.setRGB(20,1080,widthQR,heightQR,ImageArrayQR,0,widthQR);//设置左半部分的RGB
    ImageNew.setRGB(0,0,widthZT,heightZT,ImageArrayZT,0,widthZT);//设置右半部分的RGB
  12.  
  13. String uuid = UUID.randomUUID().toString().replaceAll("-", "");
    String code = format.format(new Date()) + "-" + uuid;
    fileName =code + ".png";
    createImage(fileName,ImageNew);
    InputStream in = null;
    data = null;
    //读取图片字节数组
    try {
    in = new FileInputStream(fileName);
    data = new byte[in.available()];
    in.read(data);
    in.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
  14.  
  15. //对字节数组Base64编码
    encoder = new BASE64Encoder();
    if (StringUtils.isNotEmpty(encoder.encode(data))) {
    shareMallEntityGood.setPictureEncode(encoder.encode(data));
    shareMallEntityGood.setShareGoodQRcode(HOME_URL + "/api/oAuth2/goodDetailShare?gid=" + goodId + "&" + "memberid=" + memberId + "&" + "groupId=" + groupId);
    shareMallEntityGood.setErrorCode(Rescode.SUCCESS);
    shareMallEntityGood.setErrorMsg("图片生成成功");
    } else {
    shareMallEntityGood.setErrorCode(Rescode.FAIL);
    shareMallEntityGood.setErrorMsg("操作失败");
    }
    } catch (Exception e) {
    e.printStackTrace();
    throw new Exception("处理异常");
    } finally {
    // 删除内存中的图片
    // File file = new File(uuid + ".png");
    delectFile(fileName);
    File f = new File(fileName);
    f.delete();
    System.out.println("+_____________________________________++");
    System.out.println(new File(fileName).exists());
    fileOn(fileName);
    }
    return shareMallEntityGood;
    }
  16.  
  17. private void ptMethod(int h_activity, int h_tip, int tip_2_top, Graphics activity, DecimalFormat df, SimpleDateFormat format, String activityName, Date endTime, Long amount, BufferedImage image) throws IOException {
    // 拼团活动名排布
    if (StringUtils.isNotEmpty(activityName)) {
    if (activityName.length() > 20) {
    activity.drawString("活动:" + URLDecoder.decode(activityName, "UTF-8").substring(0, 21) + "...", 20, (h_activity) / 2 + 30);
    } else {
    activity.drawString("活动:" + URLDecoder.decode(activityName, "UTF-8"), 22, (h_activity) / 2 + 30);
    }
    }
    // 拼团价排布
    Graphics2D amountPice = image.createGraphics();
    amountPice.setColor(Color.red);
    Font amountFont = new Font("微软雅黑", Font.PLAIN, 56);
    amountPice.setFont(amountFont);
    amountPice.drawString("¥" + df.format(amount / 100), 250, tip_2_top + (h_tip) / 2 - 40);
    // 拼团专享图片的插入
    Graphics mainPic3 = image.getGraphics();
    BufferedImage bimg3;
    // 拼团价图片
    String imgurl3 = "http://ebank007.oss-cn-hangzhou.aliyuncs.com/merchant/201808081327585pL1lD.jpg";
    bimg3 = ImageIO.read(new URL(imgurl3).openStream());
    int width = bimg3.getWidth();
    int height = bimg3.getHeight();
    // 图片距离随价格长度的增加而增加(价格长度每增加1+图片x轴位移+25)
    int priceLength = df.format(amount / 100).length();
    int priceSize = 3;
    int pictureWidth = 380;
    int clength = (priceLength - priceSize) * 31;
    int addPictureWidth = pictureWidth + clength;
    mainPic3.drawImage(bimg3, addPictureWidth, tip_2_top + (h_tip) / 2 - 85, width, height - 5, null);
    mainPic3.dispose();
    // 排布测试
    /* Calendar calendar = Calendar.getInstance();
    calendar.setTime(endTime);
    calendar.add(Calendar.DAY_OF_MONTH, +1);//+1今天的时间加一天
    endTime = calendar.getTime();*/
    String time = format.format(endTime);
    Graphics2D pb = image.createGraphics();
    pb.setColor(Color.red);
    Font pbFont = new Font("微软雅黑", Font.PLAIN, 24);
    pb.setFont(pbFont);
    String activityEndTime = "活动截止日期 : " + time + " (含当天) ";
    pb.drawString(URLDecoder.decode(activityEndTime, "UTF-8"), 250, tip_2_top + (h_tip) / 2 + 70);
    }
  18.  
  19. /**
    * 二维码图片的生成
    *
    * @param content 链接
    * @param qrcode_width 二维码宽
    * @param qrcode_height 二维码高
    * @return
    * @throws Exception
    */
    public static BufferedImage createImage1(String content, int qrcode_width, int qrcode_height ,BufferedImage image) throws Exception {
    Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    hints.put(EncodeHintType.MARGIN, 1);
    BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
    BarcodeFormat.QR_CODE, qrcode_width, qrcode_height, hints);
    int width = bitMatrix.getWidth();
    int height = bitMatrix.getHeight();
    BufferedImage image2 = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < width; x++) {
    for (int y = 0; y < height; y++) {
    image2.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
    : 0xFFFFFFFF);
    }
    }
    return image2;
    }
  20.  
  21. //生成图片文件
    @SuppressWarnings("restriction")
    public void createImage(String fileLocation, BufferedImage image) {
    BufferedOutputStream bos = null;
    if (image != null) {
    try {
    FileOutputStream fos = new FileOutputStream(fileLocation);
    bos = new BufferedOutputStream(fos);
    // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
    // encoder.encode(image);
    ImageIO.write(image, "png", bos);
    bos.flush();
    image.flush();
    fos.close();
    bos.close();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (bos != null) {//关闭输出流
    try {
    bos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
  22.  
  23. /**
    * 对文件进行删除操作
    *
    * @param str 文件路径
    */
    public static void delectFile(String str) {
    File f = new File(str);
    f.delete();
    }
  24.  
  25. /**
    * 判断文件是否存在
    *
    * @param x 文件中路径
    */
    public static void fileOn(String x) {
    File f = new File(x);
    if (f.exists()) {
    System.out.println("文件" + f.toString() + "还存在!!!!!!!!");
    } else {
    System.out.println("文件" + f.toString() + "已删除!!!!!!!!");
    }
    }
  26.  
  27. /**
    * 当前时间+多少天
    */
    public static Date getNextDay(Date date, int sum) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DAY_OF_MONTH, +sum);//+1今天的时间加一天
    date = calendar.getTime();
    return date;
    }

java BufferedImage 合成多张图片 - 因为JPEGImageEncoder 不能用的更多相关文章

  1. php 合并图片 (将活动背景图片和动态二维码图片合成一张图片)

    <?php //案例一:将活动背景图片和动态二维码图片合成一张图片 //图片一 $path_1 = './background.png'; //图片二 $path_2 = './FU0851_2 ...

  2. 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】

    CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...

  3. java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片

    1.多张jpg图合成gif动画 /** * 把多张jpg图片合成一张 * @param pic String[] 多个jpg文件名 包含路径 * @param newPic String 生成的gif ...

  4. java实现把两张图片合并(Graphics2D)

    package com.yin.text; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.i ...

  5. 使用Java代码将一张图片生成为字符画

    测试的图片: 输出的结果: 代码: package test; import java.awt.image.BufferedImage; import java.io.File; import jav ...

  6. android开发 两张bitmap图片合成一张图片

    场景:对android4.4解码gif(解码文章见前面一篇)后的图片进行每帧处理,android4.3 解码出来的每帧都很完整,但是到android4.4版本就不完整了,每帧都是在第一帧的基础上把被改 ...

  7. Java设计模式-合成模式

    合成模式有时也叫组合模式,对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 "部分/ ...

  8. java设计模式---合成模式3

    实例 下面以一个逻辑树为例子,以上面的原理图为蓝本,看看如何实现并如何使用这个树,这个结构很简单,但是如何去使用树,遍历树.为我所用还是有一定难度的.   这里主要用到树的递归遍历,如何递归.如何控制 ...

  9. Java设计模式——合成/聚合复用原则

    一.什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的. 简述为:要尽量使用合成/聚合,尽 ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议149:使用表驱动法避免过长的if和switch分支

    建议149:使用表驱动法避免过长的if和switch分支 随着代码变得复杂,我们很容易被过长的if和switch分支困扰. 一个类枚举类型Week如下: enum Week { Monday, Tue ...

  2. [Lua快速了解一下]Lua的model

    我们可以直接使用require(“model_name”)来载入别的lua文件,文件的后缀是.lua.载入的时候就直接执行那个文件了.比如: 我们有一个hello.lua的文件: print(&quo ...

  3. java中关于Collection和Map相关的类&接口之间的关系

    上图(引用自)

  4. 深入理解java虚拟机(十四)正确利用 JVM 的方法内联

    在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法.选中一段代码,敲下这个组合,非常简单.Eclipse也用类似的快捷键,使用 Alt+Shift+M.我讨厌长的方法,提起这个下面这个方 ...

  5. centos 7 Hadoop2.7.4完全分布式搭建(一)

    (一)系统准备与安装 1.准备下载centos7 (百度自行下载)可以到开源镜像站下载,速度比较快,比如清华的或者阿里的 在vmware上安装 这里我用的是vmware12 打开Vmware 选择文件 ...

  6. 通俗理解java序列化

    1 序列化是干什么的呢? 搬家的 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object sta ...

  7. Android-AndroidStudio Run 'app'安装APK到设备的过程

    1.AndroidStudio 点击Run ‘app’. 2.点击Run ‘app’就会将所有.class文件用SDK工具集处理成.dex, 用SDK工具集将图片/资源/布局文件/AndroidMan ...

  8. duilib入门简明教程 -- 完整的自绘标题栏(8)

       看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题栏吧~     看到下面这个效果图,小伙伴们是不是有点惊呆了呢~O(∩_∩)O~       duil ...

  9. AgentJob--修改操作系统时间对Job的影响

    场景:有一个数据库作业每10分钟运行一次,在系统管理员修改操作系统时间后,作业长时间未运行. 分析:作业最后一次运行时间是 10:20,按照作业的计划,下一次的运行时间为 10:30,而系统管理员修改 ...

  10. Win7 家庭普通版开启超级管理员

    将以下内容copy保存为admin.reg文件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ ...