- 博客(35)
- 收藏
- 关注
转载 Java泛型:泛型类、泛型接口和泛型方法
根据《Java编程思想 (第4版)》中的描述,泛型出现的动机在于:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型类容器类应该算得上最具重用性的类库之一。先来看一个没有泛型的情况下的容器类如何定义:public class Container { private String key; private String value; public Con...
2018-06-28 19:11:08
244
转载 java 异常的限制
这一章节我们来介绍一下使用异常的限制。1.当父类与接口具有相同的方法而且方法同时抛出不同的异常,这个时候是不允许的。下面是错误的代码:package com.ray.ch10; public class Test extends Father implements MyInterface {//Exception AException in throws clause of Father.meth...
2018-06-27 16:49:35
382
转载 Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)神话丿小王子的博客主页 我们先看这样一段话:人是由大脑、肢体、器官等身体结果组成。而组成我们人体的心脏它也有自己的属性和行为(血液、跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活...
2018-06-26 21:50:29
207
原创 java中使用ListIterator来完成在迭代中对元素进行更多的操作。
import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class ListDemo2 { /** * @param args */ public static void main(String[] a...
2018-06-07 14:48:09
985
转载 Java中private、protected、public和default的区别
Java中private、protected、public和default的区别public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西default:有时候也称为frie...
2018-05-31 11:21:12
159
转载 深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅...
2018-05-30 14:06:22
106
原创 java 多线程 join 、yield
//jion 等待该线程结束class Demo implements Runnable{ public void run() { for(int x=0; x<50; x++) { System.out.println(Thread.currentThread().toString()+"....."+x); Thread.yield();//释放线程执行权,执...
2018-05-30 13:53:08
108
原创 java多线程等待强制唤醒——interrupt
/*停止线程:1,stop方法。2,run方法结束。怎么控制线程的任务结束呢?任务中都会有循环结构,只要控制住循环就可以结束任务。控制循环通常就用定义标记来完成。但是如果线程处于了冻结状态,无法读取标记。如何结束呢?可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具备cpu的执行资格。 当时强制动作会发生了InterruptedExce...
2018-05-30 13:28:02
1005
原创 java 多生产者消费者问题
/*生产者,消费者。多生产者,多消费者的问题。if判断标记,只有一次,会导致不该运行的线程运行了。出现了数据错误的情况。while判断标记,解决了线程获取执行权后,是否要运行!notify:只能唤醒一个线程,如果本方唤醒了本方,没有意义。而且while判断标记+notify会导致死锁。notifyAll解决了本方线程一定会唤醒对方线程的问题,虽然会唤醒本方线程,但是本方线程会whi...
2018-05-30 11:09:58
237
原创 java等待唤醒机制
/*等待/唤醒机制。 涉及的方法:1,wait(): 让线程处于冻结状态,被wait的线程会被存储到线程池中。2,notify():唤醒线程池中一个线程(任意).3,notifyAll():唤醒线程池中的所有线程。这些方法都必须定义在同步中。因为这些方法是用于操作线程状态的方法。必须要明确到底操作的是哪个锁上的线程。为什么操作线程的方法wait notify noti...
2018-05-30 10:06:41
359
转载 Java多线程的同步机制(synchronized)
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中 等待的某个线程就可以...
2018-05-29 16:39:02
383
转载 工厂模式
什么是工厂模式工厂模式概念:实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂方法模式的扩展工厂模式的意图定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。【http://www.360doc.com/content/11/0824/17/3034429_142983837.shtml】这两天突然想学...
2018-05-29 14:56:19
153
原创 单例模式——懒汉、饿汉
单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer...
2018-05-29 11:19:25
366
转载 HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综...
2018-05-29 10:43:07
115
原创 java中如何选择合集,以及ArrayList 、LinkedList与python 的list用法对比
如何选择集合?* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();Vector总是比ArrayList慢,所以要尽量避免使用。* 在各种Sets中,HashSet通常优于TreeSet(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。TreeSet存在的唯一理由:能够维护其内元素的排序状态。* 在各种Maps中...
2018-05-27 17:45:16
3761
原创 n阶矩阵的旋转实现——python 、java
python实现矩阵旋转有一个比较好用的函数zip()if __name__ == '__main__': a=[1,2,3] b=[4,5,6] c=[7,8,9] zipped=zip(a,b,c) for i in zipped: print(i) print('加*号相当于解压') for i in zip(*zip...
2018-05-27 16:08:17
1604
转载 堆排序
预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组...
2018-05-26 14:54:57
102
转载 快速排序的java实现
import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int[] a = {1, 2, 4, 5, 7, 4, 5 ,3 ,9 ,0}; System.out.println(Arrays.toString(a)); ...
2018-05-25 15:08:09
140
原创 宽度优先遍历——python
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018-05-25 10:16# @Author : xxd# @File : test.pyclass Node: def __init__(self,data,left=None,right=None): self.data=data...
2018-05-25 12:19:13
657
原创 python 前序、中序、后续遍历及非递归实现,宽度优先遍历实现
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018-05-24 15:16# @Author : xxd# @File : test.pyclass Node: def __init__(self,data,left=None,right=None): self.data=data...
2018-05-24 19:52:46
4257
原创 sql语句 的集合运算
题目描述获取所有非manager的员工emp_noCREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TA...
2018-05-24 16:12:43
636
原创 mysql中 having 用法
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数tCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));解法一:s...
2018-05-24 15:37:26
8043
原创 sql语句中 on 与where的区别
题目描述查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY K...
2018-05-24 13:12:08
2527
原创 java中string 和StringBuffe的replace 区别
String中String replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。StringBuffer中:String replace(char oldChar, char newChar)replace(int start, int end, String str)使用给定 St...
2018-05-20 16:29:41
628
转载 java中静态代码块> 构造代码块 >构造方法的执行顺序
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载当时做了这么一个小案例(想必这个大多数学java的都做过,不知道是否都理解了)class Fu{ static { System.out.println("Fu static code"); } ...
2018-05-20 11:10:20
85
转载 static 静态变量生命周期
static生命周期静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由st...
2018-05-20 10:49:40
1618
原创 java 、python 字符列表反转对比
java下:StringBuffer sBuffer = new StringBuffer(); sBuffer.append(789);System.out.println(sBuffer.reverse()); 输出:987python下:a=987print a[::-1]输出:987
2018-05-19 19:04:57
140
原创 java 、python 字符串转数字,数字转字符串方法对比
java下一、将字串 String 转换成整数 int。1). int i = Integer.parseInt([String]); 2). int i = Integer.valueOf(my_str).intValue()。二、将整数 int 转换成字串 String 1.) String s = String.valueOf(i);2.) String s = Integer.toStri...
2018-05-19 18:53:39
1124
原创 Java堆、栈和常量池以及相关String的讲解
在理解java堆和栈时看到的一片不错的文章原文链接:https://blog.csdn.net/youzhouliu/article/details/51804355一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也...
2018-05-18 19:51:48
123
原创 静态代码块,构造代码块和构造函数的区别--案列
1.执行顺序:静态代码块>构造代码块>构造方法 理由:静态代码块(static {} )在类加载的时候执行一次。 构造代码块({}内的部分)在每次创建对象时执行,始终在构造方法前执行。 构造方法在新建对象时调用( 就是新的时候 )。 注意:一个静态代码块在类加载的时候就执行,所以的它优先级高于入口main()的方法。 ...
2018-05-17 22:35:13
1073
原创 java 中i = i++ 之后 i 的值为什么是 i?
public class Inc { public static void main(String[] args) { Inc inc = new Inc(); int i = 0; inc.fermin(i); i= i++; System.out.println(i); } v...
2018-05-17 15:41:21
4626
3
转载 Java线程面试题 Top 50 (转载)
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和...
2018-05-16 21:04:49
96
原创 选择排序,冒泡排序区别与联系——python 实现
选择排序相邻元素两两比较,大的往后放,第一次完毕后,最小值就出现就出现在第一个。n个元素需要比n-1趟,第i每趟比完就可以少比前面的i个元素,因为那是已经比较完的。l=[2,8,4,1,1,10,6,9,3]n=len(l)for i in range(n-1): for j in range(i+1,n): if l[i]>l[j]: l...
2018-05-16 20:09:16
178
原创 快速排序的另一种简单实现
快速排序的原理:在已知的数列中选择一个数字作为基准,与剩余的数作比较,将比这个基准小的数放在左边,比其大的数放在右边;然后将基准左右两边的数列重复以上步骤,直到基准两边只有一个数字为止; 特点:不稳定,时间复杂度最理想 O(nlogn) 最差时间O(n^2)def quickSort(num, l, r): if l >= r: # 如果只有一个数字时,结束递归 ...
2018-05-16 19:50:30
161
原创 常用排序算法用法个人简单总结
排序个数n越小,采用简单排序越合适n数量很大,就用改进排序算法,在乎内存使用量建议用堆排序,在乎稳定性要求时建议用归并排序;对于时间要求高的,一般情况下快速排序比归并排序要快。堆排序总结堆排序适合于数据量非常大的场合(百万数据)。 堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可...
2018-05-16 12:50:22
203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人