
JAVA
扎个冲天揪
冲冲冲冲冲冲鸭
展开
-
JVM_垃圾回收器
JVM_垃圾收集器垃圾收集器一共有7种,如果说收集算法是内存回收的方法,那个垃圾收集器就是垃圾回收的具体实现。以中间绿线为界,上边三个用于年轻代,下边三个用在年老代,而G1则老少通吃,**黑线**线表示两个回收器可搭配使用,**红线**则表示两者可以在同一区域交替使用。由于G1在JDK1.7才达到商用级别,而且目前线上环境也很少使用。名称区域算法适用情况Seria...原创 2019-07-07 14:34:20 · 160 阅读 · 0 评论 -
jvm_线程TLAB局部缓存区域
JVM_线程TLAB局部缓存区域1.对象内存分配的两种方法Ø 指针碰撞 假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”Ø 空闲列表 如果Java堆中的内存并不是规整的,已使用的内存和空闲的内存相互交错,那就没...原创 2019-07-07 14:36:48 · 589 阅读 · 0 评论 -
JVM_内存泄漏和内存溢出
内存泄漏概念:一个不再被程序使用的对象或者变量还在内存中占有存储空间。(1)堆中申请的空间没有被释放(2)对象不在使用但还在内存中保留内存泄漏的原因:(1)静态集合类,如hashmap和vector,如果容器为静态,她们的生命周期与程序一致。(2)各种连接,如数据库连接,IO连接(3)监听器:通常一个应用中会用到多个监听器,但是在释放对象的同时往往没有相应的删除监听器(4...原创 2019-07-07 14:39:00 · 695 阅读 · 0 评论 -
JAVA_集合中的快速失败与安全失败
快速失败(fail—fast)机制 java集合框架中的一种错误检测机制。多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除),则会抛出Concurrent Modification Exception。 fail-fast机制并不保证在不同步的修改下一定会抛出异常,这种机制一般仅用于检测bug。【在循环迭代中修改会报异常,在迭代中修改不会报异常】...原创 2019-07-07 14:58:27 · 386 阅读 · 0 评论 -
Hashmap底层
HashMap简介1.实现原理 底层是链表+数组,当链表长度大于8自动转化成红黑树。 首先有一个每个元素都是链表的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,...原创 2019-07-07 15:06:32 · 155 阅读 · 0 评论 -
JAVA_深拷贝和浅拷贝
浅拷贝 对基本数据类型进行了拷贝 对引用数据类型只是进行了引用的传递,而没有真实的创建一个新的对象。即 对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝底层实现:(1)对类实现Cloneable接口(implements Cloneable),并且重写clonepublic class A implements Cloneable{ String name;...原创 2019-07-07 15:11:17 · 1465 阅读 · 0 评论 -
JAVA中的IO同步阻塞和NIO同步非阻塞
IO和NIO的区别IONIO面向流面向缓冲阻塞IO非阻塞IO无选择器1.面向流与面向缓冲Java IO 面向流意味着每次从流中读一个或多个字节, 直至读取所有字节,它们没有被缓存在任何地方。 此外, 它不能前后移动流中的数据。Java NIO 中把数据读取到一个缓冲区中, 需要时可在缓冲区中前后移动。 这就增加了处理过程中的灵活性。而且, 需...原创 2019-07-07 15:27:23 · 345 阅读 · 0 评论 -
JSR303参数校验
JSR303参数校验开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。故引出使用JSR303来做参数校验。参数校验的实现: 手机号和密码字段自定义注解为了让客户端显示更加友好需要自定义异常拦截器1. 添加依...原创 2019-07-07 15:33:21 · 286 阅读 · 0 评论 -
排序算法
排序算法一览表1.冒泡排序[稳定]比较相邻的元素。如果第一个比第二个大,就交换他们两个。public static int[] Bubblesort(int []arr){ for(int i =0;i<arr.length-1;i++){//外层控制排序的趟数 for(int j = i;j<arr.length-i-1;j++){//内层循环控...原创 2019-07-07 15:36:11 · 130 阅读 · 0 评论 -
JVM_回收算法
JVM回收算法垃圾回收算法有4种标记-清除算法复制算法标记-整理算法分代收集算法1.复制算法可用的内存空间分为大小相等的两块,每次只是用其中的一块,当这一块被用完的时候,就将还存活的对象复制到另一块中,然后把原已使用过的那一块内存空间一次回收掉。这个算法常用于新生代的垃圾回收。优点复制算法解决了标记-清除算法的效率问题,以空间换时间。缺点但是当存...原创 2019-07-07 14:32:09 · 119 阅读 · 0 评论 -
JVM_对象已死
垃圾收集器再对堆进行回收前,第一个要做的事就是确定对象是否还存活,判断方法有2种1)引用计数法2)可达性分析1.引用计数法给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数值为0的对象就是不可能再被使用的。缺点:很难解决对象之间的相互循环引用问题,导致它们的引用计数都不为0,于是引用计数算法无法通知GC收集器收集它们。...原创 2019-07-07 14:29:44 · 165 阅读 · 0 评论 -
JVM_内存分配和回收策略
1.内存分配1.对象优先在eden分配 对象先在新生代Eden区分配,当Eden区没有足够空间进行分配,虚拟机将发起 Minor GC2.大对象直接进入老年代 大对象指的是需要大量的连续内存空间的java对象。如很长的字符串或者数组 -XX:PretenureSizeThreshold:大于该值直接在老年代分配3.长期存活的对象直接进入老年代 设置对象...原创 2019-07-07 14:28:51 · 148 阅读 · 0 评论 -
设计模式-各种模式应用场景
创建型模式将对象的创建与使用分离。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。- 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。- 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。- 工厂方法(Factory...原创 2019-07-08 14:49:04 · 698 阅读 · 0 评论 -
2019届百度秋招笔试题【混战世界】【字符串计数】
1.题目描述 战乱年代。整个世界各个军阀的英团泄战,你是P7军团的战略参谋,你手下n(保证为3的倍数)个士兵,第i个土兵的物理攻击数值为Ai,魔法攻击数值为Bi,你需要将这些士兵三等分为三个连,第一个连需要去物理空间参加物理对抗战争,战斗力估值W1为士兵的物理攻击数值之和:第二个连需要去魔法空间参加魔法对抗战争,战斗力估值W2为士兵的魔法攻击数值之和:第三个连需要去虚幻空间参加物理魔法...原创 2019-07-08 15:52:51 · 1751 阅读 · 1 评论 -
2019届网易秋招笔试题第一题_翻转翻转
1.题目描述 给定一个N*M的矩阵,在矩阵中每一块有一张牌,我们假定刚开始的时候所有牌的牌面向上。现在对于每个块进行如下操作:翻转某个块中的牌,并且与之相邻的其余八张牌也会被翻转。XXXXXXXXX 如上矩阵所示,翻转中间那块时,这九块中的牌都会被翻转一次。 请输出在对矩阵中每一块进行如上操作以后,牌面向下的块的个数。输入描述: 输入的第一行为测试用例数t(1 <= t...原创 2019-07-08 18:51:01 · 2341 阅读 · 3 评论 -
【动态规划】_leetcode刷题的各种股票问题
1.leetcode_121.买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入...原创 2019-07-09 18:34:38 · 604 阅读 · 0 评论 -
2019届小米秋招笔试题第一题_厨艺大赛奖金
1.题目描述 小米食堂每年都会举办一次厨艺大赛,假设参赛的厨师一共有n位(n < 1000),比赛结束后没有公布评分,但是站在领奖台上的一排厨师中每位厨师都能看到与自己相邻的厨师(左或者右)里评分比自己低(看不到比自己分数高的人的分数)的评分。比赛结束之后要发奖金,以1K为单位,每位厨师至少会发1K的奖金,另外,如果一个厨师发现自己的奖金没有高于比自己评分低的厨师的奖金,就会不满意,作...原创 2019-07-09 19:21:55 · 742 阅读 · 0 评论 -
HashMap循环遍历方式
1. map.EntrySetfor(Map.Entry<String,List<String>> entry:map.entrySet()){ entry.getKey(); entry.getValue(); }2.迭代器 Iterator<Map.Entry<String, Strin...原创 2019-07-06 16:58:21 · 9330 阅读 · 0 评论 -
链表题【翻转链表】【环形链表】【删除重复元素】【两数相加】【相交链表】
链表的定义static class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}1.翻转链表https://leetcode-cn.com/problems/reverse-linked-list/递归:在遍历链表时,将当前节点cur的next指向前一个元素,由于节点没有引用...原创 2019-07-31 22:08:59 · 268 阅读 · 0 评论