Sonar常见问题修改

2023-11-05

Sonar常见问题修改

1 SonarLint简介与安装

1.1 SonarLint简介

SonarLint是一个IDE插件,可帮助开发人员在编写代码时检测和修复质量问题。就像拼写检查器一样,SonarLint也会在提交代码之前对错误进行修正。开发人员可以直接从IDE市场获得它,然后它将在编码时(Java、JavaScript、PHP、Python和HTML)检测新的bug和质量问题。## 严重程度

1.2 SonarLint安装与配置

1.2.1 IDEA 插件在线安装

File->Setting->Plugins 搜索SonarLint ->install
在这里插入图片描述

1.2.2 IDEA 插件离线安装

打开IDEA官方插件网站:

http://plugins.jetbrains.com/idea
搜索想要安装的插件,比如本文要安装的插件 SonarLint,在下面提示的下拉备选中,选择SonarLint跳转到插件页面.
在这里插入图片描述
在插件页面下面找到历史版本(Version History),找到想使用的版本,点击downLoad等待下载完成.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLNOcClu-1682322445764)(../assets/monthly/20230425/3.png)]

安装插件包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9vsGFTfr-1682322445764)(../assets/monthly/20230425/4.png)]

1.2.3 SonarLint General配置(如果有规定的sonarQube)

插件安装成功以后,打开插件配置界面,路径:File–Setting-Tools-SonarLint
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oPWOX2c-1682322445764)(../assets/monthly/20230425/5.png)]

弹窗窗口里,填写这个SonarLint的名称,我们使用的是本地sonarQube,选择的右边配置,输入sonarQube
IP和端口号.完成后点击Next.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tRTGUpWr-1682322445764)(../assets/monthly/20230425/6.png)]

设置认证方式,有Token和用户名密码两种方式,根据自己的情况选择对应方式进行配置.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-egeFiLan-1682322445765)(../assets/monthly/20230425/7.png)]

1.2.3 SonarLint Project配置

  1. 选择下图中SonarLint Project Settings的菜单
  2. 勾选Bind project to SonarQube/SonarCloud
  3. 在Connection 右边下拉选择刚才配置的 sonar配置名称
  4. 配置Project key,可以点击Search in List,再弹出框里找到想使用的某个规则选择想使用的即可.
  5. 点击Apply使得配置生效保存
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LT8XQRcp-1682322445765)(../assets/monthly/20230425/8.png)]

2 SonarLint扫描以及IDEA中页面的名词解释

2.1 SonarLint扫描

在需要扫描的文件或者文件夹右击->SonarLint->Analyze with SonarLint
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9T8gydb8-1682322445765)(../assets/monthly/20230425/9.png)]

2.2 IDEA中页面的名词解释

Current file:当前文件(展示当前文件存在的哪些问题,以及解决方法)
Rule:规则(告诉你问题的具体内容,并在最后告诉你如何解决这个问题)
Report:报告(鼠标移动到项目根目录,右键选择Ayalyze,选择Ayalyze with SonarLint,完成之后的结果显示,包含整个项目的所有文件的问题)
Locations:位置(告诉你,在哪个地方有问题,问题的重复位置)
Issues:问题 每个issue有五种等级

BLOCKER(致命):会影响应用程序的缺陷:内存泄漏,未关闭的JDBC连接…必须立刻修复的代码;
CRITICAL(关键):可能会影响应用程序的缺陷或者是安全性缺陷:空的catch块,sql注入,…必须立刻查看代码;
MAJOR(主要):可能会影响开发者效率的质量缺陷:未覆盖的代码,重复块,未使用的参数….
MINOR(微小):可能会影响开发者效率的质量缺陷:每行不能太长,“switch”语句应该至少有三个条件….
INFO(未知):既不是缺陷也不是质量问题,只是一个发现。

每个issue有三个状态

  • Bug:窃听器(可靠性),避免错误和未定义的行为
  • Vulnerability:漏洞(安全),避免破坏或攻击 Code
  • Smell:代码嗅觉(可维护性),简化代码更新,并提高开发人员的速度

3 主要问题

1.String literals should not be duplicated

字符串文字不应该重复

代码中多次出现同一个字符串
应该将重复字符串抽取为常量
public static final String

2.Deprecated elements should have both the annotation and the Javadoc tag

弃用的元素应该同时具有注释和Javadoc标记

在标记弃用的元素 应该同时使用注释和Javadoc标记
在这里插入图片描述

3.Generic exceptions should never be thrown

永远不应该抛出泛型异常

通用异常不应抛出 例如 Error Exception Throwable RuntimeException,修改为具体的或者自定义异常
在处理异常时,如果不往上抛的话,可以使用@SneakyThrows (编译后生成try catch)在本层处理。

4.Method names should comply with a naming convention

方法名应该遵循命名约定

方法应该按照规范命名

5.Field names should comply with a naming convention

字段名应该遵循命名约定

字段名应该遵循命名约定

6.Unnecessary imports should be removed

应该删除不必要的引用

应该删除不必要的引用
快捷键 ctrl + alt + o

7.Unnecessary imports should be removed

应该删除不必要的引用

应该删除不必要的引用
快捷键 ctrl + alt + o

8.Raw types should not be used

不应该使用原始类型

方法的返回值类型,参数的类型 应该明确 不应该使用泛型

9.Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used

不应该使用同步类Vector, Hashtable, Stack和StringBuffer

使用这些同步类虽然是线程安全的,但是比较影响性能

10.“StandardCharsets” constants should be preferred

“StandardCharsets”常量应该是首选

使用StandardCharsets.UTF_8 静态变量类型为charset 代替了HttpConstant.REQUEST_ENCODING这种静态变量类型为string的 符合java8规范

11.Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used

不应该使用同步类Vector, Hashtable, Stack和StringBuffer

使用这些同步类虽然是线程安全的,但是比较影响性能

12.Synchronized classes Vector, Hashtable, Stack and StringBuffer should not be used

不应该使用同步类Vector, Hashtable, Stack和StringBuffer

使用这些同步类虽然是线程安全的,但是比较影响性能

13.Local variables should not be declared and then immediately returned or thrown

局部变量不应该声明后立即返回或抛出

本地变量如果赋值之后直接return了,那就直接return本地变量的赋值语句。

14.Utility classes should not have public constructors

实用程序类不应该有公共构造函数

公用类的工具类不应该有公共的构造函数,公用的工具类是静态成员的集合,并不意味这要实例化,当工具类不定义构造函数,Java会自动向不定义构造函数的每个类添加公共的构造函数,和公用类不应该具有公共的构造函数冲突了,因此我们需要手动添加该公用工具类的构造函数。



/**
 * @Classname AdentUtil
 * @Description 中介工具类
 * @Version 1.0.0
 * @Date 2023/3/27 13:46
 * @Created by admin
 */
public class AdentDataTransferUtil {
 
    /**
     * 构造下载报文
     * @param adentResultFileGeneralRespDto
     * @return
     */
    public static UniteAdentResultFileRespDto getUniteAdentResultFileRespDto(AdentResultFileGeneralRespDto adentResultFileGeneralRespDto) {
        UniteAdentResultFileRespDto uniteAdentResultFileRespDto=null;
        if (adentResultFileGeneralRespDto != null) {
            uniteAdentResultFileRespDto=new UniteAdentResultFileRespDto();
            uniteAdentResultFileRespDto.setFileUnid(adentResultFileGeneralRespDto.getUnid());
            uniteAdentResultFileRespDto.setFileName(adentResultFileGeneralRespDto.getName());
            uniteAdentResultFileRespDto.setDownlaodUrl(adentResultFileGeneralRespDto.getDownloadUrl());
        }
        return uniteAdentResultFileRespDto;
    }

    private AdentDataTransferUtil() {
        throw new IllegalStateException("Utility class");
    }
}

15.Methods should not have too many parameters

方法不应该有太多参数

用Spring的@RequestMapping(以及相关的快捷注释,如@GetRequest)或@JsonCreator注释的方法可能有很多参数,封装是可能的。因此,这些方法将被忽略。

16.Nested blocks of code should not be left empty

嵌套的代码块不应该留空

删除嵌套的空的代码块

17.Modifiers should be declared in the correct order

修饰符应该以正确的顺序声明

18.“@Deprecated” code should not be used

不应该使用“@Deprecated”代码

不能使用 或者不建议使用 @Deprecated 修饰的代码
例:import org.springframework.util.StringUtils; 引入了spring的包,但是它的StringUtils。isEmpty()不被建议使用,改用其他的的包 比如 org.apache.commons.lang3.StringUtils

19.Track uses of “TODO” tags

跟踪“TODO”标签的使用

20.Strings and Boxed types should be compared using “equals()”

将与该对象进行相等比较的对象

if(entry.getCode()==condition){}
修改为if(entry.getCode() != null && entry.equals(condition)){}

21.Multiple variables should not be declared on the same line

不应该在同一行上声明多个变量

22.“enum” fields should not be publicly mutable

“enum”字段不应该是公共可变的

修改访问修饰符

23.“static” base class members should not be accessed via derived types

“静态”基类成员不应该通过派生类型访问

原代码:JSONArray licenseArr = JSONArray.parseArray(licenseData);
修改后 JSONArray licenseArr = JSON.parseArray(licenseData);
为了代码清晰起见,永远不要使用子类的名称访问父类的静态成员。这样做会造成混淆,并且可能会导致存在两个不同的静态成员的错觉。直接使用父类访问父类静态成员。

24.The diamond operator (“<>”) should be used

应该使用菱形操作符(“<>”)

Java 7引入了diamond操作符(<>)来减少泛型代码的冗长。例如,不必在列表的声明和构造函数中声明列表的类型,现在可以使用<>简化构造函数声明,编译器将推断类型

25.Collection.isEmpty() should be used to test for emptiness

应该使用Collection.isEmpty()来测试是否为空

26.“switch” statements should have at least 3 “case” clauses

“switch”语句应该至少有3个“case”子句

如果不够三个case字句,改为用if,else

27.Collapsible “if” statements should be merged

可折叠的“if”语句应该合并

Noncompliant Code Example
if (file != null) {
  if (file.isFile() || file.isDirectory()) {
    /* ... */
  }
}
Compliant Solution
if (file != null && isFileOrDirectory(file)) {
  /* ... */
}

private static boolean isFileOrDirectory(File file) {
  return file.isFile() || file.isDirectory();
}

28.Unused assignments should be removed

未使用的作业应该被删除

当局部变量被赋值后,后续指令不会读取该值时,就会发生死存储。计算或检索一个值,然后重写或丢弃它,可能表明代码中存在严重错误。即使这不是一个错误,它最多也是一种资源浪费。因此,应使用所有计算值。

29.Fields in a “Serializable” class should either be transient or serializable

“Serializable”类中的字段应该是瞬态的或者是可序列化的

当一个类实现了序列化接口 Serializable,意味着他可以可以序列化和反序列,当这个类里面的属性B没有实现 序列化接口 Serializable,意味着B不能序列化和反序列化,那么也就是类中的属性B不能序列化,sonar会报错。
1.为这个类B实现序列化接口 implement serializable
2.在属性B前面加上 transient 关键字 — private transient B b;
transient 对于transient 修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略。

30.“String#replace” should be preferred to “String#replaceAll”

“String#replace"应该优先于"String#replaceAll”

简单替换逻辑使用replace效能更高

31.Methods should not be empty

方法不应该为空

使填写方法注释或者私有化构造器


private Assert() {
        throw new IllegalStateException("Assert class");
    }

32.Unused “private” methods should be removed

应该删除未使用的“私有”方法

33.Standard outputs should not be used directly to log anything

标准输出不应该直接用于记录任何内容

34.Empty arrays and collections should be returned instead of null

应该返回空数组和集合,而不是null

Noncompliant Code Example
public static List<Result> getAllResults() {
  return null;                             // Noncompliant
}

public static Result[] getResults() {
  return null;                             // Noncompliant
}

public static Map<String, Object> getValues() {
  return null;                             // Noncompliant
}

public static void main(String[] args) {
  Result[] results = getResults();
  if (results != null) {                   // Nullity test required to prevent NPE
    for (Result result: results) {
      /* ... */
    }
  }

  List<Result> allResults = getAllResults();
  if (allResults != null) {                // Nullity test required to prevent NPE
    for (Result result: allResults) {
      /* ... */
    }
  }

  Map<String, Object> values = getValues();
  if (values != null) {                   // Nullity test required to prevent NPE
    values.forEach((k, v) -> doSomething(k, v));
  }
}
Compliant Solution
public static List<Result> getAllResults() {
  return Collections.emptyList();          // Compliant
}

public static Result[] getResults() {
  return new Result[0];                    // Compliant
}

public static Map<String, Object> getValues() {
  return Collections.emptyMap();           // Compliant
}

public static void main(String[] args) {
  for (Result result: getAllResults()) {
    /* ... */
  }

  for (Result result: getResults()) {
    /* ... */
  }

  getValues().forEach((k, v) -> doSomething(k, v));
}

35.Standard outputs should not be used directly to log anything

标准输出不应该直接用于记录任何内容

36.Null pointers should not be dereferenced

空指针不应该被解引用

对该对象加非空判断 例如:Objects.requireNonNull(obj);

37.Package declaration should match source file directory

包声明应该与源文件目录匹配

删除所在的包引用,自动重新set包路径

38.Empty arrays and collections should be returned instead of null

应该返回空数组和集合,而不是null

返回一个new 对象就好了 或者参照示例

public static List<Result> getAllResults() {
  return Collections.emptyList();          // Compliant
}

public static Result[] getResults() {
  return new Result[0];                    // Compliant
}

public static Map<String, Object> getValues() {
  return Collections.emptyMap();           // Compliant
}

public static void main(String[] args) {
  for (Result result: getAllResults()) {
    /* ... */
  }

  for (Result result: getResults()) {
    /* ... */
  }

  getValues().forEach((k, v) -> doSomething(k, v));
}

38.“@Override” should be used on overriding and implementing methods

“@Override”应该用于重写和实现方法

需要为被提示的方法加上@Override

39.Cognitive Complexity of methods should not be too hig

方法的认知复杂性不应太高

需要优化代码

40.XML parsers should not be vulnerable to XXE attacks

XML解析器不应该容易受到XXE攻击

4 参考文章

Sonar代码规则之TOP30详解

在IDEA上配置SonarLint以及代码质量分析报告模板

@SneakyThrows注解

Sonar问题汇总

https://rules.sonarsource.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sonar常见问题修改 的相关文章

  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 集成 Spring Webflow 2 和 Apache Tiles [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近开始升级一些应用程序以使用 Spring Webflow 2 并且我想利用 Webflow 2
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何在Java中对对象数组进行字段级别排序以进行等级比较?

    In Java Class StudentProgress String Name String Grade CTOR goes here main class main method StudentProgress arrayofObje
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • [NOI Online #3 入门组 T3]买表【二进制优化dp背包】

    题目链接 很可惜的一点就是 我正赛的时候好像把a和k看反了 于是一直想不到如何做 打了个暴力分 现在想想 暴力分也错了 因为a和k真的很关键 使得最后300变成200分 人生第一场OI就这样草草结束 或许这就是OI选手的刺激所在吧 得亏我不
  • DDR工作原理

    DDR SDRAM全称为Double Data Rate SDRAM 中文名为 双倍数据流SDRAM DDR SDRAM在原有的SDRAM的基础上改进而来 也正因为如此 DDR能够凭借着转产成本优势来打败昔日的对手RDRAM 成为当今的主流
  • csdn找到自己关注的人和关注自己的人-2021最新

    前言 csdn找到自己关注的人和关注自己的人 2021最新 入口 https my csdn net my follow 点进入以后是这样的 就是没办法查找具体某个人
  • JDK、IDEA等安装详解

    第一章 计算机基础知识 1 2 计算机简介 计算机俗称电脑 是第二次世界战争时 美国国防部利用它来进行弹道计算 第一台通用计算机叫做 ENIAC 当时计算机是一个庞然大物 用了18000个电子管 占地170平方米 重达30吨 耗电功率约15
  • nginx七层代理和四层转发的理解

    先来理解一下osi七层模型 应用层 应用层是ISO七层模型的最高层 它直接与用户和应用程序交互 提供用户与网络的接口 它包括各种应用协议 如HTTP FTP SMTP等 用于实现特定应用的功能和通信 表示层 表示层负责数据的格式转换 加密和
  • Introduction of moving block bootstrap (MBB)algorithm

    Because we can not use usual bootstrap sampling method to get subsamples from time series dataset then the MBB was propo
  • 软件测试人员的职业晋升之路

    关于软件测试行业的职业发展方向 在网络上总能看到各种各样的问题 有关注零基础能不能入行的 有关注25岁入行晚不晚的 还有关注35岁后的职业发展方向的 在此过程中 看到很多行业大佬分享了自己的工作经验 也给出了很多自己的建议 要想在测试行业有
  • Ubuntu18.04 安装 TensorFlow (GPU)

    重新在台式机上学习深度学习 Ubuntu18 04 Tensorflow gpu cuda8 0 cuDNN6 0 一 准备工作 有一些不是必需的 1 安装pip 打开终端输入命令 sudo apt get install python p
  • Netty实战(二)第一个Netty程序

    第一个Netty程序 一 环境准备 二 Netty 客户端 服务器概览 三 编写 Echo 服务器 3 1 ChannelHandler 和业务逻辑 3 2 引导服务器 四 编写 Echo 客户端 4 1 通过 ChannelHandler
  • AI芯片学习小结4-谷歌TPU与脉动阵列

    AI芯片学习小结4 谷歌TPU与脉动阵列 文章 In Datacenter Performance Analysis of a Tensor Processing Unit 时间 2017 Reference 深入理解Google TPU的
  • STM32 局部数组使用过大溢出到全局影响代码运行

    一 问题 在函数内定义局部数组大小为400 发现其影响了串口接收中断 二 原因 通过动态调试得知 其分配的局部数组地址与全局的串口结构体的空间部分重合造成了寄存器异常中断开启失败 出现此原因在于分配的栈不够造成局部数组溢出占用全局空间 如果
  • 基站信号强度些问题

    1 package myapplication com myjizhansj 2 3 import android content Context 4 import android graphics Color 5 import andro
  • 服务器装win7无限重启吗,win7系统重装系统后无限重启电脑的解决方法

    很多小伙伴都遇到过win7系统重装系统后无限重启电脑的困惑吧 一些朋友看过网上零散的win7系统重装系统后无限重启电脑的处理方法 并没有完完全全明白win7系统重装系统后无限重启电脑是如何解决的 今天小编准备了简单的解决办法 只需要按照1
  • 流处理架构选型

    greenplum flink 做流处理 从批处理ETL到流式处理 一个来自Netflix的案例 https juejin im entry 5aa73ccd6fb9a028c81285cb greenplum oracle12C 分布式R
  • 【项目设计】高并发内存池(二)[高并发内存池整体框架设计|threadcache]

    C 学习历程 入门 博客主页 一起去看日落吗 持续分享博主的C 学习历程 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 也许你现在做的事情 暂时看不到成果 但不要忘记 树 成长之前也要扎根 也要在漫长的时光 中沉淀养
  • Zebra基本配置

    前言 Zebra是一个路由软件包 提供基于TCP IP路由服务 支持RIPv1 RIPv2 RIPng OSPFv2 OSPFv3 BGP 4 和 BGP 4 等众多路由协议 Zebra还支持BGP特性路由反射器 Route Reflect
  • 关于vue3刷新页面后,数据丢失问题

    本文重点解决刷新页面数据丢失的问题 一般情况下 调试过程中 数据会变空 部署到服务器后 如果刷新 可能会报404 NOT FOUND 一开始解决 思路大概是将数据存储到piniaStore中 但是interesting 刷新页面Store照
  • ISO/OSI七层协议中的下三层在AIX中的实现

    复杂度4 5 机密度4 5 最后更新2021 04 29 ISO 国际标准化组织 international standard organize OSI 开放系统互连模型 open system interconnection ISO专门制
  • Android VNDK限制下的解决方案

    你有没有遇到过这个错误呢 F linker CANNOT LINK EXECUTABLE system bin xxx library libxxx so not found 首先在android生态里 一般的应用开发者 不会遇到这个问题
  • Sonar常见问题修改

    Sonar常见问题修改 1 SonarLint简介与安装 1 1 SonarLint简介 1 2 SonarLint安装与配置 1 2 1 IDEA 插件在线安装 1 2 2 IDEA 插件离线安装 1 2 3 SonarLint Gene