网站建设价格就要用兴田德润,二维码生成器网站源码,深圳中高风险地区,网站建设平台计划书1、servlet执行流程客户端发出http请求#xff0c;web服务器将请求转发到servlet容器#xff0c;servlet容器解析url并根据web.xml找到相对应的servlet#xff0c;并将request、response对象传递给找到的servlet#xff0c;servlet根据request就可以知道是谁发出的请求web服务器将请求转发到servlet容器servlet容器解析url并根据web.xml找到相对应的servlet并将request、response对象传递给找到的servletservlet根据request就可以知道是谁发出的请求请求信息及其他信息当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。2、springMVC的执行流程springMVC是由dispatchservlet为核心的分层控制框架。首先客户端发出一个请求web服务器解析请求url并去匹配dispatchservlet的映射url如果匹配上就将这个请求放入到dispatchservletdispatchservlet根据mapping映射配置去寻找相对应的handel然后把处理权交给找到的handelhandel封装了处理业务逻辑的代码当handel处理完后会返回一个逻辑视图modelandview给dispatchservlet此时的modelandview是一个逻辑视图不是一个正式视图所以dispatchservlet会通过viewresource视图资源去解析modelandview然后将解析后的参数放到view中返回到客户端并展现。3、给定一个txt文件如何得到某字符串出现的次数File file new File(E://test.txt);InputStream is new FileInputStream(file);byte b[] new byte[1024];int a is.read(b);String str[] new String(b,0,a).split();int count 0;for(int i 0;iif(a.equals(str[i]))count;}System.out.println(count);4、Java设计模式思想(单列模式工厂模式策略模式共23种设计模式)a) 单例模式单例模式核心只需要new一个实例对象的模式比如数据库连接在线人数等一些网站上看到的在线人数统计就是通过单例模式实现的把一个计时器存放在数据库或者内存中当有人登陆的时候取出来加一再放回去有人退出登陆的时候取出来减一再放回去但是当有两个人同时登陆的时候会同时取出计数器同时加一同时放回去这样的话数据就会错误所以需要一个全局变量的对象给全部人使用只需要new出一个实例对象这就是单例模式的应用并且单例模式节省资源因为它控制了实例对象的个数并有利于gc回收。b) 策略模式就是将几个类中公共的方法提取到一个新的类中从而使扩展更容易保证代码的可移植性可维护性强。比如有个需求是写鸭子对象鸭子有叫飞外形这三种方法如果每个鸭子类都写这三个方法会出现代码的冗余这时候我们可以把鸭子中的叫飞外形这三个方法提取出来放到鸭父类中让每个鸭子都继承这个鸭父类重写这三个方法这样封装的代码可移植性强当用户提出新的需求比如鸭子会游泳那么对于我们oo程序员来讲就非常简单了我们只需要在鸭父类中加一个游泳的方法让会游泳的鸭子重写游泳方法就可以了。c) 工厂模式简单的工厂模式主要是统一提供实例对象的引用通过工厂模式接口获取实例对象的引用。比如一个登陆功能后端有三个类controller类interface类实现接口的实现类。当客户端发出一个请求当请求传到controller类中时controller获取接口的引用对象而实现接口的实现类中封装好了登陆的业务逻辑代码。当你需要加一个注册需求的时候只需要在接口类中加一个注册方法实现类中实现方法controller获取接口的引用对象即可不需要改动原来的代码这种做法是的可拓展性强。5、冒泡排序、二分查找a) 冒泡public static void mp(int a[]) {int swap 0;for (int i 0; i a.length; i) {for (int j i; j a.length; j) {if (a[j] a[i]) {swap a[i];a[i] a[j];a[j] swap;}}}System.out.println(Arrays.toString(a));}b)二分查找public static int ef(int a[], int tag) {int first 0;int end a.length;for (int i 0; i a.length; i) {int middle (first end) / 2;if (tag a[middle]) {return middle;}if (tag a[middle]) {first middle 1;}if (tag a[middle]) {end middle - 1;}}return 0;}6-8、对ajax的理解a) Ajax为异步请求即局部刷新技术在传统的页面中用户需要点击按钮或者事件触发请求到刷新页面而异步技术为不需要点击即可触发事件这样使得用户体验感增强比如商城购物车的异步加载当你点击商品时无需请求后台而直接动态修改参数。9、父类与子类之间的调用顺序(打印结果)a) 父类静态代码块b) 子类静态代码块c) 父类构造方法d) 子类构造方法e) 子类普通方法f) 重写父类的方法则打印重写后的方法10、内部类与外部类的调用a) 内部类可以直接调用外部类包括private的成员变量使用外部类引用的this.关键字调用即可b) 而外部类调用内部类需要建立内部类对象11、多线程a)一个进程是一个独立的运行环境可以看做是一个程序而线程可以看做是进程的一个任务比如QQ是一个进程而一个QQ窗口是一个线程。b)在多线程程序中多线程并发可以提高程序的效率cpu不会因为某个线程等待资源而进入空闲状态它会把资源让给其他的线程。c)用户线程就是我们开发程序是创建的线程而守护线程为系统线程如JVM虚拟中的GCd)线程的优先级别每一个线程都有优先级别有限级别高的可以先获取CPU资源使该线程从就绪状态转为运行状态。也可以自定义线程的有限级别e)死锁至少两个以上线程争取两个以上cpu资源避免死锁就避免使用嵌套锁只需要在他们需要同步的地方加锁和避免无限等待12、AOP与IOC的概念(即spring的核心)a) IOCSpring是开源框架使用框架可以使我们减少工作量提高工作效率并且它是分层结构即相对应的层处理对应的业务逻辑减少代码的耦合度。而spring的核心是IOC控制反转和AOP面向切面编程。IOC控制反转主要强调的是程序之间的关系是由容器控制的容器控制对象控制了对外部资源的获取。而反转即为在传统的编程中都是由我们创建对象获取依赖对象而在IOC中是容器帮我们创建对象并注入依赖对象正是容器帮我们查找和注入对象对象是被获取所以叫反转。b) AOP面向切面编程主要是管理系统层的业务比如日志权限事物等。AOP是将封装好的对象剖开找出其中对多个对象产生影响的公共行为并将其封装为一个可重用的模块这个模块被命名为切面(aspect)切面将那些与业务逻辑无关却被业务模块共同调用的逻辑提取并封装起来减少了系统中的重复代码降低了模块间的耦合度同时提高了系统的可维护性。13、hibernate的核心思想a) Hibernate的核心思想是ROM对象关系映射机制。它是将表与表之间的操作映射成对象与对象之间的操作。也就是从数据库中提取的信息会自动按照你设置的映射要求封装成特定的对象。所以hibernate就是通过将数据表实体类的映射使得对对象的修改对应数据行的修改。14、Struts1与Struts2的区别15、最优删除谋字符串的某个字符16-17、Arraylist与linkedlist的区别a) 都是实现list接口的列表arraylist是基于数组的数据结构linkedlist是基于链表的数据结构当获取特定元素时ArrayList效率比较快它通过数组下标即可获取而linkedlist则需要移动指针。当存储元素与删除元素时linkedlist效率较快只需要将指针移动指定位置增加或者删除即可而arraylist需要移动数据。18、数据库优化a) 选择合适的字段比如邮箱字段可以设为char(6)尽量把字段设置为notnull这样查询的时候数据库就不需要比较null值b) 使用关联查询( left join on)查询代替子查询c) 使用union联合查询手动创建临时表d) 开启事物当数据库执行多条语句出现错误时事物会回滚可以维护数据库的完整性e) 使用外键事物可以维护数据的完整性但是它却不能保证数据的关联性使用外键可以保证数据的关联性f) 使用索引索引是提高数据库性能的常用方法它可以令数据库服务器以比没有索引快的多的速度检索特定的行特别是对于maxminorder by查询时效果更明显g) 优化的查询语句绝大多数情况下使用索引可以提高查询的速度但如果sql语句使用不恰当的话索引无法发挥它的特性。19、Tomcat服务器优化(内存并发连接数缓存)a) 内存优化主要是对Tomcat启动参数进行优化我们可以在Tomcat启动脚本中修改它的最大内存数等等。b) 线程数优化Tomcat的并发连接参数主要在Tomcat配置文件中server.xml中配置比如修改最小空闲连接线程数用于提高系统处理性能等等。c) 优化缓存打开压缩功能修改参数比如压缩的输出内容大小默认为2KB可以适当的修改。20、HTTP协议a) 常用的请求方法有get、postb) Get与post的区别传送数据get携带参数与访问地址传送用户可以看见这的话信息会不安全导致信息泄露。而post则将字段与对应值封装在实体中传送这个过程用户是不可见的。Get传递参数有限制而post无限制。21、TCP/UDP协议22、Java集合类框架的基本接口有哪些a) Collection集合接口List、set实现Collection接口arraylist、linkedlistvector实现list接口stack继承vectorMap接口hashtable、hashmap实现map接口23、类加载的过程a) 遇到一个新的类时首先会到方法区去找class文件如果没有找到就会去硬盘中找class文件找到后会返回将class文件加载到方法区中在类加载的时候静态成员变量会被分配到方法区的静态区域非静态成员变量分配到非静态区域然后开始给静态成员变量初始化赋默认值赋完默认值后会根据静态成员变量书写的位置赋显示值然后执行静态代码。当所有的静态代码执行完类加载才算完成。24、对象的创建a) 遇到一个新类时会进行类的加载定位到class文件b) 对所有静态成员变量初始化静态代码块也会执行而且只在类加载的时候执行一次c) New 对象时jvm会在堆中分配一个足够大的存储空间d) 存储空间清空为所有的变量赋默认值所有的对象引用赋值为nulle) 根据书写的位置给字段一些初始化操作f) 调用构造器方法(没有继承)25、jvm的优化a) 设置参数设置jvm的最大内存数b) 垃圾回收器的选择26、高并发处理a) 了解一点高并发性问题比如一W人抢一张票时如何保证票在没买走的情况下所有人都能看见这张票显然是不能用同步机制因为synchronize是锁同步一次只能一个人进行。这时候可以用到锁机制采用乐观锁可以解决这个问题。乐观锁的简单意思是在不锁定表的情况下利用业务的控制来解决并发问题这样即保证数据的可读性又保证保存数据的排他性保证性能的同时解决了并发带来的脏读数据问题。27、事物的理解a) 事物具有原子性一致性持久性隔离性b) 原子性是指在一个事物中要么全部执行成功要么全部失败回滚。c) 一致性事物执行之前和执行之后都处于一致性状态d) 持久性事物多数据的操作是永久性e) 隔离性当一个事物正在对数据进行操作时另一个事物不可以对数据进行操作也就是多个并发事物之间相互隔离。28、Struts工作流程a) 客户端发出一个请求到servlet容器b) 请求经过一些列过滤被filterdispatcher调用filterdispatch通过actionMapper去找相对应的action。c) Actionmapper找到对应的action返回给filterdispatchdispatch把处理权交给actionproxyd) Actionproxy通过配置文件找到对应的action类e) Actionproxy创建一个actionIinvocation的实例处理业务逻辑f) 一旦action处理完毕actioninvocation负责根据stuts.xml的配置找到对应的返回结果。返回结果通常是jsp页面。