自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 线程同步

七 同步:并发  多个线程访问同一个资源,为了确保资源安全,加入同步  -à线程安全 synchronize--->同步     1 同步块        synchronized(引用类型/this/类.class){       }     2 同步方法          synchronized package thread.syn; public class Web

2017-03-23 16:16:42 443

原创 线程基本信息

六 线程基本信息:isAlive()  判断线程是否还“活”着,即线程是否还未终止                                 getPriority()  获得线程的优先级数据                                 setPriority()  设置线程的优先级数据                                        

2017-03-23 16:09:49 562

原创 线程状态

三.线程状态: 新生状态:用new关键字或者Thread类或者子类建立一个线程对象 就绪状态:start方法进入 运行状态:run方法 阻塞状态:让出CPU暂时停止自己的状态 死亡状态:一个是正常运行的线程完成它的全部工作,另一个强制终止(stop或destroy),不推荐 四.停止线程(重点):     1 自然终止,线程正常执行完毕     2 外部干涉          

2017-03-23 16:06:42 428

原创 创建线程

一:程序 进程 线程 1 程序:指令集 静态概念 2 进程:操作系统调度程序  动态概念 3 线程(Thread):在进程内多条执行路径,是进程中的一个“单一的连续控制流程” 一个进程可以拥有多个并行线程 一个进程中的线程共享相同的内存单元/内存地址空间,可以访问相同的变量和对象,而且它们从相同堆中分配对象 二:创建线程: 1 继承Thread方法+run(): 在java中负责线

2017-03-23 15:54:38 496

原创 桥接模式

核心要点:处理多继承结构,处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。       可以取代多层继承的方案。极大减少子类的个数,从而可以极大的减少子类的个数       极大的提高了系统可扩展性,在两个变化的维度中任意扩展一个维度,都不需要修改原系统。 代码: package Bridge; /** * 品牌维度 * *

2017-03-22 10:06:15 338

原创 代理模式

核心作用:通过代理,控制对对象的访问,可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理 核心角色:         抽象角色:定义代理角色和真实角色的公共对外方法         真实角色:实现抽象角色,定义真实角色所需要的业务逻辑,供代理角色调用         代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑来实现抽象方法,并

2017-03-21 21:59:56 264

原创 链结点

核心思想:链结点中包含一个数据域还有一个指针域,其中数据域用来包装数据,指针域用来指向下一个链结点 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 742

原创 优先级队列

核心思想:数据项按照关键字的值有序,这样关键字最小的数据项(或者最大)总是在对头,数据插入的时候会按照顺序插入到合适的位置以确保队列的顺序 Java代码: package ch04; public class PriorityQueue { // 数组 private long[] arr; // 最大空间 private int maxSize; // 有效元素大小 pri

2017-03-20 17:17:30 326

原创 循环队列

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 315

原创 队列

核心:先进先出 实现队列: 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 278

原创 适配器模式

适配器(adapter)模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 模式中的角色:1 目标接口:客户期待的接口。可以是具体的或抽象的类,也可以是接口               2 需要适配的类:需要适配的类或者适配者类               3 适配器:通过包装一个需要适配的对象,把原接口转换成目标接口   场景:

2017-03-20 16:36:22 279

原创 原型模式

原型模式(克隆模式):1通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式 2 以某个对象为原型,复制新的对象。避免了重新执行构造过称步骤 3 克隆出的新对象不会改变原型对象,然后再修改克隆的值;new创建的对象属性采用的是默认值 实现:Cloneable接口和Clone()方法 浅克隆:复制之后,若s1的属性改变,则s2的属性也会改变 package

2017-03-20 16:05:53 298

原创 建造者模式

建造者模式: 本质:分离了对象子组建的单独构造(Builder来负责)和装配(由Director负责),从而构造出复杂的对象。适用于某个对象的构建过程复杂的情况下。 2 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象,也就实现了构建算法,装配算法的耦合,实现了更好的复用。 package builder; //构

2017-03-20 16:01:57 331

原创 工厂模式

工厂模式(实现了创建者与调用者的分离) 核心本质:实例化对象,用工厂方法代替new操作;将选择实现类、创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。 分类 1 简单工厂模式:用来生产同一等级结构中的任意产品,只有一个工厂类。也叫静态工厂模式,就是工厂类一般使用静态方法,通过接受的参数来返回不同的对象实例(缺点:对于增加新的产品,需要修改已有代码,违反了开闭原则)  

2017-03-17 12:17:35 298

原创 字母反序输出(栈的应用)

输入abcd ,输出dcba java代码: 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 1570

原创

栈:只允许访问一个数据项,也就是最后插入的数据项(先进后出,后进先出) 栈基本操作代码(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 234

原创 数组对象排序

经典学生类: 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 374

原创 排序之归并排序

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 283

原创 排序之堆排序

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 264

原创 排序之快速排序

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 275

原创 排序之冒泡,选择,插入,希尔

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 241

原创 单例模式

核心:保证一个类只有一个实例(对象),并且提供一个访问该实例的全局访问点 单例模式注意的点:线程安全,调用效率高,懒加载 实现方式有五种: 1 饿汉式:线程安全,调用效率高,不能延时加载 //饿汉式实现单例模式 public class SingletonDemo1 { //类初始化时,立即加载对象(没有延时加载的优势)。加载类时,天然的是线程安全的! private stat

2017-03-15 15:53:50 273

原创 数组存储对象

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 1893

原创 有序数组查找

有序数组查找有线性查找,即暴力查找;当然最优的为二分法查找 二分法查找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 579

原创 数组面向过程与面向对象的基本操作

数组的基本操作: 面向过程:(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 606

原创 希尔排序

希尔排序是通过比较相距一定间隔的元素来工作的,也叫缩减增量排序 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 245

原创 插入排序

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 264

原创 运行时间为对数的经典三例子

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 313

原创 最大子序列和问题

给定整数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 268

原创 使用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 644

原创 打印整数的递归例程

用递归函数,打印整数: 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 485

原创 递归实现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 2040

原创 CCF之有趣的数(java)

试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   我们把一个数称为有趣的,当且仅当:   1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。   2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3

2017-02-16 20:05:07 1224

原创 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 940

原创 CCF之炉火传说(java)

试题编号: 201609-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   《炉石传说:魔兽英雄传》(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集换式卡牌游戏(如下图所示)。游戏在一个战斗棋盘上进行,由两

2017-02-16 19:54:37 1006

原创 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 959

原创 CCF之最大波动(java)

试题编号:201609-1试题名称:最大波动时间限制:1.0s内存限制:256.0MB问题描述: 问题描述   小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。 输入格式   输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。   第二行包

2017-02-16 19:48:34 1178

原创 CCF之游戏(java)

试题编号: 201604-4 试题名称: 游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列。   方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如

2017-02-15 21:21:34 5088

原创 CCF之路径解析(java)

试题编号: 201604-3 试题名称: 路径解析 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在操作系统中,数据通常以文件的形式存储在文件系统中。文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。文件有内容,用于存储数据。目录是容器,可包含文件

2017-02-15 21:19:43 1296

原创 CCF之俄罗斯方块(java)

试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个

2017-02-15 21:17:54 1660

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除