- 博客(165)
- 问答 (1)
- 收藏
- 关注
原创 旋转数组查找指定值
递增数组[1,2,3,4,5],变化为[5,6,1,2,3,4], 给定K,判断是否存在,并返回其索引位置 二分查找 选择中间位置作为判断的分界点 所以二分中,必定有一部分数组是递增有序的,而另一部分则不是,所以当我们取中间点的时候,首先判断中间点是不是所要寻找的值。 如果不是,则寻找递增的那一部分数组 1.前部分是递增数组,如果指定值在前部分数组中,end = mid - 1;否则在后...
2018-09-14 10:58:17
2533
原创 求字符串的组合
输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中 去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择...
2018-09-13 12:11:00
638
转载 设计实现一个LRU Cache
什么是LRU Cache在LeetCode上有一个LRU Cache实现的题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get t...
2018-09-10 16:03:56
858
转载 CGlib动态代理
JDK动态代理必须提供接口才能使用,在一些不能提供接口的环境中,只能采用第三方技术,比如CGlib动态代理,它的优势在于不需要提供接口,只要一个非抽象类就能实现动态代理 CGLib采用了非常底层的字节码技术,其原理是通过目标类的字节码为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。我们先通过一个demo看一下Cglib是如何实现动态代理的。 ...
2018-08-10 16:50:12
285
原创 Java实现关于数组的一些骚操作
如何找出数组中唯一的重复元素? 问题描述:数组a[N],1-N-1这N-1个数存放在a[N]中,其中某个数字重复1次。写一个函数,找出重复的数字。要求每个数组元素只能访问一次,并且不用辅助空间。分析:由于不能使用辅助物理空间且每个元素只能访问一次,所以可以从原理入手,采用数学求和法。 设重复的数字为A,那么数组的和为1-N-1,A的累加,减去1-N-1的累加即可得到重复的数字A...
2018-07-26 16:46:46
1348
原创 排序算法Java实现
不稳定排序 选择排序: 经过第一轮比较得到的最小的记录,与第一个记录的位置交换, 然后对不包括第一个记录以外的记录进行第二轮比较,得到的最小记录与第二个记录交换 时间复杂度:O(n^2) 空间复杂度:O(1) public static void selectSort(int[] arr){ if (arr == null || arr....
2018-07-18 21:55:24
233
原创 剑指Offer面试题32:从1到n整数中1出现的次数
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次思路一:最直白但是时间复杂度高的解法 依次累加1到n中每个整数1出现的次数。每次可以通过对10求余数判断整数的个位数是不是1 public int NumberOf1Between1AndN(int n) { ...
2018-07-11 15:55:03
289
原创 SSM整合踩坑集合
IDE:IntelliJ IDEA maven项目管理,Spring,Spring MVC,MyBatis整合开发 纯xml配置 上图是Spring容器和SpringMVC的配置的文件,下图是自定义的Controller 然后运行就出现了如下的错误,哭唧唧 启动时出现这个页面,后台报错如下:Caused by: java.io.FileNotFoundException:...
2018-06-04 20:50:16
785
原创 MyBatis踩坑持续更新
Invalid bound statement (not found)错误 IDEA开发,其中xml文件放到resources中,接口定义在mapper包下,mybatis配置如下: 我们知道配置映射器用三种方式<mapper resource="xml所在文件路径"/><mapper package = "mapper接口所在包名"/><ma...
2018-05-31 22:14:57
533
原创 设计模式的设计原则
单一职责原则 是什么单一职责原则的英文名称是Single Responsibility Principle,简称SRP。 “一个类仅有一个职责”或者“引起类变化的只有一个原因”,这就是单一职责原理。 类只因一个原因而变化,这仿佛是一种新的类定义方式。当接触面向对象编程时,试图把一个类对比为一个事物,事物具备的功能都是这个类的操作。比如,一根尺子,既可以用来打学生手板,也可以用来丈...
2018-05-29 22:03:16
226
原创 Socket编程
什么是Socket?Socket是连接运行在网络上的两个程序间的双向通讯的端点。 Socket进行网络通信的过程1.服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户的连接请求。 2.客户程序根据服务器程序所在的主机名和端口号发出连接请求。服务器在端口监听到有客户端发来的请求,如果有连接请求,那么接受连接请求并获得一个新的绑定到不同端口地址...
2018-05-28 20:35:59
242
原创 Schema与数据类型优化
数据库设计时更优的Tips 选择优化的数据类型1.更小的通常更好 一般情况下,应该尽量使用可以正确存储数据的最小数据类型。因为它们占用更少的磁盘。内存和CPU缓存,并且处理时需要的CPU周期也更少 2.简单就好 简单数据类型的操作通常需要更少的CPU周期 3.尽量避免NULL 通常情况下最好指定列为not null。 通常把可为NULL的列改为NOT NULL带来的性能提...
2018-05-23 19:48:04
284
转载 关于数据库的优化问题
大型网站应用之海量数据和高并发解决方案总结一二 数据库分库分表策略的具体实现方案 分库分表之后 查询和新增数据的时候,需要一个专门做这个事情的中间件(常见的有MyCat和Cobar,还有一些公司自研的数据库中间件产品)用来区分表和库,如果不同的库或者不同的服务器,要进行判断和对接。 如果只是单体应用或单一系统,系统的瓶颈是由数据库的IO引起的或者数据库表超过500W一般都会进行分库分表。 ...
2018-05-22 22:01:06
302
原创 数据库的引擎
MyISAM 引擎特点:1.不支持事务 2.只支持表级锁(数据库操作表时需要锁定整张表),锁定成本小,但并发性不高 3.读写相互阻塞,但是读读不阻塞 4.只会缓存索引,不会缓存数据 5.读取速度快(因为功能相对弱小,占用资源少,锁粒度粗) 6.不支持外键约束,但支持全文索引 7.MyISAM是MySQL5.5.5前缺省的存储引擎 适用的生产业务场景1.不需要...
2018-05-21 21:43:36
350
原创 JDK1.8 HashMap底层实现原理
底层实现: 数组+链表+红黑树一些重要的变量://默认初始容量16static final int DEFAULT_INITIAL_CAPACITY = 1 &amp;lt;&amp;lt; 4; //容量最大值static final int MAXIMUM_CAPACITY = 1 &amp;lt;&amp;lt; 30;//默认加载因子0.75static final float DEFAULT_L...
2018-05-16 10:38:40
7407
原创 【LeetCode】Two Sum问题
1.Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may no...
2018-04-28 20:33:29
209
原创 【leetcode】中关于二叉树的那些题
112 Path SumGiven a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.Note: A leaf is a node with no...
2018-04-28 19:27:38
370
原创 MyBatis配置踩坑
MyBatis版本3.4.6 mysql-connector版本:6.0.6 报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered vi...
2018-04-28 10:35:53
694
2
原创 关于动态代理模式
为什么JDK的动态代理只能实现接口的代理?我们通过JDK动态代理生成的代理对象的类型实际是$Proxy0(这个名字后面的0是编号,有多个代理类会一次递增)类,该类继承了Proxy类,所以只能对接口进行代理。Java的继承机制注定了这些动态代理类们无法实现对类的动态代理。public final class $Proxy0 extends Proxy 动态代理底层实现原理...
2018-04-27 14:30:30
261
原创 【LeetCode】SingleNumber[I][II]
题目描述Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without ...
2018-04-25 17:07:02
213
原创 LeetCode Word Break解题报告
题目描述Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s =”leetcode”, dict =[...
2018-04-25 16:10:34
1432
原创 Given a linked list, return the node where the cycle begins.
Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull. Follow up: Can you solve it without using extra space? 给定一个链表,判断是否有环,如果没有环,直接返回null。(解决这个问题而不需要额外的空间) ...
2018-04-25 10:09:35
613
原创 Given a singly linked list L: L 0→L 1→…→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→…
题目描述Given a singly linked list L: L 0→L 1→…→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→… You must do this in-place without altering the nodes’ values.(在不改变结点值的情况下) For example, G...
2018-04-25 09:52:59
1244
原创 Given a binary tree, return the postorder traversal of its nodes' values.非递归后续遍历
Given a binary tree, return the postorder traversal of its nodes’ values. For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3return[3,2,1]. Note: Recursive solutio...
2018-04-24 23:20:47
498
原创 Sort a linked list using insertion sort.
题录:Sort a linked list using insertion sort. 分析如下:使用插入排序的方法,对一个链表进行排序。 插入排序的思想:第i个元素插入到已排序的前i-1个元素中。 注意 1 排好序的新链表和旧链表要断开。 2 什么叫做插入排序,从A[1]到A[n],依次把旧链表中的旧元素放入新链表的正确位置中,新链表是从没有元素开始逐渐排好序的...
2018-04-23 23:52:35
251
原创 Sort a linked list in O(n log n) time using constant space complexity.
Sort a linked list in O(n log n) time using constant space complexity. Example 1:Input: 4->2->1->3 Output: 1->2->3->4 Example 2:Input: -1->5->3->4->0 Outp...
2018-04-23 23:01:06
166
原创 剑指Offer面试题思路解析
面试题58:二叉树的下一个节点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路分析: 1.如果二叉树为空,返回空 2.如果二叉树的右子树不为空,那么返回右子树的最左孩子节点 3.如果二叉树的右子树为空,那么寻找第一个节点是父节点左孩子的节点,返回其父节点,既是当前节点的下一个节点。p...
2018-04-18 18:15:02
251
原创 二叉排序树的实现
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。 输入描述:输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。 输出描述:可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入中可...
2018-04-12 16:30:20
365
原创 Spring和Mybatis整合的踩坑之路
通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder’ 的声明在Spring配置文件中出现通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder’ 的声明这个错误,其实主要是我们在引入命名空间时没有正确引入它的DTD解析文件,当然你必须在把Spring相应的包导入正确的情况下。 解决方案就是如...
2018-03-28 20:11:15
357
原创 Spring配置文件创建ApplicationContext对象报错java.lang.IllegalArgumentException
出现这个错误的原因就是使用了JDK1.8而Spring是3.x版本,版本太低 两种解决方案 1.降低JDK版本,使用JDK1.7 2使用Spring4.x 将原先使用的spring3.x替换为spring4.1.6即可运行成功...
2018-03-22 09:51:27
1486
原创 二叉排序树的操作
删除结点是比较麻烦的,这里简要介绍一下如何删除结点 1.待删除的结点是叶子结点,这种很简单,直接令指向该结点的指针指向null即可 2.待删除的结点只有左子树,这种也比较好操作,令指向该结点的指针指向该结点的左子树即可 3.待删除的结点只有右子树,这种同上操作,令指向该结点的指针指向该结点的右子树即可 4.待删除的结点的左子树和右子树均不为空,这种情况下,我们可以将删除操作进行转换,转换为...
2018-03-13 15:21:48
376
原创 剑指Offer面试题28:字符串的排列之相关题目
1.输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上,使得正方体三组相对的面上的4个顶点的和都相等 其实这道题跟字符串的排列是一样的,相当于先得到a1,a2,a3,a4,a5,a6,a7,a8这8个数字的所有排列,然后判断有没有某一个排列符合题目给定的条件,即 a1 + a2 + a3 + a4 == a5 + a6 + a7 + a8 a1 + a3 +...
2018-03-12 20:40:34
292
原创 剑指Offer面试题28及其扩展:求字符的所有组合
题目描述:如果不是求字符的所有排列,而是求字符的所有组合。比如,输入三个字符a,b,c,则它们的组合有a,b,c,ab,ac,bc,abc。当交换字符串中的两个字符时,虽然能得到两个不同的排列,但却是同一个组合,比如ab和ba是不同的排列,但只算一个组合 思路分析:如果输入n个字符,则这n个字符能构成长度为1的组合,长度为2的组合,……..,长度为n的组合。在求n个字符长...
2018-03-12 16:24:27
855
原创 剑指Offer面试题27:二叉搜索树与双向链表
题目描述:输入一课二叉搜索树,将该二叉树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。比如,输入图中的二叉搜索树,则输出转换之后的双向链表 从中我们可以发现双向链表中的结点顺序和二叉搜索树的中序遍历得到的序列顺序是一样的。 我们可以使用递归和非递归两种方式实现这道题的求解 非递归方式:我们借助栈结构,同时我们需要记录当前结点和前一个结点,这样我们就...
2018-03-12 14:24:26
264
原创 树结构
关于树的一些特性:每个树都是由根节点及一些“子树”构成。非空树至少有一个节点,根节点。否则,没有任何节点,为空树。子树之间是互不相交的除了根节点外,每个节点有且仅有一个父节点一颗N个节点的树有N-1条边关于树的一些概念:节点的度:节点的子树个数树的度:树中所有节点的度的最大值叶子节点的度为0节点的层次:规定根节点所在的层次为1,其他任意节点是其父节点的层次加1树的深度:树...
2018-03-08 22:44:52
369
原创 剑指Offer面试题10:二进制中1的个数
题目描述:请实现一个函数,输入一个整数,输入该数二进制表示中1的个数。 例如:把9表示成二进制是1001,有2位是1,所以输入9,该函数输出2 可能引起死循环的解法思路:先判断整数二进制数的最后一位是不是1,然后整数右移一位,此时原来处于倒数第二位就被移到最右边了,再判断是否是1。也就是,依次右移,如果最后一位是1,则得到1,如果是0,则得到0 这种思路中,待判断的整数右移,而辅...
2018-03-08 11:37:43
200
转载 JVM 新生代为何需要两个 Survivor 空间?
文章转自:JVM 新生代为何需要两个 Survivor 空间?我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代;新生代又被划分成 Eden 空间、 From Survivor 和 To Survivor 三块区域。看书的时候有个疑问,为什么非得是两个 Survivor 空间呢?要回答这个问题,其实等价于:为什么不是0个或1个 Survivor 空间?...
2018-03-06 19:44:34
649
原创 leetCode155. Min Stack
题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) – Push element x onto stack.pop() – Removes the element on top of the stack.top() ...
2018-03-05 17:49:42
230
原创 二分查找
前提:数据按照大小存储,并且用数组存储 思想:因为数组是有序的(一般是递增),所以我们首先取中间值与待查找的值进行比较,如果相等,则找到并返回;如果比待查找的值小,则待查找的值必定位于中间值的左侧,所以我们一下子将查找的范围缩小了一半。如此反复即可。 需要三个变量low high mid分别记录待查的范围及其中间位置//如果找到则返回其在数组中的索引;否则返回-1public int...
2018-03-02 16:58:15
171
原创 leetCode138.Copy List with Random Pointer
题目描述: A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null. Return a deep copy of the list. 大意:给定一个链表,每个节点包含一个random指...
2018-03-02 14:53:57
194
空空如也
springMVC项目运行时报错
2018-03-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人