Java编码规范

2023-11-01

目录

1 代码规范...................................................................................................................... 2

1.1 注释规范............................................................................................................. 2

1.1.1 页头注释................................................................................................... 2

1.1.2 类或接口注释............................................................................................ 2

1.1.3 方法注释................................................................................................... 3

1.1.4 块注释....................................................................................................... 3

1.1.5 特定行注释................................................................................................ 4

1.1.6 单多行注释................................................................................................ 4

1.1.7 尾随注释................................................................................................... 4

1.2 命名规范............................................................................................................. 5

1.2.1 命名约定................................................................................................... 5

1.2.2 关键字约定................................................................................................ 7

1.3 SQL命名规范...................................................................................................... 10

1.3.1 数据库设计.............................................................................................. 10

1.4 语法规范........................................................................................................... 10

1.4.1 语法约定................................................................................................. 10

2 测试与 Bug 跟踪........................................................................................................ 13

2.1 基本原则测....................................................................................................... 13

2.2 测试驱动开发.................................................................................................... 13

2.3 Junit 单元测试................................................................................................... 13

2.4 自动测试与持续集成......................................................................................... 13

2.5 Bug跟踪和缺陷处理........................................................................................... 14

3 性能与安全................................................................................................................. 14

3.1 基本原则........................................................................................................... 14

3.2 String 与 StringBugffer........................................................................................ 14

3.3 集合.................................................................................................................. 14

3.4 对象.................................................................................................................. 15

3.5 同步.................................................................................................................. 15

3.6 final.................................................................................................................... 15

3.7 垃圾收集和资源释放......................................................................................... 15

4 应用案例..................................................................................................................... 16

4.1 Java规范文档..................................................................................................... 16

4.2 JSP 规范文档...................................................................................................... 16

1 代码规范

1.1 注释规范

1.1.1 页头注释

         所有文件头部需要增加对本文件所属以及相应所具备的功能进行描述。<文件头部>必须包括的重要信息,包括:文件名称、文件功能描述、版本信息、公司版权信息。

         示例:

         /* @RestUtil.java

         *功能描述:主要用于提供实现 Rest 功能的工具类,提供给其它应用程序调用,为系统核心代码之一。

         *@author Xxx

         * esince YYYY -MM- DD

         */

1.1.2 类或接口注释

         示例:

         /**

         *功能描述:此类用于返回一个字符串的子串,子串开始于第1个参数指定的字符,取第2个参数指定的字符串。

         */

         /*类名: substring.java

         *@author XXx

         *@since YYY -MM- DD

         */

         publie String substring(int beginIndex) {

                   return substring(beginlndex,count);

         }

1.1.3 方法注释

         方法注释,需要明确方法作用。需要检查可以生成相应的 JAVADOC.

         示例:

         /**

         *功能描述:此方法通过增加2个数字型参数,迟回1个新增的整型的数值,主要是用于满是2个数字相加后将结果以整型数值返回。

         *@paran numl —第1个数字

         *@paran nun2-第2个数字

         *@return int —新增的整型值

         *@ethrors 抛出算法异常

         *@author XXX

         *@since YYYY -YY- DD

         private int calculate(int num1,int num2)

         throws ArithmeticException

1.1.4 块注释

         在一段处理算法或者一个完整处理单元前而描述代码功能以及修改记录。

         示例:

         /*

         *块功能描述:调用持久化类,将数据伐存到库

         *

         *判断是添加,还是修改

         */

         boolean ifSucc = false;

         if(request.getParameter("YINGLI_ID") == null) {

                   String GUID = new RandomGUID().toString();

                   stressTestDatalean.setUSER_ID(Integer.toString(userld));

                   stressTestDataBean.setSIGY_ISBN((String)vSectAun.get(0));

                   stressTestDataBean.setSHENHE_JIEGUO("0");

                   stressTestDataBean.setCUID(GUID);

                   stressTestDataBean.setCREATE_DATE("getdate()");

                   stressTestDataBean.setSTATE("A");

                   ifSuce = StressTestDataD Ю.addStressTestData(db.stressTestlataBean);

         }else{

                   ifSuce = StressTestataDao.mandStressTestata(db.stressTestDataBoan)

         }

1.1.5 特定行注释

         Single—Line Comments ,在特定一行中添加注释以说明该行特别的注意。

         示例:

         if(condition){

                   /*如果满足条件,则而要按以下逻辑进行处理。*/

                   ...

         }

1.1.6 单多行注释

         使用//在代码中添加单行或者多行注释。常见用于对代码调度修改时进行注释。

         示例:

         if(foo>1){

                   //如果满足 foo 大于1,则继续执行下一个操作

         }else {

                   retun false; //如果不满足 foo 大于1,则返回false

         }

1.1.7 尾随注释

         在每一段代码中添加尾随注释以增加例如条件判断的可读性。

         示例:

         Here’s an example of a trailing coment in Java code :

         if(a =2){

                   retun TRUE; /*如果 a 为2的条作,则返回值*/

         }else{

                   retun isPrime(a); /*当它满足条件下返回值*/

         }

1.2 命名规范

1.2.1 命名约定

1.2.1.1 包名约定

包名必须小写且采用有实际意义的名称,所有的包放在 org.jeecgframework.web.redw包下面。

         示例: org.jeecgframework.web.redw.application.ui;

         注:禁止出现类似 mypackage 这样的包名。

1.2.1.2 类名约定

         类名以大写开头,如: Line,AudioSystem,尽量使用明确的类引入。

         示例:

                   import java.util.List; //NOT : import java.util.*;

                   import java.util.ArrayList;

                   import java.util.HashSet;

                   注: import 应该在 package 后面,并技一定的类别进行分组以空行分隔。

                  

         示例:

                   import java.io.I0Exception;

                   import java.net.URL;

                   import java.rmi.RmiServer;

                   import java.rmi.server.Server;

                   import javax.swing.JPanel;

                   import javax.swing.event.ActionEvent;

1.2.1.3 变量约定

         变量约定详情如下:

         --变量名第一个单词用小写,后面的单词首字母大写,必须是具有实际的意义,不能出现 al ,a2这类。

         示例: line,audioSystem

         --使用范围大的变量应该有一个长的名字,相应的范围小的变量应该使用短一些的命名,如有意义的变量则需要更明确的写出其用途:

         示例: point startingPoint,centerPoint;

         name loginName;

         --私有变量需要以_结尾,可以很容易与本地变量区分。

         示例:

                   class Person{

                            private String name_;

                            ...

                   }

         --通常变量应该与之类型使用同一单词.

         示例:

                   void setTopic(Topic topic)//道免使用( Topic value)

                                     //避免使用( Topic aTopic)

                                     //道免使用(Topic t)

                   void connect(Database database)//使用( Database db)

                                     //避免使用( Database oracleDB)

1.2.1.4 常量约定

                   静态常量以全大写方式。

                   示例: MAX_ITERATIONS,COLOR_RED

1.2.1.5 方法约定

         方法约定详情如下:

         --方法名称以小写开头大写单字首字母混合.

         示例:

getName().computeTotalWidth()

         --操作方法应该使用有意义的表述单词.

         示例:

get/set,add/remove,create/destroy,start/stop,insert/delete ,

                   increment/decrement,old/new,begin/end,first/last,up/down,min/max,

                   next/previous,open/close,show/hide,suspend/resume,etc,

                   adduser()/removeuser()

                   showlcon()/hidelcon()

                  

1.2.1.6 对象约定

         对象名一般不要出现在方法中。

         示例: line.getLength();//港免使用 line.getLineLength();

1.2.1.7 文件约定

         文件约定详情如下:

                   --JSP 文件名应该以小写开头,大写后面单词首字母。应该书写有意义的命名如:

         示例: perform.jsp

         --应该写成一般使用名词或者句子:

         示例: performl.ogin.jsp

1.2.1.8 缩写约定

         缩写约定详情如下:

         --缩写也需要遵守方法名称以小写开头大写单字首字母混合。

         示例:exportHtmlSource();//避免使用 exportHTMLSource();

                   openDvdPlayer();//避免使用 openDVDPlayer();

         --尽量不使用缩写.

         示例:

                   cmd 替换成 command

                   com 替换成 compute

                   pt 替换成 point

                   cp 替换成 copy

                   e 替换成 exception

                   init 替换成 initializel;

                   computeAverage(); // 避免使用 compAvg();

                   ActionEvent event; // 避免使用 ActionEvent e;

                   catch(Exception exception){// 避免使用 catch(Exception e){

1.2.1.9 英文约定

         尽量使用英文而非拼音。

         示例:

enployee.getName(); //避免使用 yuangong.getMingZi()

1.2.2 关键字约定

1.2.2.1 变量 get/set 约定

                   变量访问使用 getter / setter

                   示例:

                   employee.getName();

                   employee.setName(name);

                   matrix.getElement(2,4);

                   matrix.setElement(2,4,value);

1.2.2.2 初始 initialize 约定

         使用 initialize用于构造某些变量或者数据结构,如: initializeFontSet。

         示例: printer.initializeFontSet();//避免使用 printer.init()

1.2.2.3 默认 Default 约定

         默认接口可以使用前缀 Default.

         示例:

                   class DefaultTableCellRenderer implements TableCellRenderer{

                            ...

                            ...

                   }

1.2.2.4 布尔is约定

         使用is前缀用于布尔类型,如: isSet,isVisible,isFinished,isFound,isOpen

         示例:

                  Setter 方法需要在变量处标明:

                   void setFound(boolean isFound);

         同样可以使用下面方式:

                   boolean hasLicense();

                   boolean canEvaluate();

                   boolean shouldAbort = false;

1.2.2.5 计算 compute 约定

         使用compute前缀用于计算类方法,如: computeAverage,computeInverse,以提供给读者明确的方法含义。

         示例:

                   valueSet.conputeAverage();

                   matrix.computelnverse();

1.2.2.6 查找 find 约定

使用 find 前缀用于涉及查找类方法,

如: findNearestVerTex findShortestPath ,findSmallestElement,以提供给读者明确的方法含义。

         示例:

                   vertex.findNearestVertex();

                   matrix.findSmallestElement();

                   node.findShortestPath(Node destinationNode);

1.2.2.7 复数 s 约定

         数量或者集合变量应该使用复示例: Collection < Point > points

1.2.2.8 集合 n 约定

         使用 n 前缀可用于集合表示,如; nPoints,nLines

         示例: nPoints,nLines //避免使用 nunPoints,nunl.ines

1.2.2.9 数量 Num 约定

         使用 Num后缀用于表达数量,如: tableNum,cmployeeNum 。

         示例: tableNum,employeeNum

1.2.2.10 迭代 i j k 约定

         使用 i,j,k 等用于表示迭代变量。

         示例:

for(Iterator i = points.iterator():i.hasNext0:){

         ……

}

for(int i =0: i<nTables : i ++){

         ……

}

1.2.2.11 异常 Exception 约定

         异常类应该使用 Exception 后缀.

         示例:

class AccessException extends Exception {

         ……

}

1.2.2.12 否定、约定不使用否定词。

         示例:

bool isError;//避免使用 isNoError

                 bool isFound ;//避免使用 isNotFound

1.3 SQL命名规范

1.3.1 数据库设计

         数据库设计请参照以下项:

--表和字段全部小写,用“_"分隔表名或字段名中多个词

         示例1:

                  表:[公司简称_模块简称_表简称] redw_ hr_org_dept

每个数据库的主表:

         示例2:

                   表:[公司简称_模块简称]

redw_ reviek_main

         示例3:

                   子表名称:[公司简称_模块简称_主表简称_子表简称]

redw_reviek_detail

         示例4:

                   中间表名称:[公司简称_模块简称_主表简称_字段简称]

redw_ reviek_main_post

         示例5:

外键:[字段名_id]

creator_id

         示例6:[字段名]

order

1.4 语法规范

      1.4.1 语法约定

1.4.1.1 接口声明

         类于接口的声明应该包含以下部分:

--Class / Interface 描述包括:作者,功能说明,版本,修改发布日期。

--class or interface 声明。

--Class(静态)变量顺序: publie,protected,package(no access modifier), private

--实例变量顺序: public,protected,package(no access modifier), private.

1.4.1.2 方法限定

         方法的限定符应该拨照顺序出现:示例: publie statie double square(double a);至使用 static public double square(double a);

1.4.1.3 数组声明

         数组声明应当附于类型

         示例: int [] a = new int [20];    //避免使用 int a[]= new int[20]    

1.4.1.4 变量声明

         变量应该在最小作用范用内声明,需要时声明并初始化变量。不要随意扩大其作用范围,减少变量占用的资源。尽量减少度量存在时间,即用即弃。

1.4.1.5 控制条件

         控制条件请参照以下项:

         --使用临时变量简化控制条件.

                   示例:

                   bool isFinished =( elementNo <0) ||(elementNo > maxElement);

                   bool isRepeatedEntry = elementNo = lastElement;

                   if(isFinished || isRepeatedEntry){

                            ...

                            ...

                   }

                   //NOT:

                   if((elementNo く0) ||(elemento > maxElement) || elementNo = lastElement){

                            ...

                            ...

                   }

         --Finally 约定:一定写 finallv ,并清理资源占用:一定要注意在使用的资源霭要在异常可能出现的代码断得到释放,如:

         卡例:

         public void dataAccessCode(){

                   Connection conn = null;

                   try{

                            conn =getConnection0;

                            ...some code that throws SQLException

                   }catch(SQLException ex){

                            ex.printStacktrace();

                   }finally{

                            DBUtil.eloseConnection(conn);

                   }

         }

         class DBUtil{

                    publie static void closeConnection(Connection conn){

                             try{

                                     conn.close();

                             }bcatch(sQLException ex){

                                     logger.error("Cannot close connection");

                                     throw new RuntimeExceptuon(ex);

                            }

                    }

         }

1.4.1.6 Exceptions 约

                   不要忽略 exceptions ,一定要对异常进行处理、记录或者输出。不要只捕获最顶层的 exceptions

                   示例:下面是一个错误例子

                   try {

                            ...

                   }catch(Exception ex){

                            ...

                   }

1.4.1.7 控制约定

                   不要使用异常作为程序流控制,不要利用异常处理过程中添加程序控制逻辑。

                   示例:下而是一个错误例子

                   public void useExceptionsForFloControl(){

                            try {

                                     while(true){

                                               increaseCount

                                     }       

                            }catch(MaximunCountReachedException ex){

                            }1

                            //Continue execution

                   public void increaseCount() throws MaxinumCountReachedException{

                            if(count >=5000){

                                     throw new MaxinumCountReachedException();

                            } 

                   }

2 测试与 Bug 跟踪

2.1 基本原则测

试不通过的代码不得提交到SVN库或者发布。不得隐瞒、忽略、绕绕过任何Bug ,有 Bug不一定是你的错,但有了Bug不作为就是你的不对了。多做测试,测试要完全尽量将各种可能情况都测试通过,尽量将可能的Bug在开发中捕捉并处理掉。测试要保证可再测试性。测试应当对数据库等资源不留或少留痕迹,例如,当测试添加一个用户时在其成功后当及时从数据库中删除该记录,以避免脏数据的产生(由此衍生的一个经验是将添加、获取、删除一起测试)。对关键功能必须测试并通过,对辅助功能及非常简单之功能可不做测试。

2.2 测试驱动开发

测试驱动开发可很好的避免 Bug 的发生,并提升程序的质量,有助于提高个人的编程水平等,因此在开发中当逐步转向有测试驱动的开开发先与测试,再写代码。具体请参考《测试驱动开发》。

2.3 Junit 单元测试

在 Java 应用中,单元测试使用 Junit 及其衍生工具。在 TestCase 的setUp()中初始化应用,在tearDown()中释放资源可由一个基础 TestCase 完成这些任务,其他 TestCase 继承之。

2.4 自动测试与持续集成

测试应当由系统自动完成并向相应人员发送测试报告。由持续集成工具来完成测试的自动化。

2.5 Bug跟踪和缺陷处理

当系统出现 Bug 时当由该 Bug 的负责人(代码负责人)尽快修改之。 Bug 的处理根据其优先级高低和级别高低先后处理。 Bug 级别和优先级别参见《测试手册》。禁止隐瞒 Bug 。

3 性能与安全

3.1 基本原则

性能的提升并不是一蹴而就的,而是由良好的编程积累的,虽然任何良好的习惯和经验所提升的性能都十分有限,甚至微乎其微,但良好的系统性能却是由这些习惯等积累而成,不积细流,无以成江海!

3.2 String 与 StringBugffer

不要使用如下 String 初始化方法: String str = new String("abcdef");这将产生两个对象,应当直接赋值: String str ="abcdef";

在处理可变 String 的时候要尽量使用 StringBuffer 类, StringBuffer 类是构成 String 类的基础。 String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和她的append()方法。如果我们用 String 对象代替 StringBuffer 对象的话,将会花费许多不必要的创建和释放对象的 CPU 时间。

3.3 集合

避免使用 Vector 和 HashTable 等旧的集合实现,这些实现的存在仅是为了与旧的系统兼容,而且由于这些实现是同步的,故而在大量操作时会带来不必要的性能损失。在新的系统设计中不当出现这些实现,使用 ArrayList 代替 Vector ,使用 HashMap 代替 HashTable 。若却是需要使用同步集合类,当使用如下方式获得同步集合实例: Wap map = Collections.synchronizedap(new HashMapO):由于数组、 ArrayList 与 Vector 之间的性能差异巨大(具体参见《 Java Citball 》),故在能使用数组时不要使用 ArrayList ,尽量避免使用 Vector 。

3.4 对象

避免在循环中频繁构建和释放对象。不再使用的对忽应及时销毁。如无必要,不要序列化对象。

3.5 同步

在不需要同步操作时避免使用同步操作愿如能使用 ArrayList 时不要使用 Vector 。尽量少用同步方法。避免使用太多的 synchronized 美健字。尽量将同步最小化,即将同步作用到最需要的地方,避免大块的同步块或方法等。

3.6 final

将参数或方法声明成 final 可提高程序响应效率,故此:注意绝对不要仅因为性能而将类、方法等声明成 final ,声明成 final 的类、方法一定要确信不再被继承或重载!不需要重新赋值的变量(包括类变量、实例变量、局部变量)声明成 final 所有方法参数声明成 final 私有( private)方法不需要声明成 final 若方法确定不会被继承,则声明成 final

3.7 垃圾收集和资源释放

不要过分依赖JVM的垃圾收集机制,因为你无法预测和知道 J 在什么时候运行 GC 。尽可能早的释放资源,不再使用的资源请立即释放。可能有异常的操作时必须在 try 的 finally 块中释放资源,如数据库逢接、10操作等:

                   示例:

                   Connection conn = null;

                   try{

                            // do something

                   }catch(Exception e){

                            //异常捕捉和处理

                            e.printStackTrock();

                   } finallyl{

                            //列断 ccan 等是者为null

                            if(null != conn){

                                     conn ,close0;

                            }

                   }// end try...catch...finally

4 应用案例

4.1 Java规范文档

                   Java 规范文档示例如下:

                   示例:

                   /*

                   *@Hellokorld.java

                   *功能播述:用于输出最经典的语句 Hellolorld

                   *@author XXx

                   *@since YYYY -MM- DD

                   publie class Hellolorld{ //类名大写开头

                            publie statie void main(String args []){//方法名用小写

                                     System,out.printIn(" Hello World ");       //输出语句,将 Hello Vorld 输

                            }

                   }

                           

4.2 JSP 规范文档

                   JSP 规范文档 JSP 规范文档示例如下:

                   示例:

                   <%@page language="java" import="java.util.*" pageEncoding="ISo-8859-1"%>

                   <%

                            String path = request.getContetPath();

                            String basePath = request.getScheme)"://"+ request.getServerName()+":"+request.getServerPort()+ path + "/";

                   %>

                   <!DOCТYPE HTML.PLBLIC "-//WзC// DТD HTML.4.01 Transitional//EN">

                   <html>

                            <head>

                                     <base href="<%=basePaths%>">

                                     <title> My JSP "MyJsp.jsp"starting page </title>

                                     <meta http-equiv ="pragma" content ="no-cache">

                                     <meta http-equiv ="cache-control" content="no-cache">

                                     <meta http-equiv="X-UA-Compatible" content="IE=Edge;IE=11;IE=10;IE=9">

                                     <meta http-equiv ="expires" content="0">

                                     <meta http-equiv ="keyWords" content="keyword1,keyvord2,keyword3">

                                     <meta http-equiv ="description" content="This is my page">

                                     <!--

                                     <link rel ="stylesheet" type ="text/css" href="styles.css">

                                     -->           

                            </head>

                            <body>

                                     This is my JSP page.<br>

                            </body>

                   </html>

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

Java编码规范 的相关文章

  • 抽象超类的默认接口方法

    可以说我有以下结构 abstract class A abstract boolean foo interface B default boolean foo return doBlah class C extends A implemen
  • 如何获取枚举的子集

    大多数情况下 包含所有元素的枚举显示在用户界面的下拉列表中 我们只需要在用户界面中显示 5 个字段中的 2 个 通过某种方式利用可用于枚举的相同函数来获取此数据的更简单方法是什么 enum Color RED GREEN BLACK BLU
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 使用 java 的 RAR 档案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • Java中的OR运算(BitSet.class)

    如何编写一个程序 该程序需要001010101110000100100 011100010001000011000 000000000010000000000100 作为输入 位 输出将是OR其中 3 个 OR 0 0 0 0 1 1 1
  • 驱动程序信息:driver.version:未知,使用 ChromeDriver v78.0.3904.70 和 Chrome 浏览器 v78.0.3904.97

    我使用的是java 1 8和chrome浏览器版本78 0 3904 97 我正在尝试使用 chrome 驱动程序版本执行我的 selenium 脚本代码78 0 3904 70 但在执行时我面临以下问题并且 chrome 立即崩溃 Pic
  • Java中无参数的for循环

    我在看别人的代码 发现了这段代码 for 我不是 Java 专家 这行代码在做什么 起初 我认为这会创建一个无限循环 但在该程序员使用的同一个类中 while true 其中 如果我错了 请纠正我 是一个无限循环 这两个相同吗 为什么有人会
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • Akka 和 spring 配置

    我正在尝试将 akka 与 spring 结合起来 但没有成功 基本上 我的应用程序似乎不习惯读取 akka 模式 具有架构的 service context xml 的一部分
  • java 1.8下无法启动eclipse

    java 1 8 升级后我无法启动 eclipse 附上错误截图 这是我的 eclipse 配置设置 我该如何解决 startup plugins org eclipse equinox launcher 1 3 0 v20120522 1
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • 将变量从 jenkins 传递到 testng.xml

    我想根据从詹金斯传递的变量运行测试用例 例如 选择您要运行的测试用例 测试用例一 测试用例二 在 pom xml maven 中
  • 使用链接列表插入优先级队列的方法

    首先 我觉得我应该提到这是一项作业 我并不是在寻找直接的代码答案 只是为了指出正确的方向 我们被要求在链表中实现优先级队列 我正在努力编写 insert 函数的第一部分 在代码中我尝试检查是否head包含任何内容 如果没有则设置为head
  • 计算移动的球与移动的线/多边形碰撞的时间(2D)

    我有一个多边形 里面有一个移动的球 如果球撞到边界 它应该反弹回来 My current solution I split the polygon in lines and calculate when the ball hits the
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • JSP 和 scriptlet

    我知道现在使用 scriptlet 被认为是禁忌 没关系 我会同意Top Star的话 因为我目前只是Java新手 到目前为止我听到的是 它是为了让设计师的生活更轻松 但我想知道 这是否与JSP页面的性能有关 另一方面 如果只是为了 让设计
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个

随机推荐

  • RuoYi-弹出新窗口选择数据回显到父页面

    这里只贴出关键代码 其他代码需要自行编写 返回值处理根据实际需求来 目前是只取第一条 因为选择页面是单选行 表单页面新加方法 选择社区 function selectCommunity var url ctx community selec
  • 深度

    解码区块链 专题文章三 区块链的安全基础架构及构想 近期 国家发改委明确 区块链 被纳入新基建定义和范围 作为一项能够打通各个技术及领域的基础技术 区块链被认为将在各行业深度融合 新领域拓展 新场景新应用开发等方面潜力无限 解码区块链 内容
  • js 小技巧 ( 根据不同的状态生成不同的颜色和状态 )

    HTML 解决办法 动态绑定 color 然后 根据 三元表达式 进行处理 js 解决办法 动态绑定 color 然后 根据在每个数据的后面添加color属性 可能有的人会问vueb不能用不然不会双向绑定 确实vue要使用vueset 但是
  • 他人工作多年后的总结

    1 找一个好公司 精通至少一门语言及其框架 专注做5到10年 先有深度再有广度 不要为了高工资过早转向管理角色 2 从长远来看 拥有个人项目 阅读 写博客和参加访谈都会有助于你成为一个更好的开发人员 3 成为开发者社区的一部分 努力参加线上
  • qt写C++(引用的妙处,内联函数)

    首先看什么是引用 引用和取地址很像 容易混淆 单独出现 a就是对a这个变量取地址 如果是int a 就是声明这是一个引用 引用 include
  • 基于SpringBoot+redis实现一个简单的点赞功能

    点赞操作比较频繁 而且比较随意 所以数据变更很快 如果用mysql 会对mysql产生很大的压力 于是决定使用Redis 防止数据丢失 所以会定期将数据持久化同步到mysql中 一 Redis 缓存设计及实现 1 1 Redis 安装及运行
  • mysql约束之_外键约束 foreign key

    外键约束 foreign key 创建一个员工表employee 员工编号id 员工的姓名name 部门名称dept name 员工所在的地址address CREATE TABLE employee id INT PRIMARY KEY
  • R语言学习笔记

    参考 W N Venables D M Smith and the R DCT Introduction to R Notes on R A Programming Environment for Data Analysis and Gra
  • java集合Map介绍及具体使用

    目录 Map 双例集合 存储 键值对 key value 的数据 1 基本介绍 2 HashMap 2 1源码介绍 2 2 HashMap源码中的重要常量 2 3面试题 3 LinkHashMap 3 1LinkHashMap源码分析 4
  • Pandas数据处理

    数据预览 首先 调用read excel 方法读取数据 import pandas as pd df pd read excel data xlsx df 姓名 班级 语文 数学 0 张三 一班 99 90 1 李四 一班 78 NaN 2
  • 【从零开始学c++】———模拟实现string类(常用接口的实现)

    string 1 前言 2 string类常用接口实现 3 总结 1 前言 之前学到了string类常用接口的后 我很好奇string类在底层是怎样实现的 在由之前学习到c 有关的之后 所以我打算模拟实现一下string类常用的接口 以便加
  • Allegro学习笔记

    1 用Allegro进行PCB设计 文件的后缀名是 brd 2 双击 brd无法打开该文件 必须在Allegro里面File Open中进行打开
  • 《代码大全2》第5章 软件构建中的设计

    目录 前言 本章主题 5 1 设计中的挑战 5 1 1 设计在软件构建中所处的角色 5 1 2 设计是一个险恶的问题 5 2 关键的设计概念 5 2 1 软件的首要技术使命 管理复杂度 1 管理复杂度的重要性 5 2 2 理想的设计特征 5
  • threeJs着色器ShaderMaterial以及统一着色语言GLSL语法基本介绍

    一 着色器材质ShaderMaterial的基本使用 废话不多讲先来看案例 console log 着色器入门 引入three js import as THREE from three 引入OrbitControls控制器 import
  • RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED.

    原因 batch size太大了 说起来我也觉得挺奇怪 bs太大为什么不报错out of memory而是报了这么一个牛头不对马嘴的错误 不过因为我这个环境已经跑了很多模型都没有问题 因此不是cudnn和cuda版本对应问题 将bs调小一半
  • 常用Linux发行版镜像源配置

    最近研究Linux 试了一些Linux发行版 但是大多数发行版的软件源速度都不是很理想 所以我这里干脆做了一个收集 把我用过的一些常用发行版的软件源设置方法做个总结 大家也可以做个参考 Ubuntu 18 04 18 04是目前Ubuntu
  • unity Animation和Animator动画的暂停和继续播放

    1 利用Animator组件实现暂停和继续播放自己创建的Animation动画 需要按以下顺序操作 在需要播放动画的物体身上添加Animator组件 在Project视图下创建AnimatorController并拖入到Animator组件
  • 【vue3+ts+ant】a-table的column绑定点击事件的两种方式

    需求 给标题这一列的数据绑定点击事件 实现交互 第一种 在dom里面插入标签 并绑定点击事件
  • 【牛客网 - 华为机试 - HJ85 最长回文子串】

    描述 给定一个仅包含小写字母的字符串 求它的最长回文子串的长度 所谓回文串 指左右对称的字符串 所谓子串 指一个字符串删掉其部分前缀和后缀 也可以不删 的字符串 数据范围 字符串长度 进阶 时间复杂度 O n O n 空间复杂度 O n O
  • Java编码规范

    目录 1 代码规范 2 1 1 注释规范 2 1 1 1 页头注释