golang切片扩容机制 前言 golang的切片扩容机制是golang面试者绕不开的一扇大门,无论在面试提问,或者面试情景上都绕不开它,今天就说说我理解下的切片扩容。 golang的扩容机制:在go1.18之前有一个临界值为1024,小于1024的时候,切片先两倍扩容,如果两倍扩容后的容量还是不够,就直接以切片需要的容量作为容量。 在go1.18之后,临界值换成了256,小于256和前面相同,大于256公式变为(oldc 开发运维 2023-07-12 贤蛋大眼萌
Kotlin教程:数组的构造函数与示例 数组是Int,String等类似数据类型的集合。Kotlin中的数组本质上是可变的,具有固定大小,这意味着可以对数组元素执行读写操作。 数组的构造函数 使用指定的大小和init函数声明数组构造函数。 init函数用于返回带有索引的数组元素。 Array(size: Int, init: (Int) -> T) 可以使用arrayOf(),intArrayOf(),charArrayOf(), 开发运维 2023-07-12 泡泡
深入理解网络通讯和TCP、IP协议 ps:基础知识我们先过一过,毕竟计算机网络就是纯理论的东西。 网络协议 计算机网络是什么? 随着计算机技术发展,计算机的体积和价格都在下降,之前计算机多用于研究机构,现阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介质进行转存,人们需要将数据直接通过通信线路传输,来缩短传输时间,于是计算机网络开始诞生,并逐渐发展为现在巨大的 Internet。 定义和分类 计算机网 开发运维 2023-07-12 竹子爱熊猫
Kotlin教程:字符串属性、元素和模板 String类表示char类型的数组。 字符串是不可变的,这意味着长度和元素在创建后不能更改。 val ch = charArrayOf('h', 'e', 'l', 'l', 'o') val st = String(ch) Kotlin 与Java不同,Kotlin不需要使用new关键字来实例化String类的对象。 String可以简单地在双引号("")中声明,称为转义字符串或三引号(""" 开发运维 2023-07-12 大树
命令模式综合实战——完美复刻坦克大战地形图 上一小节我们通过命令模式的使用实现了坦克大战地图景物的初步绘制。为了进一步巩固学习成果,这一小节,我们将写一个实战的demo来完善地图的绘制和地形数据的生成。 绘图功能展示 看下我们做出的效果图: 绘图功能,我们在上一小节的基础上,实现了右侧画笔设置面板。可以选择要绘制的不同的景物,并选择要绘制的尺寸,需要注意的是,砖块可以选择8*8的尺寸,而其他景物类型则不可以。看下绘制效果: 发现,当尺寸一栏 开发运维 2023-07-12 大白菜程序猿
跟我一起从零开始学python(四)数据库编程:MySQL数据库 前言 回顾之前讲了python语法编程 ,必修入门基础和网络编程,多线程/多进程/协程等方面的内容,今天到了数据库编程篇,前面没看的也不用往前翻,系列文已经整理好了: 1.跟我一起从零开始学python(一)编程语法必修 2.跟我一起从零开始学python(二)网络编程 3.跟我一起从零开始学python(三)多线程/多进程/协程 本篇讲:python数据库编程:MySQL数据库 本系列文根据以下 开发运维 2023-07-12 向阳逐梦
Kotlin教程:异常处理(throw表达式) 异常是程序中发生的运行时问题,导致程序终止。 这可能是由于内存空间不足,数组越界,条件除以零而发生的。 要在程序执行期间处理这种类型的问题,可使用异常处理技术。 异常处理是一种处理运行时问题并维护程序执行流程的技术。 在Kotlin中,所有异常类都是Throwable类的子类。 要抛出异常对象,Kotlin使用throw表达式。 throw MyException("this throws an 开发运维 2023-07-12 LOVEHL^ˇ^
Go 并发模型—Goroutines 前言 Goroutines 是 Go 语言主要的并发原语。它看起来非常像线程,但是相比于线程它的创建和管理成本很低。Go 在运行时将 goroutine 有效地调度到真实的线程上,以避免浪费资源,因此您可以轻松地创建大量的 goroutine(例如每个请求一个 goroutine),并且您可以编写简单的,命令式的阻塞代码。因此,Go 的网络代码往往比其它语言中的等效代码更直接,更容易理解(这点从下 开发运维 2023-07-12 Escape
基于 SpringBoot & IDEA & JRebel 玩转远程热部署与远程调试 基于 SpringBoot & IDEA & JRebel 玩转远程热部署与远程调试 前言 在 SpringBoot 开发过程中,当我们在 Debug 我们的工程时,随便修改一段代码逻辑、修改接口路由、新增一个工具类等等情况下,都需要我们重新启动工程。反复的修改逻辑,反复的重启,这是相当痛苦的过程。当工程越来越大的时候,效率将变得特别低下,大部分的时间就是在不断的重启项目、编译包、 开发运维 2023-07-12 大白菜程序猿
Kotlin教程:try...catch块异常处理解决方案 Kotlin try-catch块用于代码中的异常处理。 try块包含可能抛出异常的代码,catch块用于处理异常,必须在方法中写入此块。 Kotlin try块必须跟随catch块或finally块或两者。 使用catch块的try语法 try{ //code that may throw exception }catch(e: SomeException){ //code that handl 开发运维 2023-07-12 竹子爱熊猫
【ZookeeperApach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0 介绍 Curator是netflix公司开源的一套zookeeper客户端,目前是Apache的顶级项目。和ZK的原生客户端相比,Curator的抽象层次要更高,同时简化了ZK的常用功能开发量,比如Curator自带连接重试、反复注册Watcher、NodeExistsException 异常处理等等。 根据官方的介绍,我们可以了解到它是一个用于分布式的Java客户端API工具。它基于high-l 开发运维 2023-07-12 大猫
OpenFeign实战 OpenFeign 是Netflix开发的声明式、模板化的http请求客户端,作用和RestTemplate差不多,只不过OpenFeign可以更加便捷、优雅地调用http api。 OpenFeign可以将提供者提供的http接口伪装为Java接口进行消费,消费者只需使用 接口 + 注解 的方式便可直接调用提供者提供的http接口,而无需再使用RestTemplate。 OpenFeig 开发运维 2023-07-12 竹子爱熊猫
Kotlin教程:嵌套trycatch块 可以在需要时使用嵌套的try块。 嵌套的try catch块就是这样一个块:其中一个try catch块在另一个try块中实现。 当一个代码块捕捉异常并且在该块内另一个代码语句也需要捕捉另一个异常时,就会有嵌套的try catch块的需要。 嵌套try块的语法 .. try { // code block try { // code block } catch(e: SomeException) 开发运维 2023-07-12 贤蛋大眼萌
【从01 千万级直播项目实战线上拦截器中使用ThreadLocal失效问题排查 背景 运营反馈,有用户在直播间内发送公屏,A用户发送的公屏 结果直播间内所有人员都显示了B用户发送的,而实际却是A用户发的。 原因分析 日志排查 询问运营要到问题截图 定位公屏内容和出现问题的时间点 3.查看log打印代码位置 好家伙,发现服务端没有没错,实际发消息的用户ID和大家收到公屏的发送人不一样? 又让客户端排查了下日志,发现客户端A发送的,实际到了服务端从Token中获取到的当前发送公屏 开发运维 2023-07-12 法医
通俗易懂数仓建模—Inmon范式建模与Kimball维度建模 在数据仓库领域,有两位大师,一位是“数据仓库”之父 Bill Inmon,一位是数据仓库权威专家 Ralph Kimball,两位大师每人都有一本经典著作,Inmon大师著作《数据仓库》及Kimball大师的《数仓工具箱》,两本书也代表了两种不同的数仓建设模式,这两种架构模式支撑了数据仓库以及商业智能近二十年的发展。今天我们就来聊下这两种建模方式——范式建模和维度建模。 本文开始先简单理解两种建模 开发运维 2023-07-12 泡泡
Kotlin教程:finally块 Kotlin finally是这样的块:无论是否处理异常,它总是执行。 所以它用于执行重要的代码语句。 Kotlin finally块示例1 下面我们看一个异常处理的例子,但这个示例中不会发生异常。 fun main (args: Array){ try { val data = 10 / 5 println(data) } catch (e: NullPointerException) { pr 开发运维 2023-07-12 大猫
38.RocketMQ之Broker的主从架构 本文摘自:Broker的主从架构是怎么实现的 Master Broker与Slave Broker之间的消息同步 Broker是RocketMQ的核心模块,负责接收并存储消息,为了保证整个MQ的高可用,一般情况都会将Broker部署成集群,集群中的每一部分都由Master和Slave组成,那么Master与Slave之间的数据是如何保证同步一致的呢? 是Master主动把数据推送给Slave?还是 开发运维 2023-07-12 剑圣无痕
39.Dledger是如何实现主从自动切换的 本文摘自: Dledger是如何实现主从自动切换的 前言 Broker的主从切换是可以基于Dledger实现自动切换的,那么小伙伴们是不是很好奇它究竟是如何实现的呢?今天我们就来聊一聊这个话题。 首先我们回顾一下Broker是如何持久化的中,producer发送消息给Broker后,首先将消息写入到CommitLog日志文件中,然后会把具体的MessageQueue中消息的位置信息存储到Consu 开发运维 2023-07-12 大猫
Kotlin教程:throwexpression关键字 Kotlin throw关键字用于抛出显式异常。它用于抛出自定义异常。要抛出异常对象,将使用throw-expression。 throw关键字的语法 throw SomeException() Kotlin throw示例 让我们来看一下throw关键字的示例,此示例演示验证驾驶执照的年龄限制。 fun main(args: Array) { validate(15) println("code 开发运维 2023-07-12 法医
OpenFeign是如何识别RequestMapping注解的? 前言 我们平时写的OpenFeign Client接口,和SpringMvc Controller接口语法的定义一模一样。使得Spring Mvc用户使用OpenFeign框架非常丝滑的过渡。 比如下方这种: @FeignClient(name = "fox-server", url = "http://127.0.0.1") public interface FeignClientApi { @ 开发运维 2023-07-12 大白菜程序猿