- 博客(23)
- 资源 (7)
- 收藏
- 关注
原创 反射机制 java实现
一、什么是反射:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机 制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用 所描述行为的状态和相关的语义。二、什么是Java中的类反射:Re
2017-05-23 20:03:56 271 1
原创 散列结构的实现
散列表的实现是一种在时间和空间上做出权衡的方式。对于数组存储,如果们没有内存限制,则可以直接将数据作为键作为数组的索引,那么所有的查询操作都只需要一次访问内存即可完成。但是当键很多的时候,需要的内存会非常大,所以这种方式不可能实现。另一方面,如果没有时间限制,我们可以对数组进行遍历查找,来查询数组里面的数据。这样会耗费比较多的时间。散列表是一种折中的方法,在这两个极端之间找到一个权衡。散列
2017-05-23 19:40:05 572 1
原创 一个整数二进制表示中1的个数 java实现
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题目解析:最直观的解法是先判断整数二进制表示中最右边以为是不是1.接着把整数右移一位(这边用右移不用除以2,是因为除法运算效率比移位运算要低得多),这样每次移动一位,直到整数为0.但是这样子会有一个问题,当输入是一个负整数,由于负整数最高位是1,右移一位后必须保持最高位还是1,这样一直死循环下去,因为移位后的数永远不会为0,
2017-05-23 09:37:43 3260 3
原创 查找旋转数组的最小数字 JAVA实现
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目解析这其实是一个查找问题,查找最小元素,如果单纯遍历一边数组确实也可以查找到这个最小数字
2017-05-22 09:20:34 1218 1
原创 重构二叉树,java实现,剑指offer原题
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思想:每次从前序遍历中获取根节点,每次从中序遍历中获取左右子树长度一遍在前序遍历中划分左右子树找到相应子树的根节点。过程:一棵树的前序遍
2017-05-22 08:04:47 611 1
原创 从尾到头打印列表 java实现 剑指offer原题 java实现栈结构
题目分析:从尾到头打印列表,即输出列表上各个节点的值,首先输入是一个链表头结点,且这是一个单链表,可以看看代码中ListNode类。要知道所有节点的值必须遍历一遍链表,但是又要从后向前打印,但是链表只能从前往后遍历。要想实现:从前往后>>>>>>从后往前,这个很想栈结构的性质,先入后出,先遍历的节点最后输出。所以我们只需要建立一个栈结构即可(本题解决关键)。java中可以使用LinkedList集
2017-05-21 10:40:15 341
原创 剑指offer 字符串的排列原题,java实现,组合排列去重
首先讲一下原理:求字符串的排列,可以看成两步:1、把所有可能的字符都放在第一位,具体实现:可以遍历一次字符串,从第一个字符开始与第一个字符互唤,一次遍历后所有字符都会一次出现在第一个位置。在每次循环内实现第二步。2、将剩余的字符串的所有可能的字符放到该剩余字符串的位置(即重复1)。然后进行第三步,将原先互换的字符再次互换回来,恢复原始顺序,一遍进行后续的互换。过程图如下:假设字符串char
2017-05-21 09:25:06 649 1
转载 数据库锁机制 很详细的教程,易懂
1 前言数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。2 锁的种类共享锁(Shared lock)。例1:--------
2017-05-18 22:38:30 12205 4
原创 二分法查找 JAVA实现
算法定义:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置的值则在数列的后半段中继续查找,直到找到为止。适用场景:当数据量很大时,数据有序但是不重复;java代码如下所示(直接取用BinarySearch即可测试):package test;import java.util
2017-05-18 15:53:31 427 1
原创 快速排序法 java实现 三种方法实现
快速排序法(1)定义快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。(2)快速排序的三个步骤选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比
2017-05-18 14:27:41 7438
原创 排序算法——java实现(1):冒泡排序算法
冒泡排序算法冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。package test;class BubbleSort{int[] data;BubbleSort(i
2017-05-18 08:41:08 412
原创 数据库事务并发问题描述
数据库事务并发问题 多个事务同时访问数据库时候,会发生下列5类问题,包括3类数据读问题(脏读,不可重复读,幻读),2类数据更新问题(第一类丢失更新,第二类丢失更新):1,脏读(dirty read)A事务读取B事务尚未提交的更改数据,并在这个数据基础上操作。如果B事务回滚,那么A事务读到的数据根本不是合法的,称为脏读。在oracle中,由于有version控制,不会出现脏读。
2017-05-18 08:32:20 441 1
转载 事务隔离级别讲解,比较细致
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。√: 可能出现 ×: 不会出现脏读不可重复读幻读Read uncommitted√√√
2017-05-18 08:29:37 267
原创 聚簇索引和非聚簇索引的区别
聚簇索引和非聚簇索引(1)定义聚簇索引的顺序就是数据的物理存储顺序;非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。(2)索引底层实现结构是B+树,二叉树的一种; 聚簇索引:索引的叶节点就是数据节点(索引值)。而非聚簇索引的叶节点仍然是索引节点(告诉你怎么在表中查找这一记录),只不过有一个指针指向对应的数据块。如下图(原图请见http://www.jb51.net/a
2017-05-18 07:30:45 3349 2
原创 JAVA中final关键字的使用,含义,final变量和final方法deng
(1)final关键字的含义final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。(2)final变量凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变
2017-05-17 22:10:39 1016
原创 二叉搜索树的判断 leetcode原题
二叉查找树(Binary Search Tree)(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树(这也是判断二叉搜索树的标准,即条件):(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)它的左、右子树也分别为二叉排序树。leetcode题目:G
2017-05-17 16:56:19 1461
原创 LeetCode 重构二叉搜索数,即找出两个被交换的节点
原题:Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.Note:A solution using O(n) space is pretty straight forward. Could you de
2017-05-17 15:43:12 1807
原创 JAVA中int,string,char之间的互相转换
(1)字符串string转int:int i=Integer.parseInt(str);//使用Integer.parseInt(String str)函数,返回str所代表的int值;(2)如何将字串 String 转换成Integer Integer integer=Integer.valueOf(str);//string转Integer对象(3)将整数 int 转换成
2017-05-17 13:25:49 2850 4
原创 分层遍历二叉树
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).For example:Given binary tree{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15
2017-05-17 09:32:15 455 3
转载 java中error,Exception,Throwable的关系
1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕
2017-05-16 21:24:07 1075
转载 基数排序算法,讲解+算法实现
http://www.cnblogs.com/kkun/archive/2011/11/23/2260275.html
2017-05-16 21:11:56 290
转载 53道Java线程面试题
http://www.cnblogs.com/king-garden/p/5672853.html【转载】下面是Java线程相关的热门面试题,你可以用它来好好准备面试。1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任
2017-05-09 22:09:01 282
转载 阐述ArrayList、Vector、LinkedList的存储性能和特性
http://www.cnblogs.com/jiangyi-uestc/p/5682699.html【转】 ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。 Vector中的方法由
2017-05-09 20:41:44 1760
《Spring Boot实战》源代码
2018-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人