- 博客(88)
- 资源 (3)
- 收藏
- 关注
原创 GO -mod和GO111MODULE设置的那些事原创
如果需要go.mod对应的库内容,经过go mod tidy命令后,引用的内容(即go.mod)会下载到Gopath目录下(即module cache目录下),同时也会删除多余的引用的内容, 确保。:意味着,忽略vendor文件夹,提示代码引用的(import)库列表与go.mod文件中的内容不符,与-mod=mod的区别是不更新go.mod的内容,其他的与-mod=mod一致。在gopls(VSCode的IDE的用于代码解析和调转插件)的作用下,点击引用的方法,可以直接跳转到vendor文件夹下的源码。
2024-06-12 15:06:58 703
原创 一文搞懂各种场景下的数据路由转发(二)——云厂商篇
目前腾讯云、阿里云等大型云厂商基本上都是通过提供CLB服务进行路由转发,什么是CLB?通过云厂商的官方文档定义:**负载均衡(Cloud Load Balancer,CLB)**是对多台后端服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。负载均衡服务通过设置虚拟服务地址(VIP),将位于同一地域的多台后端服务器资源虚拟成一个高性能、高可用的应用服务池。根据应用指定的方式,将来自客户端的网络请求分发到服务器池中。
2024-04-24 17:13:57 1118
原创 一文搞懂各种场景下的数据路由转发
需要在configMap 的data字段增加/修改log-format-upstream当然实际的工程中,可能有多个Ingress服务,需要单独用个文件来配置,避免把全集群都修改了,一般来说,Helm直接下载的组件和其他第三方的组件都会在Nginx原始的yaml文件里面写这样的内容:这里的value.yaml则是可以使用自定义的yaml限定范围进行覆盖(不要用原始的value.yaml),确保问题可控具体来说,
2024-03-12 23:53:29 179
原创 Redis异常排查实战:从问题定位到性能提升,助你成为技术领域的佼佼者!
第一个重点,服务排障的基本方法在岁月静好的一天,正当笔者准备下班工作的时候,突然,告警出现了!嗯,又是一到下班就会告警!仔细一看,原来是数据整体处理时间的慢了既然慢了,就看看具体哪个链路慢了看来是A模块的B阶段的处理耗时突然慢了赶紧确认反向查询哪里出了问题,因为B阶段不是A模块的第一个阶段,所以基本排除是模块间的网络通信、带宽等问题那这里有两个思路:1.排查这个A模块本身的问题2.排查数据量的问题首先排查A模块本身的问题,这里的经验是横向看基础指标,纵向看代码变更。
2023-10-16 20:49:22 441
原创 Node.js代码漏洞扫描工具介绍——npm audit
npm audit运行安全检查主要作用:检查命令将项目中配置的依赖项的描述提交到默认注册中心,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果 fix 提供了参数,则将对包树应用补救措施。具体参考:https://www.npmrc.cn/quick-start/about-npm.html。
2023-10-08 15:03:55 2020 1
原创 步步为营,如何将GOlang引用库的安全漏洞修干净
近期,笔者接到一个任务,因为代码安全原因,需要批量升级一系列的Golang第三方组件,这里面包含了直接引用的第三方库和间接引用的第三方库,其中第三方库也包括能够直接升级和不能直接升级两种,这里把相关解决方案沉淀在此,供大家参考。
2023-09-18 17:23:30 660 3
原创 Golang代码漏洞扫描工具介绍——govulncheck
govulncheck是一个命令行工具,帮助Go用户在项目依赖中查找已知的漏洞。该工具可以分析代码库和二进制文件,并通过优先考虑实际调用你代码的函数中的漏洞来减少干扰。
2023-09-15 22:46:04 763
原创 Golang代码漏洞扫描工具介绍——trivy
Trivy是不是是一款功能强大的漏洞扫描工具,它的应用场景不仅仅在代码层面,还有镜像层面,而且不仅仅能够扫描Golang,还能扫描等语言。操作系统包(Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS 和 Distroless等)和应用程序依赖(
2023-09-15 21:14:22 928
原创 Jaeger的经典BUG原创
原来是另一个问题,这个HostIP其实有一个scoreAddr方法,当一个服务器有两个ip,比如内网ip和外网ip,按照这个方法的逻辑,会优先外网ip,但一个集群内,可能只有一个入口有外网ip,其他都是内网ip,这个时候入口机的ip和内网ip就适配了,jaeger信息也会异常,所以提出了这个问题,并进行修复。这个方式会调用底层的系统函数获取本机的IP,会打开一个socket,会不会因为大量打开socket,把CPU占满了呢?把之前获取的IP放在内存里,下次就不再重复获取了!难道有项目遇到了这个问题了?
2023-08-31 20:55:17 912
原创 Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算
笔者在近一两年接触了Clickhouse数据库,在项目中也进行了一些实践,但一直都没有一些技术文章的沉淀,近期打算做个系列,通过一些具体的场景将Clickhouse的用法进行沉淀和分享,供大家参考。
2023-08-08 17:34:17 2548
原创 Git那些事系列:从业务场景到高级技巧的完整指南(二)
业务实践中,经常会出现的情况,比如发现一个线上缺陷后,需要在和同时拉取修复分支,在修改缺陷后,分别向主干和发布分支发起合并,从而完成对发布版本和未来版本的问题修复由于需要两次修改、两次合并,所以这里会,对人力投入产出比有考验,同时两次合并要求,所以对多合并方式由一定的要求,那怎么样才能优雅的双合并呢?这种场景下,因为修改内容少,几乎不存在心智要求和人力消耗的问题,很多同学都会选择那应该怎么办呢?不急,当我们把场景复杂化后,这个问题自然就解决了,
2023-07-12 14:19:43 169
原创 Git那些事系列:从业务场景到高级技巧的完整指南(一)
首先,当你读到这篇文章的时候,可能已经进入到这个需求的场景了,但笔者还是想构建一个常见的业务场景,以希望读者能够更快的进入到这个问题背景中:在一个岁月静好的一天,作为开发的你来到工位,看了看项目计划和待办事项,你发现,需要按顺序完成两个需求:(其中包括两个部分,即和根据前期会议对齐的结论,要求的要求于是,你分别从主干拉取了两个分支,一个是,用来做产品列表需求的开发,一个是,用来做用户管理两个子需求的开发。然后,岁月静好,你用了两周时间在分支开发完毕了产品列表需求的开发工作,进行提测。然后切分支到。
2023-07-05 15:36:39 152
原创 【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践
在现代计算机系统中,X86和ARM64是两种常见的处理器架构。为了满足不同架构的需求,Docker镜像也需要支持双架构编包形式。本文将介绍Docker镜像双架构编包统一的实践。
2023-04-01 13:27:53 5816
原创 ElasticSearch Rollup的那些事
近期,突然要做一个大量数据聚合的任务,由于原始数据在ES里面,所以针对ElasticSearch的聚合能力进行了一个研究,里面有些比较好玩的内容,这里分享给大家ElasticSearch的聚合任务由于是多个对大量表进行聚合的任务,且耗时长,数据量大,用传统的方法:ElasticSearch查询后,再写入,需要进行两次IO,所以优先看看ES自己有没有这样的能力看了一下果然有,叫rollup,看名字就是可以聚合这里把网上的资料整理下:这要分为两个方法,一个是用语句创建,一个是用kib
2021-07-19 23:59:32 1586 2
转载 2020-11-17
缓存的五种设计模式利用缓存来加速系统已经成为很常见的一种操作。这种方式有效率、简单,而且成本也在可控的范围内。说到缓存,通常会下意识的想到缓存是用来加速读的,实际上,读数据和写数据都可以使用缓存。总的来说,缓存的使用模式可分成五种。这五种方式就是从是读缓存还是写缓存的角度来进行划分的。需要注意,这里的缓存是广义上的缓存,不仅仅指 Redis 这些常用作缓存的软件。这些缓存模式并不是新技术,而是伴随在计算机体系结构演进中。Cache-Aside如果从缓存中
2020-11-17 18:58:17 267
原创 FPS
https://github.com/Tidusww/WWFPSIndicatorhttps://github.com/joggerplus/JPFPSStatushttps://www.jianshu.com/p/86705c95c224
2020-09-21 10:08:59 109
转载 (转载)macOS 内核之内存占用信息
来源https://justinyan.me/post/3982一、iOS 获取自身 App 内存占用照例先从 iOS 开始。iOS 由于系统限制,App 层面只能获取自身的内存信息,无法获取其他 App 的内存信息。所以我们先看如何获取自己 App 的内存信息。系统接口使用很简单,参考滴滴开源的 DoraemonKit 的实现如下:+ (NSInteger)useMemoryForApp{ task_vm_info_data_t vmInfo; mach_msg_type
2020-09-19 12:38:25 1236
转载 iOS程序执行顺序和UIViewController 的生命周期(整理)
iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期UIView的生命周期言叶之庭.jpeg一. iOS程序的启动执行顺序程序启动顺序图iOS启动原理图.png具体执行流程 程序入口 进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 .
2020-08-29 17:28:24 277
原创 单例dispatch_once造成的死锁
好久没有更新了,这一次遇到一个单例模式造成的死锁,比较有代表性,这里做一个总结,分享给大家起初,我们发现程序偶现死锁的问题,按照解决deadlock的一般思路是找到问题发生时,访问同一资源或者数据结构的可疑线程OC和C有很多的基础类型都是线程不安全的,比如NSDictionary、array等,结果一无所获????看来问题没有这么简单????那就找,问题发生时,访问同一个方法的可疑线程经过几次的信息获取,合并同类项,终于发现了这几个死锁的共同特性(),即总会同时出现以下两
2020-08-29 14:47:35 1490
原创 VC耗时监控的参考资料
VC页面加载监控主要分为页面交互时间和页面渲染时间目前页面交互时间比较统一在iOS即从viewDidLoad到viewDidDisappear的时间,但页面渲染时间由于和业务强关联,很难找到一个通用的方案,这里把这几天相关的资料记录下来,供大家参考关于页面交互时间的参考文献一种基于KVO的页面加载,渲染耗时监控方法(这个是算法的原型,后面几篇文章都是基于此做的)https://www.colabug.com/2017/1127/1953419/巧妙利用KVO实现精准的VC耗时检测(这篇对
2020-08-19 15:41:45 907
转载 _dyld_register_func_for_add_image用法
注册映像加载和卸载的回调通知函数void_dyld_register_func_for_add_image(void(*func)(conststructmach_header*mh,intptr_tvmaddr_slide))void_dyld_register_func_for_remove_image(void(*func)(conststructmach_header*mh,intptr_tvmaddr_slide))如果你通过函数_dyld_register_...
2020-07-31 14:14:31 2893
转载 std的list, vector, map, set区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。Map,Set属于标
2020-07-31 14:13:07 824
原创 跟iOS UI的捉迷藏,真的能够获取到self.presentingViewController
近期,在做一个有趣的实验,研究presentViewController和dismissViewController的对应关系,这里发现了一个有趣的现象,通常情况下,两者配对使用,如果连续两次presentViewController会出现一个warning:同时第二个会有很大概率加载失败(如何让载成功的例子后面会提到)两次dismissViewController则会出现:不要纠结错误的信息,总之是不对的配对使用是一个很好的习惯,也是保持布局稳定,这里有个知识点,dismissViewCo
2020-07-25 17:33:48 748
原创 iOS快速连续的push和pop 同一个ViewController时,系统到底在干啥
最近对PUSH和POP VC比较着迷,想弄清其中的机制是什么做个几个实验,供大家参考首先,测试代码如下,在一个方法里,进行多次连续push和pop操作,self.residentVC也是原生的UIViewController,这里主要是构造多样的VC这里有3个push,一个pop,全都关闭了动画我们通过对系统的pop和push方法进行了HOOK,通过log个可以看出对应的调用顺序,比如上面代码打印出log如下:通过log我们看到,navigationController逐个pus
2020-07-20 22:34:15 1460
转载 (开发过程经验转发)iOS PerformSelector
要注意一点[self performSelector:@selector(delayMethod) withObject:property afterDelay:2.0];property这个参数会被强引用,直到执行完毕基础用法performSelecor响应了OC语言的动态性:延迟到运行时才绑定方法。当我们在使用以下方法时:[obj performSelector:@selector(play)];[obj performSelector:@selector(play:) w.
2020-07-17 13:50:54 315
转载 (开发过程经验转发)在ViewDidLoad中push一个新的View Controller
现在需要在界面ViewDidLoad执行时获取数据,根据获取到的数据对界面进行跳转。- (void)viewDidLoad { [self fetchData:^{ if(self.pushViewController) { //如果需要跳转到另一界面 [self.navigationController pushViewController:newController animated:YES]; } }
2020-07-16 18:48:03 486
转载 带你打造一套 APM 监控系统
https://blog.csdn.net/qq_24033577/article/details/106965268https://blog.csdn.net/qq_24033577/article/details/106978598https://blog.csdn.net/qq_24033577/article/details/107159565
2020-07-14 17:06:06 482
原创 事出反常必有问题——记一次反常的“内存泄漏检测”问题
大家好,近期围绕一个检测内存泄漏的BUG折腾了三天,最后发现原因后十分郁闷,这里跟大家分享下,希望能够给大家帮助。众所周知,内存泄漏时APP的常见问题,在iOS系统中,APP的运行内存过大会导致系统告警,如果不及时清理则会被系统Kill掉——即我们所说的OOM(关于OOM的内容可以参考https://blog.csdn.net/killer1989/article/details/107003287),所以一个良好的APP是要避免出现内存问题。内存泄漏,广义上有很多,比如内存常驻、内存快速飙升、无主
2020-07-14 02:34:11 404
原创 WWDC20中iOS的改变
WWDC20中,绝大部份同学都会把注意力放在了iOS的布局改变和自研芯片上,这方面的文章也比较多,但作为一名开发者,更多的聚焦在iOS官方语言和官方库上来,这里仅找出几个更新比较大的点给大家分享。1.UICollectionViewWWDC19开始,UICollectionView相比之前简单的DataSource、Delegate的形式多了一种新写法,通过DiffableDataSource支持了局部刷新、cell的方便增删改等;通过UICollectionViewCompositionalLay
2020-07-09 15:33:02 513
原创 跟iOS UI的捉迷藏(如何获取用户点击行为的控件title)
近期,接到一个需求,需要获取用户点击行为的操作路径,除了点击的坐标,classname等常用数据外,还需要控件的title,这样就可以更加直观的了解到用户的操作行为。乍一听,熟悉Android的同学会说,View的onClick事件监听就好了,然而,iOS与Android并不相同,一方面,iOS没有统一的获取title的方式,另一方面,不同UI控件title的位置不尽相同,所以,要想获取常用控件的的title,着实需要对控件的层级结构有一定的了解,本文目前只对常用的7个控件进行介绍,后期可能会增加,欢.
2020-06-30 15:55:19 351
转载 (转载)深入了解iOS中的OOM(低内存崩溃)
英文原文:https://programmer.ink/think/learn-more-about-oom-low-memory-crash-in-ios.html中文翻译:https://www.taodudu.cc/news/show-5381.html在iOS开发过程或者用户反馈中,可能会经常看到这样的情况,用着用着就崩溃了,而在后台查看崩溃栈的时候,找不到崩溃日志。其实这大多数的可能是系统产生了低内存崩溃,也就是OOM(还有一种可能是主线程卡死,导致watchdog杀掉了应用),而低内存崩
2020-06-28 17:01:15 5183
原创 iOS 堆栈获取异常分析
最近遇到偶然Bug,ios获取堆栈时偶尔会出现无法识别的栈帧,且对应的地址与macho文件内存的image无法对应,????看看到底是什么原因:首先看现象:可以看到栈底和中间的栈帧均出现了unkonwn,且栈帧的地址明显与其他长度不一致查找关键字“unkonwn”代码中只有一处出现了此关键字????,代码定位get(注意区分unknown和unkonwn区别,这里写代码的同学“手误”(腹黑)写了两个方式来区分不同问题)代码比较简单,大概的意思是,通过读取machO文件,获取所有的
2020-06-22 21:07:32 1048
原创 iOS NSPROXY ARC填坑记
谨以此文纪念多个日夜不停定位问题填坑的日子。 近期,有个bug映入眼帘,主要是某段程序对http的数据进行截取,用于进行二次数据分析,然后截取数据的方式主要对系统自带的方式发送请求可以截获,也可以回调,用第三方的库则不能回调,不知道哪里环节出来问题。 第一反应,是http截取的代码与第三方库的代码存在冲突 于是将截取数据模块代码和第三方库(AFNetWork)的代码进行了全盘浏览,发现,两者代码比较相近????,事情貌似不简单,初步怀疑是部分代...
2020-06-15 20:42:32 313
原创 一个“反问”引发的内存反思
大家好,好久不见,最近正好有个iOS内存问题与大家分享今天,相关的同学突然发问,说我们写的代码存在内存风险????,作为内存方面的兴趣爱好者,第一时间凑了过来。。。????问题很简单,主要在于获取线程ID的方式,做iOS的同学比较熟悉,一般来说是用:[NSThread currentThread];但在一些底层功能实现时,仅仅依靠OC层时不够的,特别是在做一些HOOK,或者捞取一些系统数据时,还需要C/C++的实现,比如:https://stackoverflow.com/que
2020-06-10 22:57:44 1106
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人