首页 文章 精选 留言 我的

精选列表

搜索[域名切换],共10000篇文章
优秀的个人博客,低调大师

Fish Shell 分享从 C++ 切换到 Rust 的经验

本月初,Fish Shell 4.0 进入测试阶段,C++ 代码被移植到了 Rust。现在,Fish Shell 的大部分代码都过渡到了 Rust,项目团队在日前发布了一篇博文,概述了他们在将庞大的 C++ 代码库移植到 Rust 的过程中取得的成功和遇到的挑战。 Fish Shell 开发人员指出,他们在使用 C++ 时遇到的一些问题导致他们更倾向于探索其他语言,其中包括工具和编译器/平台差异、人体工程学和线程安全以及开发社区。其中一个例子是,Fish 曾用 C++ 制作过真正的多线程执行原型,但这对这个开源 Shell 而言是非常痛苦的。 至于 Rust 编程语言,他们承认:"Rust 很酷。它很有趣"。并赞赏了 Rust 的工具性、简单的工具设置、出色的人体工学以及更好的依赖性管理,且 Rust 的发送和同步能力也使其非常适合线程。 但使用 Rust 的过程中也面临了一些挑战,例如如何处理可移植性、工具有时未能考虑其他目标以及一些本地化问题等。总的来说: “移植并非一帆风顺,而且并非一切都按计划进行。但总体而言,进展相当顺利。我们现在有了一个我们非常喜欢的代码库,它已经获得了一些如果使用 C++ 添加会更麻烦的功能,而且还有更多功能正在开发中,我们还创建了一个单独的 3.7 版本,其中也包括一些很酷的东西。我们做这件事很开心。” 更多详情可查看官方博客。

优秀的个人博客,低调大师

logback日志级别动态切换的四种方案

生产环境中经常有需要动态修改日志级别。 现在就介绍几种方案 方案一:开启logback的自动扫描更新 配置如下 <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- configuration标签 scan属性代表logback框架会定时检测改配置文件是否有发生改动,如果有则更新为最新配置--> 然后就将修改的配置文件拷贝到app.jar的同级目录下config/logback.xml 方案二:自定义api 代码如下 /** * log api * @author lipeng */ @RequestMapping("/api/log") @RestController public class LogbackController { private Logger log = LoggerFactory.getLogger(LogbackController.class); /** * logback动态修改包名的日志级别 * @param level 日志级别 * @param packageName 包名 * @return 当前的日志级别 * @throws Exception */ @RequestMapping(value = "/setlevel") public String updateLogbackLevel( @RequestParam(value="level") String level, @RequestParam(value="packageName",defaultValue = "-1") String packageName) throws Exception { ch.qos.logback.classic.LoggerContext loggerContext =(ch.qos.logback.classic.LoggerContext) LoggerFactory.getILoggerFactory(); Logger logger= null if(packageName.equals("-1")) { // 默认值-1,更改全局日志级别;否则按传递的包名或类名修改日志级别。 logger= loggerContext.getLogger("root") } else { logger= loggerContext.getLogger(packageName) } logger.setLevel(ch.qos.logback.classic.Level.toLevel(level)); return logger.getLevel(); } } 方案三:springboot引入Actuator 1、pom.xml增加相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 1、配置文件中增加配置 如果是springboot1.X, management.security.enabled=false 如果是springboot2.X,则参考如下配置 management: endpoint: health: show-details: "ALWAYS" endpoints: web: exposure: include: "*" 3、查看级别 我们可以发送GET 请求到 http://localhost:8080/actuator/loggers 来获取支持的日志等级,以及系统(ROOT)默认的日志等和各个包路径(com.xxx.aa等)对应的日志级别。 4、修改日志级别 通过 http://localhost:8080/actuator/loggers 端点提供的 POST 请求,修改包路径com.xxx.aa的日志级别为DEBUG: 发送POST 请求到 http://localhost:8080/actuator/loggers/com.xxx.aa,其中请求 Body 的内容如下: { "configuredLevel": "DEBUG" } 再用GET 访问 http://localhost:8080/loggers/com.xxx.aa查看当前的日志级别: { configuredLevel: "DEBUG", effectiveLevel: "INFO" } 方案四 集成springcloudadmin来动态修改配置 springcloudadmin安装部署我就不做描述了,网上很多。 1、引入admin依赖 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2、登录springcloudadmin,找到指定的服务中某一个节点 然后点击左边日期,进入控制台,如下 这样就能动态修改了,操作比较方便。 总结 在条件允许的情况下建议使用方案四

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册