java编程
文章平均质量分 69
学长是个程序员
这个作者很懒,什么都没留下…
展开
-
面试攻略,Java 基础面试 100 问(十八)
这样使得只有在连接真正有读写事件发生时,才会调用 函数来进行读写,就大大地减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护 多个线程,并且避免了多线程之间的上下文切换导致的开销。NIO 的非阻塞模式, 使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可 用时,就什么都不会获取。只不过 Stream 是单向的,譬如:InputStream, OutputStream,而 Channel 是双向 的,既可以用来进行读操作,又可以用来进行写操作。原创 2023-08-17 14:50:48 · 73 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十七)
另外多路复用 IO 为何比非阻塞 IO 模型的效率高是因为在非阻塞 IO 中,不断地询问 socket 状态 时通过用户线程去进行的,而在多路复用 IO 中,轮询每个 socket 状态是内核在进行的,这个效 率要比用户线程要高的多。在信号驱动 IO 模型中,当用户线程发起一个 IO 请求操作,会给对应的 socket 注册一个信号函 数,然后用户线程会继续执行,当内核数据就绪时会发送一个信号给用户线程,用户线程接收到 信号之后,便在信号函数中调用 IO 读写操作来进行实际的 IO 请求操作。原创 2023-08-16 14:35:16 · 58 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十六)
简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。什么情况下需要序列化a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;原创 2023-08-16 14:34:35 · 55 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十五)
在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类。在运行时构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象的方法。反射机制的优缺点优点:能够运行时动态获取类的实例,提高灵活性;与动态编译结合Class.forName('com.mysql.jdbc.Driver.class');原创 2023-08-15 11:46:48 · 130 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十四)
一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出(throw)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理;throws 用来标明一个成员函数可能抛出的各种“异常”;如果下一级的 try 语句没有对某种“异常”进行处理,栈就会展开,直到遇到有处理这种“异常”的 try 语句。异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。原创 2023-08-15 11:46:36 · 130 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十三)
不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。Java 允许在 finally 中改变返回值的做法是不好的,因为如果存在 finally 代码块,try 中的 return 语句不会立马返回调用者,而是记录下返回值待 finally 代码块执行完毕之后再向调用者返回其值,然后如果在 finally 中修改了返回值,这会对程序造成很大的困扰,C#中就从语法上规定不能做这样的事。原创 2023-08-14 16:45:23 · 88 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十二)
利用 java.text.DataFormat 的子类(如 SimpleDateFormat 类)中的 forma t(Date)方法可将日期格式化。原创 2023-08-14 16:45:08 · 104 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十一)
抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是 private、默认、protected、public 的,而接口中的成员全都是 public 的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。原创 2023-08-13 13:23:00 · 101 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(十)
String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。StringBuffer:线程安全,StringBuilder:线程不安全。原创 2023-08-13 13:22:40 · 89 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(九)
char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个 char 类型占 2 个字节(16bit),所以放一个中文是没问题的。不对,如果两个对象 x 和 y 满足 x.equals(y) == true,它们的哈希码(hash code)应当相同。补充:继承 String 本身就是一个错误的行为,对 String 类型最好的重用方式是关联(HAS-A)而不是继承(IS-A)。原创 2023-08-12 15:20:11 · 121 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(八)
逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是 true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。补充:我们为编写的类重写 hashCode 方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择 31 这个数?注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。原创 2023-08-12 15:19:57 · 267 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(七)
可以正确编译,因为 s1+= 1;简单的说,如果字面量的值在-128 到 127 之间,那么不会 new 新的 Integer对象,而是直接引用常量池中的 Integer 对象,所以上面的面试题中 f1==f2 的结果是 true,而 f3==f4 的结果是 false。包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double。原始类型: boolean,char,byte,short,int,long,float,double。原创 2023-08-11 09:38:28 · 67 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(六)
JVM 看到的只是 List,而由泛型附加的类型信息对 JVM 来说是不可见的。样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉。类型擦除的基本过程也比较简单,首先是找到用来替换类型参数的具体类。这些类被称为参数化的类或参数化的类型。原创 2023-08-11 09:38:13 · 78 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(五)
除了在持久化对象时会用到对象序列化之外,当使用 RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。使用 Java 对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装。必须注意地是,对象序列化保存的是对象的”状态”,即它的成员变量。等,希望对该密码字段在序列化时,进行加密,而客户端如果拥有解密的密钥,只有在。原创 2023-08-10 09:27:49 · 72 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(四)
按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。注意:基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过泛型限定,可以检查出要克隆的对象是否支持序列化,这项检查是编译器完成的,不是在运行时抛出异常,这种是方案明显优于使用 Object 类的 clone 方法克隆对象。被传递到方法中时,参数的值就是对该对象的引用。Java对对象采用的不是引用调用,实际上,对象引用是按值传递的。原创 2023-08-10 09:27:38 · 61 阅读 · 0 评论 -
面试攻略,Java 基础面试 100 问(三)
静态变量是被 static 修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;类推性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”;一致性:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”;二者均是Object类里的方法。原创 2023-08-09 16:56:16 · 83 阅读 · 0 评论 -
Java的特性详解-抽象
抽象就是从多个事物中将共性的,本质的内容抽象出来。原创 2023-07-08 14:38:15 · 139 阅读 · 0 评论 -
Java的特性详解-多态
对象在不同时刻表现出来的不同状态。原创 2023-07-08 14:37:48 · 36 阅读 · 0 评论 -
Java的特性详解-封装
封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。原创 2023-07-07 14:28:54 · 64 阅读 · 0 评论 -
Java的特性详解-继承
继承的定义继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。关键字(extends)让类与类之间产生继承关系。原创 2023-07-06 14:57:09 · 96 阅读 · 0 评论 -
Java 基本数据类型 - 四类八种
如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。由上可以看出 byte、short 的取值范围比较小,而long的取值范围时最大的,所以占用的空间也是最多的。通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 "F"。原创 2023-07-07 14:26:40 · 2370 阅读 · 0 评论 -
Spring 常考问题整理(四)
对于类A和类B都是通过构造器注入的情况,可以在A或者B的构造函数的形参上加个@Lazy注解实现延迟加载。在注入依赖时,类A并没有完全的初始化完,实际上注入的是一个类B的代理对象,只有当类A首次被使用的时候才会被完全的初始化。声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明或通过@Transactional注解的方式后者 AOP切面的方式,便可以将事务规则应用到业务逻辑中,减少业务代码的污染。参数可以控制 bean 自动装配的方式。原创 2023-07-06 14:54:30 · 41 阅读 · 0 评论 -
Spring 常考问题整理(三)
但是有一些 bean 是无状态的,(不同的线程不会对这个bean 进行查询以外的操作,即不会存在说修改属性等)那么这个单例的 bean 就是线程安全的,比如 Conroller 类, Service 和 DAO;把 spring 的 bean 作用域改为 prototype 后,就是单个线程操作一个 bean ,所以又不会出现线程安全问题;spring 中的 bean 的默认作用域是 singleton,所以多个线程抢占同一个 bean 的使用权,肯定会出问题的;原创 2023-07-05 09:58:24 · 39 阅读 · 0 评论 -
Spring 常考问题整理(二)
BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。注意:定义切点时候,还可以通过自定义注解的方式,此时切点会找到使用自定义注解标注的连接点,然后进行切面的织入。原创 2023-07-05 09:55:25 · 36 阅读 · 0 评论 -
Spring 常考问题整理(一)
前几天面了一个小厂,被深入了问框架原理和执行流程,场面极其尴尬,被面试官吊着锤,怎么说呢?很多知识自己记忆的比较碎片化,也没能经得住深入的考察。Spring是一个开源的轻量级、侵入性小、松散耦合的开发框架,能够与多种框架进行集成,并进行不同的操作,可以称之为框架的框架。赶紧补补课,整理了一下常见的考点,但是这毕竟还是不够深入,有时间我会慢慢的深入源码多看看,深入dubug一下,然后再来总结。原创 2023-06-30 16:01:36 · 71 阅读 · 1 评论