面试
文章平均质量分 77
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
IP+HTTPS无证书导致Android手机中H5无法加载
现状:使用IP形式的后端HTTPS接口,在Android手机中无法请求,H5页面由于后端接口异常无法正常显示;但IOS可以。推测:初步推测是因为 IP+HTTPS 导致的不信任证书无法在Webview中自动适配,需要和在PC浏览器中点击”高级+继续访问xxxx“的此类操作才可以正常请求后端接口,但在webview中又无法这样操作。IOS方面,可能Iphone的内置浏览器关于HTTPS和证书这块有特殊处理。解决方案:将IP映射为域名即可。...原创 2021-11-04 10:59:50 · 2261 阅读 · 2 评论 -
new Object() 到底占用几个字节?
1、我们来分析一下堆内布局以及Java对象在内存中的布局吧。2对象的指向先来看一段代码:publicclassHeapMemory {privateObjectobj1 =newObject();publicstaticvoidmain(String[] args) {Objectobj2 =newObject();}}上面的代码中,obj1 和obj2在内存中有什么区别?...转载 2021-06-04 13:42:27 · 331 阅读 · 0 评论 -
透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因(this指针)
前言在我们使用Spring时,可能有前辈教导过我们,在bean中不要使用this来调用被@Async、@Transactional、@Cacheable等注解标注的方法,this下注解是不生效的。那么大家可曾想过以下问题为何致this调用的方法,注解会不生效 这些注解生效的原理又是什么 如果确实需要调用本类方法,且还需要注解生效,该怎么做? 代理是否可以做到this调用注解就直接生效?通过本文,上面的疑问都可以解决,而且可以学到很多相关原理知识,信息量较大,那么就开始吧现象以@A转载 2021-02-20 18:08:35 · 1112 阅读 · 1 评论 -
【异步编程介绍-Kotlin】Asynchronous Programming Techniques
This tutorial explains the different approaches to asynchronous programmingFor decades, as developers we are confronted with a problem to solve - how to prevent our applications from blocking. Whether we're developing desktop, mobile, or even server-si.转载 2021-01-11 09:51:25 · 831 阅读 · 0 评论 -
大家都说 Java 反射效率低,你知道原因在哪里么
预备知识了解 Java 反射基本用法看完本文可以达到什么程度了解 Java 反射原理及 Java 反射效率低的原因文章概览我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见。我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用。但是反射的效率到底低多少?反射效率低的原因在哪里?这篇文章就来探索一下这些问题。由于本机上安装的是 openjdk 12,所以这里就使用 openjdk 12 源码进行分析。我们先看结论,然后分析...转载 2020-07-10 18:53:27 · 1149 阅读 · 0 评论 -
为什么 HashMap 的加载因子是0.75?
为什么HashMap需要加载因子? 解决冲突有什么方法? 1. 开放定址法 2. 再哈希法 3. 建立一个公共溢出区 4. 链地址法(拉链法) 为什么HashMap加载因子一定是0.75?而不是0.8,0.6? 那么为什么不可以是0.8或者0.6呢? 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0...转载 2020-07-07 19:06:17 · 1820 阅读 · 0 评论 -
面试:那些问哭你的Redis分布式锁!
谈起redis锁,下面三个,算是出现最多的高频词汇: setnx redLock redisson setnx其实目前通常所说的setnx命令,并非单指redis的setnx key value这条命令。一般代指redis中对set命令加上nx参数进行使用, set这个命令,目前已经支持这么多参数可选:SETkeyvalue[EXseconds|PXmilliseconds][NX|XX][KEEPTTL]当然了,就不在文章中默写Ap...转载 2020-06-11 10:27:20 · 672 阅读 · 0 评论 -
面试:HashMap 夺命二十一问
1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过8时,链表转换为红黑树。transient Node<K,V>[] table;2:HashMap 的工作原理? HashMap 底层是hash 数组和单向链表实现,数组中的每个元素都是链表,由Node 内部类(实现 Map.Entry<K,V>接口)实现,HashMap 通过 put & get 方法存储和获取。存储对象时,将 K/V ...转载 2020-06-03 11:35:48 · 648 阅读 · 0 评论 -
堆排序应用-优先级队列PriorityQueue源码分析
1. 回顾在上一篇文章中分享了堆这种数据结构,同时提到,堆可以用来对数据排序,也可以用来解决Top N、定时任务、优先级队列等问题,今天要分享的是Java中优先级队列PriorityQueue的源码实现,看看堆在Java中的实际应用。需要说明的是,本文与上篇文章:「重温《数据结构与算法》之堆与堆排序」密切相关。2. PriorityQueue优先级队列有两个常用的操作:向队列中添加元素、取出元素,这两个操作的方法为「add(E e)和poll()」,接下来将围绕这两个方法的源码展开。Pri.转载 2020-05-20 10:53:00 · 745 阅读 · 0 评论 -
TPS&QPS的估算
概念PV(Page View):页面访问量,每次用户访问或者刷新页面都会被计算在内。QPS(Query Per Second):每秒查询数,每秒系统能够处理的查询请求次数。TPS(Transactions Per Second):每秒事务数,每秒系统能够处理的事务次数。TPS与QPS是有区别的事务表示客户端发起请求到收到服务端最终响应的整个过程,这是一个TPS而在这个TPS...转载 2020-05-07 16:29:54 · 3581 阅读 · 0 评论 -
为什么浏览器会限制ajax并行请求数量,有办法突破限制吗
1.为什么浏览器会限制 ajax 并行请求数量?答:浏览器发出网络请求需要新开线程,而且可以发出请求的端口数量有限,从开销角度考虑不可能无限发出并发请求;此外如果浏览器不作限制,大量的请求同时发至服务器,也可能超过服务器的处理并发请求的数量阈值(针对单个 IP),从而导致请求失败。2.有办法突破限制吗?答:浏览器的并发请求数目限制针对同一域名,因此可以将请求分散至多个域名,比如将静态资...转载 2020-04-26 17:23:14 · 5273 阅读 · 0 评论 -
堆排序(大顶堆、小顶堆)----C语言
堆排序之前的随笔写了栈(顺序栈、链式栈)、队列(循环队列、链式队列)、链表、二叉树,这次随笔来写堆1、什么是堆?堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组按照堆的特点可以把堆分为大顶堆和小顶堆大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值...转载 2020-04-22 12:08:11 · 1305 阅读 · 0 评论 -
长尾请求
1.什么是长尾?长尾请求一般是指明显高于均值的那部分占比较小的请求。 业界关于延迟有一个常用的P99标准, 也就是99%的请求延迟要满足在一定耗时以内, 1%的请求会大于这个耗时, 而这1%就可以认为是长尾请求。2.长尾会导致什么危害假设,一个服务B,有1%的可能性响应时间大于1s,如果此刻一个上游服务A需要完成一次查询,需要同时查询100次的话,那么服务A响应时间超过1s的概率是...转载 2020-04-16 12:04:28 · 1108 阅读 · 0 评论 -
首屏时间
概念定义首屏范围的界定:【top: 0, left: 0, width: 100vw, height: 100vh】这里的首屏指代,页面首次加载时,当前屏幕内 DOM 内容。针对首屏时间的计算,目前只考虑包含图片和不包含图片的场景 首屏有图片 首屏时间 = 首屏图片全部加载完毕时刻 - window.performance.timing.navigationStart ...原创 2020-04-15 15:21:27 · 1000 阅读 · 0 评论 -
一个整数拆分为连续自然数之和
问题描述:将一个正整数,拆分成连续的自然数之和,输出所有可能的情况例如: 3 = 1+210 = 1+2+3+416 =5+6+7...问题求解:连续的自然数之和让我们想到了等差数列求和公式:其中Sum为要分解的正整数,n为连续自然数的个数,aFirst为连续自然数的第一位数将以上公式改写成另外一种格式求...转载 2020-04-13 16:27:00 · 5901 阅读 · 2 评论 -
面试官,Java8 JVM内存结构变了,永久代到元空间
JVM内存结构的细化再来看一下《JVM之内存结构详解》中的内存结构图。为了更细化的讲解,我们将该图进行进一步的优化调整。针对java7及以前版本的细化。看出变化了吗?堆和方法区连在了一起,但这并不能说堆和方法区是一起的,它们在逻辑上依旧是分开的。但在物理上来说,它们又是连续的一块内存。也就是说,方法区和前面讲到的Eden和老年代是连续的。在继续进行下去之前,我们先来理解...转载 2020-03-17 15:28:50 · 628 阅读 · 0 评论 -
sendfile“零拷贝”、mmap内存映射、DMA
KAFKA推送消息用到了sendfile,落盘技术用到了mmap,DMA贯穿其中。先说说零拷贝零拷贝并不是不需要拷贝,而是减少不必要的拷贝次数。通常是说在IO读写过程中。实际上,零拷贝是有广义和狭义之分,目前我们通常听到的零拷贝,包括上面这个定义减少不必要的拷贝次数都是广义上的零拷贝。其实了解到这点就足够了。我们知道,减少不必要的拷贝次数,就是为了提高效率。那零拷贝之前,是怎样的呢...转载 2020-03-09 20:46:16 · 3447 阅读 · 0 评论 -
面试题:如何理解 Linux 的零拷贝技术?
本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较大的帮助。本文借鉴并总结了几种比较常见的 Linux 下的零拷贝技术。为什么需要零拷贝传统的 Linux 系统的标准 I/O 接口(read、write)是基于数据拷贝的,也就是数据都是 copy_to_user 或者 copy_...转载 2020-03-09 20:24:48 · 565 阅读 · 0 评论 -
在Java的反射中,Class.forName和ClassLoader的区别
前言最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。解释在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的...转载 2019-12-31 16:57:14 · 720 阅读 · 0 评论 -
不可不说的Java“锁”事
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 V...转载 2019-12-06 21:13:51 · 603 阅读 · 0 评论 -
从ReentrantLock的实现看AQS的原理及应用
前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到原理层,并通过ReentrantLock的基本特性和ReentrantLock与AQS的关联,来深入解读AQS相关独占...转载 2019-12-06 21:06:42 · 591 阅读 · 0 评论 -
Hash算法解决冲突的方法
Hash算法解决冲突的方法一般有以下几种常用的解决方法1, 开放定址法:所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1)※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列。沿此序...转载 2019-11-28 18:19:18 · 574 阅读 · 0 评论 -
mysql 多列索引对应的b+tree结构
一:表数据说明有如下的一张表:我们对firstName,lastName,birthday这三列建立一个复合索引,即key(firstName,lastName,birthday);二:复合索引记录排序规则我们知道索引结构中的数据都是按照顺序排列的,上面的索引首先会按照firstName排序即按照字母顺序排列,firstName相同的情况下按照lastName排序,lastName相同...转载 2019-11-26 18:16:17 · 1248 阅读 · 0 评论 -
JQuery选择器$()的工作原理浅析
每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可以实现继承,加上js的对象只是引用不会是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到in转载 2014-02-25 10:48:53 · 1823 阅读 · 0 评论 -
HashMap的扩容机制---resize() &; 死循环的问题
1.8 与1.7 变化较大,http://www.cnblogs.com/RGogoing/p/5285361.html学习内容:1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V>在并发的情况下使用的话,会出现线程安全问题,但是一直都没有进行深入的研究,也是最近实验室的徒弟在问起这个问题...转载 2017-03-22 15:34:32 · 13403 阅读 · 5 评论 -
java中什么是bridge method(桥接方法)
https://blog.csdn.net/mhmyqn/article/details/47342577https://www.cnblogs.com/strinkbug/p/5019453.html在看spring-mvc的源码的时候,看到在解析handler方法时,有关于获取桥接方法代码,不明白什么是桥接方法,经过查找资料,终于理解了什么是桥接方法。什么是桥接方法桥接方法是 ...转载 2018-07-19 14:59:29 · 5071 阅读 · 2 评论 -
为什么Java中Map接口的get函数参数竟然是Object
https://www.jianshu.com/p/7889e4b32362文章来源于自己实际开发项目中遭遇到的一个问题。在一开始,我定义了一个Map<Integer, String> map;这并没有说明问题,然后开始往下写了一堆函数,在写到第N个函数的时候,我发现这个map需要改成Map<String, String> map;改完之后我天真...转载 2018-07-16 18:07:49 · 3049 阅读 · 2 评论 -
Java 中int与byte数组转换详解
1、与运算符的理解(&): 参加运算的两个数据,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即 0&0=0;0&1=0;1&0=0;1&1=1;例子:int x = 62255550; y =0xff; 转二进制:x = 62255550 = 11101101011111000110111110;y转载 2014-08-14 21:37:56 · 1908 阅读 · 0 评论 -
Hashpmap的原理,HashMap怎样保证key的唯一性
1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构转载 2017-09-13 14:42:29 · 2560 阅读 · 0 评论 -
Js作用域与作用域链详解
一直对js的作用域有点迷糊,今天偶然读到JavaScript权威指南,立马被吸引住了,写的真不错。我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫。一:函数作用域 先看一小段代码:[javascript] view plain copyvar scope="global"; functi转载 2017-07-04 17:03:19 · 1198 阅读 · 0 评论 -
JAVA中Long与Integer比较容易犯的错误
今天使用findbugs扫描项目后发现很多高危漏洞,其中非常常见的一个是比较两个Long或Integer时直接使用的==来比较。 其实这样是错误的。因为Long与Ineger都是包装类型,是对象。 而不是普通类型long与int , 所以它们在比较时必须都应该用equals,或者先使用longValue()或intValue()方法来得到他们的基本类型的值然后使用==比较也是转载 2016-05-14 20:40:19 · 5564 阅读 · 0 评论 -
HashMap在高并发下引起的死循环
https://www.cnblogs.com/yjbjingcha/p/6957909.htmhttp://www.cnblogs.com/wfq9330/p/9023892.htmlHashMap事实上并非线程安全的,在高并发的情况下,是非常可能发生死循环的,由此造成CPU 100%,这是非常可怕的。所以在多线程的情况下,用HashMap是非常不妥当的行为,应採用线程安全类Concur...转载 2018-07-25 17:58:57 · 2671 阅读 · 3 评论 -
Spring AOP中自我调用的问题
https://blog.csdn.net/zknxx/article/details/72585822 前几天在做项目的时候同事说,在使用AOP进行拦截的时候发现有些方法有时候能输出拦截的日志有时候不输出拦截的日志。发现在单独调用这些方法的时候是有日志输出,在被同一个类中的方法调用的时候没有日志输出。我记得之前看过一篇文章是讲Spring事务自我调用不起作用的问题,应该是同样的问题(如果...转载 2018-07-27 18:52:48 · 2080 阅读 · 0 评论 -
Java Double 浮点数 比较大小 & 相等比较
https://blog.csdn.net/z69183787/article/details/53286492 public class DoubleComparer { private static final double DEFAULT_DELTA = 0.000001; //默认比较精度 //比较2个double值是否相等(默认精度) public...转载 2018-07-31 18:42:06 · 12163 阅读 · 0 评论 -
Java技术——你真的了解String类的intern()方法吗
0.引言什么都先不说,先看下面这个引入的例子:String str1 = new String("SEU")+ new String("Calvin"); System.out.println(str1.intern() == str1);System.out.println(str1 == "SEUCalvin");本人JDK版本1.8,输出结果为:truet...转载 2019-09-19 15:29:33 · 595 阅读 · 0 评论 -
Java探针-Java Agent技术
https://www.cnblogs.com/aspirant/p/8796974.html最近面试阿里,面试官先是问我类加载的流程,然后问了个问题,能否在加载类的时候,对字节码进行修改我懵逼了,答曰不知道,面试官说可以的,使用Java探针技术,能够实现我查了一下关于探针技术的知识:2. 基于javaAgent和Java字节码注入技术的java探针工具技术原理图0...转载 2019-03-23 17:25:52 · 1782 阅读 · 0 评论 -
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
http://outofmemory.cn/c/java-outOfMemoryErrorjava.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。导致OutOfMemoryError异常的常见原因有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 集合...转载 2019-04-04 17:05:41 · 1575 阅读 · 0 评论 -
几张图轻松理解String.intern()
https://blog.csdn.net/xcy1193068639/article/details/81809515 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用。二、通过字面量赋值创建字符串(如:String str=”twm”)时,会先在常量池中查找是...转载 2019-01-28 15:47:17 · 638 阅读 · 0 评论 -
Java 并发面试题解
01前言大家好,我是 Eric,一名有多年互联网经验的专业技术从业人员。我最初在一家国际顶尖投行工作时,接触过各个国家形形色色的开发人员。我发现,不论是哪个国家,什么背景的 Java 开发者,都对自己写的并发程序相当自信,但也会在出问题时表现得很诧异甚至一筹莫展。可见,Java 并发编程显然不是一件能速成的能力,基础搭得越好,越全面,在实践中才会有更深刻的理解。因此,大家不难发...转载 2019-01-10 14:00:59 · 2356 阅读 · 3 评论 -
动态编译-在线Java编译运行例子
https://www.cnblogs.com/hujunzheng/p/5203067.html首先简单介绍一下思路: 1.得到java程序的源代码,不需要导入包。得到源码之后在前面加入”import java.util.*;” 2.通过JavaCompiler对象可以帮助我们将java源代码编译成class文件。 3.通过DiagnosticCollector对象可以获得...转载 2018-09-17 12:08:52 · 1433 阅读 · 0 评论