随笔分类 -  Java

摘要:线程不安全举例,存钱取钱 账户余额有时为负数。 会出现以上两种结果,都是错误的。 并发:指同一个对象被多个线程同时操作。 并发可能会导致数据不一致,存在线程安全等问题。 解决此问题可以使用synchronized关键字修饰方法(锁的是this对象) 或者 代码块 如下解决上面的不同步问题 采用的是s 阅读全文
posted @ 2019-06-12 11:35 Practical 阅读(187) 评论(0) 推荐(0)
摘要:sleep 变为阻塞态 但不释放锁 休眠指定毫秒时间 yield 变为就绪态 可能立即被执行 也可能不立即被执行 join 插队 暂停当前执行的线程 让调用join的线程先执行 线程的run方法可以写的比较复杂,可以在其中启动另一个线程。 线程状态:JDK文档中的 线程的优先级:1-10 设置优先级 阅读全文
posted @ 2019-06-11 17:00 Practical 阅读(162) 评论(0) 推荐(0)
摘要:java实现多线程有三种方式:继承Thread类,重写run方法,启动使用start;实现runnable接口,重写run方法;实现callable接口,重写call方法(可以有返回值,也可以抛出异常) 1.多线程实现文件下载 利用FileUtils.copyURLtoFile() 模拟抢票(同步问 阅读全文
posted @ 2019-06-10 23:34 Practical 阅读(502) 评论(0) 推荐(0)
摘要:commos_io.jar包下载地址:http://commons.apache.org/proper/commons-io/download_io.cgi 官方文档地址:http://commons.apache.org/proper/commons-io/javadocs/api-release 阅读全文
posted @ 2019-06-05 11:49 Practical 阅读(938) 评论(0) 推荐(0)
摘要:装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 用BufferedInp 阅读全文
posted @ 2019-05-30 23:04 Practical 阅读(415) 评论(0) 推荐(0)
摘要:Reader和Writer针对字符文件 对图片类文件可能就显得无能为力了 会损坏文件 package ioStudy; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; impo 阅读全文
posted @ 2019-05-29 22:59 Practical 阅读(260) 评论(0) 推荐(0)
摘要:1.字节流 InputStream(抽象类) 1 package ioStudy; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import 阅读全文
posted @ 2019-05-29 21:56 Practical 阅读(223) 评论(0) 推荐(0)
摘要:falsetrue .classpath.project.settingsbinsrctempF:\EclipseWorkspace\Java300\.classpathF:\EclipseWorkspace\Java300\.projectF:\EclipseWorkspace\Java300\. 阅读全文
posted @ 2019-05-29 20:07 Practical 阅读(160) 评论(0) 推荐(0)
摘要:TreeMap底层是用红黑树实现的,源码如下: Set为一接口(没有顺序 不可重复),其实现类HashSet底层实现实为HashTable JDK源码如下: 阅读全文
posted @ 2019-05-24 23:07 Practical 阅读(255) 评论(0) 推荐(0)
摘要:Collection接口中定义的方法如下,所有继承自Collection接口的接口(List,Set)的实现类均实现了这些方法。 List容器是有序、可重复的,常用的实现类:ArrayList,LinkedList,Vector(线程安全的) 带索引的add,remove操作。 自己实现的MyArr 阅读全文
posted @ 2019-05-23 11:58 Practical 阅读(230) 评论(0) 推荐(0)
摘要:数组的插入、删除、扩容本质上都是用的数组的复制。Java中数组的拷贝如下: System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 1 public class ArrayCopy1 { 2 pub 阅读全文
posted @ 2019-05-22 20:53 Practical 阅读(167) 评论(0) 推荐(0)
摘要:回收过程: 1.发现无用的对象 2.回收无用对象占用的内存的空间。 垃圾回收相关算法: 1.引用计数法 堆中每个对象都有一个引用计数。被引用一次,计数加一。被引用变量值变为null,则计数减一。 到计数变为0,则表示为无用对象。 优点:算法简单 缺点:无法识别循环引用(相互引用对方,导致计数器不为0 阅读全文
posted @ 2019-04-28 12:20 Practical 阅读(274) 评论(0) 推荐(0)
摘要:栈存放:会为每个方法(包括构造函数)开辟一个栈指针,方法执行完毕后,会自动退出,并释放空间,主要每个方法中的存放局部变量 局部变量 先进后出 自下而上存储 方法执行完毕 自动释放空间 堆: 存放new出来的对象 需要垃圾回收器来回收 方法区:其实也是在堆中的 存放类的信息(代码)、 static变量 阅读全文
posted @ 2019-04-28 11:51 Practical 阅读(316) 评论(0) 推荐(0)
摘要:”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。 Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而st 阅读全文
posted @ 2019-03-27 10:38 Practical 阅读(258) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-03-22 10:26 Practical 阅读(144) 评论(0) 推荐(0)
摘要:将其中的Table换成你自己创建的Tabel就好了。 阅读全文
posted @ 2019-01-07 16:23 Practical 阅读(1806) 评论(0) 推荐(0)
摘要:Beanutils工具在使用时几乎只用到以下几个方法,其中一个方法通常情况下都是使用匿名内部类,用来注册日期类型转换器,以将字符串类型的数据转换成指定格式的日期类型。 BeanUtils.setProperty(bean, name, value):为指定bean实例的属性设值,等同于bean.se 阅读全文
posted @ 2019-01-03 17:13 Practical 阅读(1006) 评论(0) 推荐(0)
摘要:内省和反射有什么区别? 反射是在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。 内省(IntroSpector)是Java 语言对 Bean 类属性、事件的一种缺省处理方法。 JavaBean是一种特殊的类,主要用于传递数 阅读全文
posted @ 2019-01-02 19:19 Practical 阅读(348) 评论(0) 推荐(0)
摘要:一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示: 二、使用数据库连接池优化程 阅读全文
posted @ 2018-12-29 16:29 Practical 阅读(516) 评论(0) 推荐(0)
摘要:本文先做知识点的简单介绍,最后附完整案例。 一、解析XML文件 二、利用JAVA的iterator来导航文档(遍历文档) 三、在<dom4j>中,可以在Document或树中的任何节点(例如Attribute,Element)上计算XPath表达式。 这允许使用单行代码在整个文档中进行复杂导航 例如 阅读全文
posted @ 2018-12-13 22:35 Practical 阅读(2071) 评论(0) 推荐(0)