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

自由学习记录(10)

Sprite Packer ~Mode & 图集

packer

Project Setting经常是金屋藏娇

创建的项目如果不是2d项目,则默认disable打包

编辑模式就是你没点运行看游戏效果,在狼狈敲码创对象写逻辑的那个状态,

运行模式从点了|>之后,就一直算

打安装包或者.exe运行程序之后才打包图集,在unity里点运行或者瞎JM点,都不会打图集

always enabled则是进入运行之后,和.exe一样打包

图集

层级嵌套

1. Sorting Group 层次结构

如果一个 Sprite Renderer 的父物体有一个 Sorting Group,那么这个父物体的 Sorting Group 会影响所有子物体(即子物体的 Sprite Renderer)的渲染顺序。这意味着即使子物体有自己的 Sorting LayerOrder in Layer 设置,这些设置也会被父物体的 Sorting Group 的设置覆盖。

2. Sorting Group 的嵌套

  • 如果父物体有一个 Sorting Group,而子物体也有自己的 Sorting Group,则子物体的 Sorting Group 会在父物体的 Sorting Group 之上生效。
  • 在这种情况下,渲染顺序会遵循以下规则:
    1. 首先比较父物体的 Sorting GroupSorting LayerOrder in Layer
    2. 然后比较子物体的 Sorting GroupSorting LayerOrder in Layer
    3. 如果都在同一层,接下来比较 Z 轴位置。
    4. 如果 Z 轴位置相同,再根据物体的层次结构决定顺序。

3. 实例

假设:

  • 有一个父物体 A,A 有一个 Sorting Group,其 Sorting Layer 为 "Background",Order in Layer 为 0。
  • 子物体 B 和 C 都是 A 的子物体,并且 B 和 C 各自有 Sprite Renderer,它们的 Sorting LayerOrder in Layer 设置被父物体 A 的 Sorting Group 覆盖。

如果 B 有 Order in Layer = 1,C 有 Order in Layer = 2,那么 C 会在 B 的上面渲染。

4. 父物体的多个 Sorting Group

  • 如果在 A 的上层还有一个其他的 Sorting Group,那么 A 的渲染顺序会受这个更高层的 Sorting Group 的影响。
  • 更高层的 Sorting Group 的设置将会优先于 A 的设置,决定 A 及其子物体的渲染顺序。

5. 总结

  • Sorting Group 的嵌套结构会影响渲染顺序,较高层次的 Sorting Group 将会影响下层的所有物体。
  • 当子物体和父物体都在不同的 Sorting Group 时,渲染顺序依赖于各自的 Sorting LayerOrder in Layer

层级优先级

1. Sorting Group 的优先级

  • Sorting Group 中的所有对象会共享同一个 Sorting LayerOrder in Layer
  • 因此,如果两个 Sprite Renderer 在同一个 Sorting Group 下,它们会按照 Sorting Group 的设置来渲染。

2. Sprite Renderer 的属性

  • 每个 Sprite RendererSorting LayerOrder in Layer 属性实际上只在它们不在同一 Sorting Group 时起作用
  • 如果它们在同一个 Sorting Group 下,它们的 Sorting LayerOrder in LayerSorting Group 的设置覆盖

3. 渲染顺序

  • 优先级顺序
    1. Sorting GroupSorting Layer:所有在同一 Sorting Group 的对象都将使用相同的 Sorting Layer
    2. Order in Layer:在同一 Sorting Layer 中,值较大的对象会渲染在值较小的对象上方。
    3. Z轴位置如果 Order in Layer 相同,则会根据 Z 轴位置进行渲染,Z 值较小的对象会在 Z 值较大的对象上方渲染。
    4. 父对象的层次:在 Z 轴位置相同的情况下,Unity 会根据层次结构的排列来决定渲染顺序,先挂载的对象会在后挂载的对象上方。

4. 例外情况

  • 如果 Sprite Renderer 处于不同的 Sorting Group 中,它们的 Sorting LayerOrder in Layer 会各自生效,这时就可以相互影响。

总结

  • 在同一个 Sorting Group 中,渲染顺序优先由 Sorting Group 的设置决定,然后再根据 Order in Layer 和 Z 轴位置决定。
  • Sprite Renderer 的个别属性在同一 Sorting Group 下不会影响渲染顺序。

Sorting Group

1. 功能

  • 层级控制:Sorting Group 可以将多个 Sprite Renderer 组合在一起,确保它们在渲染时保持一致的顺序。
  • 独立排序:允许你在多个 Sorting Group 之间设置不同的排序顺序,适合复杂的场景和 UI 布局。

2. 使用方法

1. 添加 Sorting Group
  • 在场景中,选择一个 GameObject(可以是空对象或其他对象)。
  • 在 Inspector 窗口中,点击 Add Component,搜索并添加 Sorting Group 组件。
2. 设置 Sorting Group
  • Sorting Layer:选择要使用的渲染层。Sorting Layer 决定了对象之间的渲染顺序
  • Order in Layer:设置同一 Sorting Layer 中的渲染顺序。值越大的对象会在值较小的对象上方渲染。
3. 子对象的排序
  • 将需要按相同层次排序的精灵作为该 GameObject 的子对象。所有子对象的 Sprite Renderer 将共享父对象的 Sorting Group 设置。
  • 父 Sorting Group 中设置的排序层级会影响所有子对象的渲染顺序

3. 示例场景

  • 角色与背景:将角色和背景的不同部分放入不同的 Sorting Group,以确保角色在背景前面渲染。
  • UI 元素:对 UI 元素使用 Sorting Group,可以方便地管理不同 UI 元素的渲染顺序。

4. 常见问题

  • 无法看到排序效果:确保 Sorting Layer 和 Order in Layer 设置正确。检查是否有其他组件(如 Canvas)影响渲染顺序。
  • Sorting Group 与 Canvas:注意 Sorting Group 只影响 2D 渲染,而 Canvas 组件会影响 UI 元素的渲染。如果同时使用,请确保它们的设置不冲突

5. 注意事项

  • Sorting Group 适合在 2D 环境中使用,特别是当你需要多个精灵保持一致的渲染顺序时。
  • 对于复杂场景,适当使用 Sorting Group 可以帮助你更好地管理渲染层次和性能。

Sprite Mask

渐变效果,alpha cutoff

Sprite Creator

1. 功能

  • 创建精灵:从图像文件创建单个精灵。
  • 切片:将一张大图(精灵图集)切分成多个小精灵,方便在游戏中使用。
  • 编辑:可以对精灵进行简单的编辑和调整,如旋转、缩放和透明度设置。

2. 使用方法

1. 创建单个精灵
  • 在 Unity 中,右键单击项目窗口中的文件夹,选择 Create > Sprites
  • 导入你想要的图像文件,Unity 会自动将其转换为精灵。
2. 使用 Sprite Editor 切片
  • 选择你的精灵纹理,确保它的 Texture Type 设置为 Sprite (2D and UI)
  • 点击 Sprite Editor 按钮(在 Inspector 窗口中)。
  • 在 Sprite Editor 窗口中,可以手动切片或使用自动切片工具:
    • 手动切片:使用切片工具,手动划定每个精灵的边界。
    • 自动切片:点击 Slice 按钮,选择合适的选项(如 Grid By Cell Size 或 Grid By Cell Count),自动切分图像。
3. 保存和使用
  • 切片完成后,点击 Apply 保存更改。
  • 切分出的精灵会出现在项目窗口中,你可以将它们拖放到场景中或使用 Sprite Renderer 组件进行渲染。

3. 注意事项

  • 确保你的纹理格式适合用于 2D 游戏,设置合适的 Pixels Per Unit(每单位像素)值,以便在游戏中以正确的比例显示。
  • 使用切片时,注意纹理的边缘可能会出现透明或空白区域,确保切片的设置准确。

4. 常见问题

  • 无法找到 Sprite Editor:确保选择的纹理类型为 Sprite (2D and UI),并安装了 2D 工具包。
  • 切片不准确:检查原始图像的大小和分辨率,调整切片设置以获得更好的结果。

Sprite Render

Sprite Editor的添加

Sprite Mode里更改这些有的没的

改成Multiple 的Mode就可以把图片切切切,然后出现动画的关键帧的high

里面没有显示包使用,就手动添加

手动添加 2D Sprite 包

  • 打开 Package Manager,在右上角选择 + 按钮,然后选择 "Add package by name..."
  • 输入 com.unity.2d.sprite 并按 Enter。这应该会手动添加 2D Sprite 包。

what hell is 纹理?

分离alpha通道

 是内存换性能,写错了

Texture Shape

1. 2D

  • 定义:这是最常用的纹理类型,表示平面纹理。
  • 用途:适用于任何需要在表面上呈现图像的对象,如 3D 模型的表面、UI 元素、精灵等。
  • 特性
    • 可以通过 UV 映射应用到物体上。
    • 支持各种过滤模式和压缩设置。

2. Cube

  • 定义:用于创建立方体贴图,适合环境反射和天空盒。
  • 用途:常用于创建动态反射、环境映射或场景的天空盒。
  • 特性
    • 纹理会被映射到立方体的六个面(上、下、左、右、前、后)。
    • 适合用于反射材质,能够创建更真实的环境效果。

3. 2D and Cube

  • 定义:允许同一纹理在 2D 和 Cubemap 之间共享。
  • 用途:适合需要同时处理平面纹理和立方体纹理的特殊情况。
  • 特性
    • 适用于需要多种类型纹理的复杂材料。
    • 可以根据需求灵活使用不同的纹理类型。

4. 3D

  • 定义:用于三维纹理,适合存储体积数据。
  • 用途:常用于复杂的效果,如流体模拟、体积光照或体积渲染。
  • 特性
    • 可以在三维空间内对纹理进行采样。
    • 适用于医学成像、气象模拟等高级应用。

详细使用场景示例

1. 2D 纹理的应用
  • 精灵:在 2D 游戏中,用于角色和物体的图像。
  • UI 元素:如按钮、背景图像和图标。
2. Cubemap 纹理的应用
  • 反射:在物体表面(如水面、金属)应用,以模拟环境反射。
  • 天空盒:为场景提供背景,可以创建各种环境(如白天、夜晚、宇宙等)。
3. 2D and Cube 的应用
  • 复合材质:在同一材质中同时需要平面纹理和反射效果的场景。
4. 3D 纹理的应用
  • 体积效果:用于显示烟雾、火焰等自然现象。
  • 医疗图像:可以用于医学应用中的体积渲染,如 CT 扫描图像。

纹理设置的影响

  • 性能:选择合适的 Texture Shape 可以影响渲染性能和内存使用
  • 视觉效果:不同的纹理形状会导致不同的视觉效果,适当选择能提升游戏的沉浸感。

总结

Texture Shape 是 Unity 中定义纹理几何形状的重要设置,它决定了纹理的类型及其在场景中的应用。理解每种形状的特性和用途可以帮助开发者在制作游戏时做出更好的选择。

Texture Type

1. Default

  • 适用于普通的纹理。
  • 常用于物体表面、UI元素等。

2. Sprite (2D and UI)

  • 专为 2D 精灵和 UI 元素设计。
  • 使用这种类型时,纹理会以精灵方式处理,支持切片和动画。

3. Normal Map

  • 用于存储法线信息,以模拟细节和凹凸效果。
  • 在材质中启用法线贴图后,会影响光照和表面细节的渲染。

4. Shadow Map

  • 用于阴影映射,通常用于动态阴影。
  • 在光源中设置时,使用这种类型的纹理可以生成阴影。

5. Cubemap

  • 用于环境贴图,创建反射和天空盒效果。
  • 存储六个面(上、下、左、右、前、后)的纹理数据。

6. Single Channel

  • 用于存储单通道数据,如灰度图。
  • 通常用于特殊效果,如遮罩或控制图。

7. Video

  • 用于视频纹理,允许在材质中播放视频内容。

我类个乖,真的天书,看蒙了

Normal map

图片默认类型

 

Unity图片格式

Java缓冲流性能分析

Java算法题的疑问

代码

System.out.printf("%.2f",Math.round(total*100.0/n)*0.01);

  int n=scan.nextInt();

数组

// 声明一个整数类型的数组
int[] array; // 推荐方式
// 或者
int array[]; // 另一种方式
// 方式一:声明并初始化
int[] array1 = {1, 2, 3, 4, 5};// 方式二:声明后初始化
int[] array2 = new int[5]; // 创建一个长度为 5 的整数数组
array2[0] = 1;
array2[1] = 2;
array2[2] = 3;
array2[3] = 4;
array2[4] = 5;

错误示例

int[] scores = new int[n];  正确

int[n] scores; 不正确

  • new scores[n]:这不是有效的语法,因为 scores 需要是类型(如 int)而不是变量名。
  • int[n] scores;:这也是不正确的,Java 不支持这样的数组声明方式。

遍历

Scanner scan = new Scanner(System.in)

public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...scan.close();}
}
  • 输入处理Scanner 是 Java 中一个常用的类,用于从标准输入(例如键盘)读取数据。通过创建 Scanner 对象,你可以方便地读取不同类型的数据(如整数、字符串等)。
  • **在算法题中,**使用 Scanner 可以快速获取题目所需的输入数据。

scan.close()

  • 资源管理:关闭 Scanner 对象是一个好的实践,这样可以释放系统资源。虽然在简单的算法题中不一定会看到直接影响,但在更复杂的程序中,及时关闭资源是非常重要的。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);// 读取一个整数int n = scan.nextInt();// 读取一个字符串String str = scan.next();// 在此输入您的代码...System.out.println("输入的整数是: " + n);System.out.println("输入的字符串是: " + str);scan.close();}
}

System.in

System.in 是 Java 中的一个标准输入流,表示从键盘输入的数据。在许多情况下,你可以直接使用 System.in 来获取输入,但它的使用方式相对较低级,不如 Scanner 方便。下面是两者之间的关系和区别:

1. System.in 的定义

  • System.in 是一个 InputStream 对象,代表标准输入流(通常是键盘)。
  • 你可以使用 System.in 来读取字节数据,但需要手动处理这些字节转换为字符或其他数据类型。

2. Scanner 的功能

  • Scanner 是一个封装了 InputStream 的类,提供了更高级的输入处理功能。
  • 它可以自动处理不同类型的数据(如 intdoubleString 等),并且简化了输入的读取过程。

使用示例

使用 System.in
import java.io.InputStreamReader;
import java.io.BufferedReader;public class Main {public static void main(String[] args) throws Exception {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));// 读取一个字符串String str = reader.readLine();// 读取一个整数int n = Integer.parseInt(reader.readLine());System.out.println("输入的整数是: " + n);System.out.println("输入的字符串是: " + str);reader.close();}
}

总结

  • System.in 是基础的输入流,用于读取字节数据。
  • Scanner 是一个更方便的工具,提供了简化的输入方法,能够直接读取不同类型的数据,避免了手动转换的麻烦。

其实我很喜欢老鸽

That's right

今天的月亮我不知道好不好看

相关文章:

自由学习记录(10)

Sprite Packer ~Mode & 图集 packer Project Setting经常是金屋藏娇 创建的项目如果不是2d项目,则默认disable打包 编辑模式就是你没点运行看游戏效果,在狼狈敲码创对象写逻辑的那个状态, 运行模式从点了|>之后,就一直…...

Redis提供了专门的命令来实现自增操作

Redis中的自增操作并不是直接通过CAS(Compare and Set)操作实现的。Redis提供了专门的命令来实现自增操作,这些命令能够确保操作的原子性,而不需要显式地使用CAS机制。 Redis中的自增操作 Redis中的自增操作主要依赖于以下几个命…...

uniapp修改input中placeholder样式

Uniapp官方提供了两种修改的属性方法&#xff0c;但经过测试&#xff0c;只有 placeholder-class 属性能够生效 <input placeholder"请输入手机验证码" placeholder-class"input-placeholder"/><!-- css --> <style lang"scss" s…...

GenerativeU:生成式开放目标检测

论文&#xff1a;https://arxiv.org/abs/2403.10191 代码&#xff1a;https://github.com/FoundationVision/GenerateU 感想 目标检测任务已经逐渐从闭集场景专项开集场景&#xff0c;在LLM加持下&#xff0c;速读越来越快。该方法仍然依赖于预先定义的类别&#xff0c;这意味着…...

element plus e-table表格中使用多选,当翻页时已选中的数据丢失

摘要&#xff1a; 点击第一页选中两个&#xff0c;再选择第二页&#xff0c;选中&#xff0c;回到第一页&#xff0c;之前选中的要保留&#xff01; element ui table 解决办法&#xff1a; :row-key“getRowKeys” &#xff08;写在el-table中&#xff09; methods中声明 ge…...

CentOS 7 网络连接显示“以太网(ens33)不可用”

1.创建linux虚拟机&#xff0c;配置网络和主机名显示" 以太网&#xff08;ens33&#xff0c;被拔出&#xff09;" 2.桌面右键此电脑&#xff0c;管理&#xff0c;找到“服务和应用程序”&#xff0c;点击“服务”&#xff0c;找到下图两个服务&#xff0c;点击圈起来…...

qt QNetworkProxy详解

一、概述 QNetworkProxy通过设置代理类型、主机、端口和认证信息&#xff0c;可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类&#xff08;如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等&#xff09;配置网络层代理支持…...

推荐IDE中实用AI编程插件,目前无限次使用

插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】&#xff0c;这个插件提供智能补全、智能预测、智能问答等能力&#xff0c;节省开发时间 直接在IDE中使用&#xff0c;就不用在网页中来回切换了 感觉还可以&#xff0c;响应速…...

【华为HCIP实战课程十五】OSPF的环路避免及虚链路,网络工程师

一、避免域间路由环路 1、区域内部的防环:区域内同步了LSA,SPF就决定了区域内部没有环路 2、区间的防环机制:非正常的ABR不更新3类LSA 为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则 1)、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接…...

【编程语言】正则表达式:POSIX 与 PCRE 的全面比较及应用

目录 正则表达式&#xff1a;POSIX 与 PCRE 的全面比较及应用1. 正则表达式的基本概念1.1 基本元素1.2 正则表达式的历史 2. POSIX 正则表达式2.1 POSIX 正则表达式的语法2.1.1 基本正则表达式 (BRE)2.1.2 扩展正则表达式 (ERE) 2.2 POSIX 正则表达式的使用场景2.3 使用 POSIX …...

Spark Streaming 数据流处理

一、创建Spark Streaming 环境 二、读取数据&#xff08;监听端口&#xff09; 三、任务处理 四、启动程序 我这里写的是简单的单词数量统计 import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.{SparkConf, SparkConte…...

高效规划神器 markmap:一键将 Markdown 变思维导图!

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; 微信公众号&#xff5c;搜一搜&…...

微服务基础架构(图)

微服务基础架构是一种现代化的软件架构模式&#xff0c;旨在将大型复杂的应用程序拆分为多个小型、独立的服务。每个微服务专注于特定的业务功能&#xff0c;可独立开发、部署和扩展。 在微服务基础架构中&#xff0c;通常会使用轻量级的通信机制&#xff0c;如 RESTful API 或…...

中电金信:大模型时代 金融机构企业架构转型如何更智能化?

随着人工智能技术的不断进步&#xff0c;AI大模型在金融行业已经广泛应用&#xff0c;推动金融机构实现更高效、智能化的服务&#xff0c;同时也为金融科技领域的发展带来新的挑战。中电金信基于业务建模的企业架构转型解决方案也顺势而动&#xff0c;关注大模型在具体场景上的…...

基于CRNN模型的多位数字序列识别的应用【代码+数据集+python环境+GUI系统】

基于CRNN模型的多位数字序列识别的应用【代码数据集python环境GUI系统】 基于CRNN模型的多位数字序列识别的应用【代码数据集python环境GUI系统】 背景意义 多位手写数字识别&#xff0c;即计算机从纸张文档、照片、触摸屏等来源接收并解释可理解的手写数字输入的能力。 随着…...

windows中命令行批处理脚本学习

目录 一 基础知识二 常见命令1. 输出 echo2. 注释 rem .... %...% :: goto if (10) ()3. 变量 set4. 获取参数 %数字 %*5. 退出 exit6. 复制 copy7.读取输出文件内容 type8. 帮助 命令xxx /?9.等待当前命令运行结束后,才执行下一条命令 call10. 修改字体编码 chcp11. 特殊变量…...

版本工具报错:Error Unity Version Control

NotConfiguredClientException: Unity VCS client is not correctly configured for the current user:Client config file....

ECharts饼图-饼图标签对齐,附视频讲解与代码下载

一、图表效果预览 引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#…...

Python实现基于WebSocket的stomp协议调试助手工具分享

stomp协议很简单&#xff0c;但是搜遍网络竟没找到一款合适的客户端工具。大多数提供的都是客户端库的使用。可能是太简单了吧&#xff01;可是即便这样&#xff0c;假如有一可视化的工具&#xff0c;将方便的对stomp协议进行抓包调试。网上类似MQTT的客户端工具有很多&#xf…...

《语音识别方案选型研究》

《语音识别方案选型研究》 一、引言二、语音识别技术概述&#xff08;一&#xff09;语音识别的基本原理&#xff08;二&#xff09;语音识别技术的发展历程 三、语音识别方案的分类&#xff08;一&#xff09;基于云端的语音识别方案&#xff08;二&#xff09;基于本地的语音…...

解决关于HTML+JS + Servlet 实现前后端请求Session不一致的问题

1、前后端不分离情况 在处理session过程中&#xff0c;如果前后端项目在一个容器中&#xff0c;session是可以被获取的。例如如下项目结构&#xff1a; 结构 后端的代码是基本的设置值、获取值、销毁值的内容&#xff1a; 运行结果 由此可见&#xff0c;在前后统一的项目中&a…...

ECharts饼图-饼图34,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…...

如何实现安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯

在工业自动化中&#xff0c;实现不同品牌、不同型号设备之间的通讯是确保生产流程顺畅、高效运行的关键。本文详细介绍了安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯的具体方法。 一&#xff0e;软硬件需求 1.一台安川MP3300CPU301&#xff0c;其IP地址是192.…...

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中&#xff0c;实现添加列表项&#xff0c;最后一项自动显示在可视区域范围&#xff01;&#xff01; 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…...

深入理解MVP架构模式

引言 MVP&#xff08;Model-View-Presenter&#xff0c;模型-视图-提供者&#xff09;是一种广泛应用于软件开发中的架构模式&#xff0c;是经典MVC&#xff08;Model-View-Controller&#xff09;的变种。在传统的MVC模式中&#xff0c;Model和View之间存在直接的依赖和数据交…...

Java面试题七

一、Java中的集合框架是如何组织的&#xff1f;列举几个常用的集合类。 Java中的集合框架是一个设计用来存储和操作对象集合的统一架构。它主要由两大接口派生出来&#xff1a;Collection和Map。这两个接口及其子接口和实现类共同构成了Java集合框架的主体。 集合框架的组织结…...

linux网络编程3——http服务器的实现和性能测试

http服务器的实现 本文使用上一篇博文实现的epollreactor百万并发的服务器实现了一个使用http协议和WebSocket协议的WebServer。 完整代码请看我的github项目 1. 水平触发(Level Trigger)与边沿触发(Edge Trigger) 1.1 水平触发 水平触发是一种状态驱动机制。当文件描述符&a…...

Docker部署Kamailio,并使用LinPhone实现网络通话

前提条件 准备一个路由器&#xff0c;一个服务器&#xff0c;两个终端设备&#xff08;手机或电脑&#xff09; docker部署安装 我使用的是windows系统&#xff0c;docker desktop 先启动Docker desktop打开cmd&#xff0c;输入docker命令docker run --name kamailio --rm…...

JAVA-石头迷阵小游戏

采用企业式项目结构,接下来我将分享全部代码和结构,希望大家点点关注! 这是我的结构。首先使用IDE创建一个Module,命名stone-maze,接着把自带src下的main方法删除,接着在src下创建包,包名为com.wmuj,接着创建APP类代码如下: package com.wmuj;public class App {publ…...

鸿蒙--进度条通知

主要介绍如何使用通知能力和基础组件,实现模拟下载文件,发送通知的案例。 效果 代码结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 公共常量类 │ │ └──utils │ │ ├──Logger.ets //…...