- 博客(54)
- 收藏
- 关注
原创 防止goroutine崩溃导致主进程崩溃
在Go语言中,当一个goroutine发生异常时,它会直接退出,并不会影响其他goroutine或者主进程。这就意味着,goroutine之间的协作通常是通过channel进行的,因此,你需要通过channel来管理和监控goroutine的状态。如果你需要捕获goroutine的异常,并且不让它直接退出,你可以使用recover内置函数。recover可以捕获到当前goroutine的异常,并且可以让当前的goroutine恢复过来,而不是直接退出。
2024-09-04 19:13:51 181
原创 破解消息重复迷局:确保交易唯一性的高级策略
针对消息重复消费和重复下单等问题,可以从多个层面进行解决,包括消息队列的设计、消费者端的处理逻辑、数据库层面的约束以及系统架构的优化等。
2024-09-03 09:50:43 891
原创 MAC安装SecureCRT
SecureCRT是一款强大的终端仿真工具,它支持SSH、Telnet等多种远程连接协议,为计算机专业人员提供了安全的远程访问、文件传输和数据隧道功能。在Mac上安装SecureCRT的过程相对简单,但需要注意一些细节以确保安装和激活成功。(M1/M2/M3) Installer macOS版本
2024-08-26 17:07:26 1723
原创 跳槽一定用得上的大厂Java题库!
2023年已经接近尾声了,疫情的影响也在逐渐减小,市场慢慢复苏。不过最近还是会有一些读者粉丝朋友反馈,“Java市场饱和了”、“大环境还是不好”、“投几十个简历都没有一个约面的”。其实并不是岗位需求量变少了,是越来越多的公司需要【中、高级Java工程师】。
2023-10-30 11:15:15 188
原创 Java8 新写法:优雅处理空值,告别冗长的 if-else!
Java 8 的这些特性使得 Java 编程更加现代化、灵活和高效。它们使得开发者能够以更函数式的方式编写代码,从而提高了代码的可读性和可维护性,同时也提供了更好的性能和并发处理能力。
2023-09-20 11:01:19 2188
转载 让AI替你打工?GPT提升开发效率指南
开发者日常的整个工作流中,AI 大模型能做什么?ChatGPT 等 AI 大模型能不能通过开发者的指引,一步步完成从技术方案输出、编码、测试、发布到运营维护的整套流程?使用中有什么避坑点?本文从实际研发流程的各个环节出发,总结分享了 AI 大模型对研发效能的提升实践。欢迎围观~
2023-05-29 14:26:07 314
原创 Go Slice详解
GO slice代表变长的序列,它的底层是数组。一个切片由3部分组成:指针、长度和容量。指针指向底层数组,长度代表slice当前的长度,容量代表底层数组的长度。换句话说,slice自身维护了一个指针属性,指向它底层数组的某些元素的集合。......
2022-06-09 09:17:10 937
原创 GitHub Copilot AI智能编程工具
GitHub 去年联合 OpenAI,推出了一款“GitHub Copilot”工具,可以根据上下文自动写代码,将程序员从重复的编写中解放出来。该工具此前已支持了 Visual Studio Code、Neovim 和 JetBrains IDE 等。近日,Copilot 来到了微软自家的 Visual Studio 2022,用户可下载扩展使用。 IT之家了解到,与在 Visual Studio Code 中使用方法一致,开发者需要先注册登记 GitHub Copilot,并等待官方批准,之后就可以在 V
2022-06-06 17:26:53 754
原创 如何给自己打造好的“口碑”?
新加入一个团队,如何给自己打造好的“口碑”?在回答这个问题之前,我们先按照U型思维走一些弯路思考一下。(所谓U型思维是系统化的挖掘本质,基于本质做决定的思维方法,在遇到问题时不是直接去寻求解决方案,而是通过先定义核心问题,发现问题本质,找到本质解后,最后寻求解决方案。)一、定义核心问题我们首先来看一下这个问题的隐含假设是什么。其实就是我们已经获得了新团队内大部分人的了解,否则口碑就从何说起了。但无论是好口碑还是坏口碑,都需要一个过程,很难速成。这样一来,新团队和好口.
2022-04-16 09:29:27 896
原创 消息队列背后的设计思想
消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词。对于后端工程师而言,更是日常开发中必备的一项技能。随着大数据时代的到来,apache 旗下的 kafka 一度成为消息队列的代名词,提起消息队列大家自然而然就想到了 kafka。近而网上有太多太多介绍消息队列 kafka 功能或者内部实现的文章。然而消息队列本身是工程领域内一种解决问题的通用方案。它的背后有着一些通用的设计思想和经典模型,这些是消息队列的精髓和灵魂。它们独立于任何一种消息队列的具体实现(例如 kafka),但
2022-04-13 10:02:57 176
转载 彻底搞懂HTTPS的加密原理
HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我当年学习它的时候也废了挺大功夫。对称与非对称加密、数字签名、数字证书等,在学习过程中,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了HTTPS的加密机制。本文以问题的形式逐步展开,一步步解开HTTPS的面纱,希望能帮助你彻底搞懂HTTPS。为什么需要加密?因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi
2022-03-23 11:11:16 376
原创 浅析Golang中怎么实现枚举
nginx php中文乱码的解决办法:1、将网页代码设置utf-8编码格式;2、在nginx服务端和nginx.conf中设置utf-8编码格式即可。本文操作环境:linux5.9.8系统、nginx1.14.0版,Dell G3电脑nginx php 中文乱码怎么办?nginx访问页面 中文乱码 解决方案今天在nginx上部署一个小网页项目时,中文出现乱码,搜了一下,网上解决方法都是一样 千篇一律改服务端的编码格式。这里总结一下解决方法:出现乱码可能由于以下两个位置没有配置编码格式:1、.
2022-02-07 15:15:06 7979
原创 Redis缓存和MySQL数据一致性的问题,你是如何高效的去解决的
在高并发的业务场景下,数据库的性能瓶颈往往都是用户并发访问过大。所以,一般都使用redis做一个缓冲操作,让请求先访问到redis,而不是直接去访问MySQL等数据库。从而减少网络请求的延迟响应。数据为什么会不一致这样的问题主要是在并发读写访问的时候,缓存和数据相互交叉执行。一、单库情况下同一时刻发生了并发读写请求,例如为A(写) B (读)2个请求 A请求发送一个写操作到服务端,第一步会淘汰cache,然后因为各种原因卡主了,不在执行后面业务(例:大量的业务操作、调用
2022-01-26 10:39:58 211
原创 SQL语句中 LEFT JOIN后用 ON 还是 WHERE,有什么区别 ?
SQL语句中 LEFT JOIN后用 ON 还是 WHERE,有什么区别 ?
2022-01-26 10:20:53 453 2
原创 让我的PPT会说话
先表述一个观点:绩效的好坏和你做的事情,写的内容关系不太大。这么多年下来,我看到的绩效唯一的作用,就是用来提醒上级,你今年做了哪些事情而已。至于这些事情的价值和重要性,并不是你说了算,扎心不。开门见山首先送给大家一个写绩效
2022-01-25 11:14:48 280
原创 MySQL数据太大,你们是如何拆分数据的?
在中大型项目中,一旦遇到数据量比较大,小伙伴就应该都知道要对数据进行拆分了,可是要如何拆分才是比较好呢!下面结合图文,思路,与大家聊聊设计与拆分方案。我们都知道拆分有分为垂直拆分与水平拆分。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大
2022-01-24 11:45:52 3538
转载 MySQL模糊查询,你还在用 like+% 吗?
前言我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。全文索引(Full-T
2022-01-21 10:25:35 162
原创 阿里技术专家:一文教你高效画出技术架构图
技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径。加速业务的上线速率,也体现在优秀工程师的工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力。接下来,阿里巴巴技术专家三画,将分享自己和团队在画好架构图方面的理念和经验,希望对你有所帮助。当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况:对着画布无从下手、删了又来?如何用一张图描述我的系统,并且让产品、运营、开发都能看明白?画了一半的图还不清楚受众是谁?画出来的图到底是产品图功能
2022-01-20 14:44:34 284
原创 负载均衡,你自己会不会配置?
什么是负载均衡所谓负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。这里的服务是广义的,可以是简单的计算,也可能是数据的读取或者存储。负载均衡也不是新事物,这种思想在多核CPU时代就有了,只不过在分布式系统中,负载均衡更是无处不在,这是分布式系统的天然特性决定的。分布式就是利用大量计算机节点完成单个计算机无法完成的计算、存储服务,既然有大量计算机节点,那么均衡的调度就非常重要。负载均衡的意义在于,让所有节点以最小的代价、最好
2022-01-20 14:34:09 2056
原创 GO 基础语法50问
1.使用值为 nil 的 slice、map会发生啥允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。// map 错误示例func main() { var m map[string]int m["one"] = 1 // error: panic: assignment to entry in nil map // m := make(map[string]int)// map 的正确声明,分配了实际的
2022-01-19 20:04:27 2269
原创 Go 结构体,定义结构体类型
package main import "fmt" // 定义结构体类型 (在函数外部定义(全局的),可以在整个项目中使用)type student struct { id int // 结构体的成员 name string age int} func main() { // 定义结构体变量 (结构体是一种复合类型) var stu student // 为结构体成员赋值 stu.id = 1 // 默认0 (int) stu.name = "张三" //
2021-11-27 15:07:32 445
原创 GO slice切片去重
GO slice切片去重func sliceRepByMap(slc []uint) []uint { sellerIdList := []uint{} tempMap := map[int]byte{} for _, member := range slc { tempLen := len(tempMap) tempMap[int(member)] = 0 if len(tempMap) != tempLen { sellerIdList = append(seller
2021-10-30 12:21:52 253
原创 Mysql 并发事务如何处理?
为了提高事务的吞吐量,MySQL 可以处理并发执行的多个事务,但是如果并发执行多个插入新记录的 SQL 语句,可能会导致主键的不连续。如下图所示,事务 1 向数据库中插入 id = 10 的记录,事务 2 向数据库中插入 id = 11 和 id = 12 的两条记录:图 4 - 并发事务的执行不过如果在最后事务 1 由于插入的记录发生了唯一键冲突导致了回滚,而事务 2 没有发生错误而正常提交,在这时我们会发现当前表中的主键出现了不连续的现象,后续新插入的数据也不再会使用 10 作为记录的主键。no
2021-09-30 11:25:50 531
转载 关于GoLang的concurrent map writes错误
作为一个GoLang萌新(其实就是并发编程萌新,之前一直在做PHP),对并发下共享资源的竞争了解不多。所以一开始写出了如下代码:type OriginPriceController struct { OriginPriceService *origin_price_service.OriginPriceService} func (self *OriginPriceController) action() { var wg sync.WaitGroup wg.Add(2) go f
2021-09-30 10:47:15 403
原创 Go 语言笔试面试题汇总
基础语法01 = 和 := 的区别?02 指针的作用03 Go 允许多个返回值吗?04 Go 有异常类型吗?05 什么是协程(Goroutine)06 如何高效地拼接字符串07 什么是 rune 类型08 如何判断 map 中是否包含某个 key ?09 Go 支持默认参数或可选参数吗?10 defer 的执行顺序11 如何交换 2 个变量的值?12 Go 语言 tag 的用处?13 如何判断 2 个字符串切片(slice) 是相等的?14 字符串打印时,%v 和 %+v 的区别
2021-09-26 14:55:50 628
原创 php、GO 判断文件上传的类型
1、php<? php$info = $_FILES['file']['name'];//得到文件的名称$temp = explode('.', $info);//用.分割数组$imgtype = end($temp);//取数组的最后一个$filetype = ['jpg', 'jpge', 'gif', 'png'];//定义图片类型//in_array()判断是否存在一个数组中的数据 第一个参数是数据第二个参数是数组if (!in_array($imgtype, $filetype
2021-09-26 09:42:12 425
原创 Mac使用技巧-sourceTree上修改git账号
1、打开sourcetree偏好设置,打开高级1、修改对应git url对应的账号提交对应的文件,会提示你输入git账号
2021-09-23 09:19:19 2841
原创 GO 学习每日一个知识点->第二天
下面这段代码输出什么,说明原因。func main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range slice { m[key] = &val } for k,v := range m { fmt.Println(k,"->",*v) }}?????????????????????????你的
2021-09-11 15:21:51 84
原创 GO 学习每日一个知识点->第一天
defer :package main import ( "fmt" ) func main() { defer_call() }func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic("触发异常")}看下答案,
2021-09-08 09:30:03 115
原创 Go 获取1分钟前的时间,一天前的时间
获取1分钟前的时间time.Now().Add(-time.Minute * 1)当前时间向上取整:var endTime = timeUtil.TruncateHourStr(time.Now().UTC().Format("2006/01/02 15:04:05")).Unix()获取一天前的时间var startTime = time.Now().AddDate(0, 0, -1).Unix()...
2021-09-08 09:19:49 2942
原创 目前go官方,没有加入三元运算符,但是可以通过以下方式模拟
目前go官方,没有加入三元运算符,我们如何解决呢 ?方式一:func If(isTrue bool,a,b int) int { if isTrue { return a } return b}func main(){ a,b:=1,3 max:=If(a>b,a,b) fmt.Println(max)}方式二: a,b:=3,5 max:=map[bool]int{a>=b:a,a<b:b}[true] min:=map[bool]int
2021-08-26 16:05:38 452
原创 nginx 限流配置是如何做到的?
限流算法1、令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;请求要消耗等比例的令牌才能被处理;令牌不够时,请求被缓存。2、漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理); 来不及流出的水存在水桶中(缓冲),以固定速率流出; 水桶满后水溢出(丢弃)。这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。相比漏桶算法,令牌桶算法不同之处在于它不但有一只“桶”,还有个队列,这个桶是用来存放令牌的,队列才是用来存放
2021-08-24 09:25:53 385
原创 GO 并发安全锁
1. 并发安全锁有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争。var x int64var wg sync.WaitGroupfunc add() { for i := 0; i < 5000; i++ { x = x + 1 } wg.Done()}func main() { w
2021-08-24 09:13:49 157
原创 Golang struct、json、map互相转化
第三方接口返回json 你是怎么处理的?:{ "resp": { "respCode": "0", "respMsg": "ok", "app": { "userId": "d12abd3da59d47e6bf13893ec43730b8" } }}使用结构体结构体拆解 go 内置了json字串的解析包 “encoding/json”按照json库的分析,其实每一个花括号就是一个结构体&g
2021-08-23 20:45:23 550
原创 7个支持敏捷的开源项目管理工具
用敏捷方法来管理项目,比用传统方法管理项目的成功率更高,在一项调查中,有 71% 的组织表示,他们在开发过程中会用到敏捷方法。本文(作者 OSC 达尔文)从一些比较受欢迎的开源项目管理工具中,摘取了 7 个支持敏捷的项目,以供那些已经使用,或正在使用敏捷的开发者参考。1.MyCollab(GitHub 地址)这是一个高性能、稳定而且安全的商业平台,用于客户关系管理(CRM)、项目和文档管理。是一个企业的协作平台,基于 Java 开发。该系统提供了开源的社区版本。2.Odoo(GitHub 地址)Odoo 是
2021-08-23 13:18:24 1946 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人