- 博客(277)
- 资源 (5)
- 收藏
- 关注
原创 React 实战 Todolist (下)
最近在学 react ,所以就顺手写一个Todolist作为练手项目。github 地址 :这篇是下,上篇是在这里。
2023-02-08 22:50:43 820 1
原创 github 连接超时 ssh: connect to host github.com port 22: Connection timed out
今天想clone自己的仓库下来的时候,发现这个错误,意思是说22端口寄了!我们只需要更换端口就好了,更换成443端口就好了。
2022-12-17 17:54:21 1035 3
原创 【模拟面试】23届本科生拿下字节/京东/网易研发offer,到底有多强?
拿下字节/京东/网易研发offer的23届本科生,到底有多强?一起来看看吧!
2022-12-03 21:46:56 2787 10
原创 【Go语言实战】(24) secret 包新特性 | 多位密钥支持 & 多种模式选择
这是我封装的一个加密库,secret包,上层抽离接口,让我们的更容易对敏感数据进行脱敏处理。这里就不再过多赘述。这一次重点介绍一下新增的一些新特性,主要是在 AES 加密这一块。
2022-10-24 08:00:00 817
原创 【Go语言实战】(23)封装一个加密包,让敏感数据更易脱敏 【 Golang | Go语言】
提供 对称加密 AES、DES、3DES 以及非对称加密 RSA 的上层封装接口,让您的敏感数据更加容易脱敏并存储
2022-10-12 00:03:40 1873
原创 【Golang开发面经】米哈游(一轮游)
米哈游 面试下来感觉还行吧,挺注重基础的,面试官水平也很高。但是感觉不是在招人的样子,我有好多同学都是简历挂(在Linux中,为了响应各种事件,提供了几十种信号,可以通过kill -l命令查看。如果是运行在 shell终端 的进程,可以通过键盘组合键来给进程发送信号,例如使用Ctrl+C 产生SIGINT 信号,表示终止进程。如果是运行在后台的进程,可以通过命令来给进程发送信号,例如使用产生SIGKILL信号,表示立即结束进程。
2022-10-07 01:36:07 10470 12
原创 【Golang开发面经】深信服(两轮技术面)
深信服面试起来感觉有点偏向应用,没有涉及高并发等等内容,想想也确实,深信服更多偏向B端。业务能力扎实也是应该的。深信服挺好的,但我想找toc的,就拒掉了。。不是有序的,使用 range 多次遍历 map 时输出的 key 和 value 的顺序可能不同,map在遍历时,并不是从固定的0号bucket开始遍历的,每次遍历,都会从一个随机值序号的bucket,再从其中随机的 cell开始遍历。map 遍历时,是按序遍历 bucket。
2022-09-30 08:30:00 2989 3
原创 【Golang开发面经】百度(三轮技术面)
百度一顿面试下来感觉挺不错的,面试官水平很高,不愧是互联网的黄埔军校,技术都很硬。可能是我项目讲的不好吧,最终挂了。
2022-09-28 08:00:00 3659 2
原创 【面试题总结】分布式锦集
而在分布式架构中,多个线程是可能处于不同进程中的,而这些线程并发执行遇到资源竞争时,利用 ReentrantLock synchronized 等技术是没办法,来控制多个进程中的线程的,所以需要分布式锁,意思就是,需要一个分布式锁生成器,分布式系统中的应用程序都可以来使用这个生成器所提供的锁,比如A服务的X功能依赖B服务的某个接口,当B服务接口响应很慢时,A服务X功能的响应也会被拖慢,进一步导致了A服务的线程都卡在了X功能上,A服务的其它功能也会卡主或拖慢。那么用户访问,如何分配访问的服务器呢?
2022-09-26 08:00:00 1278
原创 【Dart 入门教程】(二) Dart 变量、常量、数据类型以及一些规范
*而 final 不仅有 const 的编译时常量的特性,最重要的它是运行时常量,并且 final 是惰性初始化,即在运行时第一次使用前才初始化。const 的特点是值不变,一开始就得赋值,final 的特点是开始可以不赋值,但也只能赋一次;dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒。dart 中定义变量可以通过 var关键字 可以通过类型来申明变量。既可以使用单引号赋值,也可以使用双引号赋值。dart 的常量命令关键字有两个,可以判断这个变量的类型情况。
2022-09-23 17:36:09 1257
原创 【Dart 入门教程】(一) Dart 简介与安装
Dart 是由 谷歌 开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。Flutter 是一款跨平台的web框架。编译完后可以在 ios 和 Android 的玩耍。要在我们本地开发Dart程序的话首先需要安装Dart Sdk点击稳定版,然后和安装QQ那样子安装就好了。3. Dart 开发工具因为后续我们需要使用flutter,所以我们直接
2022-09-23 16:08:36 5024
原创 【Golang开发面经】滴滴(三轮技术面)
滴滴面试感觉还行吧,挺注重基础的,很多时间都花在了挖项目上面,所以大家一定要很熟悉自己的项目!面试官水平也很高。不过也感叹这个曾经的大厂现在变成这个样子,唉。。
2022-09-20 08:30:00 3308 3
原创 【Golang开发面经】B站(两轮技术面)
面试下来我感觉我都讲出来了,算法题也写出来了,但是二面完一查结果就直接淘汰了。这个B是不是不招人啊。。
2022-09-13 08:30:00 3864 4
原创 【Golang开发面经】字节跳动(三轮技术面)
整体面试下来,感觉其实字节对于语言本身并没有很多的涉及,更加注重基础,比如数据结构与算法,计算机网络,组成原理,操作系统,数据库等等,语言本身并没有涉及太多。这里就省去了一些我简历上的问题,也就是深挖项目。
2022-09-12 00:01:59 6075 11
原创 【Go开源宝藏】十分强大的日志库 logrus
这次 所介绍的库是一个日志库 github.com/sirupsen/logrus,是我们在web开发中,经常需要的库,因为我们的应用部署到线上出现问题的话,就需要用日志来进行排查。
2022-09-03 22:55:22 1451
原创 【Redis底层解析】整数集合
每当我们要将一个新元素添加到整数集合里面,并且新元素的类型比整数集合现有所有元素的类型都要长时,整数集合需要先进行升级(upgrade),然后才能将新元素添加到整数集合里面。根据新元素的类型,扩展整数集合底层数组的空间大小,并为新元素分配空间。将底层数组现有的所有元素都转换成与新元素相同的类型,并将类型转换后的元素放置到正确的位置上,而且放置元素的过程中,需要继续维持底层数组的有序性不变。将新元素添加到底层数组里面。...
2022-08-14 11:22:22 1100
原创 【Redis底层解析】跳跃表
跳跃表 ( skip list ) 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。Redis 使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis 就会使用跳跃表来作为有序集合键的底层实现。...
2022-08-07 16:54:02 899
原创 【Redis底层解析】字典类型
随着操作的不断执行,哈希表保存的键值对会逐渐地增多或是减少,为了让哈希表地负载因子维持在一个合理的范围内,当哈希表保持的键值对 数量太多或者太少。当要将一个新的键值对,添加到字典里面时,程序需要先根据键值对的键计算出哈希值和索引值,将包含新键值对的哈希表节点放到哈希表数组的指定索引上面。计算出键 k0 的索引值 0 ,这表示包含键值对 k0 和 v0 的节点应该被放置到哈希表数组的索引 0 位置上。Key 属性保存着键值对中的键,而v属性则保存着键值对中的值,其中键值对的值,可以是一个指针,或是一个。...
2022-08-06 11:58:46 934
原创 【Redis底层解析】链表类型
链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活调整链表的长度。链表在redis中也被广泛运用,比如在发布与订阅,慢查询,监视器等功能中也用到了链表。本身还使用链表来保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区(outputbuffer)。...
2022-07-24 22:57:32 897
原创 【Redis底层解析】字符串类型
每个结构表示一个SDS值intlen;//记录buf数组中已使用字节的数量//等于SDS所保存字符串的长度intfree;//记录buf数组中未使用字节的数量charbuf[];//字符数组,用于保存字符串}SDS示例free属性的值为0,表示这个SDS没有分配任何未使用空间len属性的值为7,表示这个SDS保存了一个七字节长的字符串SDS遵循C字符串以空字符结尾的惯例,保存空字符的1字节空间不计算再SDS的len属性里面,......
2022-07-24 21:38:22 942
原创 【Go开源宝藏】基于 Golang 语法的性能调优技巧(数组的遍历)
数组和切片的遍历方式,所以我们这里就不进行区分。我们一般用以下两种方式我们先来讲一下这种方式,我们都知道数组在内存中存储是的。所以我们直接用下表取出数组中的元素,就是直接在数组的原地址中获取,这种写法比较像的写法。所以这种方式是非常快的。我们再来讲一下这种方式,这种方式的情况比第一种要更加美观,和python的,但是同样的,在遍历items数组的过程中,其实我们得到的item只是一个,也就是会在内存中。虽然这种遍历方式比较美观,但是这较于第一种来说是,其性能是有所降低的。......
2022-07-19 22:01:10 1031
原创 【Go开源宝藏】基于 Golang 语法的性能调优技巧(字符串拼接)
第一次写入大小为10byte的字符串时,则会申请大小为16byte(2^4)的内存(恰好大于10byte的2的指数)。在go语言中,字符串(string类型)是不可变的(如果我们需要改变字符串,就要转成byte类型,再转回string类型),因此。字符串在Go语言中是不可变类型,占用内存大小是固定的,当使用。,新空间的大小是原来两个字符串的大小之和。拼接第三个字符串时,再。,如果频繁进行字符串拼接,就会对性能产生严重的影响。拼接两个字符串时,生成一个新的字符串,那么就需要。......
2022-07-17 23:37:01 1252
原创 【Go语言实战】 (17) gRPC 集成 ETCD 进行服务发现
上一篇文章 gRPC集成ETCD进行服务注册 中,我们已经知道了如何对集合ETCD进行注册。这一次我们继续下一步,对ETCD进行服务的发现。
2022-07-05 10:40:08 1618
原创 【Go语言实战】 (16) gRPC 集成 ETCD 进行服务注册
在Go语言的RPC框架中,gRPC 是比较原生的,并没有集成 ETCD 服务发现的集成,需要我们去稍微封装一下。而像 micro 框架这种封装性比较好的就有集成 ETCD、consul 等等的服务发现功能,就直接调用就行了。本文实战例子源码在 各个模块下的discovery中Name:名字为服务的名字(用来进行服务的发现)Addr:服务的地址(存储服务地址)Version:服务的版本(方便服务的版本迭代)Weight:服务的权重(后续用来降级熔断)定义注册的地址函数将值反序列化成一个注
2022-07-04 01:01:25 2585 2
原创 【Go语言实战】 (15) Gin+gRPC 微服务实现备忘录 (下) | 备忘录模块
https://github.com/CocaineCong/gRPC-todoListtaskModel.prototaskService.proto获取所有生成pb.go文件展示所有的任务创建备忘录删除备忘录更新1.3 接入ETCDETCD服务初始化节点接入ETCD服务注册节点2. 网关接入2.1 服务接入获取ETCD的服务路由注入将服务存放在gin.Keys中2.2 controller获取token,获取是哪
2022-06-18 16:39:52 1876 1
原创 【Go语言实战】 (14) Gin+gRPC 微服务实现备忘录 (上) | 用户模块
https://github.com/CocaineCong/gRPC-todoList1.2 安装protoc可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。下载proto,我是下载这个的。然后解压出来把bin目录放在直接放在系统变量当中验证2.2 proto文件定义user/internal/service/pb执行生成 pb.go 文件定义user模块的请求和返回的结构类型,已经rpc方法。2.3 repository视图返回
2022-06-17 11:00:28 6679 5
原创 【Go语言实战】 (13) 商品秒杀的本质以及Golang实现解决方案
源码:https://github.com/CocaineCong/Go-SecKill当两个或多个协程同时访问同一个内存地址,并且至少有一个是在写时,就会发生数据竞争。比如A线程修改完之后,线程B读的是线程A之前的值(初始值),所以不知道A是否修改,所以会导致线程B也把自己修改的值放到这个内存地址中,就会导致本次修改无意义。常用的方法就是加锁了,当这个进程已经执行了,就为该进程进行加锁,防止其他进程对这个数据进行修改,所以这个数据进行修改之后,再释放这个锁。关于加锁,我们有两种锁机制,和。本次秒杀商城,
2022-06-12 01:00:01 2462 8
原创 【Go开源宝藏】Go 语言操作 Redis
目录1. Redis简介2. Go语言连接Redis3. String 操作3.1 Set & Get3.2 Incr & Incrby3.2.1 Incr 加 13.2.2 Incrby 加 val3.3 MSet & MGet3.4 总结4. List 操作4.1 RPush4.2 LLen & LRange4.3 总结5. 更新6. 删除参考链接1. Redis简介Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)
2022-06-05 15:31:34 3083 1
原创 【源码解读】Gin 框架 (一)
我们今天就从下面这几行简单的代码中,探讨gin框架的底层实现gin的底层是基于包实现的,所以很多gin底层源码中涉及到了很多的相关方法。本文全部基于进行讲解1. Run 函数底层实现gin/gin.go 文件这段代码还是比较容易看懂的。然后让我们来看看这个的具体实现这个链接是基于TCP网络进行监听连接的,并且request和response都通过这个handler进行传递。然后我们来看一下这个是如何实现处理请求和响应的这个Handler实现一个ServerHTTP的接口,来处理Respon
2022-06-01 23:58:37 2204
原创 Redis的数据类型、事务以及持久化
目录1. 基本的数据类型1.1 字符串String1.2 列表 list1.3 集合 set1.4 有序集合 zset1.5 哈希 hash2. Redis 事务2.1 事务对比2.2 事务过程2.3 一个面试题1. 基本的数据类型1.1 字符串String命令操作名称setmsetgetmgetsetrangeappendgetrangegetsetincrincrbyincrbyfloatd
2022-03-22 08:48:59 1144
原创 关于RabbitMQ的一些面试题
目录0. 什么是RabbitMQ1. 延时队列底层实现2. 使用RabbitMQ需要注意什么3. RabbitMQ效率4. 插入延时队列的过期时间是单调的麻?5. 如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息?5.1 发送方确认模式5.2 接收方确认机制6. 如何避免消息重复投递或重复消费?7. 消息基于什么传输?8、消息如何分发?9、消息怎么路由?10、如何确保消息不丢失?10.1 生产者丢失消息10.2 RabbitMQ自己丢了数据10.3 消费者弄丢了数据11、Rabbit
2022-03-22 00:45:54 17992
原创 ETCD 的组件架构和内部通信
文章目录ETCD 常用术语ETCD 常用术语术语描述备注Raftetcd实现一致性的核心etcd有etcd-raft模块FollowerRaft中的从属节点竞争leader失败LeaderRaft中的领导协调节点
2022-03-20 11:38:00 2848
计算机网络笔记.zip
2021-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人