南昌做网站开发的公司有哪些网络营销策划的主要特点

web/2025/10/9 1:13:49/文章来源:
南昌做网站开发的公司有哪些,网络营销策划的主要特点,制作网站的公司做网站去哪里找,微信怎么自建小程序商店https://mp.weixin.qq.com/s/7FL0nUTk6aFmAb2J__5Mtw 因 Redis Key 命令不规范#xff0c;导致熬了一个通宵才把Key删完了#xff01; 点击关注 #x1f449; Java面试那些事儿 9月3日 # 前言 由于有一条业务线不理想#xff0c;高层决定下架业务。对于我们技术团队而言导致熬了一个通宵才把Key删完了 点击关注  Java面试那些事儿 9月3日 # 前言 由于有一条业务线不理想高层决定下架业务。对于我们技术团队而言其对应的所有服务器资源和其他相关资源都要释放。释放了8台应用服务器 1台ES服务器 删除分布式定时任务中心相关的业务任务 备份并删除MySQL数据库 删除Redis中相关的业务缓存数据。 CTO指名点姓让我带头冲锋才扣了我绩效……好吧冲~ 其他都还好不多时就解决了。唯独这删除Redis中的数据害得我又熬了一个通宵真是折煞我也 # 难点分析 共用Redis服务集群 由于这条业务线的数据在Redis大概在3G左右完全没必要单独建一个Redis服务集群本着能节约就节约的态度当初就决定和其他项目共享一个集群这个集群配置16个节点128G内存还算豪华吧~集群配置如下 在这种共用集群的情况下导致无法简单粗暴的释放。因此只能选择删除Key的方式。 Key命名不规范 要删除Key首先就要精准的定位出哪些Key需要删除如果勿删Key会影响到其他服务正常运转如果Key本身设置了过期时间但有些数据需是持久化的。然而那该死的项目经理一直催项目进度导致开发人员在开发过程中很多地方都没有设计到位比如Redis Key散落在项目代码的每个角落比如命名不是很规范。真不知道是怎么review代码哦想必是没有时间review那该死的项目经理……     我随便截个支付服务中的Key命名 怎么样是不是觉得我们开发人员写的代码很low~别笑在实际工作中还有比这更low的希望你别遇到不然真的很痛苦~ 解决思路 经过以上的分析我们简单归纳如下 我们真正关心的是那些未设置过期时间的Key 不能误删除Key否则下个月绩效也没了 由于Key的命名及使用及其不规范导致Key的定位难度很大 看来通过scan命令扫描匹配Key的方式行不通了。只能通过人肉搜索了~   幸而Idea的搜索大法好这个项目中使用的是spring-boot-starter-data-redis.因此我通过搜索RedisTemplate和StringRedisTemplate定位所有操作redis的代码具体步骤如下 通过这些代码统计出Key的前缀并录入到文本中  通过python脚本把载入文中中的的Key并在后面加上“*”通配符  通过python脚本通过scan命令扫描出这些key  为了便于检查我们并没有直接使用del命令删除key在删除key之前先通过debug object key的方式得到其序列化的长度再执行删除并返回序列化长度。这样我们就可以统计出所有key的序列化长度来得到我们释放的空间大小。关键代码如下 def get_key(rdbConn,start): try: keys_list rdbConn.scan(start,count2000) return keys_list except Exception,e: print eRedis DEBUG OBJECT command got key info def get_key_info(rdbConn,keyName): try: rpiple rdbConn.pipeline() rpiple.type(keyName) rpiple.debug_object(keyName) rpiple.ttl(keyName) key_info_list rpiple.execute() return key_info_list except Exception,e: print INFO : ,edef redis_key_static(key_info_list): keyType key_info_list[0] keySize key_info_list[1][serializedlength] keyTtl key_info_list[2] key_size_static(keyType,keySize,keyTtl) 通过以上方式能够统计出究竟释放了多少内存了。 由于这个集群是有这么接近7千万个key 因此等到了第二天天亮我睡眼朦胧的看了一下终于删除完毕了时间07:13…早高峰即将来临…… 知耻而后勇 从来没有经历过因业务下线而清除资源的经验。这次事情真心让我觉得细微之处见真功夫的道理。如果一开始我们就能够遵循开发规范来使用和设计redis key也不至于浪费这么多时间。为了让key的命名和使用更加规范以及今后避免再次遇到这种情况下午睡醒之后我就在redis公共组件库里面添加了一个配置和自定义了key序列化代码如下 ConfigurationProperties(prefix spring.redis.prefix) public class RedisKeyPrefixProperties { private Boolean enable Boolean.TRUE; private String key; public Boolean getEnable() { return enable; } public void setEnable(Boolean enable) { this.enable enable; } public String getKey() { return key; } public void setKey(String key) { this.key key; } } /** * desc 对字符串序列化新增前缀 * author create by liming sun on 2020-07-21 14:09:51 */ public class PrefixStringKeySerializer extends StringRedisSerializer { private Charset charset StandardCharsets.UTF_8; private RedisKeyPrefixProperties prefix;public PrefixStringKeySerializer(RedisKeyPrefixProperties prefix) { super(); this.prefix prefix; }Override public String deserialize(Nullable byte[] bytes) { String saveKey new String(bytes, charset); if (prefix.getEnable() ! null prefix.getEnable()) { String prefixKey spliceKey(prefix.getKey()); int indexOf saveKey.indexOf(prefixKey); if (indexOf 0) { saveKey saveKey.substring(indexOf); } } return (saveKey.getBytes() null ? null : saveKey); }Override public byte[] serialize(Nullable String key) { if (prefix.getEnable() ! null prefix.getEnable()) { key spliceKey(prefix.getKey()) key; } return (key null ? null : key.getBytes(charset)); }private String spliceKey(String prefixKey) { if (StringUtils.isNotBlank(prefixKey) !prefixKey.endsWith(:)) { prefixKey prefixKey ::; } return prefixKey; } } 使用效果 为了避免再次发生这种工作低效而又不得不做的事情我们在开发规范中规定新项目中redis的使用必须设置此配置前缀就设置为项目编号。另外一个模块中的key必须统一定义在二方库的RedisKeyConstant类中。配置如下 spring: redis: prefix: enable: true key: E00P01 Bean public RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplateString, Object redisTemplate new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 支持key前缀设置的key Serializer redisTemplate.setKeySerializer(new PrefixStringKeySerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } 通过以上方式我们至少可以从项目维度来区分出key避免了多个项目之间共用同一个集群时而导致重复key的问题。从项目维度对key进行了划分。更方便管理和运维。如果对于key的管理粒度要求更细我们甚至可以细化到具体业务维度。 我们在测试环境进行了压测增加key前缀对redis性能几乎没有影响。性能方面能接受。 # 总结 通过本次事情我发现对于大多数开发者而言差距其实不在于智力而是在于态度。比如这次事件暴露出来的问题大家都知道要遵循开发规范然而到了真正“打仗”的时候负责这个项目的开发者却没有几个人能始终如一的做好这些细微之事。另外reviewer的工作其实是极其重要的他就像那“纪检委”如果“纪检委”都放水睁一只眼闭一只眼那麻烦可就大了千里之提毁于日常的点滴松懈啊~~~ 经过这次事件之后如果上天再给一次这样的机会我一定会对项目经理说接着奏乐接着舞 来源juejin.im/post/6854573215726075917

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学院网站建设个人兼职网站建设

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择先说总目录经常碰到的文件(目录)最最常见的目录pages次最常用的就是images 目录 操作起来真正的操作 配套资源 本系列校训 用免费公开视频,卷…

商城网站微信支付接口申请找家里做的工作到什么网站

《基于单片机的物流皮带传输监控系统设计 实物仿真》 整体功能: 本设计采用以单片机为核心控制器,以及传感器检测部分作为输入部分,以报警、显示、洒水、排烟、电机停止模块作为输出部分,构成整个物流皮带传输监控系统。 本设计…

学设计用什么笔记本电脑好杭州优化seo公司

点击上方蓝色关注我们!本文原创:王晓丹同学初次,我漫步在静静的校园,深情的黄昏,显得格外惹人喜爱。哇!那是什么?我情不自禁的喊了出来,一颗石榴树 ,引起了我满满的回忆&…

网页设计与网站建设课程考试wordpress钩子大全

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

网站被降权重新做网站网站开发与设计教程

一、POM(Project Object Model)项目对象模型 Pom在Maven中是一个XML文件,位于项目的根目录下,其包含着项目构建所需要的必要信息,Pom还支持继承,当一个项目中拥有多个模块时,子模块可以继承父模…

邢台网站建设公司新开传奇网站3000ok

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)&#xff0c…

网站关键词找不到汕头企业建站

静态文件 除了由服务器生成的HTML文件外,WEB应用一般需要提供一些其它的必要文件,比如图片文件、JavaScript脚本和CSS样式表等等,用来为用户呈现出一个完整的网页。在Django中,我们将这些文件统称为“静态文件”,因为…

4.1进行网站建设与推广wordpress主题模板收费会员系统

为什么要用数据库连接池? 我们的网站允许用户注册,在没有池的情况下,假设只有一个人,那么流程就是,用户点击注册,通过socket将用户的账号和密码发送到服务器,然后就需要创建MySQL数据库连接&am…

网页制作与网站建设填空题开发一个游戏软件需要多少钱

首先,免责声明:如果您正在编写微服务 (每个人现在都对吗?)并希望它是惯用的 ,那么通常不会在其中使用几个不同的数据源。 图片取自Pixabay© https: //pixabay.com/illustrations/software-binary-sys…

建设网站宽度最好是多少网站开发需求分析的内容

最简单的免密登录 1.A电脑生成秘钥 ssh-keygen -t rsa 2.A电脑将秘钥传给B电脑 ssh-copy-id root192.168.1.129 #将秘钥直接传给B电脑 需要输入B电脑的密码,可以看到成功。 3.测试 同理:如果B->A也需要免密登录,统一的操作。 大功告…

网站建设初步课程介绍网站建设 电子商务网站开发

本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读测试来学习zookeeper。阅读本文之前,请先阅读----​​​​​​zookeeper 单机伪集群搭建简单记录(实操课程系列)。 阅读本文之前,请先阅读…

如何迅速k掉网站wordpress仿微信公众号模板

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。 一、安装 1.创建一…

专业网站建设哪家更好桂林论坛网站建设

Windows命令行工具cmd缺点窗口size不能便捷缩放复制文本,不能直接用鼠标拷贝,还需要多一道菜单操作;而且,还只能块状拷贝,而不是按行字符,极其不便不支持多Tab页,多窗口管理不便cmd界面丑陋&…

网站搭建合同范本上海网站设计工具

因为SQL Server运行没有正常,检查了传入参数的值,发现问题,然后传入默认参数,解决了问题.转载于:https://www.cnblogs.com/JimmySeraph/p/11043490.html

设计头像网站免费推荐高端论坛网站建设

1傅里叶变换物理意义 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧…

河南省和城乡建设厅网站阿里网站搭建

目录 一、MHA简述 二、MHA 的组成 三、MHA 的特点 四、MHA工作原理 五、MHA部署步骤 六、搭建 MySQL MHA MHA一主两从高可用集群示意图 实验环境 1. Master、Slave1、Slave2 节点上安装 mysql5.7 2. 关闭防火墙 3. 修改 Master、Slave1、Slave2 节点的主机名 4. 修…

佛山市研发网站建设哪家好佛山做网站永网

junit数据驱动测试在本文中,我们将看到如何使用Junit进行数据驱动的测试。 为此,我将使用一个名为EasyTest的库。 我们知道,对于TestNG,它已内置了数据提供程序。 通过简单的测试,我们可以使用Junit进行数据驱动的测试…

政务公开系统网站建设四川电子有限公司 - 手机网站

CSDN编程题-每日一练(2023-08-21) 一、题目名称:贝博士的论文审阅统计二、题目名称:生命进化书三、题目名称:寻找宝藏山一、题目名称:贝博士的论文审阅统计 时间限制:1000ms内存限制:256M 题目描述: 贝博士经常收到申请他审阅论文的信函,每封信函的信封上面只有两个申…

seo 网站结构优化企业培训网

文章目录 一、需求背景二、核心功能1、功能要求2、非工能要求 三、存储方式四、实现方式五、技术栈说明 一、需求背景 二、核心功能 1、功能要求 文件上传文件预览文件分片上传文件分片合并文件秒传文件断点续传文件下载 2、非工能要求 高扩展性:方便添加新的存…

一个网站如何做外链做网站需要注册商标吗

转自: 运维监控系统-监控项及指标的梳理_程序员杂谈-CSDN博客_运维监控指标综合监控功能工具 综合监控工具完成对被管对象的集中监控、集中维护和集中管理,被管对象包括网络设备、服务器、PC设备、数据库、中间件、存储、备份、安全设备、应用系统等。工…