java清除浏览器缓存_java知识分享篇(⼋)
⼤家好,我是⼩⼩⼑,今天为⼤家整理了这个星期⼤家在⾥⾯的分享和⼀些扩展,快来消灭知识点吧!
(括号内为分享⼈,进请加⼩⼑best396975802)
” 1
⼀个星期过去啦,⼤家有没有想念我们的知识分享篇呀,这⼀个星期我们主要在搞每⽇练习篇,然后加上公司的活⽐较忙,以前还能⼀天总结下分享,现在只能⼀个星期总结⼀下了,有不少⼩伙伴加了⼩⼑之后和⼩⼑说每⽇⼀练和分享版块很好,在这⾥谢谢⼤家的⽀持,我们会坚持下去的。在这⾥,⼩⼑对三个版块的定位有了⼀个⼤致的划分:
每⽇⼀练是初级题⽬,但题⽬是死的,我们⼈是活的,可以去初级的⾓度去答题,也可以扩展⼀下给⾃⼰加深下难度。
知识分享篇属于中级板块,由⼤家分享的知识点,我来扩展,不仅拿下分享的知识点,顺带拿下扩展的知识点,当然因为⼩⼑⽬前技术能⼒也有限,只能说尽⼒去扩展,我们共同学习!
JAVA学习篇暂定位于⾼级版板,在这⾥⾯,我们会以初学者为⼊⼝,然后深⼊到原理,底层等等,⼩⼑我知道多少就会往⾥⾯写多少
不论怎样,都是为了能和⼤家⼀起学到更多的知识,SO,加油吧,少年!!
2
过滤器(静雯)
原分享
JSP 和 Servlet 中的过滤器都是 Java 类。过滤器可以动态地拦截请求和响应,以变换或使⽤包含在请求或响应中的信息。
doFilter:该⽅法完成实际的过滤操作,当客户端请求⽅法与过滤器设置匹配的URL时,Servlet容器将先调⽤过滤器的doFilter⽅法。FilterChain⽤户访问后续过滤器
init:tomcat启动时,web 服务器将创建Filter 的实例对象
destroy:Servlet容器在销毁过滤器实例前调⽤该⽅法,在该⽅法中释放Servlet过滤器占⽤的资源。
filter-name  :  过滤器名字,该元素的内容不能为空。
filter-class  :所在包的路径
servlet-class:所在包的路径
servlet-name:过滤器所拦截的Servlet名
url-pattern:设置 filter 所拦截的请求路径
⼩⼑说
过滤器和是⾯试常问的问题,初级都可尝试掌握下过滤器和的区别,再深处⼀点就是过滤器和的原理(这⾥就看深度了,简单点来说是基本AOP,和装饰模式,再复杂点呢,如何解析的调⽤的)
3
mysql中的in语句(lmbby)
原分享
mysql数据库使⽤in语句查询,查询结果默认会根据主键id排序。
如果想按照in()⾥的条件排序,可以使⽤FIELD()语句解决
⼩⼑说
这个让我怎么说呢,我也没重现出来,然后⼜请教了下lmbby⼩,⼩重新补充了下
查询数据量少或者需要保持业务代码简洁的场景下 FIELD函数结合 ORDER BY 可以帮助我们将查询结果集按照参数列表顺序返回
select id from 表名 where id in (1,2,3) order by field(id,1,2,3)
4
集合相关的知识点(唐恒)
原分享
ArrayList 默认初始容量为10
线程不安全,查询速度快
底层数据结构是数组结构
扩容增量:原容量的 0.5倍
如 ArrayList的容量为10,⼀次扩容后是容量为15
Vector:线程安全,但速度慢
底层数据结构是数组结构
加载因⼦为1:即当 元素个数 超过 容量长度 时,进⾏扩容
扩容增量:原容量的 1倍
如 Vector的容量为10,⼀次扩容后是容量为20
Set(集) 元素⽆序的、不可重复。
HashSet:线程不安全,存取速度快
底层实现是⼀个HashMap(保存数据),实现Set接⼝
默认初始容量为16(为何是16,见下⽅对HashMap的描述)
加载因⼦为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进⾏扩容
扩容增量:原容量的 1 倍
如 HashSet的容量为16,⼀次扩容后是容量为32
⼩⼑说
有很多⼩伙伴喜欢看这样的知识点分享,因为满满的都是⼲货,背下来之后瞬间知道了好多东西,⼩⼑建议,⼤家有空可以以这个知识为切⼊点看⼀看源码,内部是怎么实现的,这样才能彻底拿下这些知识点。
5
环境变量Path的作⽤(Java⼩新)
原分享
当要求系统运⾏⼀个程序⽽没有告诉它程序所在的完整路径时,系统除了在当前⽬录下⾯寻此程序外,还应到path中指定的路径去。⽤户通过设置环境变量,来更好的运⾏进程。
⼩⼑说
关于环境变量,是新⼿⼊门第⼀课,但这⼀课很多⼈都是稀⾥糊涂的按书上或者是按⽹上配置成功了就不管了,我在很多篇推⽂中都有提到过环境变量这个事,在些就不赘述了
6
mybatis缓存(拎壶冲)
原分享
1、⼀级缓存是SQLSession级别的缓存,是默认开启的。不同的sqlSession之间的缓存数据区域(Cache空间)是互相不影响的;
2、⼆级缓存是SqlSessionFactory级别的缓存,需要配置。
<configuration> <settings> <setting name="cacheEnabled" value="true" /> settings> configuration&l中配置:<cache eviction="FIFO" flushInterval="600
开启⼆级缓存后数据查询流程是:⼆级缓存 -> ⼀级缓存 -> 数据库,多个sqlSession可以共⽤⼆级缓存,作⽤域是以namespace来划分
的,多个mapper⽂件若使⽤同⼀个namespace也会被认为是同⼀个Cache空间;
重点是想提及 flushCache 和 useCache这两个跟⼆级缓存相关的配置参数
select * from user where id=#{id}
useCache:⽤来设置当前select是否使⽤⼆级缓存,默认值useCache="true",表⽰要使⽤⼆级缓存,若设置改为"false",则每次的查询
都会发出sql去数据库查询数据;
flushCache:⽤来设置当前select是否清空⼆级缓存,默认值flushCache="false",表⽰不需要清除⼆级缓存,在同⼀个namespace的
mapper中,如果除了select之外还有insert、update、delete操作同⼀张数据表的话,开启了⼆级缓存⽽不去刷新缓存就容易出现脏读,
实测发现就算在这时修改useCache="false"也并不能阻⽌数据被缓存,需要将flushCache值改为"true"才能强⾏清除缓存,所以,建议flushCache和useCache都要⼀起进⾏设置,表明任何时候只要语句被调⽤,都会让缓存清空,成功避免了脏读。
再次分享
⽤的是装饰者模式,所以就简单讲⼀下我对装饰者模式的理解吧,就⽐如有⼀个餐厅在招聘厨师(⿁半夜的有点饿了),这家餐厅是个豪华餐
厅,厨房配置了空调、电视、沙发以及按摩床等为了吸引优秀的厨师,优秀的厨师当然有脾⽓了,对餐厅的要求也各不相同,厨师A想要有
空调,厨师B想要有电视机,厨师C想要有按摩师+空调,厨师D想要有空调+沙发+按摩床等,所以如果有很多厨师,就会有很多个需求,我el表达式获取session中的值
们需要对每⼀个厨师进⾏个性化的定制,代码就会出现有很多重复的代码,也要创建很多类。这时候⽤修饰者模式就可以更好的解决这个问
题,运⽤继承和多态来灵活实现根据不同条件,来让系统⾃⼰去判断,组成你想要的厨师。
总之MyBatis⾥⾯好像Cache是缓存的⽗类,拥有很多很多不同功能的⼦类,根据业务条件的不同,我们可以去装饰Cache得到想要的
不同功能的缓存⼦类。
⼩⼑说
这⼀个分享⽐较底层了,⽽且两次分享中也看到了拎壶冲⼩伙伴的学习冲劲,我觉得学习就需要这样,顺⼿点开源码看看,看不懂没关
系,现在百度那么强⼤,我们去百度下看看别⼈怎么讲的,然后再回来继续学习!
7
代码块初始化顺序(笨鸟)
原分享
对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其⼦类来引⽤⽗类中定义的静态字段,只会触发⽗类的初始化⽽不会
触发⼦类的初始化。
⼩⼑说
这个是根据我们的每⽇⼀练做出的分享,本来练习并不难,但是⼤家可以看看我们⽂章下⾯的评论,评论才是我们⽂章的正⽂(java每⽇
⼀练(19_02_24))
8
cookie 和 session的使⽤(liz)
原分享
1、cookie存在客户端的硬盘上可以⽤
Cookie cookies[] = Cookies();获取cookie的所有参数,如果想获取上次登录时间,则可通过lastAccessTime(例如:lastAccessTime=1551612466764)属性获得,然后使⽤Long.praselong转为⼀个long的数,然后再调⽤Date函数,就可以输出登录时间,如果每次登录都显⽰上次登录的时间,则需要每次都把当前时间给cookie,⽤add函数加⼊cookie 的数组即可。初次访问上次登录时间显⽰为空,如果想在关闭浏览器后重新打开,有上次登录时间,则可利⽤setMaxAge设置cookie的⽣命时间,如果时间设为0,则删除了这个cookie.利⽤cookie,可以显⽰⽤户的浏览记录,每次将⽤户浏览的信息的id加⼊⽤户的cookie中,利⽤cookie显⽰层经浏览的物品,为保持浏览记录的存在时间,会利⽤到setMaxAge.(⾃定义⼀个cookie属性:Cookie cookie = new
Cookie("bookHistory",bookHistory);)
当浏览器禁⽌使⽤cookie的时候,session就出现啦。
2. session存在服务器端,默认的有效时间是30分钟,因为session会是服务器的压⼒变⼤,在写jsp⽹
页是时候,如果不使⽤session 时,可在page⾥⾯设置session=”false”关闭session。
Session在浏览器不关时,⽆论打开多少⽹页,使⽤的都是⼀个session,各个⽹页都可以通过sessoion获取数据。如果关闭浏览器,不想让session丢失的话,可和cookie结合,设置cookie⾥JSESSIONID的属性,把sessoin传递进去。可以利⽤sessoin做购物车,加⼊购物车的商品,商品需要⼀个容器⼀样保存,在session⾥设置⼀个list集合,每次将购买的商品的信息加进去,如果想要显⽰已购买,则从session中取出即可。
⼩⼑说
cookie和seesion的使⽤,在代码中⼀般都是封装好的,不代表封装好的,我们就可以不⽤研究他了,相反,越是封装好的,我们越是要研究他,以前喜欢把⽤户的登录信息放到session⾥⾯,现在把登录信息放redis⾥⾯多⼀些。
9
jsp中的9⼤内置对象(liz)
原分享
request,response,session,application(ServletContext),config,exception,page,pageContext,out
打开tomacat安装路径\work\Catalina\localhost\day10\org\apache\jsp查看—_jsp.java⽂件,可以看到内置对象的定义
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
request,response,session,application(ServletContext),config和servlet中使⽤相同,excepation在被配置为错误页的jsp页⾯使
⽤,page指当前jap页,pageContext和ServletContext的⽤法类似,指所有的jsp页⾯,out只⽀持字符流输出,如果想⽤字符流,重新定义会报错,但是如果把jsp页⾯除标签外的所有空格删除,则可使⽤。
jsp⽤嵌⼊java代码,被翻译在service函数⾥。如果想写⽅法则jap,翻译在service外。页⾯只有java 代码也可以
可⽤于输出
jsp还有标签可以设置bean的属性和值,减少java代码在jsp页⾯的显⽰,导⼊标签库需要的包后(jstl.jar,standard.jar),其中uri的地址,在jar⽂件的meta-Inf的c.tld⽂件下可得,也可⽤快捷键提⽰写出,prefix是标签的名字,可随便起。利⽤标签库⾥的foreach可迭代,if可以判断条件是否成⽴。利⽤el表达式,${}替代java格式的输出。
⼩⼑说
现在新出了很多模板引擎,如freemark,thymeleaf等等,但毫⽆疑问jsp的使⽤量还是很⼤的,可以不
学那么深,但是基本的还是了解的,⼩⼑对jsp也没学太多都是开发的时候⽤到了⼀点学⼀点。
10
最后说两句
最近⼯作有点忙,压⼒
也有点⼤,但是分享的事我⼀直没有忘,平时在⾥⾯和⼤家说着要最近⼯作有点忙,压⼒也有点⼤,但是分享的事我⼀直没有忘,平时在⾥⾯和⼤家说着要加油,其实⾃⼰已是在放弃的边缘,但所幸之⾄,我对⾃⼰说,要坚持下去,想想⾃⼰在java 故事之梦⾥⾯写到的,想⼀想三年后,如果现在就放弃了,那三年后的我跟现在有什么两样呢,所以,我们⼀起互相监督,⼀起坚持下去吧!
THE END
眼过千遍,不如⼿过⼀遍,⼀定⼀定要把⾃⼰的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每⼀个留⾔和分享⼩⼑都会认真回复,彼此学习共同进步~
⼩⼑和⼩伙伴在学习⾥等你来⼀起监督学习哦,坚持!加油!进请加⼩⼑: best396975802
END
请点击菜单进
⽂字|⼩⼩⼑和⾥的⼩伙伴们
排版|花⾳
点个好看再⾛吧~(づ ̄3 ̄)づ╭❤~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。