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

东莞网站/新闻最近新闻10条

东莞网站,新闻最近新闻10条,上海企业服务平台,湖南网站建设熊掌号☀️博客主页:CSDN博客主页💨本文由 萌萌的小木屋 原创,首发于 CSDN💢🔥学习专栏推荐:面试汇总❗️游戏框架专栏推荐:游戏实用框架专栏⛅️点赞 👍 收藏 ⭐留言 📝&#…

  • ☀️博客主页:CSDN博客主页
  • 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢
  • 🔥学习专栏推荐:面试汇总
  • ❗️游戏框架专栏推荐:游戏实用框架专栏
  • ⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正
  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述​​​请添加图片描述​​​请添加图片描述​​​

​​​

 Unity 小科普

老规矩,先介绍一下Unity的科普小知识:

  •  Unity 是行业领先的实时3D开发平台。
  • 包括游戏开发,电影,AR/VR,虚拟现实在内的所有创作者,可以将梦想照进现实。
  • Unity提供了一套完整完善的软件解决方案,可用于创作,运营和模拟任何2D和3D的内容,进全平台支持
  • 实际上Unity就是一个游戏引擎,大名鼎鼎的原神就是用它制作的。

MGameFrame:慢慢积累的属于自己的框架

目的:自己工作期间凭当前水准自己写的代码框架,持续更新中,方便以后自己使用,现在开源,需要自取

需求:工程中,经常会使用到排序函数,但是每次去搜索,可能最常见的就是冒泡排序,现自己总结了所有的排序,方便自己在工程中快速的使用

十大排序

冒泡,插入,归并,桶,基数,二叉树,选择,希尔,堆,快速

参考链接

参考学习

注意事项

可以直接复制源码,也可以从我的GitCode中自取

源码

using System;
using System.Collections.Generic;
public class SortTool
{//整体参考:https://blog.csdn.net/weixin_43199474/article/details/93067441?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167782546316800215039843%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167782546316800215039843&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-93067441-null-null.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E5%8F%8A%E5%85%B6%E5%A4%8D%E6%9D%82%E5%BA%A6&spm=1018.2226.3001.4187#region 冒泡排序/// <summary>/// 冒泡排序(优化版本)/// 时间复杂度:最差:O(n^2),最好O(n)/// 空间复杂度:O(1)/// https://blog.csdn.net/qq_48718409/article/details/120866840?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167782824716800222841549%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167782824716800222841549&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-120866840-null-null.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F%E5%AE%9E%E7%8E%B0&spm=1018.2226.3001.4187/// </summary>/// <param name="list"></param>public static void BubbleSort(List<int> list){bool flag = false;for (int i = 0; i < list.Count - 1; i++){flag = false;for (int j = 0; j < list.Count - 1 - i; j++){if (list[j] > list[j + 1]){int temp = list[j];list[j] = list[j + 1];list[j + 1] = list[j];flag = true;}}if (flag == false){break;}}}#endregion#region 插入排序/// <summary>/// 插入排序/// 时间复杂度:最差:O(n^2),最好O(n)/// 空间复杂度:O(1)/// https://blog.csdn.net/qq_48718409/article/details/120866840?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167782824716800222841549%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167782824716800222841549&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-120866840-null-null.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F%E5%AE%9E%E7%8E%B0&spm=1018.2226.3001.4187/// </summary>/// <param name="list"></param>public static void InsertSort(List<int> list){for (int i = 1; i < list.Count; i++){ //控制循环轮数int temp = list[i]; //定义待交换元素int j; //定义待插入的位置for (j = i; j > 0 && temp < list[j - 1]; j--){list[j] = list[j - 1];}list[j] = temp;}}#endregion #region 归并排序/// <summary>/// 归并排序/// 时间复杂度:O(nlog(n))/// 空间复杂度:O(n)</summary>/// https://www.cnblogs.com/chengxiao/p/6194356.html/// <param name="list"></param>public static void MergerSort(List<int> list){int[] temp = new int[list.Count];//在排序前,先建好一个长度等于原数组长度的临时数组,避免递归中频繁开辟空间sort(list, 0, list.Count - 1, temp);}private static void sort(List<int> list, int left, int right, int[] temp){if (left < right){int mid = (left + right) / 2;sort(list, left, mid, temp);//左边归并排序,使得左子序列有序sort(list, mid + 1, right, temp);//右边归并排序,使得右子序列有序merge(list, left, mid, right, temp);//将两个有序子数组合并操作}}private static void merge(List<int> list, int left, int mid, int right, int[] temp){int i = left;//左序列指针int j = mid + 1;//右序列指针int t = 0;//临时数组指针while (i <= mid && j <= right){if (list[i] <= list[j]){temp[t++] = list[i++];}else{temp[t++] = list[j++];}}while (i <= mid){//将左边剩余元素填充进temp中temp[t++] = list[i++];}while (j <= right){//将右序列剩余元素填充进temp中temp[t++] = list[j++];}t = 0;//将temp中的元素全部拷贝到原数组中while (left <= right){list[left++] = temp[t++];}}#endregion#region 桶排序/// <summary>/// 归并排序/// 时间复杂度:O(N+M),近似O(N)/// 空间复杂度:O(N+M)/// https://www.cnblogs.com/skywang12345/p/3602737.html/// </summary>/// <param name="list"></param>public static void BucketSort(List<int> list, int maxVal){int[] buckets;if (list == null || maxVal < 1)return;// 创建一个容量为max的数组buckets,并且将buckets中的所有数据都初始化为0。buckets = new int[maxVal];// 1. 计数for (int i = 0; i < list.Count; i++)buckets[list[i]]++;// 2. 排序for (int i = 0, j = 0; i < maxVal; i++){while ((buckets[i]--) > 0){list[j++] = i;}}buckets = null;}#endregion#region 基数排序/// <summary>/// 基数排序/// 时间复杂度:O( k*n ) ;其中k为常数,n为元素个数;/// 空间复杂度:(10 × length)= O (length)/// https://www.cnblogs.com/skywang12345/p/3603669.html/// </summary>/// <param name="list"></param>public static void RadixSort(List<int> list){int exp;    // 指数。当对数组按各位进行排序时,exp=1;按十位进行排序时,exp=10;...int max = getMax(list);    // 数组a中的最大值// 从个位开始,对数组a按"指数"进行排序for (exp = 1; max / exp > 0; exp *= 10)countSort(list, exp);}/// <summary>/// 获取数组a中最大值/// </summary>/// <param name="list"></param>/// <returns></returns>private static int getMax(List<int> list){int mlistx;mlistx = list[0];for (int i = 1; i < list.Count; i++)if (list[i] > mlistx)mlistx = list[i];return mlistx;}/** 对数组按照"某个位数"进行排序(桶排序)** 参数说明:*     a -- 数组*     exp -- 指数。对数组a按照该指数进行排序。** 例如,对于数组a={50, 3, 542, 745, 2014, 154, 63, 616};*    (01) 当exp=1表示按照"个位"对数组a进行排序*    (02) 当exp=10表示按照"十位"对数组a进行排序*    (03) 当exp=100表示按照"百位"对数组a进行排序*    ...*/private static void countSort(List<int> list, int exp){//int output[list.length];    // 存储"被排序数据"的临时数组int[] output = new int[list.Count];    // 存储"被排序数据"的临时数组int[] buckets = new int[10];// 将数据出现的次数存储在buckets[]中for (int i = 0; i < list.Count; i++)buckets[(list[i] / exp) % 10]++;// 更改buckets[i]。目的是让更改后的buckets[i]的值,是该数据在output[]中的位置。for (int i = 1; i < 10; i++)buckets[i] += buckets[i - 1];// 将数据存储到临时数组output[]中for (int i = list.Count - 1; i >= 0; i--){output[buckets[(list[i] / exp) % 10] - 1] = list[i];buckets[(list[i] / exp) % 10]--;}// 将排序好的数据赋值给list[]for (int i = 0; i < list.Count; i++)list[i] = output[i];output = null;buckets = null;}#endregion#region 二叉树排序//待更新#endregion#region 选择排序/// <summary>/// 选择排序/// 时间复杂度:O(N^2)/// 空间复杂度:O(N^2)/// https://blog.csdn.net/zhuo_wp/article/details/78223481?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167783001016800213086400%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167783001016800213086400&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-78223481-null-null.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=C%23%20%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4187/// </summary>/// <param name="list"></param>public static void SelectionSort(int[] array){for (int i = 0; i < array.Length - 1; i++){int minValueIndex = i;for (int j = i + 1; j < array.Length; j++){if (array[minValueIndex] > array[j]){minValueIndex = j;}}if (minValueIndex != i){Exchange(ref array[i], ref array[minValueIndex]);}}}private static void Exchange(ref int x, ref int y){int temp = x;x = y;y = temp;}private static void Exchange<T>(ref T x, ref T y){T temp = x;x = y;y = temp;}#endregion#region 希尔排序/// <summary>/// 希尔排序(移动法):先选择区间在用插入排序/// 时间复杂度:O(N^2)/// 空间复杂度:O(N^2)/// https://www.cnblogs.com/chengxiao/p/6104371.html/// </summary>/// <param name="list"></param>public static void XierSortForMove(List<int> list){//增量gap,并逐步缩小增量for (int gap = list.Count / 2; gap > 0; gap /= 2){//从第gap个元素,逐个对其所在组进行直接插入排序操作for (int i = gap; i < list.Count; i++){int j = i;int temp = list[j];if (list[j] < list[j - gap]){while (j - gap >= 0 && temp < list[j - gap]){//移动法list[j] = list[j - gap];j -= gap;}list[j] = temp;}}}}private static void XierSwap(List<int> list, int a, int b){list[a] = list[a] + list[b];list[b] = list[a] - list[b];list[a] = list[a] - list[b];}/// <summary>/// 希尔排序(交换法):先选择区间在用插入排序/// 时间复杂度:O(N^2)/// 空间复杂度:/// https://www.cnblogs.com/chengxiao/p/6104371.html/// </summary>/// <param name="list"></param>public static void XierSortForSwap(List<int> list){//增量gap,并逐步缩小增量for (int gap = list.Count / 2; gap > 0; gap /= 2){//从第gap个元素,逐个对其所在组进行直接插入排序操作for (int i = gap; i < list.Count; i++){int j = i;while (j - gap >= 0 && list[j] < list[j - gap]){//插入排序采用交换法XierSwap(list, j, j - gap);j -= gap;}}}}#endregion#region 堆排序/// <summary>/// 堆排序/// 时间复杂度:O(nlogn)/// 空间复杂度:O(1)/// https://blog.csdn.net/qq_35552025/article/details/77995524?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A0%86%E6%8E%92%E5%BA%8F%20C&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-77995524.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187#%E5%AE%9E%E7%8E%B0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-77995524.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt/// </summary>/// <param name="list"></param>public static void HeapSort(List<int> list){//将最大的值推到堆顶//x根据最后一个子节点的位置计算出父节点int x = Convert.ToInt32(Math.Floor(Convert.ToDouble((list.Count - 2) / 2)));for (int i = x; i >= 0; i--){//如果子元素只存在左子元素是 让右子元素等于左子元素while (list[i] < list[i * 2 + 1] || list[i] < list[(i * 2 + 2) > (list.Count - 1) ? (i * 2 + 1) : i * 2 + 2]){if (list[i * 2 + 1] >= list[(i * 2 + 2) > (list.Count - 1) ? (i * 2 + 1) : i * 2 + 2]){int index = list[i];list[i] = list[i * 2 + 1];list[i * 2 + 1] = index;}else{int index = list[i];list[i] = list[i * 2 + 2];list[i * 2 + 2] = index;}}}//输出堆顶最大的元素int max = list[0];list[0] = list[list.Count - 1];Console.Write("{0}\t", max);//将数组中的最后一个元素删除List<int> num = new List<int>(list.Count - 1);for (int j = 0; j < list.Count - 1; j++){num[j] = list[j];}Adjust(num);}public static void Adjust(List<int> list){if (list.Count > 1){HeapSort(list);}}#endregion#region 快速排序/// <summary>/// 快速排序/// 时间复杂度:O(nlogn)/// 空间复杂度:O(1)/// https://blog.csdn.net/enternalstar/article/details/106932822?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167783146916800188592132%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167783146916800188592132&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-106932822-null-null.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=C%23%20%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4187/// </summary>/// <param name="list"></param>public void QuickSort(List<int> list, int lo, int hi){if (lo > hi)//递归退出条件{return;}int i = lo;int j = hi;int temp = list[i];//取得基准数,空出一个位置while (i < j)//当i=j时推出,表示temp左边的数都比temp小,右边的数都比temp大{while (i < j && temp <= list[j])//从后往前找比temp小的数,将比temp小的数往前移{j--;}list[i] = list[j];//将比基准数小的数放在空出的位置,j的位置又空了出来while (i < j && temp >= list[i])//从前往后找比temp大的数,将比temp大的数往后移{i++;}list[j] = list[i];//将比基准数大的数放在hi空出来的位置,如此,i所在的位置又空了出来}list[i] = temp;QuickSort(list, lo, i - 1);//对lo到i-1之间的数再使用快速排序,每次快速排序的结果是找到了基准数应该在的位置//其左边的数都<=它,右边的数都>=它,它此时在数组中的位置就是排序好时其应该在的位置。QuickSort(list, i + 1, hi);//对i+1到hi之间的数再使用快速排序}#endregion
}

GitCode地址

有用点个Fork啊

更新记录

2023-5-30 更新了九个排序静态算法

相关文章:

【简单实用框架】【十大排序算法直接调用】【可移植】

☀️博客主页&#xff1a;CSDN博客主页&#x1f4a8;本文由 萌萌的小木屋 原创&#xff0c;首发于 CSDN&#x1f4a2;&#x1f525;学习专栏推荐&#xff1a;面试汇总❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&#…...

微服务架构之RPC调用

在单体应用时&#xff0c;一次服务调用发生在同一台机器上的同一个进程内部&#xff0c;也就是说调用发生在本机内部&#xff0c;因此也被叫作本地方法调用。在进行服务化拆分之后&#xff0c;服务提供者和服务消费者运行在两台不同物理机上的不同进程内&#xff0c;它们之间的…...

One2Multi Graph Autoencoder for Multi-view Graph Clustering

One2Multi Graph Autoencoder for Multi-view Graph Clustering | Proceedings of The Web Conference 2020 (acm.org) 目录 Abstract 1 Introduction 2 Model 2.1 Overview 2.2 One2Multi Graph Convolutional Autoencoder Informative graph convolutional encoder M…...

Java编程实现输入数的阶乘(for循环):读入一个小于 10 的整数 n,输出它的阶乘 n。(for循环)

public class Main { public static void main(String[] args) { Scanner input new Scanner(System.in); //输入提示语句 System.out.print(“请输入一个小于10的数&#xff1a;”); //从键盘获取值 int num input.nextInt(); //定义一个总和 int sum 1; //开始判断输入数是…...

算法提高-搜索-FloodFill和最短路

FloodFill和最短路 FloodFillAcwing 1097. 池塘计数AcWing 1098. 城堡问题AcWing 1106. 山峰和山谷 最短路AcWing 1076. 迷宫问题AcWing 188. 武士风度的牛AcWing 1100. 抓住那头牛 FloodFill Acwing 1097. 池塘计数 //acwing 1097. 池塘计数 #include <iostream> #inc…...

【蓝桥杯单片机第八届国赛真题】

【蓝桥杯单片机第八届国赛真题】 文章目录 【蓝桥杯单片机第八届国赛真题】前言一、真题二、源码 前言 有幸进入国赛&#xff0c;为自己大学最后一个比赛画上完满的句号^^ 下面为蓝桥杯单片机第八届国赛程序部分&#xff0c;功能差不多都实现了&#xff0c;可能存在小bug&#…...

一种简单的Android骨架屏实现方案----0侵入0成本

对骨架屏的理解 什么是骨架屏 所谓骨架屏&#xff0c;就是在页面进行耗时加载时&#xff0c;先展示的等待 UI, 以告知用户程序目前正在运行&#xff0c;稍等即可。 等待的UI大部分是 loading 转圈的弹窗&#xff0c;有的是自己风格的小动画。其实大同小异。而骨架屏无非也是一…...

【Kubernetes 架构】了解 Kubernetes 网络模型

Kubernetes 网络使您能够在 k8s 网络内配置通信。它基于扁平网络结构&#xff0c;无需在主机和容器之间映射端口。 Kubernetes 网络支持容器化组件之间的通信。这种网络模型的主要优点是不需要在主机和容器之间映射端口。然而&#xff0c;配置 Kubernetes 网络模型并不是一件容…...

shell

一、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 二、判断web服务是否运行 三、使用curl命令访问第二题的web服务&#xff0c;看能否正常访问&#xff0c;如果能正常访问&#xff0c;…...

springboot+ssm+java校园二手物品交易系统vxkyj

样需要经过市场调研&#xff0c;需求分析&#xff0c;概要设计&#xff0c;详细设计&#xff0c;编码&#xff0c;测试这些步骤&#xff0c;基于Java语言、Jsp技术设计并实现了校园二手物品交易系统。系统主要包括个人中心、商家管理、用户管理、商品分类管理、商品信息管理、商…...

Android系统内置应用

Android系统内置应用 背景 客户提供APK&#xff0c;需要集成进系统&#xff0c;并且不可卸载 Android原生是怎么做的&#xff1f; 已Launcher3为例&#xff0c;apk是位于/system/priv-app/Launcher3目录下 AOSP系统内置app步骤 1.在package/apps/目录下创建相应的文件夹如&…...

CMMI实施需要准备什么:

1. 人力资源 实施中会涉及到EPG过程改进小组、QA、试点项目团队等人力资源&#xff1a; 1) 专职人员&#xff1a;1-2名 即在CMMI实施推广期内&#xff0c;基本上100%的时间投入。 2) 质量人员&#xff1a;1-更多名 组建质量管理部门&#xff0c;实施体系执行的监控&#x…...

【ARM AMBA AXI 入门 1 - AXI 握手协议】

文章目录 1.1 AXI 双向握手机制简介1.1.1 信号列表1.1.2 双向握手目的1.1.3 握手过程 1.2 数据通路的握手要求1.2.1 读数据通路1.2.2 读地址通路1.2.3 写数据通路1.2.4 写地址通路1.2.5 写回复通路1.2.6 全信号 1.3 不同数据通路间的约束关系1.3.1 读操作约束关系1.3.2 写操作约…...

详解uni-app应用生命周期函数

详解uni-app应用生命周期函数 详解uni-app应用生命周期函数 文章目录 详解uni-app应用生命周期函数前言一、应用生命周期函数二、页面生命周期函数总结 前言 UNI-APP学习系列之详解uni-app应用生命周期函数 一、应用生命周期函数 函数名说明onLaunch当uni-app 初始化完成时触…...

【WebFlux】List指定bean引用对象更新后同步到List

Java 8的流式API实现 如果你想在WebFlux中更新List中指定bean的引用对象并将其同步到List中&#xff0c;你可以使用Java 8的流式API来完成这个任务。 以下是一个例子&#xff1a; List<MyBean> myBeanList new ArrayList<>(); MyBean myBean1 new MyBean(); My…...

【JavaSE】Java基础语法(二十六):Collection集合

文章目录 1. 数组和集合的区别2. 集合类体系结构3. Collection 集合概述和使用【应用】4. Collection集合的遍历【应用】5. 增强for循环【应用】 1. 数组和集合的区别 相同点 都是容器,可以存储多个数据不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型…...

jmeter做接口压力测试_jmeter接口性能测试

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是免…...

网络编程 lesson5 IO多路复用

select 当需要在一个或多个文件描述符上等待事件发生时&#xff0c;可以使用select函数。 select函数是一个阻塞调用&#xff0c;它会一直等待&#xff0c;直到指定的文件描述符上有事件发生或超时。 select函数详解 int select(int nfds, fd_set *readfds, fd_set *writefd…...

码出高效_第一章 | 有意思的二进制表示及运算

目录 0与1的世界1.如何理解32位机器能够同时处理处理32位电路信号&#xff1f;2.如何理解负数的加减法运算3.溢出在运算中如何理解4.计算机种常用的存储单位及转换5.位移运算规则6.有趣的 && 和 & 浮点数1.定点小数&#xff08;为什么会出现浮点数表示&#xff1f;…...

测试类型(单元、集成、系统或手动测试)

测试类型(单元、集成、系统或手动测试) 单元测试 单元是系统的单个组件&#xff0c;例如类或单个方法。孤立地测试单元称为单元测试。 优点&#xff1a;速度快/易控/易写 缺点&#xff1a;缺乏现实性/无法捕获所有错误&#xff08;例如与其他组件或服务的交互&#xff09; 单元…...

【笔试强训编程题】Day3.(字符串中找出连续最长的数字串 69385)和(数组中出现次数超过一半的数字 23271)

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训编程题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;! 文章目录…...

学懂缓存雪崩,缓存击穿,缓存穿透仅需一篇,基于Redis讲解

在了解缓存雪崩、击穿、穿透这三个问题前&#xff0c;我们需要知道为什么我们需要缓存。在了解这三个问题后&#xff0c;我们也必须知道使用Redis时&#xff0c;如何解决这些问题。 所以我将按照"为什么我们需要缓存"、"什么是缓存雪崩、击穿、穿透"、&qu…...

Android 12.0SystemUI 状态栏下拉和通知栏始终居中

1.概述 在12.0的产品定制化开发中,在系统原生的SystemUI 状态栏下拉和通知栏,默认是根据手势的x 坐标的位置居中显示,但是如果太靠两边感觉不太好,下拉太靠边不太好看所以产品提出不管手势在哪里下滑 都要去下拉和通知栏居中显示 会比较好看些 下面就来实现这个需求 2.Sy…...

面向过程编程和面向对象编程的区别

目录 一、面向过程编程 举个栗子&#xff1a; 二、面向对象编程 继续举个栗子&#xff1a; 三、区别 面向过程编程和面向对象编程是两种不同的编程范式&#xff0c;它们在代码的组织和结构上有所不同。 一、面向过程编程 面向过程编程&#xff08;Procedural Programmin…...

2023年数学与人工智能国际会议——火热征稿中~

会议简介 Brief Introduction 2023年数学与人工智能国际会议(CFMAI 2023) 会议时间&#xff1a;2023年9月22 -24日 召开地点&#xff1a;中国杭州 大会官网&#xff1a;www.cfmai.org 2023年数学与人工智能国际会议(CFMAI 2023)由中山大学主办&#xff0c;CoreShare科享学术交流…...

格式化数字的实用命令:numfmt

在 Linux 系统中&#xff0c;numfmt 是一个用于格式化数字的实用工具。它可以将数字转换为不同的表示方式&#xff0c;如十进制、二进制、字节单位等。本文将详细介绍 numfmt 命令的使用方法&#xff0c;并提供一些适合初学者的示例。 Numfmt 命令语法 numfmt 命令的基本语法如…...

传统的交叉熵函数如何通过平滑处理可以适用于多标签分类任务

传统的交叉熵损失函数通常用于多分类问题&#xff0c;而在多标签分类问题中&#xff0c;每个样本可能属于多个标签&#xff0c;因此需要使用一些新的技术来优化交叉熵损失函数。 一种常用的技术是标签平滑&#xff08;Label Smoothing&#xff09;&#xff0c;它可以优化传统的…...

关于Netty的一些问题

1.Netty 是什么&#xff1f; Netty是 一个异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的&#xff0c;它封装了jdk的nio&#xff0c;让我们使用起来更加方法灵活。 2.Netty 的特点是什么&#xff1f; 高并发&…...

Java - ThreadLocal数据存储和传递方式的演变之路

Java - ThreadLocal数据存储和传递方式的演变之路 前言一. InheritableThreadLocal - 父子线程数据传递1.1 父子线程知识预热和 InheritableThreadLocal 实现原理1.2 InheritableThreadLocal 的诟病 二. TransmittableThreadLocal (TTL) 横空出世2.1 跨线程变量传递测试案例2.2…...

vuex三问

文章目录 一、什么是vuex&#xff1f;二、为什么使用vuex&#xff1f;三、如何使用vuex&#xff1f;1.首先安装vuex2.注册vue中3.实例化vuex的store4. 挂载在vue实例上5.在组件中就可以通过this.$store对vuex进行操作。 总结 一、什么是vuex&#xff1f; Vuex 是一个专为 Vue.…...