- 博客(67)
- 收藏
- 关注
原创 软件的结构
C/S (Client - Server 客户端-服务器端)典型应用:QQ软件 ,飞秋,印象笔记。特点:1)必须下载特定的客户端程序。2)服务器端升级,客户端升级。B/S (Broswer -Server 浏览器端- 服务器端)典型应用: 腾讯官方(www.qq.com) 163新闻网站(俗称:网站)特点:1)不需要安装特定的客户端(只需要安装浏览器即可!!)2)服务器端升级,浏览器不需要升级!!!!javaweb的程序就是b/s软件结构!!!...
2021-09-04 23:06:00
248
原创 抽象类和接口区别和联系
例题:在JDK1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?A、 抽象类中可以有普通成员变量,接口中没有普通成员变量。B、 抽象类和接口中都可以包含静态成员常量。C、 一个类可以实现多个接口,但只能继承一个抽象类D、 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。...
2021-08-31 23:09:39
413
原创 什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?
一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部
2021-08-31 22:47:29
3683
1
原创 synchronized关键字和volatile关键字比较:
1、volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JavaSE1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后执行效率有了显著提升,实际开发中使用 synchronized 关键字的场景还是更多一些。2、多线程访问volatile关键字不会发生阻塞,而synch
2021-08-31 21:57:10
398
原创 数据库的分类及常用的数据库
数据库分为:关系型数据库和非关系型数据库关系型:mysql 、oracle、 sqlserver等非关系型:redis,memcache,mogodb,hadoop等
2021-08-31 08:39:48
357
原创 MVC的各个部分都有那些技术来实现?
M(Model) 模型 javabeanV(View) 视图 html jsp volicity freemakerC(Control) 控制器 Servlet,Controller,ActionJsp+Servlet+javabean 最经典mvc模式,实际上就是model2的实现方式,就是把视图和逻辑隔离开来Model1的方式 jsp+service+daoModel2的方式 jsp+servlet+service+dao使用struts2和springmvc这样的mvc框架后,jsp+核
2021-08-31 08:39:12
1805
原创 虚拟机栈相关问题
1、举例栈溢出的情况?(StackOverflowError)通过 -Xss 设置栈的大小2、调整栈大小,就能保证不出现溢出么?不能保证不溢出3、分配的栈内存越大越好么?不是,一定程度减少了内存溢出的概率,但是会挤占其它的线程空间,因为整个虚拟机的内存空间是有限的,会出现OOM4、垃圾回收是否涉及到虚拟机栈?不会。Java虚拟机栈只有入栈和出栈,销毁就是出栈5、方法中定义的局部变量是否线程安全?何为线程安全?(1)如果只有一个线程才可以操作此数据,则必是线程安全的。(2)如果有多个线程
2021-08-30 22:17:28
176
原创 Java Static静态代码块
public class Test{ static int cnt = 6; static{ cnt += 9; } public static void main(String[] args){ System.out.println(“cnt =” + cnt); } static{ cnt /=3; };}cnt的值是 AA、cnt=5B、cnt=2C、cnt=3D、cnt=6静态初始化块,静态变量这两个是属
2021-08-30 20:04:59
402
原创 双亲委派机制
双亲委派机制执行的流程:自低而上检查类是否已经加载,首先是CumtomClassLoader自定义类加载器有没有曾经加载过Student.class这个类,如果加载过直接返回,如果没有加载过就委派给他的Parent就是AppClassLoader,看他有没有加载过这个类,如果也没有那么AppClassLoader又会委派给ExtensionClassLoader,如果也没有就委派给最顶层的Bootstrap ClassLoader, 如果之前也没有加载过,那么Bootstrap ClassLoade
2021-08-30 20:00:51
197
原创 设计模式--单例模式
什么是设计模式?设计模式是对已有问题固定的解决方法的总结。单例模式: (单例:单个实例)单例模式保证只有一个实例,就要保证外界不能随便的new这个对象,所以要私有化构造方法。私有化构造方法后就是把new这个对象控制权收回了,只能在类内部去实例化这个对象,让类自身负责保存他的唯一实例。保证类仅有一个实例最好的办法就是,让类自身负责保存他的唯一实例。应用场景:任务管理器,回收站,网站计数器,应用程序的日志应用//从时间空间上看:以空间换时间 //从线程安全上看:安全的//所以又叫“饿汉式”(还
2021-08-29 17:13:43
119
原创 值传递与引用传递 --------- 错题分析
//given the following code,what will be the output? Aclass Value{ public int i=15;}public class Test{ public static void main(String argv[]){ Test t=new Test( ); t.first( ); } public void first( ){ int i=5;//局部变量i
2021-08-28 11:01:26
181
原创 使用泛型的好处
使用泛型的好处1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的
2021-08-27 17:00:14
286
原创 Java中的关键字有哪些?
答:1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、stri
2021-08-27 00:29:50
4022
原创 事务四个基本特征或 ACID 特性
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有A
2021-08-26 23:22:13
137
原创 关于sql和MySQL的语句执行顺序
今天做了一道面试题,问的是sql和MySql语句的执行顺序那么先放上Sql语句执行顺序:from 、 join 、 on 、where、 group by(开始使用select中的别名,后面的语句中都可以使用) 、 avg,sum… 、 having 、 select 、 distinct 、 order by 、 limit那么再放上MySql语句的执行顺序:开始->FROM子句->WHERE子句->GROUP BY子句-&
2021-08-26 23:02:26
185
原创 jsp有哪些内置对象?作用分别是什么?
9个内置的对象: (能把最主要的答出来就可以)request 用户端请求,此请求会包含来自GET/POST请求的参数response 网页传回用户端的回应pageContext 网页的属性是在这里管理session 与请求有关的会话期application servlet正在执行的内容out 用来传送回应的输出config servlet的构架部件page JSP网页本身exception 针对错误网页,未捕捉的例外四大作用域:pageContext request session ap
2021-08-26 22:35:44
155
原创 Servlet API中forward() 与redirect()的区别?
1、forward是服务器端的转向而redirect是客户端的跳转。2、使用forward浏览器的地址不会发生改变。而redirect会发生改变,因为重定向是有两次请求,最终显示的是第二次请求的地址。3、Forward是一次请求中完成。而redirect是重新发起请求。4、Forward是在服务器端完成,而不用客户端重新发起请求,效率较高。...
2021-08-25 23:24:38
238
原创 简单说一下servlet的生命周期?
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。加载Servlet的class---->实例化Servlet----->调用Servlet的init完成初始化---->响应请求(Servlet的service方法)----->Servlet容器关闭时(Servlet的destory方法)LifeServlet.LifeServlet()
2021-08-25 23:06:02
269
原创 说一下你对servlet的理解?或者servlet是什么?
静态网页:1、无论谁看内容都是一样的。2、百度百科、新闻、login.html登陆界面。3、服务器直接保存html,直接返回html即可。动态网页:1、不同的人看到的内容是有差异的。2、微博、登陆思途管理系统看到的内容。3、服务器保存一个组件,动态的给每个用户拼接一个网页。4、这个组件就是servlet。Servlet(Server Applet),全称Java Servlet, 是用Java编写的服务器端程序。而这些Sevlet都要实现Servlet这个接口。其主要功能在于交互式地浏览和
2021-08-25 22:50:14
183
原创 Java用递归法和循环实现二分法查找
public class BinarySearch { public static void main(String[] args) { int arr[] = {1,2,3,4,5,6,7,8,9}; int target = 5; int index = binSearch(arr,target); System.out.println(index); int low = 0; int high =
2021-08-25 22:29:31
185
原创 简单的了解一下线程并发库
JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制.Java通过Executors提供四个静态方法创建四种线程池,分别为:1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。2、newFixedThreadPool 创建
2021-08-25 22:24:38
187
1
原创 在开发中使用泛型取代非泛型的数据类型(比如用ArrayList<String>取代ArrayList),程序的运行时性能会变得更好?
使用泛型的好处1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的
2021-08-25 20:37:34
1525
原创 线程池的作用? 数据库连接池?
1、限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃2、线程池不需要每次都去创建或销毁,节约了资源、3、线程池不需要每次都去创建,响应时间更快。我们详细的解释一下为什么要使用线程池?在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换
2021-08-25 11:48:20
425
转载 java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
答:1、有两种实现方法,分别是继承Thread类与实现Runnable接口继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了。2、用synchronized关键字修饰同步方法3、反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此
2021-08-24 23:35:21
99
原创 讲一下HashMap哈HashTable的区别?HashTable和ConcurrentHashMap的区别?
相同点:HashMap和HasheTable都可以使用来存储key–value的数据。区别:1、HashMap是可以把null作为key或者value的,而HashTable是不可以的。2、HashMap是线程不安全的,效率较高。而HashTable是线程安全的,效率较低。?我想线程安全但是我又想效率高?通过把整个Map分为N个Segment(类似HashTable),操作前面的不影响后面的使用,可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。...
2021-08-24 10:30:08
203
原创 ArrayList和LinkedList的区别?
ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删
2021-08-24 10:25:53
438
原创 String、StringBuffer、StringBuilder
异同点:相同点:都是final类,都不能被继承。不同点:1、String长度是不可改变的,StringBuffer、StringBuilder长度是可变的。2、StringBuffer是线程安全(需要加锁,效率低)、StringBuilder是线程不安全(没有加锁,效率高)。...
2021-08-23 22:18:48
77
原创 说一下“==“和equals方法究竟有什么区别?
==用来判断两个变量之间的的值是否相等。变量就可以分为: 基本数据类型变量,引用类型。如果是基本数据类型的变量直接比较值而引用类型要比较对应的引用指向的内存的首地址。equals可以用来比较字符串的内容是不是相等。equals 用来比较两个对象长得是否一样。判断两个对象的某些特征是否一样。实际上就是调用对象的equals方法进行比较。...
2021-08-23 22:17:57
282
原创 装箱和拆箱
装箱:把基本的数据类型转换成对应的包装类型.Integer .valueOf(1)Integer i = 1;自动装箱,实际上在编译时会调用Integer .valueOf方法来装箱拆箱:就是把包装类型转换为基本数据类型.基本数据类型 名称 = 对应的包装类型。Integer i = 1;int j = i;//自动拆箱//int j = i.intValue();手动拆箱自动拆箱:实际上会在编译调用intValueJava是一个面向对象的语言,而基本的数据类型,不具备面向对象的特性。..
2021-08-23 22:17:12
54
原创 简单讲一下java的跨平台原理
由于各操作系统(windows,liunx等)支持的指令集,不是完全一致的。就会让我们的程序在不同的操作系统上要执行不同程序代码。Java开发了适用于不同操作系统及位数的java虚拟机来屏蔽个系统之间的差异,提供统一的接口。对于我们java开发者而言,你只需要在不同的系统上安装对应的不同java虚拟机、这时你的java程序只要遵循java规范,就可以在所有的操作系统上面运行java程序了。...
2021-08-23 22:16:05
162
原创 什么是IO流?
什么是IO?顾名思义,I就是input,O就是output。 那么IO知道了,那什么是流呢?流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类:1、 根据处理的数据类型不同可以分为:字符流和字节流。2、根据数据的流向不同可以分为:输入流和输出流。什么情况下使用字符流:如果读写的都是字符数据,这时候我们就使用字符流。文本文件。什么情况使用字节
2021-08-23 20:35:30
725
原创 原码,反码,补码?
今日做了这么一个题,正好来回顾一下原码,反码,补码的概念下面代码输出结果是? int i = 5;int j = 10;System.out.println(i + ~j);这个题的答案是 -6.若是对原码反码补码的概念已经很清楚了,可以直接跳到下面的解析上去。那么下面我就先来说一下原码,反码,补码之间的关系:1、10001的补码是取反后在再加1,也就是11110+1=11111;2、如果是11111变回原码呢?我们可以采取逆过程先减1,11111-1=11110,再取反变为10001
2021-08-21 14:17:56
1831
原创 线程安全概念
线程安全概念:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。LinkedList 和 ArrayList 都是不同步的,线程不安全;Vector 和 St
2021-08-21 11:50:39
160
原创 EL,Jstl
EL/JSTL目的就是去掉JSP中的java代码,都是以标签的形式表示,以标签的形式美工或者前端都可以修改,利于团队的合作。这套标签和java语言无关。JSP核心语法:JSP表达式<%=%> JSP脚本<%%>JSP开发的原则:尽量在JSP页面少写甚至不写java代码,Java代码放在Servlet。使用EL表达式来代替JSP表达式EL表达式的作用:向浏览器输出域对象(只能输出域对象)的变量或者表达式计算的结果。语法:${变量或表达式} ${list}JSP表达式&
2021-08-21 11:36:48
105
原创 什么是ajax?
Ajax: asynchronous javascript and xml (异步js和xml)其是可以与服务器进行(异步/同步)交互的技术之一。ajax的语言载体是javascript。最大特点:异步请求,不刷新整个页面,只刷新局部也叫局部刷新。什么是同步,什么是异步同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死易懂的理解:异步请求:你传输吧,我去做我
2021-08-20 11:09:57
118
原创 JSON数据格式
JSON数据格式(重要)JavaScript Object Notation缩写定义:是一种轻量级的数据交换格式特点:1、易于程序员阅读和编写。2、易于计算机解析和生成。3、其实是javascript的子集:原生javascript支持JSON<script type="text/javascript"> var student = { name:'gao', age: 23, print : function() {
2021-08-20 11:04:06
17130
原创 jQuery对象与dom对象的区别与相互转换
什么是jQuery对象?就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的,其可以使用jQuery里的方法。例如:$("#apple").html() 意思是指:获取id为apple的元素内的html代码。其中html()是jQuery里的方法这段代码等同于用DOM实现代码:document.getElementById("id").innerHTML;虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也
2021-08-18 20:12:55
188
原创 java classloader
JDK中提供了三个ClassLoader,根据层级从高到低为:Bootstrap ClassLoader,主要加载JVM自身工作需要的类。Extension ClassLoader,主要加载%JAVA_HOME%\lib\ext目录下的库类。Application ClassLoader,主要加载Classpath指定的库类,一般情况下这是程序中的默认类加载器,也是ClassLoader.getSystemClassLoader() 的返回值。(这里的Classpath默认指的是环境变量中配置的Cla
2021-08-18 09:07:35
289
原创 运算符&与&&,|与||的区别、进制转换
运算符&与&&,|与||的区别&和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型&与| 既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型区别:if (A && B) 如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。if (A & B) 如果 A 为
2021-08-17 08:59:59
1285
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人