自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 剑指offer——4

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。解题思路刚看题目的时候,可能会觉得这个问题很复杂,不能一下子想出解决方案。那我们就要学会把复杂的问题分解成小问题。我们求整个字符串的排列,其实可以看成两步:第一步求所有可能出现在第一个位置的字符(即把第一个字符和后面的...

2019-03-12 11:30:24 136

原创 Spring中的bean的理解

首先看一下spring中创建bean的方式1. 使用构造器创建Bean实例使用构造器来创建Bean实例是最常见的情况,如果不采用构造注入,Spring底层会调用Bean类的无参构造器来创建实例,因此要求该Bean提供无参的构造器。在这种情况下,class元素是必须的,class属性的值就是Bean实例的实现类。Spring对Bean实例的所有属性执行默认初始化,即所有基本类型为0或false,...

2019-03-11 17:02:29 91085 8

原创 spring单例和多例——如何在单例中调用多例对象

spring生成对象默认是单例的。通过scope属性可以更改为多例。<bean id="user" class="modle.User" scope="prototype"> </bean>现在有这么一种情况.User类调用一个service, 这个service又调用一个tool。有时我们希望User是多例的,service是单例的,而tool又是多例的。...

2019-03-11 15:27:38 2434

原创 剑指offer——3

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路先得到矩阵的行和列数,然后依次旋转打印数据,一次旋转打印结束后,往对角分别前进和后退一个单位。要注意单行和单列的情况。p...

2019-03-08 14:31:59 87

原创 剑指offer——2

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示解题思路如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而...

2019-03-07 14:49:37 133

原创 剑指offer——1

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时。右移要查找数字比左下角数字小时,上移。这样找的速度最快。代码实现是由左下角开始找pub...

2019-03-07 10:10:51 249

原创 二叉查找树

二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。...

2019-03-04 14:59:49 258

原创 背包问题—完全背包问题

完全背包问题跟01背包的区别是01背包每个物品只能选一次,总共就这几个,而完全背包问题是每个物品可以无限选,只要装得下。可以看成是有几种物品,每种都无限多个。如何根据01背包问题的分析成果来分析完全背包呢?其实很简单,01背包在选第i个物品时,容积够用情况下,只有2种状态可选,放还是不放,找出最大价值的选择。而完全背包在选第i种物品时,容积够用情况下,可能有2种以上状态可选,放1个,或者2个...

2019-03-04 12:02:40 719

原创 背包问题—01

题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。0-1背包问题指的是每个物品只能使用一次基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。递归方法首先我们用递归的方式来尝试解决这个问题我们用F(n,C))表示将前n nn个物品放进容量为C的背包里,得到的最大的价值。我们用自顶向下的角度来...

2019-03-04 10:12:26 147

原创 线程池和锁的深度化

Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定...

2019-03-03 10:20:57 241

原创 并发容器—3

synchronizedMapCollections.synchronized*(m) 将线程不安全额集合变为线程安全集合CountDownLatchCountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。publi...

2019-03-03 09:15:19 130

原创 hashTabele、hashMap和conCurrentHashMap

1.HashMapHashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。首先,我们用下面这张图来介绍 HashMap 的结构。大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。上图中,每个绿色的实体是嵌套类 Entry 的实例,Entry 包含四个属性:key, value, hash 值和用于单向链表的 next。cap...

2019-03-03 08:52:15 166

原创 同步容器类——2——HashTable和HashMap

HashMap和HashTable都是基于哈希表来实现键值映射的工具类。讨论他们的不同,我们首先来看一下他们暴露在外的API有什么不同。下面两张图,我画出了HashMap和HashTable的类继承体系,并列出了这两个类的可供外部调用的公开方法。从图中可以看出,两个类的继承体系有些不同。虽然都实现了Map、Cloneable、Serializable三个接口。但是HashMap继承自抽象类...

2019-03-01 21:08:17 131

原创 同步容器类——1——ArrayList和vector

区别与联系1.Vector是线程安全的集合类,ArrayList并不是线程安全的类。Vector类对集合的元素操作时都加了synchronized,保证线程安全。2.Vector与ArrayList本质上都是一个Object[] 数组,ArrayList提供了size属性,Vector提供了elementCount属性,他们的作用是记录集合内有效元素的个数。与我们平常调用的arrayList....

2019-03-01 20:08:57 380

原创 Java中wait和sleep方法的区别

1、两者的区别1.这两个方法来自不同的类分别是Thread和Object2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)4.sleep必须捕获异常,而wait,notify和notifyA...

2019-03-01 10:48:13 4639 1

原创 synchronized和lock

一.synchronized的缺陷如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:1)获取锁的线程执行完了该代码块,然后线程释放对锁的占有;2)线程执行发生异常,此时JVM会让线程自动释放锁。那么如果这个获取锁的线程由于要等待IO或者其他原因(比如调用slee...

2019-03-01 10:34:21 136

空空如也

空空如也

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

TA关注的人

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