java访问jar内的图片资源

转自:http://blog.csdn.net/andycpp/article/details/1231619   当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用getResource()方法来解决这个问题。下面我们具体分析2种最常见的情况: 1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为: andy.jar     |andycpp              |  GUITest.class              |_  images                          |_ Snap1.jpg因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问:         java.net.URL imgURL = GUITest.class.getResource(“images/

阅读全文...

py学习笔记:python3.4连接mysql数据库

下载第三方mysql库 http://yunpan.cn/QC2gemBIcUvui  访问密码 07cf 解压到某个文件夹下,通过dos进入文件夹,并输入 python setup.py install进行安装 coding=utf-8 #author = 'pengwei' #导入mysql库 import pymysql #连接数据库 db = pymysql.connect(host="localhost", user="root", passwd="wei8888go", db="score", charset='utf8') cursor = db.cursor() cursor.execute("SELECT * FROM users") result = cursor.fetchall() for record in result:

阅读全文...

py学习笔记:第三方库引入&抓取网页内容

下载第三方库httplib2 http://yunpan.cn/QCvB7ZtiYJerd  访问密码 8420 配置python的环境变量 在path中加入python的安装目录 执行第三方库中的setup.py文件完成安装 coding=utf-8 #author = 'pengwei' import urllib.request import webbrowser url = "http://pw.ecjtu.org/" response = urllib.request.urlopen(url) page = response.read() #print(page) open('pw.html', 'wb').write(page) webbrowser.open_new('pw.html') 运行程序,浏览器自动打开一个抓取的目标网站内容的网页。

阅读全文...

Android Studio教程(Eclipse导入工程和区别)

转自:http://www.newasp.net/tech/73673.html Android Studio教程本文主要介绍了从Eclipse导入工程到Android Studio以及Eclipse工程与Android Studio的区别和一些常用的快捷键。 android studio下载 我所有的操作与版本是基于Mac系统,在Windows上的同学基本类似(作为一个技术人员,这些应该都不是问题),下面就分主题开始吧: 一、从Eclipse导入工程到Android Studio 根据官方的介绍,Android Studio可以兼容Eclipse的现有工程,但需要做一些操作: 首先升级ADT到最新版本,目前为版本号为22(注意和ADT相关的组件最好一并升级,避免后期可能出现的错误) 选择需要从Eclipse导出的工程,右键选择Export并选择Android下的Generate Gradle Build Files(如下图): 选择完毕后并不会导出到其他地方,而是在本地工程生成了一个build.gradle文件,在Eclipse工程中也可以看到,这个文件是Android Studio识别的,如下图: 3.随后进入Android Studio并选择Import Project,可以看到刚刚在Eclipse中的项目图标变成了一个Android机器人图标,说明转换成功,这时候选择工程导入即可:

阅读全文...

四十条测试你是不是合格的PHP程序员

转自:http://blog.sina.com.cn/s/blog_52d20fbf0100owpi.html 四十条测试你是否合格的PHP程序员,不官方,也不权威,但很给力。超过三条就不合格了。超过五条就得好好反省下自己的不足了。 不会利用如phpDoc这样的工具来恰当地注释你的代码 对优秀的集成开发环境如 EclipsePHP EPP 或 Zend Studio PDT视而不见 从未用过任何形式的版本控制系统,如Subclipse 不采用某种编码与命名标准,以及通用约定,不能在项目开发周期里贯彻落实 不使用统一开发方式 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函数) 不在编码之前彻底规划你的程序 不使用测试驱动开发 不在错误开启状态下进行编码和测试(译注:参考PHP函数error_reporting) 对调试器的好处视而不见 不重构你的代码 不使用类似MVC模式把程序的不同层次划分开 不知道这些概念:KISS, DRY, MVC, OOP, REST

阅读全文...

MySQL存储过程详解

转自:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,

阅读全文...

Java对象的序列化与反序列化

转自:http://blog.csdn.net/yaolingrui/article/details/7633743 一、为什么要进行序列化 再介绍之前,我们有必要先了解下对象的生命周期,我们知道Java中的对象都是存在于堆内存中的,而堆内存是可以被垃圾回收器不定期回收的。从对象被创建到被回收这一段时间就是Java对象的生命周期,也即Java对象只存活于这个时间段内。 对象被垃圾回收器回收意味着对象和对象中的成员变量所占的内存也就被回收,这意味着我们就再也得不到该对象的任何内容了,因为已经被销毁了嘛,当然我们可以再重新创建,但这时的对象的各种属性都又被重新初始化了。所以如果我们需要保存某对象的状态,然后再在未来的某段时间将该对象再恢复出来的话,则必须要在对象被销毁即被垃圾回收器回收之前保存对象的状态。要保存对象状态的话,我们可以使用文件、数据库,也可以使用序列化,这里我们主要介绍对象序列化。我们很有必要了解这方面的内容,因为对象序列化不仅在保存对象状态时可以被用到(对象持久化),在Java中的远程方法调用RMI也会被用到,在网络中要传输对象的话,则必须要对对象进行序列化,关于RMI有机会我会再专门开贴介绍。 简单总结起来,进行对象序列化的话的主要原因就是实现对象持久化和进行网络传输,这里先只介绍怎样通过对象序列化保存对象的状态。 下面我们通过一个简单的例子来介绍下如何进行对象序列化。 二、怎样进行对象序列化 假设我们要保存Person类的某三个对象的name、age、height这三个成员变量,当然这里只是简单举例 我们先看下Person类,要序列化某个类的对象的话,则该类必要实现Serializable接口,

阅读全文...

Java 内存分配全面浅析

转自:http://blog.csdn.net/shimiso/article/details/8595564 本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。 进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。 简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域: l 寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。 l 栈:保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。 l 堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。

阅读全文...

Java中堆内存和栈内存详解

转自:http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。 引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,*实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!*   java中内存分配策略及堆和栈的比较

阅读全文...

Java创建对象的四种方式

1.通过new新建对象 通常都是使用java的关键字new来创建对象实例。 若有一个A类,则可以通过下面的语句创建A类的对象实例并指定到变量obj。 //定义A类 class A{ } //通过new创建A的对象 A a = new A(); 2.通过clone复制对象 若程序写成如下,则可以根据当前对象(this)建立一个新实例对象(没有调用构造函数). public class A implements Cloneable{ private A obj; public A cloneA() { try { obj = (A)this.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } } 如果需要复制上面的那个obj指向的对象实例时,调用somethingNew.cloneSomething()方法就ok了。 但是为什么不直接使用somethingNew.clone()呢?

阅读全文...