有头发的程序猿个人页面-阿里云开发者社区

个人头像照片 有头发的程序猿 TA的个人档案
个人头像照片

个人介绍

为之则易,不为则难

擅长的技术

  • Java
  • 数据库
  • 微服务
  • 消息中间件
  • 中间件
获得更多能力
通用技术能力:
云产品技术能力:

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
  • 回答了问题 2019-12-16

    【hi聊】2019年终回顾:程序员这些年经历最大的变化

    从买东西实体店,后来淘宝买,再到现在各种电商平台。 从最开始淘宝支付的时候必须网银支付,到后来的支付宝,再到现在的各种支付平台 从各种单体应用,到后来的分布式架构,再到soa,再到现在的微服务架构 经历了大数据,ai带到生活和技术中的各种角落的变化

正在加载, 请稍后...
暂无更多信息

2020年04月

  • 04.24 15:45:16
    回答了问题 2020-04-24 15:45:16

    【每日挑战】SQL命令查询不重复记录?4.24

    d

    踩0 评论0
  • 04.24 15:20:31
    回答了问题 2020-04-24 15:20:31

    java的垃圾回收机制是如何控制的?

    在Java运行时数据区中,将堆分为了新生代和老年代区域,其中新生代又分为Eden,s1,s2区,当需要创建新的对象时在eden区中申请内存,如果申请不到,则触发一次younggc,young gc时将eden区和s1区中的对象全部复制到s2区,然后直接清除eden和s2区。下一次重复上一次操作,当一个对象存活15次以后,将移动到老年区,当老年区满了之后,将会产生Major GC,根据使用的垃圾收集器不同,表现也会不同,大多使用的是标记整理算法。

    踩0 评论0

2020年01月

  • 01.09 18:00:58
    回答了问题 2020-01-09 18:00:58

    SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?

    java是按需加载的,springboot启动的时候,除懒加载外的所有bean都会被注册并实例化到bean容器中,所以当你删除了jar之后,内存中依然存在有原加载并实例化后的对象,所以你可以访问,因为所有的controller都是启动的时候就实例化了的,所以删除jar之后依然可以访问,你可以试试再controller中调用创建某个对象的方法,试试删除之后调用创建方法能不能正确创建对象。

    踩0 评论0
  • 01.09 17:49:46
    回答了问题 2020-01-09 17:49:46

    java项目的web.xml中配置了连个servlet,为什么第一个不可匹配,第二个就可以呢?

    没看明白,看信息像是文件找不到,要把具体配置文件发出来才知道

    踩0 评论0
  • 01.09 17:47:16
    回答了问题 2020-01-09 17:47:16

    【JAVA小白】 问关于java.io.FileNotFoundException: 的问题

    原因异常信息中已经有了,就是/Users/apple/Desktop/Result这个路径是个构建File是一个目录,不是一个文件,不能使用目录构建FileInputStream对象,要是一个文件才可以

    踩0 评论0
  • 01.09 17:32:18
    回答了问题 2020-01-09 17:32:18

    SpringMVC中,在类名上加一个@RequestMapping,静态资源获取不到

    jsp吗?有点忘了jsp了,但是如果没有猜错的话,你引用资源的地方应该用的是相对路径,你可以使用获取根路径,再拼接资源路径

    踩0 评论0
  • 01.09 17:29:24
    回答了问题 2020-01-09 17:29:24

    Spring getBean可以获取,但是@Resource无法获取到

    @Autowired获取呢?具体还是看代码才能判断为啥

    踩0 评论0
  • 01.09 13:53:53
    回答了问题 2020-01-09 13:53:53

    jdk底层,什么地方用到了锁?

    有资源共享需求,又要防止线程安全的,可能都会用到锁,比如Vector,Hashtable之类的StringBuffer等类都用到synchronized关键字,并发包下的类用到的乐观锁等。有资源共享的情况下,如果jdk提供的类没有用到锁,那么需要自己加锁防止线程安全问题。

    踩0 评论0
  • 01.09 10:48:16
    回答了问题 2020-01-09 10:48:16

    19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能

    收藏起来

    踩0 评论0
  • 01.09 10:42:13
    回答了问题 2020-01-09 10:42:13

    Vector, ArrayList, LinkedList的区别是什么?

    Vector和ArrayList的底层都是使用数组的方式实现,实现方式相同,插入,删除慢,查询快,不过Vector加了synchronized关键字,所以是线程安全的,ArrayList则是线程不安全的, LinkedList的实现方式的双向链表,插入,删除快,查询慢

    踩0 评论0
  • 01.09 10:38:02
    回答了问题 2020-01-09 10:38:02

    Session, Cookie的区别是什么?

    Session是将信息保存到服务端,给客户端一个唯一获取session的cookie,请求时将该cookie带到服务端,就能获取到session对象。cookie是保存到客户端的硬盘上的,随请求发送到服务端,所以相对来说cookie是不安全的,容易被破解后获取cookie中的信息

    踩0 评论0
  • 01.09 10:32:39
    回答了问题 2020-01-09 10:32:39

    代理的实现原理。

    Java种jdk的动态代理的实现原理是动态的生成一个实现了接口的所有方法的一个类,并且该类保留了InvocationHandler的对象的引用,使用Proxy.newInstance()方法获得的其实是生成的类的对象,调用接口方法时即是调用生成对象的方法,但是在生成的类的对象时,由于保留了InvocationHandler的引用,就调用InvocationHandler这个接口的invoke()方法,并将接口的方法和参数传入到invoke()中,这样就实现了动态代理。 cglib则是使用字节码技术,没有实现接口,所以就动态生成一个继承被代理类的对象,然后实现动态代理。

    踩0 评论0
  • 01.09 10:26:04
    回答了问题 2020-01-09 10:26:04

    为什么TCP连接需要三次握手,两次不可以吗,为什么?

    因为需要保证同信的可靠,两次不可以,TCP三次握手可以保证客户端发送的请求服务端能够收到,并且服务端发送的请求Clint端也能保证收到,因为第三次握手是客户端对服务端发送的消息做了回应,这样就保证了本次通信双发都能够收到请求,是可靠的,而两次的话,只能保证客户端发的请求服务端能收到,并不能保证服务端发的请求客户端能够收到,所以需要三次握手建立可靠连接

    踩0 评论0
  • 01.08 13:52:59
    回答了问题 2020-01-08 13:52:59

    从数组创建ArrayList

    1.使用原生方式,拆分数组,添加到List List resultList = new ArrayList<>(array.length); for (String s : array) { resultList.add(s); } 2.使用Arrays.asList() List resultList= new ArrayList<>(Arrays.asList(array)); 注意:调用Arrays.asList()时,其返回值类型是ArrayList,但此ArrayList是Array的内部类,调用add()时,会报错:java.lang.UnsupportedOperationException,并且结果会因为array的某个值的改变而改变,故需要再次构造一个新的ArrayList。 3.使用Collections.addAll() List resultList = new ArrayList<>(array.length); Collections.addAll(resultList,array);

    踩0 评论0

2019年12月

  • 12.16 17:18:44
    回答了问题 2019-12-16 17:18:44

    【hi聊】2019年终回顾:程序员这些年经历最大的变化

    从买东西实体店,后来淘宝买,再到现在各种电商平台。 从最开始淘宝支付的时候必须网银支付,到后来的支付宝,再到现在的各种支付平台 从各种单体应用,到后来的分布式架构,再到soa,再到现在的微服务架构 经历了大数据,ai带到生活和技术中的各种角落的变化

    踩0 评论0
  • 12.09 19:29:07
    回答了问题 2019-12-09 19:29:07

    怎么将 SpringBoot web 应用程序部署为 JAR 或 WAR 文件?

    spring boot默认就是打的jar文件,打成war:将打包方式改为 war ,移除内置的tomcat容器,    org.springframework.boot      spring-boot-starter-web                           org.springframework.boot          spring-boot-starter-tomcat             继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法

    踩0 评论0
  • 12.09 19:21:14
    回答了问题 2019-12-09 19:21:14

    Spring 加载流程。

    spring中bean的加载主要有三步 核心是在AbstractApplicationContext的refresh方法 1,定位:定位到bean资源的位置,如xml,或者其他路径 2,加载:将定位到的的资源进行解析,保存为BeanDefinition对象(保存bean的所有信息) 3,注册:将BeanDefinition对象保存到map容器中 如果没有懒加载的bean,需要进行自动装配,调用getBean()方法创建真实的bean并保存到容器中。同时自动依赖注入

    踩0 评论0
  • 12.09 19:16:46
    回答了问题 2019-12-09 19:16:46

    Spring 事务的传播属性。

    1、PROPERGATION_MANDATORY: 方法必须运行在一个事务中,不存在事务则抛出异常

    2、PROPERGATION_NESTED:  存在事务则运行在嵌套事务中,不存在则创建一个事务

    3、PROPERGATION_NEVER: 当前方法不能运行在事务中,存在事务则抛出异常

    4、PROPERGATION_NOT_SUPPORT: 当前存在事务则将其 挂起

    5、PROPERGATION_REQUIRED: 不存在事务则创建一个事务

    6、PROPERGATION_REQUIRES_NEW: 新建一个自己的事务,不论当前是否存在事务

    7、PROPERGATION_SUPPORT: 存在事务则加入,不存在也可以

    踩0 评论0
  • 12.09 19:02:25
    回答了问题 2019-12-09 19:02:25

    mybatis中${value}与#{} 的区别是什么?

    ${value}的方式是使用预编译的方式对sql进行处理,不会出现sql注入的问题,#{}是直接替换该位置,做字符串拼接,会存在sql注入的问题

    踩0 评论0
  • 12.09 19:00:44
    回答了问题 2019-12-09 19:00:44

    SpringMvc中有个类把视图和数据都合并的一起的,叫什么?

    ModelAndView

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2020-04-24

    【每日挑战】SQL命令查询不重复记录?4.24

    d

    踩0 评论0
  • 回答了问题 2020-04-24

    java的垃圾回收机制是如何控制的?

    在Java运行时数据区中,将堆分为了新生代和老年代区域,其中新生代又分为Eden,s1,s2区,当需要创建新的对象时在eden区中申请内存,如果申请不到,则触发一次younggc,young gc时将eden区和s1区中的对象全部复制到s2区,然后直接清除eden和s2区。下一次重复上一次操作,当一个对象存活15次以后,将移动到老年区,当老年区满了之后,将会产生Major GC,根据使用的垃圾收集器不同,表现也会不同,大多使用的是标记整理算法。

    踩0 评论0
  • 回答了问题 2020-01-09

    SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?

    java是按需加载的,springboot启动的时候,除懒加载外的所有bean都会被注册并实例化到bean容器中,所以当你删除了jar之后,内存中依然存在有原加载并实例化后的对象,所以你可以访问,因为所有的controller都是启动的时候就实例化了的,所以删除jar之后依然可以访问,你可以试试再controller中调用创建某个对象的方法,试试删除之后调用创建方法能不能正确创建对象。

    踩0 评论0
  • 回答了问题 2020-01-09

    java项目的web.xml中配置了连个servlet,为什么第一个不可匹配,第二个就可以呢?

    没看明白,看信息像是文件找不到,要把具体配置文件发出来才知道

    踩0 评论0
  • 回答了问题 2020-01-09

    【JAVA小白】 问关于java.io.FileNotFoundException: 的问题

    原因异常信息中已经有了,就是/Users/apple/Desktop/Result这个路径是个构建File是一个目录,不是一个文件,不能使用目录构建FileInputStream对象,要是一个文件才可以

    踩0 评论0
  • 回答了问题 2020-01-09

    SpringMVC中,在类名上加一个@RequestMapping,静态资源获取不到

    jsp吗?有点忘了jsp了,但是如果没有猜错的话,你引用资源的地方应该用的是相对路径,你可以使用获取根路径,再拼接资源路径

    踩0 评论0
  • 回答了问题 2020-01-09

    Spring getBean可以获取,但是@Resource无法获取到

    @Autowired获取呢?具体还是看代码才能判断为啥

    踩0 评论0
  • 回答了问题 2020-01-09

    jdk底层,什么地方用到了锁?

    有资源共享需求,又要防止线程安全的,可能都会用到锁,比如Vector,Hashtable之类的StringBuffer等类都用到synchronized关键字,并发包下的类用到的乐观锁等。有资源共享的情况下,如果jdk提供的类没有用到锁,那么需要自己加锁防止线程安全问题。

    踩0 评论0
  • 回答了问题 2020-01-09

    19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能

    收藏起来

    踩0 评论0
  • 回答了问题 2020-01-09

    Vector, ArrayList, LinkedList的区别是什么?

    Vector和ArrayList的底层都是使用数组的方式实现,实现方式相同,插入,删除慢,查询快,不过Vector加了synchronized关键字,所以是线程安全的,ArrayList则是线程不安全的, LinkedList的实现方式的双向链表,插入,删除快,查询慢

    踩0 评论0
  • 回答了问题 2020-01-09

    Session, Cookie的区别是什么?

    Session是将信息保存到服务端,给客户端一个唯一获取session的cookie,请求时将该cookie带到服务端,就能获取到session对象。cookie是保存到客户端的硬盘上的,随请求发送到服务端,所以相对来说cookie是不安全的,容易被破解后获取cookie中的信息

    踩0 评论0
  • 回答了问题 2020-01-09

    代理的实现原理。

    Java种jdk的动态代理的实现原理是动态的生成一个实现了接口的所有方法的一个类,并且该类保留了InvocationHandler的对象的引用,使用Proxy.newInstance()方法获得的其实是生成的类的对象,调用接口方法时即是调用生成对象的方法,但是在生成的类的对象时,由于保留了InvocationHandler的引用,就调用InvocationHandler这个接口的invoke()方法,并将接口的方法和参数传入到invoke()中,这样就实现了动态代理。 cglib则是使用字节码技术,没有实现接口,所以就动态生成一个继承被代理类的对象,然后实现动态代理。

    踩0 评论0
  • 回答了问题 2020-01-09

    为什么TCP连接需要三次握手,两次不可以吗,为什么?

    因为需要保证同信的可靠,两次不可以,TCP三次握手可以保证客户端发送的请求服务端能够收到,并且服务端发送的请求Clint端也能保证收到,因为第三次握手是客户端对服务端发送的消息做了回应,这样就保证了本次通信双发都能够收到请求,是可靠的,而两次的话,只能保证客户端发的请求服务端能收到,并不能保证服务端发的请求客户端能够收到,所以需要三次握手建立可靠连接

    踩0 评论0
  • 回答了问题 2020-01-08

    从数组创建ArrayList

    1.使用原生方式,拆分数组,添加到List List resultList = new ArrayList<>(array.length); for (String s : array) { resultList.add(s); } 2.使用Arrays.asList() List resultList= new ArrayList<>(Arrays.asList(array)); 注意:调用Arrays.asList()时,其返回值类型是ArrayList,但此ArrayList是Array的内部类,调用add()时,会报错:java.lang.UnsupportedOperationException,并且结果会因为array的某个值的改变而改变,故需要再次构造一个新的ArrayList。 3.使用Collections.addAll() List resultList = new ArrayList<>(array.length); Collections.addAll(resultList,array);

    踩0 评论0
  • 回答了问题 2019-12-16

    【hi聊】2019年终回顾:程序员这些年经历最大的变化

    从买东西实体店,后来淘宝买,再到现在各种电商平台。 从最开始淘宝支付的时候必须网银支付,到后来的支付宝,再到现在的各种支付平台 从各种单体应用,到后来的分布式架构,再到soa,再到现在的微服务架构 经历了大数据,ai带到生活和技术中的各种角落的变化

    踩0 评论0
  • 回答了问题 2019-12-09

    怎么将 SpringBoot web 应用程序部署为 JAR 或 WAR 文件?

    spring boot默认就是打的jar文件,打成war:将打包方式改为 war ,移除内置的tomcat容器,    org.springframework.boot      spring-boot-starter-web                           org.springframework.boot          spring-boot-starter-tomcat             继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法

    踩0 评论0
  • 回答了问题 2019-12-09

    Spring 加载流程。

    spring中bean的加载主要有三步 核心是在AbstractApplicationContext的refresh方法 1,定位:定位到bean资源的位置,如xml,或者其他路径 2,加载:将定位到的的资源进行解析,保存为BeanDefinition对象(保存bean的所有信息) 3,注册:将BeanDefinition对象保存到map容器中 如果没有懒加载的bean,需要进行自动装配,调用getBean()方法创建真实的bean并保存到容器中。同时自动依赖注入

    踩0 评论0
  • 回答了问题 2019-12-09

    Spring 事务的传播属性。

    1、PROPERGATION_MANDATORY: 方法必须运行在一个事务中,不存在事务则抛出异常

    2、PROPERGATION_NESTED:  存在事务则运行在嵌套事务中,不存在则创建一个事务

    3、PROPERGATION_NEVER: 当前方法不能运行在事务中,存在事务则抛出异常

    4、PROPERGATION_NOT_SUPPORT: 当前存在事务则将其 挂起

    5、PROPERGATION_REQUIRED: 不存在事务则创建一个事务

    6、PROPERGATION_REQUIRES_NEW: 新建一个自己的事务,不论当前是否存在事务

    7、PROPERGATION_SUPPORT: 存在事务则加入,不存在也可以

    踩0 评论0
  • 回答了问题 2019-12-09

    mybatis中${value}与#{} 的区别是什么?

    ${value}的方式是使用预编译的方式对sql进行处理,不会出现sql注入的问题,#{}是直接替换该位置,做字符串拼接,会存在sql注入的问题

    踩0 评论1
  • 回答了问题 2019-12-09

    SpringMvc中有个类把视图和数据都合并的一起的,叫什么?

    ModelAndView

    踩0 评论0
正在加载, 请稍后...
滑动查看更多