摘要:
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示 阅读全文
摘要:
死锁问题 什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 比如现在A有倚天剑,B有屠龙刀,A想要B的屠龙刀,B想要A的倚天剑,但是A不想把倚天剑给B,B同样也不想把屠龙刀给A。 两个人都等着对方把武器交 阅读全文
摘要:
生产者和消费者问题 生产者和消费者的问题是一个线程通信的例子。 比如买馒头,需要先进行生产,生产了就通知消费者来吃馒头。如果馒头没了就通知生产者继续生产。 运行结果: 这里需要注意synchronized的锁对象应该是馒头店,不能是this。因为馒头店只有一个,而this指当前对象,生产者和消费者都 阅读全文
摘要:
线程间的通信 线程通信就是线程与线程间进行信息的交换。 这里可以举个例子,两个线程交替的打印0 9这10个数字。 首先分析一下,比如线程一先开始打印,当它打印了数字0后,他应该 等待 线程二打印数字1,线程二打印了之后又要 等待 线程一打印数字2... 那怎么样才能让线程一开始等待呢?这里可以使用O 阅读全文
摘要:
题目描述 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。 示例: | Id | Email | | | | | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | 根据以上输入,你的查询应返回以下结果: | Email | | | | a 阅读全文
摘要:
题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = "abcdefg", k = 2 输出: "cdefga 阅读全文
摘要:
题目描述 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [ 10 阅读全文
摘要:
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 1、思路 阅读全文
摘要:
线程安全问题 在多个线程同时访问一个相同的资源的时候会发生线程安全问题。 举个栗子: 买票问题,三个窗口进行买票。 运行结果: 很明显可以看出,在三个线程同时去访问Ticket类的时候,票的数量出现的 重复 和 错误(结果为0) 的情况。 为什么会出现这种情况呢? 因为线程是并发的,并发就是三个线程 阅读全文
摘要:
多线程的另外两种创建方式 线程的创建总共有四种方式,分别是继承Thread类、实现Runnable接口、实现Callable接口和通过线程池创建 在前面我已经学习了前面两种创建线程的方式,今天来学习一下后面两种创建线程的方式。Callable接口和线程池技术是在JDK5.0以后添加的。 1、实现Ca 阅读全文