- Ansible-Tower web界面管理安装
阿亮说技术
linuxansibletower
Ansible-Towerweb界面管理安装Ansible-Tower介绍Ansible-Tower(之前叫做awx)是将ansible的指令界面化,简明直观,简单易用。Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写。Ansible-tower可以通过界面从github拉取最新playbo
- 微信小程序swiper 视频中间大,两边小,轮播滑到中间视频自动播放组件教程
Garc
微信小程序小程序
静态效果:进入下面小程序可以体验效果,点击底部看剧栏目一、创建小程序组件二、代码1、WXML2?1:0}}"previous-margin="255rpx"next-margin="255rpx"bindchange="swiperChange">2、wxss.swiper-wrapper{flex:1;width:100%;height:100%;margin:0auto;border-radi
- 微信小程序的常用组件
一指流沙q
微信小程序微信小程序
目录一、常用的视图容器类组件①view②scroll-view③swiper和swiper-item二、常用的基础内容组件①text②rich-text三、其它常用组件①button②image③navigator一、常用的视图容器类组件①view普通视图区域类似于HTML中的div,是一个块级元素常用来实现页面的布局效果属性说明text-align用来设置元素中的的文本对齐方式.只对文本有效,对
- 微信小程序常用组件
xiangxiongfly915
#微信小程序微信小程序组件
文章目录微信小程序常用组件buttoniconimagescroll-viewswipercheckboxaudiovideo微信小程序常用组件button简单使用wxmldefaultminiprimarywarnplaindisabledloading进入客服会话获取用户信息{{nickName}}jsPage({getUserInfo(e){console.log("errMsg:");co
- 微信小程序之开发会议OA项目
空空_k
微信小程序微信小程序小程序会议OA
目录前言本篇目标首页会议投票个人中心会议OA项目-首页配置tabbarmock工具pageswiper会议信息会议OA项目-会议自定义tabs组件会议管理会议OA项目-投票会议OA项目-个人中心前言文章含源码资源,投票及个人中心详细自行查看源码即可小程序没有DOM对象,一切基于组件化储备知识理解事件机制理解组件化理解数据绑定Flex布局移动端适配方案建议:学习vue后开发小程序更简单本篇目标首页会
- 微信小程序关于swiper bindChange重复执行的问题
小丶侯
问题:快速滚动swiper,导致出现一卡一卡或者来回滚动的效果。前言:一开始以为是请求的次数太多了,setData的执行先后导致的,花费了大量的时间去做数据精简、逻辑判断等工作,到最后还是仍是没有解决,只能排除了这种可能。之后又把问题锁定在了swiper组件本身上边,控制台打印,发现bindChange绑定的方法重复执行了!!!查看了一下官方文档的解释:而我们的bindChange确实使用了set
- 鸿蒙开发系列教程(二十一)--轮播处理
huazi99
鸿蒙harmonyos华为
轮播处理Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示在自身尺寸属性未被设置时,会自动根据子组件的大小设置自身的尺寸参数:通过loop属性控制是否循环播放,该属性默认值为true。通过设置autoPlay属性,控制是否自动轮播子组件。该属性默认值为false通过indicatorStyle属性自定义导航点的位置和样式语法:1、创建轮播实例对象–SwiperCon
- Uni-App从入门到实战
小白入道
uniapp微信小程序小程序
uinapp总结文章目录uinapp总结前言一、创建项目二、项目结构三、在pages.json中配置文件1.全局配置globalstyle2.page常用3.tab常用4.启动模式condition四、组件1.内置组件uniapp组件视图容器view===>divscroll-view滚动标签必须给该标签设置宽或高swiperswiper-item轮播图标签基础内容text===>spanicon
- flutter报错总结
孤雁_南飞
1.Error:Cannotrunwithsoundnullsafety,becausethefollowingdependenciesdon'tsupportnullsafety:package:flutter_swiperpackage:flutter_page_indicatorpackage:transformer_page_viewForsolutions,seehttps://dart
- 小程序文字循环滚动效果
端木安玉
先上代码xx.wxml李女士189********7分钟前获得装修报价杨女士137********8分钟前获得装修报价杨先生137********9分钟前获得装修报价杨先生137********9分钟前获得装修报价林女士173********5分钟前获得装修报价王女士159********6分钟前获得装修报价.wcss.swiper-box{position:relative;height:280
- 2018-09-04去哪儿网 Swiper
无欲而为
gitcheckoutindex-swiper切换到index-swiper分支Gitstatus查看是否在index-swiper分支上vue-awesome-swiper第三方的轮播图插件,https://blog.csdn.net/gxx_csdn/article/details/78913936码云git操作原始代码
- 轮播图 HarmonyOS 鸿蒙 ArkTS ArkUI
特创数字科技
鸿蒙HarmonyOS社区harmonyos华为
第一步:新建图片数组@Stateswiperimgs:Array=[$r('app.media.a'),//本地图片或者网络图片$r('app.media.b'),$r('app.media.c'),$r('app.media.d')]第二步:写入轮播图代码Column(){Swiper(){ForEach(this.swiperimgs,(item)=>{Image(item).width('9
- 鸿蒙开发第3篇__大数据量的列表加载性能优化
109905418
HarmonyOS和OpenHarmonyharmonyList列表
列表是最常用到的组件一ForEach渲染控制语法————ForeachForeach的作用遍历数组项,并创建相同的布局组件块在组件加载时,将数组内容数据全部创建对应的组件内容,渲染到页面上constswiperImage:Resource[]={$r("app.media.ic_home"),$r("app.media.ic_coupons"),$r('app.media.ic_internal_
- 小程序 常用组件
过去日记
小程序小程序前端javascript
文章目录常见组件viewtextimageswipernavigatorrich-textnodes属性buttoniconfromradiocheckbox常见组件重点讲解⼩程序中常⽤的布局组件view,text,rich–text,button,image,navigator,icon,swiper,radio,checkbox。等view代替原来的div标签点击我试试text⽂本标签只能嵌套
- 信小程序开发 day04 - swiper圆角、全局共享响应式数据思想、hy-event-store
望穿秋水小作坊
1、微信小程序里面setData是同步还是异步的呢?setData在设置data数据上,是同步的通过最新数据对wxml进行渲染,渲染的过程是异步的2、如何给swiper控件设置圆角?根据小程序官方回答,这是个webview的渲染bug.banner-swiper{border-radius:10rpx;overflow:hidden;transform:translateY(0);}3、小程序跨页
- #小程序 分享一个有趣轮播图特效
麦多馅饼
小程序小程序
因为最近在做一个智慧校园i小程序,写到学校概况页面,就想到这个动画,来分享一下一、先上图:不得不说,放上照片后既视感有点gaoxiao一、代码部分:{{name[index]}}.swiper-block{height:400rpx;width:100%;}.swiper-item{display:flex;flex-direction:column;justify-content:center;
- 说说在 Android 的 RecyclerView 中如何实现下拉刷新
deniro
1SwipeRefreshLayout修改布局文件,新增SwipeRefreshLayout:.........这里我们把RecyclerView放在SwipeRefreshLayout中。2处理刷新修改活动类:publicclassMainActivityextendsAppCompatActivity{privateSwipeRefreshLayoutsrl;@Overrideprotecte
- uniapp的image引用本地图片不显示问题解决
风轻_
uni-app
使用img标签要用绝对路径前面没有'/'{type:"swiperList",data:[{imgUrl:'static/image/img/swiper4.jpg'},{imgUrl:'static/image/img/swiper5.jpg'},{imgUrl:'static/image/img/swiper6.jpg'},]}而使用image标签时要使用相对路径或绝对路径(前面有'/'){b
- swiper中间大两边小的轮播图
生于乱世
8C039727-1ADE-4b37-BA03-C151164FF8F0.png首先引入swiper官网的css和jshtml代码如下Swiper的切换非常难得又值钱的认证证书深圳市优秀互联网企业认定证书质量管理体系认证荣誉证书计算机软件著作权登记证书增值电信业务经营许可证certifySwiper=newSwiper('#certify.swiper-container',{watchSlide
- Swiper10.1.0图片轮播效果
ᥬ 小月亮
vue前端
1、swiper安装10.1.0版本:https://blog.csdn.net/Y1914960928/article/details/1325838782、swiper使用:①模板使用:②ts中引入组件:③组件使用:声明变量配置样式编写3、图片显示顺序问题:4、完整代码:{{item.name}}上传图片handleTool(event)">import{defineComponent,rea
- react做一个轮播图(比对reactjs-swiper、swiper方式)
sasaraku.
前端
1、使用插件:reactjs-swiperhttps://www.cnblogs.com/cbp-jltx/p/9681838.htmlreact插入图片:https://www.cnblogs.com/cheeseCatMiao/p/9797136.html在public下建文件夹imgs这个方法的示意图(虽然它动的又慢又卡,但真的只是视频转gif不灵活的锅,原本还是很流畅的。这个方法不能点底下
- 《经济学人》精读67:Telephone tower v rubber boots
VictorLiNZ
EricssonandNokiaarenowdirectrivals.Howdotheycompare?TheyarethelastofEurope’smakersofmobiledevicesandnetworkequipment,whichonceruledtheworld“SUCCESSistoxic”,saysRistoSiilasmaa,Nokia’schairman,assnowfla
- NextJS开发:使用swiper实现轮播图
ArslanRobot
NextJS开发教程NextJSreactjs
安装swipernpmiswiper创建组件一定要添加"useclient",作为客户端组件来使用示例代码中的样式使用的tailwindcss"useclient"import{Swiper,SwiperSlide}from"swiper/react"import{Pagination}from'swiper/modules';//ImportSwiperstylesimport'swiper/c
- 【Android-Compose】Material3 新版下拉刷新 PullRefresh
许多仙
androidCompose下拉刷新PullRefreshMaterial3
这里写自定义目录标题1、`(新)`用于JetpackCompose的刷新指示器1.1SwipeRefresh迁移到新的PullRefresh1.2迁移步骤1.3自定义指示器2、原始文档(SwipeRefresh)的使用依赖导入2.1使用方法2.2完整示例(包括视图模型的实现)2.3无需轻扫即可显示刷新2.4指标2.5自定义指标翻译和简单修改,原文:https://google.github.io/
- swiper实现竖直方向滚动字幕
只诉温暖不言殇_cc03
垂直方向的滚动在开发过程中遇到的问题主要有2个,一个是移动端无法滚动,一个是每次数据循环完成之后sweiper都从第一条数据开始导致字幕快速滚动之后才正常滚动,原因是没有设置循环滚动解决:移动端添加属性observer:true,observeParents:true,对数据进行监听添加loop:true属性解决每次都从头开始滚动,之前添加过这个属性没好使后来又可以了注意:swiper-wrapp
- 微信小程序swiper+scroll-view实现滑动切换内容
苏苏哇哈哈
1.实现效果scroll-left.gif2.实现原理swiper:滑块视图容器。其中只可放置swiper-item组件,设置不同的swiper-item,通过bindchange事件,动态的改变当前选中项,swiper默认高度为150,必须设置相应高度才可。scroll-view:包裹整个页面,设置scroll-x或scroll-y,改变滚动的方向。3.实现代码{{item.name}}tab{
- Swiper轮播图系列
一茗道人nview
前端vue.jsjavascript
一、初始化SwipernewSwiper('.swiper-container',{initialSlide:0,slidesPerView:3,breakpoints:{750:{slidesPerView:1},990:{slidesPerView:2}},spaceBetween:12,loop:true,speed:1000,autoplay:{disableOnInteraction:f
- [ 具体数学 ] 1:递归式与封闭式
zhangtianli
递归问题汉诺塔(HANOI)命题有三根杆子,第一根有大小从小到大共个盘子,要求遵循以下3个规则,将在第一个杆子上全部的盘子移至第三个杆子。每次只能移动一个盘子。每次只能移动每个杆子最上面的盘子。每根杆子上的盘子下面大,上面小。求问题的最小步数。例子:当时,移动方法如下图所示。Tower_of_Hanoi.gif最小移动次数为,故时命题的解为。解决方法:命名并求解命名设为个盘子时汉诺塔问题的解.三个
- 2024/2/3学习记录
lxh0113
前端javascript开发语言
微信小程序小程序中组件的分类视图容器view普通视图区域,类似于div常用来实现页面的布局效果。scroll-view可滚动的视图区域,常用来实现滚动列表效果swiper和swiper-item常用swiper组件的常用属性轮播图容器组件和轮播图item组件基础组件text文本组件,类似于html中的span标签通过text组件的selectable属性,实现长按选中文本内容的效果rich-tex
- Flutter实现轮播图功能
彬sir哥
Flutterandroidstudiofluttercard_swiper轮播图
一、在pubspec.yaml中添加:dependencies:#轮播图card_swiper:^3.0.1card_swiper:^3.0.1,要获取最新版本:https://pub-web.flutter-io.cn/packages/card_swiper/versions,这个里面有文档可以看,如下图:打开Versions看看文档,如下图:二、在项目下的assets\images上添加图标
- 安装数据库首次应用
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 {