- Docker重启命令
wujiada001
docker容器
重启Docker通常指的是停止当前正在运行的Docker服务,并重新启动它。这个过程可以清除缓存、更新版本并重新加载配置等,有助于解决Docker运行中的一些问题。以下是重启Docker的几种常用方法:1.使用systemctl命令(适用于大多数Linux发行版)在大多数Linux系统上,Docker服务是通过systemd管理的,因此可以使用systemctl命令来重启Docker服务。停止Do
- 麒麟系统安装达梦DM8数据库
程序猿的杂货店
C#开发总结数据库DM8达梦数据库国产数据库麒麟系统
1环境说明在虚拟机上安装麒麟系统,在麒麟系统上安装达梦数据库,并且通过window去管理2官网地址https://www.dameng.com/list_110.html或https://eco.dameng.com/download/(推荐)3下载Docker安装包下载网站:https://eco.dameng.com/download/下载地址:https://download.dameng.
- Docker下Dubbo服务优雅上下线实现
丿似锦
dubbokubernetesdubboqos
简介在Docker容器环境中部署基于Dubbo的服务时,实现服务的优雅上下线是至关重要的。这通常涉及到两个关键步骤:首先,确保服务能够从注册中心摘除,停止接受新的请求;其次,等待所有正在处理的请求完成后再终止容器。通过结合Kubernetes的preStopHook和Dubbo的QoS功能,可以有效地实现这一目标。环境Docker+Kubernetes+SpringBoot+Dubbo⭐实现Pre
- Docker入门及基本概念
web2u
Dockerdocker容器运维javaspring服务器
让我们从最基础的概念开始逐步理解。假设你已经准备好了docker环境。第一步,让我们先通过实际操作来看看当前系统中的镜像(images)和容器(containers)状态:dockerimages#查看所有镜像dockerps-a#查看所有容器(包括未运行的)输出结果:REPOSITORYTAGIMAGEIDCREATEDSIZElinqiu1199/trae2apiv1.0.10d72ae591
- 云原生架构概念
睡不醒的小泽
软件架构云原生微服务
云原生架构概念云原生架构(CloudNativeArchitechtrue)作为一种现代软件开发的革新力量,正在逐渐改变企业构建、部署和管理应用程序的方式。它的核心优势在于支持微服务架构,使得应用程序能够分解为独立、松耦合的服务,每个服务都可以单独开发、部署和扩展,从而提高了敏捷性和迭代速度。此外,云原生架构通过容器化技术,如Docker和Kubernetes,确保了应用程序在不同环境中的一致性和
- 开源分布式存储系统在云原生数据库领域的实践与应用
ITPUB-微风
开源分布式云原生
本文深入探讨了Curve项目,一个专为云原生环境设计的开源分布式存储系统。文章详细介绍了Curve的块存储架构、其在云原生数据库领域的实际应用,并展望了项目的未来发展方向。一、Curve项目介绍Curve项目致力于打造一个云原生、高性能、稳定且易运维的开源分布式存储系统。它支持私有云、公有云和混合云上的部署,兼容CSI插件,并支持容器化部署和Kubernetes集成。Curve的设计理念在于提供高
- dockerfile构建haproxy镜像
linlusama
dockerbashlinuxdocker
dockerfile构建haproxy镜像结构[root@dockerhaproxy]#tree.├──dockerfile├──entrypoint.sh└──file├──entrypoint.sh├──haproxy-2.4.0.tar.gz└──install.sh//创建dockerfile存放目录[root@docker~]#mkdir-p/haproxy/file[root@dock
- Docker 部署 OnlyOffice 文档服务器
老友@
Dockerdocker服务器容器onlyoffice后端编辑器运维
Docker部署OnlyOffice文档服务器前言一、准备工作二、设置变量和目录结构三、创建并运行OnlyOffice容器四、访问OnlyOffice文档服务器五、配置和管理总结前言OnlyOffice是一个强大的开源文档编辑平台,支持文档、表格、演示文稿等文件格式的编辑。通过Docker部署OnlyOffice文档服务器,可以简化安装过程并快速实现文档管理和编辑功能。本文将展示如何使用Docke
- 渗透小记--Docker Registry未授权访问
瘾大侠
web安全
在俺的日常工作中,发现了一处有意思的漏洞,所以在此做一个记录。但是我不想泄露公司秘密,不想吃牢饭,所以只能以比较抽象的方式来记录过程了,望各位见谅。自动操作手法nmap就能很好的发现,但是俺是通过ffuf到的。1.nmap扫描端口DockerRegistry(API:2.02.尝试访问http://:/v2/_catalog,如果你没有被401拒绝,那么恭喜他,他中招了。3.使用drg.py获取所
- Dockerfile部署haproxy
Op_Wa
dockerlinux运维服务器dockerhaproxy
文章目录Dockerfile部署haproxydockerfile网站服务器测试功能Dockerfile部署haproxydockerfile//目录结构[root@192~]#treehaproxy/haproxy/├──Dockerfile├──files│├──haproxy-2.4.0.tar.gz│└──install.sh└──start.sh//dockerfile[root@192
- Docker_启动redis,容易一启动就停掉
weixin_40877388
dockerdockerredis容器
现象以及排查过程最近在使用docker来搭建redis服务,但是在启动redis哨兵容器时,总是发现这个容器启动后立马就停止了。首先想到的是不是服务器资源不够用了导致的这个现象,排查后发现不是资源问题。再者猜测是不是启动报错了,查看log后,发现启动正常,且在启动完成后redis服务就停掉了。最后分析应该是redis容器的问题。Docker需要一个前台进程要保证Docker容器的运行,必须需要一个
- 手把手教你使用docker-compose部署jenkins
你的阔哥哥啊
dockerjenkins
1,环境准备dockerdocker-compose2,编写docker-compose文件version:'3'services:#集合docker_jenkins:user:root#为了避免一些权限问题,这里使用了rootrestart:always#重启方式image:jenkins/jenkins:lts#指定服务所使用的镜像,这里选择了LTS(长期支持)container_name:j
- 免费 MLOps 课程:学习机器学习运维的完整流程
真智AI
学习机器学习运维免费教程
掌握MLOps:训练和跟踪实验、构建ML流水线、模型部署、生产环境监控,并从DevOps采用最佳实践。免费MLOps课程概览(DataTalks.Club提供)课程平台:DataTalks.Club适合人群:有一定Python和ML经验的开发者重点内容:模型训练、实验跟踪、流水线构建、模型部署、监控和DevOps最佳实践目录什么是MLOps?为什么需要MLOps?MLOpsZoomcamp课程介绍
- Jenkins 环境搭建---基于 Docker
CarryBest
jenkins运维
前期准备提前安装jdk、maven、nodeJs(如果需要的话)创建jenkins环境目录,用来当做挂载卷/data/jenkins/一:拉取Jenkins镜像dockerpulljenkins/jenkins:lts二:设置Jenkins挂载目录mkdir-p~/jenkins_homesudochown1000:1000~/jenkins_home三:启动Jenkins容器dockerrun-
- Docker基础实践与应用举例
珠峰日记
docker容器运维
Docker是一个轻量级容器化平台,通过将应用及其依赖打包到容器中,实现快速部署和环境一致性。以下是Docker的实践与应用场景举例,结合具体操作步骤:一、基础实践1.快速启动一个容器#运行一个Nginx容器,映射宿主机80端口到容器80端口dockerrun-d-p80:80--namemy-nginxnginx-d:后台运行-p:端口映射--name:容器名称2.查看容器状态dockerps-
- 【Docker】部署tomcat
灭虚陌疯
dockerdockertomcat容器
docker部署tomcat准备阶段1、检查Docker环境2、检查网络连接下载tomcat镜像1、搜索Tomcat镜像(可选)2、拉取Tomcat镜像创建并运行Tomcat容器1、创建数据目录(可选)2、运行Tomcat容器访问Tomcat1、打开浏览器2、查看Tomcat页面部署web应用1、将web应用部署到tomcat:2、重新加载或重启Tomcat(如有必要):准备阶段1、检查Docke
- docker容器配置tomcat并部署项目
虹猫大侠
dockerubuntudockertomcatubuntu
1、搜索镜像并拉取,就选第一个tomcat,看起来用的比较多1、搜索镜像:dockersearchtomcat2、拉取镜像:dockerpulltomcatroot@ivan-virtual-machine:/home/tomcat#dockersearchtomcatNAMEDESCRIPTIONSTARSOFFICIALAUTOMATEDtomcatApacheTomcatisanopenso
- 使用open-webui+deepseek构建本地AI知识库
deepseek
序本文主要研究一下如何使用OpenWebUI+deepseek构建本地AI知识库步骤拉取open-webui镜像dockerpullghcr.io/open-webui/open-webui:maindocker启动dockerrun-d-p3000:8080\-eOLLAMA_BASE_URL=http://host.docker.internal:11434\ghcr.io/open-webu
- [Android开发] 工具篇--Docker使用
z4a1c2
Android开发实战docker
Docker介绍Docker是一种容器工具,是一种轻量化的虚拟技术,可以支持高效便捷地创建和使用Linux容器,同时可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。官网:https://www.docker.com/Docker基本概念Docker中有非常重要的三个基本概念:镜像(Image)、容器(Container)和仓库(Re
- Calibre-Web Docker部署
m0_74823611
前端docker容器
经测试,pdf支持在线阅读,也就是网页打开,而且也可以记住阅读进度,doc文档不可以在线阅读,只有下载功能,其他暂未测试。!!!请注意,阅读进度是保存在浏览器缓存的,也就是说换一个浏览器或者换一个设备,就无法同步了。目前几个比较多人用的类似的电子书架,几乎都基于Calibre改的,因此几乎都不支持跨设备同步阅读进度,若要同步,一般是基于WebDev实现。一.Calibre-Web是什么Calibr
- 数据中心虚拟化与高可用性架构实施指南
伟大无须多言
php开发语言
数据中心虚拟化与高可用性架构实施指南项目背景随着业务的不断扩展和技术的迭代更新,公司决定采用虚拟化技术和构建高可用性架构来提高数据中心的资源利用率和业务连续性。本项目旨在详细描述运维人员在实施数据中心虚拟化和高可用性架构过程中的关键步骤和任务。工作职责1.规划和实施KVM虚拟化环境1.1环境搭建-**宿主机配置**:配置宿主机以支持KVM虚拟化,包括修改主机名、设置DNS反向解析、自动挂载系统光盘
- docker安装Open WebUI详解-遇到的坑OSError: We couldn‘t connect to ‘https://huggingface.co‘ to load this file
坚定信念,勇往无前
AIdocker容器运维
一、OpenWebUI简介OpenWebUI(https://openwebui.com)是一个用户友好的Web界面,专为本地大语言模型(LLMs)设计。它支持多种模型,包括Ollama和OpenAI兼容的API,并允许用户通过图形界面轻松调试和调用模型。OpenWebUI的功能丰富,包括代码高亮、数学公式支持、网页浏览、预设提示词、本地RAG集成、对话标记、模型下载、聊天记录查看以及语音支持等。
- Dify修改nginx访问端口
m0_74824002
面试学习路线阿里巴巴nginxeureka运维
修改配置文件#进入到dify文件夹下cd/dify/dockervi.env#找到EXPOSE_NGINX_PORT在780行,改成你需要的端口默认是80ps:#------------------------------#DockerComposeServiceExposeHostPortConfigurations#------------------------------EXPOSE_NG
- Docker部署 MongoDB及常用命令
KawYang
dockermongodb
docker部署dockerrun-d\--namemongo\-eMONGO_INITDB_ROOT_USERNAME=root\-eMONGO_INITDB_ROOT_PASSWORD=123456\-p27017:27017\-v./local-mongo-data:/data/db\mongo:latest或者编写docker-compose.yaml文件。如下:version:'3.1'
- windows下安装Open Web UI
醒醒a
python
windows下安装openwebui有三种方式,docker,python+node.js,整合包.这里我选择的是第二种,非docker.非Docker方式安装1.安装Python:下载并安装Python3.11,建议安装路径中不要包含中文字符,并勾选“Addpython3.11toPath”选项。安装完成后,在命令提示符中输入python,若显示Python版本信息则表示安装成功。2.安装No
- 如何在docker中访问宿主机其他服务的接口
2401_89793006
热门话题docker容器运维
1.使用host.docker.internal(推荐)适用场景:DockerDesktop(Windows和macOS)或DockerEngine18.03+(Linux)。原理:Docker提供了一个特殊的主机名host.docker.internal,指向宿主机。使用方法:在容器中访问宿主机服务时,使用host.docker.internal代替localhost或127.0.0.1。例如,
- docker常用命令
舌尖上的五香
docker
删除none镜像dockerrmi$(dockerimages-f“dangling=true”-q)
- docker-compose 搭建redis集群(三台服务器,每台服务器上一主一从)
黑尾土拨鼠
redisdockerdockerredis服务器docker-compose
文章目录1、前言2、准备工作2.1、Docker安装2.2、docker-compose安装2.3目录创建3、redis配置文件3.1生成redis.conf文件3.2shell文件无法执行问题解决3.3docker-compose.yml文件编写4、启动集群及初始化4.1启动Redis集群4.2Redis集群初始化5、总结1、前言 使用DockerCompose搭建Redis集群是一种便捷高效
- python 使用WinRM连接远程windows
Red丶哞
Python桌面运维pythonwindows开发语言
一、什么是WinRM服务WinRM是很早之前微软推出的一种新式的方便远程管理的服务WindowsRemoteManagement的简称,相比RDP远程桌面协议,WinRM这种服务更具备轻量、低宽带的特性,WinRM与WinRS(WindowsRemoteShell)的使用可以让远程连接的运维人员拥有CMDShell环境,通过命令执行对服务器与服务器数据进行管理。随着运维人员的任务量的增大,RDP的
- Docker Desktop 入门教学
优人ovo
docker容器运维
引言DockerDesktop是Docker官方为开发者提供的桌面应用程序,支持在Windows和macOS上轻松构建、运行和共享容器化应用程序。它集成了Docker引擎、DockerCLI客户端以及DockerCompose等工具,方便您在本地开发和测试。一、快速安装1.系统要求Windows:Windows1064位:专业版、企业版、教育版或2004及更高版本的家庭版。Windows1164位
- java线程Thread和Runnable区别和联系
zx_code
javajvmthread多线程Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
- 【转】JSON与XML的区别比较
丁_新
jsonxml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
- c++ 实现五种基础的排序算法
CrazyMizzz
C++c算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
- 我的软件
麦田的设计者
我的软件音乐类娱乐放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
- linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
- 各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
- oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
- tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
- 遍历的方法
百合不是茶
遍历
遍历
在java的泛
- linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
- java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
- 【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
- 【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
- 通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
- java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
- Netty源码学习-ReplayingDecoder
bylijinnan
javanetty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
- js特殊字符过滤
cngolon
js特殊字符js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
- hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
- linux shell脚本中切换用户执行命令方法
daizj
linuxshell命令切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123"
- 好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
- Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
- linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总linux管道命令linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
- Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
- asp.net获取站点根目录下子目录的名称
hvt
.netC#asp.nethovertreeWeb Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
- Eclipse程序员要掌握的常用快捷键
justjavac
javaeclipse快捷键ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
- c++编程随记
lx.asymmetric
C++笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
- linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
- 随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
- 我认为POJO是一个错误的概念
windshome
javaPOJO编程J2EE设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&