- 博客(16)
- 收藏
- 关注
原创 剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 题解 1.循环 /** * Definition for singly-linked list. * public cl...
2021-01-11 14:22:35
163
原创 剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 题解 /** * Definition for singly-linked list. * public class ListNode { * int va.
2021-01-11 00:53:41
171
原创 剑指 Offer 24. 反转链表
剑指 Offer 24. 反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 题解思路: 1.双指针 2.定位位置 通过双指针不断替换位置 /** * Definition for singly-linked list....
2021-01-10 23:27:35
147
原创 hashmap面试问题
Q:为什么扩容要以2的次幂*? A: 1.因为在计算数组下标时用到的函数是H & (length -1),如果是奇数的话-1后的2进制末尾是0,这样在于hashcode做与操作时永远都是0,这样会造成分布不均匀 2.当hashmap做扩容的时候,数组容量如果非2的次幂的话,需要每次对所有元素进行重新计算,这样效率会很低,而2的次幂的话,只需看元素hashcode末位是否为如果为1,新数组的下标不变,0=当前数组下标+老数组的长度 ...
2020-05-11 13:28:08
305
原创 volatile特性及原理
volatile怎么保证内存可见性 volatile修饰的变量编译成汇编指令后,会有lock前缀修饰, 将当前处理器缓存刷回主内存 这个写回主内存的操作,会使其他cpu内缓存该地址的数据无效 ...
2020-04-27 19:13:10
243
原创 https流程说明
Https流程 1.用户发起请求 2.服务端返回证书信息 3.客户端解析证书,包含颁发机构和证书过期时间,以证书充当公钥加密随机值,传送给服务端 4.服务端收到后,以私钥解密得到随机值,并再通信中使用随机值加密内容,并用私钥加密传送 5.客户端收到加密信息后,使用公钥解密证明信息为...
2018-09-07 16:18:46
377
原创 SpringCloud-Hystrix
作用 1.服务降级 2.服务熔断 3.依赖隔离 4.监控 服务降级 大流量引入时,保证部分用户可用,其他可提示语反馈等 简单使用 1.在服务启动类上加入注解@EnableCircuitBreaker 2.在调用服务方法上加入注解@HyStrixCommand(fallbackMethod="降级后调用的方法名") 3.定义fallbackMethod方法 当服务调...
2018-09-02 21:43:04
281
原创 SpringCloud-zuul服务网关
为啥需要服务网关? 下图是拆分服务后的微服务系统,若不提供统一网关,对于客户端来说可谓非常麻烦 下图为提供了网关服务后的效果,客户端无须多虑到底多少服务,只需关注网关信息,接口信息即可 zuul内置4个filter 1.前置(pre) 可用于服务限流,权限校验,跨域问题 2.后置(post) 3.路由(route) 4.错误(error) zuul接受请求的生...
2018-09-02 21:06:06
213
原创 SpringCloud-Feign
使用步骤 1.在客户端启动类上加注解@EnableFeignClients(basePackages="扫描包路径,提供注入") 2.在服务端接口上写入@FeignClient(name="seviceName") 3.pom中引入服务端依赖,并在代码中注入服务端接口,直接调用方法即可 ...
2018-09-02 20:38:34
231
原创 springcloud-Ribbon
Netflix-ribbon为服务发现提供了 1.服务发现 2.服务选择(负载均衡) 3.服务监听(检测失效的服务,做到高效剔除) 主要组件 1.ServerList(发现所有服务) 2.ServerListFilter (过滤一部分地址) 2.Irule (更具规则选择一个实例,当做服务) ...
2018-09-02 20:15:26
186
原创 JVM-线上问题分析
1.jmap+MAT分析内存溢出 jmap -dump:format=b,file=heap.hprof pid 导出pid的内存影像文件 使用mat分析内存影像,分析内存溢出问题 2.cpu利用率标高 分析:很有可能发生死循环 解决方案: 1.top 查看占用cpu最高的几个pid 2. 执行命令或者此pid下的线程运行状况 top -p pid -H 找到...
2018-08-31 18:00:28
441
原创 jvm垃圾回收-1
怎么判断是否垃圾? 枚举根节点,做可达性分析 根节点:类加载器,Thread,局部变量表,static成员,常量,本地方法栈的变量等 采用什么算法回收垃圾 1.标记清除算法 缺点:效率不高,产生碎片,导致提前GC 2.复制算法 定义:2块区域,当发生GC时,将存活的复制到另一块,GC完成后再将存活的还回来 优点:简单高效 缺点:利用率低,最高只能使用50%内存 3.标记整理 ...
2018-08-31 17:02:39
225
原创 jdk1.8内存分析-1
下图为jdk1.8的内存结构 分为堆区和非堆区,以下对下图进行分析和记录 堆区 堆区分为young区,和old区,yong又分为2大块,S区(from和to)和eden区,S区是同样大小的两部份,同一时间点下,只会有一块有数据 非堆区 主要是取代1.8之前的方法区,Metaspace 分为ccs和codecache2份, ccs(压缩类空间),在...
2018-08-31 16:36:51
1092
原创 MYSQL 索引
mysql常用索引分为 5 大类 1.普通索引 index 2.唯一索引 unique 3.联合索引 4.全文索引 fulltext 5.主键索引 primary key 索引使用规范 1.索引不参加计算,否则索引失效 2.与or关键字联合,索引失效 3.参与数字比较,索引失效 4.与like联合使用时,'afvb%'索引正常,'%121%'索引失效 5.not i...
2018-08-31 10:54:45
202
原创 秒杀思路
常规秒杀流程 1.加分布式锁 redis 2.查询商品库存 3.减库存 4.下单 优化 1.秒杀前由运维将秒杀数据手动加载到redis中 2.秒杀开始后,查看redis全局标记,活动是否结束 3.用户先通过商品key查询redis并执行decre,执行成功者,抢到秒杀资格,将用户信息以及商品key,通过ribbitmq发往订单系统异步处理 3.前台返回排队中状态,并由前端轮询订单系统,查看秒杀...
2018-08-22 18:16:48
464
原创 springcloud-应用通信RestTemplate的三种方式
A,B(双实例),同时注册在eureka注册中心C中 A调用B的X方法,实现方法主要有以下3种方式 1.直接使用RestTemplate @RequestMapping("cMsg") public String getClient(){ RestTemplate restTemplate=new RestTemplate(); String response=...
2018-08-17 15:12:15
812
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅