- VS中x86(x32),x64,any CPU,Debug和Release的区别
Conchpeng
学习资料[非纸质]
x86(x32),x64,AnyCPU之间的联系x86编译的.exe或者dll都是32位的,x64是64位的,AnyCPU是根据操作系统决定dll必须与调用它的主程序保持一致但是由AnyCPU生成的dll,也会保持生成它的主程序的性质:随平台(此时是调用它的主程序)改变而改变。也就是说,若dll由AnyCPU编译的,可以任意被x86或者x64主程序调用Debug和Release的区别调试版本、运行
- java进行pdf文件压缩
后端
pdf文件压缩添加依赖com.luhuiguoaspose-pdf23.1publicclassOptimizePdf{publicstaticvoidoptimize(Stringsource,Stringtarget){Documentdoc=newDocument(source);//设置压缩属性OptimizationOptionsopt=newOptimizationOptions();
- DeepSeek教unity------UI框架
Edision_li
DeepSeek教unityunityuic#学习
/****************************************************文件:BasePanel.cs作者:Edision日期:#CreateTime#功能:面板基类*****************************************************/usingUnityEngine;publicclassBasePanel:MonoBeha
- 静态NodeList 和 动态NodeList的区别
javascript
ps:了解这个知识点的原因前两天我在重温jsdom编程的时候,看到了获取dom元素这一章,然后看到了getElementsByTagName()和getElementsByClassName(),之后又了解到了现代浏览器新出的一个DOMAPI--querySelectorAll().以我的性格,看到这些方法之后我肯定是想了解一下它们的不同点啦,所以我就翻阅资料,就看到了stackoverflow上
- 并发编程利器 - Future 接口
小马不敲代码
Java并发编程
一、背景介绍对于线程池来说,任务执行类只需要实现Runnable接口,然后交给线程池,就可以轻松的实现异步执行多个任务的目标,提升程序的执行效率,比如如下异步执行任务下载。//创建一个线程池ExecutorServiceexecutor=Executors.newFixedThreadPool(2);//提交任务executor.submit(newRunnable(){@Overridepubl
- 别再瞎摸索!POI 操作 Excel 轻松添加下拉框
后端
POI操作EXCEL增加下拉框依赖org.apache.poipoi4.1.2org.apache.poipoi-ooxml4.1.2有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择采用隐藏sheet页的方式来进行操作StringsheetName="supplier_hidden_sheet";HSSFSheetsupplierShe
- class unity 定义类_[Unity]用PropertyDrawer自定义struct/class的外观
weixin_39722025
classunity定义类
一般来说,当我们要扩展编辑器时,我们会从Editor类继承,为自己的MonoBehaviour实现不同的外观。但是如果有一个struct/class,在许多地方被使用,Unity默认的外观又不够好看,此时想修改它的外观,就需要使用PropertyDrawer了。上图是一个Monobehaviour中包含一个简单的struct(TileCoord类),包含两个int,但是显示效果十分别扭。实现对应的
- C++ -- vector的模拟实现
kk\n
c++开发语言
vector.h的内容:#pragmaonce#include#include#includenamespacekk{templateclassvector{public:typedefT*iterator;//指针版迭代器typedefconstT*const_iterator;//注:这里的bgein()、end()写的都是用的传值返回,所以不能对返回值进行++,--这种操作(就是++v.be
- SpringBoot中实现WebMvcConfigurer,配置跨域无效
TNTnine
Springspringbootjava后端
跨域配置如下:@ConfigurationpublicclassCorsConfigimplementsWebMvcConfigurer{/***跨域配置*-Access-Control-Allow-Origin的介绍:*-https://blog.csdn.net/MicroAnswer/article/details/102913571*-SpringMVC路径匹配规则:*-1、https:/
- 一个最简单的方法解决Python的TypeError: xxx() takes 1 positional argument but 2 were given
Wiktok
python开发语言
当我们在类内写了函数进行调用的时候,有时侯并没有传递参数,所编写的函数方法也不需要参数,但运行会报错:TypeError:xxx()takes1positionalargumentbut2weregiven,参数请求的错误,某并未深究其中原因,但单纯就解决这个问题而言,根据某实际经验,只需要在你的目标调用函数里定义空参数即可解决报错问题。演示如下:假设报错:classMainPro:def__in
- 求职刷题力扣DAY34--贪心算法part05
云墨丹青
leetcode贪心算法算法
Definitionforabinarytreenode.classTreeNode:definit(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightclassSolution:defminCameraCover(self,root:Optional[TreeNode])->int:#三种状态0:
- 1.力扣热题100
珍珠是蚌的眼泪
刷题leetcode力扣热题100
文章目录一、两数之和二、字母异位词分组三、最长连续序列一、两数之和publicint[]twoSum(int[]nums,inttarget){HashMapnumIndexMap=newHashMap();int[]result=newint[2];for(inti=0;i>groupAnagrams(String[]strs){Map>strListMap=newHashMapcurList=
- 使用C#元组实现列表分组汇总拼接字段
懒人咖
LINQC#工作笔记c#开发语言经验分享笔记
文章目录使用C#元组实现列表分组汇总拼接字段代码运行结果使用C#元组实现列表分组汇总拼接字段代码stringmessage=string.empty;vartupleList=newList>();tupleList.Add(newTuple("SCHB2412270002","1","批号或生产日期有误,最早批号【2446】生产日期【2024-11-11】"));tupleList.Add(ne
- c++字符串逆序输出
青取之于蓝但没他蓝
1008.字符串操作时间限制:1000MS内存限制:65535KB题目描述:输入一个字符串,把其中的字符按逆序输出。如LIGHT,输出THGIL,要求用string类输入:一个字符串输出:字符串的逆序示例:inputLIGHToutputTHGIL#include#includeusingnamespacestd;intmain(){stringstring1;cin>>string1;strin
- qt实现文字跑马灯效果
凌武贰玖
#QPainterQtqt开发语言
实现跑马灯的方式多种多少样,可以通过定时器,或者animation等来实现。本文通过定时器,将第一个文字,移动到最后一个这种方式来实现,还有其他方式哈。直接上源码h文件#ifndefTEXTTICKER_H#defineTEXTTICKER_H#include#include/*跑马灯标签文字*/classTextTicker:publicQLabel{Q_OBJECTpublic:TextTic
- 深入解析C++静态关键字:生命周期、存储管理与C++11线程安全实现
zzr915
c++
目录1、静态关键字的作用2、静态关键字的使用规则2.1存储位置2.2初始化机制3、静态局部变量的线程安全性解析3.1C++11及之后的线程安全机制3.2C++11之前的风险3.3关键注意事项4、总结1、静态关键字的作用静态关键字(static)可调整变量的生存周期,使其与程序生命周期一致。例如:classInt{intvalue;public:Int(intx=0):value(x){coutda
- 双指针-盛最多水的容器
Vacant Seat
算法java数据结构双指针
盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。输入:整型数组输出:整型变量思路:本题使用双指针,一个在左一个在右,值小的先移动classSolution{publicintmaxArea(int[]heig
- KubeEdge 1.20.0 版本发布
laowangsen
数据库
KubeEdge1.20.0现已发布。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强,同时新增了多语言Mapper-Framework的支持。新增特性:支持批量节点操作多语言Mapper-Framework支持边缘keadmctl新增podslogs/exec/describe和Devicesget/edit/describe能力解耦边缘应用与节点组,支持使用Node
- 数据结构2.2:顺序表的实现
weixin_43979650
数据结构
实现一个顺序表函数classSequencelist():def__init__(self):self.SeqList=[]defCreatSequenceList(self):print('***********************')print('*请输入数据后按回车键确认,若想结束按“#”')print('***********************')Element=input("清
- Maven 构建分发包与依赖管理
drebander
Mavenmavenjava
Maven是Java开发中广泛使用的构建和依赖管理工具,它不仅能帮助开发者高效地构建项目,还提供了强大的依赖管理和版本控制功能。通过Maven,你可以轻松地构建并发布JAR、WAR等分发包,并管理不同版本的依赖。本文将讲解如何使用Maven构建并发布JAR/WAR包,以及如何管理不同的发布版本,包括如何配置发布仓库、版本号管理和依赖范围。1.Maven构建分发包(JAR/WAR)1.1JAR包构建
- 成功解决 python+kivy的raise Exception(‘SDL2: Unable to load image‘) Unable to get a Window, abort.
projectnone2019
python开发语言后端
运行python+kivy一个小程序出错,代码如下:fromkivy.appimportAppfromkivy.uix.floatlayoutimportFloatLayoutclassSizeFloat(FloatLayout):def__init__(self,**kwargs):super().__init__(**kwargs)classSizeApp(App):defbuild(self
- 模型/视图编程
潦潦
Qtqt开发语言
1.MVC包含模型(Model表示数据)、视图(View用户界面)、控制器(Controller界面对用户输入的反应方式)三部分,Qt中还引入了委托(Delegate,又称代理)来对用户输入进行灵活处理,使用它可以定制数据的渲染和编辑方式。QAbstractItemModel是模型的抽象基类TheQAbstractItemModelclassprovidestheabstractinterface
- QtCreator 模块/视图编程( 一) 模型类,自定义模型QStringListModel,QStandardItemModel,QFileSystemModel,QSqlQueryModel,
psujtfc
QtQtCreatorQtCreator模块视图模型类自定义模型
1模型/视图架构1.1模型所有的模型都是基于QAbstractItemModel类,这个类定义了一个接口,可以供视图和委托来访问数据。Qt提供的现成模型:QStringListModel:用来存储一个简单的QString项目列表QStandardItemModel:管理复杂的树型结构数据项,每一个数据项可以包含任意数据QFileSystemModel:提供了本地文件系统中文件和目录的信息QSqlQ
- android-为手机设置全局代理
carden_coder
agentandroidandroid
有这么一个需求,需要给手机设置全局代理。百度到的结果都是设置后,如果需要清除代理的话,需要重启手机,这里使用的方式是不需要重启的方式后实现方式如下:设置代理:String[]strings={"settingsputglobalhttp_proxy"+ip+":"+port};ShellUtils.CommandResultcommandResult2=ShellUtils.execCmd(str
- GAN网络
Wzongming
pycharmpython
"""ModuleimplementingGANwhichwillbetrainedusingtheProgressivegrowingtechnique->https://arxiv.org/abs/1710.10196"""importdatetimeimportosimporttimeimporttimeitimportnumpyasnpimporttorchasthclassGenerat
- list中将具有对应字段的某一个对象放在第一个
NewBee.Mu
从头开始学java注意事项知识点总结java大数据mysql
publicclassDemo{privateIntegerid;privateIntegernum;publicDemo(){}publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}publicIntegergetNum(){returnnum;}publicvoidsetNum(Integer<
- Java 移除List中的元素,这玩意讲究!
2401_86401508
javalistwindows
接着看。循环+remove(Objecto)/remove(Indexi):没错,我们可以配合循环,把list里面的“C”元素都移除。循环自然有分while循环和for循环(包含foreach)。先看foreach方式:不得行!切记!for(Stringstr:list){if(“C”.equals(str)){list.remove(str);}}代码看似没问题,但是在foreach使用list
- QT5在windows下调用OpenCV库出现: undefined reference to `xxxxx' 错误解决办法(适用MinGW编译器)。
DS小龙哥
QT(C++)应用软件开发AI人工智能opencv
一、环境介绍window系统:win10X64QT版本:5.12QT5.12自带的MinGW编译器版本:mingw730_32与mingw730_64在QT的安装目录下,可以查看MinGW编译器的版本:二、使用OpenCV出现的问题在QT框架代码里使用老版本的分类器(cvLoad、cvHaarDetectObjects)处理图像时,正常编译没有问题,当使用新版本级联分类器(CascadeClass
- 使用TimerTask实现定时任务
Yvonne978
java开发语言
实现定时任务,需要解决三个问题:1.任务是什么,即干什么?2.如何执行?什么时候开始执行?执行频率?3.使用什么框架执行?这里使用轻量Spring自带的TimerTask进行实现一、编写任务新建一个类如MyThread,继承TimerTask,重写run方法packagecom.icfcc.cnaps2.thread;importjava.util.TimerTask;publicclassMyT
- 【二叉树学习8】
m0_46150269
学习
力扣450.删除二叉搜索树中的节点链接:link思路先用中序遍历把BST结构保存在res中;然后再遍历一遍res,如果有key则删除,没有则returnroot;最后重构BST方法1:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*Tre
- 安装数据库首次应用
Array_06
javaoraclesql
可是为什么再一次失败之后就变成直接跳过那个要求
enter full pathname of java.exe的界面
这个java.exe是你的Oracle 11g安装目录中例如:【F:\app\chen\product\11.2.0\dbhome_1\jdk\jre\bin】下的java.exe 。不是你的电脑安装的java jdk下的java.exe!
注意第一次,使用SQL D
- Weblogic Server Console密码修改和遗忘解决方法
bijian1013
Welogic
在工作中一同事将Weblogic的console的密码忘记了,通过网上查询资料解决,实践整理了一下。
一.修改Console密码
打开weblogic控制台,安全领域 --> myrealm -->&n
- IllegalStateException: Cannot forward a response that is already committed
Cwind
javaServlets
对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。 示例代码:
protected void doPost() {
if (someCondition) {
sendRedirect();
}
forward(); // Thi
- 基于流的装饰设计模式
木zi_鸣
设计模式
当想要对已有类的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能。
自定义的类成为装饰类
模仿BufferedReader,对Reader进行包装,体现装饰设计模式
装饰类通常会通过构造方法接受被装饰的对象,并基于被装饰的对象功能,提供更强的功能。
装饰模式比继承灵活,避免继承臃肿,降低了类与类之间的关系
装饰类因为增强已有对象,具备的功能该
- Linux中的uniq命令
被触发
linux
Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情 况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。
AD:
uniq [选项] 文件
说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个
- 正则表达式Pattern
肆无忌惮_
Pattern
正则表达式是符合一定规则的表达式,用来专门操作字符串,对字符创进行匹配,切割,替换,获取。
例如,我们需要对QQ号码格式进行检验
规则是长度6~12位 不能0开头 只能是数字,我们可以一位一位进行比较,利用parseLong进行判断,或者是用正则表达式来匹配[1-9][0-9]{4,14} 或者 [1-9]\d{4,14}
&nbs
- Oracle高级查询之OVER (PARTITION BY ..)
知了ing
oraclesql
一、rank()/dense_rank() over(partition by ...order by ...)
现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:
select e.ename, e.job, e.sal, e.deptno
from scott.emp e,
(se
- Python调试
矮蛋蛋
pythonpdb
原文地址:
http://blog.csdn.net/xuyuefei1988/article/details/19399137
1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:
IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:
http://www.ibm.com/d
- webservice传递自定义对象时函数为空,以及boolean不对应的问题
alleni123
webservice
今天在客户端调用方法
NodeStatus status=iservice.getNodeStatus().
结果NodeStatus的属性都是null。
进行debug之后,发现服务器端返回的确实是有值的对象。
后来发现原来是因为在客户端,NodeStatus的setter全部被我删除了。
本来是因为逻辑上不需要在客户端使用setter, 结果改了之后竟然不能获取带属性值的
- java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针
百合不是茶
C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:
定义一个指针p来指向a的地址(&是地址符号):
- Eclipse打不开,提示“An error has occurred.See the log file ***/.log”
bijian1013
eclipse
打开eclipse工作目录的\.metadata\.log文件,发现如下错误:
!ENTRY org.eclipse.osgi 4 0 2012-09-10 09:28:57.139
!MESSAGE Application error
!STACK 1
java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContai
- spring aop实例annotation方法实现
bijian1013
javaspringAOPannotation
在spring aop实例中我们通过配置xml文件来实现AOP,这里学习使用annotation来实现,使用annotation其实就是指明具体的aspect,pointcut和advice。1.申明一个切面(用一个类来实现)在这个切面里,包括了advice和pointcut
AdviceMethods.jav
- [Velocity一]Velocity语法基础入门
bit1129
velocity
用户和开发人员参考文档
http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html
注释
1.行级注释##
2.多行注释#* *#
变量定义
使用$开头的字符串是变量定义,例如$var1, $var2,
赋值
使用#set为变量赋值,例
- 【Kafka十一】关于Kafka的副本管理
bit1129
kafka
1. 关于request.required.acks
request.required.acks控制者Producer写请求的什么时候可以确认写成功,默认是0,
0表示即不进行确认即返回。
1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中
-1表示根据指定的最少Partition确认后才返回,这个在
Th
- lua统计nginx内部变量数据
ronin47
lua nginx 统计
server {
listen 80;
server_name photo.domain.com;
location /{set $str $uri;
content_by_lua '
local url = ngx.var.uri
local res = ngx.location.capture(
- java-11.二叉树中节点的最大距离
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class MaxLenInBinTree {
/*
a. 1
/ \
2 3
/ \ / \
4 5 6 7
max=4 pass "root"
- Netty源码学习-ReadTimeoutHandler
bylijinnan
javanetty
ReadTimeoutHandler的实现思路:
开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException
这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如
private final ChannelHandler timeoutHandler =
new ReadTim
- jquery验证上传文件样式及大小(好用)
cngolon
文件上传jquery验证
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery1.8/jquery-1.8.0.
- 浏览器兼容【转】
cuishikuan
css浏览器IE
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率:100%
解决方案:CSS里 *{margin:0;padding:0;}
备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
daizj
shell$#$?特殊变量
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:
$echo $$
运行结果
29949
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个
- 程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!
dcj3sjt126com
unix
翻到一本书,讲到编程一般原则是kiss:Keep It Simple, Stupid.对这个原则深有体会,其实不仅编程如此,而且系统架构也是如此。
KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原
- android Activity间List传值
dcj3sjt126com
Activity
第一个Activity:
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a
- tomcat 设置java虚拟机内存
eksliang
tomcat 内存设置
转载请出自出处:http://eksliang.iteye.com/blog/2117772
http://eksliang.iteye.com/
常见的内存溢出有以下两种:
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Java heap space
------------
- Android 数据库事务处理
gqdy365
android
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事
- Java 打开浏览器
hw1287789687
打开网址open浏览器open browser打开url打开浏览器
使用java 语言如何打开浏览器呢?
我们先研究下在cmd窗口中,如何打开网址
使用IE 打开
D:\software\bin>cmd /c start iexplore http://hw1287789687.iteye.com/blog/2153709
使用火狐打开
D:\software\bin>cmd /c start firefox http://hw1287789
- ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件
justjavac
chromeGooglegoogle apichrome插件
Chrome Web Store 安装地址: https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice
由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过script标记引用这些资源,让网站访问速度瞬间提速吧
- 进程VS.线程
m635674608
线程
资料来源:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000 1、Apache最早就是采用多进程模式 2、IIS服务器默认采用多线程模式 3、多进程优缺点 优点:
多进程模式最大
- Linux下安装MemCached
字符串
memcached
前提准备:1. MemCached目前最新版本为:1.4.22,可以从官网下载到。2. MemCached依赖libevent,因此在安装MemCached之前需要先安装libevent。2.1 运行下面命令,查看系统是否已安装libevent。[root@SecurityCheck ~]# rpm -qa|grep libevent libevent-headers-1.4.13-4.el6.n
- java设计模式之--jdk动态代理(实现aop编程)
Supanccy2013
javaDAO设计模式AOP
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。
&
- Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持
wiselyman
spring 4
2.1 默认方法(default method)
java8引入了一个default medthod;
用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展
使用default关键字
Spring 4.2支持加载在默认方法里声明的bean
2.2
将要被声明成bean的类
public class DemoService {