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

Java的进阶学习

注解

        Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制,可以用在类、方法、变量、参数成员上,在编译期间,会被编译到字节码文件中,运行时通过反射机制获得注解内容进行解析。

内置注解

Java语言已经定义的注解。

例如:

@Override:检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没该方法会直接报编译错误。

@Deprecated:标记过时方法。如果使用该方法,会报编译警告。

@SuppressWarnings:指示编译器去忽略注解中声明的警告。

@FunctionalInterface:用于指示被修饰的接口是函数式接口

元注解

注解的注释

 元注解是java API提供的,是用于修饰注解的注解,通常用在注解的定义上。

@Retention - 标识这个注解怎么保存,是只在代码中,还是编入 class 文件中,定义注解在什么时候生效。

或者是在运行时可以通过反射访问。

@Documented - 标记这些注解是否包含在用户文档中。

@Target - 标记这个注解应该是哪种 Java 成员。

@Inherited - 标记这个注解是继承于哪个注解类(默认注解并没有继承于任何子类)

@Repeatable - 标识某注解可以在同一个声明上使用多次。

对象克隆

        对象克隆,从已有的对象克隆出来一个新的对象,新的对象可以拥有已有的对象中的数据。

        克隆对象时,基本数据类型可以直接把值克隆到新的对象中,深浅克隆的判断依据最主要是关联的其他对象是否被新克隆出一个对象来。

如何实现克隆

1、浅克隆

        克隆一个对象只把关联对象的地址克隆了一下,并没又创建新的关联对象。

一种方式:实现Cloneable接口重写clone()方法

public class Person implements  Cloneable{/*** * 重写object类中的clone* @return* @throws CloneNotSupportedException*/@Overrideprotected Person clone() throws CloneNotSupportedException {Person person = (Person)super.clone();return person;}
}

2、深克隆

        克隆对象,把关联的对象也进行克隆,克隆出一个新的关联对象。

两种克隆方式:

1、关联的对象也要实现Cloneable接口,重写clone()方法,不管多少级,只要需要深克隆那么就需要多少级克隆。

2、对象序列化和反序列化

对象序列化:将对象信息输出

对象反序列化:将输出的对象信息,重新输入,创建新的对象

public Person myclone() {Person person = null;try { // 将该对象序列化成流,因为写在流里的是对象的一个拷贝,而原对象仍然存在于JVM里面。所以利用这个特性可以实现对象的深拷贝ByteArrayOutputStream baos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(baos);oos.writeObject(this);// 将流序列化成对象ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());ObjectInputStream ois = new ObjectInputStream(bais);person = (Person) ois.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return person;}

在这里总结Object中的方法:

equals():==比较地址,但是一般类中都重写了该方法,用来比较对象内容是否相等。

 toString()、hashCode()获得对象内存,一般类进行了重写,用来获得对象内容计算出的哈希值、wait()、notify()、notifyAll()、getClass()、clone()、finalize()对象被回收前只调用一次。

设计模式

什么是设计模式:

        最早的设计模式是建筑领域的,后来发展到软件开发领域。

        广大的开发前辈们,在实际的开发中把重复出现的问题的解决方案进行优化。最终得到一套最优的解决方案可以拿来反复使用。

学习设计模式的原因

1、可以提高程序员的思维能力,编程能力和设计能力。

2、使程序设计更加标准,是软件开发效率大大提升。

3、使设计的代码可重复性提高、可读性强、可靠性高、灵活性好、可维护性强。

建模语言

统一建模语言(UML)是一种软件设计阶段思路的语言,使用类图的方式,将类与类之间的关系进行描述。

类图:类和接口关系。

类与类的关系

1、依赖关系

在一个类中的方法中使用到了另一个类。例如把另一个类当作参数传入,具有临时性,关系较弱,方法执行完之后,就关系解除。

2、关联关系

在一个类中把另一个类当作自己的成员。例如人类类(Person)中关联一个地址类(Address)

关联关系可以根据强弱关系分为:一般关联、聚合、组合。

聚合:就像学校和老师,学校不存在了,老师可以独立的存在

组合:头和嘴,如果头不存在了,嘴也没有存在的意义

3、继承关系

类之间的继承关系

4、实现关系

类和接口的关系

面向对象设计原则

        在面向对象的设计过程中,首先需要考虑的是如何提高一个软件系统的可维护性和可复用性。这时,遵从面向对象的设计原则,可以在进行设计方案是减少错误设计的产生,从不同的角度提升一个软件结构的设计水平。

1、单一职责原则

        一个类只负责一件事情,不要让类做过多的事情,否则类内部的功能耦合度太高,修改一些功能时,会互相影响。

2、开闭原则

        在程序扩展新的功能时,尽量不要修改原有的代码,尽可能扩展新的类来实现功能,对外扩展开放,对内修改封闭

3、依赖倒置原则

        上层不应该依赖细节(实现),上层应该是抽象的,进行功能上的定义即可,变动小,底层应该依赖于抽象,底层在抽象的指导下进行细节上的具体功能实现,上层是抽象的,底层是实现的细节

降低了类与类之间的耦合度。

4、接口隔离原则

        不要把所有的功能定义到一个接口中,应该使用多个接口,把不同的功能定义在不同的接口中

5、组合/聚合复用原则

        优先考虑使用组合/聚合(关联),实现代码的复用,其次考虑继承。

例如:在类B中想使用类A中的某一功能,可以使用继承,但是类的耦合度高,所有可以使用关联关系代替继承,也可以使用更弱的依赖关系实现。

6、里氏替换原则

        在使用继承时,如果父类中的方法是非抽象的,那么子类继承父类后,对父类非抽象方法进行重写时需要注意小心,在使用父类的时候,如果换成子类对象,由于子类重写了父类的方法,从而导致有可能实现不同,导致结构不同。

在实际的开放中,父类中的方法尽可能定义为抽象的

7、迪米特原则

        自己和朋友交谈,不和陌生人说话,两个类之间如果没有直接关系,那么就不要互相调用,可以通过一个第三方调用。

例如:明星和粉丝,公司直接的交流,可以通过经纪人来完成。

面向对象的设计模式

设计模式一共有23种,分为三大类。下面对常见的设计模式进行介绍

1、创建型模式

1、单例模式:

        一个类在一个项目中只能创建一个对象

JDK中的源码Runtime类就是一个单例类,利用Runtime类可以启动新的进程或进行相关运行环境的操作。比如:取得内存空间以及释放垃圾空间。

Runtime类属于典型的单例设计

单例模式有两种写法:

1、饿汉式(急切式)单例

在类加载时直接把单例对象创建好,调用方法时就已经创建了的对象即可,不存在线程安全问题,只是在类加载之处可能还用不到,但是就已经创建出来,生命周期长。

2、懒汉式单例

在类加载时不着急创捷对象,在第一次调用方法时创建唯一的对象,这种写法存在线程安全问题。

懒汉式单例双重检索+volatile

volatile是为了解决乱序性,禁止指令重排序。

private volatile static Window window=null;
/**
Window window= new Window();
这行代码,从指令上来讲,可以有三条指令
1.new 申请内存空间
2.初始化对象
3.把对象地址赋给左边的变量,如果正常按这个顺序执行是没有问题的,但是在执行第二步的过程中把第三步提前行了,第二步还有可能没有初始化完成。其他线程可能会拿到没有初始化完成的对象。
所以单例成员需要使用volatile修饰,禁止指令的 重排序。
*/
public  static Window getInstance(){if(window==null){synchronized (Window.class){if(window==null){window = new Window();}}}return window;
}
2、 工厂模式

        把对象的创建和使用分离,提供一个工厂类,专门负责对象的创建,一个工厂可以创建一类的产品。

简单工厂模式:

        简单工厂并不是 23 种设计模式之一,只是对工厂模式的引入。

角色分类:

1、工厂角色

2、抽象产品(接口/抽象类):用来组织关系的 

3、具体产品角色:需要继承或实现抽象产品

客户端-->工厂-->对象

简单工厂违背了开闭原则,在增加一个新的产品时需要修改工厂代码

工厂方法模式:

        首先将工厂也进行了抽象,一个抽象工厂负责生产一类产品,定义规则,为每一种具体的产品都提供一专门的工厂负责生产。

        这样的好处是:添加产品时,不需要修改原来的工厂,直接扩展一个新的工厂即可。遵守了开闭原则。

        工厂方法中,一个工厂只负责一类产品,但是产品增多了以后,会增加代码量(弊端)

角色:

抽象工厂角色

具体工厂角色

抽象产品角色

具体产品角色

3、抽象工厂

        抽象工厂模式中,工厂不在负责单一的产品生产,而是工厂可以生产同一家公司的产品,在一个工厂中可以可以生产同一家公司的多个产品,这样的话就不需要太多冗余的工厂类。

3、原型模式

        如果我们需要创建多个对象时,每次new+构造方法执行速度太慢(构造方法中的逻辑每次都执行一次),那么我们就可以先创建一个对象,在已有的对象基础上方进行对象克隆(复制),提高创建对象的效率。

例如:

手写5分简历,太浪费时间,写好一份,复印4次,就可以得到多个,效率高在这里我们就要提到克隆对象深浅克隆

2、结构型模式

1、代理模式

        案例:汽车厂只管造汽车,不直接把汽车出售给客户,而是通过4s店进行出售,4s就是这个代理商。代理商就可以在中间向客户介绍汽车信息,买完汽车之后,还可以帮助客户办理手续。

代理模式:为目标对象提供一个代理对象不让目标对象直接与客户进行交互,而是通过代理对象。

代理商在中间增加了一些额外的功能

好处:

1、代理对象可以为目标对象提供保护

2、代理对象可以为目标提供扩展功能

3、代理对象可以将客户端与目标对象分离,在一定的程度上,降低了系统的耦合度。

代码结构:

抽象主题类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。

真实主题类:目标对象,实现了抽象主题中的具体业务,是代理对象 所代表的真实对象,是最终要引用的对象。

代理类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。

代理类又分为静态代理和动态代理

静态代理:

        在一些简单场景下可以使用,因为一个代理类只能为那些实现某个接口的目标类代理。

        如果为实现了其他的接口的目标类代理就必须重新创建一个新的代理类,在复杂的场景下就不太适合了。

优点:可以做到在符合开闭原则的情况下对目标对象进行功能扩展。

缺点:一个代理类只能代理一个接口,工作量太大,代理类是运行前编码已 经完成的;必须先有接口,再有代理;接口一旦发生变量,代理类也要修改。

动态代理:

        可以在运行时,根据不同的类生产不同类的代理对象,可以为所有的任意类创建代理对象。

动态代理又可以分为:jdk代理和Cglib代理

jdk代理:

        是通过Java的反射机制实现的,在运行时可以动态的获得目标类的接口中的方法信息,从而为目标类生产代理对象。

        只要写一个代理对象生产器,就可以为所有的类生产代理对象,但是jdk实现代理时,目标类必须要实现一个接口

Cgilb代理:

        是spring中的一种实现,使用cglib代理方式,目标类可以不用实现接口。

        采用底层的字节码生产技术,为我们的目标类生产子类对象,采用方法拦截技术,在调用方法时,会进入到拦截中,获得所调用的方法

        目标类不能是final修饰的类,目标类中的方法如果为final/static修饰的也不能增强。

spring中两种动态代理都进行的实现,可以根据不同的情况进行自动的选择:

1、单例对象,没有实现接口的类,可以实现cglib

2、原型对象(创建多个对象)实现接口的类,可以使用jdk代理

3、行为模式

1、模板方法模式:

        jdbcTemplate执行sql时,步骤也是固定的:1.连接数据库,2.发生sql,3.提交事务,关闭连接

        是在一个类中,定义好一个算法骨架,设定好实现步骤,把一些公共的通用的在父类中实现,然后将一些不确定的实现在具体的子类中实现。

使用时,创建子类对象调用模板方法

代码结构;

抽象类:也就是父类,具体方法由子类实现,其他固定的步骤有抽象类完成。

模板方法:定义好执行的顺序,确定好执行的流程顺序。

抽象方法:不确定的功能交给子类实现。

具体方法:都有一样的公共的通用的方法,在抽象父类中实现。

/*** 抽象类,负责给出一个算法的轮廓和骨架,有有一个模板方法和若干个基本方法构成(抽象方法和固定执行的方法)* 抽象方法有子类去实现具体的业务*/
public abstract class AbstractBank {//办理业务方法 -- 模板方法public void handle(){this.offerNumber();this.lineup();this.business();this.score();}//抽号public void offerNumber(){System.out.println("抽号");}//排队public void lineup(){System.out.println("排队");}//办理具体业务--抽象方法,由具体子类实现public abstract void business();//评分public void score(){System.out.println("评分");}
}

具体子类:实现抽象类中的抽象方法的类,有不同的实现方式,就可以有多个子类。

        new具体的子类对象,用具体的子类对象调用父类的模板方法,把父类中的具体方法与自己实现的抽象方法一起执行。

场景:适合流程相对比较固定的,其中有变化方法交给子类实现。

2、策略模式 

将不同的实现算法进行封装, 将功能的实现与使用相分离,在使用时,可以用不同的策略实现类进行替换。

代码结构:

抽象策略类:给出具体策略类的接口

具体策略类:实现抽象策略类的接口,提供具体的行为。

环境类:持有一个具体策略类的引用,最终给客户端调用。

相关文章:

Java的进阶学习

注解 Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制,可以用在类、方法、变量、参数成员上,在编译期间,会被编译到字节码文件中,运行时通过反射机制获得注解内容进行解析。 内置注解 Java语言已经定…...

从零开始学习SLAM|技术路线

概念 视觉SLAM(Simultaneous Localization and Mapping)系统中,整个过程通常分为 前端 和 后端 两个主要部分。前端处理的是从传感器数据(如相机图像、激光雷达等)中提取和处理信息,用于实时定位和建图&am…...

vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)

一、效果 完成效果,增加顶部导航栏,右侧用户信息(其中个人中心需要后续进行页面开发,这里只写了退出登录功能),以及全屏功能 二、搭建并引入右侧组件 将右侧内容封装到单独的组件,直接引入(像左侧导航条等内容也是可以做成这种形式) 1、新建右侧组件的页面 在layout中…...

车载客流记录仪简介

一、产品概述 车载客流记录仪技术是采用智能视频分析算法,通过人体形态特征(头部和肩部)及上下车的运动规律研判,在设定区域内分析出上下车人数数量,实现相关人数数据的统计和记录。能够为公共交通企业、公共交通管理…...

2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发

2025新版懒人精灵零基础安装调试lua基础UI设计交互常用方法封装项目实战项目打包安装板块-视频教程(初学者必修课) 1.懒人精灵核心API基础和lua基础视频教程:https://www.bilibili.com/video/BV1Vm9kYJEfM/ 其它板块教程(包含:对接AI、实战、插件、UI、…...

从 Java 到 Kotlin:在现有项目中迁移的最佳实践!

全文目录: 开篇语 1. 为什么选择 Kotlin?1.1 Kotlin 与 Java 的兼容性1.2 Kotlin 的优势1.3 Kotlin 的挑战 2. Kotlin 迁移最佳实践2.1 渐进式迁移2.1.1 步骤一:将 Kotlin 集成到现有的构建工具中2.1.2 步骤二:逐步迁移2.1.3 步骤…...

矩阵运营的限流问题本质上是平台与创作者之间的流量博弈

矩阵运营的限流问题本质上是平台与创作者之间的流量博弈,要系统性解决这一问题,需从技术规避、内容优化、运营策略三个维度构建防御体系。以下结合平台算法逻辑与实战案例,深度解析限流成因及破解之道: 一、技术层:突…...

一种Spark程序运行指标的采集与任务诊断实现方式

一种Spark程序运行指标的采集与任务诊断实现方式 编写时间:2023年8月2日 第一次校准时间:2023年8月2日 文章目录 一种Spark程序运行指标的采集与任务诊断实现方式数据链路采集器的类图CustomSparkListener采集的指标task相关stage相关Job相关Executors相关诊断诊断分类调度阶…...

Gazebo 仿真环境系列教程(一):环境安装与基础使用

文章目录 一、版本说明与技术背景1.1 Gazebo 版本分支1.2 版本选择建议 二、系统环境准备2.1 硬件要求2.2 软件依赖 三、Gazebo Garden 安装流程3.1 添加官方软件源3.2 执行安装命令3.3 环境验证 四、Gazebo Classic 安装方法4.1 添加软件仓库4.2 安装核心组件4.3 验证安装 五、…...

Nginx 中间件

Nginx(发音为 "engine-x")是一款开源的高性能 HTTP 服务器和反向代理服务器,最初由 Igor Sysoev 开发。 它以其高性能、稳定性、丰富的功能集和低资源消耗而闻名,广泛应用于全球的 Web 服务架构中。 作为中间件&#…...

记录学习的第三十一天

今天只做了一道每日一题。 说实话,根本不会做呀,该怎么办? 以下是我看了题解之后的思路(适合新手): 1.首先肯定是要求出整个数组的不同数字有多少个的使用set来操作 2.右指针开始进入窗口,把元素放进哈希…...

Framework.jar里的类无法通过Class.forName反射某个类的问题排查

1,背景 我们想要在system_server进程里扩展一些我们自己的功能。 考虑到解耦和编译依赖的问题,我们用PRODUCT_SYSTEM_SERVER_JARS预置我们的类,然后用反射jar里面的类的方式来实现代码引用。 2,遇到的问题 在SystemServer.jav…...

架构-信息安全技术基础知识

一、信息安全基础 1. 信息安全的5个基本要素(重点) 机密性:确保信息不泄露给未授权的人或程序。 ▶ 举例:银行用户的账户密码必须保密,防止黑客窃取。完整性:保证信息不被非法修改,保持准确和…...

项目班——0419——chrono时间库

1、写日志需要时间库 C11时间库chrono源自于boost 1.时间间隔 duration 2.时间点 timepoint 3.时钟 clock 系统时钟system_clock,稳定时钟steady_clock,高精度时钟high_resolution_clock 例子 1、休眠100毫秒 2、输出当前时间 获取当前时间戳 s…...

Unity后处理全解析:从入门到优化

在游戏开发的世界里,Unity作为一款强大的游戏引擎,为开发者们提供了丰富的功能和工具。其中,后处理(Post-Processing)技术是提升游戏画面质量和视觉效果的重要手段之一。今天,我们就来深入探讨一下Unity后处理的相关内容,包括基本概念、使用说明、常见效果、优化技巧以及…...

得物业务参数配置中心架构综述

一、背景 现状与痛点 在目前互联网飞速发展的今天,企业对用人的要求越来越高,尤其是后端的开发同学大部分精力都要投入在对复杂需求的处理,以及代码架构,稳定性的工作中,在对比下,简单且重复的CRUD就显得…...

针对密码学的 EM 侧信道攻击

基于电磁的侧信道攻击是非侵入式的,这意味着攻击者无需物理接触设备即可窃取信息。我们将了解这些电磁侧信道攻击的工作原理。 我们之前介绍了侧信道攻击的概念:它们是什么,以及为什么它们会成为重大的硬件安全威胁。在众多形式的侧信道攻击中,最强大的一种是电磁 (EM) 攻…...

el-setup- 修改样式(vue3)

一 第一步 <template><el-steps :active"activeStep" align-center><el-stepv-for"item in stepData":key"item.value":class"{ currentStep: activeStep item.value }"><template #icon><div class"…...

CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.8 排序算法

文章目录 1. 排序算法1.1 冒泡排序&#xff08;Bubble sort&#xff09;1.2 归并排序&#xff08;Merge Sort&#xff09;1.3 快速排序&#xff08;Quick Sort&#xff09;1.4 堆排序&#xff08;Heap Sort&#xff09; 2. 在面向对象编程中终身学习2.1 记录和反思学习过程2.2 …...

【低配置电脑预训练minimind的实践】

低配置电脑预训练minimind的实践 概要 minimind是一个轻量级的LLM大语言模型&#xff0c;项目的初衷是拉低LLM的学习门槛&#xff0c;让每个人都能从理解每一行代码开始&#xff0c; 从零开始亲手训练一个极小的语言模型。对于很多初学者而言&#xff0c;电脑配置仅能够满足日…...

flutter 小知识

FractionallySizedBox组件 ‌FractionallySizedBox‌是Flutter中的一个特殊布局小部件&#xff0c;它允许子组件的尺寸基于父组件的尺寸来计算。这意味着子组件的尺寸是父组件尺寸的一个比例&#xff0c;这使得布局在不同屏幕尺寸下保持一致性‌1。 ListWheelScrollView ‌Lis…...

高性能服务器配置经验指南3——安装服务器可能遇到的问题及解决方法

文章目录 1、重装系统后VScode远程连接失败问题2、XRDP连接黑屏问题1. 打开文件2. 添加配置3. 重启xrdp服务 在完成 服务器基本配置和 深度学习环境准备后&#xff0c;大家应该就可以正常使用服务器了&#xff0c;推荐使用VScode远程连接使用&#xff0c;比较稳定方便&#x…...

Vue实战(08)解决 Vue 项目中路径别名 `@` 在 IDE 中报错无法识别的问题

一、引言 ​ 在 Vue 项目开发过程中&#xff0c;路径别名是一个非常实用的特性&#xff0c;它能够帮助开发者简化文件引用路径&#xff0c;提高代码的可读性和可维护性。其中&#xff0c; 作为一个常见的路径别名&#xff0c;通常被用来指向项目的 src 目录。然而&#xff0c;…...

处理任务“无需等待”:集成RabbitMQ实现异步通信与系统解耦

在前几篇文章中&#xff0c;我们构建的Web应用遵循了一个常见的同步处理模式&#xff1a;用户发出HTTP请求 -> Controller接收 -> Service处理&#xff08;可能涉及数据库操作、调用其他内部方法&#xff09;-> Controller返回HTTP响应。这个流程简单直接&#xff0c;…...

ASP.NET Core 主机模型详解:Host、WebHost与WebApplication的对比与实践【代码之美】

&#x1f380;&#x1f380;&#x1f380;代码之美系列目录&#x1f380;&#x1f380;&#x1f380; 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...

编译型语言、解释型语言与混合型语言:原理、区别与应用场景详解

编译型语言、解释型语言与混合型语言&#xff1a;原理、区别与应用场景详解 文章目录 编译型语言、解释型语言与混合型语言&#xff1a;原理、区别与应用场景详解引言一、编译型语言1.1 工作原理1.2 典型的编译型语言1.3 优点1.4 缺点 二、解释型语言2.1 工作原理2.2 典型的解释…...

AI工程pytorch小白TorchServe部署模型服务

注意&#xff1a;该博客仅是介绍整体流程和环境部署&#xff0c;不能直接拿来即用(避免公司代码外泄)请理解。并且当前流程是公司notebook运行&本机windows&#xff0c;后面可以使用docker 部署镜像到k8s&#xff0c;敬请期待~ 前提提要&#xff1a;工程要放弃采购的AI平台…...

Ubuntu 一站式部署 RabbitMQ 4 并“彻底”迁移数据目录的终极实践

1 安装前准备 sudo apt update -y sudo apt install -y curl gnupg apt-transport-https lsb-release jq若计划将数据放到新磁盘&#xff08;如 /dev/nvme0n1p1&#xff09;&#xff1a; sudo mkfs.xfs /dev/nvme0n1p1 sudo mkdir /data echo /dev/nvme0n1p1 /data xfs defau…...

华为手机怎么进行音频降噪?音频降噪技巧分享:提升听觉体验

在当今数字化时代&#xff0c;音频质量对于提升用户体验至关重要&#xff0c;无论是在通话、视频录制还是音频文件播放中&#xff0c;清晰的音频都能带来更佳的听觉享受。 而华为手机凭借其强大的音频处理技术&#xff0c;为用户提供了多种音频降噪功能&#xff0c;帮助用户在…...

拥抱健康生活,解锁养生之道

在生活节奏日益加快的当下&#xff0c;健康养生已成为人们关注的焦点。科学的养生方法&#xff0c;能帮助我们增强体质、预防疾病&#xff0c;以更饱满的精神状态拥抱生活。 合理饮食是养生的基石。《黄帝内经》中提到 “五谷为养&#xff0c;五果为助&#xff0c;五畜为益&…...

深入理解Java阻塞队列:原理、使用场景及代码实战

&#x1f680; 文章提示 你将在这篇文章中收获&#xff1a; 阻塞队列的核心特性&#xff1a;队列空/满时的阻塞机制 四种操作方式对比&#xff1a;抛异常、返回特殊值、永久阻塞、超时阻塞 SynchronousQueue的独特设计&#xff1a;同步队列的生产者-消费者强耦合 代码实战&a…...

vue3--手写手机屏组件

<!--* 手机预览* Author: Hanyang* Date: 2022-12-09 09:13:00* LastEditors: Hanyang* LastEditTime: 2023-01-12 15:37:00 --> <template><divclass"public-preview-mobile"ref"previewMobileRef":class"showMobile ? animation-sh…...

【Elasticsearch】入门篇

Elasticsearch 入门 前言 官方地址&#xff1a;Elastic — 搜索 AI 公司 | Elastic ES 下载地址&#xff1a;Past Releases of Elastic Stack Software | Elastic 文档&#xff1a;什么是 Elasticsearch&#xff1f;|Elasticsearch 指南 简介 Elasticsearch 是一个分布式、…...

Unity 使用 ADB 实时查看手机运行性能

Unity 使用 ADB 实时查看手机运行性能 前言操作步骤ADB工具下载ADB工具配置手机进入开发者模式并开启USB调试使用ADB连接手机Unity打包设置使用Profiler实时查看性能情况优化建议 常见问题 前言 通过 ADB&#xff08;Android Debug Bridge&#xff09;连接安卓设备&#xff0c…...

蓝桥杯 1. 四平方和

四平方和 原题目链接 题目描述 四平方和定理&#xff08;又称拉格朗日定理&#xff09;指出&#xff1a; 每个正整数都可以表示为 至多 4 个正整数的平方和。 如果将 0 包括进去&#xff0c;则每个正整数都可以恰好表示为 4 个非负整数的平方和。 例如&#xff1a; 5 0 …...

Nginx 配置参数全解版:Nginx 反向代理与负载均衡;Nginx 配置规范与 Header 透传实践指南;Nginx 配置参数详解

Nginx 配置参数全解版&#xff1a;Nginx 反向代理与负载均衡&#xff1b;Nginx 配置规范与 Header 透传实践指南&#xff1b;Nginx 配置参数详解 Nginx 反向代理与负载均衡配置&#xff0c;Header 透传到后端应用&#xff08;参数全解版&#xff09;一、Nginx 反向代理与负载均…...

数据分析之技术干货业务价值​​ powerquery 分组排序后取TOP

在电商中&#xff0c;我们要对货品进行分析&#xff0c;由于所有的销售数据都在一起&#xff0c;货品信息也在一起&#xff0c;两个表建立了关系之后&#xff0c;要看每个品类的TOP款有哪些&#xff0c;每个品类的TOP款是什么要怎么做呢&#xff1f; 下面是我做数据的思路&…...

windows中kafka4.0集群搭建

参考文献 Apache Kafka windows启动kafka4.0&#xff08;不再需要zookeeper&#xff09;_kafka压缩包-CSDN博客 Kafka 4.0 KRaft集群部署_kafka4.0集群部署-CSDN博客 正文 注意jdk需要17版本以上的 修改D:\software\kafka_2.13-4.0.0\node1\config\server.properties配置文…...

数据分析案例:医疗健康数据分析

目录 数据分析案例:医疗健康数据分析1. 项目背景2. 数据加载与预处理2.1 加载数据2.2 数据清洗3. 探索性数据分析(EDA)3.1 再入院率概览3.2 按年龄分组的再入院率3.3 住院时长与再入院4. 特征工程与可视化5. 模型构建与评估5.1 数据划分5.2 训练逻辑回归5.3 模型评估6. 业务…...

数据分析之 商品价格分层之添加价格带

在分析货品数据的时候&#xff0c;我们会对商品的价格进行分层汇总&#xff0c;也叫价格带&#xff0c;​​ 一、价格带的定义​​ ​​价格带&#xff08;Price Band&#xff09;​​&#xff1a;将商品按价格区间划分&#xff08;如0-50元、50-100元、100-200元等&#xff…...

跨浏览器音频录制:实现兼容的音频捕获与WAV格式生成

在现代Web开发中&#xff0c;音频录制功能越来越受到开发者的关注。无论是在线会议、语音识别还是简单的语音留言&#xff0c;音频录制都是一个重要的功能。然而&#xff0c;实现一个跨浏览器的音频录制功能并非易事&#xff0c;因为不同浏览器对音频录制API的支持存在差异。本…...

JavaScript 的“世界模型”:深入理解对象 (Objects)

引言&#xff1a;超越简单值&#xff0c;构建复杂实体 到目前为止&#xff0c;我们学习的变量大多存储的是单一的值&#xff0c;比如一个数字 (let age 30;​)、一个字符串 (let name "Alice";​) 或一个布尔值 (let isActive true;​)。这对于简单场景足够了&am…...

【国产化之路】VPX-3U :基于D2000 /FT2000的硬件架构到操作系统兼容

在国产化和高性能计算、嵌入式系统领域日益受到重视的今天&#xff0c;VPX3U架构以其标准化和模块化的特性广受关注。本文将从硬件架构、系统软件、接口拓展及典型应用等方面&#xff0c;深入剖析整体设计思路与工程实现&#xff0c;供友友们参考和讨论。 一、总体架构与设计目…...

深入探索RAG(检索增强生成)模型的优化技巧

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4o-mini模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...

架构-软件架构设计

一、软件架构基础概念 1. 软件架构的定义 通俗理解&#xff1a;软件架构是软件系统的“骨架”&#xff0c;定义了系统的结构、行为和属性&#xff0c;就像盖房子的设计图纸&#xff0c;规划了房间布局、承重结构和功能分区。核心作用&#xff1a; 沟通桥梁&#xff1a;让技术…...

免费的 HTML 网页托管服务

字根云平台最近上线了一项新的服务&#xff1a; HTML 网页托管。 HTML 网页免费托管 免费HTML静态页面文件托管-字根秀秀​ www.cuobiezi.net/showshow/ 网页托管主要支持的功能&#xff1a; 1. 托管静态的 HTML 网页&#xff08;不包含图片&#xff0c;图片请使用专业图床&a…...

Ubuntu服务器上如何监控Oracle数据库

在 Ubuntu 服务器上监控 Oracle 数据库&#xff0c;虽然不像在 Windows 或某些企业 Linux&#xff08;如 RHEL&#xff09;那样有现成的 GUI 工具&#xff0c;但你完全可以通过命令行工具、脚本、开源监控平台来实现全面监控&#xff0c;包含&#xff1a; 数据库性能指标&#…...

什么是CMMI认证?CMMI评估内容?CMMI认证能带来哪些好处?

CMMI认证详解&#xff1a;概念、评估内容与核心价值 一、什么是CMMI认证&#xff1f; CMMI&#xff08;Capability Maturity Model Integration&#xff0c;能力成熟度模型集成&#xff09;是由美国卡内基梅隆大学软件工程研究所&#xff08;SEI&#xff09;开发的一套全球公…...

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)

文章目录 类描述构造方法主要方法1. 基础属性2. 边界操作3. 几何运算4. 坐标调整5. 转换方法6. 状态判断 类特点总结1. 浮点精度&#xff1a;2. 坐标系统&#xff1a;3. 有效性判断&#xff1a;4. 几何运算&#xff1a;5. 类型转换&#xff1a;6. 特殊处理&#xff1a; 典型应用…...

arm64适配系列文章-第五章-arm64环境上redis的部署

ARM64适配系列文章 第一章 arm64环境上kubesphere和k8s的部署 第二章 arm64环境上nfs-subdir-external-provisioner的部署 第三章 arm64环境上mariadb的部署 第四章 arm64环境上nacos的部署 第五章 arm64环境上redis的部署 第六章 arm64环境上rabbitmq-management的部署 第七章…...