- SpringBoot整合Swagger2快速指南
Cyanto
SpringBootspringboot后端java
Swagger简介Swagger是一款强大的API文档生成工具,它能够自动为RESTfulAPI生成可视化文档,支持在线测试接口,极大提高了前后端协作效率。本文将详细介绍如何在SpringBoot项目中整合Swagger2。环境准备版本要求重要提示:SpringBoot版本不能过高,推荐使用2.5.6版本:org.springframework.bootspring-boot-starter-pa
- springboot+swagger2文档从swagger-bootstrap-ui更换为knife4j及文档接口参数不显示问题
DN金猿
springboot组件专题springbootbootstrapuiswagger
背景已有springboot项目,且使用的是swagger2+swagger-bootstrap-ui的版本1.pom依赖如下io.springfoxspringfox-swagger22.9.2io.swaggerswagger-modelsio.swaggerswagger-annotationsio.springfo
- SpringCloudAlibaba网关聚合微服务swagger
微服务swagger配置引入依赖io.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.2配置swaggerimportio.swagger.annotations.ApiOperation;importorg.springframework.context.annotation.Bean;importorg.s
- springboot项目引入swagger
飞鹰@四海
springbootjavaspring
1.引入依赖创建项目后,在pom.xml文件中引入Swagger3的相关依赖。回忆一下,我们集成Swagger2时,引入的依赖如下:io.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.2而在Swagger3中,我们不需要再引入两个不同的依赖了,我们只需要引入一个依赖就足够,具体引入的依赖如下:io.sprin
- idea整合swagger使用
一尤花岛树鸣
后端springboot
idea整合swagger使用1.配置引入依赖io.springfoxspringfox-swagger2providedio.springfoxspringfox-swagger-uiprovided配置类packagecom.zj.servicecommon;importcom.google.common.base.Predicates;importorg.springframework.co
- SpringBoot整合Swagger2:从入门到精通(亲测可用)
Clf丶忆笙
#核心功能javaspringbootswagger2
文章目录一、Swagger2概述与核心价值1.1什么是Swagger2?1.2核心组件架构图1.3与传统文档方式对比二、SpringBoot集成Swagger2实战2.1环境搭建完整步骤2.1.1创建SpringBoot项目2.1.2基础配置类详解2.2访问与界面解读三、Swagger2注解全解析3.1控制器层注解实战3.1.1完整控制器示例3.1.2控制器注解详解表3.2模型层注解深度应用3.2
- SpringBoot整合Swagger3:从入门到精通(亲测可用)
Clf丶忆笙
#核心功能springbootjavaswagger3
文章目录一、Swagger简介与核心概念1.1什么是Swagger?1.2Swagger核心组件1.3Swagger2vsSwagger3二、SpringBoot集成Swagger32.1基础环境搭建2.1.1添加Maven依赖2.1.2基础配置类2.2访问SwaggerUI三、Swagger3注解详解3.1常用注解概览3.2控制器层注解3.2.1@Tag-控制器分组3.2.2@Operation
- swagger2接口参数排序/position失效的问题
散着步的码农
javaswagger2
在使用springfox-swagger22.9.2时position排序没有生效,在网上找了相关资料,需要重写swagger的两个类,具体如下。packagetop.lidaoyuan.hamster.api.config.swagger;importjava.util.List;importjava.util.stream.Collectors;importorg.springframewor
- Swagger升级指南:从注解到实战
m0_72696598
javaswaggeropenapi
一、Swagger注解的变化:从@Api到@Operation1.旧版本(Swagger2.0+Springfox)核心注解:@Api:标记Controller类,定义接口分组。@ApiOperation:标记Controller方法,定义接口功能。@Api(tags="用户管理")@RestControllerpublicclassUserController{@ApiOperation("创建
- Swagger2与Springdoc集成与使用指南
codingPower
微服务Swagger2springbootjava开发语言
以下是将Swagger2迁移到Springdoc(支持OpenAPI3)的集成与使用指南,涵盖关键步骤、配置示例及注意事项:1.依赖配置Springdoc是支持OpenAPI3规范的现代工具,适用于SpringBoot项目。需替换或添加以下依赖:org.springdocspringdoc-openapi-starter-webmvc-ui2.2.0注意:若项目原使用springfox-swagg
- Spring Boot(十五):集成Knife4j
图南随笔
SpringBootJavaspringboot后端java
Knife4j的简介Knife4j是一个集Swagger2和OpenAPI3为一体的增强解决方案,它的前身是上一篇文章中介绍的swagger-bootstrap-ui。swagger-bootstrap-ui的所有特性都会集中在Knife4j中,并且Knife4j也提供了很多非常方便的增强功能。Knife4j的使用1.添加依赖包knife4j已经引入了springfox,所以在使用时不用再次引入了
- Swagger go中文版本手册
科技百宝箱
golang开发语言后端
Swaggo(github.com/swaggo/swag)的注解语法是基于OpenAPI2.0(以前称为Swagger2.0)规范的,并添加了一些自己的约定。主要官方文档:swaggo/swagGitHub仓库:这是最权威的来源。链接:https://github.com/swaggo/swag重点关注:README.md:包含了基本的安装、使用方法和一些简单的注解示例。README_zh-CN
- 12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)
Alsn86
JAVA学习笔记java
12.SpringDocOpenAPI功能介绍(用于生成API接口文档)SpringDocOpenAPI是一个基于OpenAPI3.0/3.1规范的工具,用于为SpringBoot应用生成API文档。它是springfox(Swagger2.x)的现代替代方案,完全支持SpringBoot3.x和JDK17+,具有更强的兼容性和功能。1.SpringDocOpenAPI核心概念(1)OpenAPI
- 【NestJS】swagger快速接入
程序员查理
NestJS#Javascript
1.安装swagger$npminstall--save@nestjs/swaggerswagger-ui-express//如果使用fastify,则必须安装fastify-swagger而不是swagger-ui-express:$npminstall--save@nestjs/swaggerfastify-swagger2.Bootstrap启动配置import{NestFactory}fr
- Spring Boot + MongoDB + QueryDSL 实战项目
我就是夏迎春
本文还有配套的精品资源,点击获取简介:本项目是一个综合性的学习平台,旨在通过构建一个SpringBoot+MongoDB项目,教授开发者如何使用SpringDataJPA持久化数据,利用QueryDSL进行复杂查询,并通过Swagger2组件调试RESTfulAPI。该项目详细展示了SpringBoot应用开发的核心技术集成和使用过程,帮助开发者提升技能和项目质量。1.SpringBoot快速构建
- Swagger2.0访问权限的配置
专注代码十年
java
Swagger2.0本身并不提供访问权限的配置,但可以通过在应用程序中配置访问权限来限制对Swagger页面的访问。1.在SpringSecurity中配置Swagger访问权限如果您正在使用SpringSecurity,则可以通过在Security配置中添加以下内容来限制对SwaggerUI的访问:@Configuration@EnableWebSecuritypublicclassSecuri
- Spring Boot集成Swagger:打造高效、规范的API文档管理方案
软件职业规划
springbootjava后端
1.添加依赖在SpringBoot项目中集成Swagger的第一步是引入相应的依赖。根据你的项目需求和技术栈,可以选择以下两种主流的Swagger集成方式之一。选择合适的依赖库是确保集成顺利进行的关键。使用springfox-boot-starterspringfox-boot-starter是Swagger与SpringBoot集成的传统方式,它基于Swagger2.x版本,适用于SpringB
- springboot 整合swagger2
兮川
SpringBoot后端springbootswagger2
相信很多人都用过postman,使用postman其实可以很简便的进行接口调试,但是呢,每次还要写url,以及要添加参数名字(很容易写错)。所以啊,swagger2优势就体现出来了,它只需要添加少量注解即可在项目下调试接口,并且可以根据项目是否是测试还是生产环境,可以显示或禁止页面接口调试,介绍就到这里,开始写整合部分。一.maven添加依赖此处使用的是2.7.0版本,下面的ui二选一即可,spr
- Springboot整合Swagger+mybatis-plus
cccy001
springbootmybatisjava
目录1.springboot整合swagger接口文档1.1什么是swagger21.2为什么需要使用swagger2的api文档1.3如何使用swagger22.springboot整合mybatis-plus2.1mp的简介2.2如何使用1.springboot整合swagger接口文档1.1什么是swagger2它就是可以api接口,它可以对你书写的接口进行说明。并以文档的形式存在。、1.2
- Spring boot快速接入Swagger
lucky_iboy
后端javaswagger2springboot后端gson
swagger可以帮助我们快速生成api文档。1.引入swagger依赖 io.springfox springfox-swagger2 2.6.0 io.springfox springfox-swagger-ui 2.6.02.配置项目2.1增加@EnableSwagger2到启动类2.2配置swaggerdocket@Configurationpublic class Swagg
- 一种基于swagger 2.0 yaml文件的接口异常用例生成算法,单因子变量法
xiyubaby.17
java测试用例
详细解决方案一、设计思路基于Swagger2.0的YAML定义,为每个参数生成两类测试用例:正常用例:所有参数均符合约束。异常用例:仅一个参数违反约束,其他参数正常,且每个参数需覆盖所有可能的异常场景。二、实现步骤解析Swagger文件使用SnakeYAML解析YAML,提取参数定义(类型、约束、是否必填等)。生成正常值根据参数类型和约束生成合法值。生成异常值针对每个参数的所有约束,生成违反每个约
- django自动添加接口文档
LCY133
#django项目实战2023djangosqlite数据库
以下是使用Django和django-rest-swagger(或替代方案drf-yasg)生成API接口文档的详细指南。由于django-rest-swagger已停止维护,推荐使用drf-yasg(支持Swagger2.0和OpenAPI3.0),但两种方法均会说明:一、方案选择与安装1.方案对比库名维护状态支持规范功能特点django-rest-swagger已弃用Swagger2.0旧项目
- Swagger2 多环境安全配置
L烧鱼
学习笔记javaswagger
一、生产环境关闭Swagger我们该怎么做?1、在配置文件新增开关#swagger开关swagger2.enable=true2、修改SwaggerConfifig动态设置开关@Configuration@EnableSwagger2publicclassSwaggerConfig{ @Value("${swagger2.enable}") privatebooleanenable; @Be
- Spring Boot 3 中集成 Swagger 问题:Type javax.servlet.http.HttpServletRequest not present
我命由我12345
后端-问题清单springbootservlet后端javahttpspringjava-ee
问题与处理策略问题描述io.springfoxspringfox-swagger23.0.0io.springfoxspringfox-swagger-ui3.0.0在SpringBoot3中集成Swagger时,报如下错误java.lang.TypeNotPresentException:Typejavax.servlet.http.HttpServletRequestnotpresent#翻译
- 已解决:配置了Swagger,但Swagger-ui.html网页打不开
PinkandWhite
遇到的问题&bugspringbootswagger2javahtml
解决方法:在pom中把swagger降级如果你是3.0.0,降到2.9.2即可,再进入Swagger-ui.html就可以了io.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.2
- JAVA开发 在 Spring Boot 中集成 Swagger
天之涯上上
javaspringboot开发语言
Swagger是一个广泛使用的API文档生成工具,可以帮助你自动生成和维护RESTfulAPI的文档。在不同的框架中集成Swagger通常需要添加相应的依赖项。以下是几种常见Java框架(如SpringBoot)中集成Swagger的依赖配置。在SpringBoot中集成SwaggerSpringBoot结合Swagger可以通过springfox-swagger2和springfox-swagg
- swagger访问路径
igotyback
swagger
Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip
- 涂司机在学习restful
Driver_tu
java学习笔记restful
最近在学习springboot,有看到swagger2暴露restful接口增加JWT来进行安全性验证的相关技术,restful听都听过很多次,但到底是什么呢?这个知识点不稍微深入了解下,心里就是不虚浮。RESTful是什么?首先找到百度百科上的解释是:一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。RESTful带来了什么好处?它主要用于客户端和服务器交互类的软件。基于
- SpringBoot——2.7.3版本整合Swagger3
阳光倾洒
SpringBootspringbootspringjava
前言Swagger2(基于openApi3)已经在17年停止维护了,取而代之的是sagger3(基于openApi3),而国内几乎没有sagger3使用的文档,百度搜出来的大部分都是swagger2的使用,这篇文章将介绍如何在java中使用openApi3(swagger3)。一、swagger3的使用OpenAPIOpenApi是业界真正的api文档标准,其是由Swagger来维护的,并被lin
- 项目前的demo(Security+RestTemplate+MyBatis+Swagger)
喜欢刷dp的菜菜
mybatisjavatomcat
把基础mapper映射包写好后,写个小demo,写一个访问接口,一个rest接口,mapper直接引包就行.swagger@Configuration@EnableSwagger2publicclassSwaggerConfigextendsBaseSwaggerConfig{@OverridepublicSwaggerPropertiesswaggerProperties(){returnSwa
- html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
- 【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
- make:cc 命令未找到解决方法
daizj
linux命令未知make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
- Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
- 多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表finereportjava报表报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
- mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
- Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
- javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
- 定时器和获取时间的使用
百合不是茶
时间的转换定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
- JDK1.5 Queue
bijian1013
javathreadjava多线程Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
- http认证原理和https
bijian1013
httphttps
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
- 【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
- 【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
- lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
- java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
- redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
- [JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
- 安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
- SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密ssl证书密钥签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
- Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
- php包管理工具推荐
dcj3sjt126com
PHPComposer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
- Gson使用四(TypeAdapter)
eksliang
jsongsonGson自定义转换器gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
- JQM控件之Navbar和Tabs
gundumw100
htmlxmlcss
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
- 利用归并排序算法对大文件进行排序
iwindyforest
java归并排序大文件分治法Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
- iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
- 索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
- Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点学习永无止境AngularJS纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
- hibernate联合查询问题
sxj19881213
sqlHibernateHQL联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
- struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache