首页 文章 精选 留言 我的

精选列表

搜索[国产神器],共5752篇文章
优秀的个人博客,低调大师

smart-servlet v0.1.4 发布,超高性能的国产开源 Servlet 服务器

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 容器。与此同时,smart-servlet 还是一款插件化容器,基于内置的沙箱环境确保 smart-servlet 拥有最精简的运行能力,用户还可以通过自定义插件扩展容器的服务能力。 1、更新内容 优化:依赖组件升级,smart-socket 升级至 1.5.8;smart-http 升级至 1.1.4。 优化:优化 Servlet 与 URI 的映射匹配逻辑。 优化:重构 Plugin 接口,支持 install 插件时获取容器对象。 优化:重构 welcome file 的处理逻辑。 新特性:实现 ServletContainerInitializer 规范。 新特性:新增测试模块,用于比对 smart-servlet 的规范实现是否与 tomcat 一致。 新特性:maven 启动插件支持自定义 contextPath。 新特性:支持 springboot 打出的无 web.xml 文件 war包部署。【I3QLLG】 新特性:提供二进制运行包:smart-servlet-bin.tar.gz。 bugfix:修复 WebSoscket 中 OnMessage 注解标注方法入参识别错误的问题。 2、架构设计 smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。 3、项目特色 低学习成本,与 Tomcat、Undertow 保持同样的使用习惯。 实现 Servlet3.1 核心规范。 实现 JSR 356 Java™ API for WebSocket 规范。 插件化设计,自由 DIY 服务器。 开箱即用,运行程序包、maven本地开发/调试插件、springboot starter 一应俱全,满足你的开发、部署需求。 4、性能表现 数据来源:https://www.techempower.com/benchmarks/#section=test&runid=1ae48ef3-1344-4a62-976a-2e67cc673299&hw=ph&test=json&l=zijbpb-e7&a=2 数据来源:https://www.techempower.com/benchmarks/#section=test&runid=1ae48ef3-1344-4a62-976a-2e67cc673299&hw=ph&test=plaintext&l=zijbpb-e7&a=2 特别说明 本项目还处于研发阶段,尚未完成所有 Servlet 标准的实现,切勿运用于生产,还望理解。如若你愿意体验一下这个项目,并通过Issues提交你的建议和发现的 bug,则是对 smart-servlet 莫大的支持,万分感谢。

优秀的个人博客,低调大师

smart-servlet v0.1.3 发布,超高性能的国产开源 Servlet 服务器

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 容器。与此同时,smart-servlet 还是一款插件化容器,基于内置的沙箱环境确保 smart-servlet 拥有最精简的运行能力,用户还可以通过自定义插件扩展容器的服务能力。 1、更新内容 实现 《JSR 356 Java™ API for WebSocket 》的部分规范。 升级 smart-http 至 v1.1.1。 移除 archives 模块。 2、架构设计 smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。 3、项目特色 低学习成本,与 Tomcat、Undertow 保持同样的使用习惯。 实现 Servlet3.1 核心规范:request、response、session、cookie、dispatcher、servletContext。 实现 JSR 356 Java™ API for WebSocket 规范。 插件化设计,自由 DIY 服务器。 开箱即用,运行程序包、maven本地开发/调试插件、springboot starter 一应俱全,满足你的开发、部署需求。 4、性能表现 数据来源:https://www.techempower.com/benchmarks/#section=test&runid=711619a8-10ee-46a1-99a7-7fabb8b42c04&hw=ph&test=json&l=zijbpb-e7&a=2 数据来源:https://www.techempower.com/benchmarks/#section=test&runid=711619a8-10ee-46a1-99a7-7fabb8b42c04&hw=ph&test=plaintext&l=zijbpb-e7&a=2 特别说明 本项目还处于研发阶段,尚未完成所有 Servlet 标准的实现,切勿运用于生产,还望理解。如若你愿意体验一下这个项目,并通过Issues提交你的建议和发现的 bug,则是对 smart-servlet 莫大的支持,万分感谢。

优秀的个人博客,低调大师

Spring Boot 2.x基础教程:使用国产数据库连接池Druid

上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP。接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid。 Druid是由阿里巴巴数据库事业部出品的开源项目。它除了是一个高性能数据库连接池之外,更是一个自带监控的数据库连接池。虽然HikariCP已经很优秀,但是对于国内用户来说,可能对于Druid更为熟悉。所以,对于如何在Spring Boot中使用Druid是后端开发人员必须要掌握的基本技能。 配置Druid数据源 这一节的实践我们将基于《Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库》一文的代码基础上进行。所以,读者可以从文末的代码仓库中,检出chapter3-1目录来进行下面的实践学习。 下面我们就来开始对Spring Boot项目配置Druid数据源: 第一步:在pom.xml中引入druid官方提供的Spring Boot Starter封装。 <dependency> <groupid>com.alibaba</groupid> <artifactid>druid-spring-boot-starter</artifactid> <version>1.1.21</version> </dependency> 第二步:在application.properties中配置数据库连接信息。 Druid的配置都以spring.datasource.druid作为前缀,所以根据之前的配置,稍作修改即可: spring.datasource.druid.url=jdbc:mysql://localhost:3306/test spring.datasource.druid.username=root spring.datasource.druid.password= spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver 第三步:配置Druid的连接池。 与Hikari一样,要用好一个数据源,就要对其连接池做好相应的配置,比如下面这样: spring.datasource.druid.initialSize=10 spring.datasource.druid.maxActive=20 spring.datasource.druid.maxWait=60000 spring.datasource.druid.minIdle=1 spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 spring.datasource.druid.minEvictableIdleTimeMillis=300000 spring.datasource.druid.testWhileIdle=true spring.datasource.druid.testOnBorrow=true spring.datasource.druid.testOnReturn=false spring.datasource.druid.poolPreparedStatements=true spring.datasource.druid.maxOpenPreparedStatements=20 spring.datasource.druid.validationQuery=SELECT 1 spring.datasource.druid.validation-query-timeout=500 spring.datasource.druid.filters=stat 关于Druid中各连接池配置的说明可查阅下面的表格: 配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”DataSource-“ + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。详情-点此处。 url 连接数据库的url,不同数据库不一样。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto username 连接数据库的用户名 password 连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里 driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 maxActive 8 最大连接池数量 maxIdle 8 已经不再使用,配置了也没效果 minIdle 最小连接池数量 maxWait 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。 maxPoolPreparedStatementPerConnectionSize -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 validationQuery 用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘x’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 validationQueryTimeout 单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法 testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 keepAlive false (1.0.28) 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。 timeBetweenEvictionRunsMillis 1分钟(1.0.14) 有两个含义: 1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明 numTestsPerEvictionRun 30分钟(1.0.14) 不再使用,一个DruidDataSource只支持一个EvictionRun minEvictableIdleTimeMillis 连接保持空闲而不被驱逐的最小时间 connectionInitSqls 物理连接初始化的时候执行的sql exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接 filters 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall proxyFilters 类型是List<com.alibaba.druid.filter.filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系 到这一步,就已经完成了将Spring Boot的默认数据源HikariCP切换到Druid的所有操作。 配置Druid监控 既然用了Druid,那么对于Druid的监控功能怎么能不用一下呢?下面就来再进一步做一些配置,来启用Druid的监控。 第一步:在pom.xml中引入spring-boot-starter-actuator模块 <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-actuator</artifactid> </dependency> 第二步:在application.properties中添加Druid的监控配置。 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.reset-enable=true spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin 上面的配置主要用于开启stat监控统计的界面以及监控内容的相关配置,具体释意如下: spring.datasource.druid.stat-view-servlet.url-pattern:访问地址规则 spring.datasource.druid.stat-view-servlet.reset-enable:是否允许清空统计数据 spring.datasource.druid.stat-view-servlet.login-username:监控页面的登录账户 spring.datasource.druid.stat-view-servlet.login-password:监控页面的登录密码 第三步:针对之前实现的UserService内容,我们创建一个Controller来通过接口去调用数据访问操作: @Data @AllArgsConstructor @RestController public class UserController { private UserService userService; @PostMapping("/user") public int create(@RequestBody User user) { return userService.create(user.getName(), user.getAge()); } @GetMapping("/user/{name}") public List<user> getByName(@PathVariable String name) { return userService.getByName(name); } @DeleteMapping("/user/{name}") public int deleteByName(@PathVariable String name) { return userService.deleteByName(name); } @GetMapping("/user/count") public int getAllUsers() { return userService.getAllUsers(); } @DeleteMapping("/user/all") public int deleteAllUsers() { return userService.deleteAllUsers(); } } 第四步:完成上面所有配置之后,启动应用,访问Druid的监控页面http://localhost:8080/druid/,可以看到如下登录页面: 输入上面spring.datasource.druid.stat-view-servlet.login-username和spring.datasource.druid.stat-view-servlet.login-password配置的登录账户与密码,就能看到如下监控页面: 进入到这边时候,就可以看到对于应用端而言的各种监控数据了。这里讲解几个最为常用的监控页面: 数据源:这里可以看到之前我们配置的数据库连接池信息以及当前使用情况的各种指标。 SQL监控:该数据源中执行的SQL语句极其统计数据。在这个页面上,我们可以很方便的看到当前这个Spring Boot都执行过哪些SQL,这些SQL的执行频率和执行效率也都可以清晰的看到。如果你这里没看到什么数据?别忘了我们之前创建了一个Controller,用这些接口可以触发UserService对数据库的操作。所以,这里我们可以通过调用接口的方式去触发一些操作,这样SQL监控页面就会产生一些数据: 图中监控项上,执行时间、读取行数、更新行数都通过区间分布的方式表示,将耗时分布成8个区间: 0 - 1 耗时0到1毫秒的次数 1 - 10 耗时1到10毫秒的次数 10 - 100 耗时10到100毫秒的次数 100 - 1,000 耗时100到1000毫秒的次数 1,000 - 10,000 耗时1到10秒的次数 10,000 - 100,000 耗时10到100秒的次数 100,000 - 1,000,000 耗时100到1000秒的次数 1,000,000 - 耗时1000秒以上的次数 记录耗时区间的发生次数,通过区分分布,可以很方便看出SQL运行的极好、普通和极差的分布。 耗时区分分布提供了“执行+RS时分布”,是将执行时间+ResultSet持有时间合并监控,这个能方便诊断返回行数过多的查询。 SQL防火墙:该页面记录了与SQL监控不同维度的监控数据,更多用于对表访问维度、SQL防御维度的统计。 该功能数据记录的统计需要在spring.datasource.druid.filters中增加wall属性才会进行记录统计,比如这样: spring.datasource.druid.filters=stat,wall 注意:这里的所有监控信息是对这个应用实例的数据源而言的,而并不是数据库全局层面的,可以视为应用层的监控,不可能作为中间件层的监控。 代码示例 本文的相关例子可以查看下面仓库中的chapter3-3目录: Github:https://github.com/dyc87112/SpringBoot-Learning/ Gitee:https://gitee.com/didispace/SpringBoot-Learning/ 如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力! 欢迎关注我的公众号:程序猿DD,获得独家整理的学习资源和日常干货推送。如果您对我的专题内容感兴趣,也可以关注我的博客:didispace.com

优秀的个人博客,低调大师

驻云完成了第一次国产云操作系统的海外输出

近年来随着云计算行业的蓬勃发展,阿里云也乘着这股“东风”扶摇直上,依托于阿里云的基础云产品服务以及核心大数据产品,阿里做智慧城市已经是“大势所趋、人心所向”。除了杭州、苏州政府合作建立“智慧城市”,和福州市政府一起打造智慧城市的福州样本,和无锡政府合力打造的中国第一个物联网小镇——鸿山小镇以外,阿里云开始尝试将此业务发展到海外市场,而澳门智慧城市项目则是第一个试水的基石。 为什么需要统一数据资源平台? 通过对接澳门政务ePass系统,直接使用ePass账号登录跳转到统一数据资源平台,可以实现仅通过一个系统,便能支持繁体中文和简体中文切换,完成对包括ECS、RDS等云基础服务和Dataworks、流计算等大数据产品进行统一管理。 如何实现? 驻云自主研发的CBIS云计算商业服务集成系统,面向企业提供一整套对多种云资源实现混合管理的云计算运营服务平台,不仅解决了企业内部管理和使用云计算资源的客观需求,还支持企业对富余的云计算资源进行对外售卖。 在资源统一管理的基础上,CBIS更能进一步支撑混合云平台的业务运营工作,实现对分公司、部门、项目的预算控制和费用核算以及多维度管理用户资源。同时,CBIS还提供灵活的商品上架,CBIS的这些功能以及驻云所提供的一整套解决方案,帮助客户 “ 0 基础 0 TCO ” 建立高可靠的自有品牌运营,成为云平台运营商。在云平台管理过程中产生的个性化需求,CBIS可以针对性地对组件进行客制化,而不影响产品整体的稳定性。 在本项目中,主要开发着重点是针对以下几个部分: 产品国际化 大数据产品对接 澳门ePass服务平台对接 产品国际化 驻云CBIS云计算商业服务集成系统从设计之初就考虑到产品国际化的需求,其采用的前后端框架本身即可以支持将对应的文本内容抽取到资源文件。 在本项目中,驻云将需要翻译的资源文件发给阿里云国际化翻译团队进行翻译,翻译完成后,再将资源文件导入到系统中。最终用户在系统登录页面的右上角可以查看当前系统支持的语言并进行选择,成功登陆后,系统将按照用户选择的语言展示对应的文本内容,满足客户对于国际化的要求。 对于专有云内含有独立控制台的产品,由 CBIS 平台在登录时植入相应的 cookie,用户跳转进入到对应产品控制台时,其产品会根据 cookie 中包含的语言信息展示内容。 大数据产品对接 本项目中包含的阿里的大数据系列产品如下: MaxComputer Dataworks StreamComputer QuickBI Datahub 大数据管家 DMS 对于阿里专有云的基础资源产品(ECS、RDS、SLB、OSS等),CBIS 产品是基于阿里专有云提供的SDK中包含的接口开发控制台页面来支持。 而大数据系列产品比较特殊,这些产品一般都有独立控制台,并且需要对接 RAM 子账号来实现各个部门间的数据隔离,除此之外,还有几款特殊的产品支持跨UID的超管账号。 为了对接大数据产品,驻云针对原有的账号体系进行了以下扩展: 为部门和项目创建 RAM Group。 为用户创建对应的 RAM子账号。 为大数据产品设定普通操作、管理操作权限以示区分。 澳门ePass服务平台对接 为支持 CBIS 产品与澳门 ePass 平台对接,需要解决以下几个问题: ePass账号鉴权 ePass账号与阿里云账号匹配 跳转进入统一数据资源平台 整体流程见下图。 由上图可见,ePass账号鉴权功能由ePass 平台通过接口提供。需要匹配的用户信息来源有两个,一个是本地账号,另一个是ePass平台返回的用户信息。为了匹配Epass账号和阿里云账号,需要将从ePass 平台中获取到的用户、部门信息与本地数据库中录入的用户、部门信息进行对比。匹配成功后,系统将根据账号对应的RAM 账号或者 UID 账号使用免登陆接口获取令牌后,再跳转到统一数据资源平台。

优秀的个人博客,低调大师

商汤大厂出品AI神器,一句话出成片,古法剪辑再也回不去了

AI视频创作赛道持续迭代,商汤科技旗下Seko依托无限画布功能,打造出全流程可视化创作体系。该工具依托自研大模型与AI智能体,打通创意构思、分镜制作、画面精修、转场剪辑到成片导出的全链路,大幅降低短剧、短视频的制作门槛,成为当下主流的AI视频生产力工具。本文结合实操流程与功能亮点,全面拆解这款工具的使用方法与应用场景。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册