将数据写入隔离区,如果成功完成,则将隔离区的数据写入正式区;
如果失败,则清空。
所谓隔离区,如果是数据库操作,则是临时表;如果是文件操作,则是临时文件
Mvc设计模式
M(model) 模型 javaBean
V(view) 视图 html/jsp/volicity/freemaker
C(contron)控制器 servlet/action
最经典的MVC模式:jsp + servlet + javabean
面向接口
降低重复性 使用共通接口 统一调度
jdbc
Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。
JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单。
Hibernate工作原理及为什么要是用
读取并解析配置文件
读取并解析映射信息,创建SessionFactory
打开Sesssion
创建事务Transation
持久化操作
提交事务
关闭Session
关闭SesstionFactory
Restful风格
一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息
注册bean的方法
@ComponentScan
@Bean
@Import
前端数据怎么提交到后台
1、通过表单提交
2、通过网页链接提交
3、通过ajax提交
Ajax具体实现
1.创建XMLHttpRequest对象。
2.设置请求方式。
3.调用回调函数。
4.发送请求。
负载均衡
常见的有:软件负载均衡、硬件负载均衡、DNS负载均衡。
分布式
(1)分布式协调
(2)分布式锁
(3)元数据/配置信息管理
(4)HA高可用性
实现网站在线人数思路
1、用session 记录用户数
java权限设置符
Private、default、Protected、Public
设置Privae的目的
实现数据隐藏,以免意外更改
多线程死锁产生原因
1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用
2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路。
同步锁互斥锁
1:互斥是通过竞争对资源的独占使用,彼此没有什么关系,也没有固定的执行顺序。
2:同步是线程通过一定的逻辑顺序占有资源,有一定的合作关系去完成任务。
内部类会不会生成class文件
会的匿名内部类编译后会生成class文件,名称是 1、2…数字
数据库优化
1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务
5、锁定表
6、使用外键
7、使用索引
8、优化的查询语句
Ps:使用缓存
离散度底,建立索引会出现什么问题
有重复的数据时,查找数据会检索大量的数,非常浪费资源、性能和时间;
建立索引的字段,一定要是离散度高的字段,不然会导致上述的问题。
类初始化顺序
1.静态属性:static 开头定义的属性
2.静态方法块: static {} 圈起来的方法块
3.普通属性: 未带static定义的属性
4.普通方法块: {} 圈起来的方法块
5.构造函数: 类名相同的方法
6.方法: 普通方法
加载方式
一.静态加载
1、由 new 关键字创建一个类的实例
在由运行时刻用 new 方法载入
二.动态加载
1、调用 Class.forName() 方法
2、调用某个 ClassLoader 实例的 loadClass() 方法
通过该 ClassLoader 实例的 loadClass() 方法载入。应用程序可以通过继承 ClassLoader 实现自己的类装载器。
通过反射加载类型,并创建对象实例
Final fnally. fnalize区别
Final :最终的
fnally:出现异常时,必须执行的
fnalize:垃圾回收前,必须执行的
垃圾回收机制
Java程序员在编写程序的时候不再需要考虑内存管理;
Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”;
垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。
Ps:java里面会存在内存泄漏,由于对象不可达的原因,也将其称为“对象游离”。
Main方法线程和垃圾回收线程一起结束的原因
还未调用回收器线程,或还未回收完成所有,主线程已经结束了,并不是主线程结束,虚拟机就结束。
Mysal, Oracle sqlsevice区别
oracle:数据完整性,安全性要求较高的场合;
sqlserver(sybase和ms):ms的sqlserver简单,好用,用于企业级的数据应用,性能没有问题,支持所有大型 rdbms的特性;
mysql:基本免费,功能不错,适合个人网站及一些小企业的网站应用;
代码规范
1.见名知意
2.开头小写驼峰式
3.多注释,代码优美
Springboot和之前xml有什么区别
springboot减少了xml的配置,使用起来更加的方便,同时也占用更多的资源。
Redis简介
是一个nosql(非关系式数据库),key-value,可持久化,内存,分布式的,缓存的数据库
创建线程的方法
1)继承Thread类创建线程
2)实现Runnable接口创建线程
3)使用Callable和Future创建线程
4)使用线程池例如用Executor框架
Jdbc连接数据库的流程
1)加载(注册)数据库驱动(到JVM)。
2)建立(获取)数据库连接。
3)创建(获取)数据库操作对象。
4)定义操作的SQL语句。
5)执行数据库操作。
6)获取并操作结果集。
7)关闭对象,回收数据库资源(关闭结果集–>关闭数据库操作对象–>关闭连接)。
为什么设计jdbc
jdbc提供了高标准的api接口,统一了连接数据库的规范
项目介绍
==================================================================
做项目时,遇到了什么问题,怎么解决的
================================================================================
首先检查自己代码是否写错或是遗漏,然后百度或翻书籍或是以前的项目,不行就问同事、朋友;再解决不了就报告给组长,不能耽误项目工期。
项目重点
==================================================================
销售》需求文档》报价》签合同,首款》 UI设计》测试》部署》上线,应用服务器一台, redis一台, 数据库一台
介绍最近的项目
=====================================================================
| 关键点 | 说辞 |
| — | — |
| 能考虑到代码的扩展性,有参与框架设计的意识 | 我的项目XX保险项目,用到S
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
SH技术,数据库是Oracle,(这个是铺垫),开发的时候,我会先和项目经理一起设计框架,并参与了框架的构建,连接数据库的时候,我们用到了DAO,这样做的理由是,把SQL语句封装到DAO层,一旦要扩展功能模块,就可以不用做太多的改动。 | | 有调优意识,能通过监控发现问题点,然后解决 | 在开发阶段,我就注意到内存的性能问题和SQL运行的时间问题,在压力测试阶段,我会通过xx工具来监控内存和数据库,发现待提升的代码点,然后通过查资料来优化。最后等项目上线后,我们会部署监控系统,一旦发现内存和数据库问题,我们会第一时间解决。 | | 动手能力很强,肯干活,会的东西比较多,团队合作精神比较好 | 在项目里,我不仅要做开发的工作,而且需要自己测试,需要自己根据一些日志的输出到数据库或Java端去debug,当我开好一个模块时,需要自己部署到Linux上测试。或者,一旦遇到问题,如果是业务方面的,我会及时和项目经理沟通,如果是技术方面的,我会自己查资料,如果是测试方面的,我会及时和测试的人沟通。 |
|