FeelTouch Labs
这个作者很懒,什么都没留下…
展开
-
深析Springboot服务单机到底能抗多大的并发
1s的时间到底可以正确处理响应多少http请求。原创 2024-10-18 14:40:49 · 199 阅读 · 0 评论 -
Http 实现请求body体和响应body体的双向压缩方案
有时请求和响应的body体比较大,需要进行压缩,以减少传输的带宽。原创 2024-07-03 17:55:04 · 873 阅读 · 0 评论 -
quit unexpectedly and Cannot open all the JetBrains‘ applications
Exception Type: EXC_CRASH (Code Signature Invalid)Exception Codes: 0x0000000000000000, 0x0000000000000000Exception Note: EXC_CORPSE_NOTIFYCrash from the IntelliJ IDEA report looks similar to https://youtrack.jetbrains.com/issue/IDEA-282172Check the be原创 2024-04-22 11:29:24 · 331 阅读 · 0 评论 -
Kafka硬核干货
为了弥补性能差距,现代操作系统积极的使用主内存进行磁盘缓存,以便在访问磁盘时不进行直接I/O 同时,即使进程维护了数据缓存,数据也很可能在PageCache中重复,这会导致数据缓存两次 此外,Kafka构建在JVM之上。Kafka官网数据 在 具有 6 * 7200rpm SATA RAID-5阵列的JBOD配置上,线性写入的性能约为600MB / sec,但随机写入的性能仅为100k / sec,相差超过6000倍。Broker :Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。原创 2024-03-28 01:22:20 · 1215 阅读 · 0 评论 -
Twitter 爬取Media图片、视频和封面涉及到的关键Graph SQL应用分析
核心需要解析出 extended_entities -> media -> media_url_https 和 variants。原创 2024-03-11 19:22:50 · 257 阅读 · 0 评论 -
SMTP发送邮件时抱No appropriate protocol错误分析和解决方案
Properties mailProp = mailSender.getJavaMailProperties();原创 2023-09-18 11:44:34 · 477 阅读 · 0 评论 -
Git命令全览
Git使用全部命令原创 2023-08-13 14:52:52 · 135 阅读 · 0 评论 -
Centos7下tensorflow 2.12无法找到NVIDIA Tesla T4 GPU终极解决方法
不要用太新的版本,官方一般还支持不好,参考资料也少。原创 2023-06-27 00:45:08 · 1030 阅读 · 0 评论 -
Centos下 ffmpeg Unknown encoder ‘libx264‘终极解决方法
1.Unknown encoder 'libx264'2.Unrecognized option 'crf'. Error splitting the argument list: Option not found原创 2023-06-26 01:20:03 · 1242 阅读 · 0 评论 -
为什么数据库字段出现了不期望的值2147483647
明明向数据库mysql插入了7500000000,为什么结果是2147483647?原创 2023-05-28 16:45:17 · 281 阅读 · 0 评论 -
Go test run正常运行 debug转圈卡住不执行问题原因和解决方案
这类问题并不是经常的出现,但是一旦遇到,往往令人不知所措,进而为了解决问题四处尝试,导致白白浪费时间,那么遇到这种情况,一般是什么原因?有如何解决的呢?主要有以下两类当然,笔者是在GoLand执行test的时候遇到的此类问题,也许读者会在使用idea的时候也会遇到同样问题,到我想解决思路是一致的,上面的方法也可以参考。另外,实际上笔者遇到的第二种情况更多些。原创 2023-05-28 16:07:07 · 1481 阅读 · 0 评论 -
Go 编程模式代码
程序虽然可以跑通,但是这样编程的方式并不严谨,如果我们需要强制实现接口的所有方法,那么我们应该怎么办呢?Go语言的编程器并没有严格检查一个对象是否实现了某接口所有的接口方法,这种编程模式在Go 的标准库有很多的示例,最著名的就是。接口方法,只要满足这个规模,就可以被。是一个接口,你需要实现他的一个。变量(没人用),其会把一个。9. 泛型编程 借助。原创 2023-05-24 22:11:28 · 730 阅读 · 0 评论 -
Go易错知识集
事实上,Go中的所有的自定义函数(包括声明的函数和匿名函数)都可以被视为闭包。当此预声明的iota出现在一个常量声明中的时候,它的值在第n个常量描述中的值为n(从0开始)。在加载一个代码包的过程中,所有的声明在此包中的init函数将被串行调用并且仅调用执行一次。当一个延迟调用语句被执行时,其中的延迟函数调用不会立即被执行,而是被推入由当前协程维护的一个延迟调用队列(一个后进先出队列)。后,所有在执行此函数调用的过程中已经被推入延迟调用队列的调用将被按照它们被推入的顺序逆序被弹出队列并执行。原创 2023-03-02 23:34:47 · 130 阅读 · 0 评论 -
Centos 7 成功安装PostgreSQL 14过程全记录
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL 开发者把它念作。PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。原创 2023-02-08 21:18:57 · 417 阅读 · 0 评论 -
Go 退出协程 goroutine 场景优雅处理
超时返回时的陷阱超时控制在网络编程中是非常常见的,利用 context.WithTimeout 和 time.After 都能够很轻易地实现。time.After 实现超时控制利用 time.After 启动了一个异步的定时器,返回一个 channel,当超过指定的时间后,该 channel 将会接受到信号。启动了子协程执行函数 f,函数执行结束后,将向 channel done 发送结束信号。原创 2023-01-06 19:06:21 · 662 阅读 · 2 评论 -
Go 逃逸分析
堆内存与栈内存Go 程序会在 2 个地方为变量分配内存,一个是全局的堆(heap)空间用来动态分配内存,另一个是每个 goroutine 的栈(stack)空间。与 Java、Python 等语言类似,Go 语言实现垃圾回收(Garbage Collector)机制,因此呢,Go 语言的内存管理是自动的,通常开发者并不需要关心内存分配在栈上,还是堆上。但是从性能的角度出发,在栈上分配内存和在堆上分配内存,性能差异是非常大的。在函数中申请一个对象,如果分配在栈。原创 2023-01-06 11:52:30 · 442 阅读 · 0 评论 -
Go语言精华总结【万字长文】
在 main() 函数的 goroutine 中执行到 go running 语句时,归属于 running() 函数的 goroutine 被创建,running() 函数开始在自己的 goroutine 中执行。select 机制不是专门为超时而设计的,却能很方便的解决超时问题,因为 select 的特点是只要其中有一个 case 已经完成,程序就会继续往下执行,而不会考虑其他 case 的情况。P:Processor的缩写,一个P代表执行Go代码片段所需要的资源(上下文环境),即用户线程。原创 2023-01-05 17:46:39 · 763 阅读 · 0 评论 -
Go 互斥锁(sync.Mutex)和读写锁(sync.RWMutex)性能分析
唤醒的 goroutine 不会直接拥有锁,而是会和新请求锁的 goroutine 竞争锁的拥有。这种锁称之为 多读单写锁 (multiple readers, single writer lock),简称读写锁,读写锁分为读锁和写锁,读锁是允许同时执行的,但写锁是互斥的。读写锁的存在是为了解决读多写少时的性能问题,读场景较多时,读写锁可有效地减少锁阻塞的时间。读锁之间不互斥,没有写锁的情况下,读锁是无阻塞的,多个协程可以同时获得读锁。写锁与读锁是互斥的,如果存在读锁,写锁阻塞,如果存在写锁,读锁阻塞。原创 2023-01-05 11:41:42 · 1219 阅读 · 2 评论 -
Go内存对齐的必要性和对性能影响
如何计算结构体占用的空间可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数。Args 由 2 个 int 类型的字段构成,在 64位机器上,一个 int 占 8 字节,因此存储一个 Args 实例需要 16 字节。Flag 由一个 int32 和 一个 int16 的字段构成,成员变量占据的字节数为 4+2 = 6,但是 unsafe.Sizeof 返回的结果为 8 字节,多出来的 2 字节是内存对齐的结果。原创 2023-01-04 19:16:31 · 467 阅读 · 0 评论 -
Go 空结构体 struct{} 使用场景
事实上,对于集合来说,只需要 map 的键,而不需要值。即使是将值设置为 bool 类型,也会多占据 1 个字节,那假设 map 中有一百万条数据,就会浪费 1MB 的空间。一是节省资源,二是空结构体本身就具备很强的语义,即这里不需要任何值,仅作为占位符。在部分场景下,结构体只包含方法,不包含任何的字段。无论是 int 还是 bool 都会浪费额外的内存,因此呢,这种情况下,声明为空结构体是最合适的。因此呢,将 map 作为集合(Set)使用时,可以将值类型定义为空结构体,仅作为占位符使用即可。原创 2023-01-04 18:12:38 · 475 阅读 · 0 评论 -
Go for 和 range 的性能差别
range 在迭代过程中返回的是迭代值的拷贝,如果每次迭代的元素的内存占用很低,那么 for 和 range 的性能几乎是一样,例如 []int。但是如果迭代的元素内存占用较高,例如一个包含很多属性的 struct 结构体,那么 for 的性能将显著地高于 range,有时候甚至会有上千倍的性能差异。对于这种场景,建议使用 for,如果使用 range,建议只迭代下标,通过下标访问迭代值,这种使用方式和 for 就没有区别了。如果想使用 range 同时迭代下标和值,则需要将切片/数组的元素改为指针,才能不原创 2023-01-04 15:51:22 · 528 阅读 · 0 评论 -
Go 切片的本质与数组
数组的长度是固定的,长度是数组类型的一部分。如果超过了当前切片的容量,就需要分配新的内存,并将当前切片所有的元素拷贝到新的内存块上。因此为了减少内存的拷贝次数,容量在比较小的时候,一般是以 2 的倍数扩大的,例如 2 4 8 16 …因此很可能出现这么一种情况,原切片由大量的元素构成,但是我们在原切片的基础上切片,虽然只使用了很小一段,但底层数组在内存中仍然占据了大量空间,得不到释放。复杂度为 O(N)。切片操作并不复制切片指向的元素,创建一个新的切片会复用原来切片的底层数组,因此切片操作是非常高效的。原创 2023-01-04 14:42:55 · 624 阅读 · 0 评论 -
x-api接口鉴权架构设计和实现【万字+深度】
x-api鉴权API可以实现身份认证、流量控制等各个模块的校验,判断其请求的合法性等。原创 2022-09-16 20:30:00 · 1097 阅读 · 0 评论 -
App加速读取显示IPFS图片的解决方案和实现
对于进入Web3世界的同学来说,NFT并不是一个陌生的概念且很火,NFT基于区块链具备不可更改性,落脚到具体的NFT上就是NFT自身所对应的tokenUri的不可修改性,但是仅仅tokenUri不可修改是不够的,因为tokenUri所指向的内容才是一个具体NFT的全部表示,这其中image字段是最直观重要的。可以看出,这是一个基于IPFS网络存储的图片。值得一提的是,页可以通过这个控制台,查询对应CID的相信信息,其中最为有用的的是查询CID为目录的情况,这样可以一眼看出下面有什么文件,如下图所示。...原创 2022-07-28 01:30:12 · 709 阅读 · 0 评论 -
GoLang实现将16进制大数转换为10进制整数的解决方案
ParseUint: parsing "***": value out of range解决方案原创 2022-05-21 23:36:31 · 2004 阅读 · 0 评论 -
一场惊心动魄Go拉取Gitlab私有仓库提示exit status 128;Permission denied (publickey)问题排查和解决方案
问题背景1. 一切正常开发Go服务过程中,经过一个周末,周一回来上班执行go mod tidy 和 go get ...升级依赖库,都会报出exit status 128: git@gitlab.******.me: Permission denied (publickey).错误。在之前都是OK的。2. 通过git 与私仓进行拉取和push都是没有任何错误的3.确定被依赖库已经被正确的发布,因为其他同事可以正常更新。具体问题github.com/onsi/ginkgo/config:原创 2022-05-13 23:49:54 · 5449 阅读 · 7 评论 -
Git步步进阶---Git tag操作全解析
为什么要下这篇Git tag文章呢?虽然已经使用Git很长时间,并且自认为对Git的操作也到了掌握的相当好的程度,但是当服务端部分的开发转向Go时,突然需要进行Git tag操作的地方多了起来,因为Go module的依赖需要先打tag法release才行,那么不能游刃有余的驾驭,感觉就不爽,所以有了下文。查看tag查看本地当前分支的taggit tag需要注意的是这个只能查询本地的tag.查看远程的tag git ls-remote --tags origin需要注意的是这个只原创 2022-05-01 13:06:19 · 1150 阅读 · 0 评论 -
Support for password authentication was removed on August 13, 2021.解决方案和Git多源多帐号高效追踪实现
目录0.问题现象1. 问题原因潜在优点:2. 解决方案3.快捷提交提交代码4.高效多源多帐追踪git仓库5. 总结0.问题现象之前用用户名和密码提交代码时OK的,在2021 年 8 月 13之后需要改成token提交了,不然就会报出Support for password authentication was removed on August 13, 2021. 错误提示。更多信息如下:➜ lib git:(main) git config user.n原创 2022-04-01 15:04:03 · 861 阅读 · 0 评论 -
基于概率实现公平有放回抽奖和无放回抽奖完整版【Java版】
目录前言基于概率无限周期抽奖有放回抽奖无放回抽奖ThreadLocalRandom 对垒RandomSecureRandom对垒Random总结前言在互联网行业中,对app进行快速迭代是实现激烈竞争中取胜的法宝,无论是常规工能还是日常运营活动,抽奖活动是一个必不可少的功能,表现形式多是对抽奖活动的变体,但是万变不离其宗,抽象到数学到中,对应的就是数学古典概率中的有放回实验和无放回实验。从抽奖的数目上来讲,进一步可分为基于概率无限周期的和基于个数有限周期的抽奖,本...原创 2022-01-04 08:30:00 · 854 阅读 · 0 评论 -
声明一个长整形必须加L吗?是仅仅规范的问题吗?
答:不仅仅是代码规范问题,而且会导致逻辑错误。具体错误和正确对比示范案例今天是20210922号,我本意是通过取当前时间,再减去5天的毫秒数得到一个起止时间区间,也就是20210917-20210922,但是我的代码Long start2 = end - 5*24*60*1000*1000,结果是20211008号,那么问题在哪里?大家想一下原因分析很明显了,5*24*60*1000*1000;默认是整形,其7200000000已经超过了整形的表达范围溢出了,所以减去一个负的..原创 2021-09-22 17:17:50 · 409 阅读 · 0 评论 -
Ijkplayer、ExoPlayer、VLC播放器综合比较
VLC Media PlayerVLC 是VideoLAN 计划所研发的工程,最早预1996年开始,是一个完全的跨平台播放器,适合Windows、Mac OS、Linux、Android、iOS等系统,目前完全的跨平台播放器很少,VLC是最受欢迎的一种播放器;目前累计下载13亿次,是真真正正的全球播放器;VLC的整体框架是设计成一套module的管理机制,将功能分类并抽象成modules。VLC main: player的main。初始化libVLC 并加载用户界面。libVLCcore:lib原创 2021-04-21 19:55:43 · 9835 阅读 · 0 评论 -
App中WebView网页加载优化实战干货
一、背景移动App内嵌网页是实现快速开发上线,已经成为常规业务活动主流方案,但摆在面前的事实是,网页的加载性能和体验都不如Native效果好也是公认的,那么有没有一些优化可以达到或接近Native效果呢?二、业界常见方案1, 一个加载网页的过程中,native、网络、后端处理、CPU都会参与,各自都有必要的工作和依赖关系;让他们相互并行处理而不是相互阻塞才可以让网页加载更快:2,WebView初始化慢,可以在初始化同时先请求数据,让后端和网络不要闲着。3,后端处理慢,可以让服务器分tru原创 2021-03-26 19:29:51 · 1363 阅读 · 0 评论 -
一种伪随机算法Pseudo Random Distribution(PRD)的高效实现【Java版】
三、Java具体实现1. PseudoRandomDistributionModel:保存概率数据的模型四、实际实验结果对1到100的概率进行10万次实现,实验结果如下:Expect Probability:99 Real Probability:98 Gap Probability:1Expect Probability:98 Real Probability:97 Gap Probability:1Expect Probability:97 Real Probabi..原创 2021-03-19 14:58:55 · 2224 阅读 · 0 评论 -
Git步步进阶---Git修改和配置本地用户名和邮箱
git在push/push to时需要使用到user.name和user.email,切记一定要现配置好查看user.name/user.emailgit config user.namegit config user.email查看所有配置信息git config --list配置user.name/user.emailgit config user.name "...原创 2019-04-13 23:34:05 · 8378 阅读 · 1 评论 -
Google支付订阅产品遇到Reason: Accidental purchase问题原因分析和解决方案
问题现象:用户购买订阅之后,48小时之内撤销购买,一般实际上是刚购买万就会撤消,此时体现在Google后台就是如下:从上图可以看出用户实际上是有支付成功的状态的,即Charged,此时从Google后台查询状态和订阅产品到期时间都是正常的,其中acknowledgementState也是1,即完成了确认。{ "autoRenewing": true, "countryCode": "SA", "developerPayload": "", "expiryTimeMillis": "原创 2020-10-30 20:06:56 · 1592 阅读 · 0 评论 -
Git步步进阶---建立本地分支和远程分支的4中方法
1:建立本地仓test 并建立追踪关系,如果建立了本地仓也建立了追踪会修改追踪关系( 建议使用)git branch --set-upstream test origin/master2:建立test仓库并建立追踪关系git branck --track test origin/develop3:修改追踪关系切换到testgit checkout test修改追踪仓库(一定要先切换)git branch --set-upstream-to origin/m...原创 2020-09-30 01:09:02 · 677 阅读 · 0 评论 -
Kafka系列---Kafka客户端参数配置最佳实践解析
Kafka客户端的配置参数很多,以下提供Producer和Consumer几个常用参数配置。表1Producer参数 参数 默认值 推荐值 说明 acks 1 高可靠:all 高吞吐:1 收到Server端确认信号个数,表示procuder需要收到多少个这样的确认信号,算消息发送成功。acks参数代表了数据备份的可用性。常用选项:..原创 2020-07-11 17:48:51 · 1166 阅读 · 0 评论 -
Kafka系列---Kafka客户端使用最佳实践
目录1. consumer使用规范2. producer使用规范3. topic使用规范4. 其他建议1. consumer使用规范consumer的owner线程需确保不会异常退出,避免客户端无法发起消费请求,阻塞消费。 确保处理完消息后再做消息commit,避免业务消息处理失败,无法重新拉取处理失败的消息。 consumer不能频繁加入和退出group,频繁加入和退出,会导致consumer频繁做rebalance,阻塞消费。 consumer数量不能超过topic分.原创 2020-07-11 17:44:30 · 951 阅读 · 0 评论 -
方案系列--多个应用同时接入Google和Facebook三方登陆互联互通解决方案
目录背景多App之间用户互通场景分析本文可以帮到你什么国内三方登陆常见方案Google和Facebook的三方登陆的该怎么做标准Ouath实现的三方换应用到底是在换什么Google重磅方案Facebook背景当前各家公司的发展策略,早已从之前的单app形式演变为app矩阵的形式,尤其对于一些参与出海的公司的产品更是如此,积累用户提高DAU是永恒的话题,接入Google和Facebook三方登陆是自然而然的形式。题外话:其实当前也有很多app仅采用手机号登陆的原创 2020-06-10 01:51:46 · 2037 阅读 · 12 评论 -
基于spring.handlers和spring.schemas实现Spring的Schema自定义扩展
概要本文将以nacos-spring-project的扩展案例的经典使用方法来讲解对Schema支持,其中会结合部分讲解进行。通过本文可以掌握Spring扩展Schema的支持,该方法也是将一些中间件包装到Spring框架中的常用方法。需要扩展Schema的场景分析通常对系统提供可配置化支持,简单的可以直接基于Spring的标准Bean来配置。但当需要配置较为复杂或者需要更多丰富控制的时候,就会比较困难,此时可以用自定义的方式去解析自主定义的xml文件,然后转化为配置对象,这种方式可以解决所原创 2020-06-07 22:20:58 · 754 阅读 · 0 评论