了解ConcurrentHashMap JDK1.7和JDK1.8中ConcurrentHashMap的结构JDK1.7的ConcurrentHashMap:JDK1.8的ConcurrentHashMap(TreeBin: 红黑二叉树节点 Node: 链表节点): 答:ConcurrentHashMap 结合了 HashMap 和 HashTable 二者的优势。HashMap 没有考虑同步,HashTable 考虑了同步的问题。但是 Has
二分查找相关习题理解 剑指 Offer 53 - II. 0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8class Solution { public int missingNumber(int[] nums) { int i = 0, j =
Git相关知识点 1.Git与SVN区别Git 属于分布式版本控制系统,而 SVN 属于集中式版本控制系统。分布式版本控制每个人的电脑上就有一份完整的代码,而集中式版本控制只有中央服务器拥有一份代码。所以集中式版本控制存在安全问题,当中央服务器挂了所有人都没办法工作了。集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。分布式版本控制新建分...
LeetCode 链表 习题 一.涉及删除问题83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public ...
LeetCode 字符串(简单题) 答案摘抄自:https://leetcode-cn.com/tag/string/13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D ...
Leetcode 数组(简单题)[1000题之后] 答案摘抄自:https://leetcode-cn.com/tag/array/1002. 查找常用字符给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“...
Leetcode 数组(简单题)[1-1000题] 1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一...
程序员代码面试指南 [需要排序的最短子数组长度,数组中出现次数超过一半的数字,数组中出现次数超过一半的数字] 需要排序的最短子数组长度https://www.nowcoder.com/questionTerminal/fccb5d14b44b4b99b34839bdf20588e9?orderByHotValue=1&page=1&onlyReference=false来源:牛客网给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的...
Java集合类 整理自:https://blog.csdn.net/pcwl1206/article/details/864790661、Java 中常用的容器有哪些?常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。CollectionSetSetTreeSet:基于红黑树实现,支持有序性操作,例如...
理解MySQL 整理自:https://blog.csdn.net/pcwl1206/article/details/843415401、请说下你对 MySQL 架构的了解?先看下 MySQL 的基本架构图: 大体来说,MySQL 可以分为 Server 层和存储引擎两部分。  ...
理解Java虚拟机 整理自:https://blog.csdn.net/pcwl1206/article/details/102952811一.Java虚拟机内存的各个区域1、Jvm 的主要组成部分及其作用。类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface) &nb...
Java并发总结(高级) 1.谈谈 synchronized和ReenTrantLock 的区别① 两者都是可重入锁两者都是可重入锁。“可重入锁”概念是:自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。② syn...
sychronized总结(包括sychronized底层实现原理) 一.sychronized的特性1.原子性:一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。注意:一条 java 语句不一定是原子的,也不一定只是一条指令。2可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。所有的变量都存储在主内存中。每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本(主内存中...
Java并发总结(基础) 一.并发基础1.什么是进程,什么是线程?进程与线程之间的区别。进程:操作系统中一个程序的执行周期称为一个进程。线程:一个程序同时执行多个任务。通常,每个任务就称为一个线程。没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。多进程与线程的区别:(1)根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。(2)线程依赖于进程而存在,一个线程只能属于一个进程,...
Linux中安装VMware-Tools步骤(实现Linux与Windows之间的复制与粘贴) Linux中安装VMware-Tools的步骤说明1.进入CentOS2.点击左上角菜单虚拟机,选择安装VMware-Tools3.CentOS会出现一个vm的安装包4.点击右键复制,到/opt/目录下进行粘贴5.打开终端,依次输入命令cd /opt/lstar -zxvf VMwareTools-10.0.5-3228253.tar.gz之后会产生一个解压过后的文件夹输...
详解网络体系结构中的传输层(包含TCP的“三报文握手”和“四报文挥手”) 5.1传输层概述计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。但实际上在计算机网络中进行**通信的真正实体是位于通信两端主机中的进程**。通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。过程:倘若不同主机的不同应用进程要进行网络通信,在应用层需要用不同的端口号代表不同...
HTTP协议 一、HTTP协议初相识HTTP协议(超文本传输协议),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。1.一次HTTP请求的完整过程:1.域名解析1>浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),查找自身的缓存中是否存在域名对应的IP地址,如果查找到且没有过期则解析到此结束 。2>...
左神算法5:哈希函数、哈希表、布隆过滤器、一致性哈希、并查集问题和岛结构 1.哈希函数和哈希表1.1哈希函数特点经典的哈希函数的输入域是无穷大的哈希函数的输出域是有穷尽的,虽然很大,但是是个固定的数值当输入参数固定的情况下,得到的输出参数固定,它不是随机函数,样本固定得到的输出值固定输入不一样,也有可能得到相同的哈希值(哈希碰撞)虽然会有两个输入对应同一个输出,但是对于大量的输入对应的输出域基本是平均分的即S域上均匀分布。推论:对于输入对应的哈希值,使...
LeetCode905.按奇偶排序数组~~~~724. 寻找数组的中心索引~~~~66.加一~~~~414.第三大的数 LeetCode905.按奇偶排序数组给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <=...
左神算法4.二叉树及相关习题理解 题目1:实现二叉树的先序、中序、后序遍历[递归方式和非递归方式]1.1递归实现public class BinaryTreeWithRecur { public static class Node{ public int value; public Node left; public Node right; publi...
LeetCode217.存在重复元素~~~~~~917.仅仅反转字母~~~~~~977.有序数组的平方 LeetCode217.存在重复元素给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass S...
左神算法3:栈、队列、链表、矩阵结构及相关习题 一、栈和队列题目1:用固定的大小的数组实现栈和队列固定大小的数组实现栈public class StackWithArray { private int[] array; private int index; //指向即将放入的位置 public StackWithArray(int initialSize){ if(initialSize&l...
LeetCode88.合并两个有序数组 LeetCode88.合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0],...
LeetCode58.最后一个单词的长度 LeetCode58.最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。示例:输入: “Hello World”输出: 5class Solution { pub...
LeetCode9.回文数 LeetCode9.回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一...
LeetCode383.赎金信 LeetCode383.赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConst...
左神算法2:排序(快排、堆排、桶排、计数与基数排序简单介绍) 荷兰国旗问题 大根堆小根堆 排序稳定性 比较器 相邻两数的最大差值问题 1.荷兰国旗问题定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求时间复杂度为O(N)、额外空间复杂度为O(1)。分析:三个指针法:一个指向前头less,一个指向尾部more,一个是当前下标cur。当前下标由指向前面的指针推着前进。import java.util.Arrays;public class...
左神算法1:小和问题和逆序对问题 1. 小和问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数,没有;3左边比3小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2=16分析:小和问题,由当前数左侧所有比自己小的数之和相加 ==》转换为 =...
LeetCode35.搜索插入位置 LeetCode35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6]...
LeetCode27.移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...
LeetCode189.旋转数组 LeetCode189.旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [...
LeetCode709.转换成小写字母 LeetCode709.转换成小写字母实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello”输出: “hello”示例 2:输入: “here”输出: “here”示例 3:输入: “LOVELY”输出: “lovely”class Solution { pu...
剑指Offer 数组系列 Java实现 题目描述:数组中重复的数在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。public class Solution { // Parameters: // ...
JavaSE总结【面向对象相关】 1.面向对象与面向过程两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。比喻蒋介石和Mao泽东分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性。面向过程是蛋炒饭,面向对象是盖浇饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“...
JavaSE总结【初识+基础】 一、初识1.字节字节是我们常见的计算机中最小存储单元。计算机存储任何的数据,都是以字节的形式存储,右键点击文件属性, 我们可以查看文件的字节大小。 8个bit(二进制位) 0000-0000表示为1个字节,写成1 byte或者1 B。8 bit = 1 B1024 B =1 KB1024 KB =1 MB1024 MB =1 GB1024 GB = 1 TB2.常用命令3.JR...
Thread和Runnable的区别 实现Runnable接口比继承Thread类所具有的优势:1.避免了单继承的局限性一个类只能继承一个类(一个子类只能有一个父类),类继承了Thread类就不能继承其他的类。而实现了Runnable接口,还可以继承其他的类,实现其他的接口。2.增强了程序的扩展性,降低了程序的耦合性(解耦),代码和线程独立。实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)实现类...
ArrayList类的详解 ArrayList类1.基本使用:import java.util.ArrayList;public class StudentArrayList { public static void main(String[] args) { //创建学生数组 ArrayList<String> list = new ArrayList<&g...
Object类用例 Object类的equals和toString方法 Person.javaimport java.util.Objects;public class Person { private String name; private int age; public Person() { } public Person(String name, int ...
System类用例 java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long currentTimeMillis(): 返回以毫秒为单位的当前时间。 public static void arraycopy(Object src, int srcP...
Arrays类用法案例说明及练习 Arrays类1.public static String toString(int[] a) :返回指定数组内容的字符串表示形式。public class Test { public static void main(String[] args) { // 定义int 数组 int[] arr = {2,34,88,68,657,8,69,9}; ...
StringBuilder和StringBuffer用法及区别(附加String) 1.StringBuilder的构造方法/* java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率 构造方法: StringBuilder() 构造一个不带任何字符的字符串容器,其初始容量为 16 个字符。 StringBuilder(String str) 构造一个字符串容器,并初始化为指定的字符串内容。 */...
键盘输入一个字符串,并且统计其中各种字符出现的次数。 /*题目:键盘输入一个字符串,并且统计其中各种字符出现的次数。种类有:大写字母、小写字母、数字、其他思路:既然用到键盘输入,肯定是Scanner键盘输入的是字符串,那么:String str = sc.next();定义四个变量,分别代表四种字符各自的出现次数。需要对字符串一个字、一个字检查,String–>char[],方法就是toCharArray()遍历char[]...
定义一个方法,把数组[1,2,3]按照指定格式拼接成一个字符串 /*题目:定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:[word1#word2#word3]。分析:1. 首先准备一个int[]数组,内容是:1、2、32. 定义一个方法,用来将数组变成字符串三要素返回值类型:String方法名称:fromArrayToString参数列表:int[]3. 格式:[word1#word2#word3]用到:...
String中的equals和==区别 public class Test { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str3...
CannotAcquireResourceException Unknown system variable 'tx_isolation'解决方法 错误原因:安装的mysql版本高,而导入的jar包版本低。修改如下:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</...
解决github加载超时打不开问题的简单方法 1.进入这个网址http://tool.chinaz.com/dns2.搜索 http://github.com找出TTL值最小的,复制如图:192.30.253.112备用3.按照图上目录级别,进入hosts这一级,选择host右击打开方式,选择利用记事本打开在记事本最下面添加下图所示地址,这个地址就是步骤2中搜索出的TTL值最下的地址。这里给出大家几个地址,可...
IDEA中程序运行使得cmd命令环境改变字体和背景颜色的方法 Jansi 是一个 Java 类库,它能够让你在控制台输出色彩缤纷的文字。说明:本次实例是一个Maven工程。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or...
Redis的数据类型4:有序集合 Redis的数据类型4:有序集合1.zadd: 添加或更新成员zadd sorted_set score member一次更新操作,没有添加任何新成员,命令返回0。带有XX选项的ZADD命令只会对有序集合已有的成员进行更新,而不会向有序集合添加任何新成员。带有NX选项的ZADD命令只会想有序集合添加新成员,而不会对已有的成员进行任何的更新。在默认情况下,ZADD命令会返回新添加成员的数...
Redis的数据类型3:集合 Redis的数据类型3:集合1.sadd: 将元素添加到集合 sadd set elementsrem: 从集合中移除元素 srem set elementsmove: 将元素从一个集合移动到另一个集合 smove source target elementsmembers: 获取集合包含的所有元素 smembers setscard: 获取集合包含的元素数量 scard...
Redis的数据类型2:散列 Redis的数据类型2:散列1.为字段设置值: hset hash field value获取字段的值: hget hash field2.hsetnx: 只在字段不存在的情况下为它设置值 hsetnx hash field value3.hstrlen: 获取字段值的字节长度 hstrlen hash fieldhexists: 检查字段是否存在 hexists h...
Redis的数据类型1:字符串 Redis的数据类型1:字符串1.一次为多个字符串键设置值: mset key1 value1 keyn valuen一次获取多个字符串键的值: mget key1 keyn2.msetnx与mset的主要区别在于msetnx只会给所有给定键不存在的情况下对键进行设置,而不会像mset那样直接覆盖键已有的值;如果在给定的键中,即使有一个键已经有值了,那么msetnx命令也会放弃对...
Redis基础:对于key的基本及高级操作 key的操作1.设置键值: set key value得到键值: get key测试指定key是否存在: exists key测试指定key的value值类型: type key2.显示指定类型的所有key: keys patterns3.给指定key改名: rename oldkey newkey4.为key指定过期的时间: expire key secon...
TCP通信中文件上传的案例 TCP通信中文件上传的案例文件上传步骤:1>【客户端】本地的字节输入流,从硬盘读取文件数据到程序中。2>【客户端】网络字节输出流,写出文件数据到服务端。3>【服务端】网络字节输入流,读取文件数据到服务端程序。4>【服务端】本地的字节输出流,写出文件数据到服务器硬盘中。5>【服务端】网络字节输出流,给客户端回写“上传成功”。6>【客户端】网络字节输入...
简单有效的解决WinSCP连接Linux出错问题 在使用WinSCP连接Linux时出现错误可能是拒绝连接或者是连接超时。一般这样可以解决:WinSCP要求输入主机名,这里的错误经常会导致连接不上的问题。1>打开Linux终端,输入ifconfig -a,此时会出现inet addr: ````````````就是主机名,()模糊部分为主机名)填入;2>填入下表这些即可:文件协议选择:SFTP端口号为22...
TCP网络编程理解及代码实现(Socket基础编程)--思路清晰 1.TCP通信1.1TCP通信简介TCP通信与UDP通信一样,都可以实现两台计算机之间的通信,通信的两端都需要创建Socket对象。它们之间的一个主要区别在于TCP严格区分客户端和服务器端,在通信时必须先由客户端去连接服务器端才能实现通信,服务器端得等待客户端连接服务器。UDP只有发送端和接收端,不区分客户端和服务器端。两者通信过程:通信时,首先要创建代表服务器端的ServerSocket...
线程间通信 ——引入线程间进行通信后大大提高了CPU的利用率,也会使程序员对各线程的处理过程进行有效把控与监督。Java在Object类中提供了wait()、notify()、notifyAll()等方法用于解决线程间的通信问题,由于Java中所有类都是Object类的子类或间接子类,因此任何类的实例对象都可以直接使用这些方法。线程间通信的常用方法:1>void wait():使当前线程放弃同步...
完美诠释-------单例模式(饿汉式与懒汉式(含双重加锁))与多线程 ------引入我们在使用Windows的时候无法同时打开两个任务管理器,也就是说,它在整个系统中只有一个唯一的一个实例。怎样实现在一个系统中某个类的实例只能唯一存在呢?单例模式就是很好的解决方法。单例模式的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式包含的角色只有一个,那就是单例类——Singleton。一.饿汉模式在这个类被加载时,静态变量instance会被初...
逐渐深入线程安全问题及线程的同步 1.线程安全我们在售票的时候,可能会出现"意外情况",例如,一张票被打印多次,或者打印出的票数为0甚至为负数。这些情况都是有多线程操作共享资源所导致的线程安全问题。–一会再更新...
线程的状态及其转化 当Thread对象创建完成时,线程的生命周期便开始了。当线程任务中代码正常执行完毕或者线程抛出一个未捕获的异常或者错误时,线程的生命周期便会结束。Java中线程的状态可以分为6个状态,分别是NEW(新建状态)、RUNNABLE(可运行状态)、BLOCKED(阻塞状态)、WAITING(等待状态)、TIMEDWAITING(定时等待状态)、TERMINATED(终止状态)。1.NEW(新建状态)...
线程的中断方法与判定中断状态方法(重要区别interrupted&isInterrupted) 一.线程的中断方法中断线程目前常见的有以下两种方式:1.通过退出标记使线程正常退出2.调用 interrupt() 方法来通知3.(调用stop(),这个方法已经弃用,原因是可能会造成意想不到的结果)使⽤stop⽅法强制使线程退出,但是该⽅法不太安全所以已经被废弃了。为什么说不安全呢?因为stop会解除由线程获取的所有锁定,当在⼀个线程对象上调⽤stop()⽅法时,这个线程对象所运...
ch5_2.判断两个字符串是否互为旋转词 2.判断两个字符串是否互为旋转词如果一个字符串为str,把字符串str前面任意的部分挪到后面形成的字符串叫做str的旋转词。比如:str=“1ab6”,b=“ab16”,返回false.str=“1ab6”,b=“ab61”,返回true.解题思路:首先:判断返回为空的条件:如果字符串a和字符串b任意一个为null,或者字符串a和字符串b的长度不同,则直接返回false。其次:核心思...
牛客网下厨房题解 题目描述:牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。输入描述:每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述:输出一行一个数字表示完成所有料理需要多少种不同的材料。示例1输入...
Python实现K近邻算法 Python实现K近邻算法一、题目介绍邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确...
Leetcode练习集(771,+牛客旧键盘):利用集合来解决问题 771.宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S =...
Leetcode138.复制带随机指针的链表 138.复制带随机指针的链表(运行代码参考于力扣官网第三种答案)给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。思路:1.遍历原来的链表并拷贝每一个节点,将拷贝节点放在原来节点的旁边,创造出一个旧节点和新节点交错的链表。如你所见,我们只是用了原来节点的值拷贝出新的节点。原节点 next 指向的都是新创造出来的节点。2...
Comparable接口与Comparator接口 Comparable接口与Comparator接口1.Comparable(内部排序接口)若一个类实现了Comparable接口,就意味着“该类支持排序”。既然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过Collections.sort(或Arrays.sort)进行排序。此外,“...
二叉搜索树 二叉搜索树1.概念二叉搜索树又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。2.查找3.插入4.删除设待删除结点为 cur, 待删除结点的双亲结点为 parentcur.left == null1.cur...
Leetcode387.字符串中的第一个唯一字符 387.字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.s = “loveleetcode”,返回 2.class Solution { public int firstUniqChar(String s) { //建立HashMap,键为Character,值...
Leetcode136.只出现一次的数字 136.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解法1:class Solution { public int singleNumber(int[]...
Java中有关字符串的操作 1.字符串的创建/* * java.lang.String类代表字符串 * API中显示,Java程序中的所有字符串字面值(如“abc"),都作为此类的实例实现 * 其实就是说,程序当中的双引号字符串,都是String类的对象(就算没有new,照样是) *//* * 字符串的特点: * 1.字符串的内容不可变 * 2.字符串可以共享使用 * 3.字符串效果相当于是ch...
优先级队列(堆) 1.二叉树的顺序存储1.1 存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。1.2 下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不区分左右...
Leetcode有关栈和队列习题 20.有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。225.用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty(...
Leetcode15.三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]class Solution { ...
Java中关于大顶堆的系列操作 IHeap.javapublic interface IHeap { //向下调整 void adjustDown(int root,int len); //初始化建立大顶堆 void initHeap(int[] array); //向上调整,从孩子节点开始调整 void adjustUp(int child); //插入item到堆中...
牛客网题解(二叉树遍历) 1.二叉树遍历题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述:输入包括1行字符串,长度不超过100。输出描述:可能有多组测试数据,对于每组数据,输出将输入字符串建...
栈和队列 1.栈1.1栈的概念和结构栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。栈中数据元素遵循先进后出原则。压栈:栈的插入操作叫做入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。示例1:基于数组的顺序栈public class ArrayStack { private String[] items;/...
Java中的包装类和泛型详解 1.包装类1.1为什么要引入包装类?Java中包含的8种基本数据类型不支持面向对象的编程机制。通过包装类可以将基本数据类型的值包装为引用数据类型的对象。特殊:char对应的包装类为:Character;int对应的包装类为:Integer。其它的基本数据类型所对应的包装类的名称与其基本数据类型一样,只不过首字母需要大写。1.2基本概念包装类和基本数据类型在进行转换时,引入了自动装箱和自...
Leetcode1053.交换一次的先前排列 Leetcode1053. 交换一次的先前排列给你一个正整数的数组 A(其中的元素不一定完全不同),请你返回可在 一次交换(交换两数字 A[i] 和 A[j] 的位置)后得到的、按字典序排列小于 A 的最大可能排列。如果无法这么操作,就请返回原数组。class Solution { public int[] prevPermOpt1(int[] A) { for(...
HashMap简单应用:计算输入的字符串中每个字符出现的次数 计算输入的字符串中每个字符出现的次数/* * 计算一个字符串中每个字符出现的次数 * 1.获取一个字符串对象 * 2.创建一个Map集合,键代表字符,值代表次数。字符不能重复,统计的个数可以重复。 * 3.遍历字符串得到的每个字符 * String类的方法toCharArray把字符串转换为一个数组,遍历数组 * String类的方法length()+charAt(索引) * 4....
Scanner及Random的使用 1.Scanner类(可以实现键盘输入数据到程序当中)以下代码使用户能够从System.in中读取一个数Scanner sc=new Scanner();int i=sc.nextInt();System.in系统输入指的是通过键盘录入数据示例1:import java.util.Scanner;/* * 1。导包 * import 包路径.类名称 * 如果需要使用的目标类...
Leetcode二叉树相关习题 100.相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; ...
树与二叉树 1.树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树 。几点概念:节点的度:一个节点含有的子树的个数称为该节点的度...
Map接口 简介:Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。键和值可以是任意数据类型,并且键对象Key不允许重复,这样在访问Map集合中的元素时,只要指定了Key,就能找到对应的Value。1.HashMap集合HashMap集合是Map接口的一个实现类,它用于存储键值映射关系,该集合的键和值允许为空,但键不能重复,且集合中...
Set集合接口 Set接口与List接口最大的不同在于Set接口中的内容是不允许重复的。Set接口并没有对Collection接口进行扩充,而List对Collection进行了扩充。因此,在Set接口中没有get()方法。在Set子接口中有两个常用子类:HashSet(无序存储)和TreeSet(有序存储)。1.HashSet集合HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素...
Java中的集合框架简介与List集合接口 Java类集简介:Collection:单列集合的根接口,用于存储一系列符合某种规则的的元素。Collection集合有两个重要的子接口,分别是List和Set。其中,List集合的特点是元素有序、可重复;Set集合的特点是元素有序并且不可重复。List接口的主要实现类有ArayLiast和LinkedList;Set接口的主要实现类有HashSet和TreeSet。Map:双列集合的根接口...
leetcode链表相关习题 1.移出链表元素:删除链表中等于给定值 val 的所有节点。输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * public class ListNode { * int val; * ...
辗转相除法和更相减损法求两个正整数的最大公约数 整理自程序员小灰的漫画算法一.辗转相除法(欧几里得算法)定理:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。例如:10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和25的最大公约数。//方法入口public class TestDemo { public static int getGreatestCommonDi...
Java中关于构造方法、this、super和static的详解 1.构造方法:完成对象的初始化。(亦可重载)实例化一个对象后,如果要对这个对象的属性赋值,则必须访问对象的属性,或调用setXxx()方法。如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。构造方法(也被称为构造器)是类的一个特殊成员,它会在类实例化对象时被自动调用。条件:1>方法名与类名相同;2>在方法名的前面没有返回值的类型;3>在方法中...