原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。...本篇文章针对引用分析,是后面分析各种框架机制的基础 Java引用相关 强引用(Strong Reference) 强引用就是指在程序代码之中普遍存在的,一般的new一个对象并赋值给一个对象变量,就是一个强引用...,在Java中用java.lang.ref.SoftReference类来表示。。...:Java heap space null null 看一个软引用是否被垃圾回收一种方式是通过get()方法看返回是否为null判断,或者在构造的时候传入一个队列,之后根据这个队列中有没有这个对象来判断是否被回收了...GC流程很复杂,而且Java程序员无法知道究竟一个可以被GC的对象到底有没有确定被回收。这时候,我们就需要虚引用。 虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。
Flutter 系列文章连载~ 《Flutter Android 工程结构及应用层编译源码深入分析》 《Flutter 命令本质之 Flutter tools 机制源码深入分析》 《Flutter 的...及依赖流程源码分析》 《Flutter Android 端 FlutterEngine Java 相关流程源码分析》 《Flutter Android 端 FlutterView 相关流程源码分析》 《...端的 Java 层代码中经常看到 FlutterEngine、FlutterEngineGroup、FlutterEngineCache 等相关类的使用,你是不是也经常搞不清他们的关系和作用?...: [在这里插入图片描述] 下面是 FlutterEngine 核心源码片段: public class FlutterEngine { //Flutter C/C++与平台java层接口定义交互。...GeneratedPluginRegistrant 的类,其中包含依赖的 Flutter Plugin 相关 add 代码。
原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。...本篇文章针对JAVA中集合类LinkedList进行分析,通过代码解释Java中的Fail-fast设计思想,以及LinkedList底层实现和与ArrayList对比下的就业场景。...public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, java.io.Serializable...什么是fail-fast,集合类中是如何实现的?LinkedList如何实现的? fail-fast指的是在可能的损害发生前,直接失败。...在JAVA中的一种体现就是当某个集合的Iterator已经创建后,如果修改了集合,再访问Iterator进行遍历就会抛出ConcurrentModificationException LinkedList
翻开一看,真如Erich Camma所说,简直欲罢不能.本书是Oreilly的Head First系列中的一本,本系列书籍的特点是采用大量的插图、图例来进行辅助讲解,插图设计的非常的和内容贴切,能够非常形象地反映当前的内容...本书虽然有600多页,可是由于大量的图文、空白,使得本书阅读起来非常的畅快。虽然文本内容并没有那么多,但是本书真正的蕴涵的内容和使人获得对设计模式的理解远远要大于阅读1000本同样书籍。...2.Effective Java中文版 看完这本书,也许你还会有另外收获,就是把一些使用IDE时的习惯找到了他们的依据。 很多规则,读这书之前并不知道的,但可能你一直就是这么做了,也许你会惊讶。...3.Java并发编程实战 这本书的前半部分我读的非常仔细,但后半部分则跳跃了很多,并没有完整的阅读。当然原因肯定不是这本书不够好,而是我本人的内力实在是太差了,越看越羞愧。...现在的我越来越感觉自己有些“眼高手低”了,总是幻想着通过阅读什么源码就可以提升多高的内容,其实编程本没有捷径,唯有一步一个台阶。
大家好,又见面了,我是你们的朋友全栈君。 近期整理的关于日志的面试题,对于初级者来说,很少会涉及到日志的处理,架构的选择。...但是我相信作为一个资深者,这部分是必不可少的,同时也是评定一个系统的指标,足以证明日志的重要性。 1....常用的日志框架 Java Logging API(Oracle)—— Java默认的日志框架 Log4j(Apache)——开源日志框架 Logback(Logback Project...Systom.out 为什么很少用于日志记录 根据人们的习惯,总是喜欢越简单,性能越好,更合适的,功能越完善的架构。因此 1 中的架构就逐渐代替了Systom.out。...SLF4J 对于java后台开发的人员来说self4j肯定不会陌生,如果你还把它当做是日志框架的话,可能不太合理。
3、Spring源码深度解析 《Spring源码深度解析》从核心实现和企业应用两个方面,由浅入深、由易到难地对Spring源码展开了系统的讲解,包括Spring的设计理念和整体架构、容器的基本实现、默认标签的解析...5、Java多线程编程核心技术 资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著。...本书以浅白的措辞,结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通信、锁等难突破的技术与应用实践。 6、代码整洁之道 软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。...本书对管理员和web站点管理员而言,具有较强的参考价值;对在开发或产品中要使用Tomcat作为web应用程序服务器的开发者而言,这是一本有用的指南书;对Tomcat感兴趣的人而言,这是一本优秀的介绍工具...内容不仅包含Java NIO入门知识、Netty的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。
JDK1.7ConcurrentHashMap源码解读 使用传统HashTable保证线程问题,是采用synchronized锁将整个HashTable中的数组锁住, 在多个线程中只允许一个线程访问Put...ConcurrentHashMap将一个大的HashMap集合拆分成n多个不同的小的HashTable(Segment),默认的情况下是分成16个不同的 Segment。...1.7ConcurrentHashMap 将一个大的ConcurrentHashMap集合拆分成n多个不同的hashtable,在每个小的hashtable中都有自己的table【】 package com.gtf.xc...; import java.util.HashMap; public class MyConcurrentHashMap { /** * segments...自旋 缓存当前对应冲突链表 每次检查 当前缓存链表头节点是否发生变化 如果发生变化的情况下 缓存最新 自旋的次数最多为64 实现原理 由多个不同的sement对象组成 使用 luck锁+cas unsafe
http://pan.baidu.com/s/1c1HPjDu depot_tools 高质量Chromium交流群 345543840 ----------------- 如何下载老的chromium...chromium 源码压缩包 http://chromium-browser-source.commondatastorage.googleapis.com/chromium.rXXXXX.tgz 其中...所有可用的压缩包版本号 列表页面是http://chromium-browser-source.commondatastorage.googleapis.com/ ------------------...------- http://blog.csdn.net/Kuerjinjin/article/details/23563059 老版本chromium,还带sln的 --- https://github.com...chromium fork --- https://github.com/racaljk/hosts 从这里下载host文件,更新本地,然后可以下载google代码 平均速度,7M/s,7G多的代码还是挺快的
1:基于arraylist集合方式实现 优点:不需要考虑hash碰撞 缺点:查询效率慢,时间复杂度是O(n) package com.gtf.fs; import java.util.ArrayList...; import java.util.List; import java.util.Map; public class ArrayListMap { private List<Map.Entry...默认16 package com.gtf.map; import java.util.Map; import static java.util.Objects.hash; public class...stringStringLinkedHashMap.forEach((k, v) -> System.out.println(k + ":" + v) ); } 手写LRU缓存算法 package com.gtf.text; import java.util.LinkedHashMap...返回true * size() > capacity;清理头节点 */ @Override protected boolean removeEldestEntry(java.util.Map.Entry
ArrayLis源码解读 扩容以及缩容 存放元素:有序 线程是否安全:不安全 数据结构:给予数组实现。...package com.gtf.xc; import java.util.ArrayList; import java.util.Arrays; public class MyArrayList { Object[] elementData; /** * 当前存储的元素个数 */ int size; /** * 默认大小为10...hashset源码 底层是hashmap存储,key就是hashset存放的元素,value值就是空的object对象。 hashset为什么无序 每次put操作,计算index都是散列。...hashset数据结构 数组+链表+红黑树 linkedlist 原理基于链表结构,双向链表 数组和链表的区别 数组:保证元素的有序性 可以 基于下标查询(o1),查询。
****************************** Java ****************************** Java 1.8 新特性 --》允许接口,实现默认方法,...-Frames Java帧: *每次调用一个方法都会创建一个新frame。...无论调用方法是正常结速还是突然的终止,frame将被销毁。 *frame是从创建frame的线程的Java栈中分配的。...*局部变量数组和操作数堆栈的大小是在编译时确定的,并与框架相关联的方法的代码一起提供。 *如果一个frame的方法调用另一个方法,或者该frame的方法完成,则该frame将停止为当前帧。...#内存的实现:【内存的分配与具体的使用的回收器相关,与G1分配略有不同】 如上所述,在给对象分配内存时,如果在shareeden中分配,则在PSYoungGen的 _edenspace
BOLCKED:阻塞状态,这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的 synchronized 块的执行释放, 或者可重入的 synchronized 块里别人调用 wait...这里要区分 BLOCKED 和 WATING 的区别,BLOCKED是在临界点外面等待进入,WAITING是在临界点里面 wait 等待别人 notify,线程调用了 join 方法 join 了另外的线程的时候...,也会进入 WAITING 状态,等待被它 join 的线程执行结束。...线程池创建线程使用的工厂handler: 线程池对拒绝任务的处理策略当往线程池中提交任务时,如果运行线程数小于corePoolSize,那么马上创建线程运行这个任务;如果正在运行的线程数大于等于corePoolSize...public static ExecutorService newCachedThreadPool() :创建一个可缓存的线程池,调用 execute 将重用以前构造的线程(如果线程可用)。
TCP 三次握手/四次挥手TCP 数据包图片src_port 16bitdest_port 16bitseq 32bit (TCP握手挥手的顺序号)ack 32bit (TCP Acknowledge,...CDN 原理分发系统最近的Cache服务器最快分发给用户负载均衡系统CDN 支持 GSLB (全局负载均衡) 和 SLB (本地负载均衡)GSLB 根据就近原则确定服务的CDNSLB 负责节点内部负载均衡
注:如有讨论的需要请email to jackgo73@outlook.com 一、问题 Postgresql中常见的的sharebuffer配置为内存的25%,而mysql的bp常见配置为内存的75%...open() O_DSYNC fdatasync:fdatasync() fsync:fsync() fsync_writethrough:fsync() open_sync:open() O_SYNC 源码位置...因为这个参数关了之后,系统crash后最近的几条成功提交的事务会直接丢失,不会造成数据不一致。...不满足10ms的事务只写磁盘,不做flush。...一般盘的io写日志无瓶颈的话,不需要使用这个参数。 除非发现刷xlog周期性的打满IO,配这个参数有奇效。 三、fsync相关源码 xlog文件创建。
Java Web项目开发的经验。...熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。...项目开发流程 可行性分析 >>> 可行性分析报告 / 项目开发计划书 需求分析 >>> 需求规格说明书 OOAD(用例图、时序图、活动图) 界面原型:帮助理解需求、业务层设计时推导事务脚本 设计 >>>...概要设计说明书/详细设计说明书 抽取业务实体(领域对象):类图、E-R图(概念设计阶段) 分层架构:确定各层的技术实现方案(具体到使用的框架、数据库服务器、应用服务器等)。...面试经验 企业面试题 面试题包括基础知识,项目相关,框架内容原理等;我会在后续的更新中发布,都是以面试实战为主的题型 除了面试题之外的注意事项 常见错误 只在计算机上练习 不做行为面试题演练 不做模拟面试训练
而对MyBatis等开源框架源码的理解或开发、重构是现在很多大厂的招聘Java工程师招聘的重要加分项。...不管你是希望更好地了解和使用MyBatis,还是希望掌握框架设计的思想精髓,或是想学习其设计模式的运用方法,MyBatis的源码都非常值得一看。...最近很多小伙伴问我要一些 MyBatis源码 相关的资料,于是我翻箱倒柜,找到了这本非常经典的电子书——《一本小小的MyBatis源码分析书》。...资料介绍 《一本小小的MyBatis源码分析书》名字取得就非常有趣,里面的内容更是有趣、有料。全书按照MyBatis的工作流程进行编排,不仅有利于全书内容的连贯,还有利于读者的理解。...全书内容详细、循序渐进地介绍了MyBatis源码。非常适合初中级java开发工程师读一读。 ?
1.JSP和Servlet Servlet和JSP是统一的,广义上的Servlet包含JSP和Servlet,真正提供服务的是Servlet。...2.Hibernate和MyBatis ORM(Object Relation Mapping)的起源:传统的java应用都采用JDBC(Java DataBase Connectivity,java数据库连接...)来访问数据库,JDBC是一中基于SQL的操作方式,这种操作方式与java语言面向对象的思想不太一致,而且操作繁琐,所以就产生了ORM技术。...最早的ORM技术是EJB(Enterprise JavaBean),EJB是java EE的核心,但是EJB操作仍然极其繁琐。...Hibernate是开源的ORM框架,它将普通的、传统的Java对象(POJO, Plain Old Java Object)映射成持久化类,应用程序可以用面向对象的方式来操作POJO,Hibernate
1.java.lang.Math java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象。...; double sqrt = Math.sqrt(256); double rand = Math.random(); double pi = Math.PI; 2.java.math包 2.1 BigInteger...如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。 java.math包的BigInteger可以表示不可变的任意精度的整数。...BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。...类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。
,不需要重新申请一个空间,再次执行intern()方法,此时就会再池中查找内容相同的字符常量,如果在池中没有找到,就把当前字符串加到池中,如果已经找到了就返回这个池中的对象,节省了空间(但实际开发中很少遇到...) equal() 想要怕段两个字符串是否相等,用==是有它的风险的,就例如: String str1 = "Hello"; String str2 = "Hello"; System.out.println...(str1 == str2); // 执行结果 true 以上创建字符串的方式似乎对运行结果没有产生什么影响,但是如果深究其内涵,了解到str1和str2所指向的对象相同(类似于C语言的指针),指向同一个对象...new String("Hello"); System.out.println(str1 == str2); // 执行结果 false 但是用这种创建方式,可以看到结果并不符合预期,是因为两个新创建的对象指向不同的内存...里面有两个反斜杠,代表的两个转义, 一个是在java中进行转义,一个是在正则中表示转义 与之用法相同的符号有:“| + * ” 实际应用 public static void main(String
Docker 技术鼻祖系列 文末直接送 5 本《Kubernetes 源码剖析》。...Kubernetes 的其他组件都是通过 client-go 的 Informer 机制与 Kubernetes API Server 进行通信的。...本文主要通过 WorkQueue 的源码来分析其工作原理。...应根据 WorkQueue 的特性理解源码的实现,FIFO 存储过程如图 5-9 所示: 图5-9 FIFO存储过程 通过 Add 方法往 FIFO 队列中分别插入 1、2、3 这 3 个元素,此时队列中的...2 个相同元素的延迟时间为 2ms,第 3 个相同元素的延迟时间为 4ms,第 4 个相同元素的延迟时间为 8ms,第 5 个相同元素的延迟时间为 16ms……第 10 个相同元素的延迟时间为 512ms
领取专属 10元无门槛券
手把手带您无忧上云