做网站 内网怎么映射微商城app开发

news/2025/9/24 5:12:10/文章来源:
做网站 内网怎么映射,微商城app开发,wordpress php无法访问,贵阳网站建设制作方法参考链接#xff1a; Java中的main()函数是强制性的吗 一、引入 1、泛型是什么 首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢#xff1f;先看看下面这段代码#xff1a; [java] view plain copy ArrayListString strList new ArrayL…参考链接 Java中的main()函数是强制性的吗 一、引入  1、泛型是什么  首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢先看看下面这段代码 [java]  view plain copy  ArrayListString strList new ArrayListString();   ArrayListInteger intList new ArrayListInteger();   ArrayListDouble doubleList new ArrayListDouble();    大家对ArrayList很熟悉这里构造了三个List,分别盛装String、Integer和Double这就是ArrayList的过人之处即各种类型的变量都可以组装成对应的List而不必针对每个类型分别实现一个构建ArrayList的类。这里可能看不懂开篇总是困难的下面看看如果没有泛型的话我们要怎么做 2、没有泛型会怎样  先看下面这段代码 我们实现两个能够设置点坐标的类分别设置Integer类型的点坐标和Float类型的点坐标 [java]  view plain copy  //设置Integer类型的点坐标   class IntegerPoint{       private Integer x ;       // 表示X坐标       private Integer y ;       // 表示Y坐标       public void setX(Integer x){           this.x x ;       }       public void setY(Integer y){           this.y y ;       }       public Integer getX(){           return this.x ;       }       public Integer getY(){           return this.y ;       }   }   //设置Float类型的点坐标   class FloatPoint{       private Float x ;       // 表示X坐标       private Float y ;       // 表示Y坐标       public void setX(Float x){           this.x x ;       }       public void setY(Float y){           this.y y ;       }       public Float getX(){           return this.x ;       }       public Float getY(){           return this.y ;       }   }    那现在有个问题大家有没有发现他们除了变量类型不一样一个是Integer一个是Float以外其它并没有什么区别那我们能不能合并成一个呢 答案是可以的因为Integer和Float都是派生自Object的我们用下面这段代码代替 [java]  view plain copy  class ObjectPoint{       private Object x ;       private Object y ;       public void setX(Object x){           this.x x ;       }       public void setY(Object y){           this.y y ;       }       public Object getX(){           return this.x ;       }       public Object getY(){           return this.y ;       }   }    即全部都用Object来代替所有的子类 在使用的时候是这样的 [java]  view plain copy  ObjectPoint integerPoint new ObjectPoint();   integerPoint.setX(new Integer(100));   Integer integerX(Integer)integerPoint.getX();    在设置的时候使用new Integer(100)来新建一个Integer [java]  view plain copy  integerPoint.setX(new Integer(100));    然后在取值的时候进行强制转换 [java]  view plain copy  Integer integerX(Integer)integerPoint.getX();    由于我们设置的时候是设置的Integer所以在取值的时候强制转换是不会出错的。 同理FloatPoint的设置和取值也是类似的代码如下 [java]  view plain copy  ObjectPoint floatPoint new ObjectPoint();   floatPoint.setX(new Float(100.12f));   Float floatX (Float)floatPoint.getX();    但问题来了注意注意我们这里使用了强制转换我们这里setX和getX写得很近所以我们明确的知道我们传进去的是Float类型那如果我们记错了呢 比如我们改成下面这样编译时会报错吗 [java]  view plain copy  ObjectPoint floatPoint new ObjectPoint();   floatPoint.setX(new Float(100.12f));   String floatX (String)floatPoint.getX();    不会我们问题的关键在于这句 [java]  view plain copy  String floatX (String)floatPoint.getX();    强制转换时会不会出错。因为编译器也不知道你传进去的是什么而floatPoint.getX()返回的类型是Object所以编译时将Object强转成String是成立的。必然不会报错。 而在运行时则不然在运行时floatPoint实例中明明传进去的是Float类型的变量非要把它强转成String类型肯定会报类型转换错误的 那有没有一种办法在编译阶段即能合并成同一个又能在编译时检查出来传进去类型不对呢当然这就是泛型。 下面我们将对泛型的写法和用法做一一讲解。 二、各种泛型定义及使用  1、泛型类定义及使用  我们先看看泛型的类是怎么定义的 [java]  view plain copy  //定义   class PointT{// 此处可以随便写标识符号        private T x ;             private T y ;             public void setX(T x){//作为参数           this.x x ;       }       public void setY(T y){           this.y y ;       }       public T getX(){//作为返回值           return this.x ;       }       public T getY(){           return this.y ;       }   };   //IntegerPoint使用   PointInteger p new PointInteger() ;    p.setX(new Integer(100)) ;    System.out.println(p.getX());        //FloatPoint使用   PointFloat p new PointFloat() ;    p.setX(new Float(100.12f)) ;    System.out.println(p.getX());      先看看运行结果 从结果中可以看到我们实现了开篇中IntegerPoint类和FloatPoint类的效果。下面来看看泛型是怎么定义及使用的吧。   1、定义泛型PointT 首先大家可以看到PointT即在类名后面加一个尖括号括号里是一个大写字母。这里写的是T其实这个字母可以是任何大写字母大家这里先记着可以是任何大写字母意义是相同的。 2类中使用泛型 这个T表示派生自Object类的任何类比如String,Integer,Double等等。这里要注意的是T一定是派生于Object类的。为方便起见大家可以在这里把T当成String,即String在类中怎么用那T在类中就可以怎么用所以下面的定义变量作为返回值作为参数传入的定义就很容易理解了。   [java]  view plain copy  //定义变量   private T x ;    //作为返回值   public T getX(){        return x ;     }     //作为参数   public void setX(T x){         this.x x ;     }     3使用泛型类 下面是泛型类的用法 [java]  view plain copy  //IntegerPoint使用   PointInteger p new PointInteger() ;    p.setX(new Integer(100)) ;    System.out.println(p.getX());        //FloatPoint使用   PointFloat p new PointFloat() ;    p.setX(new Float(100.12f)) ;    System.out.println(p.getX());      首先是构造一个实例 [java]  view plain copy  PointString p new PointString() ;     这里与普通构造类实例的不同之点在于普通类构造函数是这样的Point p new Point() ;  而泛型类的构造则需要在类名后添加上String即一对尖括号中间写上要传入的类型。 因为我们构造时是这样的class PointT,所以在使用的时候也要在Point后加上类型来定义T代表的意义。 然后在getVar和setVar时就没有什么特殊的了直接调用即可。 从上面的使用时明显可以看出泛型的作用在构造泛型类的实例的时候 [java]  view plain copy  //IntegerPoint使用   PointInteger p new PointInteger() ;    //FloatPoint使用   PointFloat p new PointFloat() ;     尖括号中你传进去的是什么T就代表什么类型。这就是泛型的最大作用我们只需要考虑逻辑实现就能拿给各种类来用。 前面我们提到ArrayList也是泛型我们顺便它的实现 [java]  view plain copy  public class ArrayListE{       …………   }    看到了吧跟我们的Point实现是一样的这也就是为什么ArrayList能够盛装各种类型的主要原因。 (4使用泛型实现的优势 相比我们开篇时使用Object的方式有两个优点 1、不用强制转换 [java]  view plain copy  //使用Object作为返回值要强制转换成指定类型   Float floatX (Float)floatPoint.getX();   //使用泛型时不用强制转换直接出来就是String   System.out.println(p.getVar());     (2)、在settVar()时如果传入类型不对编译时会报错 可以看到当我们构造时使用的是String,而在setVar时传进去Integer类型时就会报错。而不是像Object实现方式一样在运行时才会报强制转换错误。   2、多泛型变量定义及字母规范  1、多泛型变量定义 上在我们只定义了一个泛型变量T那如果我们需要传进去多个泛型要怎么办呢 只需要在类似下面这样就可以了 [java]  view plain copy  class MorePointT,U{   }    也就是在原来的T后面用逗号隔开写上其它的任意大写字母即可。想加几个就加几个比如我们想加五个泛型变量那应该是这样的  [java]  view plain copy  class MorePointT,U,A,B,C{   }    举个粟子我们在Point上再另加一个字段name也用泛型来表示那要怎么做代码如下 [java]  view plain copy  class MorePointT,U {       private T x;       private T y;                 private U name;          public void setX(T x) {           this.x x;       }       public T getX() {           return this.x;       }       …………       public void setName(U name){           this.name name;       }          public U getName() {           return this.name;       }   }   //使用   MorePointInteger,String morePoint new MorePointInteger, String();   morePoint.setName(harvic);   Log.d(TAG, morPont.getName: morePoint.getName());    从上面的代码中可以明显看出就是在新添加的泛型变量U用法与T是一样的。 2、字母规范 在定义泛型类时我们已经提到用于指定泛型的变量是一个大写字母 [java]  view plain copy  class PointT{    …………   }    当然不是的任意一个大写字母都可以。他们的意义是完全相同的但为了提高可读性大家还是用有意义的字母比较好一般来讲在不同的情境下使用的字母意义如下 E — Element常用在java Collection里如ListE,IteratorE,SetE K,V — KeyValue代表Map的键值对 N — Number数字 T — Type类型如StringInteger等等  如果这些还不够用那就自己随便取吧反正26个英文字母呢。 再重复一遍使用哪个字母是没有特定意义的只是为了提高可读性 3、泛型接口定义及使用  在接口上定义泛型与在类中定义泛型是一样的代码如下  [java]  view plain copy  interface InfoT{        // 在接口上定义泛型         public T getVar() ; // 定义抽象方法抽象方法的返回值就是泛型类型         public void setVar(T x);   }      与泛型类的定义一样也是在接口名后加尖括号 1、使用方法一非泛型类 但是在使用的时候就出现问题了我们先看看下面这个使用方法   [java]  view plain copy  class InfoImpl implements InfoString{   // 定义泛型接口的子类       private String var ;                // 定义属性       public InfoImpl(String var){        // 通过构造方法设置属性内容           this.setVar(var) ;       }       Override       public void setVar(String var){           this.var var ;       }       Override       public String getVar(){           return this.var ;       }   }      public class GenericsDemo24{       public  void main(String arsg[]){           InfoImpl i new InfoImpl(harvic);           System.out.println(i.getVar()) ;       }   };    首先先看InfoImpl的定义 [java]  view plain copy  class InfoImpl implements InfoString{       …………   }    要清楚的一点是InfoImpl不是一个泛型类因为他类名后没有T 然后在在这里我们将InfoString中的泛型变量T定义填充为了String类型。所以在重写时setVar和getVar时IDE会也我们直接生成String类型的重写函数。 最后在使用时,没什么难度传进去String类型的字符串来构造InfoImpl实例然后调用它的函数即可。 [java]  view plain copy  public class GenericsDemo24{       public  void main(String arsg[]){           InfoImpl i new InfoImpl(harvic);           System.out.println(i.getVar()) ;       }   };    2、使用方法二泛型类 在方法一中我们在类中直接把InfoT接口给填充好了但我们的类是可以构造成泛型类的那我们利用泛型类来构造填充泛型接口会是怎样呢  [java]  view plain copy  interface InfoT{        // 在接口上定义泛型       public T getVar() ; // 定义抽象方法抽象方法的返回值就是泛型类型       public void setVar(T var);   }   class InfoImplT implements InfoT{   // 定义泛型接口的子类       private T var ;             // 定义属性       public InfoImpl(T var){     // 通过构造方法设置属性内容           this.setVar(var) ;         }       public void setVar(T var){           this.var var ;       }       public T getVar(){           return this.var ;       }   }   public class GenericsDemo24{       public static void main(String arsg[]){           InfoImplString i new InfoImplString(harvic);           System.out.println(i.getVar()) ;       }   };    最关键的是构造泛型类的过程 [java]  view plain copy  class InfoImplT implements InfoT{   // 定义泛型接口的子类       private T var ;             // 定义属性       public InfoImpl(T var){     // 通过构造方法设置属性内容           this.setVar(var) ;         }       public void setVar(T var){           this.var var ;       }       public T getVar(){           return this.var ;       }   }    在这个类中我们构造了一个泛型类InfoImplT然后把泛型变量T传给了InfoT这说明接口和泛型类使用的都是同一个泛型变量。 然后在使用时就是构造一个泛型类的实例的过程使用过程也不变。 [java]  view plain copy  public class GenericsDemo24{       public static void main(String arsg[]){           InfoString i new InfoImplString(harvic);           System.out.println(i.getVar()) ;       }   };    使用泛型类来继承泛型接口的作用就是让用户来定义接口所使用的变量类型而不是像方法一那样在类中写死。 那我们稍微加深点难度构造一个多个泛型变量的类并继承自Info接口 [java]  view plain copy  class InfoImplT,K,U implements InfoU{   // 定义泛型接口的子类        private U var ;            private T x;        private K y;        public InfoImpl(U var){        // 通过构造方法设置属性内容            this.setVar(var) ;        }        public void setVar(U var){            this.var var ;        }        public U getVar(){            return this.var ;        }    }    在这个例子中我们在泛型类中定义三个泛型变量T,K,U并且把第三个泛型变量U用来填充接口Info。所以在这个例子中Info所使用的类型就是由U来决定的。 使用时是这样的泛型类的基本用法不再多讲,代码如下 [java]  view plain copy  public class GenericsDemo24{       public  void main(String arsg[]){           InfoImplInteger,Double,String i new InfoImplInteger,Double,String(harvic);           System.out.println(i.getVar()) ;       }   }    4、泛型函数定义及使用  上面我们讲解了类和接口的泛型使用下面我们再说说怎么单独在一个函数里使用泛型。比如我们在新建一个普通的类StaticFans然后在其中定义了两个泛型函数 [java]  view plain copy  public class StaticFans {       //静态函数       public static  T void StaticMethod(T a){           Log.d(harvic,StaticMethod: a.toString());       }       //普通函数       public  T void OtherMethod(T a){           Log.d(harvic,OtherMethod: a.toString());       }   }    上面分别是静态泛型函数和常规泛型函数的定义方法与以往方法的唯一不同点就是在返回值前加上T来表示泛型变量。其它没什么区别。 使用方法如下 [java]  view plain copy  //静态方法   StaticFans.StaticMethod(adfdsa);//使用方法一   StaticFans.StringStaticMethod(adfdsa);//使用方法二      //常规方法   StaticFans staticFans new StaticFans();   staticFans.OtherMethod(new Integer(123));//使用方法一   staticFans.IntegerOtherMethod(new Integer(123));//使用方法二    结果如下 首先我们看静态泛型函数的使用方法   [java]  view plain copy  StaticFans.StaticMethod(adfdsa);//使用方法一   StaticFans.StringStaticMethod(adfdsa);//使用方法二    从结果中我们可以看到这两种方法的结果是完全一样的但他们还有些区别的区别如下 方法一可以像普通方法一样直接传值任何值都可以但必须是派生自Object类的类型比如String,Integer等函数会在内部根据传进去的参数来识别当前T的类别。但尽量不要使用这种隐式的传递方式代码不利于阅读和维护。因为从外观根本看不出来你调用的是一个泛型函数。 方法二与方法一不同的地方在于在调用方法前加了一个String来指定传给T的值如果加了这个String来指定参数的值的话那StaticMethod函数里所有用到的T类型也就是强制指定了是String类型。这是我们建议使用的方式。 同样常规泛型函数的使用也有这两种方式 [java]  view plain copy  StaticFans staticFans new StaticFans();   staticFans.OtherMethod(new Integer(123));//使用方法一   staticFans.IntegerOtherMethod(new Integer(123));//使用方法二    可以看到与平常一样先创建类的实例然后调用泛型函数。 方法一隐式传递了T的类型与上面一样不建议这么做。 方法二显示将T赋值为Integer类型这样OtherMethodT a传递过来的参数如果不是Integer那么编译器就会报错。 进阶返回值中存在泛型 上面我们的函数中返回值都是void但现实中不可能都是void有时我们需要将泛型变量返回比如下面这个函数 [java]  view plain copy  public static T ListT parseArray(String response,ClassT object){       ListT modelList JSON.parseArray(response, object);       return modelList;   }    函数返回值是ListT类型。至于传入参数ClassT object的意义我们下面会讲。这里也就是想通过这个例子来告诉大家泛型变量其实跟String,IntegerDouble等等的类的使用上没有任何区别T只是一个符号可以代表String,IntegerDouble……这些类的符号在泛型函数使用时直接把T看到String,IntegerDouble……中的任一个来写代码就可以了。唯一不同的是要在函数定义的中在返回值前加上T标识泛型 5、其它用法:ClassT类传递及泛型数组  1、使用ClassT传递泛型类Class对象 有时我们会遇到一个情况比如我们在使用JSON解析字符串的时候代码一般是这样的 [java]  view plain copy  public static ListSuccessModel parseArray(String response){       ListSuccessModel modelList JSON.parseArray(response, SuccessModel.class);       return modelList;   }    其中SuccessModel是自定义的解析类代码如下其实大家不用管SuccessModel的定义只考虑上面的那段代码就行了。写出来SuccessModel的代码只是不想大家感到迷惑其实这里只是fastJson的基本用法而已。 这段代码的意义就是根据SuccessModel解析出ListSuccessModel的数组。 [java]  view plain copy  public class SuccessModel {       private boolean success;              public boolean isSuccess() {           return success;       }          public void setSuccess(boolean success) {           this.success success;       }   }     那现在我们把下面这句组装成一个泛型函数要怎么来做呢? [java]  view plain copy  public static ListSuccessModel parseArray(String response){       ListSuccessModel modelList JSON.parseArray(response, SuccessModel.class);       return modelList;   }    首先我们应该把SuccessModel单独抽出来做为泛型变量但parseArray中用到的SuccessModel.class要怎么弄呢 先来看代码 [java]  view plain copy  public static T ListT parseArray(String response,ClassT object){       ListT modelList JSON.parseArray(response, object);       return modelList;   }    注意到我们用的ClassT object来传递类的class对象即我们上面提到的SuccessModel.class。 这是因为ClassT也是一泛型它是传来用来装载类的class对象的它的定义如下 [java]  view plain copy  public final class ClassT implements Serializable {       …………   }    通过ClassT来加载泛型的Class对象的问题就讲完了下面来看看泛型数组的使用方法吧。 2、定义泛型数组 在写程序时大家可能会遇到类似String[] list new String[8];的需求这里可以定义String数组当然我们也可以定义泛型数组泛型数组的定义方法为 T[]与String[]是一致的下面看看用法  [java]  view plain copy  //定义   public static T T[] fun1(T...arg){  // 接收可变参数            return arg ;            // 返回泛型数组     }     //使用   public static void main(String args[]){            Integer i[] fun1(1,2,3,4,5,6) ;          Integer[] result fun1(i) ;   }      我们先看看 定义时的代码 [java]  view plain copy  public static T T[] fun1(T...arg){  // 接收可变参数            return arg ;            // 返回泛型数组     }      首先定义了一个静态函数然后定义返回值为T[]参数为接收的T类型的可变长参数。如果有同学对T...arg的用法不了解可以去找下JAVA 可变长参数方面的知识。 由于可变长参数在输入后会保存在arg这个数组中所以我们直接把数组返回即可。 转自http://blog.csdn.net/harvic880925/article/details/49872903  下面是我自己实际使用泛型的几个实例。 希望看完上面的文章之后再看实际使用的例子可以更好的理解和使用和实际使用。 关于泛型类的使用实例  import lombok.Data; Data public class MultiObjectT { /** * 成功状态 */ private boolean success; /** * 异常 */ private Exception ex; /** * 数据 */ private T obj; public MultiObject() { } /** * 注意当传入的泛型是Boolean时就和第三个构造函数冲突了。 */ public MultiObject(boolean success) { this.success success; } public MultiObject(Exception ex) { this.success false; this.ex ex; } public MultiObject(T value) { this.success true; this.obj value; } } 简单解释下这个model。 在实际业务代码里面可能有很多种操作然后我们关心这个操作的执行结果主要有几点。 1成功与否。对应属性success。 2异常信息。对应属性ex。若是操作正常执行则就不在意这个属性的值。 3我们操作的最终目的对象。对应属性obj。  泛型牛逼的地方就是在这个地方。 如果你不用泛型而使用Object类型那么每次执行完之后我们即使得到这个结果还得类型转换一下那么这下就像文章上面描述的那样。分分钟出现castfailexception。也就是类型转换异常啦。 但是若是使用了这个泛型之后那么我们的某个操作所需要的返回结果是什么类型就可以 传入什么类型而且在实际取得返回结果的时候就不需要使用类型转换这样就很好的达到了目的。 这个主要是代码设计层次的提高。写再多的业务代码要是不提高那么写的都是渣。  关于这个model代码里面为啥没有getter和setter都是因为使用Data这个注解可以自动填充这个getter和setter。所以。就表在意这个问题啦。在其他地方可以正常使用各个属性getter和setter方法虽然这些方法你暂时看不见。有兴趣的可以了解下lombok。   关于泛型方法的使用实例 这个地方就有2个但是上面文章也都讲到啦。 1一个是泛型表示某一个类型的参数。为的传递某一类的参数对象 2另一个则是传递的不是参数而是代表Class某一个类。 恰巧我都使用过就正好记录一下实际使用实例。  /** * 将Json字符串信息转换成对应的Java对象 * * param json json字符串对象 * param c    对应的类型 */ public static T T parseJsonToObj(String json, ClassT c) { try { JSONObject jsonObject JSONObject.parseObject(json); return JSON.toJavaObject(jsonObject, c); } catch (Exception e) { LOG.error(e.getMessage()); } return null; }然后是具体调用的地方的代码。  Collector collectorObj JSONUtils.parseJsonToObj(collector, Collector.class); Flume flume JSONUtils.parseJsonToObj(flumeJson, Flume.class); Probe probe JSONUtils.parseJsonToObj(probeJson, Probe.class);可以看到真的只是因为传入的参数类型不一样但若你不知道泛型的话那你就得没遇到一个类型的转换你就得写一个这么个方法。  /** * param dest   目的集合 * param source 源集合 * param T    集合参数的类型 */ private static T void listAddAllAvoidNPE(ListT dest, ListT source) { if (source null) { return; } dest.addAll(source); } private static T void listAddAvoidNull(ListT dest, T source) { if (source null) { return; } dest.add(source); } 这个就是传入的参数为某一类的参数主要是要使用参数对象而不是上面的那个使用的参数的类Class  我这方法提出来主要是因为直接使用list类的addAll方法如果添加的是null那么就会抛异常。但是总不能我在所有使用的地方都判断一下我要添加的参数是不是null然后再调用list的addAll方法吧。那样的话这样的判断代码会啰嗦的海了去了。所以就这么提出来了。  这个时候这个T使用起来就像使用我们常用的一般对象一样我这的参数是个List类型当然也可是其他类型的姿势都一样。  然后是具体调用的地方的代码  ListProbeObject list Lists.newArrayList(); listAddAllAvoidNPE(list, decoder.getProperties());这个方法的第二个参数的返回值可能是null所以直接调用addAll就会抛空指针异常。所以就如上那么一提取。就好多啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广东网站建设有限公司南京装修公司十大排名榜

💡💡💡本文独家改进:独家创新(Partial_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 Partial_C_Detect | 亲测在多个数据集能够实现大幅涨点 💡💡💡Yolov8魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提…

做织梦网站之前要新建数据库吗餐厅网站开发背景

这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对。气哭。 感谢群友lino的帮助。他试了set方法不行,直接喂给我的答案了。。。 题目:26. 删除排序数组中的…

小说网站seo排名怎么做河北省石家庄市裕华区

‌Groovy‌是一种基于Java虚拟机(JVM)的敏捷开发语言,结合了Python、Ruby和Smalltalk的许多强大特性。它旨在提高开发者的生产力,通过简洁、熟悉且易于学习的语法,Groovy能够与Java代码无缝集成,并提供强大…

湘潭网站如何建设公司网站知乎

正题 题目链接:https://www.luogu.com.cn/problem/P4331 题目大意 给出一个序列aaa,求一个单调上升的序列bbb使得∑i1n∣ai−bi∣\sum_{i1}^n|a_i-b_i|∑i1n​∣ai​−bi​∣最小。 解题思路 巧妙的解法 首先我们让所有的ai−ia_i-iai​−i这样我们求的bbb序列就…

网站需要人员效果好企业营销型网站建设

view() x.view() 是 PyTorch 中用于改变张量形状的方法之一,它允许你在保持张量元素总数不变的情况下,重新组织张量的维度和大小。 view() 方法的用法如下: x.view(*shape)其中 x 是要进行形状变换的张量,shape 是一个整数或整…

网站建设指标陕西省信用建设门户网站

一、聚簇索引 其实之前内容中介绍的 B 树就是聚簇索引。 这种索引不需要我们显示地使用 INDEX 语句去创建,InnoDB 引擎会自动创建。另外,在 InnoDB 引擎中,聚簇索引就是数据的存储方式。 它有 2 个特点: 特点 1 使用记录主键…

杭州 兼职 网站建设网站建网站建设

本文为2023年第十八届中国研究生电子设计竞赛兆易创新企业命题三等奖以及决赛最佳论文奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有…

做一个二手网站怎么做网站服务器查询

​std::jthread是C20新引入的线程类,与 std::thread 类似,或者说,jthread是对thread进一步的封装,功能更强大​。 ​std::jthread的​j实际上是​joining的缩写​,​众所周知,std::thread在其生命周期结束…

保定网站建设电商型网站设计企业

文章目录 前言一、简单工厂模式定义二、举个例子三、简单工厂模式的缺点总结 前言 本篇我们了解一下简单工厂模式,它是设计模式的雏形,是学习设计模式的开端,我会结合案例说明它的设计思路。 一、简单工厂模式定义 简单工厂模式并不是GoF23…

连江福州网站建设头像制作器在线制作

CentOS操作系统的特点如下: 免费开源:CentOS是一个免费开源的操作系统,完全免费,无需花费任何成本。 稳定性高:CentOS以其出色的稳定性和安全性而闻名。它是一个基于Red Hat Enterprise Linux(RHEL&#x…

国和建设集团网站广州网站优化公司排名

背景: 之前用酷安上下载的苏苏亮亮版友提供的Openwrt,在高通410棒子上刷机成功,但编译一直就没搞定。近期听说又出了个分支版本ImmortalWrt,刷了个版本,感觉界面清爽不少,内核也升级,遂打算搞定…

建设网站要什么电脑网页设计与制作教程电子书

随着电子商务的快速发展,物流行业的包裹数量持续增长,给物流企业带来了巨大的运营压力。目前,国内大型物流运转中心已开始采用机器视觉自动化设备,但多数快递公司处于半自动化状态,中小型物流分拣中心目前仍靠人工录入…

网站后台打开很慢建设网站联盟

品牌发言稿的重要性不言而喻,它不仅代表着品牌形象,更是沟通品牌与消费者、合作伙伴的桥梁。如何撰写一篇高质量的品牌发言稿,成为许多品牌关注的焦点。今天媒介盒子来和大家聊聊:品牌发言稿怎么写。 一、 发言稿写作技巧 1.结构…

单页销售型网站培训机构有哪些

介绍: 在开始编写Python 3程序之前,有一些基本步骤和概念需要了解。以下是开始Python 3编程之旅的第一步介绍: 安装Python: 访问Python官方网站 python.org 下载适合您操作系统的Python版本(确保选择Python 3而非Pytho…

上海城乡建设中级职称报名网站网络策划公司全网天下

今天有位女性乎友问:我家的电脑之前一直没装宽带,主要是家人怕影响学习,不过上周就涨了,电脑终于连上网线,但没办法上网,还发现电脑设备管理器中网络适配器出现黄色感叹号。对于电脑的网络适配器感叹号问题…

网站seo快速排名优化的软件网页制作培训总结

1. 计算机视频重要分类 计算机视觉的重要任务可以大致分为以下几类: 1. 图像分类(Image Classification) 识别图像属于哪个类别,例如猫、狗、汽车等。 应用场景:物品识别、人脸识别、医疗影像分类。代表模型&#…

网站后台管理员密码wordpress调用留言板

学习大模型及相关技术,您可以按照以下步骤进行: 基础知识储备: •理解机器学习的基本概念,包括监督学习、无监督学习、强化学习等。 •掌握深度学习的基础理论,包括神经网络的工作原理、反向传播、激活函数等。 •学习…

德清网站制作修改wordpress主题名

解决方法: 打开本电脑-》管理-》服务和应用程序-》服务下找到如下图的HV 主机服务,双击选择禁用。 或者 转到“ 控制面板” >“ 卸载程序” >“ 打开或关闭Windows功能”以关闭Hyper-V。 步骤二:通过命令关闭Hyper-V(控制…

网站如何做市场推广网页制作与网站开发从入门到精通

1. 写在前面 c在线编译工具,可快速进行实验: https://www.bejson.com/runcode/cpp920/ 这段时间打算重新把c捡起来, 实习给我的一个体会就是算法工程师是去解决实际问题的,所以呢,不能被算法或者工程局限住,应时刻提…

静态单页网站wordpresswordpress后台怎么用

两台 CentOS 之间传数据:SCP 方式 文章目录 两台 CentOS 之间传数据:SCP 方式一、CentOS 安装 SSH 服务0、注意1、更新系统2、安装 OpenSSH 服务器3、启动 SSH 服务4、检查SSH服务状态5、配置防火墙6、测试 SSH 连接7、更改SSH默认端口(可选) 二、文件传…