JAVA基础知识点大全之二

2023-11-13

1、泛型

1.1 泛型类

  定义格式
    修饰符 class 类名<类型> { }

1.2 泛型方法

定义格式
修饰符 <类型> 返回值类型 方法名(类型 变量名) { }

1.3 泛型接口

定义格式
    修饰符 interface 接口名<类型> {  }

1.4类型通配符

类型通配符: <?>
	ArrayList<?>: 表示元素类型未知的ArrayList,它的元素可以匹配任何的类型,但是并不能把元素添加到ArrayList中了,获取出来的也是父类类型

类型通配符上限: <? extends 类型>
	ArrayListList <? extends Number>: 它表示的类型是Number或者其子类型

类型通配符下限: <? super 类型>
	ArrayListList <? super Number>: 它表示的类型是Number或者其父类型

2、比较器

comparator 自然排序

  1. 使用空参构造创建TreeSet集合
    • 用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
  2. 自定义的类实现Comparable接口
    • 自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法
  3. 重写接口中的compareTo方法
    • 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
  4. TreeSet():根据其元素的自然排序进行排序

comparator比较器排序

  1. 用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的
  2. 比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法
  3. 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写

两种比较方式总结

  • 两种比较方式小结
    1. 自然排序: 自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序
    2. 比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序
    3. 在使用的时候,默认使用自然排序,当自然排序不满足现在的需求时,必须使用比较器排序
  • 两种方式中关于返回值的规则
    • 如果返回值为负数,表示当前存入的元素是较小值,存左边
    • 如果返回值为0,表示当前存入的元素跟集合中元素重复了,不存
    • 如果返回值为正数,表示当前存入的元素是较大值,存右边

3、数据结构

3.1二叉树

二叉树的特点

二叉树中,任意一个节点的度要小于等于2
	节点: 在树结构中,每一个元素称之为节点
	度: 每一个节点的子节点数量称之为度

3.2二叉查找树

二叉查找树的特点

  1. 二叉查找树,又称二叉排序树或者二叉搜索树
  2. 每一个节点上最多有两个子节点
  3. 左子树上所有节点的值都小于根节点的值
  4. 右子树上所有节点的值都大于根节点的值

二叉查找树添加节点规则

  1. 小的存左边
  2. 大的存右边
  3. 一样的不存
    在这里插入图片描述

3.3平衡二叉树

平衡二叉树的特点

  1. 二叉树左右两个子树的高度差不超过1
  2. 任意节点的左右两个子树都是一颗平衡二叉树

平衡二叉树旋转

旋转触发时机
	当添加一个节点之后,该树不再是一颗平衡二叉树
  • 左旋
    • 就是将根节点的右侧往左拉,原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点
      在这里插入图片描述
  • 右旋
    • 就是将根节点的左侧往右拉,左子节点变成了新的父节点,并把多余的右子节点出让,给已经降级根节点当左子节点
      在这里插入图片描述

平衡二叉树旋转的四种情况

  • 左左
    • 左左: 当根节点左子树的左子树有节点插入,导致二叉树不平衡
    • 如何旋转: 直接对整体进行右旋即可
      在这里插入图片描述
  • 左右
    • 左右: 当根节点左子树的右子树有节点插入,导致二叉树不平衡
    • 如何旋转: 先在左子树对应的节点位置进行左旋,在对整体进行右旋
      在这里插入图片描述
  • 右右
    • 右右: 当根节点右子树的右子树有节点插入,导致二叉树不平衡
    • 如何旋转: 直接对整体进行左旋即可
      在这里插入图片描述
  • 右左
    • 右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡
    • 如何旋转: 先在右子树对应的节点位置进行右旋,在对整体进行左旋
      在这里插入图片描述

3.4红黑树

红黑树的特点

1、平衡二叉B树
2、每一个节点可以是红或者黑
3、红黑树不是高度平衡的,它的平衡是通过"自己的红黑规则"进行实现的

红黑树的红黑规则有哪些

1、每一个节点或是红色的,或者是黑色的
2、根节点必须是黑色
3、如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的
4、如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连 的情况)
5、对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

红黑树添加节点的默认颜色

添加节点时,默认为红色,效率高

在这里插入图片描述

红黑树添加节点后如何保持红黑规则

  • 根节点位置
    • 直接变为黑色
  • 非根节点位置
    • 父节点为黑色
      • 不需要任何操作,默认红色即可
    • 父节点为红色
      • 叔叔节点为红色
        • 将"父节点"设为黑色,将"叔叔节点"设为黑色
        • 将"祖父节点"设为红色
        • 如果"祖父节点"为根节点,则将根节点再次变成黑色
      • 叔叔节点为黑色
        • 将"父节点"设为黑色
        • 将"祖父节点"设为红色
        • 以"祖父节点"为支点进行旋转

4、集合

在这里插入图片描述

Collection

List 存取有序,可以重复,有索引
ArrayList
底层是数组结构实现,查询快、增删慢
LinkedList
底层是链表结构实现,查询慢、增删快
Set 不可以存储重复元素,没有索引,不能使用普通for循环遍历
HashSet
底层数据结构是哈希表,存取无序,不可以存储重复元素,没有索引,不能使用普通for循环遍历

哈希表结构

  • JDK1.8以前
    数组 + 链表
    在这里插入图片描述

    1. 创建一个默认长度16,默认加载因子为0.75的数组,数组名为table
    2. 根据元素的哈希值跟数组的长度计算出应存入的位置
    3. 判断当前位置是否为null,如果是null直接存入
    4. 如果位置不为null,表示有元素,则调用equal方法比较属性值
    5. 如果一样,则不存,如果不一样,则存入数组,老元素挂在新元素下面
  • JDK1.8以后

     节点个数少于等于8个
     		数组 + 链表
     节点个数多于8个
     		数组 + 红黑树
    

在这里插入图片描述
HashSet集合存储自定义类型元素,要想实现元素的唯一,要求必须重写hashCode方法和equals方法

TreeSet
不可以存储重复元素,没有索引,可以将元素按照规则进行排序

构造器

  • TreeSet():根据其元素的自然排序进行排序
  • TreeSet(Comparator comparator) :根据指定的比较器进行排序

自然排序Comparable的使用

  1. 使用空参构造创建TreeSet集合
    用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
  2. 自定义的实体类实现Comparable接口
    自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法
  3. 重写接口中的compareTo方法
    重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
实例代码
								public class Student implements Comparable<Student>{
									 @Override
								    public int compareTo(Student o) {
								        //按照对象的年龄进行排序
								        //主要判断条件: 按照年龄从小到大排序
								        int result = this.age - o.age;
								        //次要判断条件: 年龄相同时,按照姓名的字母顺序排序
								        result = result == 0 ? this.name.compareTo(o.getName()) : result;
								        return result;
								    }
								}

								 //创建集合对象
        						TreeSet<Student> ts = new TreeSet<>();
        						ts.add(ew Student("zhangsan",28));
        						//遍历集合
						        for (Student student : ts) {
						            System.out.println(student);
						        }	

比较器排序Comparator的使用

  1. 用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的
  2. 比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法
  3. 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
实例代码
 								 TreeSet<Teacher> ts = new TreeSet<>(new Comparator<Teacher>() {
						            @Override
						            public int compare(Teacher o1, Teacher o2) {
						                //o1表示现在要存入的那个元素
						                //o2表示已经存入到集合中的元素
						              
						                //主要条件
						                int result = o1.getAge() - o2.getAge();
						                //次要条件
						                result = result == 0 ? o1.getName().compareTo(o2.getName()) : result;
						                return result;
						            }
						        });
Map集合

Map集合的特点

  • 双列集合,一个键对应一个值
  • 键不可以重复,值可以重复

遍历方式

    获取所有键的集合。用keySet()方法实现
    Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
HashMap

HashMap集合概述和特点

  • HashMap底层是哈希表结构的
  • 依赖hashCode方法和equals方法保证键的唯一
  • 如果键要存储的是自定义对象,需要重写hashCode和equals方法
TreeMap

TreeMap集合概述和特点

  • TreeMap底层是红黑树结构
  • 依赖自然排序或者比较器排序,对键进行排序
  • 如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则

5、数组高级操作

二分查找

二分查找概述
二分查找也叫折半查找,每次可以去掉一半的查找范围,从而提高查找的效率
需求
在数组{1,2,3,4,5,6,7,8,9,10}中,查找某个元素的位置
实现步骤
1. 定义两个变量,表示要查找的范围。默认min = 0 ,max = 最大索引
2. 循环查找,但是min <= max
3. 计算出mid的值
4. 判断mid位置的元素是否为要查找的元素,如果是直接返回对应索引
5. 如果要查找的值在mid的左半边,那么min值不变,max = mid -1.继续下次循环查找
6. 如果要查找的值在mid的右半边,那么max值不变,min = mid + 1.继续下次循环查找
7. 当min > max 时,表示要查找的元素在数组中不存在,返回-1
注意事项
有一个前提条件,数组内的元素一定要按照大小顺序排列,如果没有大小顺序,是不能使用二分查找法的

冒泡排序

冒泡排序概述
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序
如果有n个数据进行排序,总共需要比较n-1次
每一次比较完毕,下一次的比较就会少一个数据参与

快速排序

快速排序概述
冒泡排序算法中,一次循环结束,就相当于确定了当前的最大值,也能确定最大值在数组中应存入的位置
快速排序算法中,每一次递归时以第一个数为基准数,找到数组中所有比基准数小的.再找到所有比基准数大的.小的全部放左边,大的全部放右边,确定基准数的正确位置
核心步骤
1. 从右开始找比基准数小的
2. 从左开始找比基准数大的
3. 交换两个值的位置
4. 红色继续往左找,蓝色继续往右找,直到两个箭头指向同一个索引为止
5. 基准数归位

代码实现

			private static void quiteSort(int[] arr, int left, int right) {
		     	// 递归结束的条件
		        if(right < left){
		            return;
		        }

		        int left0 = left;
		        int right0 = right;

		        //计算出基准数
		        int baseNumber = arr[left0];

		        while(left != right){
					//1,从右开始找比基准数小的
		            while(arr[right] >= baseNumber && right > left){
		                right--;
		            }
					//2,从左开始找比基准数大的
		            while(arr[left] <= baseNumber && right > left){
		                left++;
		            }
					//3,交换两个值的位置
		            int temp = arr[left];
		            arr[left] = arr[right];
		            arr[right] = temp;
		        }
		        //基准数归位
		        int temp = arr[left];
		        arr[left] = arr[left0];
		        arr[left0] = temp;
		     
				// 递归调用自己,将左半部分排好序
		        quiteSort(arr,left0,left-1);
		      	// 递归调用自己,将右半部分排好序
		        quiteSort(arr,left +1,right0);
		    }			

6、可变参数

可变参数定义格式

修饰符 返回值类型 方法名(数据类型… 变量名) {  }

7、Stream流

Stream流的三类方法

  • 获取Stream流
    • 创建一条流水线,并把数据放到流水线上准备进行操作
  • 中间方法
    • 流水线上的操作
    • 一次操作完毕之后,还可以继续进行其他操作
  • 终结方法
    • 一个Stream流只能有一个终结方法
    • 是流水线上的最后一个操作

生成Stream流的方式

  • Collection体系集合
    • 使用默认方法stream()生成流, default Stream stream()
  • Map体系集合
    • 把Map转成Set集合,间接的生成流
  • 数组
    • 通过Arrays中的静态方法stream生成流
  • 同种数据类型的多个数据
    • 通过Stream接口的静态方法of(T… values)生成流

中间操作方法

方法名 说明
Stream filter(Predicate predicate) 用于对流中的数据进行过滤
Stream limit(long maxSize) 返回此流中的元素组成的流,截取前指定参数个数的数据
Stream skip(long n) 跳过指定参数个数的数据,返回由该流的剩余元素组成的流
static Stream concat(Stream a, Stream b) 合并a和b两个流为一个流
Stream distinct() 返回由该流的不同元素(根据Object.equals(Object) )组成的流

终结操作方法

方法名 说明
void forEach(Consumer action) 对此流的每个元素执行操作
long count() 返回此流中的元素数

8、常用API

  • Math

  • System

  • Object

  • Objects

  • BigDecimal

    • 舍入模式
      BigDecimal.ROUND_UP 进一法
      BigDecimal.ROUND_FLOOR 去尾法
      BigDecimal.ROUND_HALF_UP 四舍五入
    • 常用方法
方法名 说明
public BigDecimal add(另一个BigDecimal对象) 加法
public BigDecimal subtract (另一个BigDecimal对象) 减法
public BigDecimal multiply (另一个BigDecimal对象) 乘法
public BigDecimal divide (另一个BigDecimal对象) 除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) 除法
  • Arrays
  • Date
  • SimpleDateFormat
  • LocalDate 表示日期(年月日)
  • LocalTime 表示时间(时分秒)
  • LocalDateTime 表示时间+ 日期 (年月日时分秒)
  • Period 日期计算,适用于 LocalDate
  • Duration 时间计算,适用于 LocalDateTime
  • Optional 类对象管理工具
    • Optional概述
      可能包含或不包含非null值的容器对象
    • 方法介绍
方法名 说明
static Optional of(T value) 获取一个Optional对象,封装的是非null值的对象
static Optional ofNullable(T value) 获取一个Optional对象,Optional封装的值对象可以是null也可以不是null
T get() 如果存在值,返回值,否则抛出NoSuchElementException
boolean isPresent() 如果存在值,则返回true,否则为false
T orElse(T other) 如果不为空,则返回具体的值,否则返回参数中的值
T orElseGet(Supplier<? extends T> supplier) 如果不为空,则返回具体的值,否则返回由括号中函数产生的结果
void ifPresent (Consumer<? super T> action) 如果不为空,则使用该值执行给定的操作,否则不执行任何操作
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) 如果不为空,则使用该值执行给定的操作,否则执行给定的基于空的操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA基础知识点大全之二 的相关文章

  • 如何使用Spring WebClient进行同步调用?

    Spring Framework in 休息模板 https docs spring io spring framework docs current javadoc api org springframework web client R
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有

随机推荐

  • log4c cmakelist.txt config.h

    cmake minimum required VERSION 2 8 12 project log4c add definitions DHAVE CONFIG H add definitions D CRT SECURE NO WARNI
  • 【pybind11入门】Windows下为Python创建C++扩展

    在Windows下使用pybind11为python添加C 扩展 这篇文章记录下整个安装 测试 使用流程 主要内容 1 安装编译工具 2 测试pybind11编译是否正常 3 使用pybind11创建C 扩展 4 在python中调用 1
  • 迈拓 kvm 切换热键

    4台电脑之间切换的时候 可以按KVM上面的开关 也可以用热键切换 热键的切换方法如下 1 切换到第一台电脑 Scroll Lock 1 第1台电脑 2 切换到第二台电脑 Scroll Lock 2 第2台电脑 3 切换到第三台电脑 Scro
  • JLink和ST-Link接口引脚介绍

    STM32F1系列 STM8S系列 PY32F003系列都用过好久了 但是对JLink和ST Link下载器认识 还是很肤浅的 有时候 需要自己接线 却不知道引脚定义 特整理如下 1 ST Link ST Link适合对象是STM8和STM
  • Markdown学习笔记

    这个是源代码 由于无法在markdown下直接显示 所以这里采用富文本格式 Markdown学习笔记 你好 2020 7 28 段落 间隔一或多行行表示一个回车 两者没有区别 这是没有产生的效果 天王盖地虎 宝塔镇河妖 这是有回车的效果 天
  • 若依框架修改Vue请求超时时间

    ruoyi ui gt src gt utils gt request js 修改request js下的 timeout 10000 单位 毫秒
  • 软件设计师笔记 2021年下半年

    软件设计师笔记 1 第一章 计算机知识 控制器包含 地址寄存器 S single M multiple I 指令流 Data 数据流 2 第二章
  • 【状态估计】基于UKF、AUKF的电力系统负荷存在突变时的三相状态估计研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及数据 1 概述 基于UKF和AUKF的电力系统负荷存在突
  • ARM发布Cortex-X1,是为了向苹果自研A系列处理器发起冲击吗?

    对于Arm来说 2019年是伟大的一年 这一年ARM的Cortex内核依然是手机CPU领域的佼佼者 特别是Cortex A77 红极一时的高通骁龙865处理器采用的就是Cortex A77 据说采用骁龙865处理器的手机有70款之多 其中就
  • c语言文件处理中ab,C语言文件处理中wt是什么操作方式?

    匿名用户 1级 2013 04 25 回答 最常用的文件使用方式及其含义如下 1 r 为读而打开文本文件 不存在则出错 2 rb 为读而打开二进制文件 3 w 为写而打开文本文件 若不存在则新建 反之 则从文件起始位置写 原内容将被覆盖 4
  • 【中间件】Redis如何解决BigKey

    BigKey 的弊端 BigKey 需要解决 根源就在于 BigKey 会带来的问题 占用内存 因为 Redis 数据结构的底层数据结构 大 Key 会占用更多的内存空间 造成更大的内存消耗 单线程模型 因为 Redis 的通信依赖于 So
  • 一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    我们知道 不同肤色的人外貌差别很大 而双胞胎的辨识很难 有意思的是Web服务器 Web容器 Web应用程序服务器 反向代理有点像四胞胎 在网络上经常一起出现 本文将带读者对这四个相似概念如何区分 Web服务器概念与基本原理 Web服务器的历
  • CSS基础之CSS文本属性

    文章目录 前言 1 color 2 text align 3 font size 4 text decoration 5 text indent 6 line height 7 文本属性总结 前言 CSS 文本属性可以设置文本的 外观 比如
  • 从同源政策到跨域解决方法

    一 同源政策 同源政策的目的 是为了保证用户信息的安全 防止恶意的网站窃取数据 所谓同源指的是协议 域名 端口相同 否则就会产生跨域问题 二 跨域 跨域问题主要分为三类 1 Cookie LocalStorage 和 IndexDB 无法读
  • 记一次jQuery EasyUI使用-Easyui combobox的使用方法

    开局附上最最最有用的官方文档 划重点 easyui使用手册 进入正题 现象 有这样一段代码 浏览器请求getSystemSignList方法有返回数据并且严格符合easyui的应答规范 一个json格式的list对象 tr td class
  • 大模型讲习班丨第四范式黄世宇:强化学习的发展历程与基于人类反馈的强化学习...

    人工智能研究与应用范式正经历一场剧变 越来越多的顶级团队和杰出人才纷纷加入这一变革浪潮 作为AI大模型科研先锋 智源研究院携手一批卓越的学者与工程师 致力于将尖端技术与经验传授给有潜力的学习者 通过高效的学习方式 让更多人能迅速融入这一重要
  • MobileNet网络结构详解

    下图展示了传统卷积与DW卷积的差异 在传统卷积中 每个卷积核的channel与输入特征矩阵的channel相等 每个卷积核都会与输入特征矩阵的每一个维度进行卷积运算 而在DW卷积中 每个卷积核的channel都是等于1的 每个卷积核只负责输
  • Python-安装库-图像处理库-cv2

    问题 在pycharm中搜索cv2库 发现没有版本 在网上查找资料 找到了类似官方文档的资料 提到了安装方法 https pypi org project opencv python description cv2介绍 CV2指的是Open
  • ERROR 1064 (42000): You have an error in your SQL syntax

    mysql使用load data infile导入数据 出现如下错误 root NoName 21 19 12 gt load data infile change csv into table change CHARACTER SET u
  • JAVA基础知识点大全之二

    1 泛型 1 1 泛型类 定义格式 修饰符 class 类名 lt 类型 gt 1 2 泛型方法 定义格式 修饰符 lt 类型 gt 返回值类型 方法名 类型 变量名 1 3 泛型接口 定义格式 修饰符 interface 接口名 lt 类