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

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon (开放原子开源基金会,孵化项目) v3.0 正式发布,
且将在 2025 年启动华为编程语言 “仓颉” 版开发(届时会有 Solon-Java 和 Solon-CJ 两大版本)。本次大版本更新,费时多月:

  • 与 Solon v2.9 保持兼容(向下兼容)
  • 与 JDK8, JDK11, JDK17, JDK21, JDK23 保持兼容(全系兼容)

Solon 框架!

Java “新式”应用开发框架,2017~2024。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态

  • 追求: 更快、更小、更简单
  • 提倡: 克制、简洁、高效、开放、生态
  • 官网: https://solon.noear.org

有什么特点?

特点描述
更高的计算性价比并发高 300%;内存省 50%
更快的开发效率代码少;入门快;调试重启快 10 倍
更好的生产与部署体验打包小 90%
更大的兼容范围非 java-ee 架构;同时支持 java8 ~ java23,graalvm native image

更新与兼容详细说明:

1、概述

v3.0 版本主要是,内核删除了 20Kb 的弃用代码及相应的调整。最新内核为 0.3Mb。

  • 移除的配置,要认真检查;
  • 移除的事件,要认真检查;
  • 弃用接口移除等编译时会出错提醒,问题不大。

新增或重构插件有:

  • solon-data-sqlutils(编译大小为 10Kb 的小工具)
  • solon-web-webservices
  • solon-net-stomp
  • nami-channel-http(用于替代 nami-channel-http-okhttp)
  • solon-net-httputils(重构,添加 HttpURLConnection 适配;编译大小为 40Kb)

2、弃用配置移除对应表(要认真检查)

  • 移除
类型移除配置名替代配置名
启动参数solon::
- configconfig.add
应用属性solon::
- solon.configsolon.config.add
  • 弃用
类型弃用配置名替代配置名
应用属性solon-boot::
- server.session.state.domainserver.session.cookieDomain
- server.session.state.domain.autoserver.session.cookieDomainAuto
solon-web-staticfiles::
- solon.staticfiles.maxAgesolon.staticfiles.cacheMaxAge

3、弃用事件移除对应表(要认真检查)

插件移除事件替代方案
solon@Bean bean?getBeanAsync(…class, …) / @Inject ..
@Component bean?getBeanAsync(…class, …) / @Inject ..
solon-serialization-fastjsonFastjsonActionExecutorgetBeanAsync(…class, …) / @Inject ..
FastjsonRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-fastjson2Fastjson2ActionExecutorgetBeanAsync(…class, …) / @Inject ..
Fastjson2RenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-furyFuryActionExecutorgetBeanAsync(…class, …) / @Inject ..
solon-serialization-gsonGsonActionExecutorgetBeanAsync(…class, …) / @Inject ..
GsonRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-hessianHessianActionExecutorgetBeanAsync(…class, …) / @Inject ..
solon-serialization-jacksonJacksonActionExecutorgetBeanAsync(…class, …) / @Inject ..
JacksonRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-jackson-xmlJacksonXmlActionExecutorgetBeanAsync(…class, …) / @Inject ..
JacksonXmlRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-propertiesPropertiesActionExecutorgetBeanAsync(…class, …) / @Inject ..
PropertiesRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-serialization-protostuffProtostuffActionExecutorgetBeanAsync(…class, …) / @Inject ..
solon-serialization-snack3SnackActionExecutorgetBeanAsync(…class, …) / @Inject ..
SnackRenderFactorygetBeanAsync(…class, …) / @Inject ..
solon-view-beetlGroupTemplategetBeanAsync(BeetlRender.class, …) / @Inject ..
solon-view-enjoyEnginegetBeanAsync(EnjoyRender.class, …) / @Inject ..
solon-view-freemarkerConfigurationgetBeanAsync(FreemarkerRender.class, …) / @Inject ..
solon-view-thymeleafTemplateEnginegetBeanAsync(ThymeleafRender.class, …) / @Inject ..
solon-view-velocityRuntimeInstancegetBeanAsync(VelocityRender.class, …) / @Inject ..

以上事件替代的扩展方案(示例):

@Configuration
public class App {public static void main(String[] args) {Solon.start(App.class, args, app -> {//1.第一时间手动获取(在其它注入前执行)app.context().getBeanAsync(Xxx.class, e -> {});});}//2.由扫描时自动注入@Beanpublic void cfg(Xxx xxx) {}
}

什么时候用事件扩展好(尽量不用)?

  • 需要及时扩展,但又不方便进入容器的对象。

4、弃用 Before、After 处理体系移除(编译会有提醒)

影响替代方案
全局方面RouterInterceptor 替代
本地网关方面Filter 替代,或者自己可扩展
注解方面(控制器相关)@Addition(Filter) 替代

其中“本地网关”,可以通过定制恢复旧版能力:https://solon.noear.org/article/214

5、弃用类型移除对应表(编译会有提醒)

插件移除类型替代类型
nami
@Body@NamiBody
NamiBodyAnno
@Mapping@NamiMapping
NamiMappingAnno
solon
@PathVar@Path
@PropertySource@Import
@ProxyComponent@Component
@Before(Handler)@Addition(Filter)
@After(Handler)@Addition(Filter)
Endpoint/
SolonBuilder/
ValHolder/
InitializingBean@Init
NdMapIgnoreCaseMap<Object>
solon-data
Serializercore::Serializer
solon-data-dynamicds
DynamicDsHolderDynamicDsKey
solon-logging
LogUtilToSlf4j/
solon-logging-log4j
SolonCloudAppender/
solon-logging-logback
SolonCloudAppender/
solon-serialization
JsonConvertercore::Converter
StringSerializercore::Serializer<String>
solon-test
@TestPropertySource@Import
@TestRollback@Rollback
AbstractHttpTesterHttpTester
HttpTestBaseHttpTester

6、弃用接口方法移除对应表(编译会有提醒)

调整类移除方法(或字段)替代方法
nami::
- ConstantsCONTENT_TYPE_*
solon::
- ActionParamResolverresolvePathVar()
- ActionDefaultbefore(.)/ 只留 filter 体系
after(.)/
- AppContextbeanOnloaded(.)lifecycle(.)
- Beanregistered()delivered()
- BeanContainergetAttrs()attachment*(.)
beanAround*(.)beanInterceptor*(.)
- ClassUtilnewInstance(.)tryInstance(.)
- ClassWrapgetFieldAllWraps()getFieldWraps()
- Componentregistered()delivered()
- ConditionUtilifMissing(.)ifMissingBean(.)
- Contextip()remoteIp()
param(key,def)paramOrDefault(key,def)
paramSet(.)paramMap().add(.)
paramsMap()paramMap().toValuesMap()
paramsAdd(.)paramMap().add(.)
files(.)fileValues(.)
filesMap()fileMap().toValuesMap()
cookie(key,def)cookieOrDefault(key,def)
header(key,def)headerOrDefault(key,def)
headersMap()headerMap().toValuesMap()
session(key,def)sessionOrDefault(key,def)
statusSet(.)status(.)
attr(key,def)attrOrDefault(key,def)
attrClear()attrsClear()
- DateAnalyzergetGlobal()global()
- EventBuspushAsync()publishAsync()
pushTry()publishTry()
push()publish()
- Gatewaybefore(.)/ 只留 filter 体系
after(.)/
- LifecycleBeanprestop()preStop()
- LogUtildebugAsync()/
infoAsync()/
- MethodHoldergetArounds()getInterceptors()
- MethodWrapgetArounds()getInterceptors()
- MvcFactoryresolveParam(.)resolveActionParam(.)
- NvMap(map)from(map)
getBean(.)toBean(.)
- PropsgetByParse(.)getByTmpl(.)
getXmap(.)getMap(.)
getBean(.)toBean(.)
- RenderManagermapping(.)Solon.app().render(key, )
register(.)Solon.app().render(null, .)
- ResourceUtilremClasspath(.)remSchema(.)
- RoutermatchOne(.)matchMain(.)
- RunUtilsetExecutor(.)setParallelExecutor(.)
- SolonAppbefore(.)/ 只留 filter 体系
after(.)/
- SolonPropssource()app.source()
sourceLocation()app.sourceLocation()
- UtilsTAG_classpath/
resolvePaths(.)/
hasClass(.)ClassUtil.hasClass(.)
loadClass(.)ClassUtil.loadClass(.)
newInstance(.)ClassUtil.tryInstance(.)
getResource*(.)ResourceUtil.getResource*(.)
transferTo*(.)IoUtil.transferTo*(.)
buildExt(.)getFolderAndMake(.)
solon-boot::
- HttpServerConfigureallowSsl(.)enableSsl(.)
solon-data::
- CacheServiceget(key)get(key, type)
solon-scheduling::
- IJobManagersetJobInterceptor(.)addJobInterceptor(.)
solon-serialization-properties::
- PropertiesActionExecutorincludeFormUrlencoded(.)allowPostForm(.)

7、弃用插件移除对应表

其中简化了快捷组合包(发现太多,容易混乱),只留两个基础的:

  • solon-lib(保持不变)
  • solon-web(移除了 solon-view-freemarker)
移除插件替代插件备注
:: cloud
solon.cloud.httputilssolon-net-httputils
:: detector
detector-solon-pluginsolon-health-detector
:: logging
log4j2-solon-pluginsolon-logging-log4j2
logback-solon-pluginsolon-logging-logback
:: scheduling
solon.extend.schedule/
:: testing
solon.testsolon-test
:: web
solon.web.fluxsolon-web-rx
:: shortcuts
solon-apisolon-web
solon-job/改用 solon-lib +
solon-rpc/改用 solon-web +
solon-beetl-web/改用 solon-web +
solon-enjob-web/改用 solon-web +
solon-web-beetl/改用 solon-web +
solon-web-enjoy/改用 solon-web +
solon-cloud-alibaba/改用 solon-web + solon-cloud +
solon-cloud-water/改用 solon-web + solon-cloud +

移除的快捷组合包,可通过以下方式组合:

  • solon-job=
    • solon-lib + solon-scheduling-simple
  • solon-rpc=
    • solon-web + nami-coder-snack3 + nami-channl-http-okhttp
  • solon-beetl-web(或 solon-web-beetl)=
    • solon-web + solon-view-beetl + beetlsql-solon-plugin
  • solon-enjoy-web(或 solon-web-enjoy)=
    • solon-web + solon-view-enjoy + activerecord-solon-plugin
  • solon-cloud-alibaba=
    • solon-web + solon-cloud + nacos-solon-cloud-plugin + rocketmq-solon-cloud-plugin + sentinel-solon-cloud-plugin
  • solon-cloud-water=
    • solon-web + solon-cloud + water-solon-cloud-plugin

8、部分插件名字调整对应表(旧名标为弃用,仍可用)

新的调整按以下插件命名规则执行:

插件命名规则说明
solon-*(由 solon.* 调整而来)表示内部架构插件
*-solon-plugin(保持不变)表示外部适配插件
*-solon-cloud-plugin(保持不变)表过云接口外部适配插件

对应的“旧名”,仍可使用。预计会保留一年左右。具体调整如下:

新名旧名备注
:: nami
nami-channel-http-hutoolnami.channel.http.hutool
nami-channel-http-okhttpnami.channel.http.okhttp
nami-channel-socketdnami.channel.socketd
nami-coder-fastjsonnami.coder.fastjson
nami-coder-fastjson2nami.coder.fastjson2
nami-coder-furynami.coder.fury
nami-coder-hessiannami.coder.hessian
nami-coder-jacksonnami.coder.jackson
nami-coder-protostuffnami.coder.protostuff
nami-coder-snack3nami.coder.snack3
:: base
solon-config-bannersolon.banner
solon-config-yamlsolon.config.yaml
solon-config-plus从原 solon.config.yaml 里拆出来
solon-hotplugsolon.hotplug
solon-i18nsolon.i18n
solon-mvcsolon.mvc
solon-proxysolon.proxy
solon-rx新增
:: boot
solon-boot-jdkhttpsolon.boot.jdkhttp
solon-boot-jetty-add-jspsolon.boot.jetty.add.jsp
solon-boot-jetty-add-websocketsolon.boot.jetty.add.websocket
solon-boot-jettysolon.boot.jetty
solon-boot-jlhttpsolon.boot.jlhttp
solon-boot-smarthttpsolon.boot.smarthttp
solon-boot-socketdsolon.boot.socketd
solon-boot-undertow-add-jspsolon.boot.undertow.add.jsp
solon-boot-undertowsolon.boot.undertow
solon-boot-vertxsolon.boot.vertx
solon-boot-websocket-nettysolon.boot.websocket.netty
solon-boot-websocketsolon.boot.websocket
solon-bootsolon.boot
:: cloud
solon-cloud-eventplussolon.cloud.eventplus
solon-cloud-gatewaysolon.cloud.gateway
solon-cloud-metricssolon.cloud.metrics
solon-cloud-tracingsolon.cloud.tracing
solon-cloudsolon.cloud
:: data
solon-cache-caffeinesolon.cache.caffeine
solon-cache-jedissolon.cache.jedis
solon-cache-redissonsolon.cache.redisson
solon-cache-spymemcachedsolon.cache.spymemcached
solon-data-dynamicdssolon.data.dynamicds
solon-data-shardingdssolon.data.shardingds
solon-datasolon.data
:: detector
solon-health-detectorsolon.health.detector
solon-healthsolon.health
:: docs
solon-docs-openapi2solon.docs.openapi2
solon-docs-openapi3
solon-docssolon.docs
:: faas
solon-faas-luffysolon.luffy
:: logging
solon-logging-log4j2solon.logging.log4j2
solon-logging-logbacksolon.logging.logback
solon-logging-simplesolon.logging.simple
solon-loggingsolon.logging
:: native
solon-aotsolon.aot
::net
solon-net-httputilssolon.net.httputils
solon-net-stomp
solon-netsolon.net
:: scheduling
solon-scheduling-quartzsolon.scheduling.quartz
solon-scheduling-simplesolon.scheduling.simple
solon-schedulingsolon.scheduling
:: security
solon-security-authsolon.auth旧名弃用
solon-security-validationsolon.validation旧名弃用
solon-security-vaultsolon.vault旧名弃用
solon-security-authsolon.security.auth
solon-security-validationsolon.security.validation
solon-security-vaultsolon.security.vault
:: serialization
solon-serializationsolon.serialization
solon-serialization-fastjsonsolon.serialization.fastjson
solon-serialization-fastjson2solon.serialization.fastjson2
solon-serialization-furysolon.serialization.fury
solon-serialization-gsonsolon.serialization.gson
solon-serialization-hessiansolon.serialization.hessian
solon-serialization-jacksonsolon.serialization.jackson
solon-serialization-jackson-xmlsolon.serialization.jackson.xml
solon-serialization-kryo略过(未发布)
solon-serialization-propertiessolon.serialization.properties
solon-serialization-protostuffsolon.serialization.protostuff
solon-serialization-snack3solon.serialization.snack3
:: view
solon-viewsolon.view
solon-view-beetlsolon.view.beetl
solon-view-enjoysolon.view.enjoy
solon-view-freemarkersolon.view.freemarker
solon-view-jspsolon.view.jsp
solon-view-jsp-jakarta略过(未发布)
solon-view-thymeleafsolon.view.thymeleaf
solon-view-velocitysolon.view.velocity
:: web
solon-sessionstate-jedissolon.sessionstate.jedis
solon-sessionstate-jwtsolon.sessionstate.jwt
solon-sessionstate-localsolon.sessionstate.local
solon-sessionstate-redissonsolon.sessionstate.redisson
solon-web-corssolon.web.cors
solon-web-rxsolon.web.rx
solon-web-sdlsolon.web.sdl
solon-web-servletsolon.web.servlet
solon-web-servlet-jakartasolon.web.servlet.jakarta
solon-web-ssesolon.web.sse
solon-web-staticfilessolon.web.staticfiles
solon-web-stopsolon.web.stop
solon-web-webdavsolon.web.webdav

相关文章:

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon &#xff08;开放原子开源基金会&#xff0c;孵化项目&#xff09; v3.0 正式发布&#xff0c; 且将在 2025 年启动华为编程语言 “仓颉” 版开发&#xff08;届时会有 Solon-Java 和 Solon-CJ 两大版本&#xff09;。本次大版本更新…...

数据驱动投资:AI在股票市场的应用

当ChatGPT首次亮相时&#xff0c;其卓越的语言处理能力立刻引起了许多行业的广泛关注&#xff0c;投资界也不例外。关于ChatGPT是否能应用于投资决策的问题&#xff0c;迅速成为热门讨论的焦点。 近期&#xff0c;加拿大多伦多大学和印度孟买理工学院的研究人员联合开展了一项…...

Tita使用小技巧:项目类型自定义,业务管理个性化

应用场景 某互联网企业&#xff0c;企业内部有研发部&#xff0c;有销售部 研发部通常需要管理各种技术研发类型项目&#xff0c;因此需要管理「研发型」项目&#xff0c;该类型项目需要明确「所属产品」、「级别管理&#xff1a;国家级/省市级」、「项目类别&#xff1a;创新…...

国药准字:您购药的可靠指南

益安宁丸为同溢堂药业有限公司所独家生产的一款中成药&#xff0c;在内地市场和港澳地区均有上市。 益安宁丸真品的唯一标准&#xff1a;无论港版还是内地版&#xff0c;包装盒必然有国药准字Z20063087标识&#xff0c;但凡没有国药准字标识的必为假药。...

Python类学习(2)——未完待续

函数和类的参数传递 实例方法 class House:# 类构造方法&#xff0c;也是实例方法def __init__(self, area, price):self.area areaself.price pricedef cls_func(self, arg):print(arg)my_house House(America, 330) # 实例化类对象,需要传入init中的两个参数 print(f…...

微前端框架 qiankun 全面解析到源码实现

微前端&#xff08;Micro Frontends&#xff09;是一种将大型前端应用拆分为多个独立模块的架构设计思想&#xff0c;旨在解决复杂应用开发与维护的难题。qiankun 是目前流行的微前端解决方案之一&#xff0c;基于 single-spa 进行封装&#xff0c;提供了一种简单且完整的微前端…...

初始化数据的正确方式?

关于这篇文章 https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62 pl的视频解读 当在viewmodel中需要进行数据的初始化的时候 viewmodel.initData() 放在哪里合适呢&#xff0c;大部分情况下可以放在 viewmodel的init{}模块&…...

Flutter平台嵌入器

When you build a Flutter app, it’s not just about the code you write in Dart and the Flutter framework. There’s also a crucial piece called the platform embedders that enable your Flutter app to run on different operating systems like Android, iOS, and s…...

微信小程序——婚礼邀请函

一、界面设计 首页&#xff1a; 精美的婚礼主题背景图&#xff0c;可能是新人的婚纱照或浪漫的插画。温馨的欢迎语&#xff0c;如 “欢迎参加我们的婚礼”。一个 “打开邀请函” 的按钮&#xff0c;引导用户进入邀请函详情页面。 邀请函详情页面&#xff1a; 顶部展示新人的照片…...

WebRTC Connection Negotiate解决

最近有个项目 &#xff0c;部署之后一直显示&#xff0c;查了一些资料还是没有解决&#xff0c;无奈只有自己研究解决&#xff1f;经过排查&#xff0c;应该是内网穿透的问题 什么是内网穿透&#xff1f; 我们访问我们自己的官网产品页面&#xff0c;我们的服务器是一个单独…...

Redis面试篇1

1、为什么要用缓存&#xff1f; 使用缓存的目的就是提升读写性能。在实际的业务场景下&#xff0c;更多的是为了提升读性能&#xff0c;带来更好的性能和并发量。Redis的读写性能比MySQL好的多&#xff0c;我们就可以把MySQL中的热点数据缓存到Redis&#xff0c;提升读取性能&…...

Debezium系列之:Debezium 3.0.0.Final发布

Debezium系列之:Debezium 3.0.0.Final发布 Debezium 核心的变化需要 Java 17基于Kafka 3.8 构建废弃的增量信号字段的删除每个表的详细指标MariaDB连接器的更改版本 11.4.3 支持MongoDB连接器的更改MongoDB sink connectorMySQL连接器的改变MySQL 9MySQL向量数据类型Oracle连接…...

一文解决jQuery表格插件DataTable导出PDF中文乱码问题

原因是默认字体不支持中文&#xff0c;需要更换字体。 详情官网&#xff1a;pdfmake 官网的大致意思是&#xff0c;下载pdfmake后&#xff0c;自行生成可用的字体js文件 以下是详细操作&#xff1a; 重要前提&#xff1a;电脑上需要已安装nodejs 点击进入官网下载安装即可&a…...

使用pytorch进行迁移学习的两个步骤

1. 步骤及代码 迁移学习一般都会使用两个步骤进行训练&#xff1a; 固定预训练模型的特征提取部分&#xff0c;只对最后一层进行训练&#xff0c;使其快速收敛&#xff1b;使用较小的学习率&#xff0c;对全部模型进行训练&#xff0c;并对每层的权重进行细微的调节。 impor…...

ChatGPT相关参数示例

max_token 用于控制最大输出长度&#xff0c;若ChatGPT的回复大于max_tokens&#xff0c;则对输出结果进行截断。 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" ) response client.chat.completions.create(model"…...

OWASP发布大模型安全风险与应对策略(QA测试重点关注)

开放式 Web 应用程序安全项目&#xff08;OWASP&#xff09;发布了关于大模型应用的安全风险&#xff0c;这些风险不仅包括传统的沙盒逃逸、代码执行和鉴权不当等安全风险&#xff0c;还涉及提示注入、对话数据泄露和数据投毒等人工智能特有的安全风险。 帮助开发者和测试同学更…...

【HarmonyOS开发笔记 2 】 -- ArkTS语法中的变量与常量

ArkTS是HarmonyOS开发的编程语言 ArkTS语法中的变量 【语法格式】&#xff1a; let 变量名: 类型 值 let&#xff1a;是定义变量的关键字类型&#xff1a; 值数据类型&#xff0c; 常用的数据类型 字符型&#xff08;string&#xff09;、数字型&#xff08;number&#xf…...

UI自动化测试示例:python+pytest+selenium+allure

重点应用是封装、参数化&#xff1a; 比如在lib文件夹下&#xff0c;要存储封装好的方法和必要的环境变量&#xff08;指网址等&#xff09; 1.cfg.py:封装网址和对应的页面 SMP_ADDRESS http://127.0.0.1:8234SMP_URL_LOGIN f{SMP_ADDRESS}/login.html SMP_URL_DE…...

C/C++ 编程小工具

编写了 tools.h 和 tools.cpp&#xff0c;用于 Debug、性能测试、打印日志。 tools.h #ifndef TOOLS_H #define TOOLS_H#include <time.h> #include <fstream> #include <iostream> #include <random> #include <chrono> #include <vector&…...

第四十二章 使用 WS-ReliableMessaging

文章目录 第四十二章 使用 WS-ReliableMessaging从 Web 客户端发送一系列消息 第四十二章 使用 WS-ReliableMessaging IRIS 支持 WS-ReliableMessaging 规范的部分内容&#xff0c;如简介中所述。此规范提供了一种按顺序可靠地传递一系列消息的机制。本页介绍如何手动使用可靠…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...