10 2020 档案

摘要:Hashmap 在多线程下不安全,但是 在 jdk 1.7 和 jdk 1.8 不安全体现不同。 在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。 在jdk1.8中,在多线程环境下,会发生数据覆盖的情况。 JDK1.7 HashMap 1.7 多线程下不安全,体现在其扩容的时候。 当 阅读全文
posted @ 2020-10-31 16:38 抽象Java 阅读(153) 评论(0) 推荐(0)
摘要:简单版 在 Java 中,CMS(Concurrent Mark-Sweep)和 G1(Garbage-First)都是垃圾收集器(Garbage Collectors),它们在垃圾回收的方式和目标上有明显的区别。 CMS(Concurrent Mark-Sweep) 类型: CMS 是一种低延迟的 阅读全文
posted @ 2020-10-30 09:39 抽象Java 阅读(1202) 评论(0) 推荐(0)
摘要:B-树、B+树、红黑树,都是平衡查找树,那么查询效率上讲,平均都是O(logn) 为什么是B+ 树不用 B 树 B + 树只有叶节点存放数据,其余节点用来索引,而 B -树是每个索引节点都会有 数据域。 B树的内部节点都是存储实际数据的,增大了节点大小,增加了磁盘IO次数(磁盘IO一次读出的数据量大 阅读全文
posted @ 2020-10-29 09:17 抽象Java 阅读(679) 评论(0) 推荐(0)
摘要:二叉查找/搜索/排序树 BST (binary search/sort tree) 或者是一棵空树; 或者是具有下列性质的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值; (2)若它的右子树上所有结点的值均大于它的根节点的值; (3)它的左、右子树也分别为二叉排序树。 阅读全文
posted @ 2020-10-28 19:56 抽象Java 阅读(247) 评论(0) 推荐(0)
摘要:https://zhuanlan.zhihu.com/p/27700617 平衡二叉树 平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构; 特点: 平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡 阅读全文
posted @ 2020-10-27 19:53 抽象Java 阅读(290) 评论(0) 推荐(0)
摘要:1、事务 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2、外键 InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISA 阅读全文
posted @ 2020-10-27 19:26 抽象Java 阅读(208) 评论(0) 推荐(0)
摘要:有两个类, 父类 Father, 子类 Son 向上转型 把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换 父类引用 f1 指向 子类对象 Father f1 = new Son(); 向下转型 当用父类变量指向子类类型的时候,变量只有父类的方法而不能调用子类的方法,若想 阅读全文
posted @ 2020-10-25 12:24 抽象Java 阅读(123) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/nihui123/article/details/107018787 整体的远程调用执行流程,大致分为4步,具体如下: 第1步:通过Spring IOC 容器实例,装配代理实例,然后进行远程调用。 上面说到,Feign在启动时,会为加上了@FeignCli 阅读全文
posted @ 2020-10-22 19:08 抽象Java 阅读(977) 评论(0) 推荐(0)
摘要:重载(Overload): 让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态 阅读全文
posted @ 2020-10-22 15:01 抽象Java 阅读(121) 评论(0) 推荐(0)
摘要:ThreadLocal ThreadLocal是一个关于创建线程局部变量的类。 通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将 阅读全文
posted @ 2020-10-22 13:54 抽象Java 阅读(303) 评论(0) 推荐(0)
摘要:java默认的在调用子类构造方法前先调用父类的构造方法,如果你没有指定调用父类的哪个构造方法,那么java默认调用父类无参数的构造方法 如果子类未指定super(),而父类又未写无参构造函数,会在编译时将发生错误 父亲类那里没有找到默认的构造器。 说明:如果父类没有提供默认的构造方法,而只是提供了有 阅读全文
posted @ 2020-10-22 13:43 抽象Java 阅读(601) 评论(0) 推荐(0)
摘要:linux查询java进程 ps -ef | grep java kill -9 [PID] -9 表示强迫进程立即停止 linux查看内存占用情况 cat /proc/meminfo sudo atop atop 命令是一个终端环境的监控命令。它显示的是各种系统资源的综合,并且在高负载的情况下进行 阅读全文
posted @ 2020-10-21 19:39 抽象Java 阅读(609) 评论(0) 推荐(0)
摘要:sonar 代码复杂度达到 20 怎么优化。 一、 if else for相互嵌套 这样可以减少一个所谓的套娃。如果是if是在for循环里面的话,我们需要拆出来一个方法,来将for循环里面的逻辑判断处理一下。这样我们就可以将这个代码的复杂度给降低下去 二、某个字符串多次出现 某个字符串出现了7次,需 阅读全文
posted @ 2020-10-21 19:14 抽象Java 阅读(1497) 评论(0) 推荐(0)
摘要:CPU 缓存 伪共享 CPU 缓存了不需要缓存的数据,导致外部读取 影响程序的时间 缓存行填充 强行把数据隔离开【空间换时间】 多线程优化的本质,就是 空间换时间,更多的服务器, 程序优化 > 单次 > 事少 资源少 > 时间短 死锁 jcmd 看当前机器 jvm 进程信息,让它执行指令 jstac 阅读全文
posted @ 2020-10-21 19:09 抽象Java 阅读(537) 评论(0) 推荐(0)
摘要:参数说明 corePoolSize 核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。 核心线程在allowCoreThreadTimeout被设置为true时会超时退出,默认情况下不 阅读全文
posted @ 2020-10-21 09:15 抽象Java 阅读(236) 评论(0) 推荐(0)
摘要:一、使用UUID 使用 UUID, UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。 UUID是基于当前时间、计数器(counter 阅读全文
posted @ 2020-10-20 18:20 抽象Java 阅读(166) 评论(0) 推荐(0)
摘要:对于不想进行序列化的变量,使用 transient 关键字修饰。 transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和方法。 阅读全文
posted @ 2020-10-20 17:57 抽象Java 阅读(502) 评论(0) 推荐(0)
摘要:都是泪 阅读全文
posted @ 2020-10-19 23:35 抽象Java 阅读(58) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/demingblog/p/9542124.html https://segmentfault.com/a/1190000017042135 https://www.cnblogs.com/moxiaotao/p/10829799.html 阅读全文
posted @ 2020-10-19 14:58 抽象Java 阅读(100) 评论(0) 推荐(0)
摘要:过滤器和拦截器的区别: 1、过滤器是基于函数回调,拦截器是基于java的反射机制的。 2、过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器。 3、过滤器可以拦截几乎所有的请求(包含对静态资源的请求),而拦截器只拦截action请求(不 阅读全文
posted @ 2020-10-19 13:22 抽象Java 阅读(3905) 评论(0) 推荐(2)
摘要:一、Spring 源码解析主要步骤概述 1、解析配置,创建 Bean 容器,加载并注册 Bean名 和 Bean定义 到 Bean容器; 2、注册和执行 BeanFactory容器后处理器 (BeanFactoryPostProcessor ) 的实例; 3、注册 “Bean后处理器”( BeanP 阅读全文
posted @ 2020-10-17 14:07 抽象Java 阅读(997) 评论(0) 推荐(0)
摘要:Map HashMap HashMap的初始容量为16。 扩容因子 默认 0.75 , 可以改。 扩容时是当前容量翻倍即:capacity*2。 查询效率 jdk 1.7 为 O(N), jdk 1.8 为 O(lgN) HashTable 初始容量为11。扩容因子 默认 0.75 , 可以改。扩容 阅读全文
posted @ 2020-10-17 10:32 抽象Java 阅读(93) 评论(0) 推荐(0)
摘要:问: 先讲讲 hashMap 的数据结构 答: jdk8 中 hashMap 是 数组 + 链表 + 红黑树, 每个数据单元是一个 Node 结构。(jdk 1.7 是 entry 数组,数据单元是 Entry) Node 结构有 key 字段, 有 value 字段, 还有 next 字段,还有 阅读全文
posted @ 2020-10-16 16:36 抽象Java 阅读(146) 评论(0) 推荐(0)
摘要:1、 Spring 源码环境搭建过程遇到什么问题 Spring 源码使用 gradle 管理, 必须先安装 gradle, gradle 版本不能太低。不能低于Spring 项目的 gradle 版本。 JDK 版本不能太低,比如 jdk8, 后面使用 JDK 11 才成功。 IDE 根据项目的依赖 阅读全文
posted @ 2020-10-15 14:21 抽象Java 阅读(411) 评论(0) 推荐(0)
摘要:https://www.bilibili.com/video/BV1xV41127u6 一、ConcurrentHashMap 存储数据结构 问: ConcurrentHashMap 存储数据结构是什么?你给我描述描述呗。 答: 和普通的 hashMap 一样,即 数组 + 链表 + 红黑树, 存储 阅读全文
posted @ 2020-10-14 14:28 抽象Java 阅读(495) 评论(0) 推荐(0)
摘要:ConcurrentHashMap 如何保证线程安全 https://blog.csdn.net/baidu_28523317/article/details/84262712 jdk1.7 ConcurrentHashMap将数据分别放到多个slot 中,默认16个,每一个Segment中又包含了 阅读全文
posted @ 2020-10-14 14:11 抽象Java 阅读(192) 评论(0) 推荐(0)
摘要:HashMap 插入 过程 1、获取数组下标 2、插入链表 获取 过程 查询速度 扩容 扩容条件 扩容方式 扩容问题 hashmap 可以将不定长的输入,通过散列算法转换成一个定长的输出,这个输出就是散列值 JDK1.7的hashMap Hashmap源码 继承类 AbstractMap<K,V> 阅读全文
posted @ 2020-10-14 13:19 抽象Java 阅读(485) 评论(0) 推荐(0)
摘要:一、节点有两个维度,一个是永久的还是临时的,另一个是否有序。组合成的四种类型如下: 1:PERSISTENT // 持久化节点 , 节点创建后会被持久化,只有主动调用delete方法的时候才可以删除节点。 2:PERSISTENT_SEQUENTIAL // 持久化排序节点, 排序节点:创建的节点名 阅读全文
posted @ 2020-10-13 23:29 抽象Java 阅读(1404) 评论(0) 推荐(0)
摘要:Nginx 代理缓存机制 阅读全文
posted @ 2020-10-13 22:53 抽象Java 阅读(110) 评论(0) 推荐(0)
摘要:负载均衡算法 upstream 支持4种负载均衡调度算法: A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器; B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。 阅读全文
posted @ 2020-10-13 22:26 抽象Java 阅读(409) 评论(0) 推荐(0)
摘要:spring core:框架的最基础部分,提供 ioc 和依赖注入特性。 spring context:构建于 core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法。 spring dao:Data Access Object 提供了JDBC的抽象层。 spring ao 阅读全文
posted @ 2020-10-13 14:42 抽象Java 阅读(131) 评论(0) 推荐(0)
摘要:Leader 选举会分两个过程 启动的时候的 leader 选举、 leader 崩溃的时候的的选举 启动的时候的 leader 选举 服务器启动时的 leader 选举 每个节点启动的时候状态都是 LOOKING,处于观望状态, 接下来就开始进行选主流程 进行 Leader 选举,至少需要两台机器 阅读全文
posted @ 2020-10-13 13:52 抽象Java 阅读(248) 评论(0) 推荐(0)
摘要:消息广播的过程实际上是一个 简化版本的二阶段提交过程 1. leader 接收到消息请求后,将消息赋予一个全局唯一的64 位自增 id,叫:zxid,通过 zxid 的大小比较既可以实现因果有序这个特征 2. leader 为每个 follower 准备了一个 FIFO 队列(通过 TCP协议来实现 阅读全文
posted @ 2020-10-13 13:46 抽象Java 阅读(809) 评论(0) 推荐(0)
摘要:一个真正有思考并且收获进步的正向反馈过程才会最快的进入状态。 有时候看资料发现,看了几次还是没弄好,这时候就要即使反思和调整状态 一、心态和精神状态 有时候,在看过一遍概念之后,感觉没有学到什么,一开始可能认为是暂时刚刚接触没有弄到的关系。 但是,看了几遍,发现还是没明白。 这时候,很可能是心态和精 阅读全文
posted @ 2020-10-12 14:41 抽象Java 阅读(211) 评论(0) 推荐(0)
摘要:IoC控制反转(IoC,Inversion of Control) 是一个概念,是一种思想。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。即是将new 的过程交给spring容器去处理 阅读全文
posted @ 2020-10-12 10:47 抽象Java 阅读(1066) 评论(0) 推荐(0)
摘要:JVM中的堆一般分为三大部分:新生代、老年代、永久代,其大致的占比如下: 一、新生代 新生代主要用来存放新生的对象。一般占据堆空间的1/3。在新生代中,保存着大量的刚刚创建的对象,但是大部分的对象都是朝生夕死,所以在新生代中会频繁的进行MinorGC,进行垃圾回收。新生代又细分为三个区:Eden区、 阅读全文
posted @ 2020-10-11 16:50 抽象Java 阅读(713) 评论(0) 推荐(0)
摘要:启动过程 在一个基于springmvc的web应用中,需要有一个web容器,一般我们用tomacat,这个web容器提供了一个全局的上下文环境ServletContext,同时也是Spring IoC容器的宿主环境。宿主容器启动时,其入口文件便是web.xml。web.xml需要定义两个最基本的内容 阅读全文
posted @ 2020-10-09 14:27 抽象Java 阅读(532) 评论(0) 推荐(0)
摘要:SpringMVC 介绍 1、Spring MVC的简单工作流程图: 首先这里先用个简单的流程图介绍一下Spring mvc的工作流程概念, 如下图简单易懂。 大致步骤 前端控制器接受到请求 前端控制器 通过 HandlerMapping 查找 handler 并 获取 handler 前端控制器 阅读全文
posted @ 2020-10-09 13:50 抽象Java 阅读(178) 评论(0) 推荐(0)
摘要:Spring事务传播机制 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播, 即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述 当我们调用一个基于 阅读全文
posted @ 2020-10-09 13:14 抽象Java 阅读(401) 评论(0) 推荐(0)
摘要:初始化 ArrayList的底层是一个动态数组,ArrayList首先会对传进来的初始化参数initalCapacity进行判断 如果参数等于0,则将数组初始化为一个空数组, 如果不等于0,将数组初始化为一个容量为10的数组。 扩容方式 扩容时机 当数组的大小大于初始容量的时候(比如初始为10,当添 阅读全文
posted @ 2020-10-09 00:15 抽象Java 阅读(1189) 评论(0) 推荐(0)
摘要:HashMap 的底层原理 往 HashMap 中 put 元素时,先根据 key 的 hash 值得到这个 Entry 元素在数组中的位置(即下标),然后把这个 Entry 元素放到对应的位置中,如果这个 Entry 元素所在的位子上已经存放有其他元素就在同一个位子上的 Entry 元素以链表的形 阅读全文
posted @ 2020-10-08 21:14 抽象Java 阅读(873) 评论(0) 推荐(0)
摘要:spring源码 https://segmentfault.com/a/1190000012887776 阅读全文
posted @ 2020-10-06 15:18 抽象Java 阅读(141) 评论(0) 推荐(0)
摘要:把一个事情变得清晰有逻辑 第一、先说总的,再说分的 第二、分类划分 第三、概括总结 第四、逻辑顺序 即 1、结论先行 2、以上统下 3、归类分结 4、逻辑递进 一、结论先行 每一个观点都的是它下边内容的结论先行 先抛出观点,再说出理由,再总结 二、以上统下 三、归类分结 四、逻辑递进 表达顺序 三种 阅读全文
posted @ 2020-10-05 20:03 抽象Java 阅读(647) 评论(0) 推荐(0)
摘要:如何判断事情的逻辑是否正确 逻辑不对的三种情况 1、有依据没有结论 2、有结论没有依据 3、有依据,有结论,但依据和结论没有证明和被证明的关系 阅读全文
posted @ 2020-10-05 19:58 抽象Java 阅读(388) 评论(0) 推荐(0)
摘要:为什么要学金字塔原理 有助于表达重点突出,逻辑清晰 用不用金字塔原理的,差别在于人思考和表达的时候,具不具备一个清晰的结构。 原理 分类思维 抽象化现实使得事务更加被人所接受 分类思维如何帮助人解决问题 搞清楚事物的的内部原理,使得解决方案更加全面; 针对场合 ppt, 演讲, 工作汇报 如何理清楚 阅读全文
posted @ 2020-10-05 16:46 抽象Java 阅读(1601) 评论(0) 推荐(0)