自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (3)
  • 收藏
  • 关注

原创 Redis异常排查实战:从问题定位到性能提升,助你成为技术领域的佼佼者!

第一个重点,服务排障的基本方法在岁月静好的一天,正当笔者准备下班工作的时候,突然,告警出现了!嗯,又是一到下班就会告警!仔细一看,原来是数据整体处理时间的慢了既然慢了,就看看具体哪个链路慢了看来是A模块的B阶段的处理耗时突然慢了赶紧确认反向查询哪里出了问题,因为B阶段不是A模块的第一个阶段,所以基本排除是模块间的网络通信、带宽等问题那这里有两个思路:1.排查这个A模块本身的问题2.排查数据量的问题首先排查A模块本身的问题,这里的经验是横向看基础指标,纵向看代码变更。

2023-10-16 20:49:22 233

原创 Node.js代码漏洞扫描工具介绍——npm audit

npm audit运行安全检查主要作用:检查命令将项目中配置的依赖项的描述提交到默认注册中心,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果 fix 提供了参数,则将对包树应用补救措施。具体参考:https://www.npmrc.cn/quick-start/about-npm.html。

2023-10-08 15:03:55 1370 1

原创 Git那些事系列:从业务场景到高级技巧的完整指南(三)

文件修改的记录居然没有了!!!

2023-09-26 16:54:49 152

原创 Goland踩坑系列——Goland的go mod配置不生效的问题

Goland使用技巧。

2023-09-25 15:03:40 880

原创 步步为营,如何将GOlang引用库的安全漏洞修干净

近期,笔者接到一个任务,因为代码安全原因,需要批量升级一系列的Golang第三方组件,这里面包含了直接引用的第三方库和间接引用的第三方库,其中第三方库也包括能够直接升级和不能直接升级两种,这里把相关解决方案沉淀在此,供大家参考。

2023-09-18 17:23:30 486 3

原创 Golang代码漏洞扫描工具介绍——govulncheck

govulncheck是一个命令行工具,帮助Go用户在项目依赖中查找已知的漏洞。该工具可以分析代码库和二进制文件,并通过优先考虑实际调用你代码的函数中的漏洞来减少干扰。

2023-09-15 22:46:04 662

原创 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 779

原创 Jaeger的经典BUG原创

原来是另一个问题,这个HostIP其实有一个scoreAddr方法,当一个服务器有两个ip,比如内网ip和外网ip,按照这个方法的逻辑,会优先外网ip,但一个集群内,可能只有一个入口有外网ip,其他都是内网ip,这个时候入口机的ip和内网ip就适配了,jaeger信息也会异常,所以提出了这个问题,并进行修复。这个方式会调用底层的系统函数获取本机的IP,会打开一个socket,会不会因为大量打开socket,把CPU占满了呢?把之前获取的IP放在内存里,下次就不再重复获取了!难道有项目遇到了这个问题了?

2023-08-31 20:55:17 790

原创 Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库,在项目中也进行了一些实践,但一直都没有一些技术文章的沉淀,近期打算做个系列,通过一些具体的场景将Clickhouse的用法进行沉淀和分享,供大家参考。

2023-08-08 17:34:17 1760

原创 Git那些事系列:从业务场景到高级技巧的完整指南(二)

业务实践中,经常会出现的情况,比如发现一个线上缺陷后,需要在和同时拉取修复分支,在修改缺陷后,分别向主干和发布分支发起合并,从而完成对发布版本和未来版本的问题修复由于需要两次修改、两次合并,所以这里会,对人力投入产出比有考验,同时两次合并要求,所以对多合并方式由一定的要求,那怎么样才能优雅的双合并呢?这种场景下,因为修改内容少,几乎不存在心智要求和人力消耗的问题,很多同学都会选择那应该怎么办呢?不急,当我们把场景复杂化后,这个问题自然就解决了,

2023-07-12 14:19:43 128

原创 Git那些事系列:从业务场景到高级技巧的完整指南(一)

首先,当你读到这篇文章的时候,可能已经进入到这个需求的场景了,但笔者还是想构建一个常见的业务场景,以希望读者能够更快的进入到这个问题背景中:在一个岁月静好的一天,作为开发的你来到工位,看了看项目计划和待办事项,你发现,需要按顺序完成两个需求:(其中包括两个部分,即和根据前期会议对齐的结论,要求的要求于是,你分别从主干拉取了两个分支,一个是,用来做产品列表需求的开发,一个是,用来做用户管理两个子需求的开发。然后,岁月静好,你用了两周时间在分支开发完毕了产品列表需求的开发工作,进行提测。然后切分支到。

2023-07-05 15:36:39 112

原创 【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践

在现代计算机系统中,X86和ARM64是两种常见的处理器架构。为了满足不同架构的需求,Docker镜像也需要支持双架构编包形式。本文将介绍Docker镜像双架构编包统一的实践。

2023-04-01 13:27:53 4708

原创 系统优化与微服务架构、分布式架构的合理性思考

微服务

2022-09-05 16:53:22 754

原创 《混沌工程》读书笔记

混沌工程

2022-09-05 15:21:07 240

原创 本地环境下启动openFaas创建的Java的云函数

创建openfaas的java云函数并本地启动

2022-08-30 20:33:26 492

原创 浅析多服务在分布式系统下多事务通信处理机制方案

队列是个好东西,用好队列更重要

2022-08-01 21:44:26 534

原创 ElasticSearch Rollup的那些事

近期,突然要做一个大量数据聚合的任务,由于原始数据在ES里面,所以针对ElasticSearch的聚合能力进行了一个研究,里面有些比较好玩的内容,这里分享给大家ElasticSearch的聚合任务由于是多个对大量表进行聚合的任务,且耗时长,数据量大,用传统的方法:ElasticSearch查询后,再写入,需要进行两次IO,所以优先看看ES自己有没有这样的能力看了一下果然有,叫rollup,看名字就是可以聚合这里把网上的资料整理下:这要分为两个方法,一个是用语句创建,一个是用kib

2021-07-19 23:59:32 1439 2

转载 2020-11-17

缓存的五种设计模式利用缓存来加速系统已经成为很常见的一种操作。这种方式有效率、简单,而且成本也在可控的范围内。说到缓存,通常会下意识的想到缓存是用来加速读的,实际上,读数据和写数据都可以使用缓存。总的来说,缓存的使用模式可分成五种。这五种方式就是从是读缓存还是写缓存的角度来进行划分的。需要注意,这里的缓存是广义上的缓存,不仅仅指 Redis 这些常用作缓存的软件。这些缓存模式并不是新技术,而是伴随在计算机体系结构演进中。Cache-Aside如果从缓存中

2020-11-17 18:58:17 234

原创 FPS

https://github.com/Tidusww/WWFPSIndicatorhttps://github.com/joggerplus/JPFPSStatushttps://www.jianshu.com/p/86705c95c224

2020-09-21 10:08:59 84

转载 (转载)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 842

转载 iOS程序执行顺序和UIViewController 的生命周期(整理)

iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期UIView的生命周期言叶之庭.jpeg一. iOS程序的启动执行顺序程序启动顺序图iOS启动原理图.png具体执行流程 程序入口 进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 .

2020-08-29 17:28:24 236

原创 单例dispatch_once造成的死锁

好久没有更新了,这一次遇到一个单例模式造成的死锁,比较有代表性,这里做一个总结,分享给大家起初,我们发现程序偶现死锁的问题,按照解决deadlock的一般思路是找到问题发生时,访问同一资源或者数据结构的可疑线程OC和C有很多的基础类型都是线程不安全的,比如NSDictionary、array等,结果一无所获????看来问题没有这么简单????那就找,问题发生时,访问同一个方法的可疑线程经过几次的信息获取,合并同类项,终于发现了这几个死锁的共同特性(),即总会同时出现以下两

2020-08-29 14:47:35 1348

原创 VC耗时监控的参考资料

VC页面加载监控主要分为页面交互时间和页面渲染时间目前页面交互时间比较统一在iOS即从viewDidLoad到viewDidDisappear的时间,但页面渲染时间由于和业务强关联,很难找到一个通用的方案,这里把这几天相关的资料记录下来,供大家参考关于页面交互时间的参考文献一种基于KVO的页面加载,渲染耗时监控方法(这个是算法的原型,后面几篇文章都是基于此做的)https://www.colabug.com/2017/1127/1953419/巧妙利用KVO实现精准的VC耗时检测(这篇对

2020-08-19 15:41:45 789

转载 _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 2694

转载 std的list, vector, map, set区别与用法比较

List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。Map,Set属于标

2020-07-31 14:13:07 770

原创 跟iOS UI的捉迷藏,真的能够获取到self.presentingViewController

近期,在做一个有趣的实验,研究presentViewController和dismissViewController的对应关系,这里发现了一个有趣的现象,通常情况下,两者配对使用,如果连续两次presentViewController会出现一个warning:同时第二个会有很大概率加载失败(如何让载成功的例子后面会提到)两次dismissViewController则会出现:不要纠结错误的信息,总之是不对的配对使用是一个很好的习惯,也是保持布局稳定,这里有个知识点,dismissViewCo

2020-07-25 17:33:48 682

原创 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 1344

转载 (开发过程经验转发)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 270

转载 (开发过程经验转发)在ViewDidLoad中push一个新的View Controller

现在需要在界面ViewDidLoad执行时获取数据,根据获取到的数据对界面进行跳转。- (void)viewDidLoad { [self fetchData:^{ if(self.pushViewController) { //如果需要跳转到另一界面 [self.navigationController pushViewController:newController animated:YES]; } }

2020-07-16 18:48:03 428

转载 带你打造一套 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 425

原创 事出反常必有问题——记一次反常的“内存泄漏检测”问题

大家好,近期围绕一个检测内存泄漏的BUG折腾了三天,最后发现原因后十分郁闷,这里跟大家分享下,希望能够给大家帮助。众所周知,内存泄漏时APP的常见问题,在iOS系统中,APP的运行内存过大会导致系统告警,如果不及时清理则会被系统Kill掉——即我们所说的OOM(关于OOM的内容可以参考https://blog.csdn.net/killer1989/article/details/107003287),所以一个良好的APP是要避免出现内存问题。内存泄漏,广义上有很多,比如内存常驻、内存快速飙升、无主

2020-07-14 02:34:11 363

原创 WWDC20中iOS的改变

WWDC20中,绝大部份同学都会把注意力放在了iOS的布局改变和自研芯片上,这方面的文章也比较多,但作为一名开发者,更多的聚焦在iOS官方语言和官方库上来,这里仅找出几个更新比较大的点给大家分享。1.UICollectionViewWWDC19开始,UICollectionView相比之前简单的DataSource、Delegate的形式多了一种新写法,通过DiffableDataSource支持了局部刷新、cell的方便增删改等;通过UICollectionViewCompositionalLay

2020-07-09 15:33:02 465

原创 跟iOS UI的捉迷藏(如何获取用户点击行为的控件title)

近期,接到一个需求,需要获取用户点击行为的操作路径,除了点击的坐标,classname等常用数据外,还需要控件的title,这样就可以更加直观的了解到用户的操作行为。乍一听,熟悉Android的同学会说,View的onClick事件监听就好了,然而,iOS与Android并不相同,一方面,iOS没有统一的获取title的方式,另一方面,不同UI控件title的位置不尽相同,所以,要想获取常用控件的的title,着实需要对控件的层级结构有一定的了解,本文目前只对常用的7个控件进行介绍,后期可能会增加,欢.

2020-06-30 15:55:19 293

转载 (转载)深入了解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 4120

原创 iOS 堆栈获取异常分析

最近遇到偶然Bug,ios获取堆栈时偶尔会出现无法识别的栈帧,且对应的地址与macho文件内存的image无法对应,????看看到底是什么原因:首先看现象:可以看到栈底和中间的栈帧均出现了unkonwn,且栈帧的地址明显与其他长度不一致查找关键字“unkonwn”代码中只有一处出现了此关键字????,代码定位get(注意区分unknown和unkonwn区别,这里写代码的同学“手误”(腹黑)写了两个方式来区分不同问题)代码比较简单,大概的意思是,通过读取machO文件,获取所有的

2020-06-22 21:07:32 979

原创 iOS NSPROXY ARC填坑记

谨以此文纪念多个日夜不停定位问题填坑的日子。 近期,有个bug映入眼帘,主要是某段程序对http的数据进行截取,用于进行二次数据分析,然后截取数据的方式主要对系统自带的方式发送请求可以截获,也可以回调,用第三方的库则不能回调,不知道哪里环节出来问题。 第一反应,是http截取的代码与第三方库的代码存在冲突 于是将截取数据模块代码和第三方库(AFNetWork)的代码进行了全盘浏览,发现,两者代码比较相近????,事情貌似不简单,初步怀疑是部分代...

2020-06-15 20:42:32 263

原创 一个“反问”引发的内存反思

大家好,好久不见,最近正好有个iOS内存问题与大家分享今天,相关的同学突然发问,说我们写的代码存在内存风险????,作为内存方面的兴趣爱好者,第一时间凑了过来。。。????问题很简单,主要在于获取线程ID的方式,做iOS的同学比较熟悉,一般来说是用:[NSThread currentThread];但在一些底层功能实现时,仅仅依靠OC层时不够的,特别是在做一些HOOK,或者捞取一些系统数据时,还需要C/C++的实现,比如:https://stackoverflow.com/que

2020-06-10 22:57:44 925

转载 Instrument Driver (iOS下的自动化测试)

http://blog.csdn.net/horkychen/article/details/8075024InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例。     研究过iOS自动化测试的同学肯定对 instrument UI Automation 有所

2015-10-28 14:59:21 541

转载 如何使用UIAutomation进行iOS 自动化测试

转自http://www.cnblogs.com/vowei/archive/2012/08/10/2631949.html大神的文章,大神的翻译写在前面研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度。

2015-10-28 14:53:24 1350

转载 基于instruments-Automation的iOS应用UI自动化测试图文攻略

转自:http://blog.csdn.net/close_marty/article/details/34527821iOS的自动化测试框架可分为两种:注入式和非注入式。注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动,典型的比如monkeytalk。非注入式的框架则是通过苹果提供的instrum

2015-10-28 14:44:26 634

gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

2015-07-23

cmm1.1 中文版

cmm1.1 中文版 三本合一 大学研究生毕用教材

2014-12-15

高数答案 红皮书版

同学辛苦搜遍整个大学找到的高数答案!!!

2010-04-09

空空如也

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

TA关注的人

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