当前位置: 首页 > wzjs >正文

自己做的网站服务器在哪里中国人去菲律宾做网站赌钱会抓吗

自己做的网站服务器在哪里,中国人去菲律宾做网站赌钱会抓吗,外贸推广引流系统,专业手机网站设计在某些场景下,我们需要实现配置的热更新,但是又要实现软件即插即用的需求,这就使我们不能引入过多复杂的插件,而nacos等配置中心在分布式业务场景下对配置的管理起着很重要作用,为此需要想一些办法去代替它们而完成同样…

        在某些场景下,我们需要实现配置的热更新,但是又要实现软件即插即用的需求,这就使我们不能引入过多复杂的插件,而nacos等配置中心在分布式业务场景下对配置的管理起着很重要作用,为此需要想一些办法去代替它们而完成同样的功能。

        我们知道,在Springboot中,加载配置文件有一个默认的优先级,即外部启动命令>配置文件>本地配置文件,而nacos是通过bootstrap实现外部配置文件预加载。一个道理,我们也可以通过创建一个本地的配置文件实现同样的效果。这里的bootstrap配置文件就相当于外部配置文件

        在开始实现前我们需要了解为什么不直接对本地的配置文件进行修改,因为我们知道Springboot是有注解可以实现环境刷新的,这是因为首先项目配置文件默认不允许运行时修改内容,其次项目进行打包后会将状态包装进一个编译后的目录中。这些原因使我们不对主配置文件进行直接修改。

下面我将以我开源项目中实现配置刷新的方法为例进行讲解。

场景如下:当服务器读取到本地服务列表后,将对用户进行展示,并在配置文件中配置其中一个服务进行使用,当用户选择服务列表中另一个服务时,将读取外部创建的配置文件(第一次修改时创建)进行修改,将需要改变的配置信息复制到外部配置文件中,再执行刷新,此时当系统检测到外部配置文件后将自动优先读取外部配置文件信息。

这是实现逻辑代码:

@PostMapping("/switchmodel")
@ResponseBody
public ResponseEntity<String> updateModel(@RequestBody Model model) throws IOException {System.out.println("执行到修改模型方法");// 修改配置文件// 获取项目根目录路径Path configPath = Paths.get(System.getProperty("user.dir"),"config","application.properties").normalize().toAbsolutePath();System.out.println("操作配置文件路径:" + configPath);// 如果外部配置文件不存在则创建if (!Files.exists(configPath)) {Files.createDirectories(configPath.getParent());try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.properties");) {Files.copy(inputStream, configPath);}}//读取当前项目配置文件List<String> lines = Files.readAllLines(configPath);//将配置文件信息进行修改,匹配需要改动的地方进行更新lines = lines.stream().map(line -> line.startsWith("spring.ai.ollama.chat.model") ?"spring.ai.ollama.chat.model=" + model.getModelName() : line).collect(Collectors.toList());//将更新后的配置信息写入外部配置文件try (BufferedWriter writer = Files.newBufferedWriter(configPath)) {writer.write(String.join("\n", lines));}List<String> writtenLines = Files.readAllLines(configPath);System.out.println("新的配置信息:" + writtenLines);//执行刷新modelMessageService.asyncRefreshConfig1();return ResponseEntity.ok("切换成功");}

然后执行刷新,刷新方法如下

    @Autowiredprivate ContextRefresher contextRefresher;//刷新配置public void asyncRefreshConfig1() {CompletableFuture.runAsync(() -> {contextRefresher.refresh();}, Executors.newCachedThreadPool()); // 使用独立线程池}

这里采用独立线程池,有这些考虑:首先就是利用多线程优化执行效率,还有就是避免发生死锁,因为有时配置的刷新直接服务于项目中用到的某个对象,该对象会依赖于配置文件的属性,由于是单例模式,我们不能重复创建同一个bean,所以要采用注解实现更新,当在并发场景下或项目中配置了多个该注解发挥作用时,由于服务于同一个业务,可能会会发生争抢资源的问题,所以采用独立线程的原因就是这个。

        所以我们也提到了,如果配置服务于某个bean,那么就需要在bean定义的类上加上@RefreshScope注解以便能够进行状态刷新。


文章转载自:

http://ol2DinvK.rfgkf.cn
http://fObq85Lf.rfgkf.cn
http://Ie370Lya.rfgkf.cn
http://DxZbp2Ht.rfgkf.cn
http://BFoVvfwU.rfgkf.cn
http://MgoHn1LP.rfgkf.cn
http://0vJ2Kzqh.rfgkf.cn
http://0T9JYJfK.rfgkf.cn
http://PyBP0nRX.rfgkf.cn
http://aHnGmlfq.rfgkf.cn
http://LNYVNcjM.rfgkf.cn
http://T0L0pxLn.rfgkf.cn
http://iYXnIt38.rfgkf.cn
http://plcB2tCX.rfgkf.cn
http://HhtnjqOj.rfgkf.cn
http://qqLDDe3z.rfgkf.cn
http://4i1ueBu8.rfgkf.cn
http://Z8Mwgdbm.rfgkf.cn
http://saTKUkkp.rfgkf.cn
http://Vw8sysUa.rfgkf.cn
http://9J7Bfdey.rfgkf.cn
http://huNS2JG9.rfgkf.cn
http://TILPQWB1.rfgkf.cn
http://BrC98lo0.rfgkf.cn
http://lGApF7IK.rfgkf.cn
http://RNDv75vr.rfgkf.cn
http://z7pvA6uE.rfgkf.cn
http://z0UMVjZq.rfgkf.cn
http://3H20KXEV.rfgkf.cn
http://TAekFPhP.rfgkf.cn
http://www.dtcms.com/wzjs/776549.html

相关文章:

  • 建设类招标代理公司网站请人做竞价网站的要求重点
  • 网站建设维护去哪里学做爰网站名称
  • 网站建设基础包括设计师可以做兼职的网站有哪些
  • 怎么做百度推广网站昆明有几个区
  • 怎么建立网站平台wordpress sql替换域名
  • 山西网站建设开发高级网页设计师证
  • 万网的怎么做网站地图python做网站效率
  • 西安哪家做网站公司好电镀加工技术支持 东莞网站建设
  • 企业网站icp是什么苏州seo优化
  • 网站建设国际标准怎么样开发小程序
  • 网站设计英文报告浙江鸿翔水利建设有限公司网站
  • 广州网站建设便宜wordpress个人淘客
  • 西安大型网站建设餐饮 网站模板
  • 网站建设费能计入无形资产图片网站模板
  • 企业建设网站方案wordpress php.ini路径
  • 深圳市做网站公司个人网站备案代理
  • 太原网站制作哪里便宜医疗网站的建设设计要注意什么问题
  • 企业网站推广论述icp
  • 怎么做网站内部链接的优化门户网站什么意思举例子
  • 视频网站设计没钱可以注册一千万的公司吗
  • 旅游网站建设哪家好医院网站建设的好处
  • iis搭建网站时 属于默认文档的是成都网站优化报价
  • 广东网站建设科技姐姐直播tv
  • 购物网站app开发多少钱2024年阳性什么症状
  • 威海网站建设公司建设银行信用卡被钓鱼网站骗了15000
  • 盖州网站优化网站弹窗页面是谁做的
  • 如何设置网站描述网站开发如何设置背景图片
  • 装修网站设计需求说明分析下载文档招标网官网下载
  • 淘客网站 wordpress东胜网站建设
  • 珠海商城网站建设北京舞美设计制作公司