当前位置: 首页 > news >正文

微信又被吐槽了,委屈啊

昨天的时候,一打开微博热搜榜,一看,微信又被吐槽了,微信占用存储这件事几乎年年会被骂,几乎也会年年被吐槽。

这次的起因呢,是一个人整理了一个方法:「微信内存从 126G 清理到 75G 我是怎么做到的」,这个话题讨论,随即就被推上了热搜榜,引来了新一轮的吐槽。

25eb0267b609d8957361beab7f88f4d6.png

微信占用存储这件事,不多说了,毕竟,说了大家也不相信。

要不还是多说一句吧,之所以占用存储是因为微信后端服务器不保存用户聊天记录,所以,聊天记录都存在了本地,用户的数据自己保存,安全自己负责。

其实,我想通过这个话题聊另外一件事,那就是移动端程序员的未来在哪里?

最近很多人都在转发一篇文章什么北京 IT 互联网崩盘了之类的。很多人就焦虑了,说我们移动端程序员是不是未来也崩盘了?未来到底在哪里呢?

咱聊未来之前,先从几个定律聊起。

首先是摩尔定律,我相信身处在互联网世界的我们,尤其是我们 IT 人士应该都了解过摩尔定律。

所谓的摩尔定律就是英特尔创始人之一戈登・摩尔的经验之谈,其核心内容为:集成电路上可以容纳的晶体管数目在大约每经过 18 个月到 24 个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。

摩尔定律是内行人摩尔的经验之谈,汉译名为 “定律”,但并非自然科学定律,它一定程度揭示了信息技术进步的速度。

摩尔定律对于大家的好处很容易理解,每过一段时间,我们就能用到更便宜、性能更好的产品了,这是人类有史以来最爽的事情,因为在此之前大家总是抱怨东西涨价。

看看手机就知道了,芯片性能一直在增加,而手机价格却不怎么增长,甚至千元机性能也很好,这都要归功于摩尔定律。

但是,这就是几家欢喜几家愁的事情。

有摩尔定律就有反摩尔定律。

从另一个角度讲,厂家就悲催了,因为如果它生产和制造同样的东西,18 个月后收入就降了一半。这种从反面看摩尔定律的表述方式是 Google 前 CEO 施密特博士提出来的,因此也就叫反摩尔定律。

反摩尔定律让 IT 行业变成了青春饭,因为大部分从业者只有两个结局 —— 要么你的进步速度比摩尔定律更快,这样你会很累,很难干到老。要么干几年后赶不上同行的进度,不得不离开。不论是哪一种,都是青春饭。

至于怎么破局,简单讲,就是能力的增长要快过年纪的增长。在 IT 行业中,对于制作硬件的公司,摩尔定律的负面效果更明显,因为它让利润率变得越来越薄,直到企业关门。

施密特到 Google 之前是著名的计算机工作站和服务器公司太阳微系统公司的 CTO,看到太阳公司的业绩一年不如一年,感叹人再有办法也拗不过规律,才讲出了反摩尔定律。

但是对个人来讲,从事硬件的个人反而不容易被淘汰,因为经验在这个行业里很重要。相比之下,单纯从事软件工作的人,很容易被淘汰。

看到了吗?摩尔定律竟然也是导致我们 IT 行业吃青春饭,这么累的原因。

程序员为什么会这么累呢?我们能不能不跟着硬件来改变软件呢?

这就需要从另外一个定律讲起了。

就是安迪-比尔定律。

我相信大家都有这种感受,就是手机最少两三年就得换一部,因为不换的话,手机就会卡,为什么会卡呢?

因为软件越来越大了,占用内存越来越高了。

手机性能不如现在的时候,软件才占几M ,甚至几十 M 就够了,现在一个普通的小软件占用内存都得几百 M 甚至,上 G 。

不断更新的软件越来越慢,吃掉了你的手机硬件性能的提升。这在 IT 产业中,被称为安迪-比尔定律。

安迪是英特尔公司原 CEO 安迪・格鲁夫,比尔就是大家熟知的微软公司创始人比尔・盖茨。安迪-比尔定律原来的表述是 “安迪所给你的,比尔将它们拿走”。也就是说,英特尔等公司按照摩尔定律提升的硬件性能,都被以微软为代表的软件公司消耗掉了,使得你不得不去买新的硬件。

但是,现在有两个新情况出现了。

一个是摩尔定律可能到极限了,也就是性能未来可能会提升,但是,不会这么快了;另外一个情况是经济环境变了,大家消费开始变得保守了,一个手机可能会用三四年,甚至更长。

这就意味着什么?意味着在硬件不变的前提下,要想让机器运行的更快,就需要不断的优化软件。

所以,对于移动端程序员的未来我认为在于底层和性能优化。

你要懂得如何给软件做性能优化,或者是系统级的性能优化,如何让软件运行的更好、更快。

你会优化软件也行,会 framework 层的知识,懂得如何优化系统也行。

这可能是比较好的择业方向。

如果你是一个还没有进入互联网行业的学生,那么未来最好学习一下性能优化或者 framework 系统层的知识,这是优势。

当然了,数据安全方向也是一个不错的选择,虽然,微信说不保存大家的聊天记录,所以存在了用户自己本地,大家还是不相信,但是,正是因为这种不相信,未来数据安全方面也是非常重要的一个就业方向。

这是我的一点思考和感悟。

点击下方公众号卡片,关注我

在公众号对话框,回复关键字 “1024”

免费领取副业赚钱实操教程

921358d8aad4eee8d8c4b50dcb802e63.png

相关文章:

微信又被吐槽了,委屈啊

昨天的时候,一打开微博热搜榜,一看,微信又被吐槽了,微信占用存储这件事几乎年年会被骂,几乎也会年年被吐槽。 这次的起因呢,是一个人整理了一个方法:「微信内存从 126G 清理到 75G 我是怎么做到…...

刷题笔记27——并查集

很长一段时间,我的生活看似马上就要开始了。但是总有一些障碍阻挡着,有些事得先解决,有些工作还有待完成,时间貌似不够用,还有一笔债务8要去付清,然后生活就会开始。最后我终于明白,这些障碍&am…...

Python 模拟类属性

文章目录 模拟类属性的原因模拟类属性的可能解决方案使用 PropertyMock 模拟类属性在不使用 PropertyMock 的情况下模拟类属性Python 模拟类构造函数使用 patch.object 装饰器来修补构造函数本文的主要目的是介绍如何使用 python 单元测试模块 unittest 操作类属性以进行测试和…...

面试算法24:反转链表

题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。例如,把图4.8(a)中的链表反转之后得到的链表如图4.8(b)所示。 分析 由于节点j的next指针指向了它的前一个节…...

【论文阅读】面向抽取和理解基于Transformer的自动作文评分模型的隐式评价标准(实验结果部分)

方法 结果 在这一部分,我们展示对于每个模型比较的聚合的统计分析当涉及到计算特征和独立的特征组(表格1),抽取功能组和对齐重要功能组(表格2),并且最后,我们提供从模型比较&#x…...

VueRouter与expres/koa中间件的关联

ueRouter: runQueue 路由守卫都是有三个参数to,from,next。其中next就是下方的fn执行时候传入的第二个参数(回调函数),只有该回调执行后才会挨个遍历queue内的守卫。 中间件的作用 隔离基础设施与业务逻辑之间的细节。详细的内容位于《深入浅出Node.js》P210 另外一…...

二十、SpringCloud Alibaba Seata处理分布式事务

目录 一、分布式事务问题1、分布式之前2、分布式之后 二、Seata简介1、Seata是什么?2、Seata能干嘛?3、去拿下?4、怎么玩 三、Seata-server安装四、订单、库存、账户业务数据库准备五、订单、库存、账户业务微服务准备六、Seata原理介绍 一、…...

标准误与聚类稳健标准误的理解

1 标准误 1.1 定义 标准误(Standard Error)是用来衡量统计样本估计量(如均值、回归系数等)与总体参数之间的差异的一种统计量。标准误衡量了样本估计量的变异程度,提供了对总体参数的估计的不确定性的度量。标准误越…...

【Github】将本地仓库同步到github上

许久没有用GitHub了,怎么传仓库都忘记了。在这里记录一下 If you have a local folder on your machine and you want to transform it into a GitHub repository, follow the steps below: 1. Install Git (if not already installed) Make sure you have Git in…...

c++视觉--通道分离,合并处理,在分离的通道中的ROI感兴趣区域里添加logo图片

c视觉–通道分离&#xff0c;合并处理 通道分离: split()函数 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the…...

python爬虫:多线程收集/验证IP从而搭建有效IP代理池

目录 一、前言 二、IP池的实现 1. 收集代理IP 2. 验证代理IP可用性 3. 搭建IP代理池 三、多线程实现 四、代理IP的使用 五、总结 一、前言 在网络爬虫中&#xff0c;IP代理池的作用非常重要。网络爬虫需要大量的IP地址来发送请求&#xff0c;同时为了降低被封禁的风险…...

阻塞队列以及阻塞队列的一个使用

阻塞队列以及阻塞队列的一个使用 阻塞队列简介 阻塞队列&#xff08;Blocking Queue&#xff09;是一种常见的队列数据结构&#xff0c;它具有特殊的行为&#xff0c;可以用于多线程编程中&#xff0c;以协调不同线程之间的任务执行和数据传递。阻塞队列在多线程环境中非常有…...

kafka的请求处理机制

目录 前言&#xff1a; kafak是如何处理请求的&#xff1f; 控制请求与数据类请求 参考资料 前言&#xff1a; 无论是 Kafka 客户端还是 Broker 端&#xff0c;它们之间的交互都是通过“请求 / 响应”的方式完成的。比如&#xff0c;客户端会通过网络发送消息生产请求给 B…...

Linux系统管理:虚拟机Centos Stream 9安装

目录 一、理论 1.Centos Stream 9 二、实验 1.虚拟机Centos Stream 9安装准备阶段 2.安装Centos Stream 9 3.进入系统 一、理论 1.Centos Stream 9 (1) 简介 CentOS Stream 是一种 Linux 操作系统。安装此操作系统的难题在于&#xff0c;在安装此系统之前&#xff0c…...

5种排序算法

文章目录 一&#xff0c;排序算法时间复杂度比较二&#xff0c;插入排序三&#xff0c;冒泡排序四&#xff0c;快速排序五&#xff0c;堆排序六&#xff0c;二分归并排序 一&#xff0c;排序算法时间复杂度比较 算法最坏情况下平均情况下插入排序O(n )O(n)冒泡排序O(n)O(n)快速…...

TCP/IP(七)TCP的连接管理(四)

一 全连接队列 nginx listen 参数backlog的意义 nginx配置文件中listen后面的backlog配置 ① TCP全连接队列概念 全连接队列: 也称 accept 队列 ② 查看应用程序的 TCP 全连接队列大小 实验1&#xff1a; ss 命令查看 LISTEN状态下 Recv-Q/Send-Q 含义附加&#xff1a;…...

LeetCode【84】柱状图中的最大矩形

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/qq_28468707/article/details/103682528 https://www.jianshu.com/p/2b9a36a548fa 清晰 代码&#xff1a; public int largestRectangleArea(int[] heights) {int[] heightadd new int[heights.length 1];for (i…...

C++:关于模拟实现vector和list中迭代器模块的理解

文章目录 list和vector的迭代器对比list的实现过程完整代码 本篇是关于vector和list的模拟实现中&#xff0c;关于迭代器模块的更进一步理解&#xff0c;以及在前文的基础上增加对于反向迭代器的实现和库函数的对比等 本篇是写于前面模拟实现的一段时间后&#xff0c;重新回头…...

HTML 笔记 表格

1 表格基本语法 tr&#xff1a;table row th&#xff1a;table head 2 表格属性 2.1 基本属性 表格的基本属性是指表格的行、列和单元格但并不是每个表格的单元格大小都是统一的&#xff0c;所以需要设计者通过一些属性参数来修改表格的样子&#xff0c;让它们可以更更多样…...

3.1 C/C++ 使用字符与指针

C/C语言是一种通用的编程语言&#xff0c;具有高效、灵活和可移植等特点。C语言主要用于系统编程&#xff0c;如操作系统、编译器、数据库等&#xff1b;C语言是C语言的扩展&#xff0c;增加了面向对象编程的特性&#xff0c;适用于大型软件系统、图形用户界面、嵌入式系统等。…...

[代码学习]einsum详解

einsum详解 该函数用于对一组输入 Tensor 进行 Einstein 求和&#xff0c;该函数目前仅适用于paddle的动态图。 Einstein 求和是一种采用 Einstein 标记法描述的 Tensor 求和&#xff0c;输入单个或多个 Tensor&#xff0c;输出单个 Tensor。 paddle.einsum(equation, *opera…...

女性必看——“黄体破裂”到底有多可怕?

前几天的亚运会上发生了这样一件事&#xff1a; 雅思敏&#xff08;化名&#xff09;是一名国外皮划艇运动员&#xff0c;在亚运会上奋力完成皮划艇比赛后&#xff0c;突然开始 剧烈腹痛、面色苍白&#xff0c;大汗淋漓&#xff0c;经过进一步检查&#xff0c;确诊卵巢黄体破裂…...

colab切换目录的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

基于SSM的生活缴费系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

【WebLogic】WebLogic 2023年7月补丁导致JVM崩溃的解决方案

受影响版本&#xff1a; Oracle WebLogic 12c&#xff08;12.2.1.4.0&#xff09;Oracle WebLogic 14c&#xff08;14.1.1.0.0&#xff09; 问题描述&#xff1a; Oracle官方在2023年7月发布的最新版本的OPatch&#xff08;13.9.4.2.13&#xff09;存在一个新出现的Bug&#…...

简单OpenSL ES学习

初识OpenSL ES OpenSL ESObjects和Interfaces 所有的Object在OpenSl里面我们拿到的都是一个SLObjectItf&#xff1a;SLObjectItf_创建引擎创建过程要设计得这么麻烦&#xff1f;&#xff08;object的生命周期&#xff09;这么多参数&#xff0c;参数类型这么多学习障碍太大&…...

Linux网络编程- struct packet_mreq setsockopt()

struct packet_mreq struct packet_mreq 是一个数据结构&#xff0c;用于 Linux 中的原始数据包套接字&#xff0c;当我们想改变套接字的行为以接收特定类型的数据包时&#xff0c;它与 setsockopt() 函数配合使用。 下面是 struct packet_mreq 的定义&#xff1a; struct p…...

C++学习day4

作业&#xff1a; 1> 思维导图 2> 整理代码 1. 拷贝赋值函数课上代码 //拷贝赋值函数课上代码 #include<iostream> using namespace std;//创建类 class Stu { private://私有的string name;int socer;int *age;//此处注意用到指针类型 public://共有的//无参构…...

从零学算法54

54.给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 螺旋遍历&#xff1a;从左上角开始&#xff0c;按照 向右、向下、向左、向上 的顺序 依次 提取元素&#xff0c;然后再进入内部一层重复相同的步骤&#xff0c;直到…...

Logback日志框架使用详解以及如何Springboot快速集成

Logback简介 日志系统是用于记录程序的运行过程中产生的运行信息、异常信息等&#xff0c;一般有8个级别&#xff0c;从低到高为All < Trace < Debug < Info < Warn < Error < Fatal < OFF off 最高等级&#xff0c;用于关闭所有日志记录fatal 指出每个…...