- 任务书
cao_guang_yi
任务书:https://pan.baidu.com/s/1diP5st2U322nrKHj0fvvWw
- 面向对象设计之依赖反转原则
流星雨爱编程
#设计模式/架构设计java开发语言设计模式c++
设计模式专栏:http://t.csdnimg.cn/4Mt4u目录1.引言2.控制反转(loC)3.依赖注入(DI)4.依赖注入框架(DlFramework)5.依赖反转原则(DIP)6.总结1.引言前面讲到,单一职责原则和开闭原则的原理比较简单,但在实践中用好比较难,而本节要讲的依赖反转原则正好相反。依赖反转原则的使用简单,但理解较难。在进行详细介绍之前,读者可以尝试回答下列向题。1)“依赖反
- 苹果手机怎么学python_我是如何在 Python 内使用深度学习实现 iPhone X 的 FaceID 的...
weixin_39693437
苹果手机怎么学python
雷锋网按:本文为AI研习社编译的技术博客,原标题HowIimplementediPhoneX'sFaceIDusingDeepLearninginPython,作者为SHIVAMBANSAL。翻译|陶玉龙余杭校对|Lamaric整理|MY在最近推出的iPhoneX中,它被讨论最多的特点之一是它采用了新的解锁方法,即TouchID:FaceID。在研发出无边框手机后,苹果公司想开发一种新的方法来快捷
- 32555 Fundamentals of Software Development
后端
32555FundamentalsofSoftwareDevelopmentCourseareaUTS:InformationTechnologyDeliveryAutumn2024;CityCreditpoints6cpRequisite(s)120CreditPointsinspk(s):C10061BachelorofEngineeringDiplomainEngineeringPracti
- C primer plus 复习题答案 上
不好,商鞅要跑
c++primerplusc语言c++算法
复习题答案上第二章第三章第四章第五章第六章第二章c++程序的模块叫做函数预处理器编译指令是用作替换编译指令可以使用程序再std空间内的各定义cout>cheeses;coutactor;arraybetsie;array;arraydipsea;intarr[5]{1,3,5,7,9};inteven=arr[0]+arr[4];cout>num;int*ptr=newint[num];vecto
- Enhancing WiFi7|How IPQ9574 and IPQ9554 Collaborate with QCN9274
自动驾驶人工智能
EnhancingWiFi7NetworkEfficiency:HowIPQ9574andIPQ9554CollaboratewithQCN9274Inthefast-pacedworldofwirelessnetworking,thepursuitofefficiencyisparamount.WiththeadventofWiFi7,thelatestiterationofwirelesste
- QT 获取主机名称IP地址及所有信息
不想上课的hh
Qt从0到1服务器qtc++运维
防止中文乱码#pragmaexecution_character_set("utf-8")voidGetHostNameIPAndInfoProcess::GetHostNameAndIpAddress(){//获取主机名称QStringStrLocalHostName=QHostInfo::localHostName();ui->lineEdit_Hostname->setText(StrLoc
- 纪客老白【每日答疑】白纪龙老师每日8点起更新一题目,欢迎各位关注!
纪客老白
纪客老白学生提问:智能穿戴,类似手环的产品,充电位置以及按键位置,静电±4kv测试会打复位,除了加ESD还可以如何改善?另外,据我所知,有些ESD效果会比较好,请问有推荐的吗?白老师答:(1)ESD首先从本质上而言,其也是过压或者电压快速变化的一种情况,和我们的EFT,surge,DIP电压跌落等类似,只不过其具体的能量表现形式不一样,如下图:(2)然后ESD也属于我们EMS防护中其中的一项,所以
- 来自上帝的声音
神志心学
【网页分享】https://mp.weixin.qq.com/s?ascene=1&chksm=c162648ff615ed9936bdefc2544dc6da5b5f00b58c276d728b77ccabe1db84e20b4d8ad2dc2f&pass_ticket=%2BXO7ASCOXf985R6cS933K6rF6CoklK1n8ddipnDOUak0dU9U4H0efvVhtrolv
- bodipy荧光修饰BDP R6G NHS ester/琥珀酰亚胺活化酯,CAS:335193-70-9,激发发射Ex/Em(nm)530/548
齐岳lihao
经验分享
BDPR6GNHSester/琥珀酰亚胺活化酯CAS:335193-70-9产品名称BDPR6GNHSester/琥珀酰亚胺活化酯英文名称BDPR6GNHSester/琥珀酰亚胺活化酯分子量437.21CAS335193-70-9分子式C22H18BF2N3O4存储条件-20°,避光保存时间两年Ex/Em(nm)530/548氟化硼二吡咯类荧光染料相对比于荧光素、罗丹明或者菁染料有着较高的量子产率
- 150173-72-1,BODIPY 558/568 羧酸,一种疏水性荧光染料
XYBMWCR
化学试剂
您好,欢迎来到新研之家文章关键词:BODIPY558/568羧酸,BODIPY558/568carboxylicacid,BODIPY558/568COOH,150173-72-1一、基本信息产品简介:BODIPY558/568COOH拥有高量子产率和消光系数,荧光属性稳定,无论是在极性、pH值还是溶剂种类的变化中,都能保持恒定的表现。BODIPY558/568的另一个显著特点是其疏水性。这种独特
- BODIPY R6G(罗丹明)-alkyne/amine/COOH/NHS 活化脂/N3/DBCO/Hz/MAL/Tz
XARuixiBio
荧光染料其他
BODIPYR6GALK炔烃:外貌:黄色至棕色固体质谱M+增量:377.15分子量:377.2CAS号:2006345-31-7分子式:C21H18N3BF2OIUPAC名称:N-炔丙基-3-(3-(4,4-Difluoro-5-phenyl-3a,4a-diaza-4-bora-s-indacen-3-yl)propionamide溶解度:擅长DMF、DMSO、DCMEx/Em(nm):530/
- k8s运维-04-重启node机器的过程
当当一丢丢
重启node的情况此处是直接rebootnode节点重启时间较短Nodecontroller默认的驱逐时间为5分钟,在此时间之内,node重启后,kubelet会自动重启所有pod重启后podip地址会变controllermanager上的--pod-eviction-timeout参数设定时长重启时间较长-超过5minutes首先,NodeController(实际是Controllerman
- qnx bsp
cococenstar
qnx
如何使用bsp1.在Linux,Mac或Windows主机系统上安装QNX软件开发平台(SDP)。2.将所需的电缆连接到目标板,并配置主板DIP开关.3.将可引导操作系统映像传输到目标平台。4.启动主板,确认QNXNeutrinoRTOS正在主板上运行。注:在开始使用BSP之前,您可能需要查看主板硬件和启动加载程序的文档。此信息通常由主板供应商提供。每个BSP用户指南在可能的情况下都包含一个指向供
- LVS-DR配置
shen198623
lvslinux
1、准备工作--LVSServerDIP(LVS服务节点的内网固定IP):192.168.80.105VIP(虑拟IP):192.168.80.10在这个节点上设置一个虚拟VIP信息以上命令中的“lo:0”表示这个VIP绑定的目标卡设置,“192.168.80.10”这个IP就是VIP的值,广播地址为"192.168.80.10",子网掩码为"255.255.255.255",“up"关键字表示立
- 6. 依赖倒置原则——面向对象设计原则
Zal哥哥
前两节我们详细介绍了面向对象设计原则中的开闭原则和里氏替换原则,在本节中我们来介绍依赖倒置原则。依赖倒置原则的定义依赖倒置原则(DependenceInversionPrinciple,DIP)是ObjectMentor公司总裁罗伯特·马丁(RobertC.Martin)于1996年在C++Report上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不
- 嵌入式笔记--51单片机--江科大
古予一
#51单片机笔记51单片机单片机
1单片机介绍1.1芯片名称STC89C52RC40I-PDIP0707➢STC:公司名,AT(ATM),P(飞利浦),W(华邦),S(西门子),I(英特尔);➢8:80C51内核;➢9:RAM型号,9(FlashE2P-RAM),0(MarkRAM),7(EP-RAM);➢C:CMOS工艺,LV、LE(低压产品),S(可串行化编程);➢5:固定;➢2:2X4KB,ROM;➢RC:512B大小RAM
- 量化投资--量化干货分享
小丁丁_ddxdd
应用层-算法应用
来源链接:http://blog.csdn.net/dipolar/article/details/50752839/http://www.newsmth.net/nForum/#!article/Python/128763最近程序化交易很热,量化也是我很感兴趣的一块。国内量化交易的平台有几家,我个人比较喜欢用的是JoinQuant,里面有篇干货贴分享给大家,希望对各位有帮助。==========
- PSMC使用过程中的一些坑
杨康chin
首先肯定是要callSNPs的,最好用bcftoolspileup,避免后面报错可以用一个管道一次性搞定:bcftoolsmpileup-Ou-I-freference.fastaNL.marked.bam|\bcftoolscall-c-Ov|vcfutils.plvcf2fq-d10-D100|gzip>diploid.fq.gz##-Ou:输出未压缩的bcf文件##-I:skipindels
- Add ip config in hosts,but it does not work
Jay_de9e
BackgroundIuseNotepadtoopenhostsandaddipconfiginside.Mycomputerosiswindows764x.Symptomtheipconfigdoesnotwork.Causeactually,theipconifgwasnotaddedcorrectly.SolutionflushtheDSN'scacheopenhostswithtxt
- 配置Juniper虚墙vSRX基于策略的IPsec VPN(WEB方式)
Danileaf_Guo
网络服务器运维
正文共:1444字18图,预估阅读时间:2分钟关于IPsecVPN,我们已经有一个合集了(IPsecVPN)。之前接触比较多的是H3C的IPsecVPN,后来接触的厂家多了,才发现大家的模型或者叫法还是存在一些差异的。比如今天我们要配置的Juniper的IPsecVPN,分为Policy-BasedIPsecVPNs(基于策略的VPN)和Route-BasedIPsecVPNs(基于路由的VPN)
- 在分页后新增字段
lkning
重写list方法deflist(self,request,*args,**kwargs):queryset=self.filter_queryset(self.get_queryset())page=self.paginate_queryset(queryset)undiposed_count=Maintain.objects.filter(Q(shop=request.user.shop)&Q(
- POLO360
斜杠先生_
Polo360首页HOMEBacktohomePRODUCTSwhatwehaveforyouSERVICESThingswedoBLOGFollowourupdatesCONTACTWaystoreachusLoremipsumdolorsitamet,tconsecteturadipisicingelitPerfectLogicAllyouwantyourwebsitetodo.Sedutpe
- 巴勒斯坦以色列外交官针对加沙枪杀抗议平民事件进行交锋
我以为的顿悟
TherehavebeenangryexchangesbetweenIsraeliandPalestinianenvoysattheUN,asthediplomaticfalloutoverdeadlyviolenceinGazagatheredpace.Some58PalestinianswerekilledwhenIsraelitroopsfiredonprotestersonMonday,w
- CA3 Group Programming Fundamentals
nicename5
python开发语言
DiplomainInformationTechnologyProgrammingFundamentalsCA3GroupAssignmentJanuary2023SemesterSubmissionDate:12February2024,11.59a.m.ContinuousAssessment3GroupAssignment(40%)TheJavaapplicationconstitutes3
- firewalld
z.. l..
php网络firewalld
目录firewalld常用参数firewalld可以对服务或端口流量进行控制firewalld实现192.168.27.128:80端口转发为192.168.27.125:8090端口配置firewalld端口转发firewalld防火墙:iptables,firwalldiptablesservice首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了需要reloa
- Diamond软件的使用--(1)软件安装及配置
zidan1412
FPGAfpga
此处不推荐使用3.5版本的diamond,会出现RVL抓取数据失败的情况。我个人测试情况是使用3.11以上版本即可避免该情况,故演示采用目前最新的3.12版本。3.12版本64位官网链接(简单注册账户即可下载):https://www.latticesemi.com/en/Products/DesignSoftwareAndIP/FPGAandLDS/LatticeDiamond百度云盘(内附li
- CityMaker 8二次开发之“这是什么鬼?”
[email protected]
citymakerGIS
什么时候才能去掉头重脚轻的毛病?1、Doc:voidIProjectTree.SetVisibility(GuidID,byteVisibleMask)设置可见性。Note:byteVisibleMask这是什么?设置可见性?该如何设置?可能:gviViewportMask是控制在不同视口的可见性的标识,如果需要设置多个,可以这样:gviView0|gviView1。因此代码这样写:uintcod
- 设计模式——“依赖倒置”原则
prik丶
目录查看其它设计模式笔记,点这里→设计模式笔记汇总依赖倒置原则(DependenceInversionPrinciple,DIP)定义:Highlevelmodulesshouldnotdependuponlowlevelmodules.Bothshoulddependuponabstractions.Abstractionsshouldnotdependupondetails.Detailssh
- 葡语学习复盘日志(26):《大学葡萄牙语》第二册第十二课
罗冬梅Faustina
Oqueéquepretendesfazerquandoacabaresocurso?Mário:Normalmente,paraondeéquevocêsvãotrabalharquandoacabaremocurso?LinXiao:Podemostrabalharemáreasbastantevariadas,taiscomoaDiplomacia,aEcomomiaeoComércio,a
- 关于旗正规则引擎中的MD5加密问题
何必如此
jspMD5规则加密
一般情况下,为了防止个人隐私的泄露,我们都会对用户登录密码进行加密,使数据库相应字段保存的是加密后的字符串,而非原始密码。
在旗正规则引擎中,通过外部调用,可以实现MD5的加密,具体步骤如下:
1.在对象库中选择外部调用,选择“com.flagleader.util.MD5”,在子选项中选择“com.flagleader.util.MD5.getMD5ofStr({arg1})”;
2.在规
- 【Spark101】Scala Promise/Future在Spark中的应用
bit1129
Promise
Promise和Future是Scala用于异步调用并实现结果汇集的并发原语,Scala的Future同JUC里面的Future接口含义相同,Promise理解起来就有些绕。等有时间了再仔细的研究下Promise和Future的语义以及应用场景,具体参见Scala在线文档:http://docs.scala-lang.org/sips/completed/futures-promises.html
- spark sql 访问hive数据的配置详解
daizj
spark sqlhivethriftserver
spark sql 能够通过thriftserver 访问hive数据,默认spark编译的版本是不支持访问hive,因为hive依赖比较多,因此打的包中不包含hive和thriftserver,因此需要自己下载源码进行编译,将hive,thriftserver打包进去才能够访问,详细配置步骤如下:
1、下载源码
2、下载Maven,并配置
此配置简单,就略过
- HTTP 协议通信
周凡杨
javahttpclienthttp通信
一:简介
HTTPCLIENT,通过JAVA基于HTTP协议进行点与点间的通信!
二: 代码举例
测试类:
import java
- java unix时间戳转换
g21121
java
把java时间戳转换成unix时间戳:
Timestamp appointTime=Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:m
- web报表工具FineReport常用函数的用法总结(报表函数)
老A不折腾
web报表finereport总结
说明:本次总结中,凡是以tableName或viewName作为参数因子的。函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。
CLASS
CLASS(object):返回object对象的所属的类。
CNMONEY
CNMONEY(number,unit)返回人民币大写。
number:需要转换的数值型的数。
unit:单位,
- java jni调用c++ 代码 报错
墙头上一根草
javaC++jni
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000777c3290, pid=5632, tid=6656
#
# JRE version: Java(TM) SE Ru
- Spring中事件处理de小技巧
aijuans
springSpring 教程Spring 实例Spring 入门Spring3
Spring 中提供一些Aware相关de接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到de匙ApplicationContextAware.实现ApplicationContextAwaredeBean,在Bean被初始后,将会被注入 Applicati
- linux shell ls脚本样例
annan211
linuxlinux ls源码linux 源码
#! /bin/sh -
#查找输入文件的路径
#在查找路径下寻找一个或多个原始文件或文件模式
# 查找路径由特定的环境变量所定义
#标准输出所产生的结果 通常是查找路径下找到的每个文件的第一个实体的完整路径
# 或是filename :not found 的标准错误输出。
#如果文件没有找到 则退出码为0
#否则 即为找不到的文件个数
#语法 pathfind [--
- List,Set,Map遍历方式 (收集的资源,值得看一下)
百合不是茶
listsetMap遍历方式
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身
- 解决SimpleDateFormat的线程不安全问题的方法
bijian1013
javathread线程安全
在Java项目中,我们通常会自己写一个DateUtil类,处理日期和字符串的转换,如下所示:
public class DateUtil01 {
private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void format(Date d
- http请求测试实例(采用fastjson解析)
bijian1013
http测试
在实际开发中,我们经常会去做http请求的开发,下面则是如何请求的单元测试小实例,仅供参考。
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import
- 【RPC框架Hessian三】Hessian 异常处理
bit1129
hessian
RPC异常处理概述
RPC异常处理指是,当客户端调用远端的服务,如果服务执行过程中发生异常,这个异常能否序列到客户端?
如果服务在执行过程中可能发生异常,那么在服务接口的声明中,就该声明该接口可能抛出的异常。
在Hessian中,服务器端发生异常,可以将异常信息从服务器端序列化到客户端,因为Exception本身是实现了Serializable的
- 【日志分析】日志分析工具
bit1129
日志分析
1. 网站日志实时分析工具 GoAccess
http://www.vpsee.com/2014/02/a-real-time-web-log-analyzer-goaccess/
2. 通过日志监控并收集 Java 应用程序性能数据(Perf4J)
http://www.ibm.com/developerworks/cn/java/j-lo-logforperf/
3.log.io
和
- nginx优化加强战斗力及遇到的坑解决
ronin47
nginx 优化
先说遇到个坑,第一个是负载问题,这个问题与架构有关,由于我设计架构多了两层,结果导致会话负载只转向一个。解决这样的问题思路有两个:一是改变负载策略,二是更改架构设计。
由于采用动静分离部署,而nginx又设计了静态,结果客户端去读nginx静态,访问量上来,页面加载很慢。解决:二者留其一。最好是保留apache服务器。
来以下优化:
- java-50-输入两棵二叉树A和B,判断树B是不是A的子结构
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/25411174201011445550396/
import ljn.help.*;
public class HasSubtree {
/**Q50.
* 输入两棵二叉树A和B,判断树B是不是A的子结构。
例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一
- mongoDB 备份与恢复
开窍的石头
mongDB备份与恢复
Mongodb导出与导入
1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的.
所以,都有如下通用选项:
-h host 主机
--port port 端口
-u username 用户名
-p passwd 密码
2: mongoexport 导出json格式的文件
- [网络与通讯]椭圆轨道计算的一些问题
comsci
网络
如果按照中国古代农历的历法,现在应该是某个季节的开始,但是由于农历历法是3000年前的天文观测数据,如果按照现在的天文学记录来进行修正的话,这个季节已经过去一段时间了。。。。。
也就是说,还要再等3000年。才有机会了,太阳系的行星的椭圆轨道受到外来天体的干扰,轨道次序发生了变
- 软件专利如何申请
cuiyadll
软件专利申请
软件技术可以申请软件著作权以保护软件源代码,也可以申请发明专利以保护软件流程中的步骤执行方式。专利保护的是软件解决问题的思想,而软件著作权保护的是软件代码(即软件思想的表达形式)。例如,离线传送文件,那发明专利保护是如何实现离线传送文件。基于相同的软件思想,但实现离线传送的程序代码有千千万万种,每种代码都可以享有各自的软件著作权。申请一个软件发明专利的代理费大概需要5000-8000申请发明专利可
- Android学习笔记
darrenzhu
android
1.启动一个AVD
2.命令行运行adb shell可连接到AVD,这也就是命令行客户端
3.如何启动一个程序
am start -n package name/.activityName
am start -n com.example.helloworld/.MainActivity
启动Android设置工具的命令如下所示:
# am start -
- apache虚拟机配置,本地多域名访问本地网站
dcj3sjt126com
apache
现在假定你有两个目录,一个存在于 /htdocs/a,另一个存在于 /htdocs/b 。
现在你想要在本地测试的时候访问 www.freeman.com 对应的目录是 /xampp/htdocs/freeman ,访问 www.duchengjiu.com 对应的目录是 /htdocs/duchengjiu。
1、首先修改C盘WINDOWS\system32\drivers\etc目录下的
- yii2 restful web服务[速率限制]
dcj3sjt126com
PHPyii2
速率限制
为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。
要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filter
- Hadoop2.5.2安装——单机模式
eksliang
hadoophadoop单机部署
转载请出自出处:http://eksliang.iteye.com/blog/2185414 一、概述
Hadoop有三种模式 单机模式、伪分布模式和完全分布模式,这里先简单介绍单机模式 ,默认情况下,Hadoop被配置成一个非分布式模式,独立运行JAVA进程,适合开始做调试工作。
二、下载地址
Hadoop 网址http:
- LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
gundumw100
android
一切为了快速迭代
import java.util.ArrayList;
import org.json.JSONObject;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayo
- 三道简单的前端HTML/CSS题目
ini
htmlWeb前端css题目
使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( )。http://hovertree.com/shortanswer/bjae/7bd72acca3206862.htm
在HTML中加入<table style=”color:red; font-size:10pt”>,此为( )。http://hovertree.com/s
- overrided方法编译错误
kane_xie
override
问题描述:
在实现类中的某一或某几个Override方法发生编译错误如下:
Name clash: The method put(String) of type XXXServiceImpl has the same erasure as put(String) of type XXXService but does not override it
当去掉@Over
- Java中使用代理IP获取网址内容(防IP被封,做数据爬虫)
mcj8089
免费代理IP代理IP数据爬虫JAVA设置代理IP爬虫封IP
推荐两个代理IP网站:
1. 全网代理IP:http://proxy.goubanjia.com/
2. 敲代码免费IP:http://ip.qiaodm.com/
Java语言有两种方式使用代理IP访问网址并获取内容,
方式一,设置System系统属性
// 设置代理IP
System.getProper
- Nodejs Express 报错之 listen EADDRINUSE
qiaolevip
每天进步一点点学习永无止境nodejs纵观千象
当你启动 nodejs服务报错:
>node app
Express server listening on port 80
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (
- C++中三种new的用法
_荆棘鸟_
C++new
转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html
作者: mt
其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如:
string* ps = new string("
- Ruby深入研究笔记1
wudixiaotie
Ruby
module是可以定义private方法的
module MTest
def aaa
puts "aaa"
private_method
end
private
def private_method
puts "this is private_method"
end
end