《Python编程从入门到实践》day24

# 昨日知识点学习

创建外星人从一个到一行

# 主程序snipdef _create_fleet(self):"""创建外星人群"""# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度alien = Alien(self)alien_width = alien.rect.widthavailable_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 创建第一行外星人for alien_number in range(number_aliens_x):# 创建一个外星人并将其加入当前行alien = Alien(self)alien.x = alien_width + 2 * alien_width * alien_number# self没有定义rect属性# self.rect.x = alien.xalien.rect.x = alien.xself.aliens.add(alien)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行结果:(一行外星人出现)

# 今日知识点学习

        13.3.3 重构_create_fleet()

 # 主程序片段# 创建第一行外星人for alien_number in range(number_aliens_x):self._create_alien(alien_number)def _create_alien(self, alien_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width = alien.rect.widthalien.x = alien_width + 2 * alien_width * alien_number        alien.rect.x = alien.xself.aliens.add(alien)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        13.3.4 添加行

               可用的垂直空间=屏幕宽度-第一行外星人的上边距(外星人高度)、飞船的高度以及外星人最初与飞船之间的局里(外星人高度的两倍)

                        available_space_y = settings.screen_height - ( 3 * alien_height) - ship_height

               每行下方的空白区域设为外星人的高度

                        number_rows = available_space_y // ( 2* alien_height)

import sys
import pygame
from Settings import Settings
from Ship import Ship
from alien import Alien
from bullet import Bulletclass AlienInvasion:"""管理游戏资源和行为的类"""def __init__(self):"""初始化游戏并创建游戏资源"""pygame.init()self.settings = Settings()# 非全屏运行self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))# 全屏运行# self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)# self.settings.screen_width = self.screen.get_rect().width# self.settings.screen_height = self.screen.get_rect().height# 设置当前窗口标题pygame.display.set_caption("Alien Invasion")self.ship = Ship(self)# 创建子弹精灵组self.bullets = pygame.sprite.Group()# 创建外星人精灵组self.aliens = pygame.sprite.Group()self._create_fleet()def _create_fleet(self):"""创建外星人群"""alien = Alien(self)alien_width, alien_height = alien.rect.size# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度available_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 计算屏幕可容纳多少行外星人ship_height = self.ship.rect.heightavailable_space_y = (self.settings.screen_height - (3 * alien_height) - ship_height)number_rows = available_space_y // (2 * alien_height)# 创建外星人群for row_number in range(number_rows):for alien_number in range(number_aliens_x):self._create_alien(alien_number, row_number)def _create_alien(self, alien_number, row_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width, alien_height = alien.rect.sizealien.x = alien_width + 2 * alien_width * alien_numberalien.rect.x = alien.xalien.rect.y = alien.rect.height + 2 * alien.rect.height * row_numberself.aliens.add(alien)def run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()# # 删除消失的子弹# for bullet in self.bullets.copy():#     if bullet.rect.bottom <= 0:#         self.bullets.remove(bullet)# print(len(self.bullets))self._update_screen()def _check_events(self):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:self._check_keydown_events(event)elif event.type == pygame.KEYUP:self._check_keyup_events(event)def _check_keydown_events(self, event):"""响应按键"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Trueelif event.key == pygame.K_LEFT:self.ship.moving_left = Trueelif event.key == pygame.K_q:sys.exit()elif event.key == pygame.K_SPACE:self._fire_bullet()def _check_keyup_events(self, event):"""响应松开"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Falseelif event.key == pygame.K_LEFT:self.ship.moving_left = Falsedef _fire_bullet(self):"""创建一颗子弹,并将其加入编组bullets中"""if len(self.bullets) < self.settings.bullets_allowed:new_bullet = Bullet(self)self.bullets.add(new_bullet)def _update_screen(self):"""更新屏幕上的图像,并切换到新屏幕。"""self.screen.fill(self.settings.bg_color)self.ship.blitme()for bullet in self.bullets.sprites():bullet.draw_bullet()self.aliens.draw(self.screen)# 让最近绘制的屏幕可见pygame.display.flip()def _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)if __name__ == '__main__':# 创建游戏实例并运行游戏ai = AlienInvasion()ai.run_game()
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

13.4 让外星人移动

         13.4.1 向右移动外星人群

# Settings.py
class Settings():"""存储《外星人入侵》的所有设置的类"""def __init__(self):"""初始化游戏的设置"""# 屏幕设置self.screen_width = int(1200)self.screen_height = int(800)self.bg_color = (230, 230, 230)# 飞船设置self.ship_speed = 1.5# 子弹设置self.bullet_speed = 1.0self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3# 外星人设置self.alien_speed = 1.0
# alien.py
import pygame
from pygame.sprite import Spriteclass Alien(Sprite):"""表示单个外星人的类"""def __init__(self, ai_game):"""初始化未设置其起始位置"""super().__init__()self.screen = ai_game.screenself.settings = ai_game.settings# 加载外星人图像,并设置其rect属性self.image = pygame.image.load('images/alien.bmp')self.rect = self.image.get_rect()# 每个外星人最初都在屏幕左上角附近self.rect.x = self.rect.widthself.rect.y = self.rect.height# 存储外星人的准确位置self.x = float(self.rect.x)def update(self) :"""向右移动外星人"""self.x += self.settings.alien_speedself.rect.x = self.x
# 主程序snipdef run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()def _update_aliens(self):"""更新外星人群中所有外星人的位置"""self.aliens.update()

运行结果:(外星人向右移动)

        13.4.2 创建表示外星人移动方向的设置 

# Settings.pysnip
# 外星人设置self.alien_speed = 1.0self.fleet_drop_speed = 10# fleet_direction为1表示向右移,为-1表示向左移self.fleet_direction = 1

        13.4.3 检查外星人是否撞到了屏幕边缘

# alien.pysnipdef check_edges(self):"""如果外星人处于屏幕边缘,就返回True"""screen_rect = self.screen.get_rect()if self.rect.right >= screen_rect.right or self.rect.left <= 0:return Truedef update(self) :"""向右移动外星人"""self.x += (self.settings.alien_speed * self.settings.fleet_direction)self.rect.x = self.x

        13.4.4 向下移动外星人群并改变移动方向

# 主程序snip def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()def _check_fleet_edges(self):"""有外星人到达边缘时采取相应的措施"""for alien in self.aliens.sprites():if alien.check_edges():self._change_fleet_direction()breakdef _change_fleet_direction(self):"""将整群外星人下移,并改变它们的方向"""for alien in self.aliens.sprites():alien.rect.y += self.settings.fleet_drop_speedself.settings.fleet_direction *= -1

运行结果:(外星人在屏幕上左右到达屏幕边缘后向下来回移动)

 13.5 射杀外星人

        碰撞:游戏元素重叠在一起

        使用sprite.groupcollide()检测两个编组成员之间的碰撞

        13.5.1 检测子弹与外星人的碰撞

# 主程序
snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)# 检查是否有子弹击中了外星人# 如果是,就删除相应的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)

        13.5.2 为测试创建大子弹

# Settings.pysnip
# 子弹设置self.bullet_speed = 1.0self.bullet_width = 300self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3

        13.5.3 生成新的外星人群

# 主程序snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()

        13.5.4 提高子弹的速度

# Settings.pysnip
# 子弹设置self.bullet_speed = 1.5self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3# 外星人设置self.alien_speed = 1.0self.fleet_drop_speed = 10# fleet_direction为1表示向右移,为-1表示向左移self.fleet_direction = 1

        13.5.5 重构_update_bullets()        

# 主程序snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)self._check_bullet_alien_collisions()def _check_bullet_alien_collisions(self):"""相应子弹和外星人碰撞"""# 删除发生碰撞的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()

13.6 结束游戏

        结束条件:①时间范围内未能完全消灭外星人

                          ②外星人撞到飞船或者抵达屏幕底端

                          ③限制玩家可使用的飞船数,飞船数量用完、

        13.6.1 检测外星人与飞船碰撞        

# 主程序def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):print("Ship hit!!!")

        13.6.2 响应外星人与飞船碰撞

# game_stats.py
class GameStats:"""跟踪游戏的统计信息"""def __init__(self, ai_game):"""初始化统计信息"""self.settings = ai_game.settingsself.reset_stats()def reset_stats(self):"""初始化在游戏运行期间可能变化的统计信息"""self.ships_left = self.settings.ship_limit
# Settings.pysnip
# 飞船设置self.ship_speed = 1.5self.ship_limit = 3
# ship.py
----snip----def center_ship(self):"""让飞船在屏幕底端居中"""self.rect.midbottom = self.screen_rect.midbottomself.x = float(self.rect.x)

 

# 主程序
import sys
from time import sleepimport pygamefrom Settings import Settings
from game_stats import GameStats
from Ship import Ship
from alien import Alien
from bullet import Bulletclass AlienInvasion:"""管理游戏资源和行为的类"""def __init__(self):"""初始化游戏并创建游戏资源"""pygame.init()self.settings = Settings()# 非全屏运行self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))# 全屏运行# self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)# self.settings.screen_width = self.screen.get_rect().width# self.settings.screen_height = self.screen.get_rect().height# 设置当前窗口标题pygame.display.set_caption("Alien Invasion")# 创建一个用于存储游戏统计信息的实例self.stats = GameStats(self)self.ship = Ship(self)# 创建子弹精灵组self.bullets = pygame.sprite.Group()# 创建外星人精灵组self.aliens = pygame.sprite.Group()self._create_fleet()def _create_fleet(self):"""创建外星人群"""alien = Alien(self)alien_width, alien_height = alien.rect.size# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度available_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 计算屏幕可容纳多少行外星人ship_height = self.ship.rect.heightavailable_space_y = (self.settings.screen_height - (3 * alien_height) - ship_height)number_rows = available_space_y // (2 * alien_height)# 创建外星人群for row_number in range(number_rows):for alien_number in range(number_aliens_x):self._create_alien(alien_number, row_number)def _create_alien(self, alien_number, row_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width, alien_height = alien.rect.sizealien.x = alien_width + 2 * alien_width * alien_numberalien.rect.x = alien.xalien.rect.y = alien.rect.height + 2 * alien.rect.height * row_numberself.aliens.add(alien)def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):self._ship_hit()def _check_fleet_edges(self):"""有外星人到达边缘时采取相应的措施"""for alien in self.aliens.sprites():if alien.check_edges():self._change_fleet_direction()breakdef _change_fleet_direction(self):"""将整群外星人下移,并改变它们的方向"""for alien in self.aliens.sprites():alien.rect.y += self.settings.fleet_drop_speedself.settings.fleet_direction *= -1def _check_events(self):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:self._check_keydown_events(event)elif event.type == pygame.KEYUP:self._check_keyup_events(event)def _check_keydown_events(self, event):"""响应按键"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Trueelif event.key == pygame.K_LEFT:self.ship.moving_left = Trueelif event.key == pygame.K_q:sys.exit()elif event.key == pygame.K_SPACE:self._fire_bullet()def _check_keyup_events(self, event):"""响应松开"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Falseelif event.key == pygame.K_LEFT:self.ship.moving_left = Falsedef _fire_bullet(self):"""创建一颗子弹,并将其加入编组bullets中"""if len(self.bullets) < self.settings.bullets_allowed:new_bullet = Bullet(self)self.bullets.add(new_bullet)def _update_screen(self):"""更新屏幕上的图像,并切换到新屏幕。"""self.screen.fill(self.settings.bg_color)self.ship.blitme()for bullet in self.bullets.sprites():bullet.draw_bullet()self.aliens.draw(self.screen)# 让最近绘制的屏幕可见pygame.display.flip()def _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)self._check_bullet_alien_collisions()def _check_bullet_alien_collisions(self):"""相应子弹和外星人碰撞"""# 删除发生碰撞的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()def _ship_hit(self):"""相应飞船被外星人撞到"""# 将Ship_left减1self.stats.ships_left -= 1# 清空余下的外星人和子弹self.aliens.empty()self.bullets.empty()# 创建一批新的外星人,并将飞船放到屏幕底部的中央self._create_fleet()self.ship.center_ship()# 暂停sleep(0.5)def run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()if __name__ == '__main__':# 创建游戏实例并运行游戏ai = AlienInvasion()ai.run_game()

        13.6.3 有外星人到达屏幕底端

# 主程序def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):self._ship_hit()# 检查是否有外星人到达了屏幕底部self._check_aliens_bottom()def _check_aliens_bottom(self):"""检查是否有外星人到达屏幕底端"""screen_rect = self.screen.get_rect()for alien in self.aliens.sprites():if alien.rect.bottom >= screen_rect.bottom:# 想飞船被撞到一样处理self._ship_hit()break

        13.6.4 游戏结束

# 主程序
----snip----def _ship_hit(self):"""响应飞船被外星人撞到"""if self.stats.ships_left > 0:# 将Ship_left减1self.stats.ships_left -= 1# 清空余下的外星人和子弹self.aliens.empty()self.bullets.empty()# 创建一批新的外星人,并将飞船放到屏幕底部的中央self._create_fleet()self.ship.center_ship()# 暂停sleep(0.5)else:self.stats.game_active = False# game_stats.pyclass GameStats:"""跟踪游戏的统计信息"""def __init__(self, ai_game):"""初始化统计信息"""self.settings = ai_game.settingsself.reset_stats()# 游戏在刚启动时处于活动状态self.game_active = Truedef reset_stats(self):"""初始化在游戏运行期间可能变化的统计信息"""self.ships_left = self.settings.ship_limit

13.7 确定应运行游戏的哪些部分

# 主程序
---snip---def run_game(self):"""开始游戏的主循环"""while True:self._check_events()if self.stats.game_active:self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()---snip---

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3029790.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python写了for i in range(10)却只打印一遍?

题目&#xff1a;定义一个两个参数的重复打印函数&#xff0c;第一个参数指定要打印的字符串&#xff0c;第二个参数指定要重复打印的次数&#xff0c;在主程序中调用该函数&#xff0c;打印10遍你的学号姓名。 为什么调用函数后结果只打印了一遍? 看了题目感觉就很诡异&#…

dev c++调试录入数字后回车直接关闭

1、我的dev c版本是5.11 2、输入7后&#xff0c;回车就没有了&#xff0c;原因是1013,1.cpp未包含在项目中 3、新建项目&#xff0c;并将test_debug.cpp包含在项目内&#xff0c;就可以下断点调试了

画出入学管理系统的顶层图和1层图

&#xff08;学校作业&#xff09; 题目如下&#xff1a; 某培训机构入学管理系统有报名、交费和就读等多项功能&#xff0c;下面是对其各项功能的说明&#xff1a; 1、报名&#xff1a;由报名处负责&#xff0c;需要在学员登记表上进行报名登记&#xff0c;需要查询课…

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-11 0…

出海企业必备神器:海外云手机的秘密你了解多少?

在全球化日益加速的今天&#xff0c;出海企业面临着前所未有的机遇与挑战。如何才能以一个较低的成本打入海外市场&#xff0c;实现业务的高速增长&#xff1f;答案就是——海外云手机&#xff01; 一、为何海外云手机成为出海企业的必备神器&#xff1f; 突破地域限制&#xf…

一个开源即时通讯源码

一个开源即时通讯源码 目前已经含服务端、PC、移动端即时通讯解决方案&#xff0c;主要包含以下内容。 服务端简介 不要被客户端迷惑了&#xff0c;真正值钱的是服务端&#xff0c; 服务是采用Java语言开发&#xff0c;基于spring cloud微服务体系开发的一套即时通讯服务端。…

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…

数据结构学习/复习12

一、排序概念与应用 二、插入排序 三、希尔排序 当间隔数为1时则为插入排序 1.一组一组排 2.多组并排 3.间隔数变化直至为1 四、性能测速代码

【Linux】简易进度条的实现

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解Linux中进度条的实现的相关内容。 如果看到最后您觉得这篇文章写得…

成本降低 90%,出海社交平台 Typing 基于 Databend 的大数据探

Typing&#xff08;输入中科技&#xff09;成立于 2022 年&#xff0c;是一家主要面向东南亚、拉美、中东等海外地区提供社交平台的出海企业。其社交平台类似于国内的 Soul、陌陌等&#xff0c;提供视频直播、语音聊天室、短视频、生活分享、文字聊天等社交功能&#xff0c;注册…

手写一个SPI FLASH 读写擦除控制器(未完)

文章目录 flash读写数据的特点1. 扇擦除SE&#xff08;Sector Erase&#xff09;1.1 flash_se 模块设计1.1.1 信号连接示意图&#xff1a;1.1.2 SE状态机1.1.3 波形图设计&#xff1a;1.1.4 代码 2. 页写PP(Page Program)2.1 flash_pp模块设计2.1.1 信号连接示意图&#xff1a;…

django中的日志处理

1、事件追踪 在什么样的时间发生了什么样的事情 2、bug调试 3、程序告警 4、大数据统计 ELK 日志分析系统 elasticsearh logstasn kibana 名词概念 loggers&#xff1a;日志器 —— 定大方向&#xff1a;1 handlers&#xff1a;处理器 —— 执行:3 formatters&#xff…

CTFHUB-技能树-Web题-RCE(远程代码执行)-文件包含

CTFHUB-技能树-Web题-RCE&#xff08;远程代码执行&#xff09; 文件包含 文章目录 CTFHUB-技能树-Web题-RCE&#xff08;远程代码执行&#xff09;文件包含解题方法1:![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71f7355b3c124dfe8cdf1c95e6991553.png#pic_ce…

【Python爬虫实战入门】:教你一个程序实现PPT模版自由

文章目录 &#x1f4a5;一、PPT模版爬取&#x1f525;1.1 第一个爬虫&#x1f6b2;1. 获取下载页面链接 ❤️1.2 第二个爬虫&#x1f6b2;1.3 第三个爬虫&#x1f388;2. 文件保存 ❤️1.4 翻页处理 &#x1f525;二、完整代码 &#x1f525;&#x1f525;&#x1f525; Pytho…

Java类加载器介绍

在Java中&#xff0c;类加载器是一种动态加载类的机制&#xff0c;它负责在运行时查找、加载和链接类文件。当Java应用程序需要创建某个类的对象时&#xff0c;类加载器会在运行时查找该类对应的.class文件&#xff0c;并将其加载到Java虚拟机中。Java类加载器通常分为三层&…

JVM调优—减少FullGC

背景 最近负责了一个审批流程新项目&#xff0c;带领了几个小伙伴&#xff0c;哼哧哼哧的干了3个月左右&#xff0c;终于在三月底完美上线了&#xff0c;好消息是线上客户用的很丝滑&#xff0c;除了几个非常规的业务提单之外&#xff0c;几乎没有什么大的问题&#xff0c;但是…

鸿蒙OpenHarmony技术:【Docker编译环境】

Docker环境介绍 OpenHarmony为开发者提供了两种Docker环境&#xff0c;以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下&#xff1a; 独立Docker环境&#xff1a;适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。基于HPM的Docker环…

工作中遇见的问题总结

1. 当我执行下面代码的时候&#xff0c;下边的的代码还是会执行 if(name"aaa"){console.log("111");}

动手学深度学习——多层感知机

1. 感知机 感知机本质上是一个二分类问题。给定输入x、权重w、偏置b&#xff0c;感知机输出&#xff1a; 以猫和狗的分类问题为例&#xff0c;它本质上就是找到下面这条黑色的分割线&#xff0c;使得所有的猫和狗都能被正确的分类。 与线性回归和softmax的不同点&#xff1…

一文彻底读懂信息安全等级保护:包含等保标准、等保概念、等保对象、等保流程及等保方案(附:等保相关标准文档)

1. 什么是等级保护&#xff1f; 1.1. 概念 信息安全等级保护是指根据我国《信息安全等级保护管理办法》的规定&#xff0c;对各类信息系统按照其重要程度和保密需求进行分级&#xff0c;并制定相应的技术和管理措施&#xff0c;确保信息系统的安全性、完整性、可用性。根据等…