ava自动实时获取动态外网IP并实现跳转,仿某生壳

curl -s “https://xxx.com/other/ip/v1/reg?group=机器标识,通过不同标识支持多个机器通用&secret=秘钥”

这样当本地的办公室IP改变后,服务器就能及时感知到,服务器处理分为三个接口:

  • ip注册,通过传入不同的group标识,可以支撑多台机器使用同一个服务,互不干扰;

  • 查看ip,通过传入group,查看指定group的最新ip信息,或者不传入group信息,查看所有group的ip信息;

  • 重定向,通过传入group和需要重定向的项目名以及端口号,既通用又方便,就能适应不同项目使用,适合一个环境下跑多个服务的情况;

服务器端代码如下:

/**

*  注册IP,不同分组的ip单独存放,可以保存多个服务器的IP

* @param group

* @return

*/

@RequestMapping(value = “v1/reg”, method = RequestMethod.GET)

@ResponseBody

public String reg(@RequestParam String group,@RequestParam String secret) {

log.info(“注册ip接口参数,group={}”, group);

if(SECRET_KEY.equals(secret)){

String time= DateTool.dateToStr2(Calendar.getInstance().getTime());

String key=CACHE_KEY+group;

IPCacheVo vo=  redisMapper.get(key,IPCacheVo.class);

String ip=getTerminalAddr();

if(vo==null){

vo=new IPCacheVo();

vo.setGroup(group);

vo.setIp(ip);

vo.setUpdateTime(time);

redisMapper.set(key,vo);

}else{

if(!vo.getIp().equals(ip)){

vo.setIp(ip);

vo.setUpdateTime(time);

redisMapper.set(key,vo);

}

}

return SUCCESS;

}

return FAIL;

}

/**

* 查看注册的ip列表

* @param group

* @return

*/

@RequestMapping(value = “v1/get”, method = RequestMethod.GET)

@ResponseBody

public String get(@RequestParam(required = false) String group) {

log.info(“查看ip接口参数,group={}”,group);

if(StringUtils.isEmpty(group)){

String key=CACHE_KEY+“*”;

List vos = redisMapper.values(key,IPCacheVo.class);

if(CollectionUtils.isEmpty(vos)){

throw new BizException(OtherResultCode.NOT_FIND_IP_INFO);

}else{

return JSON.toJSONString(vos);

}

}else{

String key=CACHE_KEY+group;

IPCacheVo vo=  redisMapper.get(key,IPCacheVo.class);

if(vo==null){

throw new BizException(OtherResultCode.NOT_FIND_IP_INFO);

}else{

return JSON.toJSONString(vo);

}

}

}

/**

* 重定向到指定的分组

* @param group

* @return

*/

@RequestMapping(value = “redirect”, method = RequestMethod.GET)

public ModelAndView redirect(@RequestParam String group,@RequestParam String domain,@RequestParam String port){

log.info(“重定向接口参数,group={},domain={},port={}”,group,domain,port); 
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
转存中…(img-48VNDYqS-1713812442966)]

[外链图片转存中…(img-xBeyI8QR-1713812442966)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值