首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

养生 996 的崛起:马云竟给他最痛恨的「兔子」站台?

  • 24-03-05 03:21
  • 3977
  • 13776
blog.csdn.net

640?wx_fmt=gif

640?wx_fmt=jpeg

作者丨Sean Ye

责编 | 伍杏玲

本文经授权转载自瞎说职场(ID:HRInsight)

2016年,史玉柱的巨人网络陷入困境。

热心如马云老师,毫无保留滴向史玉柱传授了“狼兔同窝”理论。

以巨人、脑白金起家的史玉柱是个“实诚”人。他随后在微博上感谢马云老师,表示即使被误会,也要赶走兔子,打造“狼性团队”(结果落地实操是“末尾淘汰”)。

2019年的今天,马云老师再次出山,推出了“996修福论”,把「996」等同于「奋斗」,又掀起一波惊涛骇浪。

 

640?wx_fmt=png

你怕是对狼有什么误解

 

这些年来,狼总是给民族企业家背锅,被误会成内部自裁,不顾弱小的种族。

其实,我们小时候学过一个成语,叫做「狼狈为奸」。

狈,据说是一种长得很像狼,但是前腿短的动物,总扒在狼身上,一起行动,狼负责坏,狈负责出坏主意。但是,狈没有独自生活的能力:一旦没有狼的扶助,就动弹不得。

我一直看《动物世界》,都没看过狈这种动物。

后来才知道,所谓「狈」就是被捕兽夹夹断前腿的狼。因为狼是群体生活的动物,不会遗弃自己的同伴。

所以会让受伤同伴的一双短前腿放在自己背上,以便一起行动。

连残疾的,脱离队友动都动不了的同事,都不放弃。你看过哪家狼群,每个季度搞末尾淘汰10%的策略的?

作为民族企业家,洗脑,也要讲基本法的吧。

话说回来,狗性精神还是很管用的。

2016年,史玉柱发布「马云教我兔子论」的时候,巨人网络的股价只有34元,一年后,巨人网络的股价就猛涨到77元。

可谓是立竿见影。

对了,巨人网络现在的股价是20……

 

640?wx_fmt=png

谁是兔子

 

阿里根据「业绩」和「价值观」两个象限的评估标准,将员工分成四种类型:

  • 开除:没有业绩,也没有价值观;

  • 野狗:有业绩、没价值观;

  • 兔子:认同价值观,但没有业绩;

  • 猎犬(狼群):既有业绩,也有价值观。

640?wx_fmt=jpeg

很多领导喊着要狼性团队。实际上,他们要的不是狼。

狼绝不抛弃弱小成员的作风,是不符合老板期待的丛林法则。

大多数老板喊着团队精神团队利益,其实想的是“我就是团队,团队要保证我的利益”。

所以老板们最期待的员工,是「猎犬」。不但能力出众,而且任劳任怨唯命是从,其实猎犬,或者说狗,更合适。

但是能力超强的狗,真不好找。越是能力强,越有自己的想法和主见。但凡哪天狗想通了,他就去创业,打造自己的狗性团队去了。

作为老板,是很难退而求其次的。

价值观不符,但有能力的人,会挑战自己的利益和权威。Pass。

价值观符合,但没有能力的人,虽然一时爽,但迟早公司会玩玩的。Pass。

等等……野狗不会变装,但是兔子是擅长易容的。

兔子深谙职场潜规则,老板发言他鼓掌,老板发票圈他点赞,老板提要求他表决心。

马云老师要求的奋斗精神,兔子可以马上上手。白天“努力”,晚上不回家,在公司加班,再配合上一些励志的朋友圈:

你看过凌晨四点的钱塘江吗?

老板是个矛盾体,他很痛恨兔子。

马云对史玉柱说:“兔子虽然认同企业价值观,但是没有能力,兔子如果混得好,会带坏很多普通员工,对企业危害很大。”

猎豹移动CEO傅盛也表态:“最可怕的兔子是整天都在忙,就是不出活儿”,“还会眼泪汪汪看着你,觉得自己对公司有感情”,他甚至表示 “赶走兔子,宁可错赶,不可错漏。”

两位老板说得很对。

不过,知易行难。

钉钉有一个「下班后哪个员工最先走」的排序功能,可以说是摸准了很多老板的心态。

对老板来说,尤其是不懂人力资源的老板来说,绩效好坏很难衡量,但是谁加班勤快,一眼就看出来了。

员工不是傻子。

如果看到优秀人才加薪晋升了,他们就会努力把自己变得优秀。

如果兔子升职加薪,小白兔活成大白兔了。那就转型做兔子呗。

优秀的门槛很高,但兔子的门槛却很低,只要听话努力,或者看起来很努力就行了。这样一来,兔子更容易得到管理层的关照,抢走优秀员工的资源和晋升机会。

优秀员工一瞅:我这么高效,升职加薪的机会却被兔子给拿走了,那我有什么必要在贵司继续待下去呢?

公司推行996,往往最先受不了的是人才。因为有能力的人,在其他地方也找得到好工作。

而没本事干活,却善于做表面功夫的兔子,最优选择一定不是去新的环境重新装过,而是留下继续晒勤奋,老板的钱其实是扔到了无效的加班时间里了。

 

640?wx_fmt=png

养生996的崛起

 

如今,各位老板清一色的996,甚至789配置,对于优秀员工来说,是致命的。

因为高效,是很难每天持续12个小时的。

一个成年人,能在一件事上聚精会神4个小时,那已经是奇迹了。即使是最钟爱的游戏,打四个小时,也要起来走两步吧。

持续的加班,会严重降低员工的效率。

澳大利亚国立大学有一个调研,说是员工每周工作超过39小时,就会威胁身体健康——土澳人实在是太弱了。

640?wx_fmt=png

我们勤劳俭朴的中国人,可比土澳强多了。

即便如此,996长达每周72小时的工作方式,一定会严重伤害员工的身心健康。

在Mercer2016年中国最佳健康雇主调研时,我们就发现:50%的受访员工,存在压力过大的心理健康问题。

如果整个生态,让有能力的员工,无法生存。那么胜出的是谁呢?

恭喜兔子,在老板们的助攻下喜提冠军。

我曾经和一个996公司的员工聊天,问他压力大不大。

他回答:还好啦,早上10点到。先泡茶,吃早饭,再和同事们吹吹牛,很快早上就过去了。

中午吃完饭后,午睡到下午2点,出门弄杯咖啡,然后回来开始正式干活,干到6点吃饭,吃完饭后各个团队的需求都来了,然后再熬夜。

所以实际上,他下午2点以后开始正式干活,还要吃个晚饭,那的确得干到11点啊。

这就是所谓的养生996。

我问:你不能早上把活干了,早点回家吗?

他回答:首先,早回家的话老板视为没有团队精神的眼中钉;其次,早上来,也没活干啊,需求都是下班前才给到的。这不是我一个人的习惯,这是整个公司的习惯。

达尔文应该很欣慰,这是进化论的社会版本:

  • 有提倡感恩公司的老板,就一定有永远爱公司,永远热泪盈眶的员工;

  • 有提倡末位淘汰的老板,就一定有假装狼性文化的哈士奇员工;

  • 有提倡加班文化的老板,就一定有深更半夜发朋友圈炫加班的员工。

老板敢于让员工加班,员工就敢养身996忽悠老板。

反正你老板并没有评估绩效的能力,只会看时长,我就睡在公司吃鸡,好不好?

 

640?wx_fmt=png

万恶的资本家?

 

每次有996的新闻,就一定有马克思、资本论刷屏的机会。

复制黏贴这段文字,可以保底获得500赞:

“如果有10%的利润,它就保证到处被使用;有20%的利润,它就活跃起来;有50%的利润,它就铤而走险;为了100%的利润,它就敢践踏一切人间法律;有300%的利润,它就敢犯任何罪行,甚至冒绞首的危险。”

实际上,如今的外资公司还真干不出这没良心的事情。

谷歌996吗?苹果996吗?辉瑞996吗?最压榨员工,最那啥的伊隆·马斯克,也没胆量喊常态性加班。

马斯克隐晦的在Twitter上表示,员工为什么组建工会付工会费,而放弃股票期权呢。然后被美国全国劳资关系委员会(National Work Relations Board)投诉马斯克违反劳动法开展调查。

特斯拉也是麻烦重重。

而谷歌,因为员工反对人工智能用于武器,甚至不得不放弃了美国军方的高额订单。

资本家已经证明了不靠996,向人才让渡权力,企业也能够活得很好。

对于老板来说,996最大的价值,不在于提升企业效率,而在于把员工绑定在公司里,你不要有家,不要有私人生活,不要有跳槽的想法——就算有,你也没时间去面试。

作为中国史上最成功的创业者,给996站台,这招其实很狡猾。

很多创业企业都中了毒,觉得有了996,有了政委,就能复制马云的成功。

事实上,马云为什么成功?

在我看来,马云有两点常人远不能及的优点:

1、愿意分钱

对于企业家来说,有一个真理,财聚人才,财散人聚。

他在刚刚开始创业的时候,马云就愿意把股权分给身边的小伙伴。而蔡崇信,帮助马云设计了清晰的股权规划及股权激励。

华为也是如此。任正非的成功,不在于搞狼性精神,而在于他很早就开始在华为搞全员持股。

这才是现代企业成功的基础:一起奋斗一起成功。

2、有远见

企业的成功与否,往往取决于企业能不能抓住时代的红利。

BAT抓住了互联网时代的红利,TMD(头条美团滴滴)抓住了移动互联网的红利。

马云就更厉害了,淘宝抓住了C2C电商崛起的红利期,天猫抓住了消费升级的红利期,余额宝精准打击了不作为的银行业,如今支付宝的芝麻信用,O2O的盒马鲜生,以及产业互联网的阿里云和阿里钉钉都走在市场前列。

过去,在每一波红利,马云都没有错过。

而如今的马云老师掌握了足够前沿的信息,帮助他做出一个个普通人无法企及的精准预判。

如果再加一个,我想是重视家庭:尽管站台996,但马云自己对家人的保护做得极好,早早退休也部分是为了更好照顾家人。

640?wx_fmt=jpeg

对于普通企业主来说,你要想想:

  • 你有没有马云当年分钱的胆识?

  • 你有没有马云精准的眼光?

你自己差距那么大,方向都找不准,当然不能成功。别说996,就算是7x24,你依然不能成功。

你可能不知道,马云和任正非赶上了好时候,当年的70-80后都是被勤奋、努力、忍耐的精神熏陶大的。

而如今的90后新生代员工,最常放在嘴上的是「选择比努力更重要」。

创业者们,面对马老师这位老江湖,你们想要成功,就得找点差异化的竞争策略。否则,你的企业未来只有被马云老师持续吊打而已。

从月薪 1000 到 2W+,文科生如何逆袭成为大厂程序员?

https://edu.csdn.net/topic/ai30?utm_source=cxrs_bw

 

作者简介:瞎说职场(HRInsight)是Sean分享人力资源行业12年从业经验感悟的地方,主要内容涉及:职业规划,个人职场提升以及求职面试建议。

Sean拥有10多年的人力资源行业经验,先后供职于全球领先的人力资源服务机构Randstad和咨询公司Mercer。工作之余,Sean的身份还包括第一财经/南都周刊/领英专栏作家,知乎人力资源优秀回答者。

640?wx_fmt=png

长三角开发者联盟

代码就是力量,长三角的开发者联合起来!

加入「长三角开发者联盟」将获得以下权益

长三角地区明星企业内推岗位
CSDN独家技术与行业报告
CSDN线下活动优先参与权
CSDN线上分享活动优先参与权

 

扫码添加联盟小助手,回复关键词“长三角2”,加入「长三角开发者联盟」。

640?wx_fmt=jpeg

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

640?wx_fmt=jpeg

 热 文 推 荐 

☞ 微软 GitHub 超百名工程师联名:我们挺 996.ICU!绝不删库跑路!

☞ 小程序的侵权“生死局”

☞ 谁才是世界上最好的编程语言?| 每日趣闻

☞ 码二代的出路是什么?

☞ @996 程序员,ICU 你真的去不起!

☞ Elastic Jeff Yoshimura:开源正在开启新一轮的创新 | 人物志

☞ 机器学习萌新必备的三种优化算法 | 选型指南

☞ 19岁当老板, 20岁ICO失败, 21岁将项目挂到了eBay, 为何初创公司如此艰难?

☞ 她说:为啥程序员都特想要机械键盘?这答案我服!

 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

你点的每个“在看”,我都认真当成了喜欢
程序人生
微信公众号
笑谈开发轶事,品味程序人生。

第七章:FreeRTOS动态任务创建

FreeRTOS静态任务创建

📢 重要通知: 本教程所有项目已开源到GitHub: Despacito0o/FreeRTOS,欢迎Star⭐和Fork!

FreeRTOS中静态任务与动态任务的区别

一、内存分配方式

  1. 静态任务

    • 在编译时分配内存,需用户手动定义StaticTask_t任务控制块(TCB)和StackType_t任务栈数组。
    • 内存由用户预先分配的全局变量或静态变量提供,存放在静态存储区,生命周期与程序一致。
    • 优点:内存使用可预测,无动态内存分配开销,避免内存碎片问题,适合对实时性要求高的场景。
  2. 动态任务

    • 在运行时通过pvPortMalloc()动态分配内存,系统自动管理栈和TCB。
    • 内存从FreeRTOS管理的堆中分配,任务删除后自动释放资源。
    • 优点:灵活性高,支持运行时动态调整任务数量,适合需要频繁创建/删除任务的场景。

二、创建函数与参数

  1. 静态任务函数(xTaskCreateStatic)

    • 需用户传入预分配的栈缓冲区(puxStackBuffer)和任务控制块指针(pxTaskBuffer)。
    • 示例:
      // 定义任务栈数组,大小为128个字
      StackType_t xTaskStack[128];
      // 定义任务控制块
      StaticTask_t xTaskTCB;
      // 创建静态任务,传入任务函数、任务名称、栈大小、参数、优先级、栈数组和控制块
      xTaskCreateStatic(TaskFunc, "Task", 128, NULL, 1, xTaskStack, &xTaskTCB);
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
  2. 动态任务函数(xTaskCreate)

    • 仅需指定栈深度,系统自动分配内存。
    • 示例:
      // 创建动态任务,系统自动分配内存
      // 参数依次为:任务函数、任务名称、栈大小、参数、优先级、任务句柄
      xTaskCreate(TaskFunc, "Task", 128, NULL, 1, NULL);
      
      • 1
      • 2
      • 3

三、适用场景

静态任务动态任务
内存受限的嵌入式系统(如无堆管理模块)需要动态调整任务数量的复杂系统
确定性要求高的实时系统(如航空航天设备)事件驱动型应用(如按键触发任务)
需避免内存碎片的核心任务(如通信协议栈)调试场景(临时添加监控任务)

四、配置与资源管理

  1. 静态任务

    • 需配置宏configSUPPORT_STATIC_ALLOCATION=1。
    • 必须实现vApplicationGetIdleTaskMemory和vApplicationGetTimerTaskMemory函数,为空闲任务和定时器任务分配内存。
  2. 动态任务

    • 需配置宏configSUPPORT_DYNAMIC_ALLOCATION=1。
    • 依赖内存管理文件(如heap_4.c),需确保堆空间充足。

五、性能与稳定性对比

  • 资源占用:静态任务无内存分配/释放开销,适合长期运行的固定任务;动态任务可能因频繁分配导致内存碎片。
  • 错误风险:静态任务需用户保证栈空间足够,否则可能溢出;动态任务需防止内存不足导致的创建失败。
  • 调试复杂度:静态任务的内存问题更易追踪(地址固定);动态任务的内存泄漏需借助工具检测。

总结建议

  • 选择静态任务:当系统要求确定性、资源受限或需长期稳定运行核心功能时。
  • 选择动态任务:在需要灵活扩展、临时任务管理或资源充足的中大型应用中。

可通过修改FreeRTOS配置文件(FreeRTOSConfig.h)中的宏定义来切换两种任务创建模式。

动手实践:创建FreeRTOS静态任务

1. 项目准备

首先,复制我们上节课创建的003项目,并重命名为004。

项目复制和重命名

2. 注释动态任务代码

打开004项目,先编译一下确保项目没有问题,然后将上一次动态创建的任务代码注释掉。

注释动态任务代码

3. 启用静态任务创建宏

导航到freertos.h文件,启用静态任务创建的宏定义:

// 启用静态任务创建支持
#define configSUPPORT_STATIC_ALLOCATION    1
  • 1
  • 2

启用静态任务创建宏

4. 编译检查错误

编译项目,发现有一个报错。这是因为启用静态任务创建后,我们需要实现一个接口函数。

编译错误提示

5. 查看错误原因

根据报错内容,导航到task.c文件,发现系统只是声明了这个函数,我们需要在main文件中实现它。

查看函数声明

6. 复制函数声明到main文件

将这个函数声明复制到main文件中准备实现:

// 为空闲任务提供内存的函数
// 参数1:任务控制块的二级指针
// 参数2:任务栈的二级指针
// 参数3:任务栈大小的指针
void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
                                    StackType_t ** ppxIdleTaskStackBuffer,
                                    uint32_t * pulIdleTaskStackSize );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

复制函数声明

7. 定义空闲任务控制块

第一个参数是任务控制块,我们需要定义一个StaticTask_t类型的变量:

// 定义空闲任务控制块
StaticTask_t IdleTaskTCB;
  • 1
  • 2

8. 定义空闲任务栈

第二个参数需要一个堆栈空间,第三个是堆栈空间大小。我们可以使用FreeRTOSConfig.h中定义的configMINIMAL_STACK_SIZE作为数组大小:

// 定义空闲任务栈数组,大小为最小栈大小
StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE];
  • 1
  • 2

定义空闲任务栈

9. 实现接口函数

现在我们来实现这个接口函数,为空闲任务提供必要的内存资源:

void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
                                   StackType_t ** ppxIdleTaskStackBuffer,
                                   uint32_t * pulIdleTaskStackSize )
{
    // 为函数参数赋值,提供任务控制块地址
    *ppxIdleTaskTCBBuffer = &IdleTaskTCB;
    // 提供任务栈数组地址
    *ppxIdleTaskStackBuffer = IdleTaskStack;
    // 提供任务栈大小
    *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

实现接口函数

10. 查看静态任务创建函数原型

导航到task.c文件,查看静态任务创建函数的原型,了解我们需要传入的参数:

TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,
                               const char * const pcName, 
                               const uint32_t ulStackDepth,
                               void * const pvParameters,
                               UBaseType_t uxPriority,
                               StackType_t * const puxStackBuffer,
                               StaticTask_t * const pxTaskBuffer )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

查看函数原型

11. 创建自定义静态任务

回到main函数,为我们的自定义任务准备资源并创建任务:

// 注释掉之前的动态任务句柄
//TaskHandle_t myTaskHandler;

// 定义自定义任务的栈数组,大小为128个字
StackType_t myTaskStack[128];
// 定义自定义任务的控制块
StaticTask_t myTaskTCB;

// 创建静态任务
// 参数1:任务函数 - myTask
// 参数2:任务名称 - "myTask"
// 参数3:任务栈大小 - 128个字
// 参数4:任务参数 - NULL(未使用)
// 参数5:任务优先级 - 2
// 参数6:任务栈数组 - myTaskStack
// 参数7:任务控制块 - &myTaskTCB
xTaskCreateStatic(myTask, "myTask", 128, NULL, 2, myTaskStack, &myTaskTCB);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

创建静态任务

12. 编译并测试

编译并烧录程序,可以看到效果与上节课使用动态任务创建方式是一样的,都可以正常运行。

运行效果

静态任务创建总结

  1. 内存管理优势:静态任务可以避免内存碎片和动态内存分配失败的风险,特别适合资源受限的嵌入式系统。

  2. 配置要点:

    • 启用宏定义:configSUPPORT_STATIC_ALLOCATION=1
    • 实现必要的接口函数:vApplicationGetIdleTaskMemory
    • 为任务准备静态内存:任务栈和任务控制块
  3. 使用场景:

    • 关键任务和长期运行的核心任务
    • 对实时性要求高的应用
    • 内存资源受限的系统
  4. 代码可维护性:静态任务的内存分配更加直观,便于调试和维护,但需要开发者手动管理内存。

通过本教程,我们学习了如何在STM32平台上创建FreeRTOS静态任务,掌握了静态任务与动态任务的区别,以及如何根据实际需求选择合适的任务创建方式。


📢 推荐关注:如果您对嵌入式开发感兴趣,欢迎关注我的GitHub: Despacito0o/FreeRTOS,获取更多学习资源!

📝 作者说明:本文为原创内容,转载请注明出处。如有问题或建议,欢迎在评论区留言交流!

第九章:FreeRTOS编程风格深度解析:提升源码阅读与开发效率的黄金法则

注:本文转载自blog.csdn.net的CSDN 程序人生的文章"https://blog.csdn.net/csdnsevenn/article/details/89530021"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top