自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kurisu的咸鱼生活

一只路过的码农而已

  • 博客(83)
  • 收藏
  • 关注

原创 2. HashMap总结

Map综述Java为数据结构中的映射提供了一个接口java.util.Map,这个接口有四个常用的实现类:HashMap、LinkedHashMap、TreeMap以及HashTable,继承关系如下:四个类的简单说明HashMap根据键的hashCode值来存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但是遍历顺序却是不确定的最多允许一条记录的键(key)为null,允许

2017-08-03 09:35:43 407

原创 1. ArrayList和LinkedList总结

ArrayList类图总结ArrayList的默认容量是10/** * Default initial capacity. */private static final int DEFAULT_CAPACITY = 10;不同于Vector,ArrayList是线程不安全的,可以使用并发容器CopyOnWirteArrayList代替ArrayList底层是使用对象数组实现的,继承了Ab

2017-07-31 19:42:31 478

原创 4. 对象的组合

1.设计线程安全的类在设计线程安全类的过程中,需要包含以下三个基本元素:找出构成对象状态的所有变量。找出约束状态变量的不变性条件。建立对象状态的并发访问管理策略。同步策略(Synchronization Policy) 同步策略定义了如何在不违背对象不变性或后验条件的情况下对其状态的访问操作进行协同。同步策略规定了如何将不可变性、线程封闭与加锁机制等结合起来以维护线程的安全性,并且还规定

2017-07-29 20:48:28 545

原创 3. 对象的共享

1.可见性 指线程之间的可见性。当一个线程修改了对象的某个状态后,对其他线程是可见的。也就是说其他线程能立即看到这个修改后的结果。Java指令重排序 在虚拟机层面,为了尽可能减少内存操作速度远慢于CPU运行速所带来的CPU空置的影响。虚拟机会将不满足happen-before规则的部分代码的执行顺序打乱——即写在后面的代码在时间顺序上可能先执行,而写在前面的代码可能会后执行,以尽可能充分地

2017-07-27 17:47:57 442

原创 23. 散列表

散列表查找的本质已知对象找位置有序安排对象:全序、半序直接“算出”对象位置:散列散列查找散列查找法的两项基本工作:计算位置:构造散列函数确定关键词存储位置解决冲突:应用某种策略解决多个关键词位置相同的问题时间复杂度几乎是常量:O(1) O(1) ,即查找时间与问题规模无关抽象数据类型定义类型名称:符号表(SymbolTable)数据对象集:符号表是“名字(Name)— 属性(Att

2017-07-19 21:05:04 1835

原创 22. 排序--排序算法的比较

排序算法的比较 排序方法 平均时间复杂度 最坏时间下复杂度 额外空间复杂度 稳定性 简单选择排序 O(N2) O(N^2) O(N2) O(N^2) O(1) O(1) 不稳定 冒泡排序 O(N2) O(N^2) O(N2) O(N^2) O(1) O(1) 稳定 直接插入排序 O(N2) O(N^2) O(N2)

2017-07-18 22:06:05 294

原创 21. 排序--表排序

表排序又称间接排序,排序时不调整元素的实际位置,而是定义一个额外的数组作为“表”(table)。根据元素的关键字大小来调整元素对应下标在表中的位置。例初始 A [0] [1] [2] [3] [4] [5] [6] [7] key f d c a g b h e table 0 1 2 3 4 5

2017-07-18 12:26:56 811 1

原创 20. 排序--快速排序

快速排序算法概述从数组中选出一个数作为主元,然后把数组一分为二,左边是小于主元的,右边是大于主元的。重复这个过程,直到划分的子集长度为1伪码描述void Quick_Sort(ElementType[] A, int N) { pivot = 从数组A中选出一个主元; 将 S = {A[] \ pivot}分成2个独立子集: A1 = {小于等于pivot} 和

2017-07-17 20:20:15 522

原创 19. 排序--归并排序

归并排序将已有序的子序列合并,得到有完全有序的序列核心:有序子列的归并// LeftStart=左边数组的起始位置,RightStart=右边数组的起始位置,RightEnd=右边数组的结束位置void Merge(ElementType[] A, ElementType[] TmpA, int LeftStart, int RightStart, int RightEnd) { Left

2017-07-17 16:43:00 323

原创 18. 排序--堆排序

堆排序堆排序的前身–选择排序void Selection_Sort(ElementType[] A, int N) { for (int i = 0; i < N; i++) { // 从A[i]到A{N-1}中找到最小元,并将其位置赋给MinPosition MinPosition = ScanForMin(A, i, N - 1); // 将

2017-07-17 11:01:29 260

原创 17. 排序--希尔排序

希尔排序希尔排序是插入排序的改进,增加了间隔排序(间隔排序算法与插入排序相似),最后进行插入排序算法原理定义增量序列DM>DM−1>...>D1=1 D_M > D_{M-1} > ... >D_1 = 1 对每个Dk D_k 进行”Dk− D_k- 间隔“排序(k=M,M−1,...,1 k=M,M-1,...,1 )注意:”Dk− D_k- 间隔“有序的序列,在执行”Dk−1− D_{k-

2017-07-17 11:00:22 377

原创 16. 排序--简单排序

排序方法模板void X_Sort(ElementType[] A, int N)大多数情况下,为简单起见,讨论从小到大的整数排序N是正整数,表示数组的长度前提只讨论基于比较的排序(例如通过 > = < 进行比较)只讨论内部排序(所有数据加载入内存中)稳定性:任意两个相等的数据,排序前后的相对位置不发生改变没有一种排序是任何情况下都表现最好的简单排序冒泡排序算法原理从后往前开始遍历:

2017-07-16 19:42:20 250

原创 15. 图--拓扑排序

拓扑排序定义拓扑序:如果在图中从V V 到W W 有一条有向路径,则V V 一定排在W W 之前。满足此条件的顶点序列称为一个拓扑序。拓扑排序:获得一个拓扑序的过程。AOV(Activity On Vertex)网络如果有合理的拓扑序,则必定是有向无环图(Directed Acyclic Graph,DAG)基本算法每次输出入度为0的顶点,输出以后将该顶点的邻接点的入度减一实现采用队列存储

2017-07-16 12:46:05 287

原创 14. 图--最小生成树

最小生成树Minimum Spanning Tree定义是一棵树 无回路V V 个顶点一定有V−1 V-1 条边是生成树 包含全部顶点V−1 V-1 条边都在图里边的权重和最小注:向生成树中任加一条边都一定构成回路最小生成树存在 ↔ \leftrightarrow 图连通生成算法最小生成树算法是贪心算法的应用。什么是“贪”:每一步都要最好的什么是“好”:权重最小的边需要

2017-07-16 12:44:17 288

原创 13. 图--最短路径问题

最短路径问题问题抽象在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径这条路径就是两点之间的最短路径(Shortest Path)第一个顶点为源点(Source)最后一个顶点为终点(Destination)问题分类单源最短路径问题:从某固定源出发,求其到所有其他顶点的最短路径 (有向)无权图(有向)有权图多源最短路径问题:求任意两顶点间的最短路径单源最短路算法无

2017-07-16 12:41:06 380

原创 12. 图--图的遍历

图的遍历深度优先搜索Depth First Search,DFS伪代码void DFS(Vertex V) { visited[V] = true; for (V 的每个邻接点 W) { if (!visited[W]) DFS(W); }}若有N个顶点、E条边,时间复杂度是用邻接表存储图,为O(N+E) O(N+E) 用邻接矩阵存

2017-07-14 10:25:13 404

原创 11. 图--图的表示

图(Graph)定义表示“多对多”的关系包含 一组顶点:通常用V(Vertex) V(Vertex) 表示顶点集合一组边:通常用E(Edge) E(Edge) 表示边的集合 边是顶点对:(v,w)∈E (v,w) \in E ,其中v,w∈V v,w \in V 有向边<v,w> <v,w> 表示从v v 指向w w 的边(单行线) 不考虑重边和自回路 抽象数据定义类型名称:图(Gr

2017-07-13 20:40:10 585

原创 10. 树--并查集

并查集定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。存储实现逻辑结构:使用树结构表示集合,树的每个结点代表一个集合元素物理结构:采用数组存储,使用双亲表示法(孩子指向双亲)例有三个整数集合: * S1={1,2,4,7} S1=\{1,2,4,7\} * S2={3,5,8} S2=\{3,5,8\

2017-07-12 19:56:31 621

原创 9. 树--哈夫曼树

哈夫曼树(Huffman Tree)定义带权路径长度(WPL):设二叉树有n n 个叶子结点,每个叶子结点带有权值wk w_k ,从根结点到每个叶子结点的长度为lk l_k ,则每个叶子结点的带权路径长度之和为:WPL=∑nk=1wklk WPL = \sum_{k=1}^n w_kl_k 最优二叉树或哈夫曼树:WPL最小的二叉树哈夫曼树的构造假设有n n 个权值结点,则构造出的哈夫曼树有n

2017-07-12 11:04:01 647

原创 8. 树--堆

堆优先队列(Priority Queue)定义 特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序如何组织优先队列采用数组或者链表实现优先队列数组 插入:元素总是插入尾部,Θ(1) \Theta(1) 删除: 查找最大(或最小)关键字,Θ(n) \Theta(n) 从数组中删去需要移动元素,O(n) O(n) 链表 插入:元素总是插入链表

2017-07-11 20:17:49 266

原创 7. 树--平衡二叉树

平衡二叉树平衡二叉树(Balanced Binary Tree),又称AVL树定义 空树,或者任一结点左、右子树高度差的绝对值不超过1,即|BF(T)|≤1 \left| BF(T) \right| \leq 1 “平衡因子”(Balance Factor,简称BF):BF(T)=hL−hR BF(T) = h_L - h_R ,其中hL h_L 和hR h_R 分别为T T 的左、右子树的高度

2017-07-10 11:06:17 422

原创 6. 树--二叉搜索树

二叉搜索树二叉搜索树(BST, Binary Search Tree),也称二叉排序树或二叉查找树定义二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质: 1. 非空左子树的所有键值小于其根结点的键值 2. 非空右子树的所有键值大于其根结点的键值 3. 左、右子树都是二叉搜索树二叉搜索树操作的特别函数Position Find(ElementType X, BinTree BST):

2017-07-04 11:06:02 280

原创 2. 线程安全性

1.线程安全性线程安全类 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么称这个类是线程安全的。正确性 某个类的行为与其规范完全一致。在良好的规范中通常会定义各种不变性条件(Invariant)来约束对象的状态,以及定义各种后验条件(Postcondition)来描述对象的操作结果

2017-07-03 21:44:23 248

原创 5. 树--二叉树的表示及其遍历

二叉树定义一个有穷的结点集合这个集合可以为空若不为空,则它是由根结点和称为其左子树TL T_L 和右子树TR T_R 的两个不相交的二叉树组成。二叉树具体五种基本形态 二叉树的子树有左右顺序之分特殊二叉树斜二叉树(Skewed Binary Tree)满二叉树(Full Binary Tree)又称完美二叉树(Perfect Binary Tree)完全二叉树(Complete Binar

2017-07-02 17:29:55 490

原创 4. 树--树的表示

查找 根据某个给定关键字K,从集合R中找出关键字与K相同的记录静态查找:集合中记录是固定的,没有插入和删除操作,只有查找动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除静态查找顺序查找int SequentialSearch(StaticTable *Tbl, ElementType K) { int i; for (int i = 0; i < Tbl->Le

2017-07-01 22:16:41 349

原创 3. 线性结构--队列

队列定义 具有一定操作约束的线性表,只能在一端插入,而在另一端删除数据插入:入队列(AddQ)数据删除:出队列(DeleteQ)、先来先服务先进先出:FIFO抽象数据类型描述类型名称:队列(Queue)数据对象集:一个有0个或多个元素的有穷线性表操作集:长度为MaxSize的队列Q∈Queue Q \in Queue ,队列元素item∈ElementType item \in E

2017-06-30 15:48:21 319

原创 2. 线性结构--栈

栈定义 具有一定操作约束的线性表,只在一端(栈顶、Top)做插入、删除插入数据:入栈(Push)删除数据:出栈(Pop)后入先出:Last In First Out(LIFO)抽象数据类型描述类型名称:栈(Stack)数据对象集:一个有0个或多个元素的有穷线性表操作集:长度为MaxSize的栈S∈Stack S \in Stack ,堆栈元素item∈ElementType item

2017-06-29 21:42:22 351

原创 0. 基本概念

数据结构是指具有某种联系的数据元素以及元素之间所构成的各种关系组成的集合静态数据结构:在创建时大小固定,如数组动态数据结构:大小是可变的,因而它可以在任何时候扩大或者缩小每一种数据结构都需要有插入、删除、查找等操作来处理包含在其中的数据数据的逻辑结构可分为线性结构、树结构和图结构线性结构的一般定义:除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素。该结构的数

2017-06-29 21:32:54 224

原创 1. 线性结构--线性表

线性表定义 由同类型数据元素构成有序序列的线性结构。表中元素个数称为线性表的长度线性表没有元素时,称为空表表起始位置称表头,表结束位置称表尾抽象数据类型描述类型名称:线性表(List) 数据对象集:线性表是n(≥0) n(\geq0) 个元素构成的有序序列(a1,a2,...,an) (a_1, a_2, ..., a_n) 操作集:线性表$ L \in List $,整数$ i

2017-06-29 21:32:18 428

原创 spring的websocket访问时403

spring的websocket访问时403注:仅支持关闭sockjs的情况,如果需要开启sockjs,那么以下内容就不用看了 先说解决方案,在配置websocket的xml语句块中:<websocket:handlers allowed-origins="*"></websocket:handlers>添加allowed-origins属性,具体值看自己的需要,如有多个用 “,”隔开。原因:下

2016-12-05 21:25:25 10493

原创 springmvc 使用 hibernate-validator时失效

为了解决springmvc返回中文时乱码使用了消息转换器,但是就是因为这里的问题,导致了springmvc在映射对象时无法触发hibernate-valid

2016-11-13 22:23:52 2811 2

原创 dwr+oracle进行clob、blob字段插入、修改和读取

因为需求变化,以前使用varchar2就可以存储的内容需要替换为clob字段进行存储。如果使用的是oracle12c版本的,只需修改varchar2的长度为36000就可以了。而之前的版本只能通过clob字段来进行大文本的存储。方法就是通过流的方式将文本写入到数据库。

2016-04-24 16:30:23 987

原创 上下DIV固定,中间DIV自适应的HTML+CSS实现

项目快结了,所以就做一下总结,以便以后复习。 项目主页的左侧菜单部分,界面要求就是上方为项目logo以及显示用户,下方需要显示版权,中间部分就是显示菜单选项。废话不多说,直接上代码。HTML: CSS: .header{ position:absolute; top

2016-04-24 15:35:03 7149

原创 2015年9月23日工作日志-------------赵鑫

日  期今日工作结果问题及改善方法明日计划9.231.熟悉实验室的框架 问题:使用代码生成器,生成的代码,在dwr框架中不能自动在数据库中生成表方法:待续问题:dwr框架在调用service的save方法时,有问题,前台抛出undefined,error,后台service也未能进去方法

2015-09-23 22:28:10 501

原创 2015年9月21日工作日志-----------赵鑫

日  期今日工作结果问题及改善方法明日计划9.211.熟悉实验室的框架 问题:在写入数据库之前数据不为乱码,写入数据库后乱码方法:在连接数据库时url应该加上?Unicode=true&characterEncoding=UTF-8,防止乱码问题:在myeclipse中rename出错:re

2015-09-21 21:13:25 485

原创 2015年9月20日工作日志-----------赵鑫

日  期今日工作结果问题及改善方法明日计划9.201.spring、hibernate的培训2.再次修改电子展板的原型 问题:在一张表中,如果一个字段有多个值,为了不使数据库冗余,该怎么做方法:将这个字段的值新建一张表来存放    1.熟悉实验室的框架

2015-09-20 16:20:26 324

原创 2015年9月18日工作日志---------------赵鑫

日  期今日工作结果问题及改善方法明日计划9.181.明确电子展板需求2.修改电子展板原型     1.休息

2015-09-20 16:17:46 809

原创 2015年9月17日工作日志-----------赵鑫

日  期今日工作结果问题及改善方法明日计划9.161.完成了struts2的作业2.完成了电子展板的原型 问题:如何在自定义的拦截器设置了参数后传递给action方法:在struts.xml中设置一个拦截器栈,将自定义的拦截器和默认的拦截器放在栈里就行了

2015-09-17 21:28:26 597

原创 2015年9月16日工作日志------------赵鑫

日  期今日工作结果问题及改善方法明日计划9.161.浏览了一下struts22.完成了struts2的小demo 问题:从ActionContext的getParameters()方法获取的map对象,不能将Object转换为String方法:待定    1

2015-09-16 22:41:57 688

原创 2015年9月15日工作日志-------------赵鑫

日  期今日工作结果问题及改善方法明日计划9.151.day11的视频看完2.浏览了电子展板网站的前台和后台页面3.mdb文件是数据库文件,可以使用Navicat Premium导入数据库中     1.明天继续就电子展板的需求进行分析2.看Struts2的视

2015-09-15 22:37:48 772

空空如也

空空如也

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

TA关注的人

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