1315067356609456_个人页

个人头像照片 1315067356609456
0
29
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2019-07-17

    jdk8新特性

    Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。Date Time API − 加强对日期与时间的处理。Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。经常使用到是 lambda 表达式,但是需要选择使用,可能带来代码比较难维护;Date Time 融合了jodatime,比较常用;其他在一般Java编程中不是经常使用
    踩0 评论0
  • 回答了问题 2019-07-17

    在spring boot2.0中,一个controller中同时调用多个接口,能异步实现吗? 我有个页面需要调用7个左右的接口,想用异步方式请求这个几个接口,获取数据 请问可以做到吗?

    可以,使用Future就可以了。 private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat('task-pool-%d').build(); private static ExecutorService FUTURE_TASK_EXECUTOR = new ThreadPoolExecutor( 3, 10, 60L, TimeUnit.SECONDS,new LinkedBlockingDeque<>(), THREAD_FACTORY ); public static Future submit(Callable task) { return FUTURE_TASK_EXECUTOR.submit(task); } 然后使用 Future.get 就可以拿到结果了
    踩0 评论0
  • 回答了问题 2019-07-17

    jvm内存模型

    盗用一张图吧:
    踩0 评论0
  • 回答了问题 2019-07-17

    如何配置jvm最大堆内存

    需要根据你到需要进行设置,所以需要理解JVM的内存有什么:JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。(java8 开始,此部分放在元空间中)Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Young Generation)。年老代和年轻代的划分对垃圾收集影响比较大。年轻代:所有新生成的对象首先都是放在年轻代。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代一般分3个区,1个Eden区,2个Survivor区(from 和 to)。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当一个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当另一个Survivor区也满了的时候,从前一个Survivor区复制过来的并且此时还存活的对象,将可能被复制到年老代。2个Survivor区是对称的,没有先后关系,所以同一个Survivor区中可能同时存在从Eden区复制过来对象,和从另一个Survivor区复制过来的对象;而复制到年老区的只有从另一个Survivor区过来的对象。而且,因为需要交换的原因,Survivor区至少有一个是空的。特殊的情况下,根据程序需要,Survivor区是可以配置为多个的(多于2个),这样可以增加对象在年轻代中的存在时间,减少被放到年老代的可能。针对年轻代的垃圾回收即 Young GC。年老代:在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。针对年老代的垃圾回收即 Full GC。需要根据不用的应用场景设置不同区域的大小:例如如果请求都是短频快,需要扩大吞吐量时,可以适当增加年轻代
    踩0 评论0
  • 回答了问题 2019-07-17

    MySQL 的内置函数有没有随机生成中文字符的?

    MYSQL没有内置生成中文字符的函数,理论上可以变通的执行。随机字符实现方式:select substring(MD5(RAND()),1,6);查询好汉字编码范围从中获取一个字符即可,使用到到函数:SELECT HEX('国') ;SELECT UNHEX('E59BBD');
    踩0 评论0
  • 回答了问题 2019-07-17

    我的IDEA 预判断返回值的提示出不来了?哪里可以设置?

    快捷键 ctrl + alt + v ?
    踩0 评论0
  • 回答了问题 2019-07-17

    大家好,业务中遇到了大数据量(接近百万级)的数据导出成excel/csv,之前的方案是java应用从mysql查出数据,poi生成excel,在pg有没有更好的方案?有七八十万的导出场景

    异步流式写入文件服务器,然后下载。POI中本身就支持流式写入,如果使用CSV就更加简单了。
    踩0 评论0
  • 回答了问题 2019-07-17

    SSO

    这个博客能帮助你:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
    踩0 评论0
  • 回答了问题 2019-07-17

    mysql分库分表

    tddl (阿里巴巴)or sharding-jdbc(当当)能帮助你
    踩0 评论0
  • 回答了问题 2019-07-17

    批量更新怎么使用乐观锁

    一条SQL语句更新多条记录,此时使用数据version方式来实现的乐观锁是一个伪命题。
    踩0 评论0
  • 回答了问题 2019-07-17

    [@炯轩][¥20]Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()?

    不同Set实现方式不一样,判断重复方式不一样。 例如,HashSet:HaseSet的其实是通过HashMap的Key来封装的,也就是说HashMap的Key是怎么判断重复,HashSet就是怎么判断的。 HashMap 的 key 判断重复方式:首先取Hash(右移16位), hash值首先要相等,然后判断地址是否相等,然后在通过equals判断: p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))) 再如,TreeSet:TreeSet 是通过treeMap的Key来封装的,treeMap中的key是需要比较大小的,所以通过comparator来比较两个key相同,他们就是相同。 comparator 可能使用的 equals,也可能有其他的逻辑。 总之,不同Set的实现方式,他们的判断重复方式方法不一样 哦,答案呢?
    踩0 评论0
  • 回答了问题 2019-07-17

    [@talishboy][¥20]hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?

    hashmap 是线程不安全的,hashtable是线上安全的;hashtable 的线程完全是通过方法上加 synchroinzed 实现的;没有 concurrenthashtable,存在concurrenthashmap;concurrenthashmap 是通过分段锁来保障线程安全的。----- hashtable -----public synchronized V get(Object key) { Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; for (Entry e = tab[index] ; e != null ; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { return (V)e.value; } } return null; } ------ concurrenthashmap -----public V get(Object key) { Node[] tab; Node e, p; int n, eh; K ek; int h = spread(key.hashCode()); if ((tab = table) != null && (n = tab.length) > 0 && (e = tabAt(tab, (n - 1) & h)) != null) { if ((eh = e.hash) == h) { if ((ek = e.key) == key || (ek != null && key.equals(ek))) return e.val; } else if (eh
    踩0 评论0
  • 回答了问题 2019-07-17

    [@炯轩][¥20]Springboot 记录请求日志,内容有请求参数,返回值,ip这一类的,使用filter,拦截器,aop这三种方式哪个好点

    仅仅记录日志,Filter可以满足,并且能够记录原汁原味的请求、响应数据
    踩0 评论0
  • 回答了问题 2019-07-17

    Hashmap

    树+链表,非线程安全:https://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/ 这个博客可能能帮到你 树+链表 / 非线程安全https://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/ 上面的博客可能帮助你
    踩0 评论0
  • 回答了问题 2019-07-17

    什么情况导致java内存泄漏

    下面博客讲的比较清楚,可以参考一下https://www.jianshu.com/p/efec4c77e265
    踩0 评论0
  • 回答了问题 2019-07-17

    为什么linux 停止tomcat了,显示tomcat进程还有?

    tomcat 对应的JAVA进程没有杀死
    踩0 评论0
  • 回答了问题 2019-07-17

    spring boot 事务

    事物是数据库的,不是springboot的。
    踩0 评论0
  • 回答了问题 2019-07-17

    Spring security框架原理

    本质是使用SpringAOP。初步了解推荐《Spring in Action》spring security 章节,了解基本原理,然后在看spring 4、5 的更新内容。
    踩0 评论0
  • 回答了问题 2019-07-17

    jvm的原理

    问题太泛。如果需要系统了解,同1楼,推荐《深入理解Java虚拟机》。-------- 基础了解 --------Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。因此实现java平台无关性。它是 Java 程序能在多平台间进行无缝移植的可靠保证,同时也是 Java 程序的安全检验引擎(还进行安全检查)。需要了解的内容:classloader (双亲委派模型)执行引擎 (PC程序计数器、java虚拟机栈、本地方法栈、Java堆、方法区、常量池)GC(分代垃圾回收)
    踩0 评论0
  • 回答了问题 2019-07-17

    学生服务器新手用哪一个好一点

    硬盘不要太大40G足够,1G /1核就够用
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息