自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Handoking的博客【学无止境】

在漫漫的人生长河中,当前的磨难只不过是一段增加情调的小插曲,所以坚持下去

  • 博客(140)
  • 资源 (10)
  • 收藏
  • 关注

原创 温故而知新-JVM垃圾收集器

现在垃圾收集器均采用分代收集策略,新生代由于98%的对象都是朝生夕死,复制算法更合适,只复制还存活的对象,工作量小,所以效率高。显然复制算法不适合老年代,因为老年代中的对象大部分是大对象,且长时间存活,复制算法效率太低。老年代使用标记-清除,标记-整理算法更合适。c. 对CPU资源敏感。默认启动的线程 (CPU+3)/4,在CPU较少时,占用较多资源,影响用户线程资源。b. 无法收集浮动垃圾(浮动:并发清除过程中新产生待标记的对象)a. 标记-清除导致内存碎片太多,容易引起full-gc。

2023-07-21 00:13:06 411

原创 121. 买卖股票的最佳时机

第一种太简单不想写,第二种太难想不到。第一种:没有什么考虑的写法。

2023-07-10 23:45:29 111

原创 K个一组反转链表

自己一遍过的愚蠢代码,虽蠢但过。

2023-07-05 23:46:25 150

原创 【三数之和_15】

【三数之和_15】

2023-07-04 22:55:10 165

原创 计算最长的无重复子字符串的长度leetcode4

初始化变量 maxLength、maxStartIndex、maxEndIndex 和 start,用于记录最长无重复子字符串的长度、起始索引和结束索引,以及当前无重复子字符串的起始位置。时间复杂度:遍历字符串的时间复杂度为 O(n),其中 n 是字符串的长度。在遍历过程中,对哈希表进行插入和查询操作的时间复杂度为 O(1)。如果重复字符的索引加一大于 start,则更新 start。空间复杂度:哈希表用于存储字符和索引的映射关系,最坏情况下需要存储整个字符串的字符及其索引,因此空间复杂度为 O(n)。

2023-06-29 17:21:19 109

原创 寻找数组中第K大的元素

堆排序。

2023-06-29 17:12:12 232

原创 146 LRU缓存设计与实现

void put(int key, int value):如果关键字key已经存在,则更新其对应的数据值value;其中,cacheMap用于存储缓存的键值对,head和tail节点分别表示链表的头部和尾部。构造方法LRUCache:初始化LRU缓存,指定容量capacity,并初始化cacheMap、head和tail。int get(int key):如果关键字key存在于缓存中,则返回关键字的值;get方法:根据给定的关键字key获取缓存中对应的值,并将该节点移动到链表头部。N刷熟能生巧,特别顺。

2023-06-27 19:12:33 807

原创 大规模数据存储和查询优化技术概述:分库分表、分区和分片详解

通过合理地应用分库分表、分区和分片技术,可以满足大规模数据存储和查询的需求,提高系统性能、可扩展性和负载均衡能力。然而,在设计数据库架构时,需要综合考虑数据特点、业务需求和数据库管理系统的支持,选择适合的策略。数据库分库分表、分区和分片是为了解决大规模数据存储和查询需求而采取的不同策略。在设计数据库架构时,了解它们的区别和适用场景非常重要。和负载均衡等挑战,需要综合考虑和规划。

2023-06-05 16:02:11 754

原创 单点登陆SSO(二)认证中心登陆、验证

单点登陆单点登陆github单点登陆的原理客户端一拦截器认证中心代码单点登陆githubgithub:https://github.com/Handoking/Single-Sign-on单点登陆的原理客户端一拦截器认证中心代码这里并没有使用数据库,仅仅是使用了数据结构保存了session。同时只是为了实现两个客户端的登陆,所以直接验证了用户名和密码。数据结构类UserDB.clas...

2020-01-02 20:04:02 1139

原创 单点登陆SSO(一)原理、多客户端登陆

单点登陆单点登陆项目GitHub单点登陆的原理客户端一拦截器感谢coding老师的课程,让我能很好的学习,掌握单点登陆的相关知识,所有的代码都来自或者修改coding老师的视频,简单总结一下单点登陆项目GitHubgithub:https://github.com/Handoking/Single-Sign-on单点登陆的原理单点登陆最主要保证的就是一处登陆,处处登陆,也就是我们登陆t...

2020-01-02 19:28:58 1202

原创 Jackson注解的使用实例.摘记

目录jsonIncludejsonPropertyJsonIgnoreJsonIgnorePropertiesJsonIgnoreTypejsonInclude实体类/属性使用的注解,用于忽略NULL的属性,空的属性或者NULL的类.例如创建一个银行账户类,序列化时如果id为空,那么该属性将不会被序列化。为什么使用NON_NULL:比如读取数据库数据,空值如果序列化传输的,那么会出现空值的...

2019-10-15 11:38:06 230

原创 IP协议也能够进行数据的无连接不可靠传输服务,为什么还需要UDP协议

文章目录1.通过ip可以完成主机到目的主机数据的无连接不可靠传输。但是事实上,两台主机在网络中通信实际上是两台主机的应用进程间的通信。因此需要端口号来指明数据交付的应用进程。ip所在的网络层完成主机对主机之间的逻辑通信,而UDP所在的传输层为应用进程提供了端到端的逻辑通信。2.UDP用两个字节来表示端口号,可允许有2^16个端口号,除去常用的端口号,依然有6万多个端口号供用户使用。3.运输层...

2019-09-07 15:24:51 4130

原创 java7局部内部类访问外部变量final,java8不需要将变量设置为final?

导航为什么局部内部类只能访问外部的final变量?为什么java8不需要设置为final?为什么局部内部类只能访问外部的final变量?这里没有写版本号,严谨!!哈哈哈哈哈生命周期不同,当方法执行结束时,局部内部类如果依旧被引用,那么内部类不会死亡,也就意味着局部内部类访问的是一个不存在的变量,显然不合适。而事实上局部内部类不会产生访问以上问题,因为java编译时将局部内部类访问的变量已经拷...

2019-09-06 10:51:06 523

原创 mysql查询优化

优化策略优化的方向1.减少select *的操作,在查询时常用limit限制返回的数据量。2.经常重复查询的数据,存入缓存或者建立哈希索引/或者mysql建立自适应哈希。3.复杂查询语句,使用多条简单查询(并不是所有的多条查询都比复杂查询效果好)。4.关联查询拆解成多条查询优化的方向查询为什么会慢?除去网络延迟,CPU计算等因素,时间主要消耗在查询执行阶段,比如说I/O阻塞,锁等待导致执行事件...

2019-08-26 16:09:43 193

原创 2020网易雷火测试开发面经

开门见山!!!!!一面聊游戏谈测试点。1.你最喜欢的游戏?竞技类还是网游?手游是卡牌类还是竞技类。2.既然你说你是lol资深玩家,你最喜欢或者说玩的拿手的有哪些英雄3.说说小炮吧,如果小炮刚做出来,你是测开工程师,那么你会从几方面来测试4.白盒测试和黑盒测试的区别5.你觉得lol的匹配模式是遵循什么优先级的,除了段位外。6.塞拉斯bug你了解吗,谈了一堆。7.。。。。全是lol。...

2019-08-22 09:40:04 2078

原创 TCP可靠性传输是怎么是实现的?

《图解TCP/IP》这本书中提到“TCP通过校验和,序列号,确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性传输。”序列号、确认应答、重发控制在TCP三次握手(连接管理)和四次挥手中都有体现,这几个机制在很多博文中写的很不错,我也学习总结过一篇,没有创新,一直是知识的搬运工。现在我更关心的是窗口控制,流控制,拥塞控制这几个机制。首先我会问连接管理,重发控制,确认应答等机制还不能保证可靠性...

2019-08-17 22:10:35 711

原创 Redis主从复制

导航一般情况下的主从复制-增量同步快照同步一般情况下的主从复制-增量同步主节点会将改变数据的指令记录保存在buffer,然后异步复制(异步的同步数据)到从节点,从节点一边根据指令记录同步数据,同时还会返回正在执行的命令的偏移量。内存中的buffer是一个定长的环形数组,大小有限,当buffer满了的时候,新写入的指令记录会覆盖之前的记录。如果主节点和从节点的网络出问题,从节点未收到的指令可能会...

2019-07-29 10:57:22 140

原创 Redis为什么先执行指令,再写AOF日志?

为什么这么问因为在常见的数据库中,持久化重做日志一般是先写日志再修改数据库,保证数据/操作不会丢失。所以看到redis的AOF日志的机制后,很困惑,网上连这个问题的提问都没有,书上也是一笔带过。要弄明白这个问题,首先要搞懂Redis写AOF日志的流程。写AOF日志首先,AOF日志中写入的是收到的操作命令记录。redis包含丰富的数据类型,对set数据执行Rpush显然会发生错误,因此命令写...

2019-07-27 16:31:43 2968 4

原创 Redis和数据库缓存一致性的分析与可靠的解决方案

导航为什么会产生缓存不一致的情况普遍采取的更新缓存的策略解决删除缓存失败的问题为什么会产生缓存不一致的情况一般更新缓存有下面的几种策略:归根结底:缓存应该是更新还是删除?1.先更新数据库,再更新缓存并发更新数据库或者并发更新缓存时,可能会出现脏数据,并且每次都把没有读到的数据更新到缓存,也太浪费内存了。2.先删除缓存,再更新数据库如果一个线程更新数据,一个线程查询数据。更新数据的线程...

2019-07-25 10:12:58 287

原创 两种方法手写LRU(LinkedHashMap&&map+双链表)

前面注释掉的部分是简单的用LinkedHashMap写的LRU,属于没有技术含量,也不能很好的理解LRU.import java.util.HashMap;/** * @ClassName LRU 借助LinkedHashMap,重写removeEldestEntry,调用LinkedHashMap的size()方法来判断存入的元素个数。 * @Description TODO * @...

2019-07-23 16:36:45 751

原创 自己写Java ArrayList

无需多解释了,有注释。扩容的大小是按照源码中的1.5倍来的,你可以随意。错误之处,请在评论区不吝赐教。/** * @ClassName MyArraylist * @Description TODO * @Author Handoking * @Date 2019/7/17 18:55 **/import java.util.Arrays;import java.util.O...

2019-07-23 16:25:43 283

原创 RabbitMQ必问面试题

导航1.RabbitMQ怎么保证数据可靠性传输?2.RabbitMQ的优点和缺点是什么?3.怎么保证消息队列的高可用性?5.怎么保证消息的顺序?6.如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?7.如果让你自己写一个消息队列,你怎么设计架构?参考大佬的博客,点此跳转1.RabbitMQ怎么保证数据可靠性传输?开启comfirm,...

2019-07-20 17:25:27 444

原创 简单一句话:redis为什么快

基于内存,单线程,多路I/O复用//TODOredis分布式锁的实现

2019-07-18 17:03:55 221

原创 可以口头表达清楚的知识:InnoDB存储引擎体系结构/原理(一)

导航InnoDb的体系结构是怎样的,并分别简单介绍下?后台线程内存数据库缓存池的算法实现你了解吗?InnoDB的关键特性有哪些,能不能分别介绍一下InnoDb的体系结构是怎样的,并分别简单介绍下?包括内存,后台进程,数据文件等。(图片截取自Mysql技术内幕)后台线程Master Thread核心一句话:保证数据的一致性。即异步刷新缓存池中的数据到磁盘。比如刷新脏页到磁盘,合并插入缓...

2019-07-12 21:53:05 343

原创 Redis数据结构详解(一)简单动态字符串,链表,字典

导航1.简单动态字符串(SDS)数据结构SDS的优点2.链表链表结构定义3.字典字典的结构定义字典的rehash操作1.简单动态字符串(SDS)数据结构SDS结构定义struct sdshdr{ //SDS中保存的字符串的长度 int len; //SDS中未使用的空间长度 int free; //保存字符串的字节数组 char buf[];}例如在SDS中存入Redis...

2019-07-02 19:52:10 264

原创 几句话说清楚:TCP三次握手,四次挥手&&SSL四次握手

目录TCP的三次握手TCP四次挥手SSL的四次握手TCP的三次握手第一次:客户端发送建立连接请求。同步序号SYN,1表示连接请求,发送字节流的顺序号seq,假定为x。第二次:服务端应答请求。同步序号依然设置为1,确认号ack为顺序号加1,ACK设置为1表示确认号有效。本次的字节流需要一个顺序号seq,假定为y。第三次:客户端检查确认号是否正确,如果正确,发送确认信息到服务器,至此建立了T...

2019-06-26 21:19:52 1193

原创 几句话说清楚:Spring IOC和AOP

目录IOC能看得懂的定义AOP能感受到的定义原理IOC能看得懂的定义IOC控制反转,是一种设计思想,一般情况在程序中我们主动创建依赖对象,这样的类与类之间耦合性比较强,当依赖对象的改变时就需要修改源码。控制反转是将依赖对象的创建和查找的控制权交给容器,只需要修改配置文件就可以实现对依赖对象的修改。依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在...

2019-06-25 11:06:33 277

原创 一句话读完:Spring Bean的生命周期

拜读了很多大佬的博客,分析的都很好,受益匪浅。以下化繁为简,用很简单的几句话描述以下Bean的生命周期。Bean生命周期——构造器或者工厂方法创建Bean实例。——为Bean设置属性和对其他Bean的引用————IOC依赖注入属性,setBeanName设置ID,以及ApplicationContextAware的实现完成对其他Bean的引用——Bean后置处理器(postProcess...

2019-06-24 20:09:46 217

原创 java并发机制底层原理--轻量级锁

目录轻量级锁加锁、解锁过程轻量级锁的优缺点偏向锁只允许一个线程同时访问,主要针对极少竞争的情况,可以减少加锁和释放锁的性能消耗。轻量级锁允许多线程同时访问对象,但是是顺序访问,一个线程拥有锁,其他线程自旋获取锁。轻量级锁加锁、解锁过程线程在执行同步块之前,JVM为当前线程的栈帧中创建存储锁记录的空间。1.首先将头对象中的MarkWord复制到锁记录中,然后线程尝试用CAS将头对象中的Mar...

2019-06-14 21:26:22 369

原创 java并发机制底层实现原理--偏向锁

目录为什么需要偏向锁偏向锁的加锁过程偏向锁的释放过程偏向锁的缺点为什么需要偏向锁在大多数的情况下,锁不仅不存在多线程的竞争,往往是某个线程多次获得锁。为了降低线程获得锁和释放锁带来的性能消耗,因此引入了偏向锁和轻量级锁。偏向锁主要是降低单线程访问时频繁加锁,释放锁的消耗,当前线程一旦获得锁,再无竞争的情况下,那么下次访问代码块相当于几乎零成本的获得锁,不需要维护轻量级锁。偏向锁的加锁过程一...

2019-06-14 16:07:13 346

原创 java面试题与回答(二)

目录1.Arrays.sort 实现原理和 Collections.sort 实现原理1.Arrays.sort 实现原理和 Collections.sort 实现原理Collections.sort底层其实调用的是List.sort,List.sort调用了Arrays.sort。Arrays.sort如下:public static <T> void sort(T[] a,...

2019-06-03 20:43:29 186

原创 java必问面试题(一)

目录1.list和set的区别是什么2.了解CMS嘛,CMS的过程是怎么样的,哪些步骤需要用户线程停顿2.1 CMS的实现算法为什么是标记-清除,而不使用其他的算法,比如标记-整理算法2.2 G1垃圾收集器同样关注降低停顿时间,那为什么G1垃圾回收器的算法实现采用标记-整理。2.3 G1和CMS的区别是什么3.为什么hashMap是线程不安全的?3.1 hashMap在1.7和1.8有什么区别和优...

2019-05-31 21:36:08 254

原创 java8 HashMap put过程 源码分析

public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }很明显是putVal方法来完成的,看看怎么说。 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, ...

2019-05-31 10:15:19 374

原创 java内部比较器和外部比较器

外部比较器,实现comparator,重写compare,以下例子实现包含对象的集合的排序。排序时调用的函数是collections.sort(list,比较器)。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** *...

2019-05-24 16:39:57 1998

原创 leetcode153. 寻找旋转排序数组中的最小值(o(logn)和o(n))

题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0//二分法 复杂度o(logn)class Solution ...

2019-05-14 15:59:07 302

原创 leetcode278 第一个错误的版本——二分法

题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错...

2019-05-14 15:16:04 222

原创 leetcode540 有序数组中的单一元素——二分法

题目:给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。class Solution { public int singleN...

2019-05-14 14:12:08 189

原创 Leetcode744 寻找比目标字母大的最小字母——二分法

题目:给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。数组里字母的顺序是循环的。举个例子,如果目标字母target = ‘z’ 并且有序数组为 letters = [‘a’, ‘b’],则答案返回 ‘a’。//用二分法查找,效率极高,1ms ,击败了99.67%用户.class Solution { public ...

2019-05-14 10:19:56 169

原创 LeetCode69求开平方

题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。解一:二分法class Solution { public int mySqrt(int x) { if (x <=1 ) { return x; } ...

2019-05-13 21:41:30 389

原创 InnoDB与MyISAM区别

最大的区别应该是事务性。InnoDB支持事务,而MyiSAM不支持事务,因此也没有事务的和隔离级别来保证并发产生的各种问题。没有事务特性在并发的情况下MyiSAM怎么操作?MyiSAM存储引擎支持表锁,写数据排他锁,其他线程无法获得锁。读数据时共享锁,允许线程插入数据。而InnoDB既支持表级锁,同时也支持行级锁。存储空间占用情况MyiSAM设计相对简单,数据以紧密格式存储,支持压缩表,...

2019-05-11 15:30:58 952

中科院NLPIR最新版分词(2018.10)系统加入用户词典和去除停用词的完整代码

在最新版的中科分词系统基础上,进行了改进,加入用户词典和停用词,并进行文件无乱码读写,输出分词结果,效果不错,是情感分析的良好基础。这一部分,我用来写作为硕士论文的数据处理基础。在此分享给各位,欢迎指教

2018-10-24

【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间)

【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间) https://blog.csdn.net/handoking/article/details/79751939

2018-03-30

【源代码】C++算法(四)队列的基本操作 (用队列实现十进制转换十六进制)

【源代码】C++算法(四)队列的基本操作 (用队列实现十进制转换十六进制)

2018-03-30

【源代码】C++实现严蔚敏数据结构所有算法(三)堆栈的基本操作(VS2017)

【源代码】C++实现严蔚敏数据结构所有算法(三)堆栈(VS2017)

2018-03-30

(源代码)C++实现严蔚敏数据结构所有算法(一)线性表-顺序表 (VS2013)

(源代码)C++实现严蔚敏数据结构所有算法(一)线性表-顺序表 (VS2013)

2018-03-13

ubuntu入门学习笔记

是本人学习ubuntu从开始到熟练的手稿,一步一步码出来的。很适合刚上手linux的朋友学习,欢迎提建议。

2018-01-25

西安电子科技通信原理考研资料

基本规律和技巧 第一部分 线性调制 前提: 信道和滤波器都是理想的,幅频特性是常数 1 1 1 1 ,所有 的载波振幅也为 。 、一般情况下,一个基带信号(或低通信号)乘以高频正 弦或余弦载波后,平均功率 减半 ,若再通过单边带滤波器 , 平均功率 又减半 ,这是由于上下边带所携带功率相等的缘 故。 、具有窄带噪声形式(例如单边带调制信号)的已调信号 通过相干解调器后 , 平均功率减为 四分之一 , 这是由于其正

2017-09-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除