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

Java进阶学习之路

Java进阶之路

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

目录
  • Java进阶之路
  • 前言
  • 一、Java入门
    • Java基础
      • 1、Java概述
        • 1.1 什么是Java
        • 1.2 java的发展史
        • 1.3 java的特性和优势
        • 1.4 Java的跨平台性
        • 1.5 字节码
        • 1.6 JDK和JRE
          • 1.6.1 JDK和JRE的区别
          • 1.6.2 JDK安装
      • 2、Java基础语法
        • 2.1 基础数据类型
          • 2.1.1 计算机存储单元
          • 2.1.2 Java基本数据类型
      • 3、面向对象
        • 3.1 面向对象和面向过程
        • 3.2 对象和类
          • 3.2.1 对象内存图
        • 3.3 变量
          • 3.3.1 成员变量
        • 3.4 构造方法
          • 3.4.1 构造方法概述
          • 3.4.2 构造方法特点
      • 4、字符串
        • 4.1 String为什么是不可变的
        • 4.2 字符串常量池
        • 4.2 String.intern()
      • 5、数组
    • Java集合框架
  • 二、Java进阶
    • java高级特性
    • 多线程
      • 1、初识多线程
      • 2、进程和线程
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Java入门

Java基础

1、Java概述
1.1 什么是Java

java语言是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言,是一种面向Internet的编程语言。
Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。
随着Java技术在Web层面的不断成熟,已经称为Web应用程序的首选开发语言。
java语言的三个平台版本:
JavaSE: Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础
JavaME: Java 语言的(小型版),用于嵌入式消费类电子设备
JavaEE: Java 语言的(企业版),用于 Web 方向的网站开发

1.2 java的发展史
  • 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“Write Once,Run Anywhere”的口号。
  • 1999年4月27日,HotSpot虚拟机诞生。HotSpot虚拟机刚发布时是作为JDK 1.2的附加程序提供的,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
  • 2004年9月30日,JDK 5发布,工程代号为Tiger(老虎),是Java语言的发展史上的又一里程碑事件。JDK的版本不再是“1.x”的命名方式,而采用“JDK x”方式进行命名。
  • JDK 8的第一个正式版本于2014年3月18日发布,从JDK 8开始,Oracle启用JEP(JDK Enhancement Proposals)来定义和管理纳入新版JDK发布范围的功能特性。
  • JEP 126:对Lambda表达式的支持,这让Java语言拥有了流畅的函数式表达能力。
  • JEP 104:内置Nashorn JavaScript引擎的支持,成为Java的嵌入式JavaScript引擎。
  • JEP 150:新的时间、日期API。
  • JEP 122:彻底移除HotSpot的永久代。
  • ……
  • JDK9于2017年9月21日发布。JDK 9发布后,Oracle随即宣布Java将会以持续交付的形式和更加敏捷的研发节奏向前推进,以后JDK将会在每年的3月和9月各发布一个大版本。每六个JDK大版本中才会被划出一个长期支持(Long Term Support,LTS)版,只有LTS版的JDK能够获得为期三年的支持和更新,普通版的JDK就只有短短六个月的生命周期。JDK 8和JDK 11是LTS版,再下一个就到2021年发布的JDK 17了。
  • 2018年3月20日,JDK 10如期发布,这版本的主要研发目标是内部重构,诸如统一源仓库、统一垃圾收集器接口、统一即时编译器接口等,这些都将会是对未来Java发展大有裨益的改进。
  • 2018年9月25日,JDK 11发布,这是一个LTS版本的JDK,包含17个JEP,其中有ZGC这样的革命性的垃圾收集器出现,也有把JDK 10中的类型推断加入Lambda语法这种可见的改进。
  • 2019年2月,在JDK 12发布前夕,Oracle果然如之前宣布那样在六个月之后就放弃了对上一个版本OpenJDK的维护,RedHat同时从Oracle手上接过OpenJDK 8和OpenJDK 11的管理权利和维护职责。
  • 2019年3月20日,JDK 12发布,只包含8个JEP,其中主要有Switch表达式、Java微测试套件(JMH)等新功能,最引人注目的特性无疑是加入了由RedHat领导开发的Shenandoah垃圾收集器。Shenandoah作为首个由非Oracle开发的垃圾收集器,其目标又与Oracle在JDK 11中发布的ZGC几乎完全一致,两者天生就存在竞争。Oracle马上用实际行动抵制了这个新收集器,在JDK 11发布时才说应尽可能保证OracleJDK和OpenJDK的兼容一致,转眼就在OracleJDK 12里把Shenandoah的代码通过条件编译强行剔除掉,使其成为历史上唯一进入了OpenJDK发布清单,但在OracleJDK中无法使用的功能。
  • 2020年 3 月 17 日,JDK14 正式 GA(General Available),新增了Records、switch表达式(JDK 12和JDK 13中的预览特性,现在正式使用)、文本块等新特性。在JVM方面,弃用Parallel Scavenge和SerialOld GC组合、删除CMS垃圾回收器。
1.3 java的特性和优势
  • 简单性

与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、go to 语句、操作符重载、头文件等,但其语法基于C语言,免去了预处理操作。

  • 面向对象

Java语言是一个面向对象的语言,基本思想是使用对象、类、封装、继承、多态等概念进行程序设计。每一个物体都可以成为一个对象,其本身具有唯一性,有各自不同的变化状态,对Java来说,现有类,才有对象,对象是类实例化后的产物。

  • 可移植性

不同于其他语言,Java优点在于自身的跨平台和可移植性,在Java环境安装好后,会自带一个Java的虚拟机,它可以屏蔽掉不同操作系统之间的差异,实现了跨平台运行Java程序。

  • 高性能

在我们实际编写项目中通常会用到一些Java中间件,像网关、缓存、负载均衡、数据库、分布式架构等方面都有涉及,这都可以较快提高我们项目的性能,同时Java可以通过虚拟机来优化提升运行效率。

  • 分布式

分布式系统是由多个互通节点组成在一起的系统,主要有增加系统容量、加强系统可用、扩展性高、通过服务模块的拆分提升相应效率、团队协作流程得到改善等优点。基于Java自身可以实现信息之间的通信,通常使用TCP/IP异步通信可以达到分布式的效果。

  • 动态性

Java中的动态性主要体现在反射机制、动态字节码操作、动态编译、执行其他脚本编码等方面,在后期建立各模块之间的互通,这就意味着在现有的应用程序下可以实现各模块之间的互连。

  • 多线程

一个进程可以启动多个线程,例如:我们可以将火车站看作一个进程而其中的每一个售票窗口可以看作一个线程,每一个线程都有一个单独的栈空间,栈与栈之间互不干扰,各自执行各自的线程并发。

  • 安全性

Java安全措施主要体现在面向对象的规范上,主要包括:封装数据细节,只提供接口给用户、在Java除了基本类型的操作外都是引用的操作、数组边界检查、强制类型转换和语言对线程的支持。

  • 健壮性

在Java中有一种机制:自动垃圾回收机制(GC机制),Java虚拟机负责调动该机制,不需要编码者过多的干涉。

1.4 Java的跨平台性

我们知道java有跨平台的特性,即一次编译处处运行,其实质是jvm在编译java代码时,会将代码编译成.class的字节码文件,只要在不同的环境中安装对应的JDK(其中包含jvm),我们就可以运行程序了。

其实java虚拟机不仅可以支持java语言,对于其他语言,我们都可以通过把它转换成字节码文件,最后转换的字节码文件都能通过Java虚拟机进行运行和处理。随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。

Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言“终身绑定”,只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。
Java跨平台原理

1.5 字节码

我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。
不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式——Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。

1.6 JDK和JRE
1.6.1 JDK和JRE的区别
  • JVM(Java Virtual Machine),Java虚拟机,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。包括了Java运行环境JRE、Java工具和Java基础类库。
  • JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
  • JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
    在这里插入图片描述
1.6.2 JDK安装
2、Java基础语法
2.1 基础数据类型
2.1.1 计算机存储单元

我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位 (bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,
通常用大写字母”B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,其换算单位如下:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

2.1.2 Java基本数据类型

数据类型

关键字

内存占用

取值范围

整数类型

byte

1

-128~127

short

2

-32768-32767

int(默认)

4

-2的31次方到2的31次方减1

long

8

-2的63次方到2的63次方减1

字符型

float

4

double(默认)

8

字符类型

char

2

0-65535

布尔类型

boolean

1

e35表示的是乘以10的38次方,同样e-45表示乘以10的45次方,在java中整数默认是int类型

3、面向对象
3.1 面向对象和面向过程
  • 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。
  • 面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
  • 面向对象设计程序(简称OOP):
3.2 对象和类
  • 类:类是构造对象的模板或蓝图;就是将具有相似的行为或者属性的事物抽象或者集合形成一个类;是抽象的、概念上的定义
  • 对象:是实际存在的该类事物的每个个体,是类的实例
  • 由类创建对象的过程称为创建类的实例
3.2.1 对象内存图
  • 单个对象内存图
    在这里插入图片描述
  • 多个对象内存图
    在这里插入图片描述
    总结:多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份
  • 多个对象指向相同内存图
    在这里插入图片描述
    总结:
    当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)
    只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。
3.3 变量

在这里插入图片描述

3.3.1 成员变量

成员变量(方法外、类内)的声明格式:
【访问修饰符】【类型修饰符】<数据类型>变量名

  • 访问修饰符:设置变量的访问权限

访问级别

访问控制修饰符

同类

同包不同类(不含子类)

同包子类

不同包不同类

不同包子类

公开

public

受保护

protected

×

(注意)

默认

没有访问修饰符

×

×

私有

private

×

×

×

×

注:成员变量通常设置为private,然后在设置一些public权限的方法来设置、获取成员变量的值,防止由对象直接访问变量导致数据的错误、混乱或安全性问题。

3.4 构造方法
3.4.1 构造方法概述

在Java中,构造方法(Constructor)是一种特殊类型的方法,用于初始化对象

3.4.2 构造方法特点
  • 方法名称与类名相同:构造方法的名称必须与类名完全相同。
  • 没有返回类型:构造方法没有返回类型,甚至不写 void。
  • 在创建对象时自动调用:当使用 new 关键字实例化一个对象时,会自动调用该对象的构造方法。
  • 可以有多个构造方法:一个类可以有多个构造方法,根据参数列表的不同来区分构造方法的重载。
4、字符串
4.1 String为什么是不可变的

String内部是一个使用final修饰修饰的字符数组,所以不可变
在这里插入图片描述
为何这样设计

  • 安全性:字符串经常用于存储敏感信息,如网络连接的用户名、密码、URL等。如果字符串是可变的,那么这些信息可能会被恶意修改,从而导致安全问题。

  • 线程安全:由于字符串是不可变的,所以它们在多线程环境中是安全的,不需要额外的同步。

  • 哈希码缓存:字符串是哈希映射(如HashMap和HashSet)中常用的键类型。由于字符串的内容不会改变,所以它们的哈希码可以被缓存,而不需要每次使用时都重新计算。这可以提高哈希映射的性能。

  • 字符串池:Java虚拟机(JVM)维护了一个特殊的内存区域,称为字符串池(String Pool)。当你创建一个字符串字面量(如"Hello")时,JVM首先会检查字符串池中是否已经存在该值。如果存在,JVM将返回对现有字符串的引用;否则,JVM将在字符串池中创建一个新的字符串。这种技术可以节省内存,因为相同的字符串字面量只需要存储一次。

  • 从源码角度来看:String类的不可变性主要体现在其内部使用了一个私有的、最终的字符数组来存储其值,并且没有提供修改这个数组的方法。这意味着一旦一个String对象被创建,其内部的字符数组就不能被改变了。

4.2 字符串常量池

字符串常量池又称为字符串池,全局字符串池(Spring Pool)。在工作中,String类是我们使用频率非常高的一种对象类型。JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存空间,就是字符串常量池。字符串常量池由String类私有保护。

4.2 String.intern()
/*** Returns a canonical representation for the string object.* <p>* A pool of strings, initially empty, is maintained privately by the* class {@code String}.* <p>* When the intern method is invoked, if the pool already contains a* string equal to this {@code String} object as determined by* the {@link #equals(Object)} method, then the string from the pool is* returned. Otherwise, this {@code String} object is added to the* pool and a reference to this {@code String} object is returned.* <p>* It follows that for any two strings {@code s} and {@code t},* {@code s.intern() == t.intern()} is {@code true}* if and only if {@code s.equals(t)} is {@code true}.* <p>* All literal strings and string-valued constant expressions are* interned. String literals are defined in section 3.10.5 of the* <cite>The Java&trade; Language Specification</cite>.** @return  a string that has the same contents as this string, but is*          guaranteed to be from a pool of unique strings.*/public native String intern();

由源码可知,String.intern()是一个native方法,注释大致意思是:如果常量池中存在当前字符串,就会直接返回当前字符串,如果常量池中没有此字符串,会将此字符串放入常量池中,然后返回。

5、数组

Java集合框架

二、Java进阶

java高级特性

多线程

1、初识多线程

多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持能够在同一时间执行多个线程,提升性能。

2、进程和线程
  • 进程:

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关文章:

Java进阶学习之路

Java进阶之路 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…...

Django 多数据库

django 支持项目连接多个数据库 DATABASES = {default: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxxx,HOST: xxxx,PORT: 3306,},bak: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxx,HOST: xxx…...

Vue 中如何嵌入可浮动的第三方网页窗口(附Demo)

目录 前言1. 思路Demo2. 实战Demo 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. 思路Demo 以下Demo提供思路参考&#xff0c;需要结合实际自身应用代码 下述URL的链接使用百度替代&#xff01; 方式 1…...

6-图像金字塔与轮廓检测

文章目录 6.图像金字塔与轮廓检测(1)图像金字塔定义(2)金字塔制作方法(3)轮廓检测方法(4)轮廓特征与近似(5)模板匹配方法6.图像金字塔与轮廓检测 (1)图像金字塔定义 高斯金字塔拉普拉斯金字塔 高斯金字塔:向下采样方法(缩小) 高斯金字塔:向上采样方法(放大)…...

【学Rust写CAD】4 相对坐标系详解与实现要素概览

相对坐标系&#xff08;Relative Coordinate System, RCS&#xff09;是一个强大且灵活的工具&#xff0c;尤其在绘图、三维建模等领域中发挥着重要作用。以下是对相对坐标系的详细解析&#xff0c;包括其定义、应用、特性、与绝对坐标的区别、在CAD中的应用以及实现方式。 一…...

win编译openssl

一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…...

Kafka 使用说明(kafka官方文档中文)

文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...

PyTorch数据建模

回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...

Node.js与嵌入式开发:打破界限的创新结合

文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架构3.3 核心代码片段四、…...

CVPR | CNN融合注意力机制,芜湖起飞!

**标题&#xff1a;**On the Integration of Self-Attention and Convolution **论文链接&#xff1a;**https://arxiv.org/pdf/2111.14556 **代码链接&#xff1a;**https://github.com/LeapLabTHU/ACmix 创新点 1. 揭示卷积和自注意力的内在联系 文章通过重新分解卷积和自…...

Markdown转换器中间件

目录 需求 文本编码检测 Markdown→HTML 注意 实现 需求 Markdown是一种文本格式&#xff1b;不被浏览器支持&#xff1b;编写一个在服务器端把Markdown转换为HTML的中间件。我们开发的中间件是构建在ASP.NET Core内置的StaticFiles中间件之上&#xff0c;并且在它之前运…...

https是如何保证安全的,又是如何保证不被中间人攻击的?

HTTPS如何保证安全&#xff0c;以及如何防止中间人攻击 保护用户隐私和数据安全已经成为了一个不可忽视的问题。随着网络攻击的不断升级&#xff0c;HTTPS&#xff08;超文本传输安全协议&#xff09;成为了我们在网络上交流时的一道重要防线。以下是HTTPS是如何保证安全的&am…...

2025.2.5

Web [SWPUCTF 2021 新生赛]ez_unserialize: 这个题先了解一下反序列化&#xff1a;反序列化是序列化的逆过程。序列化是将对象或数据结构转换为可以存储或传输的格式&#xff08;如JSON、XML或二进制格式&#xff09;的过程。反序列化则是将这个格式的数据转换回原始的对象或…...

TGT-HC:一种用于无线时间敏感网络的时隙感知整形MAC方案的调研、设计与评估

论文标题 中文标题&#xff1a;TGT-HC&#xff1a;一种用于无线时间敏感网络的时隙感知整形MAC方案的调研、设计与评估 英文标题&#xff1a;Survey, Design and Evaluation of TGT-HC: A Time-Aware Shaper MAC for Wireless TSN 作者信息 Raymond J. Jayabal&#xff08;I…...

Ollama教程:轻松上手本地大语言模型部署

Ollama教程&#xff1a;轻松上手本地大语言模型部署 在大语言模型&#xff08;LLM&#xff09;飞速发展的今天&#xff0c;越来越多的开发者希望能够在本地部署和使用这些模型&#xff0c;以便更好地控制数据隐私和计算资源。Ollama作为一个开源工具&#xff0c;旨在简化大语言…...

《Redis4.0数据持久化》

【redis持久化导读】Redis作为一款高性能的内存数据库&#xff0c;支持key-value键值对的形式存储数据&#xff0c;为业务层提供了高效的数据查询能力&#xff0c;但大家有思考过一个问题没&#xff1f;假如redis服务所在的主机突然挂了&#xff0c;那么之前缓存在内存的数据是…...

如何利用Docker和.NET Core实现环境一致性、简化依赖管理、快速部署与扩展,同时提高资源利用率、确保安全性和生态系统支持

目录 1. 环境一致性 2. 简化依赖管理 3. 快速部署与扩展 4. 提高资源利用率 5. 确保安全性 6. 生态系统支持 总结 使用 Docker 和 .NET Core 结合&#xff0c;可以有效地实现环境一致性、简化依赖管理、快速部署与扩展&#xff0c;同时提高资源利用率、确保安全性和生态…...

前端js高级25.1.30

原型&#xff1a;函数的组成结构 通过这个图我们需要知道。 假设我们创建了一个Foo函数。 规则&#xff1a;Function.protoType是函数显示原型。__proto__是隐式对象。 Function、Object、Foo函数的__proto__指向了Function.protoType说明。这三个都依托function函数来创建。…...

C语言打印输出星号图形(三角形、菱形、漏斗)

文章目录 1. 介绍2. 案例分析3. 漏斗型4. 直角三角形4.1 左上直角三角形4.2 右上直角三角形4.3 左下直角三角形4.4 右下直角三角形 5. 等腰三角形5.1 正等腰三角形5.2 倒等腰三角形 6. 平行四边形6.1 纵向左下平行四边形6.2 纵向左上平行四边形6.3 横向左上平行四边形6.4 横向左…...

litemall,又一个小商场系统

litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端 代码地址&#xff1a;litemall: 又一个小商城。 litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端...

消费kafka消息示例

以下是使用 Java 结合 Spring Kafka 框架来监听 updated-topic-test 这个 Kafka Topic 的详细实现步骤及代码示例&#xff0c;用于捕获人员信息变更的事件。 1. 添加依赖 在 pom.xml 文件中添加 Spring Kafka 相关依赖&#xff1a; <dependencies><!-- Spring Boot…...

ShardingSphere--03--SpringBoot整合案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringBoot整合案例1.建表2.nacos 配置ShardingSphere 规则3.java 依赖4.sql5.java 代码 SpringBoot整合案例 1.建表 CREATE TABLE t_audience_customer_0 (audid …...

​K8S运行时切换-从Docker到Containerd的切换实战

1. 切换的原因 性能提升&#xff1a;Containerd通过减少抽象层提升了整体性能。 安全性增强&#xff1a;它提供了更直接的系统调用&#xff0c;减少了潜在的安全风险。 简化架构&#xff1a;Containerd拥有更简洁的设计&#xff0c;使得维护和故障排除更为容易。 官方支持趋…...

C# yield 关键字

前言   在 C# 中&#xff0c;yield 关键字是一个非常独特且强大的语言特性&#xff0c;它主要用于迭代器块&#xff08;Iterator Block&#xff09;中&#xff0c;能够让开发者以一种简洁高效的方式实现自定义的可迭代类型&#xff0c;轻松地生成并返回一个序列的值&#xff…...

软件设计模式

目录 一.创建型模式 抽象工厂 Abstract Factory 构建器 Builder 工厂方法 Factory Method 原型 Prototype 单例模式 Singleton 二.结构型模式 适配器模式 Adapter 桥接模式 Bridge 组合模式 Composite 装饰者模式 Decorator 外观模式 Facade 享元模式 Flyw…...

【Leetcode 每日一题 - 补卡】922. 按奇偶排序数组 II

问题背景 给定一个非负整数数组 n u m s nums nums&#xff0c; n u m s nums nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 n u m s [ i ] nums[i] nums[i] 为奇数时&#xff0c; i i i 也是 奇数 &#xff1b;当 n u m s [ …...

Redis缓存穿透、击穿、雪崩介绍以及解决方案

一、缓存穿透 1.1 什么是缓存穿透&#xff1f; 指的是&#xff0c;外部进来的请求&#xff0c;查询一个不存在的数据。Redis中没有&#xff0c;数据库中也没有&#xff0c;这时候如果外部恶意大量请求&#xff0c;所有请求会直接查询数据库&#xff0c;导致数据库崩溃 1.2 解决…...

Django框架丨从零开始的Django入门学习

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架&#xff0c;Django是一个高度模块化的框架&#xff0c;使用 Django&#xff0c;只要很少的代码&#xff0c;Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容&#xff0c;并进一步开发出全功能…...

AI绘画:解锁商业设计新宇宙(6/10)

1.AI 绘画&#xff1a;商业领域的潜力新星 近年来&#xff0c;AI 绘画技术以惊人的速度发展&#xff0c;从最初简单的图像生成&#xff0c;逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化&#xff0c;AI 绘画工具如 Midjourney、Stable Diffu…...

.net的一些知识点

1.public,protected,private的区别 从访问权限来说是 public>protecd>private 翻译成汉字&#xff1a;公有的>受保护的>私有的 但是在拿那种旧版本(2017及之前)的vs创建class的时候&#xff0c;这个类是没有修饰符的。现在vs2022版本创建带了默认修饰符&#x…...

【Docker】——安装Docker以及解决常见报错

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…...

Linux环境部署DeepSeek大模型

一、背景 【DeepSeek 深度求索】这个春节给了世界一个重磅炸弹&#xff0c;弄得美国都睡不好觉。这次与以往不同&#xff0c;之前我们都是跟随着美国的AI人工智能&#xff0c;现在DeepSeek通过算法上的优化&#xff0c;大大降低了训练模型所需的成本以及时间&#xff0c;短期造…...

Java 面试真题

本题适合一到三年 Java 开发 &#xff0c;以下问题都是按照原面试官提问记录 文章目录 我要进大厂系列面试题二面 我要进大厂系列面试题 全部真题&#xff0c;欢迎投稿你的面试经验。 本篇涉及基础较多&#xff0c;但要耐性看完。 JVM内存模型垃圾回收器用的哪个gc各个算法…...

Electron使用WebAssembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssembly源文件 C语言实现C…...

(一)DeepSeek大模型安装部署-Ollama安装

大模型deepseek安装部署 (一)、安装ollama curl -fsSL https://ollama.com/install.sh | sh sudo systemctl start ollama sudo systemctl enable ollama sudo systemctl status ollama(二)、安装ollama遇到网络问题&#xff0c;请手动下载 ollama-linux-amd64.tgz curl -L …...

Unity游戏(Assault空对地打击)开发(6) 鼠标光标的隐藏

前言 鼠标光标在游戏界面太碍眼了&#xff0c;要隐藏掉。 详细操作 新建一个脚本HideCursor&#xff0c;用于隐藏/取消隐藏光标。 写入以下代码。 意义&#xff1a;游戏开始自动隐藏光标&#xff0c;按Esc&#xff08;隐藏<-->显示&#xff09;。 using System.Collectio…...

蓝桥杯python基础算法(2-1)——排序

目录 一、排序 二、例题 P3225——宝藏排序Ⅰ 三、各种排序比较 四、例题 P3226——宝藏排序Ⅱ 一、排序 &#xff08;一&#xff09;冒泡排序 基本思想&#xff1a;比较相邻的元素&#xff0c;如果顺序错误就把它们交换过来。 &#xff08;二&#xff09;选择排序 基本思想…...

算法随笔_36: 复写零

上一篇:算法随笔_35: 每日温度-CSDN博客 题目描述如下: 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改…...

基于springboot的体质测试数据分析及可视化设计

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…...

知识蒸馏教程 Knowledge Distillation Tutorial

来自于&#xff1a;Knowledge Distillation Tutorial 将大模型蒸馏为小模型&#xff0c;可以节省计算资源&#xff0c;加快推理过程&#xff0c;更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…...

排序算法--选择排序

选择排序虽然简单&#xff0c;但时间复杂度较高&#xff0c;适合小规模数据或教学演示。 // 选择排序函数 void selectionSort(int arr[], int n) {for (int i 0; i < n - 1; i) { // 外层循环控制当前最小值的存放位置int minIndex i; // 假设当前位置是最小值的索引// 内…...

视频融合平台EasyCVR无人机场景视频压缩及录像方案

安防监控视频汇聚EasyCVR平台在无人机场景中发挥着重要的作用&#xff0c;通过高效整合视频流接入、处理与分发等功能&#xff0c;为无人机视频数据的实时监控、存储与分析提供了全面支持&#xff0c;广泛应用于安防监控、应急救援、电力巡检、交通管理等领域。 EasyCVR支持GB…...

【react-redux】react-redux中的 useDispatch和useSelector的使用与原理解析

一、useSelector 首先&#xff0c;useSelector的作用是获取redux store中的数据。 下面就是源码&#xff0c;感觉它的定义就是首先是createSelectorHook这个方法先获得到redux的上下文对象。 然后从上下文对象中获取store数据。然后从store中得到选择的数据。 2、useDispatc…...

【自学笔记】Git的重点知识点-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Git基础知识Git高级操作与概念Git常用命令 总结 Git基础知识 Git简介 Git是一种分布式版本控制系统&#xff0c;用于记录文件内容的改动&#xff0c;便于开发者追踪…...

【大模型实战】0代码基于DeepSeek-R1搭建本地知识库,打造专属智能助手

【大模型实战】0代码基于DeepSeek-R1搭建本地知识库,打造专属智能助手 一、ollama下载与安装二、部署deepseek私有模型三、部署embedding模型四、可视化操作工具(1)下载与安装工具(2)部署安装的模型(3) 添加知识库(4)添加智能体助手(5) 助手问答一、ollama下载与安装…...

[LeetCode] 二叉树 I — 深度优先遍历(前中后序遍历) | 广度优先遍历(层序遍历):递归法迭代法

二叉树 基础知识深度优先遍历递归法迭代法&#xff08;栈&#xff09;144# 二叉树的前序遍历94# 二叉树的中序遍历145# 二叉树的后序遍历 广度优先遍历递归法迭代法&#xff08;队列&#xff09;102# 二叉树的层序遍历107# 二叉树的层序遍历 II199# 二叉树的右视图637# 二叉树的…...

【OS】AUTOSAR架构下的Interrupt详解(上篇)

目录 前言 正文 1.中断概念分析 1.1 中断处理API 1.2 中断级别 1.3 中断向量表 1.4 二类中断的嵌套 1.4.1概述 1.4.2激活 1.5一类中断 1.5.1一类中断的实现 1.5.2一类中断的嵌套 1.5.3在StartOS之前的1类ISR 1.5.4使用1类中断时的注意事项 1.6中断源的初始化 1.…...

NFT Insider #167:Champions Tactics 角色加入 The Sandbox;AI 助力 Ronin 游戏生态

引言&#xff1a;NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品&#xff0c; 浓缩每周 NFT 新闻&#xff0c;为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟…...

保姆级教程Docker部署KRaft模式的Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …...

堆的实现——堆的应用(堆排序)

文章目录 1.堆的实现2.堆的应用--堆排序 大家在学堆的时候&#xff0c;需要有二叉树的基础知识&#xff0c;大家可以看我的二叉树文章&#xff1a;二叉树 1.堆的实现 如果有⼀个关键码的集合 K {k0 , k1 , k2 , …&#xff0c;kn−1 } &#xff0c;把它的所有元素按完全⼆叉树…...