网站模板怎么修改,怎么做网站赚钱吗,会刊彩页设计,网站开发网络结构图日常总结大杂烩#xff1a;一。 取出特定行数的数据1. select* from 表名 limit m,n;
2. select * from 表名 limit [offset,] rows;1. m代表从m1条记录行开始检索#xff0c;n代表取出n条数据。#xff08;m可设为0#xff09;如#xff1a;select * from表名 limit 6,5…日常总结大杂烩一。 取出特定行数的数据1. select* from 表名 limit m,n;
2. select * from 表名 limit [offset,] rows;1. m代表从m1条记录行开始检索n代表取出n条数据。m可设为0如select * from表名 limit 6,5;表示从第7条记录行开始算取出5条数据 2.值得注意的是n可以被设置为-1当n为-1时表示从m1行开始检索直到取出最后一条数据。如SELECT * FROM 表名 limit 6,-1;表示取出第6条记录行以后的所有数据。 3.若只给出m则表示从第1条记录行开始算一共取出m条如SELECT * FROM 表名 limit 6;表示取出前6条记录行。二。 ArrayList list new ArrayList(20);中的list扩充几次
A 0 B 1 C 2 D 3
答案A
ArrayList动态扩容机制初始化有三种方式1. 默认的构造器将会以默认的大小来初始化内部的数组public ArrayList();2. 用一个ICollection对象来构造并将该集合的元素添加到ArrayList public ArrayList(Collection? extends E c)3. 用指定的大小来初始化内部的数组 public ArrayList(int initialCapacity) 这里我们来重点关注一下无参数构造器的实现过程ArrayList listnew ArrayList(); 这种是默认创建大小为10的数组每次扩容大小为1.5倍 10*1.515ArrayList listnew ArrayList(20); 这种是指定数组大小的创建创建时直接分配其大小没有扩充。 所以扩充为0次链接https://www.nowcoder.com/questionTerminal/85bf28c36fa14484b950f07d269dcd49来源牛客网本题需要注意的是调用的是带参的构造方法。 另外也要注意 1、如果不指定容量而初始大小为10动态增长时增长到当前容量的1.5倍。 2、与之类似的还有HashMap的初始大小为16增长时直接容量翻倍*2如源代码。 123456789void addEntry(int hash, K key, V value, int bucketIndex) { if ((size threshold) (null ! table[bucketIndex])) { resize(2 * table.length); hash (null ! key) ? hash(key) : 0; bucketIndex indexFor(hash, table.length); } createEntry(hash, key, value, bucketIndex);}3、Vector的初始大小为10如果没有指定每次增长的大小则默认是翻倍增长。4.补充:hashtable是2倍1concurrenthashmap也是2倍三。List listnew ArrayList()怎么理解 List是接口ArrayList是List的实现类。至于为什么是写成List list new ArrayList()而不是ArrayList arrayList new ArrayList()有如下的原因 1 接口有什么好处这种定义方式就有什么好处当然你可以用 ArrayList list new ArrayList()但是一般不这么用 2 设计模式中有对依赖倒置原则。程序要尽量依赖于抽象不依赖于具体。从Java语法上这种方式是使用接口引用指向具体实现。比如你若希望用LinkedList的实现来替代ArrayList的话只需改动一行即可List list new LinkedList()而程序中的其它部分不需要改动这样比较灵活这个如果你想把存储结构该为LinkedList的时候只要把List listnew ArrayList改为List listnew LinkedList而其他的所有的都不需要改动。这也是一种很好的设计模式.一个接口有多种实现,当你想换一种实现方式时,你需要做的改动很小. 3 面向接口编程 4 提高程序宽展性,以后修改维护好些总结一下ArrayList不是继承List接口是实现了List接口。你写成ArrayList arrayList new ArrayList();这样不会有任何问题。和List list new ArrayList();相比这2个写是有区别的。 arrayList是一个ArrayList对象它可以使用ArrayList的所有方法。包括list接口中没有定义的方法 List是接口它是不可以被实例化的接口是个抽象类所以必须以它的实现类去实例化它。list对象虽然也是被实例化为ArrayList但是它实际是List对象list只能使用ArrayList中已经实现了的List接口中的方法ArrayList中那些自己的、没有在List接口定义的方法是不可以被访问到的。 我们说用接口去做是有它的好处的如果你把类型定义成ArrayList(也就是一个具体的实现类)那么你就只能接收这一种类型的数据了如果你要是定义为List那么你不仅可以接收ArrayList的对象还可以接收LinkedList的对象这样你的程序就灵活了参考https://blog.csdn.net/llayjun/article/details/46812151四。 下列说法正确的是A.一个文件里可以同时存在两个public修饰的类B.构造函数可以被重写overrideC.子类不能访问父类非public和protected修饰的属性D.final修饰的类可以被继承答案C 一个Java源文件中最多只能有一个public类当有一个public类时源文件名必须与之一致否则无法编译如果源文件中没有一个public类则文件名与类中没有一致性要求。至于main()不是必须要放在public类中才能运行程序。 重写是子类继承父类后对父类的方法进行修改。方法名参数返回值必须一样。 不能重写被标示为final的方法。如果不能继承一个方法则不能重写这个方法。扩展重写override重载overload的区别 java的方法重载 就是在类中可以创建多个方法它们具有相同的名字但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,而且返回值类型可以相同也可以不相同这也是面向对象的多态性。 java的方法重写 父类与子类之间的多态性对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数我们说该方法被重写 (Overriding)。在Java中子类可继承父类中的方法而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法而是想作一定的修改这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表则新方法将覆盖原有的方法。如需父类中原有的方法可使用super关键字该关键字引用了当前类的父类。 子类函数的访问修饰权限不能少于父类的 重写方法只能存在于具有继承关系中重写方法只能重写父类非私有的方法。五。 关于 JAVA 堆,下面说法错误的是( )A.所有类的实例和数组都是在堆上分配内存的 B.对象所占的堆内存是由自动内存管理系统回收C.堆内存由存活和死亡的对象空闲碎片区组成 D.数组是分配在栈中的答案D 首先数组是分配在堆中的故D的说法不正确。 Java堆的结构JVM的堆是运行时数据区所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些对象回收掉之前他们会一直占据堆内存空间。六。 在使用super 和this关键字时以下描述正确的是A.在子类构造方法中使用super显示调用父类的构造方法 super必须写在子类构造方法的第一行否则编译不通过B.super和this不一定要放在构造方法内第一行C.this和super可以同时出现在一个构造函数中D.this和super可以在static环境中使用包括static方法和static语句块答案A Java关键字this只能用于方法方法体内。当一个对象创建后Java虚拟机JVM就会给这个对象分配一个引用自身的指针这个指针的名字就是this。因此this只能在类中的非静态方法中使用静态方法和静态的代码块中绝对不能出现this。 super关键字和this作用类似是被屏蔽的成员变量或者成员方法或变为可见或者说用来引用被屏蔽的成员变量和成员成员方法。 不过super是用在子类中目的是访问直接父类中被屏蔽的成员注意是直接父类就是类之上最近的超类七。 下列语句哪一个正确AJava程序经编译后会产生machine codeBJava程序经编译后会产生byte codeCJava程序经编译后会产生DLLD以上都不正确答案B Java字节码是Java源文件编译产生的中间文件 java虚拟机是可运行java字节码的假想计算机 java的跨平台性也是相对与其他编程语言而言的 。 先介绍一下c语言的编译过程c的文件经过C编译程序编译后生成windows可执行文件exe文件然后在windows中执行。 再介绍java的编译过程java的文件由java编译程序将java字节码文件class文件在java虚拟机中执行。机器码是由CPU来执行的Java编译后是字节码。 电脑只能运行机器码。Java在运行的时候把字节码变成机器码。C/C在编译的时候直接编译成机器码 八。 下列哪一种叙述是正确的Aabstract修饰符可修饰字段、方法和类B抽象方法的body部分必须用一对大括号{ }包住C声明抽象方法大括号可有可无D声明抽象方法不可写出大括号答案D abstract修饰符用来修饰类和成员方法 用abstract修饰的类表示抽象类抽象类位于继承树的抽象层抽象类不能被实例化。 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能但不提供具体的实现。 Abstract是Java中的一个重要关键字可以用来修饰一个类或者一个方法。 修饰一个方法时表示该方法只有特征签名signature没有具体实现而是把具体实现留给继承该类的子类所以不能有大括号。九。 下列说法正确的有Aclass中的constructor不可省略Bconstructor必须与class同名但方法不能与class同名Cconstructor在一个对象被new时执行D一个class只能定义一个constructor答案C 这里可能会有误区其实普通的类方法是可以和类名同名的和构造方法唯一的区分就是构造方法没有返回值。 十。 GC线程是否为守护线程答案是 线程分为守护线程和非守护线程即用户线程。 只要当前JVM实例中尚存在任何一个非守护线程没有结束守护线程就全部工作只有当最后一个非守护线程结束时守护线程随着JVM一同结束工作。 守护线程最典型的应用就是 GC (垃圾回收器)十一。 关于sleep()和wait()以下描述错误的一项是
A. sleep是线程类Thread的方法wait是Object类的方法
B. sleep不释放对象锁wait放弃对象锁
C. sleep暂停线程、但监控状态仍然保持结束后会自动恢复
D. wait后进入等待锁定池只有针对此对象发出notify方法后获得对象锁进入运行状态。
答案Dsleep是线程类Thread的方法导致此线程暂停执行指定时间给执行机会给其他线程但是监控状态依然保持到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法对此对象调用wait方法导致本线程放弃对象锁进入等待此对象的等待锁定池只有针对此对象发出notify方法或notifyAll后本线程才进入对象锁定池准备获得对象锁进入运行状态。十二。
方法resume()负责恢复哪些线程的执行
A通过调用stop()方法而停止的线程。
B通过调用sleep()方法而停止的线程。
C通过调用wait()方法而停止的线程。
D通过调用suspend()方法而停止的线程。
答案Dsuspend可以挂起一个线程就是把这个线程暂停了它占着资源但不运行用resume是恢复挂起的线程让这个线程继续执行下去。十三。 Hashtable和HashMap的异同
同都使用哈希表来存储键值对在数据结构上基本相同都创建了一个继承自Map.Entry的私有内部类Entry每一个Entry对象表示存储在哈希表中的一个键值对。
1. Hashtable是同步的线程安全的就是一些公开的方法比如get使用了synchronized描述符而遍历视图比如keySet使用了Collection.synchronizedSet进行同步包装而HashMap不是同步的线程不安全
2. Hashtable不支持nullkey和nullvalue它会抛出异常而HashMap支持因为HashMap在实现的时候将null的hashCode值定为0从而将其存放在哈希表的第0个bucket中
3. 、Hashtable已经被淘汰了尽量少用不需要线程安全就用HashMap需要就用ConcurrentHashMap。
4.Hashtable产生于JDK1.1而HashMap产生于JDK1.2HashMap比Hashtable出现的晚一点
5. HashMap继承自抽象类AbstractMap而Hashtable继承自抽象类Dictionary而Dictionary类是一个已经废弃的类十四。 并发操作会带来哪些数据不一致性
A不可修改、不可重复读、脏读、死锁
B丢失修改、脏读、死锁
C不可重复读、脏读、死锁
D 丢失修改、不可重复读、脏读脏读就是指当一个事务对数据进行了修改但还没有提交到数据库时另一个事务访问并使用了这个数据。不可重复读在一个事务内两次读数据之间第二个事务访问该数据并进行了修改。丢失修改两个事务读入同一数据并修改T2提交的结果破坏了T1提交的结果。例如T1读A修改为A-1T2也读A修改为A-1实际上应该是读A-1修改为A-2幻影读同一事务在两个不同的时间段执行相同的查询条件得到的结果不一致。注意区分不可重复读的重点是修改 : 同样的条件 , 你读取过的数据 , 再次读取出来发现值不一样了 幻读的重点在于新增或者删除 同样的条件 , 第 1 次和第 2 次读出来的记录数不一样。十五。下列的原始类型在使用流时可以互换。A.byte和boolean B.char和intC.byte和charD.String和char
正确答案BB。【解析】本题考查Java语言中字节类型的概念。在Java语言中byte是字节类型用1字节表示boolean是布尔类型用true和false表示它们的表示方法并不一样也不提供它们之间的转换选项A错误。Java内部用整数来表示char通常可以在方法调用和其他语句中互换使用char和int选项B正确。char用2字节表示byte字节类型用1字节表示Java内部也不允许互换使用它们选项C错误。String在Java语言中是一个类它提供对字符串的一系列操作而char是Java语言中的一个基本类型它不是一个类两者有本质的区别故而它们是不能互换使用的选项D错误。需要注意的是在Java语言中提供的类都是以大写字母开头基本类型都用小写字母表示。