精华内容
下载资源
问答
  • MYSQL新特性secure_file_priv 读写文件

    万次阅读 多人点赞 2019-09-03 11:38:55
    1290 – The MySQL server is running with the –secure-file-priv option so it cannot ...secure-file-priv特性 secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定...

    1290 – The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

    secure-file-priv特性
    secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

    • ure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
    • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
    • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

    如何查看secure-file-priv参数的值:

    show global variables like '%secure%';

    没有到处权限。

    mysql> show global variables like '%secure%';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | secure_auth      | OFF   |
    | secure_file_priv |       |
    +------------------+-------+
    2 rows in set (0.00 sec)
     

    有导出权限,导出路径需在/var/lib/mysql-files/下

    mysql> show global variables like '%secure%';
    +--------------------------+-----------------------+
    | Variable_name            | Value                 |
    +--------------------------+-----------------------+
    | require_secure_transport | OFF                   |
    | secure_auth              | ON                    |
    | secure_file_priv         | /var/lib/mysql-files/ |
    +--------------------------+-----------------------+
    3 rows in set (0.09 sec)

    MYSQL新特性secure_file_priv对读写文件的影响
    此开关默认为NULL,即不允许导入导出。

    解决问题:
    windows下:

    修改my.ini 在[mysqld]内加入secure_file_priv=

    linux下:

    修改my.cnf 在[mysqld]内加入secure_file_priv=
    MYSQL新特性secure_file_priv对读写文件的影响
    然后重启mysql,再查询secure_file_priv

    展开全文
  • /// AllowMultiple =true:标记在特性上的特性,其实是对特性的一种约束; /// Inherited =true:约束当前特性是否可以继承 /// AttributeTargets.All:当前特性可以标记在所有的元素上 /// AttributeUsage:在定义特性...
  • java14新特性

    万次阅读 2020-09-12 02:58:34
    特性一、简化instanceof //以前的写法 public class Feature01 { @Test public void test1(){ Object obj = new String("hello,Java14"); obj = null;//在使用null 匹配instanceof 时,返回都是false. if...

    新特性一、简化instanceof

    //以前的写法
    public class Feature01 {
        @Test
        public void test1(){
    
            Object obj = new String("hello,Java14");
            obj = null;//在使用null 匹配instanceof 时,返回都是false.
            if(obj instanceof String){
                String str = (String) obj;
                System.out.println(str.contains("Java"));
            }else{
                System.out.println("非String类型");
            }
    
            //举例1:新特性的写法一
            if(obj instanceof String str){ //新特性:省去了强制类型转换的过程
                System.out.println(str.contains("Java"));
            }else{
                System.out.println("非String类型");
            }
        }
    }
    
    
    class InstanceOf{
    
        String str = "abc";
    
        public void test(Object obj){
    		// 新特性的写法二
            if(obj instanceof String str){//此时的str的作用域仅限于if结构内。
                System.out.println(str.toUpperCase());
            }else{
                System.out.println(str.toLowerCase());
            }
    
        }
    
    }
    
    //举例3:
    class Monitor{
        private String model;
        private double price;
    
    //    public boolean equals(Object o){
    //        if(o instanceof Monitor other){
    //            if(model.equals(other.model) && price == other.price){
    //                return true;
    //            }
    //        }
    //        return false;
    //    }
    
    
        public boolean equals(Object o){
            return o instanceof Monitor other && model.equals(other.model) && price == other.price;
        }
    
    }
    

    新特性二、改进NullPointerException

    jdk14中这个新特性能够告诉你到底是那个方法导致空指针异常,而再jdk14以前则只会告诉你哪一行代码报空指针异常。如果遇到链式调用的代码则不能确定到底是那个环节导致了异常

    再程序运行的时候需要添加一行参数:-XX:+ShowCodeDetailsInExceptionMessages
    可能后期版本中就会将其作为默认参数,但再java14中需要添加这个参数才能使用这个新特性

    新特性三、Rocord (预览特性、后期版本一定会被确定下来)

    record的出现是为了解决java啰嗦的用来作为数据的承载类(entity层),例如get、set、toString等方法
    如下定义代码

    public record User(String name,Integer age) {
    }
    

    编译后就是

    public final class User extends java.lang.Record {
        private final java.lang.String name;
        private final java.lang.Integer age;
    
        public User(java.lang.String name, java.lang.Integer age) { /* compiled code */ }
    
        public java.lang.String toString() { /* compiled code */ }
    
        public final int hashCode() { /* compiled code */ }
    
        public final boolean equals(java.lang.Object o) { /* compiled code */ }
    
        public java.lang.String name() { /* compiled code */ }
    
        public java.lang.Integer age() { /* compiled code */ }
    }
    

    成员属性是final的只有get方法,与以前的不同采用变量名作为get方法的方法名
    如下示例代码

    public static void main(String[] args) throws IOException {
        User user = new User("张三", 14);
        System.out.println(user.name()); //相当于getName获取到了name字段
        System.out.println(user.age());//相当于getAge获取到了age字段
        System.out.println(user);//打印输出: User[name=张三, age=14]
    }
    

    在这里插入图片描述

    record注意点

    record可以定义静态的属性、静态的方法、构造方法、实例方法

    1. 如果声明非静态的属性则会报语法错误
    public record Person(String name,Person partner) {
        //不可以声明非静态的属性
        private int id;//报错
    }
    
    1. 不可以将record定义的类声明为abstract的
      下面的定义不符合语法
    abstract record Order(){ //报错
    
    }
    
    1. 不可以给record定义的类声明显式的父类(非Record类)下面的定义不符合语法
    record Order() extends Thread{ //报错
    
    }
    

    新特性四、弃用ParallelScavenge (Young区的GC)与

    SerialOld GC (Old区的GC)组合作为GC

    这个组合的使用场景是拥有一个很大的Young区和一个很小的Old区

    废弃了parallel young generation GC与SerialOld GC的组合( -XX:+UseParallelGC与XX:-UseParallelOldGC配合开启),现在使用-XX:+UseParallelGC -XX:UseParallelOldGC或者-XX:-UseParallelOldGC都会出现告警如下

    Java HotSpot(TM) 64-Bit Server VM warning: Option UseParallelOldGC was deprecated in version 14.0 and will likely be removed in a future release.

    新特性五、直接删除CMS垃圾回收器,在Jdk9时就已经标记为废除

    CMS的弊端 :

    1. 会产生内存碎片,导致并发清除后,用户线程可用的空间不足。
    2. 既然强调了并发(Concurrent),CMS收集器对CPU资源非常敏感
    3. CMS 收集器无法处理浮动垃圾(一边回收、另一边产生垃圾称为浮动垃圾)

    新特性六、ZGC(未来的垃圾回收器,STW在10ms以内)

    使用方式

    -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
    
    展开全文
  • Java 13 来袭,最新最全新特性解读

    万次阅读 多人点赞 2019-09-16 09:40:51
    2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布。 目前,JDK官网上已经可以看到JDK 13的...目前该版本包含的特性已经全部固定,主要包含...

    2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布。

    目前,JDK官网上已经可以看到JDK 13的进展,最新版的JDK 13将于2019年9月17日发布。

    目前,JDK13处于Release-Candidate Phase(发布候选阶段),将于9月17日正式发布。目前该版本包含的特性已经全部固定,主要包含以下五个:

    JEP 350,Dynamic CDS Archives

    JEP 351,ZGC: Uncommit Unused Memory

    JEP 353,Reimplement the Legacy Socket API

    JEP 354: Switch Expressions (Preview)

    JEP 355,Text Blocks (Preview)

    下面来逐一介绍下这五个重要的特性。

    Dynamic CDS Archives

    这一特性是在JEP310:Application Class-Data Sharing基础上扩展而来的,Dynamic CDS Archives中的CDS指的就是Class-Data Sharing。

    那么,这个JEP310是个啥东西呢?

    我们知道在同一个物理机/虚拟机上启动多个JVM时,如果每个虚拟机都单独装载自己需要的所有类,启动成本和内存占用是比较高的。所以Java团队引入了CDS的概念,通过把一些核心类在每个JVM间共享,每个JVM只需要装载自己的应用类,启动时间减少了,另外核心类是共享的,所以JVM的内存占用也减少了。

    CDS 只能作用于 Boot Class Loader 加载的类,不能作用于 App Class Loader 或者自定义的 Class Loader 加载的类。

    在 Java 10 中,则将 CDS 扩展为 AppCDS,顾名思义,AppCDS 不止能够作用于 Boot Class Loader了,App Class Loader 和自定义的 Class Loader 也都能够起作用,大大加大了 CDS 的适用范围。也就说开发自定义的类也可以装载给多个JVM共享了。

    Java 10中包含的JEP310的通过跨不同Java进程共享公共类元数据来减少了内存占用和改进了启动时间。

    但是,JEP310中,使用AppCDS的过程还是比较复杂的,需要有三个步骤:

    1、决定要 Dump 哪些 Class
    2、将类的内存 Dump 到归档文件中
    3、使用 Dump 出来的归档文件加快应用启动速度
    

    这一次的JDK 13中的JEP 350 ,在JEP310的基础上,又做了一些扩展。允许在Java应用程序执行结束时动态归档类,归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。

    也就是说,在Java 13中再使用AppCDS的时候,就不在需要这么复杂了。

    ZGC: Uncommit Unused Memory

    在讨论这个问题之前,想先问一个问题,JVM的GC释放的内存会还给操作系统吗?

    GC后的内存如何处置,其实是取决于不同的垃圾回收器的。因为把内存还给OS,意味着要调整JVM的堆大小,这个过程是比较耗费资源的。

    在JDK 11中,Java引入了ZGC,这是一款可伸缩的低延迟垃圾收集器,但是当时只是实验性的。并且,ZGC释放的内存是不会还给操作系统的。

    而在Java 13中,JEP 351再次对ZGC做了增强,本次 ZGC 可以将未使用的堆内存返回给操作系统。之所以引入这个特性,是因为如今有很多场景中内存是比较昂贵的资源,在以下情况中,将内存还给操作系统还是很有必要的:

    • 1、那些需要根据使用量付费的容器
    • 2、应用程序可能长时间处于空闲状态并与许多其他应用程序共享或竞争资源的环境。
    • 3、应用程序在执行期间可能有非常不同的堆空间需求。例如,启动期间所需的堆可能大于稍后在稳定状态执行期间所需的堆。

    Reimplement the Legacy Socket API

    使用易于维护和调试的更简单、更现代的实现替换 java.net.Socket 和 java.net.ServerSocket API。

    java.net.Socket和java.net.ServerSocket的实现非常古老,这个JEP为它们引入了一个现代的实现。现代实现是Java 13中的默认实现,但是旧的实现还没有删除,可以通过设置系统属性jdk.net.usePlainSocketImpl来使用它们。

    运行一个实例化Socket和ServerSocket的类将显示这个调试输出。这是默认的(新的):

    java -XX: TraceClassLoading JEP353  | grep Socket
    [0.033s][info   ][class,load] java.net.Socket source: jrt:/java.base
    [0.035s][info   ][class,load] java.net.SocketOptions source: jrt:/java.base
    [0.035s][info   ][class,load] java.net.SocketImpl source: jrt:/java.base
    [0.039s][info   ][class,load] java.net.SocketImpl$$Lambda$1/0x0000000800b50840 source: java.net.SocketImpl
    [0.042s][info   ][class,load] sun.net.PlatformSocketImpl source: jrt:/java.base
    [0.042s][info   ][class,load] sun.nio.ch.NioSocketImpl source: jrt:/java.base
    [0.043s][info   ][class,load] sun.nio.ch.SocketDispatcher source: jrt:/java.base
    [0.044s][info   ][class,load] java.net.DelegatingSocketImpl source: jrt:/java.base
    [0.044s][info   ][class,load] java.net.SocksSocketImpl source: jrt:/java.base
    [0.044s][info   ][class,load] java.net.ServerSocket source: jrt:/java.base
    [0.045s][info   ][class,load] jdk.internal.access.JavaNetSocketAccess source: jrt:/java.base
    [0.045s][info   ][class,load] java.net.ServerSocket$1 source: jrt:/java.base
    

    上面输出的sun.nio.ch.NioSocketImpl就是新提供的实现。

    如果使用旧的实现也是可以的(指定参数jdk.net.usePlainSocketImpl):

    $ java -Djdk.net.usePlainSocketImpl -XX: TraceClassLoading JEP353  | grep Socket
    [0.037s][info   ][class,load] java.net.Socket source: jrt:/java.base
    [0.039s][info   ][class,load] java.net.SocketOptions source: jrt:/java.base
    [0.039s][info   ][class,load] java.net.SocketImpl source: jrt:/java.base
    [0.043s][info   ][class,load] java.net.SocketImpl$$Lambda$1/0x0000000800b50840 source: java.net.SocketImpl
    [0.046s][info   ][class,load] sun.net.PlatformSocketImpl source: jrt:/java.base
    [0.047s][info   ][class,load] java.net.AbstractPlainSocketImpl source: jrt:/java.base
    [0.047s][info   ][class,load] java.net.PlainSocketImpl source: jrt:/java.base
    [0.047s][info   ][class,load] java.net.AbstractPlainSocketImpl$1 source: jrt:/java.base
    [0.047s][info   ][class,load] sun.net.ext.ExtendedSocketOptions source: jrt:/java.base
    [0.047s][info   ][class,load] jdk.net.ExtendedSocketOptions source: jrt:/jdk.net
    [0.047s][info   ][class,load] java.net.SocketOption source: jrt:/java.base
    [0.047s][info   ][class,load] jdk.net.ExtendedSocketOptions$ExtSocketOption source: jrt:/jdk.net
    [0.047s][info   ][class,load] jdk.net.SocketFlow source: jrt:/jdk.net
    [0.047s][info   ][class,load] jdk.net.ExtendedSocketOptions$PlatformSocketOptions source: jrt:/jdk.net
    [0.047s][info   ][class,load] jdk.net.ExtendedSocketOptions$PlatformSocketOptions$1 source: jrt:/jdk.net
    [0.048s][info   ][class,load] jdk.net.LinuxSocketOptions source: jrt:/jdk.net
    [0.048s][info   ][class,load] jdk.net.LinuxSocketOptions$$Lambda$2/0x0000000800b51040 source: jdk.net.LinuxSocketOptions
    [0.049s][info   ][class,load] jdk.net.ExtendedSocketOptions$1 source: jrt:/jdk.net
    [0.049s][info   ][class,load] java.net.StandardSocketOptions source: jrt:/java.base
    [0.049s][info   ][class,load] java.net.StandardSocketOptions$StdSocketOption source: jrt:/java.base
    [0.051s][info   ][class,load] sun.net.ext.ExtendedSocketOptions$$Lambda$3/0x0000000800b51440 source: sun.net.ext.ExtendedSocketOptions
    [0.057s][info   ][class,load] java.net.DelegatingSocketImpl source: jrt:/java.base
    [0.057s][info   ][class,load] java.net.SocksSocketImpl source: jrt:/java.base
    [0.058s][info   ][class,load] java.net.ServerSocket source: jrt:/java.base
    [0.058s][info   ][class,load] jdk.internal.access.JavaNetSocketAccess source: jrt:/java.base
    [0.058s][info   ][class,load] java.net.ServerSocket$1 source: jrt:/java.base
    

    上面的结果中,旧的实现java.net.PlainSocketImpl被用到了。

    Switch Expressions (Preview)

    在JDK 12中引入了Switch表达式作为预览特性。JEP 354修改了这个特性,它引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使用yield, switch语句(不返回值)应该使用break。

    在以前,我们想要在switch中返回内容,还是比较麻烦的,一般语法如下:

    int i;
    switch (x) {
        case "1":
            i=1;
            break;
        case "2":
            i=2;
            break;
        default:
            i = x.length();
            break;
    }
    

    在JDK13中使用以下语法:

    int i = switch (x) {
        case "1" -> 1;
        case "2" -> 2;
        default -> {
            int len = args[1].length();
            yield len;
        }
    };
    

    或者

    int i = switch (x) {
        case "1": yield 1;
        case "2": yield 2;
        default: {
            int len = args[1].length();
            yield len;
        }
    };
    

    在这之后,switch中就多了一个关键字用于跳出switch块了,那就是yield,他用于返回一个值。和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块。

    Text Blocks (Preview)

    在JDK 12中引入了Raw String Literals特性,但在发布之前就放弃了。这个JEP在引入多行字符串文字(text block)在意义上是类似的。

    text block,文本块,是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

    我们以前从外部copy一段文本串到Java中,会被自动转义,如有一段以下字符串:

     <html>
      <body>
          <p>Hello, world</p>
      </body>
    </html>
    

    将其复制到Java的字符串中,会展示成以下内容:

    "<html>\n"  
    "    <body>\n"  
    "        <p>Hello, world</p>\n"  
    "    </body>\n"  
    "</html>\n";
    

    即被自动进行了转义,这样的字符串看起来不是很直观,在JDK 13中,就可以使用以下语法了:

    """
    <html>
      <body>
          <p>Hello, world</p>
      </body>
    </html>
    """;
    

    使用“”“作为文本块的开始符合结束符,在其中就可以放置多行的字符串,不需要进行任何转义。看起来就十分清爽了。

    如常见的SQL语句:

    String query = """
        SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
        WHERE `CITY` = 'INDIANAPOLIS'
        ORDER BY `EMP_ID`, `LAST_NAME`;
    """;
    

    看起来就比较直观,清爽了。

    总结

    以上,就是JDK13中包含的5个特性,能够改变开发者的编码风格的主要有Text Blocks和Switch Expressions两个新特性,但是这两个特性还处于预览阶段。

    而且,JDK13并不是LTS(长期支持)版本,如果你正在使用Java 8(LTS)或者Java 11(LTS),暂时可以不必升级到Java 13.

    参考资料:
    https://openjdk.java.net/projects/jdk/13/
    https://metebalci.com/blog/what-is-new-in-java-13/
    https://www.jianshu.com/p/890196bf529a

    在这里插入图片描述

    展开全文
  • 使用ES6新特性async await进行异步处理

    万次阅读 多人点赞 2018-07-12 15:56:30
    我们往往在项目中会遇到这样的业务需求,就是首先...那是相当恶心的,下面我就来讲一下如何使用ES6的新特性async await进行异步处理,使上述情况就好像写同步代码一样,首先我们先举个例子: 先写上json文件: cod...

    我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像有点callback的写法了,那是相当恶心的,下面我就来讲一下如何使用ES6的新特性async await进行异步处理,使上述情况就好像写同步代码一样,首先我们先举个例子:
    先写上json文件:
    code.json:

    {
        "code":0,
        "msg":"成功"
    }
    

    person.json:

    {
        "code":0,
        "list":[
            {
                "id":1,
                "name":"唐僧"
            },
            {
                "id":2,
                "name":"孙悟空"
            },
            {
                "id":3,
                "name":"猪八戒"
            },
            {
                "id":4,
                "name":"沙僧"
            }
        ]
    }
    

    比如我们有两个请求,如下,这里用的axios:

     function getCode(){
          return axios.get('json/code.json');
      }
     function getlist(params){
          return axios.get('json/person.json',{params})
      }
    

    我们第二个请求获取列表的时候需要使用第一个请求得到的code值,只有code值为0时,才能请求,而且当做参数传进去,那么我们看一下常规的做法吧

    function getFinal(){
    	  console.log("我是getFinal函数")
          getCode().then(function(res){
             if(res.data.code == 0){
                   console.log(res.data.code);
                     var params = {
                          code:res.data.code
                      }
                   getlist(params).then(function(res){
                        if(res.data.code == 0){
                             console.log(res.data.list);
                           }
                       })
                    }
              })
          }
      getFinal();
    

    看结果
    这里写图片描述
    虽然结果出来了,可是这种写法真的挺难受的,下面来一个async await的写法

    async function getResult(){
                console.log("我是getResult函数")
                let code = await getCode();
                console.log(code.data.code);
                if(code.data.code == 0){
                    var params = {
                        code:code.data.code
                    }
                    let list = await getlist(params);
                    console.log(list.data.list);
                }
            }
    getResult();
    

    下面看结果
    这里写图片描述
    当然还剩最后一点,处理异常,可以加上try catch

    async function getResult(){
                console.log("我是getResult函数")
                try{
    				let code = await getCode();
    	            console.log(code.data.code);
    	            if(code.data.code == 0){
    	                var params = {
    	                    code:code.data.code
    	                }
    	                let list = await getlist(params);
    	                console.log(list.data.list);
    	            }
    			}catch(err){
    				console.log(err);
    			}
            }
    getResult();
    

    个人认为做vue项目的时候,如果对于异常没有特殊处理,可以不加try catch,因为打印出来的错误跟vue自己报的错误是一样的,而且还是黑的字体,不如醒目的红色来的痛快啊!当然如果要对错误进行特殊处理,那么就加上吧

    代码风格是不是简便了许多,而且异步代码变成了同步代码,下面我稍微讲一下后者写法的代码执行顺序

    首先在 function 前面加 async 用来说明这个函数是一个异步函数,当然,async是要和await配合使用的,第一个请求

    let code = await getCode();
    

    await 意思是等一下,等着getCode()这个函数执行完毕,得到值后再赋值给code,然后再用code的值进行下一步操作,就是这么简单!!!赶紧去改代码!!

    展开全文
  • 面向过程编程和面向对象编程的步骤、特性与区别? ** 面向过程编程和面向对象编程的区别 ** 面向过程编程: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可。 优点...
  • 幅频特性和相频特性

    千次阅读 2021-03-20 22:00:13
    幅频特性和相频特性 G(jω)称为频率特性,A(ω)是输出信号的幅值与输入信号幅值之比,称为幅频特性。 Φ(ω)是输出信号的相角与输入信号的相角之差,称为相频特性。 相移角度随频率变化的特性叫相频特性。 由于放大...
  • Android 10正式版发布,看看都有哪些新特性

    万次阅读 多人点赞 2019-09-04 11:04:23
    根据Android官网的介绍,Android 10.0将聚焦于隐私可控、手机自定义与使用效率,此版本主要带来了十大新特性。 创新与新体验 可折叠 基于强大的多窗口支持,Android 10扩展了跨应用程序窗口的多任务处理,并在设...
  • 一、物理层 概述、 二、物理层 基本概念、 三、物理层 特性
  • Redis 6.0 新特性

    万次阅读 2020-05-09 15:22:44
    Redis 6.0.0 稳定版(GA)终于发布,这个版本提供了诸多令人心动的新特性及功能改进,比如新网络协议RESP3,新的集群代理,ACL等,其中关注度最高的应该是“多线程”了,带着众多疑问,我们来一起开始“Redis 6.0 新...
  • Postgresql特性及优化

    千人学习 2018-12-25 17:18:41
    postgresql功能特性原理及操作演示; 数据库优化相关内容;
  • 晶体三极管的输入特性和输出特性

    万次阅读 2019-06-25 23:15:54
    一,晶体管的共射输入特性 下图为输入特性曲线: 当UCE = 0时,相当于集电极与发射极短路,即发射结与集电结并联。因此,输入特性曲线与PN结的伏安特性类似,呈指数关系。 当UCE增大时,曲线将右移。 ...
  • 已知y=x , x取值范围为〔0,2〕,如何用matlab 画幅频特性曲线和相频特性曲线
  • JDK9新特性

    万人学习 2017-09-24 18:25:31
    跳票一年,jdk9终于在2017年9月21日发布,那么他有哪些新的特性呢? 1)jdk9的介绍 2)jdk9的新特性的整体罗列 3)jdk的新特性一一展示 ...... 带你一起领略jdk9的划时代之美,我们的目标是发现更好的自己。
  • enum Fruit { PEAR, APPLE, GRAPE, MANGO, ORANGE, PAPAYA; } @Test public void testSwitch2(){ int numberOfLetters; Fruit fruit = Fruit.APPLE;... numberOfLetters = switch(fruit) { ... throw new ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,676,197
精华内容 1,070,478
关键字:

特性