- Kafka系列之:Dead Letter Queue死信队列DLQ
快乐骑行^_^
KafkaKafka系列DeadLetterQueue死信队列DLQ
Kafka系列之:DeadLetterQueue死信队列DLQ一、死信队列二、参数errors.tolerance三、创建死信队列主题四、在启用安全性的情况下使用死信队列更多内容请阅读博主这篇博客:Kafka系列之:KafkaConnect深入探讨-错误处理和死信队列一、死信队列死信队列(DLQ)仅适用于接收器连接器。当一条记录以JSON格式到达接收器连接器时,但接收器连接器配置期望另一种格式,如
- RocketMQ 之死信队列
firepation
RocketMQrocketmq
在分布式消息系统中,消息的可靠传递和处理至关重要。然而,由于各种原因(如消息处理失败、消费超时等),一些消息可能无法被正常消费。这些无法被消费的消息如果不加以处理,会影响系统的稳定性和数据一致性。为了解决这一问题,RocketMQ提供了死信队列(DeadLetterQueue,DLQ)机制。本文将深入探讨RocketMQ的死信队列,包括其实现原理、应用场景以及使用示例。什么是死信队列?死信队列是一
- uniapp小程序无感刷新token
一只一只妖
uni-app小程序前端
request.js//request.jsimport{getApptoken,getStoredApptoken}from'./tokenRequest'//从合并模块导入//全局配置constMAX_RETRIES=1//最大重试次数constbaseURL='https://your-api.com'//请求队列和刷新状态letrequestsQueue=[]letisRefreshing
- C++内存泄露排查
workflower
软件工程软件需求开发语言
C++内存泄漏排查方法众多,下面为你介绍常见的工具和技巧:一、利用工具进行排查Valgrind(Linux)借助Valgrind的Memcheck工具,能够自动检测内存泄漏以及使用错误。bashvalgrind--leak-check=full--show-leak-kinds=all./your_programAddressSanitizer(ASan)这是一个快速的内存错误检测器,可集成到GC
- MySQL常用操作 查看表描述以及表结构、连接数及缓存和性能指标
查看表描述以及表结构查看数据库名SHOWDATABASES;SELECTDATABASE();SELECTDATABASE()AScurrent_database;查看数据库中表的列表SHOWTABLES;SELECTTABLE_NAME,TABLE_COMMENTFROMINFORMATION_SCHEMA.TABLESWHERETABLE_SCHEMA='your_database_name'
- ubuntu创建、删除虚拟环境
screenCui
ubuntulinux
your_name是自己起的环境名字创建虚拟环境首先通过xshell等工具与服务器建立链接。然后进行以下两步:激活condasource~/.bashrc2.创建虚拟环境condacreate-nyour_namepython=3.7退出以及删除虚拟环境退出虚拟环境condadeactivate删除虚拟环境condaremove-nyour_name--all
- Python项目如何读取nacos配置
Tizzy JJ
服务器pythonpycharm
目录一、nacos配置示例二、python读取nacos配置一、nacos配置示例在Nacos中创建yaml格式配置(DataID:your-data-id)#Nacos配置文件(your-data-id.yaml)app:env:productionversion:1.2.3apis:deepseek:api_key:"sk-your-deepseek-key-here"timeout:30da
- Android补全计划 TextView添加删除线、下划线、更新字体等效果
Greenland_12
Android补全计划android
1可在布局中直接更新可在布局中直接更新的:加粗、斜体、字体;其中字体文件需要放在res/font/your_font.ttf下2java动态设置需动态设置的:删除线、下划线,加粗和字体也可动态设置,且需要放于app/src/main/assets/fonts/xxx.ttf下java中txt1=((TextView)findViewById(R.id.txt1));txt2=((TextView)
- mysql报错1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
今天有个业务要连表查数据来着。很久没写SQL了写完满意运行SELECTac.activity_complaints_id,ac.activity_id,ac.content,ac.complaint_time,u.user_uuid,u.nameasuserName,ac.status,a.nameasactivityNameFROMt_activity_complaintacleftJOINus
- Docker 将镜像打成压缩包将压缩包传到服务器运行
一只帆記
Dockerdocker服务器容器
1.本地操作:将镜像打包为压缩文件#查看本地镜像列表dockerimages#打包指定镜像(替换your_image:tag为实际镜像名称和标签)dockersaveyour_image:tag|gzip>my_image.tar.gz示例:dockersavenginx:latest|gzip>nginx.tar.gz2.传输压缩包到服务器使用scp命令传输(确保服务器已开启SSH):scpmy
- 解决Ajax请求浏览器缓存问题的几种方法
在进行Ajax数据请求时,有时会遇到浏览器缓存响应结果的问题,导致无法获取到最新数据。本文介绍几种解决方法,帮助你确保每次请求都能获得最新的数据。1.添加随机数或时间戳一种简单而有效的方法是在请求URL中添加随机数或时间戳,以确保每次请求的URL都是唯一的,从而避免浏览器缓存。$.ajax({url:'your-api-endpoint?'+newDate().getTime(),method:'
- R语言 绘制上下双向分布柱状图
话不多说,直接上干货library(ggplot2)library(tidyr)set.seed(123)#设置随机种子保证可重现df<-data.frame(Type=rep(letters[1:5],each=5),Sample=paste("sample",rep(1:5,times=5),sep=""),Up=round(runif(25,min=0,max=100),1),Down=ro
- Python字符与ASCII转换方法
追逐此刻
pythonpython前端数据库
在Python中,可以使用内置函数ord()和chr()来转换字符和ASCII码:获取字符的ASCII码-用ord()ascii_code=ord('A')#返回65将ASCII码转为字符-用chr()character=chr(65)#返回'A'示例:#打印字母A-Z的ASCII码forletterin'ABCDEFGHIJKLMNOPQRSTUVWXYZ':print(f"{letter}:{
- java删除word第一行
宽客之家
javaword开发语言
如何实现Java删除Word文档第一行1.流程首先,让我们来看一下整个实现Java删除Word文档第一行的流程:步骤描述1读取Word文档2获取第一行内容3删除第一行内容4保存Word文档2.代码实现2.1读取Word文档登录后复制//创建一个File对象,指定Word文档的路径Filefile=newFile("path/to/your/word/document.docx");//使用Apac
- 要完成使用MLflow比较模型运行、选择模型并将其部署到REST API的教程
大霸王龙
python人工智能python机器学习mlflow
要完成使用MLflow比较模型运行、选择模型并将其部署到RESTAPI的教程,请按照以下有序步骤操作:设置环境导出MLflow跟踪URI:设置环境变量以指向您的MLflow跟踪服务。exportMLFLOW_TRACKING_URI=your-organization's-MLflow-server-url加载数据和预处理读取数据集:使用pandas读取包含数据集的CSV文件。importpand
- python实现数据库两个表之间的更新操作(模糊匹配)示例
半吊子的程序狗
python
frompymongoimportMongoClientimportpandasaspd#连接到MongoDB(这里假设MongoDB运行在本地默认端口上)mgclient=MongoClient('localhost',27017)#选择数据库(如果你没有指定数据库,MongoDB会使用默认的'test'数据库)db=mgclient['test']#替换'your_database_name'
- Docker容器中安装 ROS2-Humble 并使用 rviz
ZPC8210
docker容器运维
默认电脑已经安装了docker,没安装看这篇文章Docker安装(完整详细版)ROS和docker各种结合看官方文档dockerTutorials在OSRF中拉取想要的ROS版本docker镜像网址为拉取命令在这里dockerpullosrf/ros:humble-desktop-full拉取完后创建容器,但是为了能在docker中能打开窗口,将使用以下参数,只需要修改名字即可,your_name
- LeetCode423. Reconstruct Original Digits from English
tigerhuli
LeetCode
Givenanon-emptystringcontaininganout-of-orderEnglishrepresentationofdigits0-9,outputthedigitsinascendingorder.Note:InputcontainsonlylowercaseEnglishletters.Inputisguaranteedtobevalidandcanbetransforme
- Leetcode 423. Reconstruct Original Digits from English
小白菜又菜
Leetcode解题报告leetcodelinux算法
ProblemGivenastringscontaininganout-of-orderEnglishrepresentationofdigits0-9,returnthedigitsinascendingorder.AlgorithmCounttheoccurrencesofcharactersbasedonuniqueletters—forexample,theletter‘z’onlyapp
- 【如何设置ssh免密登录】
岁月玲珑
linuxsshgithubgit
设置SSH免密登录能够让你在不输入密码的情况下,通过SSH协议安全登录远程服务器。下面为你详细介绍设置步骤:1.生成SSH密钥对(若未生成)要生成SSH密钥对,可在本地终端执行以下命令:ssh-keygen-trsa-b4096-C"
[email protected]"当系统提示你“Enterafileinwhichtosavethekey”时,你可以直接按回车键使用默认文件位置,也可以
- macOS生成密钥对教程
大大小小聪明
macossshgithub
在macOS下生成密钥对(如SSH密钥)可通过终端命令完成,以下是详细步骤:方法1:使用ssh-keygen生成SSH密钥对(推荐)打开终端通过Spotlight搜索(Command+空格)输入Terminal并打开。生成密钥对输入以下命令(推荐使用更安全的ed25519算法,或兼容性更好的RSA):#使用ed25519算法(更安全高效)ssh-keygen-ted25519-C"your_ema
- CSS属性的特性_继承性
51349592
css前端
CSS的某些属性具有继承性(Inheritance):可继承属性在元素上设置后,其后代元素会自动继承该属性继承属性的优先级低于元素直接设置的样式如果后代元素自己有设置该属性,那么优先使用后代元素自己的属性继承是沿着DOM树向下传递的可继承属性字体与文本:font-family,font-size,font-weight,font-stylecolor,line-height,letter-spac
- SQL server 一个字段为yymmdd+3位序号 修改为yymm加4位序号的方法
海天胜景
数据库
在SQLServer中,如果你想要修改一个字段的格式,使其从原来的yymmdd+3位序号改为yymm+4位序号,你可以使用UPDATE语句结合CONVERT或FORMAT函数来实现这个目的。这里有两种常见的场景:场景1:如果原始数据存储为字符串格式假设你有一个表your_table,其中有一个字段your_column存储的是yymmdd+3位序号的格式,例如230415001。你可以使用以下SQ
- 银河麒麟服务器迁移运维管理平台(接口文档)
RZer
麒麟软件运维服务器androidKylinsoft
银河麒麟高级服务器操作系统V10系统管理员手册文章目录CVE下发接口获取CVE接口获取主机接口获取批次接口获取父日志接口获取子日志接口CVE下发接口功能描述:CVE下发接口调用接口URL:/cve/issue接口类型:POST请求头:API-KEY:your_API_key(内容为APIKey值,需要通过登陆平台,在个人信息处获取)参数:参数名类型含义targetType字符串传入类型(二选一):
- GitHub 趋势日报 (2025年06月25日)
qianmoQ
GitHub项目趋势日报(2025年)github
由TrendForge系统生成|https://trendforge.devlive.org/本日报中的项目描述已自动翻译为中文今日获星趋势图今日获星趋势图880awesome788build-your-own-x691free-for-dev427best-of-ml-python404Self-Hosting-Guide403Best-websites-a-programmer-should-
- groovy:SimpleDateFormat 打印当前时间
belldeep
GroovyjavajavagroovyDate
today.groovyimportjava.util.Date;importjava.text.SimpleDateFormat;//日期格式化SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datedate=newDate();Stringnow=sdf.format(date);printlnnow;python打印
- git Author 和 Committer 区别
张紫娃
GITgit
Author(作者)最初编写该提交内容的人,通常是你用gitcommit提交时设置的名字。gitconfig--globaluser.name"YourName"gitconfig--globaluser.email"
[email protected]"Committer(提交者)最终将改动合并进仓库的人。gitcommit-m"fix:buginlogin"#%an=YourName#%cn=Your
- Date与LocalDate互转
chi_666
JAVAjava
1、Date转LocalDateDatetoDay=newDate();LocalDatelocalDate=toDay.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();2、LocalDate转DateLocalDatelocalDate=LocalDate.parse("2023-01-01",DateTimeFormatter.
- HTTP服务器监控
weixin_34321753
phpawk
HTTP服务器监控#!/bin/shLANG=C#被监控服务器、端口列表server_all_list=(\192.168.1.1:80\192.168.1.2:80\192.168.1.3:80\)date=$(date-d"today"+"%Y-%m-%d_%H:%M:%S")#采用HTTPPOST方式发送检测信息给接口程序interface.php,接口程序负责分析信息,决定是否发送报警MS
- JAVA springboot Access-Control-Allow-Origin
墨着染霜华
javaspringbootspring
response.setHeader("Access-Control-Allow-Origin","https:/your-domain.com");意思是:只有来自https:/your-domain.com的前端页面(即请求的来源Origin是这个域名),才能通过浏览器发起跨域请求访问这个接口区分大小写&完全匹配这个设置是完全匹配的,也就是说:https://epos.whbswdt.com
- 安装数据库首次应用
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 {