深圳幻海软件技术有限公司 欢迎您!

  • 二叉搜索树

    二叉搜索树文章目录二叉搜索树定义实现节点类的框架insert函数find函数erase函数-方法一erase函数-方法二递归实现_insert_R函数_erase_R函数构造函数析构函数Destory函数拷贝构造Copy函数赋值重载K模型和KV模型K模型KV模型简单介绍DFS和BFS二叉搜索树的性能

  • 【数据结构】插入排序 — 直接插入排序

    目录 一、概述二、直接插入排序1)概述2)步骤3)示意图 4)分析:不带监视哨的算法5)算法实现:不带监视哨6)分析:带监视哨的算法7)算法:带监视哨8)性能分析前言1.插入排序,一般也被称为直接插入排序。对于少量元素的排序是一个好的排序方法。插入排序是一种最简单的排序方法。2.

  • HashMap实现原理、 扩容机制,常见的面试题总结

    不论是android面试还是java面试,都会问到hashmap的原理和怎么实现的,今天我们就来总结下;一、HashMap(数组+链表+红黑树)原理HashMap底层使用数组,每个数组元素存的是Node类型(或者TreeNode),table的每一个位置,又可以称为Hash桶,也就是说,会将相同ha

  • Android进阶之彻底理解LruCache缓存机制原理

    前言Android的三级缓存,其中主要的就是内存缓存和硬盘缓存。这两种缓存机制的实现都应用到了LruCache算法,今天我们就从使用到源码解析,来彻底理解Android中的缓存机制;一、LruCache概念介绍1.什么是LruCache?LruCache是Android3.1所提供的一个缓存类,所以

  • ThreadLocal原理详解--面试粉碎机

    一种解决多线程环境下成员变量的问题的方案,但是与线程同步无关,其思路是为每一个线程创建一个单独的变量副本,从而每个线程都可以独立地改变所拥有的变量副本,而不会影响其他线程所对应的副本;ThreadLocal不是用于解决共享变量的问题的,也不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态

  • 什么是m3u8格式? Python合并ts文件至mp4格式及解密教程

    m3u8是什么格式?m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。m3u8准确来说是一种索引文件,使用m

  • 别再听中介忽悠了,用Python租到最合适的房子!

    为了确保换房后我和女友前往各自上班地点的通勤时间都在可接受范围内,我需要知道从各处房源位置前往两家公司所需的时间。为了获取这些信息,我们需要借助高德地图api这个工具。使用高德api,我们能够轻松地根据地址或名称获取到地址对应的坐标位置,进而获取到对应地点的通勤和周边信息,十分的方便。在使用api之

  • 你还在直接用 localStorage 么?该提升下了

    设计封装之前先梳理下所需功能,并要做成什么样,采用什么样的规范,部分主要代码片段是以 ​​localStorage​​作为示例,最后会贴出完整代码的。可以结合项目自行优化,也可以直接使用。复制//区分存储类型type//自定义名称前缀prefix//支持设置过期时间expire//支持加密

  • 为什么Proxy一定要配合Reflect使用?

    引言EcmaScript2015中引入了Proxy代理[1]与Reflect反射[2]两个新的内置模块。我们可以利用Proxy和Reflect来实现对于对象的代理劫持操作,类似于Es5中Object.defineProperty\(\)[3]的效果,不过Reflect&Proxy远远比它强大

  • 基于Spring接口,集成Caffeine+Redis两级缓存

    在上一篇文章​​Redis+Caffeine两级缓存,让访问速度纵享丝滑​​中,我们介绍了3种整合Caffeine和Redis作为两级缓存使用的方法,虽然说能够实现功能,但实现手法还是太粗糙了,并且遗留了一些问题没有处理。本文将在上一篇的基础上,围绕两个方面进行进一步的改造:JSR107定义了缓存使

  • RPC框架编写实践-RPC常见限流方法的实现

    前记在微服务中,虽然服务间的调用都是可信的,但是服务端也需要堤防一些流量,防止被意外的流量击垮,而通过限流可以防止问题的发生。此外,使用不同的限流规则还能根据系统间不同服务的请求进行限制,解决某个函数被频繁调用而拖垮整个系统的问题。NOTE:虽然本文是在编写RPC框架有感而发,但是也适用于常见的We

  • 一文搞定数据响应式原理

    在Vue中,其中最最最核心的一个知识点就是数据响应式原理,数据响应式原理归结起来就包含两大部分:侦测数据变化、依赖收集,了解这两个知识点就了解到了数据响应式原理的精华。一、侦测数据变化能够帧听到数据变化是数据响应式原理的前提,因为数据响应式正是基于监听到数据变化后来触发一系列的更新操作。本次介绍数据

  • 瞬间几千次的重复提交,我用SpringBoot+Redis扛住了!

    前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段: 数据库建立唯一性索引,可以保证最终插入数据库

  • Python中Lambda的前4个错误

     lambda被认为是非常Python的语言,是Python编程中比较受欢迎的功能之一。如此之多,以至于许多Python程序员都想尽可能地使用它们。当然,lambda具有使我们的代码简洁的优势,但是在项目中过度使用它们会导致滥用,从而降低我们代码的可读性和可维护性。在开始研究这些误用是什么

  • 一个简单的例子带你理解HashMap

    前言我知道大家都很熟悉hashmap,并且有事没事都会new一个,但是hashmap的一些特性大家都是看了忘,忘了再记,今天这个例子可以帮助大家很好的记住。场景用户提交一张试卷答案到服务端,post报文可精简为 复制[{"question_id":"100001","answer":"A"

  • SpringBoot+Redis分布式锁:模拟抢单

    本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁 如何删除锁 模拟抢单动作(10w个人开抢)&nbsp

  • SpringBoot中整合Redis(缓存篇)

    实际开发中缓存处理是必须的,不可能我们每次客户端去请求一次服务器,服务器每次都要去数据库中进行查找,为什么要使用缓存?说到底是为了提高系统的运行速度。将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度,今天先来讲下在springboot中整合redis的详细步骤。一、安装r

  • Redis集合类型使用说明

     今天我们了解一下Redis中的集合类型,也就是set集合。在Redis中set也是可以保存多个字符串的。那么set集合和list链表到底有什么不同呢?下面我们重点介绍一下它们之间的不同。set中的元素是不可以重复的,而list是可以保存重复元素的。set中的元素是无序的,而list中的元

  • 一文搞懂Nginx限流,原来这么简单

     Nginx现在已经是最火的负载均衡之一,在流量陡增的互联网面前,接口限流也是很有必要的,尤其是针对高并发的场景。Nginx的限流主要是两种方式:限制访问频率和限制并发连接数。一、限制访问频率(正常流量)Nginx中我们使用 ngx_http_limit_req_module&n

  • 数字签名与HTTPS详解

    前面几篇博客聊了HTTP的相关东西,今天就来聊一聊HTTPS的东西。因为HTTP协议本身存在着明文传输、不能很好的验证通信方的身份和无法验证报文的完整性等一些安全方面的确点,所以才有了HTTPS的缺陷。HTTPS确切的的说不是一种协议,而是HTTP+SSL(TSL)的结合体。HTTP报文经过SSL层

推荐阅读