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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
转存中…(img-48VNDYqS-1713812442966)]
[外链图片转存中…(img-xBeyI8QR-1713812442966)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!