- 博客(114)
- 资源 (25)
- 问答 (4)
- 收藏
- 关注
原创 浅谈职业生涯接触到的服务架构
从2016年入行开始,伴随着前期几年的的项目和工作变动,陆续的接触到一些服务架构,包括现在的微服务架构;因为在现有的公司这两年接触的Service Mesh比较多,确切来说我一共在两个团队分别实践和使用了两套框架,虽然对现有的架构脉络梳理清楚(庞大且黑盒),引发了我对之前的架构认知的思考,想着既然打算年后换工作,先整理一下自己对服务架构这块浅显的理解,也欢迎大家指教真要动笔才发现对服务架构理解真的很浅,只能持续的阅读和汲取一些优秀博主的精华,加之自己的理解,产出这一篇文章;
2024-10-02 11:36:25 586
原创 工作纪实58-Idea打jar包
有时候需要配合算法使用spark定时DP,调用java相关的jar包做数据处理。idea打jar包有以下三种场景。
2024-09-24 16:58:14 269
原创 工作纪实56-ES搜索串一致性
最近接收到了一个需求,一个用户有一组数据,比如字符串:abcdefg,如果新增的数据是abdcdfge,则视为是同一条数据,可以理解为即使顺序不同,但是实际上也是唯一串;
2024-08-22 10:15:39 508
原创 工作纪实55-数组取笛卡尔积
比如:arr1=[1,2], arr2=[3,4,5]⇒ result = [1,3],[1,4],[1,5],[2,3],[2,4],[2,5]手上有个需求,需要对历史数据清洗,有一段场景是有N个数组,分别要对每个数组做交叉取一个值,行成笛卡尔积。搞定,使用三次for循环也是没办法;各位是否有其他的好办法,欢迎留言。
2024-08-19 19:19:45 129
原创 工作纪实54-git使用ssh方式
生成秘钥的命令很关键,不要忽视公司的情况去网上搜,有时候是无用功,不同公司的git版本不一样,有的甚至做二次封装,以实际情况为准。
2024-07-30 19:42:00 290
原创 工作纪实53-log4j日志打印文件隔离
指定了包的日志输出,又指定了这个包下面子包的日志输出,如果在子包的定义标签上加上additivity=false,那么子包中的日志不会打印在父包中,只会在子包中输出。在项目中,我有一堆业务日志需要打印,另一部分的日志,是没有格式的,需要被云平台离线解析并收集到kafka或者hdfs、hive等,需要将日志隔离打印到不同的文件。算法同学希望单独在dump.log中进行日志打印,而后他们去配置采集的逻辑,发现web.log居然也有dump.log的日志,重复打印了;关键代码:additivity。
2024-07-19 17:38:57 406
转载 (粉丝福利局)java面试-场景题汇总
这样,在已经得知到已读消息的数量和具体消息 id 的情况下,我们可以直接使用消息 id 来查询没有消费过的数据。这个方案看起来没什么问题,但实际上,我们把所有用户通知的消息全部放在一个表里面,如果有 10W 个用户,那么同样的消息需要存储 10W 条。只需要设计一个消息内容表和一个用户通知表,当创建一条系统通知后,数据插入到消息内容表。每个用户去获取未读消息的时候,只需要查询大于当前维护的 msg_id_offset 的数据即可。如果是站内渠道,在插入消息内容后异步的插入记录到用户通知表。
2024-07-05 16:18:19 2036
原创 LeetCode-无重复字符的最长子串
使用滑动窗口算法,left和right指针;right指针遭遇相同的值的时候,意味着left指针需要往右边移动一下,此时需要清空bucket,不用担心丢失数据,因为max早就记录了,只需要不断地移动两个指针比较接口最大值max要反复取下面的代码很关键,如果right指针遭遇了相同的字符串,如果;if (left!= 0) {
2024-07-02 20:13:43 246
原创 3、加密算法-AES和RSA
它是一个唯一对应一个消息或文本的固定长度的值,它由一个单项Hash函数对消息进行计算而产出;不定长的数据===》数字摘要算法(Hash)====>定长的数据不用纠结非对称加密的公私秘钥在前端or后台生成,关键是看场景和主导方RSA拿来做签名是:私钥加密,公钥解密RSA拿来做数据传输加密是:公钥加密,私钥解密jwt的token案例在了解RSA的逻辑之后,会变得非常简单。
2024-07-02 10:11:26 1259
原创 工作纪实51-手撸AB实验分流策略
前几天写了一篇关于哈希算法的文章,起源就是在构思AB实验平台的时候,用到了哈希,所以对其做了深入的了解AB实验平台是一般互联网做策略、样式实验会用到的一个系统,一般开启某个实验之后,需要对线上流量进行分流:客户端->实验平台->策略平台->应用服务,大概是这个链路。
2024-06-28 18:02:10 3452 2
原创 2、Hash算法-自我解读
哈希算法和一致性哈希,不是一回事儿TreeMap 的 ceilingEntry 方法的作用是在 TreeMap 中找到大于或等于指定键值的最小键值对,使用它可以模拟哈希环如果构建了虚拟节点,其实投射到哈希环上的哈希值,都是虚拟节点的哈希值,只不过每个虚拟节点的指向性是一个真实的Node机器,但是这样不妨碍它确实是让数据分布变得更均匀虚拟节点个数挂载的越多,数据分布越均衡,大家可以试一下改一下值,我代码里面设置的是3。
2024-06-28 02:21:31 1068
原创 1、加密算法-MD5随机盐
MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。
2024-06-27 12:17:57 1086
原创 LeetCode88-删除有序数组中的重复项
需要理解题意,数组本身是有序的,也就意味相同值肯定是挨着的需要理解一下为什么slow=2,是因为要从数组的第一个开始重新进行赋值。
2024-06-16 14:44:39 288
原创 LeetCode70-爬楼梯
其实和高中的数学归纳法有点像,对前面的几个情况进行穷举就会发现是一个斐波那契数列递归法写法简单,但是对栈内存的开销存在一定的损耗,推荐for循环。
2024-06-05 22:17:01 410
原创 LeetCode22-原地移除元素
如果使用单指针遍历数组,每遇到一个目标值就需要将后面所有元素向前移动一位。这样会产生大量的赋值操作,效率较低。双指针方法只需要在遇到目标值时,将当前位置的值替换为数组末尾的值,然后缩小右指针的范围。这样可以大大减少不必要的赋值操作。不要纠结绝对的有序,另外right的边界需要自己理解一下。
2024-05-30 14:33:46 433
原创 LeetCode88-合并两个有序数组
使用双指针优点是不用考虑数组的扩容和赋值;直接对两个数组从右往左进行指针移动,哪个大取哪个值放到尾部,同时移动对应数组的指针,较小值的数组指针不动;同时考虑两个数组的边界,移动到下标为-1时,说明已经结束,其他的值直接使用另外一个数组指针移动的值即可拿纸笔画一画更容易理解。
2024-05-30 14:30:59 249
原创 工作纪实50-Idea下载项目乱码
下载了公司的一份项目代码,发现是gbk格式的,但是我的日常习惯又是utf-8,下载项目以后全是乱码,脑瓜子疼借用网友的一张图,如果是一个一个文件这么搞,真的是蛋疼,好几百个文件!
2024-05-28 21:59:16 322
原创 工作纪实49-集合业务数据合并
最近在做推荐相关的一些接口,核心处理流程:prepare=>process=>post;使用接口编程但是在prepare阶段往往存在很多的信息拼接的过程,而我想让整个外部的处理结构平顺,且不想让后续的同事掺杂私活;因此有了这个博客;再次说明一下我的场景:1.prepre阶段需要从两个数据源获取数据,都是Video数据,但是有不同的组成部分,拼接起来就是完整的Video,且都是多线程2.在process阶段必须要拿到完整的数据。
2024-05-22 10:49:28 320
原创 工作纪实48-log4j日志隔离
接到一个需求,需要对日志数据进行打印(区分主日志文件,只输出跟特定业务相关的数据),以便kafka可以对文件进行数据抽取,存储到hive;虽然log4j用的很多,但是有时候真自己配,还是有点生的,记录一下。
2024-05-16 19:15:46 324
原创 工作纪实47-关于线程使用的几点思考
在某些个人认为不是瓶颈的中间件使用比如redis的mget或者pipelineGet都偶尔超过10ms甚至30ms;最近线上存在一些cpu的锯齿情况,类似于推荐项目就一个核心接口,业务逻辑和计算链路很长;
2024-03-29 15:55:41 267
原创 工作纪实41-多线程写了一段还不错的代码
最近换的部门,对接口性能要求非常高,单台机器的qps高峰大概在300左右,导致我非常谨慎,各种catch和兜底。遇见个场景,2个线程处理任务,必须都在10ms内返回(一共10ms),如果返回不了,就不处理;
2023-12-29 17:50:56 385
原创 工作纪实40-使用redis的几种姿势
线上查问题看某个redis的key值,记录一下。1.直接使用telnet进行连接(贼拉方便)2.使用redis-cli连接。网上一大堆,不做说明。
2023-12-28 14:50:49 671
原创 工作纪实38-排查cpu彪高(死循环)
昨天晚上上线了一个服务,第二天发现CPU持续飙高到70~90%,触发平台的自动扩容,后定位出问题后降低到3%此处由于没有保留现场信息,实际查询的线程栈,可以观察到业务类的X行定位信息,定位死循环。0x926: 线程id,0x是16进制,926是第3步得到的线程id。2125是服务进程的pid,jps可以查看。4.查看对应线程栈信息。
2023-12-19 15:28:36 405
testng官方文档翻译.md
2020-01-10
SpringBoot集成Quartz分布式定时任务
2018-11-01
Netty权威指南第二版 MessagePack部分源码
2018-04-12
msgpack-0.6.7jar包
2018-04-11
hadoop-2.7.5,hbase1.2.6.zookeeper.3.3.6完全分布式安装教程
2018-03-16
SSM整合KindEditor-4.11编辑器
2017-12-26
slf4j-1.7.25jar包+logback-1.2.3jar包
2017-12-05
CXF协议WebService+Spring客户端和服务端程序,实现了多数据源动态切换
2017-12-05
纯Socket编写的client和server端2个程序,多线程文件异步上传,通信
2017-12-05
Mybatis批量插入出现OOM异常
2021-04-16
Spring Security OAuth2获取授权码code的接口跳转的思考
2021-03-26
Idea的debug模式查看整个链路调用
2021-03-25
SpringSecurity OAuth2.0获取授权码的触发问题
2021-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人