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

Javase复习day21算法、arrays、Lamdba表达式

常见算法

查找算法

基本查找 

package search;public class BasicSearchDemo1 {public static void main(String[] args) {//基本算法(顺序查找)int[] arr = {131,23,57,37,95,48,57,43};System.out.println(basicSearch(arr, 43));}public static boolean basicSearch(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if (arr[i]==number){return true;}}return false;}
}
课堂练习1
课堂练习2

package search;import java.util.ArrayList;public class BasicSearchDemo2 {public static void main(String[] args) {//基本算法(顺序查找)int[] arr = {131,23,57,37,95,48,57,43,23};System.out.println(basicSearch1(arr, 43));System.out.println(basicSearch2(arr, 23));}public static int basicSearch1(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if (arr[i]==number){return i;}}return -1;}public static ArrayList<Integer> basicSearch2(int[] arr, int number){ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < arr.length; i++) {if (arr[i]==number){list.add(i);}}return list;}
}

二分查找(折半查找)

package search;public class BinarySearchDemo1 {public static void main(String[] args) {//二分查找int[] arr = {7,23,79,81,103,127,131,147};System.out.println(basicSearch(arr, 127));}public static int basicSearch(int[] arr,int number){int min = 0;int max = arr.length;while (max>=min){int mid = (min+max)/2;if (number>arr[mid]){min = mid+1;} else if (number<arr[mid]) {max = mid-1;}else {return mid;}}return -1;}
}
二分查找小结

二分查找的改进

插值查找

斐波那契查找

二分查找的小结

分块查找

package search;public class BlockSearchDemo {public static void main(String[] args) {//初步将其分块int[] arr = {16,5,9,12, 21,18,32,23,37,26,45,34,50,48,61,52,73,66};Block b1 = new Block(21,0,5);Block b2 = new Block(45,6,11);Block b3 = new Block(73,12,17);//定义数组来管理Block[] blocks = {b1,b2,b3};//记录要查找的数据int number = 73;//调用方法传递索引表、数组、查询的元素int index = getIndex(blocks,arr,number);System.out.println(index);}private static int getIndex(Block[] blocks, int[] arr, int number) {int indexBock = findIndexBock(blocks, number);if (indexBock==-1){//表示没有返回-1return -1;}//将对应块的起始索引和结束索引取出来int startIndex = blocks[indexBock].getStartIndex();int endIndex = blocks[indexBock].getEndIndex();//遍历到则存在for (int i = startIndex; i <= endIndex; i++) {if (arr[i]==number){return i;}}return -1;}//定义一个方法用来确认number的块public static int findIndexBock(Block[] blocks,int number){//二分查找进行操作int min = 0;int max = blocks.length;while (max>=min){int mid = (min+max)/2;if (number>blocks[mid].getMax()){min = mid+1;} else if (number<=blocks[mid].getMax()) {return mid;}}return -1;//顺序查找
//        for (int i = 0; i < blocks.length; i++) {
//            if (blocks[i].getMax()>=number){
//                return i;
//            }
//        }
//        return -1;}}
//定义一个类记录分块情况
class Block{private int max;private int startIndex;private int endIndex;public Block() {}public Block(int max, int startIndex, int endIndex) {this.max = max;this.startIndex = startIndex;this.endIndex = endIndex;}/*** 获取* @return max*/public int getMax() {return max;}/*** 设置* @param max*/public void setMax(int max) {this.max = max;}/*** 获取* @return startIndex*/public int getStartIndex() {return startIndex;}/*** 设置* @param startIndex*/public void setStartIndex(int startIndex) {this.startIndex = startIndex;}/*** 获取* @return endIndex*/public int getEndIndex() {return endIndex;}/*** 设置* @param endIndex*/public void setEndIndex(int endIndex) {this.endIndex = endIndex;}public String toString() {return "Block{max = " + max + ", startIndex = " + startIndex + ", endIndex = " + endIndex + "}";}
}

扩展的分块查找(无规律的数据)

package search;public class BlockSearchDemo2 {public static void main(String[] args) {//初步将其分块int[] arr = {27,22,30,40,36,13,19,16,20,7,10,43,50,48};Block2 b1 = new Block2(22,40,0,4);Block2 b2 = new Block2(13,20,5,8);Block2 b3 = new Block2(7,10,9,10);Block2 b4 = new Block2(43,50,11,13);//定义数组来管理Block2[] blocks = {b1,b2,b3,b4};//记录要查找的数据int number = 40;//调用方法传递索引表、数组、查询的元素int index = getIndex(blocks,arr,number);System.out.println(index);}private static int getIndex(Block2[] blocks, int[] arr, int number) {int indexBock = findIndexBock(blocks, number);if (indexBock==-1){//表示没有返回-1return -1;}//将对应块的起始索引和结束索引取出来int startIndex = blocks[indexBock].getStartIndex();int endIndex = blocks[indexBock].getEndIndex();//遍历到则存在for (int i = startIndex; i <= endIndex; i++) {if (arr[i]==number){return i;}}return -1;}//定义一个方法用来确认number的块public static int findIndexBock(Block2[] blocks,int number){//        由于分布没有顺序不能使用二分查找所以使用顺序查找for (int i = 0; i < blocks.length; i++) {if (blocks[i].getMax()>=number&&blocks[i].getMin()<=number){return i;}}return -1;}}
//定义一个类记录分块情况
class Block2{private int max;private int min;private int startIndex;private int endIndex;public Block2() {}public Block2( int min,int max, int startIndex, int endIndex) {this.max = max;this.min = min;this.startIndex = startIndex;this.endIndex = endIndex;}/*** 获取* @return max*/public int getMax() {return max;}/*** 设置* @param max*/public void setMax(int max) {this.max = max;}/*** 获取* @return min*/public int getMin() {return min;}/*** 设置* @param min*/public void setMin(int min) {this.min = min;}/*** 获取* @return startIndex*/public int getStartIndex() {return startIndex;}/*** 设置* @param startIndex*/public void setStartIndex(int startIndex) {this.startIndex = startIndex;}/*** 获取* @return endIndex*/public int getEndIndex() {return endIndex;}/*** 设置* @param endIndex*/public void setEndIndex(int endIndex) {this.endIndex = endIndex;}public String toString() {return "Block{max = " + max + ", min = " + min + ", startIndex = " + startIndex + ", endIndex = " + endIndex + "}";}
}

扩展的分块查找(查找过程中还需要添加数据)

排序算法

冒泡排序

package sort;public class BubbleDemo1 {public static void main(String[] args) {int[] arr = {2,4,5,3,1};int[] arr2 = bubble(arr);for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i]+" ");}}private static int[] bubble(int[] arr) {//表示执行多少轮for (int j = 0; j < arr.length-1; j++) {/*** 每一轮如何找到该轮的最大值* -1 表示 防止索引越界*  -j 提高效率,已经排序的位置不需要再比较*/for (int i = 0; i < arr.length -1-j; i++) {if (arr[i] > arr[i+1]){int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}}return arr;}
}

选择排序

package sort;public class SelectionDemo {public static void main(String[] args) {int[] arr = {2,10,5,3,1};int[] arr2 = selection(arr);for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i]+" ");}}private static int[] selection(int[] arr) {//使用0索引与后面比较for (int i = 0; i < arr.length-1; i++) {//int j = i+1减少不必要的比较提高效率for (int j = i+1; j < arr.length; j++) {if (arr[i]>arr[j]){int temp= arr[i];arr[i] = arr[j];arr[j] = temp;}}}return arr;}}

插入排序

交换位置时从后往前进行遍历,最终确定自己的位置。

package sort;public class InsertDemo {//插入排序public static void main(String[] args) {int[] arr = {1,5,10,3,20,7,40,54,4,6,23,47};int[] arr2 = inserta(arr);for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i]+" ");}}private static int[] inserta(int[] arr) {//快速排序//先确定无序的位置,无序的起始索引int start = -1;for (int i = 0; i < arr.length; i++) {if (arr[i]>arr[i+1]){start = i+1;break;}}for (int i = start; i < arr.length; i++) {//j 进行操作防止i 改变后导致程序无法运行int j = i;//当前一个数比当前的数大时两数交换位置,并将指针即j前移一位while (j>0&&arr[j]<arr[j-1]){int temp = arr[j];arr[j] = arr[j-1];arr[j-1]=temp;j--;}}return arr;}
}

快速排序
递归

注意

递归一定要有出口,否则就会内存溢出。

作用

练习

package sort;public class RecursionDemo2 {//求1-100的和public static void main(String[] args) {int n =100;int sun = sum1(100);System.out.println(sun);}private static int sum1(int i) {if (i==1){return 1;}return i+sum1(i-1);}
}
练习二

package sort;public class RecursionDemo3 {//求5的阶乘public static void main(String[] args) {int factorial = factorial(5);System.out.println(factorial);}private static int factorial(int i) {if (i==1){return 1;}return i*factorial(i-1);}
}
快速排序

package sort;public class QuickDemo {public static void main(String[] args) {//快速排序int[] arr = {7,4,2,8,5,9,12,35,45,98,34,76};quickSort(arr, 0, arr.length-1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}private static void quickSort(int[] arr, int i, int j) {//快排第一轮int start = i;int end = j;//设置递归的条件if(start>end){return;}int Benchmark = arr[i];while (start != end){//先寻找比基准数小的,用end记录下标while (true){if (end<=start||arr[end]<Benchmark){break;}end--;}//在寻找比基准数大的,用start记录下标while (true){if (end<=start||arr[start]>Benchmark){break;}start++;}//换位值int temp = arr[start];arr[start] = arr[end];arr[end] = temp;}int temp = arr[i];arr[i] = arr[end];arr[end] = temp;//开始进行递归调用quickSort(arr,i,start-1);quickSort(arr,start+1,j);}
}

排序总结

Arrays

arrays即操作数组的工具类。

方法

sort中的指定规则排序

package ArraysDemo;import java.util.Arrays;
import java.util.Comparator;public class ArraysDemo1 {public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7,8,9};System.out.println(Arrays.toString(arr));System.out.println(Arrays.binarySearch(arr, 4));System.out.println(Arrays.binarySearch(arr, 10));System.out.println(Arrays.binarySearch(arr, 0));System.out.println("=======================");int[] ints = Arrays.copyOf(arr, 4);System.out.println(Arrays.toString(ints));int[] ints1 = Arrays.copyOf(arr, 9);System.out.println(Arrays.toString(ints1));int[] ints2 = Arrays.copyOfRange(arr, 0, 9);System.out.println(Arrays.toString(ints2));System.out.println("=========================");//        Arrays.fill(arr,1);
//        System.out.println(Arrays.toString(arr));
//        Arrays.sort(arr,new Comparator<>());//o2-o1为降序排列,o1-o2为升序排列Integer[] arr2 = {1,2,3,4,5,6,7,8,9};Arrays.sort(arr2, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});System.out.println(Arrays.toString(arr2));}
}

Lambda表达式

试水

package LambdaDemo;import java.util.Arrays;
import java.util.Comparator;public class Demo1 {public static void main(String[] args) {Integer[] arr = {1,2,3,7,4,9,6};//        Arrays.sort(arr, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o1=o2;
//            }
//        });Arrays.sort(arr, (Integer o1, Integer o2) -> {return o1=o2;});System.out.println(Arrays.toString(arr));}
}

函数式编程

package LambdaDemo;public class Demo2 {public static void main(String[] args) {//正常情况method(new Swin() {@Overridepublic void swimming() {System.out.println("匿名内部类游泳~");}});//lambda表达式method(()->{System.out.println("lambda游泳~");});}public static void method(Swin swin){swin.swimming();}
}
interface Swin{public void swimming();
}

Lambda表达式的省略写法

核心思想:可推导,可省略。

package LambdaDemo;import java.util.Arrays;
import java.util.Comparator;public class Demo3 {public static void main(String[] args) {//正常情况method(new Swin1() {@Overridepublic void swimming() {System.out.println("匿名内部类游泳~");}});//lambda表达式method(()->{System.out.println("lambda游泳~");});//进行省略写法method(()-> System.out.println("lambda游泳省略写法~"));//多个形参的案例Integer[] arr2 = {1,2,3,4,5,6,7,8,9};//形参类型相同可以推导出来,省略//将大括号,return、分号一起省略。Arrays.sort(arr2, (o1,o2) -> o2-o1);System.out.println(Arrays.toString(arr2));}public static void method(Swin1 swin){swin.swimming();}
}
interface Swin1{public void swimming();
}

练习一:Lambda表达式简化Comparator接口的匿名形式

package LambdaDemo;import java.util.Arrays;
import java.util.Comparator;public class Demo4 {public static void main(String[] args) {String[] arr ={"aa","a","aaaa","aaa"};Arrays.sort(arr,( o1,o2) ->o1.length()-o2.length());System.out.println(Arrays.toString(arr));}
}

综合练习

练习一:按要求排序

package Test.Test1;import java.util.Arrays;
import java.util.Comparator;public class Test1 {public static void main(String[] args) {//创建几个对象Person p1 = new Person("xiaoli",20,175);Person p2 = new Person("aiaoli",20,175);Person p3 = new Person("biaoli",19,172);Person p4 = new Person("ciaoli",22,168);Person p5 = new Person("diaoli",20,168);Person p6 = new Person("eiaoli",20,165);Person p7 = new Person("fiaoli",20,175);//定义数组进行存储Person[] arr={p1,p2,p3,p4,p5,p6,p7};//进行排序//匿名内部类写法
//        Arrays.sort(arr, new Comparator<Person>() {
//            @Override
//            public int compare(Person o1, Person o2) {
//                //o1为要加入的
//                if (o1.getAge()>o2.getAge()){
//                    return 1;
//                } else if (o1.getAge()<o2.getAge()) {
//                    return -1;
//                }else {
//                    //年龄一样,按身高排序
//                    if (o1.getHight()>o2.getHight()){
//                        return 1;
//                    } else if (o1.getHight()<o2.getHight()) {
//                        return -1;
//                    }else {
//                        //按姓名的字母排序
//                        //获取姓名的首字母char o1n = o1.getName().charAt(0);char o2n = o2.getName().charAt(0);
//                        //可以使用字符串的比较方法来比较
//                      return o1.getName().compareTo(o2.getName());if (o1n>o2n){return 1;} else if (o1n<o2n) {return -1;}
//                    }
//
//                }
//            }
//        });//Lambda表达式写法Arrays.sort(arr, (o1,o2) ->{//o1为要加入的if (o1.getAge()>o2.getAge()){return 1;} else if (o1.getAge()<o2.getAge()) {return -1;}else {//年龄一样,按身高排序if (o1.getHight()>o2.getHight()){return 1;} else if (o1.getHight()<o2.getHight()) {return -1;}else {//按姓名的字母排序//可以使用字符串的比较方法来比较return o1.getName().compareTo(o2.getName());}}});//将数组转为字符串进行输出System.out.println(Arrays.toString(arr));}
}

实现方法二(教学的教简单):

package Test.Test1;import java.util.Arrays;
import java.util.Comparator;public class Test2 {public static void main(String[] args) {//创建几个对象Person p1 = new Person("xiaoli",20,175);Person p2 = new Person("aiaoli",20,175);Person p3 = new Person("biaoli",19,172);Person p4 = new Person("ciaoli",22,168);Person p5 = new Person("diaoli",20,168);Person p6 = new Person("eiaoli",20,165);Person p7 = new Person("fiaoli",20,175);//定义数组进行存储Person[] arr={p1,p2,p3,p4,p5,p6,p7};//进行排序//匿名内部类写法
//        Arrays.sort(arr, new Comparator<Person>() {
//            @Override
//            public int compare(Person o1, Person o2) {
//                //比较年龄
//                double temp = o1.getAge()-o2.getAge();
//                //年龄相对,比较身高
//                temp = temp == 0? o1.getHight()-o2.getHight():temp;
//                //身高相等,比较姓名
//                temp = temp == 0? o1.getName().compareTo(o2.getName()):temp;
//                
//                //由于返回值类型为int所以进行判断
//                
//                if (temp<0){
//                    return -1;
//                } else if (temp>0) {
//                    return 1;
//                }else {
//                    return 0;
//                }
//            }
//        });//Lambda表达式写法Arrays.sort(arr, (o1,o2) -> {//比较年龄double temp = o1.getAge()-o2.getAge();//年龄相对,比较身高temp = temp == 0? o1.getHight()-o2.getHight():temp;//身高相等,比较姓名temp = temp == 0? o1.getName().compareTo(o2.getName()):temp;//由于返回值类型为int所以进行判断if (temp<0){return -1;} else if (temp>0) {return 1;}else {return 0;}});//将数组转为字符串进行输出System.out.println(Arrays.toString(arr));}
}

练习二:不死神兔

从第三个月开始这个月的数量都是前两个月的合。

package Test.Test2;public class Test {public static void main(String[] args) {//从第三个数据开始每个数据都是前两个数据之和//解法一:使用数组
//        int[] arr = new int[12];
//        arr[0]=1;
//        arr[1]=1;
//        for (int i = 2; i < arr.length; i++) {
//            arr[i] = arr[i-1]+arr[i-2];
//        }
//        System.out.println(arr[11]);//方法二:使用递归System.out.println(fi(12));}public static int fi(int n){if (n==1||n==2){return 1;}else {return fi(n-1)+fi(n-2);}}}

练习三:猴子吃桃子

package Test.Test3;public class Test3 {public static void main(String[] args) {System.out.println(fi(1));}public static int fi(int n){//进行校验if (n>=11||n<=0){return -1;}if (n==10){return 1;}else {return (fi(n+1)+1)*2;}}
}

练习四:爬楼梯

package Test.Test4;//可以看做斐波那契数列public class Test {public static void main(String[] args) {int fn = Fn(7);//21int fn1 = Fn(20);//10946System.out.println(fn);System.out.println(fn1);}public static int Fn(int n){if (n==1){return 1;}if (n==2){return 2;}return (Fn(n-1))+(Fn(n-2));}
}

课堂练习:可以一次爬三个台阶

package Test.Test4;public class Test {public static void main(String[] args) {int fn = Fn(7);//44int fn1 = Fn(20);//121415System.out.println(fn);System.out.println(fn1);}public static int Fn(int n){if (n==1){return 1;}if (n==2){return 2;}if (n==3){return 4;}return (Fn(n-1))+(Fn(n-2)+Fn(n-3));}
}

相关文章:

Javase复习day21算法、arrays、Lamdba表达式

常见算法 查找算法 基本查找 package search;public class BasicSearchDemo1 {public static void main(String[] args) {//基本算法&#xff08;顺序查找&#xff09;int[] arr {131,23,57,37,95,48,57,43};System.out.println(basicSearch(arr, 43));}public static boo…...

移动硬盘无法读取?别慌!这些方法助你恢复数据!

在我们的日常工作和生活中&#xff0c;移动硬盘作为重要的数据存储工具&#xff0c;承载着珍贵资料。然而&#xff0c;移动硬盘无法被电脑读取的情况时有发生&#xff0c;令人焦急。别慌&#xff0c;下面为大家详细介绍恢复移动硬盘数据的有效方法。 一、检查硬件连接和驱动问题…...

Java集合面试(上)

Java集合面试(上) 集合概述 Java 集合&#xff0c;也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对 说说List&#xff0c;Set,Queue&#…...

Python画笔案例-046 绘制小红伞

1、绘制小红伞 通过 python 的turtle 库绘制 小红伞&#xff0c;如下图&#xff1a; 2、实现代码 绘制 小红伞&#xff0c;以下为实现代码&#xff1a; """小红伞.py """ import turtledef draw_pattern():"""画填充圆弧"&…...

使用 .NET 6 构建跨平台 Worker Service 服务:跨越平台的 C# 服务开发——解决Windows服务跨平台问题

现代软件开发中&#xff0c;构建跨平台的应用程序变得愈加重要。C# 和 .NET 6 的出现使得在 Windows、Linux 和 macOS 上创建背景服务变得简单而高效。在本指南中&#xff0c;我们将通过创建一个使用 .NET 6 的 Worker Service 来展示如何实现跨平台后台服务。 项目概述 我们…...

terminator-gnome

gnome import os#启动节点指令变量 stere"ros2 launch stereo_c start.py" utils"ros2 launch task utils.launch.py" #tab标题 stere_title"stere_driver" utils_title"utils"#一个终端界面打开5个tab cmd1f"gnome-terminal --…...

7.测试用例设计方法 + Bug

一、正交实验法 1.使用场景 因果关系比较庞大的情况下&#xff0c;不太适合用因果图判定表&#xff0c;在这种情况下&#xff0c;一般会采用正交实验法。 2.例子&#xff1a; 字符属性设置&#xff08;4个条件&#xff09; 字体很多 字符样式很多 …...

uniapp小程序,使用腾讯地图获取定位

本篇文章分享一下在实际开发小程序时遇到的需要获取用户当前位置的问题&#xff0c;在小程序开发过程中经常使用到获取定位功能。uniapp官方也提供了相应的API供我们使用。 官网地址&#xff1a;uni.getLocation(OBJECT)) 官网获取位置的详细介绍这里就不再讲述了&#xff0c;大…...

Reactive 编程-Project Reactor

Reactive 编程与 Project Reactor Reactive 编程是一种编程范式&#xff0c;主要用于处理异步数据流。它旨在通过声明式的编程方式处理事件驱动的非阻塞任务&#xff0c;特别适合于构建响应式、可扩展、高并发的应用。随着互联网应用规模的扩大和响应速度的提升需求&#xff0…...

splice用法

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

Redis - 缓存

文章目录 目录 文章目录 1. 什么是缓存&#xff1f; 2. 使用Redis作为缓存 2.1 关系型数据库的缺点 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 缓存淘汰策略 4. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 缓存预热 缓存穿透 缓存雪崩 缓存击穿 总结 1. 什么…...

基于SpringBoot+Vue的养老院管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…...

多线程爬虫接入代理IP:高效数据抓取的秘诀

在现代网络环境中&#xff0c;爬虫已经成为获取信息的利器。然而&#xff0c;随着网站反爬措施的不断升级&#xff0c;单线程爬虫往往无法满足需求。多线程爬虫与代理IP的结合&#xff0c;不仅能提高效率&#xff0c;还能有效规避IP封禁问题。本文将详细探讨多线程爬虫接入代理…...

[网络][CISCO]Cisco-PIX配置详解

Cisco PIX防火墙配置指南 任何企业安全策略的一个主要部分都是实现和维护防火墙&#xff0c;因此防火墙在网络安全的实现当中扮演着重要的角色。防火墙通常位于企业网络的边缘&#xff0c;使内部网络与Internet之间或与其他外部网络互相隔离&#xff0c;并限制网络互访&#x…...

拒绝千篇一律,AI帮你定制独一无二的个人写真

每个女人都渴望展现最美的自己&#xff0c;你是否厌倦了拍出千篇一律的照片&#xff1f;今天&#xff0c;我要告诉你一个秘密&#xff0c;用简单三步&#xff0c;即可打造属于你的独一无二个人写真&#xff01;文生图、蒙版换脸、图生图&#xff0c;三步化身超级模特&#xff0…...

在云服务器上安装 RabbitMQ:从零到一的最佳实践

&#x1f6e0; 1. RabbitMQ 简介 RabbitMQ 是一个开源的消息代理中间件&#xff0c;广泛应用于高并发、异步任务队列的场景中。在分布式系统架构中&#xff0c;RabbitMQ 可以充当消息的中转站&#xff0c;帮助不同服务之间进行高效的消息通信。 在这篇文章中&#xff0c;我们…...

【nginx】搭配okhttp 配置反向代理

nginx的默认是一个反向代理。 nginx会默认把输入的请求,转向其他的服务器执行。 这些转向的服务器与客户端发起的服务器不是同一个。 客户端只认识nginx,不知道ngiix转向何方。 正向代理修改okhttp的proxy,实际上很多代理都是正向的。 反向代理修改请求路径到nginx。 感觉还…...

Android V 广播注册和配置注意事项问题

现象 在Android V平台上&#xff0c;应用注册非Protected广播时&#xff0c;如果没有加导出flag会抛出异常导致进程crash。 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.SecurityException: com.demo.myapplication: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORT…...

深入解读Docker核心原理:Namespace资源隔离机制详解

在容器技术中&#xff0c;资源隔离 是容器化能够实现轻量级虚拟化的关键技术之一。通过资源隔离&#xff0c;容器可以拥有自己的独立环境&#xff0c;确保容器之间互不干扰&#xff0c;从而实现应用的安全和稳定。Docker作为主流的容器平台&#xff0c;其核心的资源隔离机制依赖…...

学习通、智慧职教刷课脚本

&#x1f410;个人主页 可惜已不在 &#x1f40b;可以分享给身边有需要的人&#x1f436; &#x1f409;有用的话就留下一个三连吧&#x1f63c; 目录 一.安装 脚本运行器 篡改猴 - Microsoft Edge Addons 二.安装脚本 三.扩展 一.安装 脚本运行器 安装浏览器 Microsoft E…...

SEO写作:从实战到精进的全方位指南

在数字化浪潮中&#xff0c;SEO不再是简单的关键词堆砌&#xff0c;而是成为企业品牌建设与市场拓展的核心策略。作为一名深耕SEO领域的实践者&#xff0c;我深知其中的门道与奥秘。今天&#xff0c;我将结合过往实战经验&#xff0c;以独特视角&#xff0c;带你一窥SEO写作的精…...

解决 git 不是内部或外部命令,也不是可运行的程序

目录 报错提示&#xff1a; 一、解决办法 1、从git官网下载windows版本的git 2、安装 3、注意事项 二、报错 1、解决 fatal: Not a git repository (or any of the parent directories): .git 问题 报错提示&#xff1a; 一、解决办法 Windows下配置Git&#xff1a; 1…...

【卷起来】VUE3.0教程-07-异步请求处理(springboot后端)

&#x1f332; 服务端接口准备 pom文件&#xff0c;引入mybatis/mybatis-plus相关依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>&…...

初一信息科技2024指南辅助教学软件(抓包软件)

专门针对信息科技20204指南写的程序&#xff0c;互联网和直播等知识中包含tcp/ip和udp&#xff0c;三次握手等原理&#xff0c;需要简单明了的实验来说明&#xff0c;在机房中需要用抓包软件&#xff0c;可能需要安装windump npcap等软件非常繁琐&#xff0c;还需要接触保护卡&…...

上汽大众:存储成本节约85%,查询性能提升5倍|OceanBase案例

近日&#xff0c;上汽大众汽车有限公司&#xff08;简称“上汽大众”&#xff09;的积分卡券等关键业务系统&#xff0c;已成功升级至 OB Cloud 云数据库。借助 OceanBase 原生分布式数据库的卓越性能与先进技术&#xff0c;实现了存储成本的大幅降低&#xff0c;高达85%&#…...

如何快准稳 实现MySQL大表历史数据迁移?

历史迁移解决方案以微服务架构为基础&#xff0c;使用多种设计模式&#xff0c;如&#xff1a;单例、桥接、工厂、模板、策略等。其中涉及的核心技术有多线程、过滤器等&#xff0c;致力于解决MySQL大表迁移的问题&#xff0c;提供多种迁移模式&#xff0c;如&#xff1a;库到库…...

C和指针:函数

函数定义 函数体就是一个代码块&#xff0c;它在函数被调用时执行。 类型 函数名(形式参数) 代码块 与函数定义相反&#xff0c;函数声明出现在函数被调用的地方。 函数声明 编译器是如何知道该函数期望接受的是什么类型和多少数量的参数。 原型 int *find_int( int key…...

Linux——分离部署,分化压力

PQS/TPS 每秒请求数/ 每秒事务数 // 流量衡量参数 可以根据预估QPS 和 服务器的支持的最高QPS 对照计算 就可以得出 需要上架的服务器的最小数量 PV 页面浏览数 UV 独立用户访问量 // 对于网站的总体访问量 response time 响应时间 // 每个请求的响应时间…...

javaaaa

1 飞机票 代码实现&#xff1a; import java.util.Scanner; public class F1 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print("请输入票价&#xff1a; ");double jia input.nextDouble();System.out.print(&…...

游戏开发引擎___unity位置信息和unlit shader(无光照着色器)的使用,以桌子的渲染为例

unity是左手坐标系 1.位置信息 1.1 代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class positionTest : MonoBehaviour {public Camera Camera;private void OnGUI(){//世界坐标系&#xff0c;GUI里的标签GUI.Label(new Rec…...