首页
留言板
友链
关于
Search
1
内测“合金弹头”嘿嘿
889 阅读
2
Nginx搭建一个简易的图床
838 阅读
3
Kettle循环遍历结果集作为参数传入转换
816 阅读
4
Apache Dubbo初步认识
437 阅读
5
Maven打包插件与idea
415 阅读
知识库
好奇猫
日常说
笔记本
登录
/
注册
Search
标签搜索
maven
Spring
vue
Java
Java代码
前端
idea
帆软
MySQL
git
CSS
游戏
Bootstrap
生活
网上冲浪
邮件配置
说说
Nginx
Excel
数据库调优
龙流
累计撰写
61
篇文章
累计收到
18
条评论
首页
栏目
知识库
好奇猫
日常说
笔记本
页面
留言板
友链
关于
搜索到
1
篇与
面试宝典
的结果
2021-08-18
“葵花宝典”——持续更新
{collapse}{collapse-item label="两种动态代理的区别?" }回答要点:1、动态代理的作用2、动态代理的特点3、动态代理的分类4、两种动态代理的使用要求1、不改变原代码的情况下,增强方法2、动态代理的特点,字节码随用随创建,随用随加载3、4、基于接口的动态代理(JDK动态代理):由JDK官方提供要求:被代理类最少实现一个接口涉及类:Proxy创建代理对象的方法:newProxyInstance方法中的参数:ClassLoader:类加载器。 负责加载代理对象的字节码。 和被代理对象使用相同的类加载器。固定写法。 Class[]:字节码数组。 负责让生成的代理对象具有和被代理对象相同的方法。写什么要看被代理对象是一个接口还是一个实现类。 如果是一个接口: new Class[]{接口字节码} 如果是一个实现类:XXX.getClass().getInterfaces();固定写法 InvocationHandler:一个接口,需要我们提供该接口的实现。 作用是用于对方法增强。 增强的代码,谁用谁写。写的是一个接口的实现类。 通常是一个匿名内部类,但是不绝对。 基于子类的动态代理(CGlib动态代理):由cglib第三方提供要求:需要导入cglib的坐标。被代理类不能是最终类。(不能被final修饰)涉及类:Enhancer创建代理对象的方法:create方法中的参数:Class:字节码对象。 用于加载代理对象字节码的。 写的是被代理对象的字节码。是固定写法Callback:如何代理。提供增强代码的。它是个接口,需要自己写实现。 该接口没有方法,需要用它的子接口MethodInterceptor 应用场景1、基于aop思想的方法增强。2、自定义连接池中,实现Connection的close方法还回池中操作3、解决tomcat8.5以下全站中文乱码,get和post两种提交方式的。在get方式需要对以下三个方法增强,用于解决乱码: String value = getParameter(String name); String[] value = getParameterValues(String name); Map<String,String> map = getParameterMap();{/collapse-item}{collapse-item label="IOC和DI的关系" }1、技术介绍2、应用场景IOC(控制反转)全称为: Inverse of Control。从字面上理解就是控制反转了,将在自身对象中的一个内置对象的控制反转,反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建。简单来说就是把本来在类内部控制的对象,反转到类外部进行创建后注入,不再由类本身进行控制,这就是IOC的本质。DI(依赖注入)全称为Dependency Injection,意思是自身对象中的内置对象是通过注入的方式进行创建。IOC和DI的关系ioc就是容器,di就是注入这一行为,那么di 确实就是ioc的具体功能的实现。而ioc则是di 发挥的平台和空间。所以说,ioc和 di即是相辅相成的搭档。最重要的是,他们都是为了实现解耦而服务的。DI是如何实现的?依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。应用场景例如:在生产实际中,一个类中会调用其他类的方法,一般情况(原始情况)下直接new创建类对象,但这种方法是需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生改变时需要修改代码并重新构建整个系统,这对公司业务而言是有损失的(重启需暂停服务,对用户而言难以接受)。这个时候就出现了IOC这一技术,如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(接口B通过构造器或setter方法注入),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。{/collapse-item}{collapse-item label="怎么对IOC容器的配置,管理IOC容器中的对象bean"}通过 Spring 提供的 IOC容器可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合。一是通过xml配置文件的方式配置bean(使用标签)二是通过注解的方式配置bean(常用注解@Controller、@Service、@Repository、@Component)@Autowired注解,可以实现自动装配@Autowired private BookService bookservice;//等同于bookservice = ioc.getbean(BookService.class)依赖注入原理: (1)先按类型找: 找到一个就赋值; 没找到就报错; (2)找到多个按照属性名作为id名继续匹配–>找到就装配,找不到还是报错Tips:1)加@Qualifier表示用指定的变量名作为id名去找组件而非属性名了;2)默认通过@Autowired注解实现自动装配是一定要找到的,所有情况下找不到就会报错;3)@Autowired注解的required属性指定某个属性允许找不到还不报错@Autowired(required = false) private BookService bookservice;4)如果对一个数组或集合类型标注自动装配,则自动匹配类型兼容的所有bean组件5)@autowired和@resource都能实现自动装配,区别:@autowired–只能在spring框架里用@resource–j2ee的标准,扩展性更强Spring之IOC容器创建bean对象的XML配置总结{/collapse-item}{collapse-item label="Git使用重点" }Git版本控制,版本管理git本地仓库 删除文件git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop恢复。git reset --hard HASH #返回到某个节点,不保留修改。git reset --soft HASH #返回到某个节点。保留修改原文地址:http://www.pizida.com/git-rm.html{/collapse-item}{collapse-item label="EL与JSTL" }学习EL与JSTL不然首先要创建JSP,在JSP中:1、JSP指令 格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> - page:contentType -> 等同于response.setContentType() import -> 导包 errorPage -> 当前页面发生异常后跳转到指定页面 isErrorPage -> 标识当前页面是否是错误页面,默认为false。设置为true时,可以使用内置对象exception - include:设置包含某页面 - taglib:导入资源2、JSP内置对象 在JSP页面中不需要创建,直接使用的对象;一共有9个 - pageContext 当前页面共享数据,还可以获取其他八个内置对象 - request 一次请求访问的多个资源(转发) - session 一次会话的多个请求间 - application 所有用户间共享数据 - response 响应对象 - page 当前页面(Servlet)的对象 - out 输出对象,数据输出到页面上 - config Servlet的配置对象 - exception 异常对象3、EL - EL运算符:empty应用于判断字符串、集合、数组对象是否为null并且长度是否为0 ${empty list} - 获取值 **el表达式只能从域对象中获取值** 语法:${域名称.键名} 从指定域中获取指定键的值 - 对象属性的获取,其实将对象的getter和setter方法去掉前面的get和set, 然后大写字母变小写获得的值就是就可以用EL表达式${对象.属性}即可获得属性值 {gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}4、JSTL - JSP标准标签库; 用于简化和替换JSP页面上的java代码 - 首先需要导入jstl相关jar包 - 引入标签库:taglib指令 <%@ taglib uri="" %> - 常用JSTL标签 1、if :相当于java中的if 2、choose :相当于java中的witch 3、foreach :相当于java中的for循环{/collapse-item}{collapse-item label="IPV6使用案例" }通过IPV6直接访问NAS设备知乎教程亲测有效测试网络是否支持IPV6,访问IPV6测试网址检测是否能正常访问:test-ipv6.com从外网使用IPv6 ping一下自己:https://ipw.cn/ipv6ping/{/collapse-item}{/collapse}
2021年08月18日
147 阅读
0 评论
0 点赞