- 博客(71)
- 收藏
- 关注
原创 线程同步
七 同步:并发 多个线程访问同一个资源,为了确保资源安全,加入同步 -à线程安全synchronize--->同步 1 同步块 synchronized(引用类型/this/类.class){ } 2 同步方法 synchronizedpackage thread.syn;public class Web
2017-03-23 16:16:42
413
原创 线程基本信息
六 线程基本信息:isAlive() 判断线程是否还“活”着,即线程是否还未终止 getPriority() 获得线程的优先级数据 setPriority() 设置线程的优先级数据
2017-03-23 16:09:49
521
原创 线程状态
三.线程状态:新生状态:用new关键字或者Thread类或者子类建立一个线程对象就绪状态:start方法进入运行状态:run方法阻塞状态:让出CPU暂时停止自己的状态死亡状态:一个是正常运行的线程完成它的全部工作,另一个强制终止(stop或destroy),不推荐四.停止线程(重点): 1 自然终止,线程正常执行完毕 2 外部干涉
2017-03-23 16:06:42
402
原创 创建线程
一:程序 进程 线程1 程序:指令集 静态概念2 进程:操作系统调度程序 动态概念3 线程(Thread):在进程内多条执行路径,是进程中的一个“单一的连续控制流程”一个进程可以拥有多个并行线程一个进程中的线程共享相同的内存单元/内存地址空间,可以访问相同的变量和对象,而且它们从相同堆中分配对象二:创建线程:1 继承Thread方法+run():在java中负责线
2017-03-23 15:54:38
461
原创 桥接模式
核心要点:处理多继承结构,处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。 可以取代多层继承的方案。极大减少子类的个数,从而可以极大的减少子类的个数 极大的提高了系统可扩展性,在两个变化的维度中任意扩展一个维度,都不需要修改原系统。代码:package Bridge;/** * 品牌维度 * *
2017-03-22 10:06:15
309
原创 代理模式
核心作用:通过代理,控制对对象的访问,可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理核心角色: 抽象角色:定义代理角色和真实角色的公共对外方法 真实角色:实现抽象角色,定义真实角色所需要的业务逻辑,供代理角色调用 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑来实现抽象方法,并
2017-03-21 21:59:56
239
原创 链结点
核心思想:链结点中包含一个数据域还有一个指针域,其中数据域用来包装数据,指针域用来指向下一个链结点Java代码:package ch05;public class Link { // 数据域 private long data; // 指针域 private Link next; public Link(long data) { this.data = data;
2017-03-20 19:41:26
712
原创 优先级队列
核心思想:数据项按照关键字的值有序,这样关键字最小的数据项(或者最大)总是在对头,数据插入的时候会按照顺序插入到合适的位置以确保队列的顺序Java代码:package ch04;public class PriorityQueue { // 数组 private long[] arr; // 最大空间 private int maxSize; // 有效元素大小 pri
2017-03-20 17:17:30
287
原创 循环队列
Java实现循环队列:package ch04;public class CircularQueue { // 数组 private long[] arr; // 最大空间 private int maxSize; // 有效元素大小 private int elmes; // 对头 private int font; // 队尾 private int end
2017-03-20 16:51:26
290
原创 队列
核心:先进先出实现队列:package ch04;public class Queue { // 数组 private long[] arr; // 最大空间 private int maxSize; // 有效元素大小 private int elmes; // 对头 private int font; // 队尾 private int end; /
2017-03-20 16:45:42
247
原创 适配器模式
适配器(adapter)模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。模式中的角色:1 目标接口:客户期待的接口。可以是具体的或抽象的类,也可以是接口 2 需要适配的类:需要适配的类或者适配者类 3 适配器:通过包装一个需要适配的对象,把原接口转换成目标接口 场景:
2017-03-20 16:36:22
257
原创 原型模式
原型模式(克隆模式):1通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式2 以某个对象为原型,复制新的对象。避免了重新执行构造过称步骤3 克隆出的新对象不会改变原型对象,然后再修改克隆的值;new创建的对象属性采用的是默认值实现:Cloneable接口和Clone()方法浅克隆:复制之后,若s1的属性改变,则s2的属性也会改变package
2017-03-20 16:05:53
273
原创 建造者模式
建造者模式:本质:分离了对象子组建的单独构造(Builder来负责)和装配(由Director负责),从而构造出复杂的对象。适用于某个对象的构建过程复杂的情况下。2 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象,也就实现了构建算法,装配算法的耦合,实现了更好的复用。package builder;//构
2017-03-20 16:01:57
302
原创 工厂模式
工厂模式(实现了创建者与调用者的分离)核心本质:实例化对象,用工厂方法代替new操作;将选择实现类、创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。分类1 简单工厂模式:用来生产同一等级结构中的任意产品,只有一个工厂类。也叫静态工厂模式,就是工厂类一般使用静态方法,通过接受的参数来返回不同的对象实例(缺点:对于增加新的产品,需要修改已有代码,违反了开闭原则)
2017-03-17 12:17:35
272
原创 字母反序输出(栈的应用)
输入abcd ,输出dcbajava代码:package ch03;public class Reverse { private String input; public Reverse(String input) { this.input = input; } public String doReverse() { CharStack cs = new Char
2017-03-16 09:31:12
1515
原创 栈
栈:只允许访问一个数据项,也就是最后插入的数据项(先进后出,后进先出)栈基本操作代码(Java):package ch03;public class MyStack { private int maxSize; private long[] arr; private int top; // 构造方法 public MyStack(int size) { maxSiz
2017-03-16 09:26:37
213
原创 数组对象排序
经典学生类:Java代码:package cho2;public class TestStudentArray { public static void main(String[] args) { StudentArray sArr = new StudentArray(); Student st1 = new Student(100, "d张三", "男", 20);
2017-03-15 21:39:43
352
原创 排序之归并排序
Java代码:package cho2;public class mergeSort { public static int[] sort(int[] nums, int low, int high) { int mid = (low + high) / 2; if (low < high) { // 左边 sort(nums, low, mid); // 右边
2017-03-15 17:00:38
260
原创 排序之堆排序
Java代码:package cho2;import java.util.Arrays;public class HeapSort { public static void main(String[] args) { int[] a = { 31, 41, 59, 26, 53, 58, 97 }; for (int i = 0; i < a.length - 1; i++)
2017-03-15 16:59:35
240
原创 排序之快速排序
Java代码:package cho2;public class quickSort { public static void main(String[] args) { int[] numbers = { 10, 20, 15, 0, 6, 7, 2, 1, -5, 55 }; System.out.print("排序前:"); printArr(numbers);
2017-03-15 16:58:26
250
原创 排序之冒泡,选择,插入,希尔
Java代码:package cho2;public class Array { public static void main(String[] args) { int[] arr = { 12, 56, 79, 45, 63 }; System.out.print("原数组为:"); Array.display(arr); System.out.println();
2017-03-15 16:57:10
218
原创 单例模式
核心:保证一个类只有一个实例(对象),并且提供一个访问该实例的全局访问点单例模式注意的点:线程安全,调用效率高,懒加载实现方式有五种:1 饿汉式:线程安全,调用效率高,不能延时加载//饿汉式实现单例模式public class SingletonDemo1 { //类初始化时,立即加载对象(没有延时加载的优势)。加载类时,天然的是线程安全的! private stat
2017-03-15 15:53:50
251
原创 数组存储对象
Person类数组package ch01;public class TestPersonArray { public static void main(String[] args) { PersonArray pa=new PersonArray(); //创建对象 Person p1=new Person("张三", 20, "男");
2017-03-14 16:15:53
1862
原创 有序数组查找
有序数组查找有线性查找,即暴力查找;当然最优的为二分法查找二分法查找Java代码public int binaryFind(long searchKey) { int ins=0; int low=0; int pow=elems; while(true){ ins=(low+pow)/2; if(arr[ins]==searchKey){
2017-03-14 15:22:34
552
原创 数组面向过程与面向对象的基本操作
数组的基本操作:面向过程:(Java代码)package ch01;public class TestArray2 { public static void main(String[] args) { int[] intArray = new int[10]; // 循环插入数据 for (int i = 0; i < intArray.length; i++) {
2017-03-14 14:45:10
580
原创 希尔排序
希尔排序是通过比较相距一定间隔的元素来工作的,也叫缩减增量排序package chapter7;public class Demo2 { public static void main(String[] args) { Integer a[] = { 34, 8, 64, 80, 32, 21 }; shellSort(a); } public static > voi
2017-02-23 20:18:45
228
原创 插入排序
1.使用交换排序:package chapter7;public class Demo1 { public static void main(String[] args) { Integer a[] = { 34, 8, 64, 51, 32, 21 }; insertionSort(a); } public static > void insertionSort(In
2017-02-23 16:42:54
245
原创 运行时间为对数的经典三例子
1.折半查找package chapter2;public class Demo2 { public static void main(String[] args) { int a[] = { 13, 11, 2, -2, -4, -5 };// 规定已完成排序 int x = -4; System.out.println(binarySearch(a, x)); }
2017-02-23 10:21:11
280
原创 最大子序列和问题
给定整数A1 A2.....An,求∑_(k=i)^j Ak的最大值package chapter2;public class Demo1 { public static void main(String[] args) { int a[] = { -2, 11, -4, 13, -5, -2 }; System.out.println(maxSubSum(a)); }
2017-02-23 10:03:25
249
原创 使用object表示泛型
java的基本思想就是通过使用像object这样适当的超类实现泛型类package chapter1;class MemoryCell { private Object storedValue; public Object read() { return storedValue; } public void write(Object x) { storedValue =
2017-02-22 15:08:18
605
原创 打印整数的递归例程
用递归函数,打印整数:package chapter1;import java.util.Scanner;public class Demo2 { public static void main(String[] args) { @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in);
2017-02-22 11:05:59
465
原创 递归实现f(x)=2f(x-1)+x^2
代码如下:package chapter1;import java.util.Scanner;public class Demo1 { public static void main(String[] args) { @SuppressWarnings("resource") Scanner scanner=new Scanner(System.in); int x=s
2017-02-22 10:42:03
1996
原创 CCF之有趣的数(java)
试题编号:201312-4试题名称:有趣的数时间限制:1.0s内存限制:256.0MB问题描述:问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3
2017-02-16 20:05:07
1201
原创 CCF之交通规则(java)
解题代码(java):方法一:import java.util.HashSet;import java.util.Scanner; public class Main { public static void main(String[] args) { new Main().run(); } pub
2017-02-16 19:57:20
913
原创 CCF之炉火传说(java)
试题编号:201609-3试题名称:炉石传说时间限制:1.0s内存限制:256.0MB问题描述:问题描述 《炉石传说:魔兽英雄传》(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集换式卡牌游戏(如下图所示)。游戏在一个战斗棋盘上进行,由两
2017-02-16 19:54:37
970
原创 CCF之火车购票
解题代码(java):方法一:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int
2017-02-16 19:51:24
917
原创 CCF之最大波动(java)
试题编号:201609-1试题名称:最大波动时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。输入格式 输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。 第二行包
2017-02-16 19:48:34
1116
原创 CCF之游戏(java)
试题编号:201604-4试题名称:游戏时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列。 方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如
2017-02-15 21:21:34
4980
原创 CCF之路径解析(java)
试题编号:201604-3试题名称:路径解析时间限制:1.0s内存限制:256.0MB问题描述:问题描述 在操作系统中,数据通常以文件的形式存储在文件系统中。文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。文件有内容,用于存储数据。目录是容器,可包含文件
2017-02-15 21:19:43
1268
原创 CCF之俄罗斯方块(java)
试题编号:201604-2试题名称:俄罗斯方块时间限制:1.0s内存限制:256.0MB问题描述:问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个
2017-02-15 21:17:54
1622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人