08 2018 档案

Lock的lockInterruptibly()方法
摘要:lockInterruptibly()方法能够中断等待获取锁的线程。当两个线程同时通过lock.lockInterruptibly()获取某个锁时,假若此时线程A获取到了锁,而线程B只有等待,那么对线程B调用threadB.interrupt()方法能够中断线程B的等待过程。 示例: 要执行doBu 阅读全文

posted @ 2018-08-31 16:57 Deltadeblog 阅读(2751) 评论(4) 推荐(0)

synchronized和ReentrantLock
摘要:相同之处 都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。 不同之处 实现层次 这两种方式最大区别就是对于S 阅读全文

posted @ 2018-08-31 16:01 Deltadeblog 阅读(198) 评论(0) 推荐(0)

java fail-fast和fail-safe
摘要:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(如增加、删除等),则会抛出Concurrent Modification Exception。 输出结果为: 0java.util.ConcurrentModificationException 阅读全文

posted @ 2018-08-29 19:59 Deltadeblog 阅读(176) 评论(0) 推荐(0)

数组中只出现一次的数字(java实现)
摘要:问题描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 解题思路 如果数组中只有一个数字出现奇数次,则将数组中所有的数字做异或可得该数字。 数组中有两个数字出现奇数次,设这两个数字分别为a、b,则将数组中所有的数字做异或得到的是a与 b异或的结果,设 阅读全文

posted @ 2018-08-29 10:13 Deltadeblog 阅读(665) 评论(0) 推荐(0)

Eclipse Build path
摘要:Build Path用于设置Java的构建路径,管理Java工程所包含的资源,使工程结构清晰合理。 包括以下几项: Source Source包括 source folder和output folder source folder:存放.java源文件的根目录; output folder:存放.c 阅读全文

posted @ 2018-08-27 14:39 Deltadeblog 阅读(167) 评论(0) 推荐(0)

线程池的优点
摘要:提高资源利用率与响应速度 线程池可以重复利用已经创建了的线程 ,线程的创建和销毁的开销是巨大的,而通过线程池的重用大大减少了这些不必要的开销,当然既然少了这么多消费内存的开销,其线程执行速度也是突飞猛进的提升。 具有可管理性 线程池可以提供定时、定期、单线程、并发数控制等功能。比如通过Schedul 阅读全文

posted @ 2018-08-27 11:02 Deltadeblog 阅读(301) 评论(0) 推荐(0)

MySQL创建计算字段
摘要:在数据库原有的字段(列)中创建新的字段。 计算字段是运行时在SELECT语句内创建的。 拼接字段 vendors表中存在字段vend_name, vend_country,现在需要创建二者的组合字段vend_name(vend_country) ,并将其命名为vend_title mysql> SE 阅读全文

posted @ 2018-08-23 20:19 Deltadeblog 阅读(136) 评论(0) 推荐(0)

java 对象的创建
摘要:jvm在创建对象时,首先判断该对象所对应的类是否已经被加载、链接和初始化,如果没有则先执行类的加载过程。类的加载过程见 java类加载。 类加载检查通过后,虚拟机在堆中为新生对象分配内存。 内存分配完成后,虚拟机将分配到的内存空间(不包括对象头)都初始化为零值,这一步操作保证了对象的实例字段在jav 阅读全文

posted @ 2018-08-23 19:17 Deltadeblog 阅读(108) 评论(0) 推荐(0)

JVM垃圾回收
摘要:回收的区域:java堆与方法区。 程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭,不需要考虑内存回收的问题。 方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~95%的空间,而永久代的垃圾收集效率远低于此。 故垃圾回收主要 阅读全文

posted @ 2018-08-19 09:55 Deltadeblog 阅读(149) 评论(0) 推荐(0)

JVM 新生代与老年代
摘要:JVM中的堆可分为新生代与老年代 新生代 新生代主要是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。 新生代又分为 Eden区、ServivorFrom、ServivorTo三个区。 Eden区:Java新对象的出生地(如果新创建的对象 阅读全文

posted @ 2018-08-17 19:42 Deltadeblog 阅读(620) 评论(0) 推荐(0)

java 异常处理
摘要:Exception与Error Java非正常情况分为两种:异常(Exception)与错误(Error),二者都是继承自Throwable类。 Error错误描述的是java虚拟机(jvm)相关的错误,如OutOfMemoryError、StackOverflowError。应用程序无法捕捉也无法 阅读全文

posted @ 2018-08-16 17:05 Deltadeblog 阅读(135) 评论(0) 推荐(0)

二叉搜索树转有序双向链表
摘要:题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题方法: 由于二叉搜索树的中序遍历,按照由小到大的顺序依次遍历树中的每个结点,所以可以利用中序遍历解决此题。 使用指针last指向上一次遍历的结点,将last指向的结点与 阅读全文

posted @ 2018-08-14 17:13 Deltadeblog 阅读(402) 评论(0) 推荐(0)

java 对象序列化
摘要:对象序列化 序列化 :将java对象转换成字节序列,这些字节序列可以保存在磁盘上,或通过网络传输。 反序列化:将字节序列转换成java对象。 对象序列化步骤 需要序列化的对象所对应的类需要实现Serializable接口; 创建一个ObjectOutputStream实例,ObjectOutputS 阅读全文

posted @ 2018-08-12 18:46 Deltadeblog 阅读(237) 评论(0) 推荐(0)

java 字符集 Charset
摘要:字符集就是为每个字符编个号码。如ASCII编码中,字符 'A' 的号码为 65 (或二进制01000001);GBK编码中,字符 '国' 对应的号码为47610 。 编码:将字符序列转换成二进制序列。 解码:将二进制序列转换成字符序列。 java提供Charset类来处理字节序列与字符序列的转换。 阅读全文

posted @ 2018-08-09 19:26 Deltadeblog 阅读(1774) 评论(0) 推荐(0)

MySQL 过滤数据(WHERE子句)
摘要:WHERE子句操作符 从表products中检索prod_name,prod_price列,返回prod_price=2.5的行 mysql> SELECT prod_name, prod_price FROM products -> WHERE prod_price = 2.5 ; 从表produ 阅读全文

posted @ 2018-08-08 22:28 Deltadeblog 阅读(166) 评论(0) 推荐(0)

无重复字符的最长子串
摘要:问题描述: 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 "wke" ,长度是3。 解题思路: 阅读全文

posted @ 2018-08-03 21:11 Deltadeblog 阅读(112) 评论(0) 推荐(0)

二叉查找树
摘要:概念与定义 一棵二叉查找树是一棵二叉树,其中每个节点都含有一个键(以及相关联的值,即key-value对), 且每个节点的键都大于其左子树中任意节点的键而小于其右子树中任意节点的键。 (图中数字表示节点的键,由于键的唯一性,后续内容皆用键代指节点) 节点的定义 二叉树中的一个节点应当包含,一个键、一 阅读全文

posted @ 2018-08-03 20:34 Deltadeblog 阅读(273) 评论(0) 推荐(0)

MySQL 检索数据(SELECT)
摘要:检索单个列 mysql> SELECT 列名 FROM 表名; 如下,从表products中检索prod_name列 mysql> SELECT prod_name FROM products; 检索多个列 mysql> SELECT 列名,列名... FROM 表名; 如下,从表products中 阅读全文

posted @ 2018-08-02 23:37 Deltadeblog 阅读(346) 评论(0) 推荐(0)

java 加载数据库驱动
摘要:JDBC编程步骤见 JDBC编程步骤 JDBC编程的第一步是加载数据库驱动,使用Class类的forName()方法,Class.forName("com.mysql.jdbc.Driver")。 比较令人疑惑的是,它是如何加载驱动的,后续的DriverManager又是如何利用该驱动的。 打开Dr 阅读全文

posted @ 2018-08-02 19:16 Deltadeblog 阅读(4590) 评论(0) 推荐(0)

JDBC 编程步骤
摘要:java访问数据库的步骤如下: 加载数据库驱动 通常使用Class.forName(driverClass)来加载驱动 通过DriverManager获取数据库连接 url: 数据库的url,用于定位数据库,如 jdbc:mysql://hostname:port/databasename user 阅读全文

posted @ 2018-08-02 17:32 Deltadeblog 阅读(447) 评论(0) 推荐(0)

三种方法获取Class对象的区别
摘要:有关反射的内容见 java反射 得到某个类的Class对象有三种方法: 使用“类名.class”取得 Class.forName(String className) 通过该类实例对象的getClass() 三种方法有何不同? 类名.class 不做类的初始化工作,返回类的Class对象。 Class 阅读全文

posted @ 2018-08-02 16:17 Deltadeblog 阅读(575) 评论(0) 推荐(0)

java 反射创建实例与new创建实例的区别
摘要:new创建实例 new创建一个编译时已知的类的实例,也即是静态的创建实例; 可以调用类的任何构造器来创建实例; 速度更快,由于可以将需要的类写入字节文件中(hardcoded into the bytecode)。 反射创建实例(如Class.forName().newInstance()) 反射创 阅读全文

posted @ 2018-08-02 11:12 Deltadeblog 阅读(1037) 评论(0) 推荐(0)

导航