自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 问答 (2)
  • 收藏
  • 关注

原创 Synchronized详解

Synchronized详解1、介绍Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍...

2019-09-03 23:40:39 218 1

原创 并发基础深入

并发基础深入join()的替代品注意javaSE5的java.util.concurrent类库包含诸如CyclicBarrier这样的工具,他们可能会比最初的线程类库的join()更加合适.捕获异常由于线程的本质特性,使得你不能捕获从线程中逃逸的异常,一旦异常逃出任务的run()方法,他就会向外传播到控制台,除非你采取特殊的步骤捕获这种错误的异常,在JavaSE5之前,你可以使用线程组来...

2019-09-03 23:39:21 188

原创 并发基础总结

并发基础总结Runnable和Thread要点:当从Runnable导出一个类时,他必须具有run方法,但是这个方法并无特殊之处-----他不会产生任何内在的线程能力.要实现线程行为,你必须现实的将一个任务附着到线程上.将Runnable对象转变为工作任务的传统方式就是把它提交给一个Thread构造器.当main创建Thread对象时,他并没有捕获任何的这些对象的引用,在使用普通对象时,...

2019-07-29 01:19:35 194 1

原创 基本数据类型在传参中的自顶向下和自底向上;this;访问权限修饰符

数据类型传参变化在重载方法中,如果传入的参数的数据类型的字节大小小于方法中声明的形式参数类型的字节大小,那么实际数据类型就会提升,char型略有不同,如果无法找到接受char参数的方法,就会直接升到int。如果传入的参数的数据类型的字节大小大于方法中声明的形式参数类型的字节大小,就得通过类型转换来执行显式窄化转换。如果不这样做,编译器就会报错。Demotion demotion=new ...

2019-07-15 00:33:25 180

原创 static和final以及初始化

static最近看的ThinkingInJava中又这样一句话:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。说道用途就首先介绍static的特点:当声明一个事物是static是,就意味着这个域或这个方法不会与包含它的那个类的...

2019-07-15 00:28:29 2115

原创 ==和equals()详解

误区不知道从哪里听来的==比较的是地址和值,equals比较的是值。这是大错特错的。==首先 ==在比较基本数据类型的时候比较的是值,而比较对象的时候比较的是两个对象的地址。数组属于对象,所以在比较数组的时候是以比较对象得方式int x = 10;int y = 10;String str1 = new String("abc");String str2 = new String...

2019-07-14 21:33:49 204

原创 赋值操作与参数传递

误区总是有人认为Java的赋值操作和传递参数操作都是passing by value和passing by reference。这很明显是错误的,在Java中只有 passing by value。众所周知,Java有两种数据类型结构:基本数据类型与引用数据类型。那么在赋值和传参自然也只会涉及到这两种。刨根究底,在内存中,基本数据类型的值是存在栈内存中的,而引用数据类型中,它的引用也是存在栈内存中...

2019-07-14 20:44:06 887

原创 IO流之对象序列化(Serializable接口和Externalizable接口)

Java对象序列化所有分布式应用常常需要跨平台,跨网络,因此要求所有传的签署,返回值都必须实现序列化。 定义:对象的序列化是指将一个Java对象写入IO流中,反序列化是指从IO流中恢复改Java对象。 实现: 实现如下两个接口之一的类才能被序列化: (1)Serializable (2)Externalizable —序列化:ObjectOutputStream

2017-09-19 10:53:21 947

原创 IO流实战1

File文件对象只能操作文件或者文件夹的属性,例如文件或文件夹的创建,删除,获取文件属性,我们最终建立文件的目的,是往文件里面存数据,File对象是做不了这个的,这时,我们就要用到IO流。字节流InputStream抽象类是表示字节输入流的所有类的超类: FileInputStream:从文件系统中的某个文件中获得输入字节。 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 Fil

2017-09-19 00:44:30 781

原创 IO流中的File类

File类是java.io代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。 但是File类只能新建,删除,重命名文件和目录,并不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入输出流File类常见方法创建。 —boolean createNewFile():在指定目录下创建文件,如果该文件已经存在,则不创建。 在crea

2017-09-18 12:44:07 591

原创 三种线程间的通信方式(让随机被调用的线程变成"人为调用"的线程)

释放同步监视器的锁定 -当前线程的同步方法,同步代码块执行结束 -在同步代码块,同步方法中遇到break,return终止了该代码块或者该方法的继续执行 -在同步代码块,同步方法中出现了未处理的Error或Exception - 执行了同步监视器对象的wait()方法程序调用Thread.sleep(),Thread.yield()方法暂停当前线程的执行,当前线程不会释放同步

2017-09-14 19:41:04 513

原创 多线程同步问题

多线程安全问题 多线程安全问题为什么会出现: 因为程序在运行时,会出现一个线程在判断条件满足后,但没有运行代码。但是后一个线程也判断了条件,也具备了执行了资格,后一个线程运行了代码,但这时候线程运行的条件不满足了,便出现了安全问题。 多线程出现安全问题的原因: 当多条语句在操作同一线程共享数据时,一个线程对多条语句执行了一部分,还没有执行完,另一个线程参与进来,导致共享数据

2017-09-14 16:15:40 431

原创 线程的生命周期

线程要经历新建(New) 就绪(Runnable) 运行(Running) 阻塞(Blocked) 死亡(Dead)5种状态线程生命周期图线程优先级调度 Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量: static int MAX_PRIORITY 线程可以具有的最高优先级,取值为10。 static int MIN_

2017-09-13 20:53:45 450

原创 多线程的三种建立方式

继承Thread类创建线程类public class Thread extends Object implements Runnable定义Thread类的子类,并重写其run()方法创建Thread子类的实例,即创建了线程对象调用线程对象的start()方法启动线程public class FirstThread extends Thread { public void run()

2017-09-13 18:53:07 3118 6

原创 JavaSE中Swing类中的一些典型的组件

Swing组件

2017-07-05 15:18:01 1099

原创 双向链表

双向链表简介和举例解析双链表结构体的定义1: 结构体: 主函数中: 调用函数中:双链表结构体的定义2: 结构体: 主函数中: 调用函数中:头插法:尾插法:双向链表代码1#include <stdio.h>#include <malloc.h>#define true 1#define false 0typedef int bool;typedef int ElemType;t

2017-03-28 23:39:41 1113

原创 链表之单链表

链表表示方法方法1: 结构体: 主函数中: 调用函数中:方法2:(这里用的是栈的存储方式,但同样适用于链表) 结构体: 主函数中: 调用函数中:方法3: 结构体: 主函数中: 调用函数中: (这里的Status为 typedef int Status)单链表代码#include<stdio.h>#include<stdlib.h>struct student{

2017-03-28 11:46:56 339

原创 内部排序之归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。归并排序基本思想设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列)中,待合并完成后将 temp

2017-03-27 19:33:14 563

原创 内部排序之选择排序(直接选择排序,堆排序)

目录堆排序简介及其代码直接选择排序简介及其代码选择排序总结堆排序简介及其代码1、首先明确完全二叉树概念:  深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。其次明确堆的概念:  堆是具有以下性质的完全二叉树,每个结点的值小于或等于其孩子结点的值(小根堆),每个结点的值大于或等于其孩子结点的值(大根堆)堆的定义如图所示:2、

2017-03-27 10:00:47 485

原创 内部排序之交换排序

目录快速交换排序简介及其代码冒泡交换排序及其代码交换排序总结快速排序简介及其代码我们知道假如一个已排好序的数组,假如是从小到大升序排列,则随便取其中一个数N,则N左边所有数都小于或等于N,右边的都大于或等于N.那反向思维下,我们先随便取数组第一个数为基准X,然后将所有小于它的数交换到左边,大于它的数交换到右边.最后X可能就被交换到中间某个位置.以X为分界线,数组被分成两部分.接着再对两部分重

2017-03-26 18:01:46 482

原创 内部排序之插入排序(直接插入排序,二分插入排序,希尔插入排序)

目录直接插入排序简介及其代码二分插入排序简介及其代码希尔插入排序简介及其代码插入排序总结直接插入排序简介及其代码简介: 直接插入排序过程: 代码块:#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef int KeyType;typedef struct{ KeyType key;

2017-03-26 16:40:07 574

原创 动态规划之最优二叉搜索树

目录最优二叉搜索树简介举例以及详细分析代码块测试结果最优二叉搜索树简介1、概念引入  基于统计先验知识,我们可统计出一个数表(集合)中各元素的查找概率,理解为集合各元素的出现频率。比如中文输入法字库中各词条(单字、词组等)的先验概率,针对用户习惯可以自动调整词频——所谓动态调频、高频先现原则,以减少用户翻查次数。这就是最优二叉查找树问题:查找过程中键值比较次数最少,或者说希望用最少的键值比

2017-03-26 14:40:47 1987 3

原创 栈之链栈

目录链栈的简介举例以及详细分析代码块测试结果链栈的简介链栈则没有上溢的限制,它就象是一条一头固定的链子,可以在活动的一头自由地增加链环(结点)而不会溢出,链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要在头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。举例以及详细分析**栈可以采用链式存储结构表示,采用这种结构表示的栈简称为链栈。

2017-03-26 11:17:09 418

原创 栈之顺序栈

目录顺序栈的简介举例以及详细分析代码块测试结果顺序栈的简介在顺序栈中有”上溢”和”下溢”的概念。顺序栈好比一个盒子,我们在里头放了一叠书,当我们要用书的话只能从第一本开始拿(你会把盒子翻过来吗?真聪明^^),那么当我们把书本放到这个栈中超过盒子的顶部时就放不下了(叠上去的不算,哼哼),这时就是”上溢”,”上溢”也就是栈顶指针指出栈的外面,显然是出错了。反之,当栈中已没有书时,我们再去拿,看

2017-03-26 11:07:06 929

原创 树之二叉查找树(二叉搜索树)

目录二叉查找树简介二叉查找树举例以及详细分析代码块测试结果以及参考图纸二叉查找树二叉树的一个重要的应用是它们在查找中的使用。使二叉树成为查找树的性质是,对于树中的每个结点X,它的左子树中所有关键字值小于X的关键值,而它的右子树中所有关键字大于X的关键值。在图1中,左边的树是二叉查找树,但右边的树则不是(想一想为什么)。 二叉查找树举例以及详细分析二叉查找树定义:又称为是二叉排序树(Bin

2017-03-22 21:53:51 458

原创 树之完全二叉树(AVL树)

目录AVL树的简介AVL举例以及详细分析代码块测试结果和参考图纸备注AVL树的简介AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。 它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复

2017-03-22 20:52:01 3167 1

原创 图之从一个顶点到其余各个顶点的最短路径(有向图)

目录从一个顶点到其余各个顶点最短路径的简介举例以及详细分析代码块测试结果从一个顶点到其余各个顶点最短路径的简介1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,

2017-03-21 22:55:57 22634 2

原创 贪心算法之哈夫曼编码

目录哈夫曼编码简介举例以及详细说明代码块测试结果哈夫曼编码简介二叉树中有一种特别的树——哈夫曼树(最优二叉树),其通过某种规则(权值)来构造出一哈夫曼二叉树,在这个二叉树中,只有叶子节点才是有效的数据节点(很重要),其他的非叶子节点是为了构造出哈夫曼而引入的! 哈夫曼编码是一个通过哈夫曼树进行的一种编码,一般情况下,以字符:‘0’与‘1’表示。编码的实现过程很简单,只要实现哈夫曼树,通过

2017-03-21 20:50:08 4467

原创 图的最小生成树算法

目录图的最小生成树算法之Prim算法简介Prim算法举例及其详解Prim代码块图的最小生成树算法之Kruskal算法简介Kruskal算法举例及其详解Kruskal代码块图的最小生成树算法之Prim算法简介1、生成树  如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树(SpanningTree)。  生成树是连通图的包含图中的所有顶点的极小连

2017-03-20 23:25:11 898

原创 图的总括之存储和遍历

目录图的概念的基本术语图的存储结构之邻接矩阵存储图的存储结构之邻接表存储图的深度优先遍历(DFS)图的广度优先遍历(BFS)图的概念的基本术语图:由有穷、非空点集和边集合组成,简写成G(V,E); Vertex:图中的顶点;无向图:图中每条边都没有方向; 有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b) 有向边:边是有方向的,写为《a,b》 有向边也成为弧;开始

2017-03-15 23:15:34 368

原创 动态规划之传纸条(多线程dp)

目录传纸条问题简介举例以及详细分析代码块测试结果传纸条问题简介题目描述: 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐

2017-03-14 20:29:59 2356 1

原创 动态规划之数的划分

目录数的划分简介举例以及详细分析备注代码块测试结果数的划分简介题目描述 积极探索太空的回报是丰厚的,因为魔法世界的科学家后来通过挖掘史前文明遗址发现,他们所在的星球,每隔一亿五千万年左右就会发生一次由天外陨石或其他意外事件引发的物种大灭绝。称霸星球一亿多年的恐龙,就是因此而灭绝的。只有积极进取,锐意创新的宇宙文明,才有可能躲过这场“天罚”。现在,天顶星人对魔法世界发动了大规模陨石攻击,

2017-03-14 17:27:59 762

原创 动态规划之方格取数(多线程dp)

多线程简介多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。 问题描述问题描述   设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。   某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方

2017-03-13 00:27:42 1860

原创 动态规划01背包

目录01背包问题简介详细说明状态转移方程详解举例代码块测试结果01背包问题简介0-1背包问题:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。因此,该问题称为0-1背包

2017-03-09 14:24:24 530

原创 动态规划电路布线

目录电路布线简介举例及其详细说明代码块测试结果电路布线简介在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)),将上端接线柱i与下端接线柱π(i)相连,如图,其中,π(i),1<=i<=n,是(1,2……,n)的一个排列.导线(i,π(i))称为该电路板上的第i条连线.对于任何1<=i小于j<=n,第i条连线和第j条连线相交的充分且必要条件是π(i)>π(j)。

2017-03-08 21:27:32 2520 1

原创 动态规划之多边形游戏

目录多边形游戏简介举例以及详细分析代码块测试结果多边形游戏简介问题描述: 多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。  游戏第1步,将一条边删除。  随后n-1步按以下方式操作:  (1)选择一条边E以及由E连接着的2个顶点V1和V2;  (2)用一

2017-03-08 01:17:42 4631 4

原创 动态规划之图形的压缩

目录图形的压缩简介详细说明最优子结构性质举例代码块测试结果图形的压缩简介在计算机中常用像素点灰度值序列{p1,p2,….,pn}表示图像。其中,整数pi(1<=i<=n)表示像素点i的灰度值。 灰度值的范围是0~255。因此需要用8位表示一个像素。压缩的原理就是吧序列{p1,p2,……pn}进行设断点,将其分割成一段一段的。分段的过程就是要找出断点,让一段里面的像素的最大灰度值比较小

2017-03-07 21:31:58 739

原创 动态规划之大数乘积

动态规划大数乘积

2017-03-05 11:24:15 485

原创 动态规划之最长公共子序列

目录最长公共子序列简介举例说明并分析代码块测试结果最长公共子序列简介一个给定序列的子序列是在该序列中删去若干元素后得到的序列,确切的说,若给定序列X={x0,x1…,xm-1}, 则另一序列Z={z0,z1,…,zk-1},X的子序列是指存在一个严格的下标序列{i0,i1…,ik-1},使得对于所有的j=0,1,…,k-1有Zj=Xij。例如序列Z={B,C,D,B}是序列X={A,B,

2017-03-04 12:26:07 508

原创 动态规划之矩阵连乘问题

目录矩阵连乘问题简介举例说明并详细分析备注代码块测试结果矩阵连乘问题简介1设计求解具体问题的动态规划算法的第一步是刻画该问题的最优解结构特征。为方便起见,将矩阵连乘积A(i)A(i+1)…A(j)简记为A[i:j]。考察计算A[1:n]的最优计算次序。设这个计算次序在矩阵A(k)和A(k+1)之间将矩阵链断开,(1<=k小于n),则其相应的完全加括号方式为((A1…Ak)(Ak+1…An

2017-03-03 23:21:57 2513

空空如也

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

TA关注的人

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