分类目录归档:JAVA

关于java的那些事儿

java.awt如何给窗体绘制图片

java在编写游戏的时候,我们希望一个图片是可以移动的,所以采用程序进行图片绘制定位比较方便。 如何将一个图片显示在java的窗体上呢。 其实只要在java的paint方法里,进行图片流的绘制就可以了。 g.drawImage(img,100,30,null ); //决定位置 package com.javaer.examples.awt;   import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image;   import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.WindowConstants;   public class DrewImage extends JFrame { ImageIcon icon; Image img; public DrewImage(){ icon=new ImageIcon(DrewImage.class.getResource("1.jpg" )); img=icon.getImage(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); … 继续阅读

发表在 JAVA | 标签为 , | 留下评论

深入理解java序列化

Java 序列化的高级认识 杨 硕, 研究生, 东北大学软件学院 魏 强, 硕士研究生, 东北大学软件学院 简介: 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。 引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识。 回页首 文章结构 本文将逐一的介绍几个情境,顺序如下面的列表。 序列化 ID … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论

java如何检测网络连通性

在网络编程中,有时我们需要判断两台机器之间的连通性,或者说是一台机器到另一台机器的网络可达性。在系统层面的测试中,我们常常用 Ping 命令来做验证。 网络联通性在一些游戏的设计中非常重要。测试了网络连接,还是不连接,有助于快速决定是否对一些网络进行连接。节省大量资源。 尽管 Java 提供了比较丰富的网络编程类库(包括在应用层的基于 URL 的网络资源读取,基于 TCP/IP 层的 Socket 编程,以及一些辅助的类库),但是没有直接提供类似 Ping 命令来测试网络连通性的方法。 本文将介绍如何通过 Java 已有的 API,编程实现各种场景下两台机器之间的网络可达性判断。 在下面的章节中,我们会使用 Java 网络编程的一些类库 java.net.InetAddress 和 java.net.Socket,通过例子解释如何模拟 Ping 命令。 测试代码: public static void main(String args[]) throws UnknownHostException { isAddressAvailable(“10.10.1.7″); InetAddress ad=InetAddress.getByName(“www.baidu.com.com”); printReachableIP(ad,80); … 继续阅读

发表在 JAVA | 标签为 , | 留下评论

java读取图片色彩值

读取图片的色彩值,是图片识别的基础逻辑。 package com.javaer.image;   import java.awt.AWTException; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File;   import javax.imageio.ImageIO;   public class ReadColor { /** * 读取一张图片的RGB值 * @throws Exception */ public void getImagePixel(String image) throws Exception { … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论

java UUID系统底层的不重复随机序列

java居然有这么个好用的简单的函数来生成永远不重复的一串字符。 package com.javaer.examples2; public class JavaUUID { /** * @param args */ public static void main(String[] args) { String uuid = java.util.UUID.randomUUID().toString(); System.out.println(uuid); uuid = uuid.replace("-",""); System.out.println(uuid); } } UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址,纳秒级时间,芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长.

发表在 JAVA | 标签为 , , | 留下评论

慢慢读,java断点续传多线程下载

java下载断点续传简单而言就是记录上次下载的位置,下次直接跳到这个位置开始下载就好了。 断点继续下载算法 package com.javaer.examples.file;     import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.UUID; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;   /** * * @author why * */ public class … 继续阅读

发表在 JAVA | 标签为 , , | 2 条评论

java多线程并行下载文件

多线程并行下载的核心特点就是分段,并行下载。 比如一个文件200M,分5个线程,那么就给砍成5份,分别同时下就好了。速度当然比一点点下载来的要快的多。 package com.javaer.examples.file;   import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection;   public class MyMutilDown { /** * 单线程的远程下载 */ public void SingleDown(String filePath, String url) { try … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论

看了不后悔,学习编程的八个建议

学习编程 1.读1000行代码,不如写一行代码 就如游泳一样,你看1万次别人游泳,自己不下水,还是不会。很多代码是看的时候看懂了。自己丢到一边,然后照别人思路写,都不一定能写出来。如果你是在学习编程那么请多写代码。 2.把基础搞扎实。 这一点php程序员感觉都还好。因为php简洁,没那么多花花绕。java就不同了,不少学校都在教学什么spring 三大架构。结果学生连for循环还没搞明白呢。架构始终是别人的,基础才是自己的。内功深厚了。什么架构都是小菜一碟。 3.做自己的小项目。找准目标,学得快。 人的确有惰性,而且经常容易失去目标。对于编程人员来说,树立目标最简单的办法便是模仿别人的程序。比如看到一个博客程序,我自己来写一个。我说的模仿不是去模仿别人的代码,而是根据别人的界面功能,来确定自己项目的需求。 4.多做题目。 如果感觉项目还不够做,那么可以去CSDN,ITEYE等编程网站,回答别人的提问。论坛人需要帮助的人很多。助人助己。 5.翻阅经典代码。 经典的程序代码都值得阅读。看多了。自己的代码水平就有所提高。看什么,看别人的代码结构,看别人注释的方法,看别人的思路。看完极可能的应用到自己的项目里去。 6.努力。 任何行业都离不开努力。我刚毕业的时候,规定不管多累,每天晚上自己学习一章.net编程。过了半年感觉突飞猛进。倒是现在反而有点懒惰了。 7.分享成功 定期分享自己的技术成果,有利于交朋友,巩固自己的知识。利人利己。有不少知识分享完毕,大家讨论讨论,对自己还是很有巩固作用的哈。 8.注意身体。 这个行当,整天坐着,刚开始2,3年还好。一般工作4年以上,都会得点脊椎病。适当运动提早预防。 以上为月小升个人的一些看法。如果能对学习编程的朋友们能有一点点帮助,那么就足够了。写出来,也发现了我自己的懒惰。

发表在 JAVA, PHP, 日常随笔 | 标签为 , | 留下评论

java得出两个日期之间所有日期

近日老要跑系统日志,每次发生问题要遍历每日的情况。代码改了好几次,每次输入的日期变化,都要修改不少代码。于是写了个日期类来调用。 包含以下功能 1.判断是否为闰年 2.判断一个月有几天 3.得出两个日期直接所有日期 package com.javaer.common;   import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date;   /** * java时间类 * * @author mc2 * */ public class JTime { static String dateFormat = "yyyy-MM-dd"; static SimpleDateFormat format = new … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论

awt swing编程java窗体加超级链接

上次编写的俄罗斯方块,为了给它加一个超级链接,发现java居然如此的笨笨。不过方法还是有的。基础思想为调用桌面。启动浏览器,之前看过这个启动的办法,当时看了觉得java这个方法没什么用处,现在发现,设计了这个办法,就有他的用处。 package com.javaer.examples.awt;   import java.awt.Color; import java.awt.Cursor; import java.awt.Desktop; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.URI;   import javax.swing.JFrame; import javax.swing.JLabel;   public class FrameLink extends JLabel { private String _url; private String _text; … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论