网站首页 关于作者 Bee 的所有文章

  • 日赚八百 抖音无风险卡片跳转制作加变现高需求项目

    dy无风险跳转卡片制作加变现思路项目来啦综合测试 一天可以赚几百的可以自己用 也可以利用本信息差变现冷门高需求项目至少五六百个兄弟私信问我怎么做啦现在教程来啦 ...

    2023-09-24 242
  • 【安卓软件】UltData 数据恢复

    UltData是一款手机数据恢复软件,可以有效地帮助你从 Android 内存和 SD 卡中恢复已删除的照片、视频和 WhatsApp 文件。每当你删除上述类型的数据时,都可以使用此应用程序立即恢复它们,无需root。免费无广告,无需root,操作简单,页面简洁恢复:预览并选择您想要的数据以将其还原到您的设备快速过滤:扫描后,您可以按大小,文件类型和日期过滤文件,并选择仅显示已删除的项目 预览:在恢复之前预览并播放扫描的文件,以确保您可以找回已删除的文件 ...

    2023-09-24 217
  • 支付宝天天抽领红包亲测26.88元

    支付宝APP->底部理财->更多->股票->首页->天天抽->进入认证->等打电话过来确认即可->确认完成之后->领红包->认证审核比较慢->不懂可以去咨询一下支付宝客服->注销也是找客服->红包大小是随机的->亲测26.88元 ...

    2023-09-23 234
  • 支付宝红包大放水 几个人一包烟钱

    话不多说2到5抓紧时间撸 ...

    2023-09-23 217
  • 最新视频号卡封面教程

    最新视频号卡封面教程​ 适合做视频号的兄弟们,学习一下,免费分享 ...

    2023-09-23 189
  • 如何在Linux的VirtualBox中从USB驱动器启动

    你有一个 立付Live Linux USB 吗?在当前系统上测试它的常用方法是重新启动,并在系统重新启动时选择从立付 USB 启动。 但这很烦人,因为你需要停止计算机上的工作并重新启动它。 一种干扰较小的方法是使用虚拟机。 是的,你可以使用 VirtualBox 从虚拟机中的 USB 启动。这样,你不必为了尝试而在 VM 中安装发行版,而是改用立付会话。 在本教程中,我将展示在 Linux 系统使用 VirtualBox 从 USB 驱动器启动的步骤。这需要花费一些时间和精力,但可以让你免于重启系统。 在 Linux 的 VirtualBox 中从 USB 驱动器启动 由于这是针对高级用户的教程,因此我省略了你事先需要的几个步骤: 在 Linux 系统上 安装 VirtualBox 创建立付 Linux USB,最好 使用 Ventoy 本指南分为三个部分: 创建虚拟机磁盘文件 在 VM 中使用 USB 启动 删除虚拟机磁盘(可选) 那么让我们从第一个开始。 步骤 1:创建虚拟机磁盘文件(VMDK) 首先,你需要识别 USB 驱动器的磁盘名称,为此,你需要 列出系统的驱动器。 为此,我将使用 lsblk 命令: lsblk ? 确保使用不带任何数字的磁盘名称。就我而言,Ventoy 以 sdb1 命名,但我仍然只能使用 sdb。 从上图中,你可以看到,Ventoy 列出了 sdb11,但你必须使用不带任何数字的名称。这意味着我必须只使用sdb,否则,它会抛出错误。 找到驱动器名称后,使用以下命令中的 VBoxManage命令来创建: sudo VBoxManage createmedium disk --filename=/path/to/rawdisk.vmdk --variant=RawDisk --format=VMDK --property RawDrive=/dev/sda 在上面的命令中,将 /path/to/rawdisk.vmdk替换为要保存文件的路径 ,将/dev/sda替换为目标驱动器。 就我而言,我想在我的主目录中创建一个名为 IF.vmdk的文件,并且我的目标驱动器是/dev/sdb,然后,我将使用以下命令: ? 你需要提供绝对路径来创建 vmdk 文件! sudo VBoxManage createmedium disk --filename=/home/sagar/IF.vmdk --variant=RawDisk --format=VMDK --property RawDrive=/dev/sdb 最后,使用 chmod命令更改权限: sudo chmod 777 Filename.vmdk 步骤 2:在 Linux 的 VirtualBox 中从 USB 启动 首先,从系统菜单中打开 VirtualBox,然后单击 “新建New” 按钮。 在那里,为你的虚拟机命名并选择操作系统类型及其版本: 现在,单击 “下一步Next” 按钮,它会要求你为虚拟机分配硬件资源: 完成硬件资源分配后,单击“下一步”按钮。 在这里,你将找到创建或添加虚拟磁盘的选项。现在,请执行 3 个简单步骤: 选择第二个选项 “使用现有虚拟硬盘文件Use an Existing Virtual Hard Disk File”。 点击“文件”图标。 点击“添加Add”按钮并选择你最近创建的以 .vmdk结尾的文件。 选择文件后,它将显示文件的名称,选择它并点击 “选择Choose” 选项: 它将向你显示已选择从中启动的文件。单击下一步,它将显示你所做的选择的摘要。 点击 “完成Finish” 按钮: 就是这样! 虚拟机已创建。 要启动虚拟机,首先选择虚拟机并单击启动按钮: 由于我的 USB 有 Ventoy,你可以看到,此处列出了多个发行版: 很酷。是么? 步骤 3:使用删除虚拟机及 vmdk 文件(可选) 当我在删除虚拟机后尝试删除 vmdk 文件时,当然,它被删除了,但每当我尝试创建具有相同名称的新文件时,它都会给我一个错误,说该文件已经存在! 因此,在这里,我将引导你了解如何删除虚拟机及 vmdk 文件。 首先,关闭虚拟机并将其删除。 现在,如果你尝试 使用 rm 命令并提升权限删除 vmdk 文件,你可以删除它(但这就是幻觉的开始)。 例如,在这里,我删除了 IF.vmdk文件: sudo rm IF.vmdk 现在,如果我尝试创建一个具有相同名称的新 vmdk 文件,则会出现错误,指出该文件已存在: 要删除 vmdk 文件,首先,你必须使用以下命令取消注册该文件: sudo VBoxManage closemedium disk /path/to/MyDrive.vmdk 完成后,你可以使用 rm命令删除该文件,它将轻松删除: sudo rm Filename.vmdk 然后,如果你尝试创建具有相同文件名的 vmdk 文件,你可以这样做: 这就行了! 更多虚拟机技巧 如果你正在寻找最快的 VM,可以使用 Qemu + KVM 的组合。 ...

    2023-09-23 215
  • 什么是网络交换机,主要功能和特点有哪些?

    网络交换机(Network Switch)是计算机网络中的关键设备,它的主要作用是在局域网(LAN)内部传输数据包并实现设备之间的快速、可靠通信。 网络交换机在OSI(开放系统互连)模型的数据链路层(第2层)或网络层(第3层)上运行,根据其类型和功能的不同,可以分为多种类别,如以太网交换机、路由交换机等。 网络交换机的主要功能和特点包括: 数据包转发: 网络交换机能够接收和处理从不同设备发送过来的数据包。它通过查看数据包中的目标MAC地址(在第2层)或目标IP地址(在第3层)来确定应该将数据包转发到哪个端口,从而实现设备之间的通信。 快速和精确的转发: 交换机通常以硬件方式实现数据包的转发,因此能够提供非常高的数据传输速度和低延迟。这使得它们非常适合用于快速的局域网通信。 多端口连接: 网络交换机通常具有多个端口,这意味着它可以连接多台计算机、服务器、打印机和其他网络设备,从而构建一个完整的局域网。 自学习能力: 交换机具有自学习能力,可以自动学习连接到它的设备的MAC地址,以便将数据包准确地转发到目标设备,而无需手动配置。 虚拟局域网(VLAN)支持: 一些高级交换机支持VLAN技术,允许将网络分割为多个虚拟局域网,从而提高网络的安全性和管理性。 质量服务(QoS): 一些交换机支持QoS功能,可以根据应用程序或服务的优先级来管理数据流量,确保关键应用的性能优先级较高。 ...

    2023-09-23 191
  • 网络交换机如何工作?

    当一台设备(源设备)要发送数据包到另一台设备(目标设备)时,源设备将数据包发送到与交换机连接的端口。这个数据包包含了目标设备的MAC地址(在以太网中)或IP地址(在更高层次的交换机中)。 交换机接收到数据包后,会读取数据包的头部信息,特别是目标地址信息。这样,交换机知道了数据包的目标设备是哪一个。 如果是以太网交换机,它会根据源设备的MAC地址学习到哪个端口连接了这台设备。这个学习过程使得交换机能够建立一个MAC地址表,记录着每个MAC地址与连接它的端口的对应关系。 交换机根据目标设备的地址信息,查找MAC地址表来确定数据包应该被转发到哪个端口。交换机会将数据包转发到与目标设备连接的正确端口,从而实现了数据包的准确传输。 交换机的关键特点之一是其高速转发能力。由于交换机在硬件层面进行数据包转发,而不是软件层面,所以它可以以非常高的速度进行操作,几乎没有延迟,从而提供了高效的局域网通信。 除了单播(一对一通信)之外,交换机还可以处理广播和多播数据包。广播数据包会被交换机转发到所有端口,而多播数据包则只会被转发到与多播组成员相连的端口。 高级交换机还可以支持虚拟局域网(VLAN)和质量服务(QoS)等功能,以实现更高级的网络管理和控制。 ...

    2023-09-23 170
  • 网络交换机的类型有哪些?

    网络交换机根据其类型和配置可以分为不同类别,包括模块化交换机和固定配置交换机,固定配置交换机又可以分为三种类型:非管理型交换机、智能交换机和管理型交换机。 模块化交换机 模块化交换机是一种高度可配置和灵活的网络设备。 这种类型的交换机允许用户根据他们的特定需求和应用来配置和定制交换机的硬件和软件功能。 模块化交换机的主要特性和优点包括: 扩展性:模块化交换机提供了高度的扩展性,使得它们能够满足不断变化的网络需求。用户可以增加或减少端口,改变端口的速度和类型,或者添加新的功能模块,如防火墙、VPN、内容过滤等。 高性能:由于模块化交换机允许用户定制其硬件和软件配置,它们通常能够提供比固定配置交换机更高的性能和更低的延迟。这使得模块化交换机特别适合于大型企业和数据中心环境。 高可用性:模块化交换机通常具有冗余的电源和冷却系统,以及热插拔的功能模块,这使得它们能够提供高度的可用性和故障恢复能力。 尽管模块化交换机提供了许多优点,但它们也有一些潜在的缺点,包括较高的初始购买成本和管理复杂性。 固定配置交换机 固定配置交换机是预配置的网络设备,它们通常具有固定数量的端口和预设的功能。 虽然这种类型的交换机不如模块化交换机那么灵活和可配置,但它们通常更简单、更易于管理,并且成本更低。 固定配置交换机可以进一步分为以下三种类型: 1. 非管理型交换机 非管理型交换机是最简单、最基础的固定配置交换机类型。 这种交换机通常没有任何配置或管理选项,只需要将它们连接到网络中,它们就会自动开始工作。 非管理型交换机主要用于家庭和小型办公室环境,需要简单、低成本,并且不需要复杂配置或管理的网络设备。 2. 智能交换机 智能交换机是一种中等复杂性的固定配置交换机。 这种交换机提供了一些基本的配置和管理选项,如VLAN管理、QoS优先级设定等,但不支持完全的交换机管理和配置功能。 智能交换机适合于需要一些网络管理和配置,但不需要全功能管理交换机的中小型企业环境。 3. 管理型交换机 管理型交换机是最复杂、最完全的固定配置交换机类型。 这种交换机提供了全面的交换机管理和配置功能,包括VLAN管理、QoS优先级设定。 管理型交换机是最复杂、最完全的固定配置交换机类型。这种交换机提供了全面的交换机管理和配置功能,包括VLAN管理、QoS优先级设定,安全策略,堆叠和聚合链接,以及多层交换等。管理型交换机主要用于大型企业和数据中心环境,需要高度的网络性能和管理功能。 尽管管理型交换机提供了高级的配置和管理功能,但它们的成本和管理复杂性也相对较高。因此,这种类型的交换机主要适合于有专业网络团队并且对网络性能和安全性有高要求的组织。 ...

    2023-09-23 209
  • 如何选择网络交换机?

    选择网络交换机时,需要考虑多个因素。 吞吐量: 根据网络的带宽需求,选择适当速度的交换机。通常有千兆以太网(1 Gbps)、十千兆以太网(10 Gbps)和百千兆以太网(100 Gbps)等选项。确保交换机的速度足以支持网络中的数据流量。 端口数量: 确定您需要多少个端口来连接所有设备。考虑网络中的用户数量、服务器、打印机以及其他设备,以便选择具有足够端口的交换机。 以太网供电(PoE): 如果您计划连接需要供电的设备,如IP电话、监控摄像头或无线接入点,考虑选择支持PoE的交换机。这将减少电缆布线的复杂性,并确保设备正常工作。 可堆叠性: 如果您需要快速扩展网络或希望将多个交换机作为一个单元进行管理,可堆叠交换机是一个好选择。它们可以简化网络管理并提供冗余。 管理功能: 根据您的网络管理需求,选择合适的交换机类型。托管交换机提供广泛的管理和配置选项,而非托管交换机更简单且无需配置。 预算: 预算是一个关键因素,考虑您的财务限制,并在性能和功能之间找到平衡。智能托管交换机通常提供了不错的性价比,但完全托管的交换机功能更全面。 网络拓扑和设计: 考虑您的网络拓扑和设计,确定交换机的位置和连接方式。这将有助于确定所需的交换机类型和数量。 未来扩展: 考虑网络的未来扩展需求,选择具有足够可扩展性的交换机,以便适应将来的增长。 品牌和可靠性: 考虑选择可靠的品牌和供应商,以确保您的网络设备的稳定性和性能。 综合考虑以上因素,可以帮助您选择适合您网络需求的网络交换机,确保网络运行顺畅并满足未来的要求。 ...

    2023-09-23 235
  • K网首发TwoNav开源导航(v2.0.39版本过授权)

    v2.0.39版TwoNav导航系统 已过授权 所有功能可用 环境要求 PHP版本: 7.3 <= PHP <= 8.1 数据库: MySQL5.6 安装教程: 把文件上传解压 导入数据库文件:ma_s7a_cn_20230916_065732.sql 修改数据库配置 data/config.php 演示站点:ma.s7a.cn  admin 123123.. (请勿修改密码) ...

    2023-09-17 264
  • 价值1k 短视频无限引流创业粉脚本

    价值1k  短视频无限引流创业粉脚本支持任何手机 分辨率不屏蔽 一个按钮 全自动执行放开双手 ...

    2023-09-17 219
  • 中央网信办印发《关于进一步加强网络侵权信息举报工作的指导意见》

    2023年9月15日,中央网信办印发《关于进一步加强网络侵权信息举报工作的指导意见》(以下简称《指导意见》),对网络侵权信息举报工作进行系统谋划和整体安排,旨在维护保障广大网民网络合法权益。 中央网信办有关负责人指出,近年来,网络侵权信息时有出现、屡禁不绝,扰乱网络传播秩序,侵害网民网络合法权益,社会反映强烈。网络侵权信息举报工作是网信部门践行网上群众路线的重要举措。制定出台《指导意见》,对推动网络生态治理,更好维护保障广大网民网络合法权益具有重要意义。 中央网信办有关负责人指出,《指导意见》明确网络侵权信息举报工作两大任务。一是切实保护公民个人网络合法权益。要求各地网信部门把握举报受理重点内容和重点领域;建立网络暴力信息举报快速处置通道,从严处置首发、首转、多发、煽动传播网络暴力信息的账号;加强特殊群体网络合法权益保护,优先保护未成年人网络合法权益。二是切实维护企业网络合法权益。要求开设线上涉企举报专区,健全举报查证机制,强化举报政策指导,重点受理处置侵害企业及企业家名誉的虚假不实信息、违法网站和账号,优化网上营商环境,支持各类企业做大做优做强。 中央网信办有关负责人强调,网络侵权成本低、维权成本高,是当前网民举报维权过程中面临的难点问题。《指导意见》要求各地网信部门优化举报服务,完善制度规范,统一研判标准,强化技术支撑,健全处置机制,满足广大网民多层次多样化举报需求。要求各地网信部门压紧压实网站平台主体责任,指导属地网站平台完善分级分类处置举措,建立“限时加私”“争议标签”等工作机制,提升处置效果;严格督导检查,加大惩处力度。 原文链接 http://www.cac.gov.cn/2023-09/15/c_1696347685563097.htm ...

    2023-09-16 215
  • 【安卓软件】暮云电脑(解锁无限时间)

    暮云电脑是一款超级好用的云游戏平台,因此用户们可以利用该平台帮助自己去云玩游戏,这样即便自己的手机配置比较低端,也能流畅的体验各种需要高配置的游戏,例如原神,战双,逆水寒等游戏,此外暮云电脑已经破解,可以为玩家们提供无限的时间,因此感兴趣的玩家,快来下载暮云电脑体验吧! ...

    2023-09-16 226
  • 波波课堂AE-动效字体第3期-ae动态字体

    没有目录,凑合看吧课是好课素材第一次课第五次课第四次课第十—次课第十五次课第十四次课第十三次课第十七次课第十六次课第十九次课第十二次课第十次课第三次课第七次课 ...

    2023-09-16 221
  • 价值几百 知乎无限关注精准粉创业粉引流

    首发价值几百的知乎无限关注精准用户高曝光 而且都是最近活跃的众所周知 b站和知乎的粉丝质量最好!!首发教程来啦 ...

    2023-09-16 187
  • WordPress插件–百度快速提交插件 加速百度爬虫和收录

    我们很多站长应该是清楚的,我们在百度站长后台是可以看到普通收录和快速收录两项,这个到底有没有对网站起到作用呢?根据百度官方的说法是”资源享受快速抓取校验、快速搜索展现,不保证收录效果”。我们可以看到有不少商业WordPress主题也有自带这些功能,而且也有一些站长提供的插件。    ...

    2023-09-16 190
  • 雷克沙私密文件保存应用

    雷克沙加密应用,私密文件保存的好帮手。 如图。 ...

    2023-09-16 172
  • 为什么Java中字符串是不可变的

    文章目录 1. 什么是不可变类? 2.字符串的运作方式 3.不可变字符串的优点 3.1. 应用程序和数据安全性 3.2. 提高性能 3.3. 线程安全性 3.4. 缓存 结论 默认情况下,Java 字符串是不可变的。字符串的不变性有助于提供缓存、安全性、快速性能和更好的内存利用率等功能。本教程讨论字符串的不可变性如何帮助实现这些功能。 1. 什么是不可变类? 什么是不可变类? 让我们从不可变性本身开始。一个不可变对象是一个其状态在其整个生命周期内都保证不会发生改变的对象。这意味着一旦初始化了对象的状态,它就无法在任何情况下被改变。 Java也有不可变类,主要包括String和包装类。 2.字符串的运作方式 在Java中,内存被分为三个部分,即堆(Heap)、栈(Stack)和字符串常量池(String Pool)。字符串常量池是专门用于存储字符串字面值的特殊区域。 当我们创建一个字符串时,会在字符串常量池中搜索具有完全相同内容的String对象。如果找到一个现有的String对象,那么它的引用就会指向新变量,因此,实际上,现有对象也会被重用于新的字符串声明。这有助于减小因为存在多个具有相同内容的字符串而导致的内存使用量。 String str1 = "value"; String str2 = "value"; String str3 = "value"; 上述程序创建了三个String类型的变量,它们都指向字符串常量池区域中的同一个对象。将来所有具有内容“value”的字符串都会指向堆中的同一对象,从而节省内存。 当我们修改一个字符串时,会在字符串常量池中创建一个新的带有修改内容的字符串。现有的对象永远不会被改变。 str3 = "test"; 当没有引用变量指向字符串常量池中的字符串对象时,该对象将被垃圾回收。通过这种方式,一旦创建了一个字符串,它就永远不会被更改。 3.不可变字符串的优点 现在让我们了解一下上面讨论的不可变性如何在运行时有所帮助。 3.1. 应用程序和数据安全性 首先,毫无疑问最重要的原因是安全性。这不仅适用于我们的应用程序,甚至适用于JDK本身。Java类加载机制是根据传递的类名参数来工作的,然后在类路径中搜索这些类。 在以下程序中,我们通过类名加载SQL服务器驱动程序。想象一下,如果字符串是可变的,那么恶意操作者可以更改驱动程序名称,在运行时加载恶意驱动程序类,并几乎不费力地入侵应用程序。 public static final String DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; Class.forName(DRIVER_CLASS); 类似地,恶意操作者可以更改SQL语句并在运行时执行SQL注入攻击。不可变性确保不会发生此类修改。 3.2. 提高性能 String类的不可变性是字符串常量池的基础。如果没有不可变性,普通堆内存和字符串常量池之间就没有区别。 正如在前面的部分中讨论的那样,字符串常量池有助于实现更好的内存利用率,从而提高性能。 3.3. 线程安全性 不可变对象在多线程应用程序中自动具备线程安全性。如果某物无法更改,那么即使线程也无法更改它。非常简单! 由于String类在Java编程语言中是主要的构建块,因为它用于类加载机制,因此在多线程情况下,必须防止String类被污染。不可变性在这里起到了魔法作用。 3.4. 缓存 缓存通常是作为键-值对实现的,类似于Java中的Map实现。缓存键通常存储为字符串,以便快速查找。 考虑一下,如果我们可以在与其关联的值存储在缓存中之后更改键,那么在我们意外构建相同键之前,将不可能再检索该值。 字符串的不可变性保证了缓存键永远不会被更改。这就是为什么在Java中字符串是缓存和映射中最常用的键的原因。 结论 从以上讨论可以得出结论,字符串的不可变性有助于实现Java应用程序所需的安全性和性能。 ...

    2023-09-16 234
  • Java 字符串常量池

    文章目录 1.Java中的不可变字符串 2.Java中的String常量池是什么? 3.字符串文字和字符串对象的区别 4.String.intern() API 5.优点 5.1. 增强的安全性 5.2. 线程安全性 6.缺点 6.1. 无法扩展String类 6.2. 长时间内存中的敏感数据 6.3. 可能的OutOfMemoryError 了解Java中的String类,创建它的不可变性背后的动机,以及String常量池的概念。我们将看到当我们通过String文字或String构造函数创建String实例时,内存是如何被操作的。最后,我们将讨论String类的不可变性引起的主要优点和缺点。 1.Java中的不可变字符串 字符串是字符序列。在Java中,与其他编程语言类似,字符串是预定义类型的一部分。Java有java.lang.String类,其实例表示字符串。 String类是一个不可变类。不可变意味着一旦创建了String实例,就无法更改它。 通常,许多敏感信息(用户名、密码、URL、端口、数据库、套接字连接)被表示并传递为字符串。通过使这些信息不可变,代码就能够免受各种安全威胁的影响。 字符串的不可变性还允许缓存字符串文字,这允许应用程序在堆内存和垃圾收集器上产生最小的影响的情况下使用大量的字符串文字。 在可变的上下文中,修改字符串文字可能导致变量损坏。 2.Java中的String常量池是什么? 在Java中,内存被分为三个部分,即堆、栈和字符串池。字符串常量池是用于存储字符串文字的特殊区域。 请注意,在Java 7之前,字符串池是永久代内存区的一部分。 从Java 7开始,字符串与应用程序创建的其他对象一起分配在Java堆区域中。 随后,在Java 8中,永久代已完全删除。 因此,在最新的JVM中,字符串池是堆内存中的一个特殊区域,用于存储字符串文字。 尽管字符串池已从永久代空间移动到堆内存区域,但围绕字符串的创建、文字、对象和内部化的所有概念都没有改变。   3.字符串文字和字符串对象的区别 在Java中,字符串文字是使用双引号创建的字符串,而字符串对象是使用new()运算符创建的字符串。 需要注意的是,字符串文字是在字符串池区域创建的,而字符串对象是在堆内存区域创建的。 String strLiteral = "Hello World"; String strObj = new String("Hello World"); 假设我们想创建两个具有相同内容“panziye.com”的字符串。如果已经存在一个内容为“panziye.com”的字符串,那么新的文字将指向已经存在的文字。而对于字符串对象,每次都会在堆内存中创建一个新的字符串对象。 让我们看一个示例: String a = "panziye.com"; String b = "panziye.com"; System.out.println(a == b); //true 在上面的程序中,我们创建了两个具有相同内容的字符串文字。在字符串池中创建了’a’之后,下一个字符串文字’b’指向了内存中的同一个对象,所以’a == b’是true。这是因为Java中的字符串文字会被重用,以节省内存空间。 String a = "panziye.com"; String b = "panziye.com"; System.out.println(a == b); String c = new String("panziye.com"); System.out.println(a == b); //true System.out.println(b == c); //false 在上面的程序中,我们创建了一个具有类似内容的新字符串对象。当我们检查对象引用是否相等时,我们看到’b’和’c’指向不同的对象。这意味着当我们创建字符串对象’c’时,在内存中创建了一个新的对象。这是因为每次使用new关键字创建字符串对象时,都会在堆内存中分配一个新的对象。这与字符串文字不同,字符串文字在字符串池中被重用。 4.String.intern() API 我们知道字符串文字是在字符串池中创建的,而字符串对象是在堆内存区域中创建的。 我们可以使用String.intern()方法为字符串对象创建字符串文字。当在字符串对象上调用intern()方法时,它会在堆内存中创建一个String对象的精确副本,并将其存储在字符串常量池中。 String a = "panziye"; String b = "panziye"; String c = new String("panziye"); String d = c.intern(); 在上面的例子中,字符串a、b和d将引用SCP中相同的字符串文字。而字符串c将继续指向堆内的对象。 5.优点 5.1. 增强的安全性 正如前面所述,字符串池允许字符串不可变。不可变对象有助于使应用程序更安全,因为它们可能存储敏感信息。 由于我们无法更改不可变对象,这有助于提高安全性。 5.2. 线程安全性 字符串可能是Java应用程序中最常用的对象。想象一下,如果字符串是可变的。在这种情况下,在应用程序中管理线程安全将会成为一场噩梦。 任何不可变对象都具有天生的线程安全性。这意味着多个线程可以共享和操作字符串,而无需担心损坏和不一致性。 6.缺点 6.1. 无法扩展String类 如果我们想扩展String类以添加更多功能,那是不可能的。不可变类被声明为final以防止扩展。 但幸运的是,我们有许多第三方库(如Apache Commons Lang、Spring Framework、Guava),它们为几乎所有种类的用途提供了出色的实用程序类。 6.2. 长时间内存中的敏感数据 字符串中的敏感数据(例如密码)可能会在内存中(在字符串常量池中)驻留更长时间,因为字符串常量池受到垃圾收集器的特殊处理。垃圾收集器不会像访问其他内存区域那样频繁(周期性)访问字符串常量池。 由于这种特殊处理,敏感数据会在字符串常量池中保存很长时间,可能会容易受到不希望的使用。 为了避免这种潜在的缺点,建议将敏感数据(例如密码)存储在char[]中,而不是String中。 6.3. 可能的OutOfMemoryError 字符串常量池与其他内存区域相比是一个小内存区域,可能会很快填满。将太多字符串文字存储在字符串常量池中会导致OutOfMemoryError。 ...

    2023-09-16 179

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注