时间轮的golang实践浅析 思考:一定有一个类似于定时器的工具在执行,到时间后,中断任务。那么这个定时器是什么样的数据结构?又是如何实现这个定时功能的?理论上客户端发起请求后,立即创建(启动)一个 Timer:到期间隔为 d,到期后执行 “断开连接” 的操作。如果到期间隔 d 以内收到了服务器的响应,客户端就删除(停止)这个 Timer。如果一直没有收到响应,则 Timer 最终会到期,然后执行 “断开连接” 的操作。实际上。
零钱交换及其延伸问题的讨论 有这样一个问题:给定不同面额的硬币 coins 和一个总金额 target,求出组成target金额的硬币序列。延伸出下列问题:1、零钱数组是否可以组成target表示的金额2、在1问题的基础上,凑出target表示金额所需要的最少零钱数量3、在2问题的基础上3.1、凑出target表示金额的所有零钱数量的组合3.2、凑出target表示金额的所有零钱数量的排列4、零钱数组每个数仅能用1次的基础上,是否还能凑出target表示金额5、在5的基础上,进行排列组合6、上述6个问题,零钱
Charles简易使用指南 本文讲解的内容是Charles简易使用指南,主要包括:安装Charles配置Charles使用Charles抓包使用Charles发送请求安装Charles下载地址:https://www.charlesproxy.com/download/参考文档:CHARLES-Charles安装与使用配置Charles1、电脑安装证书2、手机安装证书解决显示unknown问题下载证书:手机浏览器输入:chls.pro/ssl即可下载安装证书:找到证书的下载地址,点
跳表,红黑树,b+树,hashmap的区别? 跳表,红黑树,b+树,hashmap因为在其数据结构上的不同而体现出不同的性能,本文从下列角度来权衡各种结构的利弊,加深对各种结构的理解。1.为什么mysql使用b+树而不是红黑树或者hashmap?2.为什么redis使用跳表而不是红黑树或者hashmap?3.为什么重写equals以后还要重写hash1.为什么mysql使用b+树而不是红黑树或者hashmap?1.1、不使用红黑树是因为:1)在增删改查的过程中,时间复杂度为log2n,而b+是logmN,体现在内存和磁盘的IO上
数据结构基础:堆栈队列 本文讲解的主要内容是堆栈队列,其中:堆主要讲解大小顶堆和堆的应用(查找第K大的元素)、优先队列栈主要讲解栈的实现(数组栈和链表栈)、双栈实现队列、最小栈、最小栈优化、单调栈、计算器队列主要讲解队列的实现(数组队列和链表队列)、队列实现栈说明:所有源码均可以在idea上调试。堆大小顶堆介绍:使用对排序对数组进行排序,根据排序规则分为大顶堆和小顶堆设计思路:初试化建堆,建完后,堆顶即最大/最小元素。交换堆顶和数组末尾元素,然后针对剩余的n-1个元素,对堆顶元素进行调整即可。重复2
面试姊妹篇5:常见的Java基础面试题 目的专门收集一些看上去很有意思的题目这些题目,一看就会,一做就错持续更新,每十题作为一篇文章目录1、异或思维2、数组相关系列文章面试姊妹篇1:不起眼的Java基础/陷阱题,一看就会,一做就错面试姊妹篇3:常用方法中的错误BigDecimal bd1 = new BigDecimal("2.0");BigDecimal bd2 = new BigDecimal("2.00");System.out.println("equals: " + bd1.equals(bd2))
常用配置文件(备忘录) 本文主要记录常用的一些配置文件,主要包括:或者见MAC 的 .bash_profileGolang下载地址Go 语言之Mac环境配置或者见MAC 的 .bash_profileJDK下载地址Mac 配置JDK环境变量.bash_profilemac的git自动补全:git-completion.zsh
面试姊妹篇4:常见的Java多线程面试题 主要内容本文主要记录多线程相关的操作问题,这些问题主要出现在一些面试中,当然学会了对本身的代码能力也有提升。目录1、顺序多线程2、发令枪问题本文源码1、顺序多线程\color{7f1A8A}1、顺序多线程1、顺序多线程题目描述:两个线程,一个只能存有数组1、2、3和另一个存有a、b、c,然后通过调度,最终结果输出1a2b3c2、发令枪问题\color{7f1A8A}2、发令枪问题2、发令枪问题...
往红黑树祖坟上刨根问底 一、题目描述将数组转化为红黑树(主要介绍add()、delete()、containsKey()方法)其中add函数共包含四部分:add()、insertFixup()、rotateRight()、rotateLeft()。delete函数包含:containsKey函数包含:详细源码:RedBlackTree二、解题思路add()\color{red}{add()}add()delete()\color{red}{delete()}delete()containsKe
Java并发系列:反射的使用和AOP Java反射可以自由的获取类的对象属性、方法。本文主要介绍以下用法:获取对象中的常量正文获取对象中的常量\color{7f1A8A}获取对象中的常量获取对象中的常量说明假设存在类A,是一个测试用例类,类中存在大量的以array开头的非静态数组现在有个类B,想对类A中的这些用例做同样的操作,因此需要把这些用例放置在一个容器中,通过循环去做操作,获取用例数组的过程需要反射。注意因为是非静态,所以m.invoke(gg),为不是m.invoke( c ),c是类,gg是对象,类取
二叉树序列化和反序列化的两种方式 本文主要介绍二叉树的序列化和反序列化,内容为二叉树和数组的互相转化。二叉树的序列化按层遍历二叉树 输出数组S形遍历二叉树 输出数组先序遍历二叉树 输出数组中序遍历二叉树 输出数组后序遍历二叉树 输出数组二叉树的反序列化将按层次遍历的方式输入的数组 构造成一个二叉树将按先序遍历的方式输入的数组 构造成一个二叉树将按中序遍历的方式输入的数组 构造成一个二叉树将按后序遍历的方式输入的数组 构造成一个二叉树根据前序遍历序列和中序遍历序列,构建唯一一棵确定的二叉树根据后序遍
0-1背包问题解法(动态规划、分支限界法(回溯法、剪枝法)、贪心算法) 本文主要讲解0-1背包问题的三种解法:动态规划分支限界法(回溯法、剪枝法)贪心算法什么是0-1背包问题:给定n个重量为w1,w2,w3…wn,其价值为v1,v2,v3…vn的物品和容量为C的背包,求这个物品中一个最有价值的子集,使得在满足背包的容量的前提下,包内的总价值最大正文开始动态规划主要思想主要代码注意事项分支限界法(回溯法、剪枝法)主要思想主要代码注意事项贪心算法主要思想主要代码注意事项...
懒人专属:使用screw一键生成数据库文档 本文主要介绍如何使用screw一键生成数据库文档主要涉及的文件pom.xmlapplication.properties如何使用运行插件主要涉及的文件pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst
懒人专属:MyBatis Generator自动生成代码及排坑 本文主要介绍如何使用MyBatis Generator自动生成代码,项目源码:GeneralCode简易说明需要在pom.xml中插入mybatis.generator插件需要一个generatorConfig.xml文件来描述需要逆向的数据库名称以及数据库连接配置通过maven启动项目使用步骤pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/PO
Redis系列:redis实现分布式锁 基于 Redis 实现一个通用的分布式锁组件。整体模式Jmeter发压到Nginx上,Nginx在负载到两台应用上,应用去redis上扣款,组成分布式环境。注意在实验的时候,可以打包两个端口不同的jar包,也可以在idea上开启Allow parallel run达到实验目的。SpringBoot jar启动报错:S