4.2java包装类
在 Java 里,基本数据类型不具备对象的特性,像不能调用方法、参与面向对象的操作等。为了让基本数据类型也能有对象的行为,Java 提供了对应的包装类。同时,自动拆箱和自动装箱机制让基本数据类型和包装类之间的转换更加便捷。
包装类概述
Java 为 8 种基本数据类型都提供了对应的包装类,具体如下:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类属于引用类型,继承自 Object
类,具备对象的特性,能调用方法和参与面向对象的操作。
包装类的用途
- 作为泛型的类型参数:泛型只能使用引用类型,不能使用基本数据类型,这时就需要用到包装类。例如:
import java.util.ArrayList;
import java.util.List;public class WrapperClassGenericExample {public static void main(String[] args) {// 正确,使用包装类作为泛型类型参数List<Integer> intList = new ArrayList<>();intList.add(1);// 错误,不能使用基本数据类型作为泛型类型参数// List<int> wrongList = new ArrayList<>(); }
}
- 包含实用方法:包装类提供了一些实用的方法,像类型转换、进制转换等。例如:
public class WrapperClassMethodExample {public static void main(String[] args) {String str = "123";// 将字符串转换为整数int num = Integer.parseInt(str); System.out.println(num);int decimal = 255;// 将十进制数转换为十六进制字符串String hex = Integer.toHexString(decimal); System.out.println(hex);}
}
自动装箱和自动拆箱
自动装箱
自动装箱指的是把基本数据类型自动转换为对应的包装类对象。在 Java 5 之后引入了自动装箱机制,让代码更简洁。例如:
public class AutoBoxingExample {public static void main(String[] args) {int num = 10;// 自动装箱,将 int 类型的 num 转换为 Integer 类型的 objInteger obj = num; System.out.println(obj);}
}
自动拆箱
自动拆箱是把包装类对象自动转换为对应的基本数据类型。例如:
public class AutoUnboxingExample {public static void main(String[] args) {Integer obj = 20;// 自动拆箱,将 Integer 类型的 obj 转换为 int 类型的 numint num = obj; System.out.println(num);}
}
自动装箱和拆箱的实现原理
自动装箱和拆箱是通过编译器在编译阶段自动插入相应的方法调用实现的。具体来说,自动装箱调用的是包装类的 valueOf()
方法,自动拆箱调用的是包装类的 xxxValue()
方法(xxx
代表基本数据类型)。例如:
public class AutoBoxingUnboxingPrinciple {public static void main(String[] args) {// 自动装箱,实际调用 Integer.valueOf(30)Integer obj = 30; // 自动拆箱,实际调用 obj.intValue()int num = obj; }
}
注意事项
- 缓存问题:部分包装类(如
Integer
、Byte
、Short
、Long
、Character
)会对一定范围内的值进行缓存,以提高性能。例如,Integer
类会缓存 -128 到 127 之间的值,当使用自动装箱创建这个范围内的Integer
对象时,会直接从缓存中获取,而不是创建新对象。示例如下:
public class WrapperClassCacheExample {public static void main(String[] args) {Integer a = 100;Integer b = 100;// 输出 true,因为 100 在缓存范围内,a 和 b 引用同一个对象System.out.println(a == b); Integer c = 200;Integer d = 200;// 输出 false,因为 200 不在缓存范围内,c 和 d 是不同的对象System.out.println(c == d); }
}
- 空指针异常:在进行自动拆箱时,如果包装类对象为
null
,会抛出NullPointerException
异常。例如:
public class NullPointerInAutoUnboxing {public static void main(String[] args) {Integer obj = null;// 会抛出 NullPointerException 异常int num = obj; }
}
通过使用包装类、自动装箱和自动拆箱机制,Java 让基本数据类型和对象之间的交互更加灵活和方便。不过在使用过程中,要注意缓存问题和空指针异常等潜在风险
批量字符串拼接操作
在 Java 里,String
类是不可变的,这意味着一旦创建了一个 String
对象,它的内容就不能被改变。当使用 +
运算符进行字符串拼接时,每次拼接操作都会创建一个新的 String
对象。如果进行批量拼接,会产生大量临时对象,这不仅会占用额外的内存空间,还会增加垃圾回收的负担,从而影响性能。
1. StringBuilder
StringBuilder
是一个可变的字符序列,它提供了高效的字符串拼接操作。在 JDK 1.5 中引入,是非线程安全的,因此在单线程环境下性能较高。
常用方法
append()
:用于在当前字符序列末尾追加各种类型的数据。insert()
:在指定位置插入各种类型的数据。delete()
:删除指定位置的字符。reverse()
:反转当前字符序列。
示例代码
public class StringBuilderExample {public static void main(String[] args) {StringBuilder sb = new StringBuilder();// 追加字符串sb.append("Hello");sb.append(" ");sb.append("World");// 在指定位置插入字符串sb.insert(5, ",");// 删除指定位置的字符sb.delete(5, 6);// 反转字符串sb.reverse();System.out.println(sb.toString()); // 输出 dlroW olleH}
}
适用场景
适用于单线程环境下需要频繁进行字符串拼接、修改等操作的场景,例如在循环中动态构建字符串。
2. StringBuffer
StringBuffer
也是一个可变的字符序列,与 StringBuilder
类似。它是线程安全的,因为它的大部分方法都被 synchronized
关键字修饰,因此在多线程环境下可以保证数据的一致性,但性能相对较低。
常用方法
StringBuffer
的方法与 StringBuilder
基本相同,如 append()
、insert()
、delete()
、reverse()
等。
示例代码
public class StringBufferExample {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append("Hello");sb.append(" ");sb.append("Java");System.out.println(sb.toString()); // 输出 Hello Java}
}
适用场景
适用于多线程环境下需要频繁进行字符串拼接、修改等操作,且需要保证线程安全的场景。
3. StringJoiner
StringJoiner
是 Java 8 引入的一个类,用于方便地将多个字符串用指定的分隔符连接起来,还可以指定前缀和后缀。
常用方法
add()
:添加一个元素到StringJoiner
中。merge()
:合并另一个StringJoiner
的内容。setEmptyValue()
:设置当没有元素时的空值表示。
示例代码
import java.util.StringJoiner;public class StringJoinerExample {public static void main(String[] args) {// 指定分隔符、前缀和后缀StringJoiner sj = new StringJoiner(", ", "[", "]");sj.add("Apple");sj.add("Banana");sj.add("Cherry");System.out.println(sj.toString()); // 输出 [Apple, Banana, Cherry]// 合并另一个 StringJoinerStringJoiner anotherSj = new StringJoiner("; ");anotherSj.add("Dog");anotherSj.add("Cat");sj.merge(anotherSj);System.out.println(sj.toString()); // 输出 [Apple, Banana, Cherry, Dog; Cat]}
}
适用场景
适用于需要将多个字符串用特定分隔符连接起来的场景,例如将数组元素连接成一个字符串。
性能对比
package com.example.pkg4;import java.util.StringJoiner;public class Test3 {public static void main(String[] args) {int n = 10000;// 使用 + 运算符进行字符串拼接long startTime1 = System.currentTimeMillis();String result1 = "";for (int i = 0; i < n; i++) {result1 = result1 + Integer.toString(i);}long endTime1 = System.currentTimeMillis();System.out.println("使用 + 运算符拼接耗时: " + (endTime1 - startTime1) + " 毫秒");// 使用 StringBuilder 进行字符串拼接long startTime2 = System.currentTimeMillis();StringBuilder sb = new StringBuilder();for (int i = 0; i < n; i++) {sb.append(Integer.toString(i));}String result2 = sb.toString();long endTime2 = System.currentTimeMillis();System.out.println("使用 StringBuilder 拼接耗时: " + (endTime2 - startTime2) + " 毫秒");// 使用 StringBuffer 进行字符串拼接long startTime3 = System.currentTimeMillis();StringBuffer strbuf = new StringBuffer();for (int i = 0; i < n; i++) {strbuf.append(Integer.toString(i));}String result3 = strbuf.toString();long endTime3 = System.currentTimeMillis();System.out.println("使用 StringBuffer 拼接耗时: " + (endTime3 - startTime3) + " 毫秒");// 使用 StringJoiner 进行字符串拼接long startTime4 = System.currentTimeMillis();StringJoiner strjoin = new StringJoiner("");for (int i = 0; i < n; i++) {strjoin.add(Integer.toString(i));}String result4 = strjoin.toString();long endTime4 = System.currentTimeMillis();System.out.println("使用 StringJoiner 拼接耗时: " + (endTime4 - startTime4) + " 毫秒");}}
总结
StringBuilder
:单线程环境下,性能高,用于频繁的字符串操作。StringBuffer
:多线程环境下,线程安全,用于频繁的字符串操作。StringJoiner
:用于方便地将多个字符串用指定分隔符连接起来,可指定前缀和后缀。
相关文章:
4.2java包装类
在 Java 里,基本数据类型不具备对象的特性,像不能调用方法、参与面向对象的操作等。为了让基本数据类型也能有对象的行为,Java 提供了对应的包装类。同时,自动拆箱和自动装箱机制让基本数据类型和包装类之间的转换更加便捷。 包装…...
在一台服务器上通过 Nginx 配置实现不同子域名访问静态文件和后端服务
一、域名解析配置 要实现通过不同子域名访问静态文件和后端服务,首先需要进行域名解析。在域名注册商或 DNS 服务商处,为你的两个子域名 blog.xxx.com 和 api.xxx.com 配置 A 记录或 CNAME 记录。将它们的 A 记录都指向你服务器的 IP 地址。例如&#x…...
C++23 views::as_rvalue (P2446R2) 深入解析
文章目录 引言C20 Ranges库回顾什么是Rangesstd::views的作用 views::as_rvalue 概述基本概念原型定义工作原理 应用场景容器元素的移动与其他视图适配器结合使用 总结 引言 在C的发展历程中,每一个新版本都会带来一系列令人期待的新特性,这些特性不仅提…...
Mockoon 使用教程
文章目录 一、简介二、模拟接口1、Get2、Post 一、简介 1、Mockoon 可以快速模拟API,无需远程部署,无需帐户,免费,跨平台且开源,适合离线环境。 2、支持get、post、put、delete等所有格式。 二、模拟接口 1、Get 左…...
15.thinkphp的上传功能
一.上传功能 1. 如果要实现上传功能,首先需要建立一个上传表单,具体如下: <form action"http://localhost/tp6/public/upload"enctype"multipart/form-data" method"post"><input type&…...
G口大带宽服务器线路怎么选
G口大带宽服务器线路选择指南 一、线路类型与特点 单线(电信/联通/移动) 优势:带宽独享、价格低、延迟稳定,适合单一运营商用户集中场景。劣势:跨运营商访问延迟高(如电信…...
低秩适应(LoRA)与量化LoRA(QLoRA)技术解析
LoRA:从线性代数到模型微调 从矩阵分解理解Lora 假设我们有一个大模型中的权重矩阵,形状为1024512(包含约52万个参数)。传统微调方法会直接更新这52万个参数,这不仅计算量大,而且存在过拟合风险。 LoRA的…...
Webug4.0靶场通关笔记22- 第27关文件包含
目录 一、文件包含 1、原理分析 2、文件包含函数 (1)include( ) (2)include_once( ) (3)require( ) (4)require_once( ) 二、第27关渗透实战 1、打开靶场 2、源码分析 3、…...
OpenCV CPU性能优化
OpenCV 在 CPU 上的性能优化涉及多个层次,从算法选择到指令级优化。以下是系统的优化方法和实践技巧: 一、基础优化策略 1. 内存访问优化 连续内存布局:优先使用 cv::Mat::isContinuous() 检查 cpp if(mat.isContinuous()) {// 可优化为单循…...
OpenCV进阶操作:图像的透视变换
文章目录 前言一、什么是透视变换?二、透视变换的过程三、OpenCV透视变换核心函数四、文档扫描校正(代码)1、预处理2、定义轮廓点的排序函数3、定义透视变换函数4、读取原图并缩放5、轮廓检测6、绘制最大轮廓7、对最大轮廓进行透视变换8、旋转…...
MySQL事务隔离机制与并发控制策略
MySQL事务隔离机制与并发控制策略 MySQL事务隔离机制与并发控制策略一、数据库并发问题全景解析二、事务隔离级别深度解析三、MySQL并发控制核心技术1. 多版本并发控制(MVCC)2. 锁机制 四、隔离级别实现差异对比五、生产环境最佳实践六、高级优化技巧七、…...
【算法学习】递归、搜索与回溯算法(二)
算法学习: https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言: 在(一)中我们挑了几个经典例题,已经对递归、搜索与回溯算法进行了初步讲解,今天我们来进一步讲解…...
SpringBoot整合PDF导出功能
在实际开发中,我们经常需要将数据导出为PDF格式,以便于打印、分享或存档。SpringBoot提供了多种方式来实现PDF导出功能,下面我们将介绍其中的一些。 HTML 模板转 PDF(推荐) 通过模板引擎(如 Thymeleaf 或…...
关于MySQL 数据库故障排查指南
🛠 MySQL 数据库故障排查指南 目标:解决常见数据库问题,保障数据安全与系统稳定运行。 一、常见故障类型概览 故障类型可能原因排查/解决步骤无法连接服务未启动、端口未监听、用户权限不足 查看服务状态: systemctl status my…...
ubuntu yolov5(c++)算法部署
1.安装onnx 1.15.0 首先使用如下命令关闭 anaconda 对后续源码编译的影响; # 禁用当前 conda 环境 conda deactivate# 确保 conda 初始化脚本不会自动激活 base 环境 conda config --set auto_activate_base false# 然后重新打开终端或执行 source ~/.bashrc 1.安…...
基于Centos7的DHCP服务器搭建
一、准备实验环境: 克隆两台虚拟机 一台作服务器:DHCP Server 一台作客户端:DHCP Clinet 二、部署服务器 在网络模式为NAT下使用yum下载DHCP 需要管理员用户权限才能下载,下载好后关闭客户端,改NAT模式为仅主机模式…...
《开源先锋Apache软件基金会:历史沿革、顶级项目与行业影响》
1. Apache软件基金会概述 Apache软件基金会(Apache Software Foundation, ASF) 是全球最大的开源软件组织之一,成立于1999年,是一个非营利性机构,致力于为公共利益提供开源软件。ASF以“社区主导、共识决策”为核心原…...
Java数据结构——Queue
Queue 队列的概念队列的使用offer和poll方法add和remove方法 设计循环队列队列实现栈栈实现队列 前面所说的Stack是 先入后出的原则,那有没有 先入先出的原则的结构呢?这就是本篇博客所讲的Queue序列就是这个原则 队列的概念 只允许在一段进行插入数据…...
仓储车间安全革命:AI叉车防撞装置系统如何化解操作风险
在现代物流体系中,仓储承担着货物储存、保管、分拣和配送等重要任务。但现代仓储行业的安全现状却不容乐观,诸多痛点严重制约着其发展,其中叉车作业的安全问题尤为突出。相关数据显示,全球范围内,每年因叉车事故导致的…...
深入 FaaS 核心:函数是如何“活”起来的?
深入 FaaS 核心:函数是如何“活”起来的? 在上一篇《你好,Serverless!告别服务器运维的烦恼》中,我们认识了 Serverless 的基本概念,并知道了 FaaS (Function as a Service) 是其核心计算单元,就像一个个“随叫随到”的专业工具人。 那么,这些“工具人”到底是如何被“…...
vue2 两种路由跳转方式
第一种方式:path跳转 第二中写法:用name跳转 路由传参 动态路由传参 案例 通过${} 动态路由传参 动态路由使用params来进行接收 name 传参 总结 传的什么用什么接受...
手机上使用的记录笔记的软件推荐哪一款
在快节奏的生活中,一款好用的手机笔记软件就像随身携带的“外挂大脑”,能帮我们高效记录生活点滴、工作计划和灵感创意。今天,就来给大家详细对比一下Pendo、敬业签、MIGi日历记事本这三款热门笔记软件。 一、Pendo笔记:智能日程…...
SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块,支持响应式编程模型,构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型,能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…...
Python学习笔记--Django的安装和简单使用(一)
一.简介 Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。Django 提供了一套强大的工具和约定,使得开发者能够快速构建功能齐全且易于维护的网站。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1…...
Java 17配置Jenkins
找到 Java 17 的安装路径 which java ls -l /usr/lib/jvm/ 修改 Jenkins 服务配置 sudo nano /etc/systemd/system/jenkins.service 修改为 [Unit] DescriptionJenkins Automation Server Afternetwork.target[Service] Typesimple Userjenkins Groupjenkins Environment&…...
前端面试每日三题 - Day 28
这是我为准备前端/全栈开发工程师面试整理的第28天每日三题练习: ✅ 题目1:HTTP缓存策略全景解析 核心缓存类型对比表 缓存类型验证方式响应头网络请求消耗强缓存无Cache-Control/Expires无协商缓存If-Modified-Since等ETag/Last-Modified304响应 1.强…...
B站pwn教程笔记-8
接着上次的习题刷,然后补充新的知识。这开始就接触花式栈溢出了 pwn3(ret2libc较难) 上次已经知道大致思路,现在看看怎么实现。 使用命令 ldd 可看出连接的LIBC是哪个,如下图所示。(第一行) …...
uniapp项目打包的微信小程序,设置uni-popup type=“bottom“时,底部有空隙
问题: uniapp项目打包的微信小程序,设置uni-popup type"bottom"时,底部有空隙 解决思路: 1、检查代码是否存在样式问题 2、使用微信小程序自带的调试器元素 3、查看源码定位底部是如何出现该空隙的 1、检查代码 检…...
《Zabbix Proxy分布式监控实战:从安装到配置全解析》
注意:实验所需的zabbix服务器的搭建可参考博客 zabbix 的docker安装_docker安装zabbix-CSDN博客 1.1 实验介绍 1.1.1 实验目的 本实验旨在搭建一个基于Zabbix的监控系统,通过安装和配置Zabbix Proxy、MySQL数据库以及Zabbix Agent,实现分…...
zookeeper实现分布式获取全局唯一自增ID的案例。
项目结构 所有配置写在 application.yml 文件中,代码进行了拆分,加入了相关依赖。 1. pom.xml 依赖 <dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><…...
微信小程序上传视频,解决ios上传完video组件无法播放
1.碰到问题 工单里面上传完视频video组件ios无法播放视频,安卓可以 2.原因 使用了后台接口返回的url拼域名 , 正确做法:使用wx.chooseMedia()里面的tempFilePath(本地临时文件路径 (本地路径)),上传好了详情可以使用后…...
硕博士学位论文题目需要注意的几个问题
摘要: 论文题目既要高大上, 又要与别人的区别开. 本贴描述一些基本的思路. 研究生们应该从图书馆找 100 篇博士论文的题目参考,以跳出思维定式. 1. 题目要足够具体 需要把自己的几篇小论文覆盖,且最小的一个帽子 帽子大了就变成书籍的名字,…...
图像匹配导航定位技术 第 8 章
第 8 章 SAR 图像匹配定位技术 目前 ,光学传感器已经能获取高分辨率,即与视觉效果相近的目标图像,但是光学传感器容易受到天气变化的影响,从而影响效率。而径雷达 ( synthetic aperture radar,SAR)传感器不仅能获得与…...
四、Hadoop 2.X vs 3.X:特性、架构与性能全解析
Hadoop 2.X 与 Hadoop 3.X 深度对比:版本特性、架构与性能剖析 在大数据处理的浪潮中,Hadoop 凭借其分布式存储与计算的强大能力,成为了业界的核心框架之一。随着技术的不断演进,Hadoop 也经历了多个重要版本的迭代。其中&#x…...
【Linux】FreeRTOS与Linux:实时与通用的终极对比
文章目录 FreeRTOS & Linux1 本质区别2 应用场景3 架构差异4 为什么容易混淆?5 合作与共存总结 FreeRTOS & Linux FreeRTOS 和Linux是两种完全不同的操作系统,设计目标和应用场景有显著区别。 1 本质区别 特性FreeRTOSLinux类型实时操作系统&…...
关于vue-office在vue3工程中的引用报错问题
在vue3项目工程中,根据vue-office文档在vue2中的引用: //引入VueOfficeDocx组件 相关样式import VueOfficeDocx from vue-office/docx;import vue-office/docx/lib/index.css; 报错信息: [plugin:vite:import-analysis] Failed to resolve …...
【NLP 71、常见大模型的模型结构对比】
三到五年的深耕,足够让你成为一个你想成为的人 —— 25.5.8 模型名称位置编码Transformer结构多头机制Feed Forward层设计归一化层设计线性层偏置项激活函数训练数据规模及来源参数量应用场景侧重GPT-5 (OpenAI)RoPE动态相对编码混合专家架构(MoE&#…...
Java详解LeetCode 热题 100(13):LeetCode 53:最大子数组和(Maximum Subarray)详解
文章目录 1. 题目描述2. 理解题目3. 解题思路3.1 暴力法3.1.1 O(n) 暴力解法3.1.2 O(n) 优化的暴力解法3.2 分治法3.3 动态规划(Kadane算法)3.3.1 动态规划基本思路3.3.2 Kadane算法(空间优化版本)3.4 前缀和方法4. 具体实例解析5. 代码优化与技巧5.1 处理空数组和边界情况…...
数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
摘要:本文以京东"全球首个全流程无人仓"为技术载体,结合"定制开发开源AI智能名片S2B2C商城小程序"的零售创新实践,探讨数字化技术如何重构物流与零售场景。研究揭示,京东通过全流程无人仓实现仓储效率提升4倍…...
从“工地砌砖”到“工厂造房”:模块化集成建筑(MiC建筑)如何重塑建筑业
在城市化进程加速与资源环境约束加剧的双重挑战下,建筑业正经历着一场深刻变革。模块化集成建筑(Modular Integrated Construction,简称MiC)以“工厂造楼”为核心理念,通过将建筑拆解为标准化模块并在工厂完成全流程预…...
idea出现tomcat不能正确部署的问题--解决方案
启动tomcat 报如下错误:(是因为已经在其他tomcat的中使用了这两个端口) 改成新端口 注意:不管是新增了页面,还是修改了页面,都需要重新部署项目,方法就是点击下面的绿色图标。否则新的页面操作不…...
编专利或委托他人编专利属于学术不端行为吗?
原文链接:编专利或委托他人编专利属于学术不端行为吗? 自己编专利或委托他人编专利属于学术不端吗? 5月4日,一篇题为《针对性护理干预在子宫肌瘤围手术期的情绪和生活质量临床应用效果》的论文,受到网友的广泛议论。…...
IEEE PRMVAI Workshop 17 | 智能医疗数据分析与应用
科研小伙伴们看过来!2025 年 IEEE 第三届模式识别、机器视觉和人工智能国际会议旗下的 Workshop 17——“Intelligent Health Monitoring and Inspection of Infrastructure(智能医疗数据分析与应用)” 超值得关注! 📅…...
网工实验——OSPF配置
网络拓扑图 配置 1.为每个路由器配置接口(略)(详细见RIP实验) 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精确配置网络,也可以像下面那条命令那样配置 …...
图灵码上爬第5题:屠龙刀--爬虫逆向
别问我,问我就是小菜鸡记录下学习成果,哈哈哈哈 第五题其实跟第四题的逻辑差不多,只不过加了点简单混淆的代码 题目: 请求参数经过特殊处理,适合JavaScript逆向入门练习 思路: 首先打开开发者工具&…...
Linux网络编程day7 线程池
线程池 typedef struct{void*(*function)(void*); //函数指针,回调函数void*arg; //上面函数的参数 }threadpool_task_t; //各子线程任务的结构体/*描述线程池相关信息*/struct threadpool_t{pthread_mutex_t lock; …...
【SpringMVC】详解cookie,session及实战
目录 1.前言 2.正文 2.1cookie与session概念 2.2返回cookie参数 2.3设置session 3.小结 1.前言 哈喽大家好吖,今天继续来给大家来分享SpringMVC的学习,今天主要带来的是cookie与session的讲解以及通过postman和fiddler来实战,废话不多…...
《Vuejs 设计与实现》第 4 章(响应式系统)( 上 )
目录 4.1 响应式数据和副作用函数 4.2 基本响应式数据实现 4.3 设计完善响应系统 4.4 分支切换与清理 4.5 嵌套的 effect 与 effect 栈 4.1 响应式数据和副作用函数 副作用函数是指那些产生副作用的函数 function effect() {document.body.innerText = hello vue3 }执行 …...
《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
React Native和Flutter作为当下热门的跨平台开发框架,在社交应用开发领域各显神通。今天,我们深入探索它们在高可用架构中的部署与容灾策略。 React Native凭借其独特优势,在社交应用开发中拥有一席之地。它基于JavaScript和React࿰…...
K8s网络从0到1
K8s网络从0到1 前言 K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等。为了帮助大家理解,模仿TC…...