自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夫唯不争,故天下莫能与之争。

属于你的东西,你就要努力去争取。微信公众号【数据空间站】

  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 和为s的两个数字VS和为s的连续正数序列

题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,使它们的和正好是s。如果有多对的和都等于s,输出任意一对即可。思路此题思路比较正常,头指针和尾指针,结合排序的特点,有头指针指向的元素+尾指针指向的元素  >  s,那么尾指针前移头指针指向的元素+尾指针指向的元素  代码 public static void getSumOftwoNumber(i

2015-08-21 23:17:15 855

原创 数组中只出现一次的数字

题目一个整型数组里除了两个数字之外,其他数字都出现了两次。请找出这两个只出现一次的数字。要求时间复杂度O(n),空间复杂度O(1)思路我们知道如果把题目中的两个数字换成一个的话,整个数组内的元素连续异或,最终的数便是那个出现一次的数,因为异或的性质:相同为0,不同为1,所以有任何数字异或自己都是0。换成两个数字后,我们可以继续全局异或,得到的数必然不等于0,那么也就是说二进制中必然

2015-08-21 22:04:52 979

原创 二叉树的深度相关问题

题目输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的结点形成树的一条路径,最长路径的长度为树的深度。思路简化一下题目,思考一个节点的时候二叉树的深度为 1,因为左右子树都为0;2个节点的时候二叉树深度为 2,左右子树的深度最大值加 1;3个节点分两种情况:   4                   3  /  \                

2015-08-20 23:01:40 934

原创 线程与进程的关系

概述进程是资源分配的基本单位,进程由线程组成。线程是系统执行调度的基本单位,线程隶属于进程。为何引入线程1、进程在同一时间只能干一件事,比如我们在上课的时候,往往要耳朵听课,手记笔记,脑子思考,如果套用进程的机制,那么我们听课的时候也不能记录笔记,更不能思考。2、当进程某个操作阻塞时,整个进程就会挂起,也就是说当老师讲课时需要思考的时候,我们也还只能听课,不能思考也不能记录

2015-08-20 15:15:38 953

原创 数组在排序数组中出现的次数

题目统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输入4.思路首先第一种思路,必然是遍历数组,然后定义累加器,但是这种时间复杂度为O(n)我们注意到数组是排序的,我们可以利用而分查找的特点,首先将第一个3找到,然后找出最后一个3,相减即可。代码public static in

2015-08-19 23:38:51 876

原创 关于单链表带环的一系列问题

题目1、判断一个单链表是否带环2、求取一个带环单链表的环的长度3、求取一个带环单链表的环的入口4、判断两个不带环单链表是否相交5、求取两个不带环单链表的一个公共节点这仅仅一个单链表是否带环可以拓展出这么多的问题,我们来一个一个解决1、判断一个单链表是否带环。思路记得以前做过这个,可以用快慢指针,两个指针同时指向头结点,快指针一次走两个,慢指针一次走一个,

2015-08-18 23:29:43 1495

原创 两个链表中的第一个公共结点

题目输入两个链表,找出他们的第一个公共节点。下面第一个公共节点便是40。      1->2->3-----\                            >40->5010->20->30----/思路看到栈就忽然恍然大悟,然后在看到类似快慢指针,更大悟。思路一:分别遍历第一条链表和第二条链表,将其每个节点分别存入两个栈,然后依次出栈,最后一个相同的的栈

2015-08-18 10:17:04 1200

原创 数组中的逆序对

题目在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对,输入一个数组,求出这个数组中的逆序对的总数。例如:{7,5,6,4},一共存在5个逆序对,分别是(7,6)(7,5)(7,4)(6,4)和(5,4)思路本来是毫无思路的,一般习惯了暴力破解,剑指offer后面的归并排序的思想,让我想到归并排序是好多年前写过的(忘了......果然出来混总是要还

2015-08-18 09:55:42 1056

原创 浅析Java内存模型

概述Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量是线程共享的,存在竞争问题的。Java内存模型规定了所有的变量都存储在主内存,每条线程还有自己的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等),都必须在工作内存中进行,而不能直接读写主内存中的变量。

2015-08-18 09:30:32 5289 37

原创 丑数

题目:我们把只包含因子2,3,5的数称作丑数,求按从小大到大的顺序的第1500个丑数。例如6,8都是丑数,14不是丑数,因为包含因子7.习惯上我们把1当做第一个丑数。思路:一般自己拿到这种题会下意识的想到暴力破解,即遍历所有的数,然后判断是否有除2,3,5以外的因子,如果有那就不是丑数,但是这种方法无疑效率是低下的。之所以低下是因为我们在当一个数不是丑数的时候,我们还对其在

2015-08-15 17:10:47 803

原创 ConcurrentHashMap浅析

概述:ConcurrentHashMap是HashMap的升级版,我们都知道HashMap是不可靠的,线程不安全的,而Hashtable在同步的时候又会将整张表都锁住,从而在多并发的情况下效率低下。于是ConcurrentHashMap出现了,综合了两者的优点,所以一直是高并发情况下开发者的首选,但是相对的,它也有自身的一些不足,我们来分析一下它的原理。ConcurrentHash

2015-08-14 21:43:23 2613

原创 把数组排成最小的数

题目:输入一个正整形数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中的最小的一个,例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字321323。思路:将数组转换成字符串,然后按照字符串的排序规则直接直接比较。也就是说"3"+"32" 和"32"+"3"比较,如果前者大于后者,则交换3和32的位置 public static void prin

2015-08-14 10:43:00 997

原创 深入集合框架之Hashtable源码剖析

为了分析ConcurrentHashMap,决定先分析一下Hashtable,两者都是线程安全的,必然会有不同的区别,Hashtable和HashMap也有很大的区别。我们先来看看Hashtable吧。成员变量: //存储单链表表头的数组,和HashMap中类似 private transient Entry[] table; //Hashtable中实际元素

2015-08-12 22:49:24 972

原创 数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这一个数字。输入一个长度为9的数组{1,2,3,2,2,2,5,4,2},数字2在数组中出现的次数大于数组长度的一半,返回2。这道题类似以前做过的Maximum Subarray。按着以前的思路:确定某一个数字,遇到相同的数字加1,遇到不同的数字减1,当累加器为0时,我们重新开始计算即可。完成后继续判断这个数

2015-08-12 12:38:25 936

原创 二叉搜索树与双向链表

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的节点,只能调整树中结点指针的指向。如图:思路:我们只需要在中序遍历二叉树的时候,改变链的方向,然后指定一个指针一直指向当前节点当中序遍历完成的时候,这个指针也就处于链表的尾端,若果要升序排列,只需要依次遍历,找到头结点即可。 //因为在java中传递的是地址

2015-08-12 10:27:54 847

转载 ArrayList中的toArray()

ArrayList的toArrayArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[]  a);对于第一个重载方法,是将list直接转为Object[] 数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为

2015-08-11 21:56:52 1177

原创 深入集合框架之CopyOnWriteArrayList源码剖析

CopyOnWriteArrayList概述CopyOnWriteArrayList是ArrayList的一个线程安全的变种。CopyOnWriteArrayList与ArrayList不同处就在于是否会拷贝数组和加锁。CopyOnWriteArrayList顾名思义就是写时复制的ArrayList,其意思就是在修改容器的元素时,并不是直接在原数组上修改,而是先拷贝了一份数组,然后

2015-08-11 17:08:39 1093

原创 字符串的排列

剑指Offer第28题题目输入一个字符串,打印出该字符串中字符的所有排列,例如输入abc,则打印出由字符abc,acb,bac,bca,cab,cba。思路:我们可以把复杂的问题拆分成小问题:  首先:确定第一个字符a,然后剩下后面两个bc,bc在进行排列  递归深入:首先确定第一个字符b,然后剩下的c进行排列     递归深入:c是最后一个字符,输出。    递归

2015-08-11 10:27:16 842

原创 深入集合框架之ArrayList源码剖析

ArrayList概述ArrayList底层由数组实现,非线程安全,但是数组可以动态增加,也可以叫动态数组,提供了一系列的好处,我们来深入看看:成员变量与构造函数/** * 存储ArrayList内的数组 */ private transient Object[] elementData; /** * The size of t

2015-08-11 09:27:07 1225

原创 Mysql那些琐碎

游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。存储过程与函数区别:一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。存储过程一般是作为一个独立的

2015-08-09 14:32:59 828

原创 Mysql常用函数

-----------------------------字符串函数-------------------------------------------拼接字符串,任何字符串与null拼接为nullselect concat('aaa','bbb','ccc'),concat(null,'aaa');----从第12个字符后开始的三个字符替换成meselect i

2015-08-09 14:21:58 1010

转载 Mysql之存储过程回顾

一、基本语法及简单实例1、创建简单的测试环境[sql] view plaincopymysql> use test;  Database changed  mysql> show tables;  Empty set (0.00 sec)     mysql> CREATE TABLE t(s1 INT);  

2015-08-09 13:49:12 771

转载 mysql之触发器trigger

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。触发器有一个非常好的特性就是:触发器可以禁止或回滚违反引用完整性的

2015-08-09 13:45:15 858

原创 Mysql中那些锁机制之InnoDB

我们知道mysql在以前,存储引擎默认是MyISAM,但是随着对事务和并发的要求越来越高,便引入了InnoDB引擎,它具有支持事务安全等一系列特性。InnoDB锁模式InnoDB实现了两种类型的行锁。共享锁(S):允许一个事务去读一行,阻止其他事务获得相同的数据集的排他锁。排他锁(X):允许获得排他锁的事务更新数据,但是组织其他事务获得相同数据集的共享锁和排他锁。可

2015-08-09 11:33:12 3786

原创 Mysql中那些锁机制之MyISAM

说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同。三类常见引擎:MyIsam :不支持事务,不支持外键,所以访问速度快。锁机制是表锁,支持全文索引InnoDB :支持事务、支持外键,所以对比MyISAM,InnoDB的处理效率差一些,并要占更多的磁盘空间保留数据和索引。锁机制是行锁,不支持全文索引Memory:数据是存放在内存中的,默认哈希

2015-08-09 08:36:43 1392

原创 Mysql之事务

简述事务的概念:为什么引入事务?当我们有时候需要执行好多条语句的时候,由于某些原因,导致只有第一条语句执行了,那产生的结果就是千差万别的。事务的特性是ACID原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的操作要么都执行,要么都不执行。一致性(Consistent):事务执行的结果必须是从一个一致性状态迁移到另一个一致性状态。(网上

2015-08-08 22:39:30 1194

原创 Hash索引和BTree索引

索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。Hash索引所谓Hash索引,当我们要给某张表某列增加索引时,将这张表的这一列进行哈希算法计算,得到哈希值,排序在哈希数组上。所以Hash索引可以一次定

2015-08-06 23:20:49 27363 4

原创 类加载机制及双亲委派

所谓的无关性: 我们一直在强调Java的平台无关性,所谓的一次编写,到处运行。 那么究竟是什么造就了这种平台无关性,那就是Class文件,我们注意到编译完java文件后,会产生一个Class文件,而这些Class文件在各种虚拟机中的有相同的存储格式—–字节码。 除了平台无关性,Java语言还引申出来一个语言无关性。也就是说Java虚拟机是与Class这种特定格式的文件格式关联,所以就说明无论哪

2015-08-06 00:36:31 4746 2

原创 垃圾回收机制与内存分配策略

我们经常说的垃圾收集(Grabage Collection,GC)需要确定以下三个事情:哪些内存需要回收?什么时候回收?如何回收?在这三件事情之前,我们先看看为什么要进行垃圾收集? 因为程序中存在的实例对象,变量等信息如果不进行垃圾回收的话,随着程序的运行,必然会带来程序性能的下降,造成卡、慢甚至系统异常。哪些内存需要回收?前面我们说到了程序计数器、虚拟机栈、本地方法栈三个区域是线程隔离

2015-08-06 00:26:49 2035

原创 Java虚拟机结构及常见内存溢出异常

每个Java虚拟机都有一个类加载器子系统,根据某个全限定名来装入类型,同样每个Java虚拟机都有一个执行引擎,它负责执行那些包含在被装载类的方法中的指令。 当虚拟机运行一个程序时,就需要从已加载的文件中得到信息,将这些信息组织到运行时数据区,以便于管理。Java运行时的数据区域划分 1、程序计数器:程序计数器是一块较小的内存空间,可以看做是当前线程的字节码的行号指示器。 Java虚拟机的多线程

2015-08-05 23:56:05 1286

原创 深入集合框架之HashSet源码剖析

HashSet实现了Set接口,也就是说它存储的元素是无重复的。通过源码分析我们可以发现HashSet就是HashMap的一个实例。因为在HashMap中的键是不能重复的,我们可以把HashSet想象成HashMap中的键,而且事实也就是如此。public class HashSet extends AbstractSet implements

2015-08-05 22:31:16 974

原创 栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 拿到这道题的时候,首先想着是把所有的不可能的出栈序列找出来,然后寻找和出栈序列之间的规律,但是找了好久没找到。看了一下书上的

2015-08-02 11:32:32 1354

原创 计算机网络读书笔记-----应用层

每个应用层的协议都是为了解决某一类应用问题,而问题的解决又往往是通过不同主机之间多个应用进程之间的通信和协作工作来完成的。应用层的具体内容就是规定应用进程在通信时遵循的协议。DNS(Domain Name System )DNS的出现:用户与因特网进行通信时,显然不愿意使用很难记忆的32位二进制主机,即使点分十进制的IP地址也不容易记忆,相反愿意使用某种易于记忆的主机名。在早期的时候,整个网络上

2015-08-01 08:24:50 1211

原创 计算机网络读书笔记-----UDP vs TCP

UDP:UDP用户数据报协议在IP数据报服务上只增加了分用复用和差错检测的功能。 UDP是不具有可靠性的数据报协议。UDP的特点:UDP是无连接的; UDP不保证可靠交付,即尽最大努力交付 UDP是面向报文的:  发送方的UDP对应用程序交下来的报文,在添加首部后就直接交付给IP层。对应用层交下来的报文,既不拆分也不合并,而是保留这些报文的边界。  对IP层交上来的UDP数据报,在去除首

2015-08-01 07:18:01 1869 1

Python经典复习题

列出了Python初学者的基础练习题,有助于Python初学者掌握基础语法知识

2014-05-15

空空如也

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

TA关注的人

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