当前位置: 首页 > news >正文

刷题Java常用方法总结

刷题Java常用方法总结

文章目录

  • 刷题Java常用方法总结
    • 快速查看:
    • 静态数组 Static Array
      • 初始化
      • instance属性
        • length
      • 技巧
        • Arrays.sort从小到大排序
        • Arrays.fill填满一个数组
        • Arrays.copyOf / arr.clone()复制一个数组(二维数组也可以)
    • 动态数组 List & Dynamic Array
      • 初始化
        • 常规 - ArrayList更常用
        • 接受一个Stack、Set等容器为参数 - 以Set举例
      • instance方法(List接口方法)
        • get
        • size
        • add
        • remove
        • subList
      • 技巧
    • 栈 Stack
      • 初始化 (唯一初始化方式)
      • instance方法
        • push
        • pop
        • peek
        • isEmpty
        • size
    • 队列 Queue
      • 初始化
        • 使用LinkedList实现Queue接口初始化
        • 把集合如Stack、Set、List等Collection作为参数
      • instance方法 (Queue接口)
        • offer
        • poll
        • peek
        • isEmpty
        • size
    • 优先队列 PriorityQueue (Heap)
      • 初始化
        • 小根堆
        • 大根堆
      • instance方法 (Queue接口方法)
        • offer
        • poll
        • peek
        • isEmpty
        • size
      • 技巧
        • 从小到大(或从大到小弹出元素)
    • 集合 Set - HashSet
      • 初始化
        • 默认构造函数
        • 把集合如Stack、Queue、List等Collection作为参数
      • instance方法 (Set接口方法)
        • add
        • remove
        • contains
        • isEmpty
        • size
        • first (TreeSet)
        • last (TreeSet)
    • 散列表 HashMap
      • 初始化
        • <Key, Value> key和value是任何Collection或任何Object
      • instance方法 (Map接口方法)
        • put
        • get
        • getOrDefault
        • containsKey
        • containsValue
        • keySet
        • values
        • isEmpty
        • size
    • 字符串
      • String
        • 初始化
          • 字符串复制初始化
          • 基于另外一个字符串
          • 基于char[]
        • 类方法
        • instance方法
          • charAt
          • length
          • substring
          • indexOf 是(暴力查找字符串,不是KMP)
          • lastIndexOf
          • replace 只能换char
          • toCharArray
          • trim 去除前后空格
          • split 以什么分开
          • toLowerCase, toUpperCase 转换大小写
        • 技巧
      • StringBuilder
        • 初始化
        • instance方法
          • charaAt
          • length
          • setCharAt
          • insert
          • deleteCharAt
          • delete
          • reverse
          • toString

快速查看:

方法
StringcharAt toCharArray split substring indexOf lastIndexOf replace length
Listadd remove get size subList
Stackpush pop peek isEmpty size
Queueoffer poll peek isEmpty size
PriorityQueueoffer poll peek isEmpty size
Setadd remove contains isEmpty size first(TreeSet) last(TreeSet)
Mapput get getOrDefault containsKey containsValue keySet values isEmpty size

静态数组 Static Array

性质:初始化后长度不能变了

初始化

// Type[] names = new Type[capacity];
int[] a = new int[10];
String[] s = new String[3];// Type[] names = new Type[]{Tpye ...a};
int[] a = new int[]{1, 2, 3, 4};    // int[] a = {1, 2, 3, 4};
char[] b = new char[]{'a', 'b'};    // char[] b = {'a', 'b'};
String[] s = new String[]{"hello", "world"};// 创建
Set<String> set = new Set[105]; // 每一个指向一个null
for (int i = 0; i < 105; i++) jud[i] = new HashSet<>();  // 每个Set现在才被创建出来
  • 二维
int[][] c = new int[10][10];

instance属性

length

.length 记得是属性而不是方法 arr.length 没有()

技巧

Arrays.sort从小到大排序

Arrays.sort(int[] arr) Arrays.sort(int[] arr, int fromIndex, int toIndex) 数组类型只要实现了Comparable接口就行(基本数据类型int也可以)

Arrays.sort(int[] arr, int fromIndex, int toIndex, 比较器); //一定是需要泛型Arrays.sort(arr, 0, 3, (o1, o2) -> o2 - o1); //从大到小排序,只排序[0, 3)
复制代码

Arrays.fill填满一个数组

int[] a = new int[5];
Arrays.fill(a, 1);
复制代码

Arrays.copyOf / arr.clone()复制一个数组(二维数组也可以)

int[] a = new int[5];
int[] newA = Array.copyOf(a, 5);
// or
int[][] a = {{1}, {1,2}, {1,2,3}, {1,2,3,4}, {1,2,3,4,5}};
int[][] newa = a.clone(); // 5*5矩阵
复制代码

动态数组 List & Dynamic Array

性质: 可以动态扩容的数组

初始化

常规 - ArrayList更常用

List<Integer> array = new ArrayList<>();    // 数组
List<Integer> list = new LinkedList<>();    // 链表
复制代码

接受一个Stack、Set等容器为参数 - 以Set举例

// Set<Integer> a = new HashSet....
List<Integer> b = new ArrayList<>(a);
复制代码

instance方法(List接口方法)

方法:get, size, add, remove, subList

get

.get(int index)    // 返回元素位置在index的元素e --- array O(1), list O(n)
复制代码

size

.size()    // 返回数组长度 --- O(1)
复制代码

add

.add(E e)    // 在尾部添加一个元素e --- O(1)
.add(int index, E e)    // 在index位置插一个元素e --- O(n)
复制代码

remove

.remove(int index)    // 删除位于index的元素,并返回删除元素e --- 删除最后元素为O(1), 其余为O(n)
//删除最后元素 list.remove(list.size() - 1);
复制代码

subList

.subList(int from, int to)    // 相当于返回原数组的一个片段,但不要对其进行改动,改动会影响原数组 --- O(1)
// List<Integer> list, 对原来的list和返回的list做的“非结构性修改”(non-structural changes),
//都会影响到彼此对方. 如果你在调用了sublist返回了子list之后,如果修改了原list的大小,那么之前产生的子list将会失效,变得不可使用
复制代码

技巧

Collections.sort(list); 从小到大排序 Collections.sort(list, Collections.reverseOrder()); 从大到小排序, 第二个参数为一个比较器

栈 Stack

性质: 先进后出

初始化 (唯一初始化方式)

Stack<Integer> stack = new Stack<>();
复制代码

instance方法

方法:push, pop, peek, isEmpty, size

push

.push(E e);    // 入栈元素e, 返回值为元素e --- O(1)
复制代码

pop

.pop();    // 出栈一个元素,返回出栈元素e --- O(1)
复制代码

peek

.peek();    // 查看栈顶元素, 返回值为栈顶元素e --- O(1)
复制代码

isEmpty

.isEmpty()    // 若栈空返回true, 否则返回false --- O(1)
复制代码

size

.size()    // 返回栈中元素个数 --- O(1)
复制代码

队列 Queue

性质:先进先出 通过实现实现队列接口的LinkedList<>();

初始化

使用LinkedList实现Queue接口初始化

Queue<Integer> q = new LinkedList<>();
复制代码

把集合如Stack、Set、List等Collection作为参数

// Set<Integer> set = new HashSet<>();
Queue<Integer> q = new LinkedList<>(set);
复制代码

instance方法 (Queue接口)

方法:offer, poll, peek, isEmpty, size

offer

.offer(E e);    // 队尾加入元素e。 若成功入队返回值true,否则返回false --- O(1)
复制代码

poll

.poll();    // 出队首,返回出队元素e --- O(1)
复制代码

peek

.peek();    // 查看队首元素, 返回值队首元素e --- O(1)
复制代码

isEmpty

.isEmpty()    // 若队空返回true, 否则返回false --- O(1)
复制代码

size

.size()    // 返回队中元素个数 --- O(1)
复制代码

优先队列 PriorityQueue (Heap)

性质:底层是一颗数, 以小根堆为例。对于任意结点来说,该节点的值比其左右孩子的值都要小。 (就是最上面的结点最小)。 大根堆类似,最上面结点最大

初始化

小根堆

Queue<Integer> minH = new PriorityQueue<>();    // 小根堆,默认大小为11 相当于  new PriorityQueue<>(11)
Queue<Integer> minH = new PriorityQueue<>(100);  // 定义一个默认容量有100的小根堆。在当中增加元素会扩容,只是开始指定大小。不是size,是capacity
复制代码

大根堆

Queue<Integer> maxH = new PriorityQueue<>((i1, i2) -> i2 - i1);    // 大根堆,默认大小为11 相当于  new PriorityQueue<>(11, (i1, i2) -> i2 - i1)
Queue<Integer> maxH = new PriorityQueue<>(100, (i1, i2) -> i2 - i1);    // 定义一个默认容量有100的大根堆。在当中增加元素会扩容,只是开始指定大小
复制代码

instance方法 (Queue接口方法)

方法:offer, poll, peek, isEmpty, size

offer

.offer(E e);    // 在堆中加入元素e,并调整堆。若成功入堆返回值true,否则返回false --- O(logN)
复制代码

poll

.poll();    // 弹出堆顶元素,并重新调整堆,返回出队元素e --- O(logN)
复制代码

peek

.peek();    // 查看堆顶元素, 返回值堆顶元素e --- O(1)
复制代码

isEmpty

.isEmpty()    // 若队空返回true, 否则返回false --- O(1)
复制代码

size

.size()    // 返回队中元素个数 --- O(1)
复制代码

技巧

从小到大(或从大到小弹出元素)

while (!pq.isEmpty()) {}
复制代码

集合 Set - HashSet

性质:Set中没有重复元素,重复添加的元素抛弃

初始化

默认构造函数

Set<Integer> set = new HashSet<>();
复制代码

把集合如Stack、Queue、List等Collection作为参数

// List<Integer> list = new ArrayList<>....;
// Set<Integer> set = new HashSet<>(list);
复制代码

instance方法 (Set接口方法)

方法:add, remove, contains, isEmpty, size

add

.add(E e);    // 在集合中添加元素E e, 若成功添加则返回true,若集合中有元素e则返回false --- O(1)
复制代码

remove

.remove(E e);    // 在集合中删除元素e,若删除成功返回true;若集合中没有元素e,返回false --- O(1)
复制代码

contains

.contains(E e);    // 若存在元素e,则返回true,否则返回false --- O(1)
复制代码

isEmpty

.isEmpty()    // 若集合为空返回true, 否则返回false --- O(1)
复制代码

size

.size()    // 返回集合中中元素个数 --- O(1)
复制代码

first (TreeSet)

.first()    // 返回集合里的最小值(若给了比较器从大到小则是返回最大值)
复制代码

last (TreeSet)

.last()    // 返回集合里的最大值(若给了比较器从大到小则是返回最小值)
复制代码

散列表 HashMap

性质:使用健值对的方式存储数据 <Key,Value>

初始化

<Key, Value> key和value是任何Collection或任何Object

Map<Characters, Integer> map = new HashMap<>();
复制代码

instance方法 (Map接口方法)

方法:put, get, getOrDefault, containsKey, containsValue, keySet, values, isEmpty, size

put

.put(K key, V value);    // 在Map中加入键值对<key, value>。返回value值。如果Map中有key,则replace旧的value --- O(1)
复制代码

get

.get(K key);    // 返回Map中key对应的value。若Map中没有该key,则返回null --- O(1)
复制代码

getOrDefault

.getOrDefault(K key, V defaultValue);    // 返回Map中key对应的value。若Map中没有该key,则返回defaultValue --- O(1)// For example:
// Map<Character, Integer> map = new HashMap<>();
// if (...)    // 如果发现k,则k在Map中的值加1。没一开始没有k,则从0开始加1。(相当于给了key在Map中的一个初试值)map.put('k', map.getOrDefault('k', 0) + 1);
复制代码

containsKey

.containsKey(Key key);    // 在Map中若存在key,则返回true,否则返回false --- O(1)
复制代码

containsValue

.containsValue(V value);    // 在Map中若存在value,则返回true,否则返回false --- O(1)
复制代码

keySet

.keySet();    // 返回一个Set,这个Set中包含Map中所有的Key --- O(1)// For example:
// We want to get all keys in Map
// Map<Character, Integer> map = new HashMap<>();
for (Character key : map.keySet()) {// Operate with each key
}
复制代码

values

.values();    // 返回一个Collection<v>,里面全是对应的每一个value --- O(1)// For example:
// We want to get all values in Map
// Map<Character, Integer> map = new HashMap<>();
for (Integer value : map.values()) {// Operate with each values
}
复制代码

isEmpty

.isEmpty()    // 若Map为空返回true, 否则返回false --- O(1)
复制代码

size

.size()    // 返回Map中中键值对<K, V>的个数 --- O(1)
复制代码

字符串

String

性质:不可变量(相当于只读final修饰) 每个位置元素是个char

初始化

字符串复制初始化
String s = "abc";
复制代码
基于另外一个字符串
// s = "abc"
String s2 = new String(s);
复制代码
基于char[]
// s = "abc";
// char[] c = s.toCharArray();
String s3 = new String(c);// 可以偏移
// public String(char value[], int offset, int count)
String s4 = new String(c, 1, 2);    // [offset, offset + count)// 把char[] 变成字符串
char[] ch = {'a', 'b', 'c'};
String.valueOf(ch);
复制代码

类方法

String.valueOf( 一个参数Object/基本数据类型 ) 返回传入参数obj的toString(),若为空返回字符串"null"。 若为基本类型调用其 包装类的toString方法(Integer.toString(i)

instance方法

方法: charAt, length, substring, equals, indexOf, lastIndexOf, replace, toCharArray, trim, split, toLowerCase, toUpperCase

charAt
.charAt(int index);    // 返回index位置的char --- O(1)
复制代码
length
.length();    // 返回字符串长度 --- O(1)
复制代码
substring
.substring(int beginIndex, int endIndex);    // 返回字符片段[beginIndex, endIndex) --- O(n).substring(int beginIndex);    // 返回字符片段[beginIndex, end_of_String) 就是从beginIndex开始后面的 ---- O(n)
复制代码
indexOf 是(暴力查找字符串,不是KMP)
.indexOf(String str)    // 返回str第一个出现的位置(int),没找到则返回-1。 --- O(m * n) m为原串长度, n为str长度
// (假如要找一个字符char c,str可以表示成String.valueOf(c),然后作为参数传进去.s.indexOf(String str, int fromIndex);    // 同上,但从fromIndex开始找 --- O(m * n)
复制代码
lastIndexOf
.lastIndexOf(String str);    // 返回str最后出现的位置(int),没找到则返回-1。 --- O(m * n) m为原串长度, n为str长度
// (假如要找一个字符char c,str可以表示成String.valueOf(c),然后作为参数传进去..lastIndexOf(String str, int fromIndex);    // 同上,
//但从fromIndex开始从后往前找 [0 <- fromIndex] --- O(m * n)
复制代码
replace 只能换char
.replace(char oldChar, char newChar);    // 返回一个新字符串String,其oldChar全部变成newChar --- O(n)
复制代码
toCharArray
.toCharArray();    // 返回char[] 数组。 把String编程字符数组 --- O(n)
复制代码
trim 去除前后空格
.trim();    // 返回去除前后空格的新字符串 --- O(n)
复制代码
split 以什么分开
.split(String regex);    // 返回 String[],以regex(正则表达式)分隔好的字符换数组。 ---- O(n)// For example
// 从非"/"算起 若"/a/c" -> 会变成"" "a" "c"
String[] date = str.split("/");     // date[0]:1995 date[1]:12 date[2]:18 --- O(n)
复制代码
toLowerCase, toUpperCase 转换大小写
s = s.toLowerCase();    // 返回一个新的字符串全部转成小写 --- O(n)
s = s.toUpperCase();    // 返回一个新的字符串全部转成大写 --- O(n)
复制代码

技巧

通过+连接其他字符串, 但是是两个组成一个新的字符串,有开销。最好用StringBuilder

StringBuilder

初始化

StringBuilder sb = new StringBuilder();
复制代码

instance方法

方法: append, charAt, length, setCharAt, insert, deleteCharAt, delete, reverse, toString

charaAt
.charAt(int index);    // 返回index位置的char --- O(1)
复制代码
length
.length();    // 返回缓冲字符串长度 --- O(1)
复制代码
setCharAt
.setCharAt(int index, char ch);    // 设置index位置的char为ch --- O(1)
复制代码
insert
.insert(int offset, String str);    // 在offer位置的插入字符串str--- O(m + n)
复制代码
deleteCharAt
.deleteCharAt(int index);    // 删除index位置的char --- O(n).deleteCharAt(sb.length() - 1);    // 删除最后一个char --- O(1)
复制代码
delete
.delete(int start, int end);    // 删除[start, end)位置的char --- O(n)
复制代码
reverse
.reverse();    // 反转缓存字符串 --- O(n)
复制代码
toString
.toString();    // 返回一个与构建起或缓冲器内容相同的字符串 --- O(n)

相关文章:

刷题Java常用方法总结

刷题Java常用方法总结 文章目录刷题Java常用方法总结快速查看:静态数组 Static Array初始化instance属性length技巧Arrays.sort从小到大排序Arrays.fill填满一个数组Arrays.copyOf / arr.clone()复制一个数组(二维数组也可以)动态数组 List & Dynamic Array初始化常规 - Ar…...

大数据技术之Hive

第1章Hive基本概念1.1 Hive1.1.1 Hive的产生背景在那一年的大数据开源社区&#xff0c;我们有了HDFS来存储海量数据、MapReduce来对海量数据进行分布式并行计算、Yarn来实现资源管理和作业调度。但是面对海量数据和负责的业务逻辑&#xff0c;开发人员要编写MR来对数据进行统计…...

第33篇:Java集合类框架总结

目录 1、集合概念 2、集合与数组的区别 3、集合框架的特性 1)高性能 2)可操作...

数据结构 | 栈的中缀表达式求值

目录 什么是栈&#xff1f; 栈的基本操作 入栈操作 出栈操作 取栈顶元素 中缀表达式求值 实现思路 具体代码 什么是栈&#xff1f; 栈是一种线性数据结构&#xff0c;具有“先进后出”&#xff08;Last In First Out, LIFO&#xff09;的特点。它可以看作是一种受限的…...

vue2前端实现html导出pdf功能

1. 功能实现方案 1.html转换成canvas后生成图片导出pdf&#xff08;本文选用&#xff09; html转canvas插件&#xff1a;html2canvas是一款将HTML代码转换成Canvas的插件&#xff1b;canvas生成pdf&#xff1a;jsPDF是一个使用Javascript语言生成PDF的开源库 2.HTML代码转出…...

用 ChatGPT 辅助学好机器学习

文章目录一、前言二、主要内容&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 探索更高效的学习方法可能是有志者共同的追求&#xff0c;用好 ChatGPT&#xff0c;先行于未来。 作为一个人工智能大语言模型&#xff0c;ChatGPT 可以在帮助初…...

【动态规划】最长上升子序列(单调队列、贪心优化)

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

海思SD3403/SS928V100开发(7)mcp2515-SPI转CAN驱动开发

1. 前言 需求: 需要一路can进行收发 分析: 根据目前使用较多的方案是使用主控端SPI接口 接入MCP2515芯片进行CAN协议转换 硬件: MCP2515->SPI2->SS928 2. Uboot开发 2.1 pinmux复用配置 2.1.1 修改uboot参数表 路径: osdrv/tools/pc/uboot_tools/ SS928V100…...

【安卓源码】SurfaceFlinger 启动及其与应用通信

1. surfaceFlinger 初始化和消息队列处理机制 surfaceflinger 的makefile 文件 /frameworks/native/services/surfaceflinger/Android.bp 235 cc_binary { 236 name: "surfaceflinger", 237 defaults: ["libsurfaceflinger_binary"], 238 i…...

springboot车辆充电桩

sprinboot车辆充电桩演示录像2022开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;ecli…...

linux进程和进程通信编程(1)

What makes the desert beautiful is that somewhere it hides a well. 沙漠之所以美丽,是因为在它的某个角落隐藏着一口井. linux进程和进程通信编程&#xff08;1&#xff09;1.什么是进程2.进程id(pid)3.进程间通信的方法管道信号IPCSocket4.创建进程forkfork有三个返回值父…...

操作系统(1.3)--习题

一、课堂习题 1、一个作业第一 次执行时用了5min ,而第二次执行时用了6min,这说明了操作系统的( )特点。 A、并发性 B、共享性 C、虚拟性 D、不确定性 D 2、在计算机系统中,操作系统是( )。 A、处于裸机之上的第一层软件 B、处于硬件之下的低层软件 C、处于应用软件之上的系统软…...

刷题笔记之十三(有假币、最难的问题、因子个数)

目录 1. 求正数数组的最小不可组成和 2. 有假币 3. 继承时先调用父类的构造方法;类中的成员变量的初始化操作都在构造方法时进行 4. 学会并理解装箱拆箱,注意new出来的也可以拆!! 5. getDeclaredMethods()是标识类或接口的声明成员(这个表示public private 包访问权限 pro…...

5个代码技巧,加速你的Python

5个代码技巧&#xff0c;加速你的Python 人生苦短&#xff0c;快学Python&#xff01; Python作为一种功能强大的编程语言&#xff0c;因其简单易学而受到很多初学者的青睐。它的应用领域又非常广泛&#xff1a;科学计算、游戏开发、爬虫、人工智能、自动化办公、Web应用开发…...

字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……

阎王易见&#xff0c;小鬼难缠。我一直相信这个世界上好人居多&#xff0c;但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。在这里&#xff0c;我只想告诫大家&#xff0c;offer一定要拿到自己的手里才是真的&#xff0c;口头offer都是不牢靠的&#xff0c;…...

[数据分析与可视化] Python绘制数据地图1-GeoPandas入门指北

本文主要介绍GeoPandas的基本使用方法&#xff0c;以绘制简单的地图。GeoPandas是一个Python开源项目&#xff0c;旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型&#xff0c;并使用matplotlib进行绘图。GeoPandas官方仓库地址为&#xff1a;GeoP…...

ChatGPT加强版GPT-4面世,打工人的方式将被颠覆

&#x1f517; 运行环境&#xff1a;chatGPT&#xff0c;GPT-4 &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#…...

Python逆向及相关知识

今天第二次看见python字节码的逆向题&#xff0c;然后发现了一个介绍Python逆向的文章&#xff0c;所以把文章里的内容简单整理记录一下。 文章参考&#xff1a;https://www.cnblogs.com/blili/p/11799398.html Python运行原理&#xff1a; 一.什么是Python Python 是一种解…...

Python基础语法、注意点加实例全解

本篇文章我们讲解Python最基础语法&#xff0c;包含&#xff1a;数据类型、注释、变量、类型转换、命名规范、运算符、字符串拼接、字符串格式化、if条件判断、while循环、for循环、函数、读取文件、写入文件、异常捕获、包导入等。通过讲解语法注意事项实例代码详解&#xff0…...

ETH RPC搭建

配置选择先是看了aws、谷歌云、阿里云这个配置都要1-2wrmb一个月&#xff0c;太贵了问了很多朋友&#xff0c;打算用hetzner&#xff0c;50欧一个月足以我选的配置&#xff1a;64gb&#xff0c;2tb ssd开好后在邮箱收到信息链接后按以下步骤安装系统&#xff1a;https://0o0.me…...

南京邮电大学数据库第一次课后作业

1.单选题 (5分) (B)是存储在计算机内有结构的数据的集合。 &#xff08;A&#xff09;数据库系统 &#xff08;B&#xff09;数据库 &#xff08;C&#xff09;数据库管理系统 &#xff08;D&#xff09;数据结构 2.单选题 (5分) 数据库的特点之一是数据的共享,严格的讲,这里的…...

近期投简历、找日常实习的一些碎碎念(大二---测试岗)

嘿嘿嘿&#xff0c;我又回来了&#xff0c;相信不少兄弟已经发现我似乎已经断更了好久&#xff0c;哈哈&#xff0c;我是尝试去找实习&#xff0c;投简历面试去了。 先说一下背景。 目录 背景 求职进行中 简历 投递和沟通 收获和感受 背景 博主&#xff0c;大二软件工程…...

ThreadLocal的使用

1. ThreadLocal介绍 ThreadLocal顾名思义&#xff0c;就是线程的本地变量&#xff0c;只有当前线程可见&#xff0c;对其他线程来说是封闭且隔离的。每一个线程为自己本身创建ThreadLocal变量&#xff0c;只有当前线程可以访问&#xff0c;其他的线程不可以&#xff0c;从根源…...

Java ~ Reference【总结】

一 概述 简介 在JDK1.2之前&#xff0c;Java中引用的定义是十分传统的&#xff1a;如果引用类型的变量中存储的数值代表的是另一块内存的起始地址&#xff0c;就称这块内存代表着一个引用。在这种定义之下&#xff0c;一个对象只有被引用和没有被引用两种状态。 实际上&#xf…...

最快方法求最长上升子序列(LIS)+最长公共子序列(LCS)模板(C/C++)

目录 1 LIS算法&#xff08;最长上升子序列&#xff09; 1.1 简介 1.2 代码 1.3 相关解释 2 LCS算法&#xff08;最长公共子序列&#xff09; 2.1 简介 2.2 代码&#xff08;动态规划&#xff0c;时间复杂度O&#xff08;nlogn&#xff09;&#xff09; 2.3 特殊…...

012+limou+C语言深入知识——(4)“结构体”与“枚举体”与“联合体”

一、结构体 1、结构体基础 &#xff08;1&#xff09;结构体完全声明 struct tag {member-list; }variable-list;//描述一个人 struct people {char name[10];//人名int age;//年龄int idnumber;//身份证 };&#xff08;2&#xff09;结构体不完全声明&#xff08;匿名结构体…...

Canvas百战成神-圆(1)

Canvas百战成神-圆 初始化容器 <canvas id"canvas"></canvas>canvas{border: 1px solid black; }让页面占满屏幕 *{margin: 0;padding: 0; } html,body{width: 100%;height: 100%;overflow: hidden; } ::-webkit-scrollbar{display: none; }初始化画笔…...

详解分库分表设计

详解分库分表设计 背景 ​ 在传统的单机数据库架构中&#xff0c;所有数据都存储在同一个数据库中&#xff0c;随着业务规模的不断扩大&#xff0c;数据量和并发量也会越来越大&#xff0c;这会给数据库的性能和可用性带来挑战。此外&#xff0c;当单机数据库的容量达到瓶颈时…...

动态规划-基础(斐波那契数、爬楼梯、使用最小花费爬楼梯、不同路径、不同路径II、整数拆分、不同的二叉搜索树)

动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的。动态规划问题&#xff0c;五步走&#xff1a;状态定义&am…...

深入理解WebSocket协议

“ 一直以来对WebSocket仅停留在使用阶段&#xff0c;也没有深入理解其背后的原理。当看到 x x x was not upgraded to websocket&#xff0c;我是彻底蒙了&#xff0c;等我镇定下来&#xff0c;打开百度输入这行报错信息&#xff0c;随即看到的就是大家说的跨域&#xff0c;或…...