JavaSE基础部分总结
JavaSe基础部分
文章目录
- JavaSe基础部分
- 1.命名规范
- 2.基本的数据类型
- 3.方法
- 3.1方法的基本格式
- 3.2 方法的分类
- 3.3 方法的注释
 
- 4.数组
- 4.1 数组的命名格式
- 4.2 数组中存在的址交换的操作
- 4.3数组Arrays常用的方法
- 1. Arrays.asList(数组作为参数或者数据作为参数):
- 2.Arrays.fill(Object[] array, Object obj)
- 3.Arrays.fill(Object[] array, int fromIndex, int toIndex, Object obj)
- 4. Arrays.sort(Object[] array)
- 5.Arrays.sort(T[] array, Comparator<? super T> comparator)
- 6.Arrays.parallelSort(T[] array)
- 7.Arrays.binarySearch(Object[] array, Object key)
- 8.Arrays.copyOf(T[] original, int newLength)
- 9.Arrays.stream(T[] array)
- 10.Arrays.equals(Object[] array1, Object[] array2)
 
- 4.4数组常见习题
- 4.4.1 找到数组中的最大值,并且计算出最大值的个数
- 4.4.2 找到数组中的最大元素的下标,将找到的下标的元素保存到一个新的数组中
- 4.4.3 从数组中指定下标开始,到指定下标结束,获取数据存储到新数组中
- 4.4.4 指定的数组的逆序
- 4.4.5 在指定的数组下标添加元素
- 4.4.6 在指定的数组下标删除元素
- 4.4.7 选择排序算法
- 4.4.8 冒泡排序
 
 
- 5.易错点
- 5.1 三目运算符
- 5.2 大写字母转换成为小写字母的方式
 
 
 
 
1.命名规范
- 字符的使用
a. 数字 0 ~ 9 
b. 英文字母 a ~ z A ~ Z
c. 唯一可以使用的标点符号 _ 下划线
- 变量定义对应的标识符要求英文字母的开头
- 标识符要求严格区分大小写
- 标识符没有严格的长度限制,但是会根据实际的开发情况决定标识符的长度
- 标识符要求见名知意,动宾结构
- 标识符的命名要求
a. 驼峰命名法小驼峰首字母小写,之后的每一个单词首字母大写适用于:变量,方法名大驼峰每一个单词首字母大写,适用于:类名,接口名
b. 下划线命名法所有单词全部大写,使用 _ 下划线分割。适用于:带有名称的常量
- 已经被java占用的关键字和保留字不得用于自定义标识符使用
- 标识符在一定的范围内唯一
2.基本的数据类型
- 整型的数据类型
| 数据类型 | 占用内存的字节数目 | 数据的范围 | 
|---|---|---|
| byte | 1 | -128~127 | 
| short | 2 | -215~215-1 | 
| int | 4 | -231~231-1 | 
| long | 8 | -263~263-1 | 
- 浮点型数据类型
| 数据类型 | 占用内存的字节数目 | 数据的范围 | 
|---|---|---|
| double | 8 | 10^308 | 
| float | 4 | 10^38 | 
- 字符数据类型
| 数据类型 | 占用内存的字节数目 | 数据的范围 | 
|---|---|---|
| char | 2 | 可以存储中文 | 
- 布尔的数据类型
| 数据类型 | 占用内存的字节数目 | 数据的范围 | 
|---|---|---|
| boolean | 1. 占用一个字节 2. 占用四个字节 3. boolean类型数组 每一个布尔类型占用一个 bit 位 | 1 0 | 
按照 Java 的语法规则,当前num == 1010 == num 【墙裂建议】实际上结果一致,并且可以有效的防止一定的错误。num = 10 赋值语句正常操作10 = num 赋值语句,但是语法错误,因为常量不可以被赋值。
自增自减的面试题
int a = 10;
int b = 5;
int c = 3;int ret = a++ * ++b - (c-- + b++);拆掉所有的算术运算符,包括小括号,小括号优先级有且只在自增自减结果提供之后参与。
拆解之后:a++ ==> 10++b ==> 6c-- ==> 3b++ ==> 6
确定每一个自增自减运算符提供的数据之后,恢复原本的运算结构10 * 6 - (3 + 6) ==> 60 - 9 ==> 51ret = 51;
a = 11;
b = 7;
c = 2;
int num = 10;
++(num++);【语法错误 一】
num = ?;++num--;【语法错误 二】【语法错误 一】1. 自增自减运算符有且只允许操作【变量】2. 小括号结果对外是一个【常量】,值,value,数代码运行之后的结果:++(常量) ==> ++常量 语法错误【语法错误 二】1. 自增自减运算符最终提供给表达式的结果是一个常量++num ==> 1111--; -- 自减运算符,操作的不是一个变量,而是常量数据语法错误3.方法
3.1方法的基本格式
权限修饰符 【静态修饰符】返回值类型 方法名称(形参){方法体}
3.2 方法的分类
★有参数有返回值 最常用的模式,在开发中非常友好,方便代码操作无参数无返回值一般为测试方法,展示方法,内置方法。无参数有返回值生产者方法有参数无返回值消费者方法
3.3 方法的注释
调用方法要求:1. 需要明确方法名2. 需要提供小括号,Java 中区分变量和方法的最大的区别就是 ()3. 需要提供方法所需实际参数
文档注释的目的,是为了在后期开发中,可以快速看到当前方法的注释内容,提示方法的功能无参数无返回值方法,当前方法没有返回值和参数,无需告知当前方法的调用者,该方法的相关返回值和参数信息,只需要告知调用者当前方法的作用 ,测试方法@param parameter 解释当前参数的用意,特征,数据需求和解释方法声明中的形式参数列表对应的【参数名】就是一个可以在方法中使用的【局部变量】在控制台展示调用者提供的 int 类型数据@param num 用户提供的 int 类型数据内容
4.数组
4.1 数组的命名格式
数据类型[] 数组名 = new 数据类型[容量];
对于命名格式的分析
数据类型明确当前数组存储数据类型,严格要求数据类型一致化
[] 1. 当前创建的为数组类型2. 数组名为引用数据类型
数组名1. 操作数组使用的名称,存储当前数组占用内存空间【首地址】2. 数组名为引用数据类型
new 1. 根据当前数据所需,在内存的【堆区】申请所需的内存空间2. 对于当前内存空间中数据内容进行擦除操作。
数据类型前后一致,严格遵从数据类型一致化要求
[容量]1. 在 int 范围以内2. 数组容量一旦确定,无法修改。分析:1. 数组的下标为 整数 ==> int 2. 数组下标不能超出 int 范围,数组容量在 int 范围以内。3. 数值容量最大值是 Integer.MAX_VALUE - 8
4.2 数组中存在的址交换的操作
数组中的址交换,arr = other_arr 实际上是将 other_arr数组的地址交给了arr,然后能够实现arr的重指向,但是arr之前的数组还是在堆内存中,但是无法进行寻找调用(当然除非你之前保存了地址)。

4.3数组Arrays常用的方法
1. Arrays.asList(数组作为参数或者数据作为参数):
作用是将数组转换成为集合
List<Integer> list = Arrays.asList(1, 2, 3);// 1 2 3Integer[] data = {1, 2, 3};
List<Integer> list = Arrays.asList(data);// 1 2 3int[] data = {1, 2, 3};
List<int[]> list = Arrays.asList(data);
System.out.println(list.size()); // 1
System.out.println(Arrays.toString(list.get(0))); // [1, 2, 3]
2.Arrays.fill(Object[] array, Object obj)
用来将指定元素填充整个数组,采用的方案是将数组中的元素进行替换
Integer[] data = {1, 2, 3, 4};
Arrays.fill(data, 9);
System.out.println(Arrays.toString(data)); // [9, 9, 9, 9]
3.Arrays.fill(Object[] array, int fromIndex, int toIndex, Object obj)
用指定的元素填充数组,取头不取尾,会替换到数组中的其他元素
Integer[] data = {1, 2, 3, 4};
Arrays.fill(data, 0, 2, 9);
System.out.println(Arrays.toString(data)); // [9, 9, 3, 4]
4. Arrays.sort(Object[] array)
对于数组进行串行排序操作
String[] data = {"1", "4", "3", "2"};
System.out.println(Arrays.toString(data)); // [1, 4, 3, 2]
Arrays.sort(data);
System.out.println(Arrays.toString(data)); // [1, 2, 3, 4]
5.Arrays.sort(T[] array, Comparator<? super T> comparator)
通过使用自定义比较器,对于数组进行串行排序
String[] data = {"1", "4", "3", "2"};
System.out.println(Arrays.toString(data)); // [1, 4, 3, 2]
// 实现降序排序,返回-1放左边,1放右边,0保持不变
Arrays.sort(data, (str1, str2) -> {if (str1.compareTo(str2) > 0) {return -1;} else {return 1;}
});
System.out.println(Arrays.toString(data)); // [4, 3, 2, 1]6.Arrays.parallelSort(T[] array)
对于数组的元素进行并行排序操作,当数据的规模较大的时候,会有更好的体验。
String[] data = {"1", "4", "3", "2"};
Arrays.parallelSort(data);
System.out.println(Arrays.toString(data)); // [1, 2, 3, 4]
7.Arrays.binarySearch(Object[] array, Object key)
该方法的使用前提是需要对于数组的进行排序的操作,然后才能够进行二分查找。
8.Arrays.copyOf(T[] original, int newLength)
拷贝数组,拷贝的长度是多少。
Integer[] data1 = {1, 2, 3, 4};
Integer[] data2 = Arrays.copyOf(data1, 2);
System.out.println(Arrays.toString(data2)); // [1, 2]
Integer[] data3 = Arrays.copyOf(data1, 5);
System.out.println(Arrays.toString(data3)); // [1, 2, 3, 4, null]9.Arrays.stream(T[] array)
返回数组的流,然后我们就能够使用Stream中的多种方法
Integer[] data = {1, 2, 3, 4};
List<Integer> list = Arrays.stream(data).collect(toList());
System.out.println(list); // [1, 2, 3, 4]
10.Arrays.equals(Object[] array1, Object[] array2)
判断两个数组是否相等,数组为基本的数据类型的时候,通过比较值。当数组是引用类型的时候,依次调用equals方法进行比较
Integer[] data1 = {1, 2, 3};
Integer[] data2 = {1, 2, 3};
System.out.println(Arrays.equals(data1, data2)); // true
4.4数组常见习题
4.4.1 找到数组中的最大值,并且计算出最大值的个数
采用的是尾插法的思想:
 1.引入count变量;
 2.如果遍历的元素是最大值,count进行自增操作;如果不是最大值,从新进行count的定义,并且将交换数组中的下标。
【注意】需要对于开发的方法,进行文档注释分析,方便之后的使用/*** 找出数组中最大值数据个数** @param arr 指定查询数据的 int 类型数组* @return 最大值数据个数*/
public static int getMaxValueCount(int[] arr) {int count = 1;int max = arr[0];// 遍历整个数组for (int i = 1; i < arr.length; i++) {if (max < arr[i]) {// 发现当前 max 存储的数据不是最大值// max 存储较大值,同时 count 重置为 1max = arr[i];count = 1;} else if (max == arr[i]) {// max 和当前数组中下标 i 的元素一致,count 计数count += 1;}}return count;
}
4.4.2 找到数组中的最大元素的下标,将找到的下标的元素保存到一个新的数组中
核心思想:
 1.尾插法:引用一个count变量,对最大值进行统计操作。数据所存储的下标位置
 2.空间和时间的效率的考虑
	/*** 找出元素中的最大的值得下标,然后将找到的下标元素保存到一个新的数组中** @param arr int类型的数组* @param string int类型的数组【个人习惯,读者勿模仿,不规范】* @return 无返回值*/public static void findArrIndex(int[] arr,int[] string){int max = 0;int count = 0;// 遍历整个数组for (int i = 1; i < arr.length; i++) {if (max < arr[i]) {// 发现当前 max 存储的数据不是最大值// max 存储较大值,同时 count 重置为 0max = arr[i];count = 0;} else if (max == arr[i]) {// max 和当前数组中下标 i 的元素一致,count 计数string[count] = i;count += 1;}}}
4.4.3 从数组中指定下标开始,到指定下标结束,获取数据存储到新数组中
分析:
1 .Java中所有的取一定范围的数据的操作,都是采取的是左闭右开的原则。 2.通过下标进行内存的申请,然后将数组进行导入
 /*** 数组内容截取,从指定数组中,用户要求的下标位置 start 开始到 end 下标结束* 截取目标子数组内容** @param arr   源数据数组* @param start 用户指定的开始下标* @param end   用户指定的结束下标* @return 返回值是截取的子数组内容,返回值类型是一个 int[] 数组*/public static int[] subArray(int[] arr, int start, int end) {/*出现问题是因为用户提供的起始和终止下标不符合代码需求错误条件:1. end < start2. end > arr.length - 13. end < 0 无效条件4. start > arr.length - 1 无效条件5. start < 0start > end || start < 0 || end > arr.length - 1数组容量为 10,有效下标为 0 ~ 9start = 15 end = 18; 错误条件start = 5 end = -5; 错误条件start = 5 end = 3; 错误条件start = -5 end = 6; 错误条件*/if (start > end || start < 0 || end > arr.length - 1) {throw new IllegalArgumentException("截取数组下标不合法");/*如果封装方法,方法对外的返回值数据类型明确为 int[]没有合适的返回值数据内容来表明当前代码错误,也无法要求方法有两个类型的返回值【引入异常处理】*/}/*计算新数组的容量Java 开发中,范围数据,通常在截取操作过程中,采用方式是要头不要尾指定 start = 1 end = 5新数组容量为 4*/int[] subArray = new int[end - start];int count = 0;for (int i = start; i < end; i++) {subArray[count++] = arr[i];}return subArray;}
}
4.4.4 指定的数组的逆序
分析:
 1. 需要将现有的数据长度进行除2。
 2. 将顺序进行调转,就可以完成操作。
/*** 数组内容逆序** @param arr 进行逆序操作的数组*/
public static void reverse(int[] arr) {for (int i = 0; i < arr.length / 2; i++) {int temp = arr[i];arr[i] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = temp;}
}
4.4.5 在指定的数组下标添加元素
分析:
 1.数组的容量大小是不会发生改变的。
 2.指定位置后的所有元素整体后移,需要考虑覆盖的问题。
 3.对于覆盖的问题的解决方案是:从后面进行处理。
/*** 在指定下标位置,添加目标数据** @param arr    添加数据的目标数组* @param index  指定下标位置* @param number 添加的数据内容* @return 添加操作成功返回 true,否则返回 false*/
public static boolean add(int[] arr, int index, int number) {if (index > arr.length - 1 || index < 0) {return false;}/*需要利用循环进行数组元素移动起始:最后一个有效元素位置终止:目标添加数据的下标位置*/for (int i = arr.length - 1; i > index; i--) {arr[i] = arr[i - 1];}// 指定下标位置添加目标元素arr[index] = number;return true;
}
4.4.6 在指定的数组下标删除元素
分析:
1. 找到数组需要删除的元素1. 将指定下标后的数组元素进行覆盖操作。1. 该操作区分上述的插入操作,只需要正序操作即可。
/*** 指定数组中,删除指定下标元素,返回值是被删除的元素数据内容** @param arr   删除操作的源数据数组* @param index 指定删除的下标位置* @return 被删除的数据内容*/
public static int remove(int[] arr, int index) {if (index < 0 || index > arr.length - 1) {throw new IllegalArgumentException("下标数据不合法!");/*方法设计当前返回值是被删除的数据内容,这里错误情况返回任何一个整数都有可能是一个被删除数据,无法明确的告知调用者当前方法运算失败,引入【异常处理】*/}// 【核心】使用一个变量,存储被删除数据内容int temp = arr[index];// 利用循环移动数据,进行删除操作 从删除数据下标位置开始,到最后一个有效元素结束for (int i = index; i < arr.length - 1; i++) {arr[i] = arr[i + 1];}// 原本数组最后一个有效元素位置赋值为 0arr[arr.length - 1] = 0;return temp;
}
4.4.7 选择排序算法
分析:
 1.找出数组中的极值
2. 交换数据
/*** 针对于 int 类型数组选择排序算法实现** @param arr int 类型数组*/
public static void selectSort(int[] arr) {// 完成排序算法操作,执行的核心模块次数是当前数组有效元素个数 - 1for (int i = 0; i < arr.length - 1; i++) {// 按照排序规则要求,找极值对应的下标位置int index = i;for (int j = i + 1; j < arr.length; j++) {if (arr[index] < arr[j]) {index = j;}}// 进行数据交换操作,和目标存储极值对应的下标数据进行交换if (index != i) {int temp = arr[index];arr[index] = arr[i];arr[i] = temp;}}
}
4.4.8 冒泡排序
冒泡排序:
 将两个相近的元素进行交换。
	/***核心的算法操作*/int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println(Arrays.toString(arr));
5.易错点
5.1 三目运算符
条件判断 ? true 对应结果 : false 对应结果;细节:1. Java 中要求条件/三目运算符 整个表达式对外必须有数据产出2. 条件/三目运算符 执行对应结果调用方法的状况下,对应方法必须有返回值3.【使用方面】 可以用,但是不要嵌套,不要复杂
5.2 大写字母转换成为小写字母的方式
char ch = 'A';ch = ch + 32;// 错误错误原因32 是一个 int 类型,ch + int 类型数据,计算机会默认当前数据类型为 int ,使用 int 类型赋值给 char 类型变量数据,数据类型不一致,报错!!!【重点】ch += 32;自带特殊功能,可以满足数据类型转换操作。ch += ('a' - 'A');标准形式char ch1 = 'a' - 'A';int num = 'a' - 'A';严格遵守数据类型一致化要求System.out.println(ch1); // 空格 spaceSystem.out.println(num);
相关文章:
 
JavaSE基础部分总结
JavaSe基础部分 文章目录JavaSe基础部分1.命名规范2.基本的数据类型3.方法3.1方法的基本格式3.2 方法的分类3.3 方法的注释4.数组4.1 数组的命名格式4.2 数组中存在的址交换的操作4.3数组Arrays常用的方法1. Arrays.asList(数组作为参数或者数据作为参数):2.Arrays.…...
 
C++基础知识
目录类和对象C static_cast、dynamic_cast、const_cast和reinterpret_cast1、为什么要引入这四种类型转化?2、应用场景。C/C类型转换的本质struct和class的区别为什么会诞生面向对象的编程思想析构函数的执行时机初始化 const 成员变量C const对象(常对象…...
 
2023/2/24 图数据库Neo4j的理解与应用
1 什么是图数据库(graph database) 十大应用案例:https://go.neo4j.com/rs/710-RRC-335/images/Neo4j-Top-Use-Cases-ZH.pdf “大数据”每年都在增长,但如今的企业领导者不仅需要管理更大规模的数据,还迫切需要从现有…...
 
适合视力障碍者的Linux
导读有哪些最适合视障用户的 Linux 发行版?让我们一起来看看。 如果有人视力障碍或失明,他们可能会依赖声音提示或其他交互方式(如盲文)来阅读和交流。 他们怎样才能使用 Linux 发行版? 嗯,一般来说&…...
Tina Linux 存储开发指南
Tina Linux 存储开发指南 1 概述 1.1 编写目的 介绍TinaLinux Flash,分区,文件系统等存储相关信息,指导方案的开发定制。 1.2 适用范围 Tina V3.0 及其后续版本。 1.3 相关人员 适用于TinaLinux 平台的客户及相关技术人员。 2 分区管…...
【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
[NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 nnn 行 mmm 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻…...
 
【nohup引发磁盘读写高】nohup命令导致服务器磁盘读写占满该如何修复?
【写在前面】自己在跑一个项目的时候,猛然发现服务器挂了,直接访问不了,呈现出一种卡死现象,我当时都懵了,难道阿里在后端升级,也不会选择在工作日的时间升级吧,于是乎就咨询了一下客服。才有下…...
 
MySQL(二)索引和SQL优化
MySQL进阶MySQL体系结构存储引擎存储引擎特点InnoDB逻辑存储结构MyISAMMemory存储引擎选择索引索引结构二叉树B-TreeBTreeHash索引分类索引语法SQL性能分析工具SQL执行频率慢查询日志profile详情explain索引使用联合索引索引失效情况SQL提示覆盖索引前缀索引单列索引与联合索引…...
 
Java常用日期类(包含三代)_Date类及Calendar类等
一.java.util.Date类概述从JDK 1.0出现。表示一个日期和时间,精确到毫秒,内部getTime()从1970年1月1号开始算。1. java.util.Date类构造部份构造已经过时,重点看以下两个构造。public Date()从运行程序的此时此刻到时间原点经历的毫秒值&…...
 
计算机网络你都懂了吗
文章目录一、计算机网络的定义简单定义通用定义二、计算机网络通信过程三、什么是网络协议(Protocol)四、网络协议组成及功能一、计算机网络的定义 简单定义 计算机网络是一些相互连接的、自治的计算机系统的集合。 通用定义 将处于不同位置并具有独…...
 
3.4 Spring Boot 日志配置
第3章 Spring Boot 的系统配置 3.1 Spring Boot 系统配置文件 3.2 Spring Boot 自定义配置项 3.3 Spring Boot 其他配置 3.4 Spring Boot 日志配置 3.5 实战:Spring Boot 实现系统多环境配置 3.4 Spring Boot 日志配置 日志对于系统监控、故障定位非常重要…...
 
3款百里挑一的国产软件,逆天好用,装了就舍不得卸载
推荐3款让你偷懒,让你上头的提效电脑软件,个个功能强大,让你远离加班! 很多几个小时才能做好的事情,用上它们,只需要5分钟就行!! 1、JNPF快速开发平台 JNPF 是一款精巧耐用的软件…...
 
Java实现在线沟通功能
文章目录1、介绍 和 特点2、整合SpringBoot2.1、导入依赖2.2、websocket 配置类2.3、消息处理类2.4、启动服务2.5、前端代码:张三2.6、前端代码:李四3、效果4、小结1、介绍 和 特点 t-io是基于JVM的网络编程框架,和netty属同类,所…...
 
识别密文加密类型
离线密码破解:离线不会触发密码锁定机制不会产生大量登录失败日志引起管理员注意HASH识别工具(识别哈希类型):hash-identifierHashid yara规则匹配文件得到特定加密算法一、hash-identifierKali Linux提供工具hash-identifier来识…...
 
node报错
记录bug:运行 npx -p storybook/cli sb init 时报错gyp info spawn C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exegyp info spawn args [gyp info spawn args build/binding.sln,gyp info spawn args /nologo,gyp info spawn args…...
 
如何使用开源 BI 工具 DataEase 实现系列数据分析呢?
当我们使用可视化分析工具制作仪表板时,可能需要制作的仪表板不是单个单个的可视化大屏,而是一系列的仪表板,我们需要用它来产生一个连续性的故事,那么这个时候我们该怎么办呢?例如说总分形式,我们需要一个…...
 
金仓数据库安装
一、麒麟操作系统安装金仓数据库 操作系统 DISTRIB_IDKylin DISTRIB_RELEASEV10 DISTRIB_CODENAMEjuniper 按照安装文档的步骤安装,记得记住设置的数据库的用户名、密码 二、window安装连接数据库的工具软件 三、jdbc连接数据库 (1)连接工…...
深入浅出Webpack2-快速掌握webpack基本配置
深入浅出Webpack2-快速掌握webpack基本配置1.Entry1.1 context1.2 Entry类型2.Output2.1 filename2.2 path3.Module3.1配置Loader4.Resolve4.1 alias4.2 extensions4.3 modules5.Plugin6.DevServer7.其他配置项上一篇文章我们快速上手认识了一下webpack,今天这篇文章…...
 
如何使评论具有可操作性?取悦客户的指南
永远不要低估承认的力量。 当品牌与客户互动时,认可会带来更好的关系和更好的沟通。与买家和客户建立更多的个人联系意味着品牌需要证明他们支持他们的产品和客户。评论是利用客户分享他们的故事的那些时刻的绝佳机会。 为什么评论在 SaaS 中至关重要 在 B2B 软件的…...
 
一文带你彻底搞懂Nginx反向代理
一文带你彻底搞懂Nginx反向代理一、什么是反向代理1.1 正向代理1.2 反向代理1.3 总结二、配置反向代理2.1 准备 Tomcat2.2 配置 Nginx一、什么是反向代理 1.1 正向代理 举一个通俗的例子,因为众所周知的原因,我们无法访问谷歌,但是因为某些…...
 
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
 
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
 
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
 
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...
