当前位置: 代码迷 >> 综合 >> JavaWeb学习 day08
  详细解决方案

JavaWeb学习 day08

热度:37   发布时间:2024-02-11 04:56:33.0

今天,继续学习了JavaWeb。学习了connection关闭、构建数据库模型。同时今天也完成了JavaWeb的学习。
总结一下一些需要注意的问题:
1.开发一个项目第一步做什么?
1.需求分析
2.概要设计
3.构建数据库模型
4.了解客户想要啥(沟通)
5.确定开发环境和运行环境
6.估算项目工作量
7.搭建整体架构
8.需求获取
9.时长
通过需求探索+沟通
就差不多决定有多少张表
表的设计有时候就决定了sql编写的难易成功度
还有开发的效率
2.总结一些面试题:
1、SpringMVC运行流程:
1.用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
3.DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter ha。
4.执行拦截器的preHandler(…)方法。(默认拦截器是ConversionServiceExposingInterceptor,它的preHandler方法直接返回true)
5.ha调用handle方法,开始执行handler方法。
6.Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
7.开始执行拦截器的postHandler方法,对用户请求request进行处理(按照逆序依次执行postHandler方法)。
8.对整个的执行结果进行分析,如果执行有异常,由HandlerExceptionResolver 组件处理异常,得到新的 ModelAndView 对象。(从2到7)
9.由 ViewResolver 组件根据 ModelAndView 对象得到实际的 View。
10.调用拦截器的afterCompletion方法,完成整个过程。
2、P2P流程简介
P2P标的:基于P2P平台的借贷关系。
P2P标的物:筹资人在P2P平台上发布的筹资需求以产品的形式在平台上展示。
P2P平台上有5个角色,普通用户、投资人、平台方、外部担保公司、借款人。首先游客(普通用户)浏览P2P平台,查看标的物,有意向投资或者融资注册,先注册成为投资人→绑定银行卡→开通三方支付账号→浏览标的物根据相关信息进行投标。
若有意向借款,则提交相关身份认证的材料,完善个人信息→平台方对借款人身份资料等进行认证→认证通过成为借款人→
点击我要借款→选择直融借贷→信息披露→(后边自己组织啦,跟图都差不多了)
3、Redis
1.reids理解 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
2、redis应用场景
①商品的波段性的热点高频信息,情人节:玫瑰花
②订购的火车票,在多长时间的不付款自动失效,expire+key设置失效时间,ttl+key查看还有多久失效。
③我们可以将最新的5000条评论的ID放在Redis的List集合中,如果浏览超出集合部分从数据库获取。
3、redis服务启动
①修改redis.conf文件将里面的daemonize no 改成 yes,让服务在后台启动
②将默认的redis.conf拷贝到自己定义好的一个路径下,比如/myconf
③启动指令:redis-server /myconf/redis.conf
④运行redis:redis-cli
⑤测试连通性:输入ping,返回pong则表示联通正常。
⑥关闭服务:单实例关闭redis-cli shutdown,指定端口关闭:redis-cli -p 6379 shutdown。
4、Redis持久化(RDB)
定义:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。
5、RDB执行原理
①Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
②整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。
6、RDB的优劣势
优势:①适合大规模的数据恢复②对数据完整性和一致性要求不高
劣势:①数据丢失风险大;②Fork的时候当数据集比较大是时候,fork的过程是非常耗时的,可能会导致redis在一些毫秒级不能相应客户端请求③数据丢失风险大
7、Redis持久化AOF
①以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件。
②redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
8、AOF的优劣
优势:①AOF以日志的方式记录每个写操作。记录较为详细②三种同步策略:每秒同步、每修改同步、从不同步
劣势:①相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb②根据选择不同放入同步策略,AOF的同步速度可能要慢与RDB。
4、Jedis
Jedis是redis的java版本的客户端实现。
5、redis的主从复制原理
①Slave启动成功连接到master后会发送一个sync命令
②Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
③全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
④增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
⑤但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
4、Tomcat 起停
ps-ef 以全格式显示后台的所有进程
找PID
ps -aux|grep tomcat 看是否已经有tomcat在运行了
开启Tomcat :在Tomcat跟文件夹下 bin/startup.sh
停止Tomcat :在Tomcat跟文件夹下 bin/shutdown.sh
Kill端口号 : 杀死进程
5、GET请求和POST请求的区别:
1.get请求通过URL地址发送请求参数,post请求通过请求体来发送请求参数
2.url地址的长度有限255个字符,所以不能发送过多的信息。请求体大小没有限制想整多大就多大。
3.get请求通过URL地址发送请求参数,内容可以直接在地址栏上显示,不太安全。
post请求通过请求体来发送请求参数,不能直接看到 相对安全。
4.除了表单的method属性设置为post时,其余的全都是get请求
5.开发中提交表单时,如果没有特殊情况,全都用post!