自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AaronCao

停下来,就思考,思考完,继续停下来之前的事情!

  • 博客(113)
  • 资源 (1)
  • 收藏
  • 关注

原创 看完这篇Kafka,你也许就会了Kafka

Kafka学习文章目录Kafka学习1. Kafka简介1.1 Kafka消费模式1.2 Kafka的基础架构1.3 Kafka的安装和使用2. Kafka高级2.1 工作流程2.2 文件存储2.3 生产者分区策略2.4 生产者ISR2.4.1 副本数据同步策略2.4.2 ISR(同步副本集)2.5 生产者ack机制2.6 数据一致性问题2.7 ExactlyOnce3. 消费者分区分配策略3.1 分区分配策略3.2 消费者offset的存储3.3 消费者组案例4. 高效读写&Zookeeper作

2021-01-13 20:58:15 163975 83

原创 外部工具包不要依赖服务的环境变量

外部工具包不要依赖服务的环境变量,如果必须要依赖,那么在缺失环境变量时就要有足够严厉的告警提示使用者,否则容易引入bug

2024-04-02 22:46:08 367

原创 记一次对Codis的无知引起的逻辑变更

Codis是Redis的分布式解决方案,旨在提供Redis的分布式部署和自动分片功能。但Codis不支持Redis的所有命令,而不支持PUBLISH命令导致了一些业务逻辑的变更。

2024-03-31 18:13:15 634

原创 记使用sjson的一次小事故

sjson数字key与字符key设置的不同在使用时需要考虑,否则可能会导致出现内存爆炸的问题。

2024-03-24 16:56:52 509

原创 context.WithTimeout()之实现Gorm超时控制

Context是Golang中的上下文,Gorm是当前用的比较多的SQL组件库,在Gorm中,Gorm通过提供了Context支持,在某种程度上来说,Gorm目前提供的Context可以实现对于SQL的超时控制。本意是为了实现gorm单条SQL语句执行时间的控制而引入的,限制单条语句执行时间,后面在修改过程中遇到了关于的问题,在修复问题的过程中让自己对有了更深的理解。

2023-09-02 17:46:39 1684

原创 浅尝OpenResty

当一个域名中衍生出多个服务的时候,如果想要保持对外服务始终是一个域名,则需要通过nginx反向代理来实现。nginx + lua module来实现Openresty来实现我这里尝试使用Openresty来实现lua脚本嵌入逻辑实现nginx的请求转发。

2023-08-20 13:02:44 846

原创 Golang服务的请求调度

最近在看相关的Go服务的请求调度的时候,发现在gin中默认提供的中间件中,不含有请求调度相关的逻辑中间件,去github查看了一些服务框架,发现在go-zero中,有一个SheddingHandler的中间件来帮助服务请求进行调度,防止在流量徒增的时候,服务出现滚雪球进一步恶化,导致最后服务不可用的现象出现。SheddingHandler中间件存在的意义就是尽量保证服务可用的情况下尽可能多的处理请求,而在流量突增的时候,丢弃部分请求以确保服务可用,防止服务因为流量过大而崩溃。

2023-08-13 19:02:56 435

原创 go语言中decimal的用法及实践

decimal的应用场景主要出现在对float浮点数进行加减乘除操作的时候,尤其是对于银行金融一块的业务,如果精度丢失,一笔交易上面的损失可以忽略不计,但当交易的规模达到几千万或者亿甚至几十亿的时候,这个时候的损失就会大的吓人了。decimal对于浮点数的计算提供了极大的便利性,让我们在使用浮点数进行大小计算的时候不用担心精度丢失的问题,尤其是对于金融行业,精度丢失造成资损就是很重大的生产事故了。的数据进行计算的时候,我们可以使用第三方的decimal包来解决这个问题。可以获取到浮点数计算结果的整数部分。

2023-01-08 12:18:13 3069 1

原创 Python中5个有用的函数

Python中5个有用的函数本文主要介绍在Python中5个比较重要的函数,通过代码的实例来呈现这些函数为什么有用。这些函数写出来比较简单,但在代码结构的优化上却可以大显身手。Python有许多的函数库以及内置函数,理解这些函数并在日常编程中使用它们将会帮助我们实现有效编程。1. Lambda函数匿名函数是Python中一个重要的函数,在很多地方我们都会用到匿名函数,匿名函数简单来说就是声明函数,可以不用赋予函数名称。如果有一个简单的需求需要执行,使用lambda函数是极其有效的。lambda函数和函

2021-07-25 22:52:30 607

原创 RSA加密与解密

RSA加密解密关于公钥和私钥的加密解密问题1. 简介RSA(Rivest-Shamir-Adleman)是当前用于加密和解密信息的算法,它是一种非对称的密码学算法,非对称的含义就是加密和解密用的密钥是不同的,对称的加密算法类似于我们的门锁,加密解密都是通过我们的钥匙来实现的,是同一把钥匙,而对称加密是加密的钥匙是一把,大家都可以拥有这把钥匙,而解密的钥匙是另一把,而这把钥匙只能你有,其他人都没有。RSA涉及的公钥和私钥,公钥表示每个人都可以知道,都可以使用它来进行加密信息的操作,而采用公钥加密的

2021-06-20 18:14:16 1043 1

原创 Django的分库分表

文章目录1. Django分表方案2. Django分库方案2.1 DB路由方式2.2 Config配置方式3. 小结1. Django分表方案当系统数据越来越多的时候,查询变得缓慢,即使加了索引,由于表数据的增加,索引的维护也会成为数据库性能的限制问题,所以此时可以通过分表,将数据通过某种准则分别存储到不同的表中,以实现缓解单表的压力。分表的方法大部分都是通过主键id取数据库分表个数的余。最简单的方法就是定义多个Model对象,然后通过一个map的映射,当我们获取具体的Model的时候,直接就通过.

2021-06-19 17:49:50 3612 1

原创 固有思维的思考

固有思维每一个意识形态的形成背后都有着一个故事,它们或是发生在过去了很久的时光里,亦或是最近的生活中,但无论发生的时间点远或者近,它们都让你在思考某件事上的意识形态发生了变化。今天的话题是固有思维,为什么会说起这个话题,这是因为最近的一件事情让自己觉得固有思维真的是太可怕了,或许现在的结果是最好的,也许不是最好的,这件事情发生在去年的4月份左右,如果不是结合现在和过去,那就没有所谓的反思和思维的进步。在去年的4月份,金三银四对于找实习的自己来说,像是一条铁律,在自己的心里面扎根,于是投递了鹅厂的岗

2021-06-19 11:18:58 451

原创 了解一下Celery

Celery1. 简介Celery - 中文名翻译叫芹菜,是一种分布式的任务队列(Distribute Task Queue)Celery is a simple, flexible, and reliable distribute system to process vast amounts of message, while providing operations with the tools required to miantain such a system. --摘自官方文档Cele

2021-06-14 22:19:16 603 2

原创 帮你快速上手Jenkins自动化部署

Jenkins学习文章目录Jenkins学习1. 下载与安装问题点2. Jenkins的使用2.1 配置流程**2.1.1 如何让jenkins与github通信**2.1.2 配置Jenkins2.1.3 一段Django启动的脚本2.1.4 webhook的配置**2.1.5 jenkins添加webhook**github配置webhook3. 运行4. 小结第三周在未学习Jenkins之前,只是对Jenkins有一个比较模糊的理解,即Jenkins是一个自动化构建项目发布的工具,可以实现代码

2021-05-29 19:56:59 435

原创 压测工具wrk的使用

压测工具wrk的使用0. 写在前面缅怀袁老,国士无双,感恩能与您同处一个时空!袁老一路走好!那些与我们同时代的光芒熠熠的人物,其实和伴随我们的日月星辰没什么区别,平时你总不大会时常想起他们,你总觉得他们永远会在。然而他们却又和日月星辰不同,是西沉了就不再升起,划过天幕就不再回来。文章目录压测工具wrk的使用0. 写在前面1. 简介2. wrk3. 安装&使用3.1 wrk的使用3.2 wrk测试报告3.3 借助lua脚本进行复杂测试3.3.1 wrk的全局变量3.3.1 wrk支持

2021-05-23 11:19:57 504

原创 Go语言Web框架Beego学习

1. 安装beego// 下载beego的安装包go get -u github.com/beego/beego/[email protected]// 可能会与遇到错误,如下图所示,然后开启set GO111MODULE=on即可,go env可以看环境变量配置,mac/Linux使用export GO111MODULE=on即可set GO111MODULE=on如果安装还是没有反应set GO111MODULE=onset GOPROXY=https://goproxy.io// 然后再执行,即

2021-03-18 10:43:53 969 1

原创 不能使用for循环遍历Queue

为什么不能使用for循环遍历Queue昨天有个朋友问我一道算法题,给出了他和答案的两个版本,这道题我看过,并查集问题,左看右看就是没发现它有问题,于是进行debug,发现数据读取没有问题,于是继续判断合并是否有误,发现也没有问题,最后发现他使用的PriorityQueue他使用的for循环进行遍历,好家伙,我当场好家伙!1. 遍历 public static void main(String[] args) { // 默认是小顶堆 PriorityQueue<

2021-02-01 13:11:22 1892

原创 Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误

Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误1. 问题无法加载操作系统,原因是关键系统驱动程序丢失或包含错误上午因为有点事就没有像往常一样打开电脑,下午回到家休息了一会本来准备打开电脑开始我愉快地下午生活,没想到一个自动恢复给我整懵逼了。于是就开始百度,怎么样搞怎么样搞。网上关于这个问题的帖子很多,但是能提供帮助的很少,最后能够解决问题的也很少。摸爬滚打一下午,到最后也算是搞定了。记录一下心得,也给后面的小伙伴一些帮助。2. 解决过程首先在百度的过程中自己

2021-01-30 21:09:53 32184 6

原创 CondaError: Cannot link a source that does not exist.

晚上跑论文图像的时候发现自己的sklearn.metrics版本有些低,报错告诉我davies_bouldin_score不存在。我很纳闷,前段时间在学校还好好的,怎么现在就这样了。于是开始百度,就有了下面的过程。1. 报错# 我执行的更新conda update scikit-learn# 本来是好好的,但是下载的速度真的慢的惊人速度慢引起的更换镜像源于是更换镜像源# 中科大亲测可用(清华源会报错,不可用)conda config --add channels https://mir.

2021-01-27 22:59:59 8050 1

原创 这篇Linux&Shell,可复习一下

文章目录1. Linux基本介绍2. Linux基本命令学习2.1 vi和vim2.2 Linux开关机以及用户登录注销2.2.1 关机&重启2.2.2 登录&注销3. 用户管理3.2 用户3.2 用户组4. 实用指令4.1 init4.2 help帮助指令4.3 基础命令5. 组管理和权限管理5.1 组管理5.2 权限管理6. 任务调度7. Linux磁盘操作7.1 分区&挂载7.1 磁盘情况查询8. 网络配置8.1 网络服务9. 进程管理9.1 查看进程9.2 进程服务9.3 开

2021-01-15 19:30:12 411

原创 实习与秋招总结

实习与秋招总结导语从2020年2月24日去北京实习到现在快接近一年了,但是第一次去大城市,去租房,去实习的那种场景感觉就在眼前,感觉就是发生在昨天。在北京滴滴开启的第二段实习,随后在深圳开启的第三段实习,到6月逐渐进入秋招,10月签了三方,虽然最后的签约offer相比优秀的大佬并不是很好,但自己也算有所得了!我我是一个来自本科双非,研究生双非的渣硕,研一进入学校之前就知道自己研究生逃脱不了编程,于是就选择了大学时期学了一点皮毛但没有坚持学下去的现在看来就业面最广的Java,在上课的时光中看着Ja

2021-01-13 22:15:27 741 2

原创 RabbitMq学习

文章目录1. 简介1.1 优缺点1.2 安装2. 消息工作队列2.1 简单工作队列2.2 工作队列(轮询、公平)2.3 路由队列2.4 RPC工作模式3. 事务4. SpringAMQP5. 小结1. 简介MQ是消费者-生产者模式的一个典型的代表,消费者往消息队列中不断的写入消息,而另一端则从消息队列中读取或者订阅队列中的消息,MQ与JMS类似,但是不同的是JMS是Java消息中间件服务的一个标准和定义,而MQ则是遵循了AMQP协议的具体实现和产品。AMQP:Advanced Message Q

2021-01-07 16:07:08 423

原创 Docker学习(命令+实战)

文章目录1. Docker概述Docker在任何地方开发、部署和运行任何应用Docker的优势DockerDocker能干什么DevOps(开发自运维)2. 镜像image2.1 父镜像2.2 基础镜像2.3 镜像ID3. Docker架构4. Docker底层工作原理4.1 Docker是怎么工作的?4.2 Docker为什么比VM快?5. Docker常用命令5.1 帮助命令5.2 镜像命令5.3 容器的相关命令6. Docker镜像6.1 镜像操作7. Dockerfile7.1 容器卷7.2 Doc

2020-12-27 21:17:58 382

原创 SQL语句实战学习(几乎涵盖了所有的SQL使用场景)

SQL语句实战文章目录SQL语句实战1. 数据准备2. SQL案例2.1 简单查询2.1.1 查询姓"曹"的学生名单2.1.2 查询姓名中最后一个是"玉"的学生名单2.1.3 查询姓名中带"星"的学生名单2.2 汇总查询2.2.1 查询课程编号为"0002"的总成绩2.2.2 查询选了课程的学生人数2.3 分组查询2.3.1 查询各科成绩最高和最低得分2.3.2 查询每门课程被选修的学生数2.3.3 查询学生中男、女人数2.4 带条件的分组查询2.4.1 查询平均成绩大于60分学生的学号和平均成绩2.4.

2020-12-25 22:09:14 2734 3

原创 Goland利用testing测试程序可用性

1. 问题在用GoLand写Go代码的时候,不像之前Java那样,可以直接在一个程序中使用Junit可以直接去跑一个代码块了,在go里面是有单独的测试库testing可以使用,只是需要遵守规则:一般测试文件以测试程序名_test.go命名测试函数需要为func TestXxxx注意第一个X一定要大写,否则不生效在我使用的过程中,原意是对User进行数据库的添加用户操作的测试。可以看到如果单独的去执行这个测试函数func TestAddUser会发现报错未定义,实际上这个User在1中可以

2020-12-21 20:31:36 613 1

原创 go语言传递对象和传递指针对象的区别

1. 问题晚上看到很多方法里面传递了对象还传递了指针对象,但是感觉之前学习的时候,传递指针对象和传递对象没有什么区别(取值上面),就开始了这个问题。问题就是两者都是传递,都可以取到正确的值,但是为什么要分开传递呢?2. 结论结论的话:如果传递参数仅仅是对象的话,则此对象无论进行什么操作,都是在原对象的拷贝对象上做的,并不会影响传递的对象,除非将处理后的对象返回替代原对象,则修改会生效。如果传递参数是指针对象的话,则对象进行的所有的修改操作都是建立在直接修改原对象的基础之上的,因为传递的本身

2020-12-17 22:37:38 1540

原创 [leetcode-530]二叉搜索树的最小绝对差

1. 题目给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入:[1,null,3,2]输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。提示:树中至少有 2 个节点。本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同来源:力扣(LeetCode)链接:https://leetcode-cn.c

2020-10-12 09:27:12 170

原创 Spark创建DataFrame

1. DataFrame在Spark中可以通过RDD转换为DataFrame,也可以通过DataFrame转化为RDD,DataFrame可以理解为数据的一个格式,实质show()就是一张表。读取数据构造DataFrame主要有以下几种方式:从Json文件中读取通过SQLContext构造类对象构造DataFrame动态创建Schema构造当前的DataFrame结构从parquet文件中读取从MySQL中读取数据从Hive中读取数据2. 从json文件读取构造DataFrame p

2020-09-24 09:31:17 803

原创 虚拟机相关操作

1. 前言很久一段时间没有使用本地的虚拟机了,因为要学习Spark,因为集群的原因,又要开始来部署机器了,之前把电脑上Centos 6.x版本的镜像换成Centos 7.x版本的镜像,之前的机器都移除了,所以借着之前的步骤来操作一下之前留下的快照,然后克隆出一台新机器。2. 快照2.1 克隆&修改IP利用快照,这里建议装好了具体的比如说Java的Jdk等环境之后,可以保存一个快照作为以后机器克隆的一个模板。使用快照->管理->克隆然后设置名称和存储位置即可复制出一台新的机器。但

2020-09-18 17:38:31 132

原创 Scala语言学习

1. 前言因为毕业论文中要使用到Spark技术,自己虽然是学java的,但是Spark了解甚少,所以需要开始学习Scala的相关的知识以及Spark的相关知识了,今天主要是对Scala语言进行一个初步的学习吧。2. 基本定义在scala中定义常量和定义变量是不同的,区别如下:object Scala01 { def main(args: Array[String]): Unit = { // var 定义的是变量,可以修改 // val 定义的是常量,不可修改 var n

2020-09-17 10:08:41 284

原创 Leetcode刷题字符串长度和数组逼近问题

1. 前言昨天和今天在做题的时候发现了自己身上的一个大问题,数组的逼近都不会,其实数组的逼近可以由当前的一个数是否等于target来决定向哪一边逼近,具体的在下面会说到。发现的另一个大问题就是字符串的长度问题,这个是在做回文子串的相关问题时发现的,这个问题就是往两边走,长度的取舍问题以及当前子串的开始下标和结束下标的位置。为了下次规避这两个问题,所以将这两个提取出来记录一下!2. 数组的逼近首先我们来看看普通的二分查找是怎么实现的,由下面代码可以很清晰的看到当前的代码的一个具体的流程:首先获取

2020-09-11 22:13:22 258

原创 Leetcode-56 合并区间

1. 前言今天问朋友华为二面问的啥,他告诉我算法题问了合并区间,后面去看了一下发现这个是Leetcode56题,自己之前没做过。于是就有了这一题。2. 题意给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]

2020-09-10 19:39:53 283

原创 2020-09-06腾讯笔试

前言上次没有参加,以为可以避免参加,这次是回学校以后参加的,果然自己蠢得不行,写题目都没有思路,于是被自己的智商吊打,不过事情已经过了,只能抱着每一次挫折都是前进的冲锋号来鼓励自己了,然后参照他人的题解,将题目做一个复盘吧!1. 降序链表公共部分题目:降序排列的链表,求出当前链表的公共部分66 5 4 3 2 156 5 3 2 1题目很清晰了,只是用链表来混淆视听实质就是求两个的公共数字。public class Main { public static void main

2020-09-07 10:34:39 297

原创 [面试题]最长连续子序列

1. 题目题目:leetcode 128 最长连续子序列但是有所不同的是,这里求得不仅仅是长度,同时需要将整个子序列给复原出来,最后返回一个子序列的数组。100, 4, 200, 1, 3, 2 => [1,2,3,4]2. 分析第一种方法是利用Map的方法,这种方法的话时间复杂度是O(n),因为不需要排序,排序的时间复杂度是O(nlogn),所以时间复杂度上面更加有优势。第二种方法是利用排序之后,利用动态规划来解决这个问题,因为后面可能与前面连续,也可能不连续,此时只需要通过值的

2020-09-02 11:04:28 4673

原创 [面试题]求先递增再递减的最大值

题目题目主要是:leetcode 162 寻找峰值给出一个数组,可能是先递增再递减,也可能一直递增,或者一直递减,求最大值分析分析的话,主要是首先如果递增和递减的话其实都是找一个峰值,实质上都是找一个最大值,然后这个递增和递减程度都是依据我们的中点来确定的,只要通过中点值与后面值的大小判断就可以知道当前中点出发生的一个趋势变化。如果当前值大于后面的值,则表明此处可能就是峰值了,在前面,但不会再后面!由此可以得到,只需要通过中点与中点后一个值的情况即可判断当前的值的变化趋势,从而获取到最大值

2020-09-02 10:20:21 2625

原创 Golang语言学习

Golang语言学习花了两天时间看了下Golang语言,发现这语言很有趣,主要是一个土拨鼠形象的语言在goland中可以看到每一个文件都会有一个小图标,感觉还是挺可爱的,这门语言估计以后还是要拥抱了,CPP学了一段时间,从Java转过去着实是不简单,估计还是拥抱go了。主要是通过菜鸟教程来学习的,主要学习了go的语言相关特性,go中保留了指针,可以通过指针操作对象,同时也增加了许多的新特性,在学习的过程中,首先是关于类型定义,一般的都是前面类型后面参数,但是在go中增加了更为人性化一面的变量定义,即通过

2020-08-27 16:02:59 406

原创 数据库范式学习

数据库范式学习1. 概念数据库范式主是用来指导数据库设计的,但是在实际的设计过程中不会完全遵循范式要求,可能遵循一部分,也可能违反一部分。数据库的范式只要有三种范式,第一第二第三范式,注意高级的范式是依赖与低级别的,即不满足低级别范式的要求不可走高级别范式的设计。2. 第一范式第一范式最简单,表示属性不可分割,即每一列在数据库表中都不可分割3. 第二范式第二范式,首先需要满足第一范式,即数据库总每一列或行必须唯一的被区分。每个非主属性的完全函数依赖于键码,可通过分解来实现。分解前

2020-06-27 14:55:20 188

原创 生产者/消费者模型的实现

文章目录一、生产者消费者模型实现1. wait/notify/notifyAll实现2. await/signal/signalAll3. 利用BlockingQueue来实现4. 总结一、生产者消费者模型实现1. wait/notify/notifyAll实现注意线程中的判断使用while判断,不用if判断!public class ConsumerAndProductor { ...

2020-02-13 14:30:36 191 1

原创 ConcurrentHashMap源码

文章目录ConcurrentHashMap源码1. JDK1.7版本1. 基本结构2. size操作3. put操作3. rehash操作4. get操作5. remove操作2. JDK1.8版本1. 基本结构2. put操作3. treeifyBin操作4. transfer操作5. get操作3. ConcurrentHashMap1.7与1.8的区别4. 总结ConcurrentHash...

2020-02-13 09:09:51 294 1

原创 记录一次阿里云服务器安装mysql

文章目录1. MySql的下载2. MySQL的安装以及配置3. 启动mysql4. 小结1. MySql的下载如果直接在官网下载的话会很慢, 这里推荐使用国内的镜像下载,推荐中科大的镜像网址:点击可直接跳转下载我选择的是5.7.26版本。下载完之后,可以通过filezila传到阿里云服务器。2. MySQL的安装以及配置首先直接解压缩。解压之后的文件放入到自己平时的安装目录下。建议将...

2020-02-02 18:03:46 150

十路智力抢答器

十路智力抢答器的课程设计报告,包含电路图及其零部件的适配

2019-02-14

空空如也

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

TA关注的人

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