注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

那些年走岔的路,一个人总要为自己的认知买单!

前天晚上彻夜难眠,翻来覆去,直到差不多凌晨四点才睡着,早上八点就起床上班了,很久都没有失眠了,失眠真的让人很痛苦。 回想起一些往事,自己做对了一些选择,但是也做错了很多选择,我想这大概就是人生,现在回想起来,不曾后悔,只有总结! 一 大四下学期我们就离开学校了...
继续阅读 »

前天晚上彻夜难眠,翻来覆去,直到差不多凌晨四点才睡着,早上八点就起床上班了,很久都没有失眠了,失眠真的让人很痛苦。


回想起一些往事,自己做对了一些选择,但是也做错了很多选择,我想这大概就是人生,现在回想起来,不曾后悔,只有总结!



大四下学期我们就离开学校了,加上寒假的两个月,实际上我们的实习期有半年多,但是找工作应该是大四上学期就开始了。


那时候彪哥整天都在面试,积累了不少面试经验,也学习了不少知识,而那时候我鬼迷心窍,去做项目去了。


因为一些巧合,我加入了一个SAAS软件开发的小团队,做的是酒店方面的业务,我是远程办公,那段时间一边做毕设,一边做项目,但是做毕设的时间很少,因为论文就花了五天时间去写,更多是在做酒店项目。


现在我有一部分读者都是从我的区块链毕设过来的,我想对你们说一声,感谢你们的付费,但是也想对你们说一声对不起,如果当时我专心去做毕设,或许呈现在你们眼前的作品会更好,但是时间不能重来!


但是后来我仔细思考,我既不应该花时间去做毕设,也不应该为了点钱去做项目!


纵使我的毕设得了优秀毕设,算是我们那一届最优秀的毕设,但是并没有什么卵用,你的简历并不会因为一个优秀毕设而变得多么耀眼。


为了一点钱去做项目也不理智,因为一个人的时间是有限的,当把时间碎片化后,就很难集中去做一件事了,当时虽然说给我6k一个月,但是因为很多东西不熟悉,所以现去学,像uniapp都去学了,所以功能完成度和质量不高,一个月只给我结了3000不到!


干了两个月我们就毕业了,我收拾行李就回家了。



回到家里后,他们说直接给我一个单独项目做,也是一个SAAS的系统,说开发周期2个月,5万块钱,我当时心里想,一个月两万多,我直接不去实习了,安心干,干完我还可以玩几个月,这他妈多好啊。


于是我就接下来了,就开始进入coding状态,白天干,晚上干,后面在家里呆烦了,又跑回学校去。


在学校呆了半个多月,我做了50%,于是迫于经济压力,又回家了,回家最起码不愁饭吃。


图片


那时候,我把自己定义为一个自由职业者,我也挺享受这样的生活,coding累了,就出去走走,回来后又继续coding,说实话,还挺享受!


那时候基本上大多同学都出去实习了,有些去了很不错的互联网公司,听他们说公司又是用什么牛逼的技术了,心里就突然有点羡慕。


但是想到项目做完马上能拿到钱了,就没有去羡慕了。


两个月时间很快到了,老板准时来验收了,不过一验bug足足提了几百个,还有很多变更,老板说尽快改完!


当时我有点懵,不应该先给我点钱吗?


我就说先付40%给我,但是人家说,你这玩意用起来到处是问题,无法用啊,怎么给钱?


我无话可说,拿不到钱,心里更加焦虑了,想不干了,那么就前功尽弃,如果继续干,问题越来越多,变更越来越多,思来想去,最后还是硬着头皮干了!


陆陆续续又干了半个多月,这时候二验又开始了,老板说这次稍微好了一点,但是也无法用啊,于是叫我把代码上传到他们仓库,然后给我付3000块钱,开发完后再一起结,我自然不愿意。


我想,代码给你了,你不理我了怎么办,所以我还是想等开发完以后拿到钱再交代码。


这时候我干了快三个月了,心里虽然看到一点希望,但是更多的是焦虑,因为再有几个月了就要毕业了,而我还没有去实习!


父母也开始念叨,心里的压力就更大了,我想,再干半个月,还拿不了钱,我真的就不干了。


我又继续做,为了快速做完,很多东西我都是没有考虑的,所以问题自然也多,特别还有硬件对接,还有一些复杂的操作。


说实话,这东西暂时肯定是用不了的,但是为了能拿到钱,我也带有一点骗的成分在里面,偷工减料,以为人家看不出来,实际上别人比你精多!


很多项目二验不通过,那基本就烂尾了,但是老板说,来个三验,果然还是用不了,问题很多,所以依然没拿到钱。


心里更加烦躁了,后面我直接说要么给钱,要么不做了,心里彻底崩溃了,心里后悔,为啥要去接这个项目,为啥浪费这么多时间,为啥不去实习。


后面老板说,如果你不想开发了也可以,把代码交出来,给你5000块钱,后面你和别人一起协同开发,不用全职开发。


我心里是抗拒的,干了这么久才几千块钱,心有不甘,不过过了几天,因为经济压力,所以还是选择交出代码了,谈成了6000块钱。


因为我知道他们会一直加需求,一直在变更,是一个无底洞!


三个多月,就得了6000块钱,心里别提多难受,不过好在暂时有点钱用。


于是直接就不干了,在家里呆了几天就开始投简历了,只有三个月不到就毕业了,所以自然去不了外面了,于是只能在省会城市找实习了。


还好那时候面试机会还挺多,一个星期不到就入职了,6000块钱的实习,就去干了,说实话,一个三线城市,也只能开这么多了!


不过现在这种就业环境,如果学历背景没有占优势,三线城市找6000以上的实习,还是比较难的,这两年市场真的比较低迷了!


“自由职业者“的那段时间,大概是我这么多年来最煎熬的时光,因为总是在希望和失望中来回穿梭。


后来我在书中看到一段话,“如果命运给你一次机会,哪怕是一根稻草,你也要牢牢抓住”,显然那个时候我的认知比较低,认为那就是命运的稻草,但是实际上那不是,那是荆棘!


当你的认知和能力都不够的时候,就算钱摆在你面前你都拿不了。



落笔到这里,心里不禁泛起一阵酸楚!


一个人总要为自己的认知买单的,因为在很黄金的时间阶段,我去做了不太正确的选择,虽然不曾后悔,但是我知道那是不理智的选择。


这段回忆虽然会成为我人生的阅历,甚至可以说是一种财富,但是他终归是一个教训,不值得提倡!



在大四上学期,应该快速把毕设做完,然后进入复习,投简历,即使找不到工作,也能锻炼面试能力,对自己的知识体系进行查缺补漏!


优秀毕设,论文,这些在本科阶段实际上没什么卵用,不过是教育的一个考核而已。


在校期间,那些社团活动,学生会并不能为你将来的职业发展发挥多大的作用,切勿过于沉迷!


眼前的小钱是陷阱,在未来很快就能赚回来!


在学校期间,兼职是完全没有必要的,因为赚不了几个钱,但是却花费了大量的时间,学生时期正是学习知识的时候,浪费了就没有了。


因为把只是学扎实,这点钱等毕业后一个月就能全部赚回来,但是如果浪费了,将要用很多时间去弥补,这时候你已经落后于别人很多了!


虽然我去做项目也能锻炼自己的能力,但是时机不对,如果大三去做那么没问题,但是在临近毕业之际去做,这就是不理智的。



学生时代,对于项目我们是没有风险把控能力的,也不清楚项目的流程,所以能赚到钱的几率不大!


我浪费了三四个月的时间去做一个项目这是不理智的,首先单干很有局限性,因为独木不成舟,你很多东西考虑不到位,所以会有很多漏洞。


还有你不能学习优秀的人的逻辑,实际上你是处于一个封闭的状态。


我觉得正确的做法是应该找一个不错的公司进去学习,融入团队,这样才能真的学到东西。


天真的是,我当时还想将其打造成一个产品,然后进行创业!


后来想想,自己如果真的投入时间去做了,那么不仅赚不到钱,可能还会饿肚子。


不用说什么不去试试怎么知道。


当你的认知跟不上的时候,你所想的,所做的,基本上都不会成功,不要想着幸运之神降临在你的身上。



那年,我傻逼地把自己定义为自由职业者。


实际上我连边都沾不上,因为没有赚到钱,还谈什么自由,叫“烂账职业者”还差不多。


今天,我们总是去羡慕那些自由职业者每天不用上班也能赚钱,实际上和你看到的不一样。


自由职业者赚到钱的人只有少数,但是都是经历过很多尝试,认知得到飞跃地提升后才成的。


不过可以肯定的是,未来自由职业者会越来越多,个人IP也将在未来大爆发。


布局是我们该做的事。


种一棵树最好的时间是十年前,其次是现在。



以上也就是对于过去的一些反思,我从来不去抱怨过去,只是去思考自己。


因为每一条路都没有对错,只能说很多时候选择大于努力。


路走岔了的时候要及时止损,不要一头黑走到底,这样对自己不好。


对于未来,还是得比较理性去看待,虽然充满各种不确定性,但是很多确定性的东西我们是能看到的。


行文至此,已经凌晨2点!


作者:追梦人刘牌
来源:juejin.cn/post/7306143755585486848
收起阅读 »

为什么前后端都需要进行数据校验?

一、引言 在现代的 Web 应用开发中,前后端数据校验是确保系统安全、数据完整性和用户体验的关键步骤。 通过在前后端各个环节对数据进行验证,我们可以有效地防止恶意攻击、保证数据的准确性,并提高用户满意度。 本文将从以下方面详细介绍为什么前后端都需要进行数据校验...
继续阅读 »

一、引言


在现代的 Web 应用开发中,前后端数据校验是确保系统安全、数据完整性和用户体验的关键步骤。


通过在前后端各个环节对数据进行验证,我们可以有效地防止恶意攻击、保证数据的准确性,并提高用户满意度。


本文将从以下方面详细介绍为什么前后端都需要进行数据校验,以及他们都应该做什么内容。


image.png


二、前端校验的内容


在前端开发中,以下是一些必要的校验,以确保数据的有效性和安全性♘:


graph LR
A(前端开发数据校验)

E(必填字段校验)
F(数据格式校验)
G(数字范围校验)
H(字符串长度校验)
I(数据合法性校验)
B(安全性校验)
C(表单验证)
D(用户友好的错误提示)

A ---> E
A ---> F
A ---> G
A ---> H
A ---> I
A ---> B
A ---> C
A ---> D

style B fill:#FFC0CB,stroke:#FFC0CB,stroke-width:2px
style C fill:#FFA07A,stroke:#FFA07A,stroke-width:2px
style D fill:#FFFFE0,stroke:#FFFFE0,stroke-width:2px
style E fill:#98FB98,stroke:#98FB98,stroke-width:2px
style F fill:#B2FFFF,stroke:#B2FFFF,stroke-width:2px
style G fill:#ADD8E6,stroke:#ADD8E6,stroke-width:2px
style H fill:#E6E6FA,stroke:#E6E6FA,stroke-width:2px
style I fill:#EEDD82,stroke:#EEDD82,stroke-width:2px

1、必填字段校验:对于必填的字段,需确保用户输入了有效的数据。可以检查字段是否为空或仅包含空格等无效字符。


2、数据格式校验:根据字段的预期格式,验证用户输入的数据是否符合要求。例如,对于邮箱字段,可以使用正则表达式验证邮箱格式的正确性。


3、数字范围校验:对于数字类型的字段,确保其值在指定的范围内。例如,年龄字段应该在特定的年龄范围内。


4、字符串长度校验:对于字符串类型的字段,验证其长度是否在允许的范围内。例如,密码字段的长度应该在一定的范围内。


5、数据合法性校验:根据业务规则验证数据的合法性。例如,检查用户名是否已被注册,或者验证产品ID是否存在于产品列表中。


6、安全性校验:防止潜在的安全漏洞,如跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。通过对用户输入的数据进行转义或过滤,确保不会执行恶意脚本或受到伪造的请求。


7、表单验证:对于表单提交,对整个表单进行验证,而不仅仅是单个字段的验证。确保所有必填字段都填写正确,并且数据符合预期的格式和要求。


8、用户友好的错误提示:当用户输入无效数据时,展示清晰和有意义的错误提示信息,帮助用户理解并纠正错误。



前端开发中的必要校验,可以保证用户输入的数据的准确性、合法性和安全性。同时,这些校验也有助于提供良好的用户体验和防止不必要的错误提交到后端。



三、后端接口校验的内容


在接口开发中,以下是一些必要的校验,以确保接口的数据有效性和安全性♞:


graph LR
A(接口开发数据校验)

B(参数完整性校验)
C(参数格式校验)
D(数据合法性校验)
E(数据范围校验)
F(权限验证)
G(输入验证和安全性校验)
H(数据一致性校验)
I(返回结果校验)


A ---> B
A ---> C
A ---> D
A ---> E
A ---> F
A ---> G
A ---> H
A ---> I

style B fill:#FFC0CB,stroke:#FFC0CB,stroke-width:2px
style C fill:#FFA07A,stroke:#FFA07A,stroke-width:2px
style D fill:#FFFFE0,stroke:#FFFFE0,stroke-width:2px
style E fill:#98FB98,stroke:#98FB98,stroke-width:2px
style F fill:#B2FFFF,stroke:#B2FFFF,stroke-width:2px
style G fill:#ADD8E6,stroke:#ADD8E6,stroke-width:2px
style H fill:#E6E6FA,stroke:#E6E6FA,stroke-width:2px
style I fill:#EEDD82,stroke:#EEDD82,stroke-width:2px

1、参数完整性校验:确保接口所需的参数都被正确传递,并且没有缺失。对于必需的参数,如果缺失则返回错误提示。


2、参数格式校验:根据接口定义,验证参数的格式是否符合预期要求。例如,对于日期参数,验证其是否符合指定的日期格式。


3、数据合法性校验:根据业务规则验证传入的数据是否合法。例如,检查所传递的ID是否存在于数据库中,或者验证所传递的数据是否满足特定的业务逻辑要求。


4、数据范围校验:对于数值型参数,确保其值在指定的范围内。例如,验证年龄参数是否在有效的年龄范围内。


5、权限验证:对于需要特定权限才能访问的接口,进行权限验证是必要的。确保只有具有足够权限的用户或系统可以调用接口。


6、输入验证和安全性校验:防止潜在的安全漏洞,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。对于用户输入的数据,进行输入验证和数据过滤,避免执行恶意脚本或受到伪造请求的影响。


7、数据一致性校验:在接口涉及多个数据对象之间存在关联关系时,进行数据一致性校验是必要的。确保相关数据之间的关联关系和依赖关系得到维护和满足。


8、返回结果校验:验证接口返回的结果是否符合预期的格式和内容。确保返回的数据结构和字段与接口定义一致,并且符合预期的数据类型和值。



接口开发中的必要校验,可以保证接口传输的数据的准确性、合法性和安全性。这些校验有助于防止无效数据进入系统,确保接口的正常运行和处理有效和合法的数据。同时,它们也为调用方提供了清晰的错误信息和可靠的返回结果。



四、前端和接口双重校验的意义


在开发中,前端和后端各自对数据完整性校验都有重要的意义。前端和后端都需要对数据完整性进行校验,以确保系统中数据的准确性和一致性。


下面简述一下它们的作用和意义(包含但不仅仅是这些)。


graph LR
A(双重校验的意义)

B(前端校验的意义)
C(后端校验的意义)

D(用户体验)
E(减轻服务器压力)
F(安全性保障)
G(数据一致性)


A ---> B
A ---> C

B ---> D
B ---> E

C ---> F
C ---> G


style B fill:#FFC0CB,stroke:#FFC0CB,stroke-width:2px
style C fill:#FFA07A,stroke:#FFA07A,stroke-width:2px
style D fill:#FFFFE0,stroke:#FFFFE0,stroke-width:2px
style E fill:#98FB98,stroke:#98FB98,stroke-width:2px
style F fill:#B2FFFF,stroke:#B2FFFF,stroke-width:2px
style G fill:#ADD8E6,stroke:#ADD8E6,stroke-width:2px

4.1 前端对数据完整性校验的意义




  • 用户体验:前端数据完整性校验可以在用户输入数据时即时进行验证,提供即时反馈和错误提示,帮助用户更快地发现和纠正错误,提升用户体验。




  • 减轻服务器压力:前端数据完整性校验可以在数据发送到后端之前就进行校验,减轻后端服务器的负担。这可以防止无效或错误的数据被发送到服务器,减少不必要的网络流量和服务器资源消耗。




4.2 后端对数据完整性校验的意义


安全性保障:后端数据完整性校验是最终的防线,用于确保数据的完整性和一致性。即使前端校验可能被绕过或篡改,后端校验可以提供最终的保障,避免恶意操作和数据破坏。


数据一致性:后端数据完整性校验可以验证数据的正确性和一致性,确保符合业务规则和约束。这对于多个前端渠道或多个客户端同时访问后端数据的情况尤为重要,可以防止不符合规定的数据进入系统,保持数据的准确性和一致性。


五、总结


前端和后端各自的数据完整性校验是相辅相成的。前端校验可以提供即时反馈和优化用户体验,减轻后端服务器压力;后端校验是最终的安全防线,确保数据的完整性和一致性。通过前后端的数据完整性校验机制的结合,可以提供更可靠和安全的应用程序。



希望本文对您有所帮助。如果有任何错误或建议,请随时指正和提出。


同时,如果您觉得这篇文章有价值,请考虑点赞和收藏。这将激励我进一步改进和创作更多有用的内容。


感谢您的支持和理解!



作者:竹子爱揍功夫熊猫
来源:juejin.cn/post/7306045519099658240
收起阅读 »

全球接近八成的开发人员正在考虑新的岗位

Stack Overflow 进行的一项调查显示,79% 的开发人员要么正在积极寻找新的工作机会,要么对这个想法持开放态度。这些发现标志着与前几年相比有了显著的增长,表明开发人员探索新的职业道路和挑战的趋势越来越大。 这项调查得到了全球 1000 多名开发者的...
继续阅读 »


Stack Overflow 进行的一项调查显示,79% 的开发人员要么正在积极寻找新的工作机会,要么对这个想法持开放态度。这些发现标志着与前几年相比有了显著的增长,表明开发人员探索新的职业道路和挑战的趋势越来越大。


这项调查得到了全球 1000 多名开发者的回应,也揭示了行业内其他有趣的模式。


一个引人注目的发现是,新技术人才和职业后期开发人员之间出现了分歧。这两个群体都表现出更倾向于寻求新的职位,这可能是由多种因素驱动的,如入门级职位的稀缺和科技行业缺乏稳定性。


人才的迁移导致了行业的多样化,制造业/供应链和金融服务业出现了技术娴熟的开发者的涌入。


是什么导致考虑跳槽?


该调查还强调了好奇心是跳槽的重要动力,尤其是在职业发展后期。


尽管在所有年龄段的人中,更高的薪水仍然是首要任务,但对其他公司的好奇心成为了一个有力的驱动因素,这表明开发人员的心态正在向更具探索性的职业转变。


灵活性也成为影响开发人员决定继续担任当前角色的一个关键因素。


调查显示,开发者,尤其是44岁及以下的开发者,最看重灵活性。这一趋势与劳动力中观察到的更广泛的模式一致,即员工越来越多地寻求在职业挑战和个人生活之间取得平衡的角色。


人工智能的兴起也在塑造开发者的认知方面发挥了显著作用。70% 的受访者使用或计划使用人工智能工具。开发人员越来越依赖人工智能工具来提高生产力,这可能会导致他们在角色中对持续学习的重视程度下降。


随着科技行业经历这一变革阶段,公司可能需要重新评估其留住顶尖人才的策略。


在竞争日益激烈的就业市场中,提供有竞争力的薪酬同时保持灵活性将是留住人才的关键。


作者:ENG八戒
来源:juejin.cn/post/7305983336497004554
收起阅读 »

还能在互联网行业干多久

随着互联网的迅速发展,互联网行业成为了当今社会最为重要的行业之一。然而,这个行业的发展速度之快,竞争之激烈,让很多人不禁想问:我还能在这个行业干多久?对于这个问题,不同人有不同的回答。有些人认为,互联网行业的发展速度非常快,如果不能跟上这个速度,就会被淘汰。因...
继续阅读 »


随着互联网的迅速发展,互联网行业成为了当今社会最为重要的行业之一。然而,这个行业的发展速度之快,竞争之激烈,让很多人不禁想问:我还能在这个行业干多久?

对于这个问题,不同人有不同的回答。有些人认为,互联网行业的发展速度非常快,如果不能跟上这个速度,就会被淘汰。因此,他们不断地学习新技术、新知识和新技能,以便能够在竞争激烈的市场中立足。另一些人则认为,互联网行业是一个“青春饭”,只有年轻人才有优势,随着年龄的增长,他们的竞争力会逐渐下降。

其实,这两种观点都有一定的道理,但都存在一些片面性。首先,互联网行业的发展速度确实非常快,但并不是所有的技术和知识都需要不断更新。有些技术和知识是基础性的,比如网络协议、操作系统和编程语言等,这些知识和技术是不会过时的,只需要不断地深入学习和理解即可。其次,年龄并不是决定能否在互联网行业工作的唯一因素。虽然年轻人可能更有优势,但是经验和专业知识的积累也是非常重要的因素。一些互联网公司的老员工也能够在公司中立足,就是因为他们有着丰富的经验和专业知识。

那么,如何判断自己还能在互联网行业干多久呢?其实,这取决于个人的情况和选择。首先,需要对自己的技能和知识进行评估。看看自己是否具备了基础性的技能和知识,是否能够跟上行业发展的速度。其次,需要对自己的职业规划和发展方向进行思考。看看自己是否对这个行业充满热情和兴趣,是否愿意在这个行业中长期发展。最后,需要对自己的身体和心理状况进行评估。看看自己是否能够承受高强度的工作压力和长时间的加班。

总之,在互联网行业中工作多久取决于个人的情况和选择。只要具备了基础性的技能和知识,有明确的职业规划和发展方向,并且能够承受高强度的工作压力和长时间的加班,就可以在这个行业中长久地发展下去。

源文地址:https://www.hsor.cn/AC/mbefc-1828.html

收起阅读 »

《十分钟冥想》和《注意力:专注的科学与训练》

最近看了两本关于注意力的书籍《十分钟冥想》和《注意力:专注的科学与训练》,前者是关于冥想训练很不错的一本书,后者则是对注意原理的剖析和训练实践,虽然仅仅只有后三章是关于实践的,但是我觉得也不错。 读完之后,我想把我觉得最打动我的地方分享出来,应该对大家也有启发...
继续阅读 »

最近看了两本关于注意力的书籍《十分钟冥想》和《注意力:专注的科学与训练》,前者是关于冥想训练很不错的一本书,后者则是对注意原理的剖析和训练实践,虽然仅仅只有后三章是关于实践的,但是我觉得也不错。


读完之后,我想把我觉得最打动我的地方分享出来,应该对大家也有启发。先前朋友问过我一个问题,他说我每天工作的时候能集中注意的时间大概是多久,我说大概只有三个小时,当我细细的考虑这个问题时,真的觉得是有些恐怖的,你想我每天可是工作超过 12 小时,但是不得不承认的是,专注的时间确实很少,会经常性地被打断,所以我也在思考,这对我来说,或者我的注意力来说,是不是有点儿问题呢?而且我走神确实挺严重的,我会经常陷入思考,虽然它没有到影响生活的程度,但是我觉得需要调节下注意力,所以我一直在为注意力主题相关的阅读划时间。说多了,进入正题吧:


大家有没有过这样的想法:觉得自己的大脑不应该胡思乱想什么东西,或者它始终都应该是专注的,但是实际上,大脑就是思绪纷飞的,每个人都是。书中讲到了一个观点,我觉得超级贴切,思绪就像是马路上行驶的汽车,而你坐在路边,车子有不同的颜色和不同的尺寸,有时你会被汽车的声音吸引,而有时又会被它们的外饰吸引,你可能会随着它们跑起来,当你跑起来的时候,这就是分神的过程,甚至有时候你会跑到马路中间去指挥交通,但是实际上你并不能阻止想法的出现,它们的出现都是自发的,有时候你在随车跑动时,会意识到自己在做什么,就在此时,你又重新回到路边坐下来,也就是所谓的回过神来了,当你明白了这个,慢慢地不再频繁地跑到路上,而是越来越安心的坐在路边,观察想法的来去时,你的专注程度就变得更好了,所以当发现自己分神时,耐心地,轻轻地提醒下自己,把注意力再拉回来就好,不必有其他的负面想法,这很正常。我们的心其实就像是一片澄澈湛蓝的天空,有时候会被阴云笼罩,我们会想将它们赶走,但是这可能会带来更多纷扰,所谓被压制的,必将再浮上来,其实我们可以搬把椅子,坐看云卷云舒,蓝色的天空会穿过阴云展露出来,当我们不过分的执着于那些阴云时,它会显露的更快,重要的是:无论生活中发生什么事,要相信心中始终都有一份安全和安定。


如果大家想有意识的训练下注意力的话,可以专注在生活中一些事情的细节上,保持足够的好奇心和训练注意力的目标,它们可以是刷牙,刷碗或者做饭等等,观察牙膏的颜色,体会牙膏的味道或者刷碗的泡沫,什么都可以,只要它有你能够专注的点,也可以说成是认真的有意识的去做生活中的每一件小事。书中解释了茶道为什么能够修身养性,在泡茶的各个阶段,投入注意,不管是多么简单的步骤,都耐心地去做,我也确实认可,因为泡茶很厉害的人摆弄那一套茶具就足够“麻烦”了,一般摆弄这些的人确实挺大师的...


最后就是关于日常事务的处理,要善于对它们进行拆分,细化,分成多个小任务,不断地在小的时间范围内保持专注,这让我想到了番茄钟工作法,拆分任务由大化小确实是很不错的一个方法,建议大家在生活和工作中实践。


注意力就像是一头野兽,我们不能强制它,而是要学会驯服它,它也有和我们本身互相牵扯或者说互相理解的一个过程,不要强迫自己,对自己保有耐心。更加的专注我觉得意味着活在当下,享受此刻,它带来的是一份心神的安定,让我们能够回到他人身边,更好的感受生活,最后,就用其中我喜欢的一句话来结尾吧,“在欲念和动荡的世界中冥思得到的精神力量就像火中盛开的莲花,不可摧毁”。


大家周末快乐,早些休息。


作者:方圆想当图灵
来源:juejin.cn/post/7304997932444942345
收起阅读 »

别以为逃离大城市你就能舒适了,小城市可比你想象的内卷!

大家早上好,今天聊一下最近的一些经历和感悟还有回到三线城市的感悟,希望对大家有一定的帮助! 一、我不适合躺,也躺不了 我毕业之后就到了成都,去了一家做基础软件的上市公司,不过我们部门还是属于业务部门,差不多干了两年,因为公司属于比较传统的企业,自然没有互联网的...
继续阅读 »

大家早上好,今天聊一下最近的一些经历和感悟还有回到三线城市的感悟,希望对大家有一定的帮助!


一、我不适合躺,也躺不了


我毕业之后就到了成都,去了一家做基础软件的上市公司,不过我们部门还是属于业务部门,差不多干了两年,因为公司属于比较传统的企业,自然没有互联网的内卷,基本上没什么加班,特别是第二年,基本上没啥事做!


这种情况下我开始意识到了问题,如果再这样呆下去,对自己的发展会很不利,如果部门的业务再推动不了,那么到时候也得面临调整,总之,留与不留对自己大多都是不好的,所以我就准备离开了!


成都在别人的映像中是一个休闲城市,吃喝玩乐,但是那是属于有钱人的,打工人只有辛苦和内卷,我就住在天府软件园对面,每晚软件园里面都是灯火通明的!


二、机缘巧合


不过对于我来说,我已经没有想法继续留在成都了,当时是想去杭州或者深圳,不过在离职完的第二天,贵阳这边的公司就叫我面试,我都不记得是啥时候投的简历!


因为两年来都没有面过试了,所以练练嘴皮子,经过几面后,给了offer,从开始面试到给offer差不多半个月,给了offer后我十来天就去入职了!


从离职后到进去新公司这段时间差不多一个月,我就在成都耍了20来天,一直在做思想斗争,说实话,去一线城市和回故乡这两个抉择是很难做选择的,为什么呢?我表达一下我的观点。


三、我认为的大城市小城市


首先,一线的机会肯定会比小城市的机会多,接触到的人也相对来说比较厉害一点,这样自己的视野也会开阔一点,不过这也要根据自己的能力来看,如果自己本身就啥也不是,那基本上也无缘接触到厉害的人!


其次,一线的人情世故不像小城市那么复杂,特别像深圳这样的城市,大家都是从外面来的,所以来了就是深圳人,包容性比较高,这样的话能够减少一些心理压力,而小城市则不然,因为好一点的单位,保安都会和你吹他家那个亲戚是省里的,不然他也谋不了这个职位,往上就更不用说,哈哈!


所以小城市的人因为地缘原因,就会产生一定的优越感,所以整体下来说,其实是不那么包容的,不那么开放的,在这样的环境下对自己或多或少有一定的影响,当然,大城市也会有,只是相对于小城市来说会轻很多!


以上只是很小的一部分,还有很多就没必要说了!


四、为什么我还要回到小城市


上面也说了因为很快拿到offer,还是在自己的故乡,而且这个企业在贵州省内来说也算比较好,属于本土企业,所以这算是一个因素,还有就是心中有一点想法想回到故土,因为很多时候确实会思念家乡的,所以二者一碰撞,自然给自己顺理成章找了一个理由回来,当然,也可以说是自己无能,这也是没错的!


五、我以为小城市相对来说比较轻松


我并不想把自己的时间都花费在工作上,因为我是一个把生活和工作分得比较清楚的人,现在是这样,以后也是这样!


这边公司是早上9:00晚上5:30,中午休息两小时,所以口头上听着倒是挺舒服,但是当任务压下来,一切美梦都是泡沫。


我来了两三个月了,除了第一个月没加班,后面基本上都加班,周末有时候也来加班,前天晚上还通宵上线了,昨天下午四点过睡醒来,就觉得应该写点什么!


不光是我们公司,我听在这边工作了很久的同事说,大家都差不多这样,所以卷不卷就不用说了。


六、不光是互联网卷,其他的更卷


前天晚上通宵上线的时候,我和几个同事聊天,我说实在干不动了,我准备考公了,他说:“你别想了,我考了那么多次都没上,更别说你连书都没去看过,你拿什么和人家卷!”。


我省内的很多朋友和同学现在都在考公,不过据我所知,基本没几个真的考上了公务员,有些已经毕业很多年,一边上班一边考,有些一毕业就全职考!


不光是考公务员,在贵阳这个地方,做啥工作都卷,用他们的话说,你去当销售,不打满五百个电话你出不来!


没错,小城市的卷是你想不到的,我们常说大城市太卷了,大城市虽然卷,但是机会多,薪酬高一点,而小城市不但机会少,而且薪酬也少,但是人多,特别对于贵阳这种城市,经济比较落后,做生做死三千几真的不是开玩笑的!


七、后悔了吗


我想说,一点也不后悔,虽然之前在成都很轻松,但是那不是我想要的,现在很忙,也累,不过也不是我想要的,那么这不是自相矛盾了吗?其实一点都不矛盾!


我始终觉得,如果你脑子里觉得你这辈子只有靠打工才能赚到钱,那么你将劳累一辈子!


现在打工对于我来说更多是积淀经验,养活自己,我不会迷失自己的,我清楚自己想要过什么生活,做什么样的人,加之我这个人的物质欲望比较低,所以我不会把自己活得很累,而是把钱和时间更多的用在提升自己和丰富自己上面!


八、建议


我想说人各有志,每个人所追求的人生不一样,每个人的欲望不一样,所以无论去一线还是小城市都没有真正的对与错!


首先对于我来说,我上面已经表达过,我对物质的欲望比较低,我是没多大的欲望,但是我很爱钱,我想做其他的事,发展其他的,所以对我来说,去任何一个地方的区别都不是很大,无非钱多点少点!


不过对于刚离开学校的朋友,如果想在职业生涯有所建树,并且家里条件不怎么好的,没啥背景资源的,尽量去一线城市,即使赚不了钱也长长见识,如果可以的话,尽量去互联网企业,别去传统行业,因为对自己的发展会比较不利!


如果一毕业就回到自己的那个小地方,那么就可能一辈子都出不来了,当然,如果有能力在自己的家乡混得风生水起,那么是真的牛逼,不过对于没啥资源背景的,基本上可能性不大!


九、最后


现在这个环境真的很严峻,各个行业都很难,真的很卷,所以无论一线还是十八线都一样,普通人想躺平基本上不可能!


对于我们来说,无论处于什么样的环境,都不要过于依赖它,不要故步自封,一定要保持思想活跃,有居安思危的意识,做好准备,这样才能保证在时代的浪潮中不被拍打得遍体鳞伤!


最后借用一句话:


人生成长最有效的方法,就是无论命运把你抛在任何一个点上,你就地展开做力所能及的事情


作者:刘牌
来源:juejin.cn/post/7288603764264075316
收起阅读 »

杭州程序员打工的一天

关于早晨 8:40 闹钟搅乱我一池美梦,手伸出去探手机,窝在被子里睁开惺忪的双眼扫了一眼手机,略刷个十分钟强制让自己开机,家人们这种痛苦谁能懂? 8:50 起床洗漱换衣服 9:10 戴上耳机就出门,骑着我的小毛驴一边听音乐一边拼命赶路。P.S. ...
继续阅读 »

关于早晨



  • 8:40 闹钟搅乱我一池美梦,手伸出去探手机,窝在被子里睁开惺忪的双眼扫了一眼手机,略刷个十分钟强制让自己开机,家人们这种痛苦谁能懂?


1101700819100_.pic.jpg




  • 8:50 起床洗漱换衣服




  • 9:10 戴上耳机就出门,骑着我的小毛驴一边听音乐一边拼命赶路。P.S. 今天循环了一整天阿梨粤的《晚风心里吹》




  • 9:30 每天都庆幸踩点到,然后刷脸打卡




  • 9:35 开始洗杯子接水坐在工位前开启今天一天的工作




1121700819101_.pic.jpg



  • 11:40 结束上午工作,骑上我的小毛驴准备回家


关于中午



  • 11:55 到家,不太想吃外卖,所以到家开始简单弄点吃的


1091700819099_.pic.jpg




  • 12:05 全身心放松下来,一边干饭一边刷剧(最近迷恋韩剧,顺便学点韩语)




  • 12:25 准备午睡,抱着🐱睡大约1h




  • 13:20 带上耳机骑上我心爱的小毛驴穿梭蒋墩路




  • 13:40 准点到公司,开启下午的工作(偶尔,不小心睡过头就是两点到)




1071700819098_.pic.jpg



  • 15:00 下午茶,顺便瞄一眼基金(惨不忍睹,我真想哭😭)


1.jpg



  • 18:40 结束一天工作,over~


关于晚上



  • 19:00 到家,瘫着,然后跟🐱互动,最后顺便铲下💩,🤮


WechatIMG126.jpg




  • 19:40 开启扫地机开始打扫,同时开始洗香香🧼




  • 20:20 晚上一般不吃饭,一边看韩剧一边干点零食




  • 22:20 学韩语大约半小时




1051700819097_.pic.jpg




  • 22:50 刷牙洗脸,躺床上思考人生,顺便YY自己暴富的场景




  • 23:00 大约这时就进入梦乡了,开始做暴富的梦~




结尾


日子就在这种平凡且无趣的时光里一天天缓缓度过。相对来说,我的生活比较轻松,压力也比较小,但是我也有在试图学些什么来打破这“温水煮青蛙”的生活,比如:学习别国语言,尝试去写作来记录我平凡乏味的生活。怎么说呢?不管怎样,也许从我踏出第一步的时候就已经算是小小的成功了吧!共勉~


1111700819100_.pic.jpg


作者:落完这场雨
来源:juejin.cn/post/7304888432735617064
收起阅读 »

大部分公司都是草台班子,甚至更水

我第一份实习是在一家咨询公司,我以为我们能够给我们的客户提供极具商业价值的战略指导,但其实开始干活了之后,发现我们就是PPT和调研报告的搬运工。后来我去了一家互联网大厂,我以为我的身边全都是逻辑超强的技术和产品大佬,直到我们的产品带着一堆的bug上线了.......
继续阅读 »

我第一份实习是在一家咨询公司,我以为我们能够给我们的客户提供极具商业价值的战略指导,但其实开始干活了之后,发现我们就是PPT和调研报告的搬运工。后来我去了一家互联网大厂,我以为我的身边全都是逻辑超强的技术和产品大佬,直到我们的产品带着一堆的bug上线了......


大四秋招的时候,我跟一个应届生一起面试,他简历上写了精通数据分析,还有很多获奖。我当时很羡慕他的能力,直到一起入职之后发现他只会用Excel......


刚从学生变成打工人的时候,我觉得每一家公司都是一个严丝合缝,非常精密的巨大的仪器,我要达到某一个水平或者有某种资质,我才能够去做一些工作,或者达到一些成就。但后来随着工作久了,我就想明白了一件事情,让我觉得之前的班真是白上了。


其实一个公司它的运营机制,并不是有很多个有远见的领导把规划都想明白,然后再有很多个能力强的下属把这些规划全部落地,这种太理想化了。电影里都没有这么演的。公司的运营机制就是面多了就加水,水多就加面,所有的公司都是大的草台班子。这里边绝大多数的工作,它的粗糙程度都远超过我们的想象。我们根本不用陷入所谓的入场券陷阱,觉得别人都很厉害,别人都是科班出身的,我得像别人一样厉害,一样有资质了,我才能够去做,这只不过是我给我自己设的一个假想敌。


想明白这一点之后,我的焦虑和内耗就好多了。既然大家都很水,那在职场这个大的草台班子上,我如果不去争取机会,那就被还不如我的人抢走了。勇敢的人先享受生活,同样勇敢的打工人也会先当上生活中的主演。


在争取机会的过程中,难免你就会用到一些职场作弊小技巧,就是自我包装。身边就有几个这样的人,敢于勇敢地表现自己,让别人觉得他能够创造很多价值。包装造势在掠夺职场资源的竞争力是非常有效的。


包装的方式分为职业和爱好。在职场上一定不要沉迷那些琐碎的工作中无法自拔,不要显得自己每天都很忙,加班都很晚,效率低下偷懒的人才要加班,不要不满现状,导致不想思考,不要未经选择直接就开始低效率的行动,所以要适当的停下来,寻找自我包装的发力点。


就像我们公司今年越来越重视数据分析,所以我就利用下班的时间多学习了数据分析。包装它肯定不只是一句空话,不然用不了多久就露馅了,所以要找到快速高效的学习方法。


如果你的职业发展方向也是产品运营,市场数据分析类似的岗位,那就要尽早的培养起你的数据分析能力,用好SQL,Python,统计学还有Excel,这些都会帮助你去提取处理和分析数据,再结合上你所在行业的专业知识,技能buff叠加在职场中会非常的加分。


职场里其实并没有那么多很厉害的人,大家都是在现学现卖,反正都是在草台班上演戏,不妨大胆一点去探索新的东西,去尝试你想尝试的,去找到能够把自己包装好的那个点,然后去大大方方的展示和表现自己。


作者:程序员Winn
来源:juejin.cn/post/7304867278566899764
收起阅读 »

Console党福音!封装 console.log 再也不用打注释了!

背景 大家好~, 我是刚入职场不久的前端小帅,每周分享我的一丢丢想法,希望能够帮助到大家~ 众所周知,console在项目开发调试中是不可或缺的,在日常工作中经常会使用到它,但使用多了之后会发现,虽然它足够短小精炼,但耐不住用的多,再加上注释指示,工作量隐约还...
继续阅读 »

背景


大家好~, 我是刚入职场不久的前端小帅,每周分享我的一丢丢想法,希望能够帮助到大家~


众所周知,console在项目开发调试中是不可或缺的,在日常工作中经常会使用到它,但使用多了之后会发现,虽然它足够短小精炼,但耐不住用的多,再加上注释指示,工作量隐约还是不小的(懒惰,因此我对它进行小小的封装,让它用起来更短更方便,分享给大家,希望能够对大家开发有所帮助


优势



  • 面向 Vue2

  • 拒绝通用的注释打印

  • 针对对象值自动序列化

  • 支持一行输出 N个变量打印

  • 支持输出data变量和局部变量

  • 支持限制特定页面输出变量

  • 更短的函数名


示例:


data() {
return {
joker: 'jym',
handsomeMan: 'me',
info: {
job: {
name: '专业炒粉'
}
}
}
},
methods: {
getJoker() {
const demo = 'test'
this.$c('joker', 'handsomeMan', 'info', 'info.job.name', { demo }) //输出语句
}
}

输出结果:

image.png


**是的,只需要一行代码!!! **


是的,只需要一行代码!!!


(如果是原来的console.log打印 光想就已经累了......)


封装


接下来看看是如何封装的吧~


方法名再短点!


// main.js
Vue.prototype.$c = function() {...}

因为要全局使用,因此直接挂载到 Vue 的原型对象上,这样各个组件里都能通过this.$c()进行调用


传参与打印



如何访问对应Vue实例的数据



因为我们需要访问this.xxx, 获取到this指向必不可缺,因此结合this的小知识,封装的函数必须是普通函数而不是箭头函数,这样在vue实例中调用时this.$cthis会指向Vue实例自身,我们就可以访问this下的数据啦~



传参



参数肯定需要支持多个,数组冗余了 ,直接扁平化输入

再结合Vue里是通过this.xxx获取数据,可知我们传入的需要是字符串

可得步骤



  • 传入多个待打印的变量名

  • 遍历每个变量名

  • 通过 this变量名 获取到data里的值

  • 判断是否为对象,分别处理

  • 打印

  • over


// main.js
Vue.prototype.$c = function(...words) {
words.forEach(word => {
const val = this[word]
if (Object.prototype.toString.call(val).slice(8, -1) === 'Object') {
console.log(`${word} ======> `)
console.log(JSON.stringify(val, null, 2))
return
}
console.log(`${word} ======> `, val)
return
})
}

对于对象类型的变量,通常我们需要获取实时的对象,直接console.log(obj), 但这样获取的obj通常不是准确的值,想要获取实时的值则需要调用console.log(JSON.stringify(obj, null, 2))通过json字符串化打印实时的值



什么?JSON.stringify后面两个参数是干嘛的?



我TM直接就是一个


参数一 接收 函数或数组,用来转换过滤对象

参数二 接收 数字或字符串,用于指定缩进的空格数或缩进字符串


示例:


const obj = {
name: 'mach',
age: 24,
sex: 1
}
console.log(JSON.stringify(obj, ['name', 'age']))
// {"name":"mach","age":24}

console.log(JSON.stringify(obj, ['name', 'age'], 2))
// {
// "name": "mach",
// "age": 24
// }

OK, 这个时候我们进行打印测试一下


//xxx.vue
data() {
return {
name: 1,
age: 2,
obj: {
name: 'mach',
age: 24,
sex: 1
}
}
},
created() {
this.$c('name', 'age', 'obj')
}

image.png


这时候看看效果,注释有了!变量的值也有了!


局部变量


现在能够访问Vue实例的值了,那少不了局部变量。

问题来了,访问Vue实例是应用了this指向,那局部变量该怎么获取到呢?


最核心的肯定获取是局部变量的执行上下文


呃呃呃呃呃 闭包? eval 试了一下貌似都不行


呃呃呃 , 有了,就是你了!


// xxx.vue
methods:{
getList() {
const joker = 'you'
}
}
this.$c({ 'joker': joker })

高端的食材,往往只需要最朴素的烹饪方式~

忙碌了两小时之后,小师傅开始传入对象


直接用对象传变量名和变量值!


// 简写
this.$c({ joker })

瞧瞧 { joker } 同样很短小,非常适合开发,美吱吱~~


于是函数长这样,对局部变量和Vue data里的变量做区分:



  • 判断 对象 则是局部变量

  • 判断 字符串 则是vue实例数据


Vue.prototype.$c = function(...words) {
words.forEach(word => {
if (typeof word === 'string') {
const val = this[word]
if (Object.prototype.toString.call(val).slice(8, -1) === 'Object') {
console.log(`${word} ======> `)
console.log(JSON.stringify(val, null, 2))
return
}
console.log(`${word} ======> `, val)
return
}
const [name, value] = Object.entries(word)[0]
if (Object.prototype.toString.call(value).slice(8, -1) === 'Object') {
console.log(`${name} ======> `)
console.log(JSON.stringify(value, null, 2))
return
}
console.log(`${name} ======> `, value)
})
}

使用


// xxx.vue
methods:{
getList() {
const joker = 'you'
this.$c('name', 'age', 'obj', { joker })
}
}

image.png


Perfect ~


指明位置及套个漂亮显眼的框


对了,因为$c的函数是定义在main.js里的,因此控制台打印会显示是出现在main.js


image.png


解决办法就是在壳里加个 this.$options.name,指明调试语句来自哪个组件

再给打印区套个漂亮的壳,便于做区分


Vue.prototype.$c = function(...words) {
console.log(`来自${this.$options.name}-🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉`) // 新增
words.forEach(word => {
if (typeof word === 'string') {
const val = this[word]
if (Object.prototype.toString.call(val).slice(8, -1) === 'Object') {
console.log(`${word} ======> `)
console.log(JSON.stringify(val, null, 2))
return
}
console.log(`${word} ======> `, val)
return
}
const [name, value] = Object.entries(word)[0]
if (Object.prototype.toString.call(value).slice(8, -1) === 'Object') {
console.log(`${name} ======> `)
console.log(JSON.stringify(value, null, 2))
return
}
console.log(`${name} ======> `, value)
})
console.log('🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉')
}

测试打印结果:


image.png


圆满结束啦


访问嵌套属性的值


还有嘞 ~ 有人问,刚刚只是访问变量第一层,如果只想访问变量的第n层怎么办?


很简单,核心就是嵌套调用~


const val = this[word]

改成


const val = word.split('.').reduce((pre, cur) => {
return pre[cur]
}, this)

这个时候通过 xxx.xxxx.xx 就可以访问Vue实例下数据的值啦~


data(){
return {
obj: {
name: 'joker'
age: 24
}
}
}
this.$c('obj.age', 'obj.name')

image.png

这里xxx.xxxx.xxxxx|xxxx|xxxxx-xxxx-xx没啥区别,就是做分割罢了,但用.好分辨点贴近开发


解决完Vue实例下数据的嵌套访问,这时候有人会问,访问局部变量的嵌套属性咋办


Emmm 好问题 , 转动我的机灵小脑袋~~~~~ 有了!!!


const obj = {
accont: {
xx: {
id: 11,
name: 'rich'
},
money: 10086
}
}
const xx = obj.accont.xx // 新增

// 调用
this.$c({xx})

高端的食材,往往只需要最朴素的烹饪方式 ~


const joker = {
info: {
name: 'jym',
age: 18,
height: 185
}
}
const name = joker.info.name
this.$c({ joker }, { name })

image.png


这样纸代码看起来也清晰嘛~ 嗯,针不戳


限制特定页面输出变量


假设我现在只需要path1path2的页面输出变量,关闭其他页面的输出,咋做嘞~


简简单单,咱已经拿到指向Vue实例的this,可以直接访问当前路由地址和名做一下限制即可


在函数开头加上


Vue.prototype.$c = function(...words) {
const whitelist = ['path1', 'path2']
const currentPath = this.$route.path

if (!whitelist.includes(currentPath)) return
......
}

现在就只有path1, path2的页面下的组件可以输出啦,是不是很方便呢?


只有 Vue2 可以这么封装吗?


虽然这个封装的代码是面向 Vue2, 但很显然封装的核心对于Vue是通用的,把this换成组件实例即可,如Vue3里是this(选项式) 或者 getCurrentInstance()(组合式),至于React,就只能朴素一丢丢喏(你懂得)


代码 没写 我就不贴了


集帅们 也可以把代码打在评论区,供参考借鉴~~


总结


全部代码:


Vue.prototype.$c = function(...words) {
const whitelist = ['path1', 'path2']
const currentPath = this.$route.path
if (!whitelist.includes(currentPath)) return

console.log(`🎉🎉🎉🎉🎉🎉🎉🎉来自-${this.$options.name}-🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉`)
words.forEach(word => {
if (typeof word === 'string') {
const val = word.split('.').reduce((pre, cur) => {
return pre[cur]
}, this)
if (Object.prototype.toString.call(val).slice(8, -1) === 'Object') {
console.log(`${word} ======> `)
console.log(JSON.stringify(val, null, 2))
return
}
console.log(`${word} ======> `, val)
return
}
const [name, value] = Object.entries(word)[0]
if (Object.prototype.toString.call(value).slice(8, -1) === 'Object') {
console.log(`${name} ======> `)
console.log(JSON.stringify(value, null, 2))
return
}
console.log(`${name} ======> `, value)
})
console.log('🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉')
console.log('')
}

优势



  • 无需通用的注释打印

  • 支持限制特定页面输出变量

  • 针对对象值自动序列化

  • 支持一行输出 N个变量打印

  • 支持打印data变量和局部变量

  • 更短的函数名


总的来说,这个封装主要是我在项目console烦了,特别是加上注释和对象json序列化,于是这几天蚌埠住了,整了这个封装,总的来说我觉得效果是不错滴,一行顶之前 N 行, 不用加注释,也不需要该死的 JSON.stringify(xx, null, 2)


但是特殊打印就回归正常 console.log 哦, 没必要封装太深入


希望能够帮助到那些和我一样的console党~ (wink), 觉得有帮助可以点赞关注一下我喔~~~


往期奇思妙想:


《这个前端Api管理方案会更好?》

《这个前端Api管理方案会更好?(二)》


作者:爱吃好果汁丶
来源:juejin.cn/post/7300122001768071168
收起阅读 »

工作一年多,聊聊校招程序员晋升与涨薪的秘密

成年人的世界里,要尽量改掉只要如何就能如何这种思维,因为万事没有绝对。但我认为,有些事情,依旧可以摸索出一些规律,或者说给我们一些启发。 早在入职公司之前,我就在思考,要怎样才能实现快速晋升呢?为此我也做了很多努力,比如工作上非常认真,技术成长上非常积极,但这...
继续阅读 »

成年人的世界里,要尽量改掉只要如何就能如何这种思维,因为万事没有绝对。但我认为,有些事情,依旧可以摸索出一些规律,或者说给我们一些启发。


早在入职公司之前,我就在思考,要怎样才能实现快速晋升呢?为此我也做了很多努力,比如工作上非常认真,技术成长上非常积极,但这并不代表我能以超常的速度进行晋升。当我工作一年多被现实教育之后,停下来,回头看,会发现一些观念并不正确。所以我想聊聊作为校招程序员(工作经验0-2年的程序员),这期间我观察到的关于晋升与涨薪的秘密。


绩效在分活的时候已经决定


脉脉上经常有人提到这句“你的绩效不是360之后定下来的,而是分活的时候就已经决定了”,看似暗黑,实则真实。


第一种情况是按劳分配。 对于一个开发团队来说,假设有一批校招生入职,你作为领导会怎样分活呢?以我之前的经验举例,我当时在一个大前端部门,支持近千人的大部门的前端开发需求。这种情况下,很难说谁支持的业务更好。因为大家都是随时可以被分配出去的资源,哪个业务发展的好,哪个业务发展的差,其实与你无关。


然而,虽然业务实际的发展与我们无关,但不同业务的工作量是不同的,这一点在分活的时候其实很难评估。就导致部门内可能忙的忙死,闲的闲死。尽管作为大前端部门,可以相互支援,但执行起来并没有那么简单。A业务整体的运转由小a同学负责,那小b同学去支援,就需要重新熟悉上下文,再去参与开发。如果这个需求不大不小,那叫一个新的人进来支援可能反而拖累效率。


所以在每周进度同步的时候,就有人需要加班,但有人不需要。这一点领导心中有数,在评定绩效,评估调薪的时候也会给予倾斜。


在这种情况下,只要你分到了一个忙碌的活,就能享受加班费,和不错的绩效和调薪。所以在企业里也不要羡慕事情少的同学,钱也会少。


还有一种情况就是工作量已知,但是含金量不同。 这种往往让人心里不服气,凭什么好的活领导就是不分给自己?这种我很难评价,但需要思考一下:



  1. 我的能力是否已经让团队领导放心,是否建立了充足的信任? 如果领导不信任我,自然不可能分配高价值的活过来。建立信任也是一个漫长的过程,日久见人心,需要长期的保持高质量产出,并且要让领导了解自己的辛苦付出。

  2. 我是否有和领导表达过我想承接更多需求的意愿? 如果没有,日理万机的领导也很难照顾到每一位同学,因此要主动多沟通。机会是自己争取来的,不要抹不开面子。

  3. 团队内的资源是否充足,是否已经到了需要争抢的阶段? 不可否认,不是每个部门都处于上升期,有些部门发展空间大,需要的人多,有些部门反之。但需要先梳理清楚是不是自己真的就没有问题了。


投机不如专心做事


这一点我只能谈我在字节的感受,因为我知道在腾讯不同部门的年终奖差N倍。但是在字节,给我的个人感受是更平衡。不会因为你在最赚钱的部门,就能拿到相比新业务的超额回报。


这种机制,有效的保护了公司的人才分布,不然最优秀的人才一定会被最赚钱的部门吸干。


所以对于校招程序员来说,与其思考要不要跳去一个当红炸子鸡部门,不如在当前部门好好打磨,好好思考业务价值,做到更好。


当然,也要看业务机会。你的业务是成长期还是瓶颈期,卷不卷?在成长期的业务,你会感受到朝气蓬勃,有非常多事情可以做,涨薪以及前景都很让人满意,也能遇到更多有挑战的机会。但具体处在哪个业务,作为校招生,其实没有这个眼光,完全看运气,投机成功的概率并不大。


接受排队晋升的规则


在目前的环境下,DDDD。不能用以前的眼光来衡量今天的晋升,还想着那么容易,那么迅速。


我知道有很多培训班都在卖类似《大厂P6直通车》之类的课程,给你一个学完立马能晋升大厂P6的幻想。然而,还是擦干口水,醒醒……


按照现在明面上的晋升要求,很多同学早就能达到,但未必给升。晋升名额非常有限,需要一个一个来。


按理说,职级代表的是武功,体现的是你的能力水平。绩效代表的是苦功,是你的实际产出水平。但现在职级越来越两者都要,不仅仅你要能力强,还得产出多。光有技术远远不够,要有足够的业务价值。


抛弃快速晋升的幻想,主动和领导聊,表达意愿,的同时,做好眼下的事情。相信晋升终将会在意料之外的一天发生。


高绩效的秘密


绩效最终是领导评定的,所以想要高绩效,一定要搞清楚领导最在意的点是什么?直接去和领导谈即可,毕竟自己想也未必想得正确,揣摩圣意也很累。


沟通好目标,确定好方向之后,认真去做。及时暴露风险,遇到很难解决的问题带着自己的思考及时申请援助,不要拖到暴雷了才沟通。


当然完成这些,可能依旧是中等绩效。所以在这过程中,需要挖掘出流程上,业务上可以优化的地方,适时抛出新的见解与思考。并且得到的好评等等,都可以冲击更好的绩效。


薪酬与公平


校招程序员在工作头2-3年的工资差异往往是因为进了不同的公司导致的。比如进了大公司,整体起薪就会相对高。但如果想在同一个团队内部,获得超额回报很难。在同一个团队内部的校招程序员,往往是按照同一尺度招聘进来的,人才评估标准也相同。因此就算开出了不同级别的offer差别也不会太大,这和团队预算也有关。


同部门的,工龄3年内都不会拉开过大的差距。所以在部门内如果你获得涨薪,如果职位没有提升,大概率团队内的其他人也会同步或异步一起涨,最终差距依旧不大。


所以如果爱这行,就长期奋斗,让K值更大一点点,着眼于长期获得更大的回报。


作者:程序员Alvin
来源:juejin.cn/post/7293402777878249499
收起阅读 »

自由职业的好与坏:谈谈我的真实感受

回家自由职业八个多月了,有很多很多和上班不一样的感受。 最近心态算是平稳了,打算把这些写下来。 当然,感受这个东西很主观,每个人都不一样,所以没普适性,看看就好。 整体来说,自由职业有好有坏。 陪家人时间变多了 回家自由职业第一个好处就是陪家人的时间多了很多很...
继续阅读 »

回家自由职业八个多月了,有很多很多和上班不一样的感受。


最近心态算是平稳了,打算把这些写下来。


当然,感受这个东西很主观,每个人都不一样,所以没普适性,看看就好。


整体来说,自由职业有好有坏。


陪家人时间变多了


回家自由职业第一个好处就是陪家人的时间多了很多很多,之前在一线城市打工,我都是过年的时候回家待几天,甚至国庆我都不愿意回家。


那时候接收到家人的消息就是通过电话聊下最近遇到的事情,帮忙出出主意之类的,就像是以一个旁观者的身份在听故事。


而现在我们是在一起经历着这些事情,比如今天上午我妈骑车带我去银行办了一些业务,比如我们会讨论快餐店的哪个咸汤好喝。


这些鸡毛蒜皮的小事,就是生活本身。


在老家陪着家人一起生活,会让我有种踏实感,因为我的根就在这里。


收入焦虑带来的效率不增反降


说实话,自由职业注定会面临一些焦虑,因为之前打工的时候,只要每天按时上下班,每月就能收到工资。


比如之前 30 号中午会收到银行卡工资到账的消息。


而现在这种稳定的收入没有了。


虽然我写东西是能赚到钱的,但现在写东西和之前写东西心态就不一样了。


现在会感觉玩游戏、看小说、刷短视频,都会有负罪感。


一天过去如果啥也没写,就会焦虑。


而这种焦虑反而会让我产生逃避心理,会更多的去玩游戏、看小说、刷短视频。


所以我自由职业后的产出是不增反降了不少。


之前平均每周 3 篇左右的技术文章,现在可能就一篇,而且小册更的也不快。


我最近在有意识的戒掉这些,所以好多了。


有人说当你存款到一定的程度就没这种焦虑了,可能吧,但我还没解锁这个前提。


脱离工作场景后技术成长变慢


工作的时候,做一个个需求,你会遇到各种问题,而解决这些问题的过程中,你会发现一些新的知识,或者对一些技术会有一些新的研究。


而这些其实就是技术成长,也是我之前写文章的重要来源。


但自由职业后就不会自然的收获这些技术成长,需要你刻意的去研究一些东西,而且可能不会有太深入细节的场景应用。


这也导致了我经常不知道写什么。


这也是我文章更的少了的一个原因。


可以自由利用时间做你想做的事情


说了好几个自由职业的缺点,再来讲几个优点。


自由职业有大把时间去研究你感兴趣的一些东西。


比如 Nest 和后端技术栈,我在上次换工作后就很少有机会涉及了,也没时间去做各种实践。


而现在可以花大量时间在这些东西上,短时间内就可以把它研究到一定的程度。


可以自由利用自己的时间,这个还是挺过瘾的。


复利会让你后期起飞


说实话,其实我的收入在自由职业之后是下跌了不少的。


单看收入的话,为什么还要继续呢?


其实写文章、写小册这种事情是有积累效应的,会一直产生复利。


比如我很久之前写过的文章,每天还会有人会阅读点赞


比如我去年写的调试小册,前几天双十一还卖了好几百份


这些会一直源源不断增加我的影响力。


而且会慢慢就会有更多人期待我的下一篇文章、下一本小册。


我现在写了 300 篇文章,还算是有小小的影响力,那如果我再写 500 篇、1000 篇呢?


现在我每本小册平均销量在 5500,那如果我再写 5 本、再写 10 本呢?


只有对这个方向有热情,就是可以长期做下去的,这就是很多人说的相信长期价值。


而且国内程序员还有 35 岁问题,但当你能不靠公司独立获取一定程度的收入,这种问题就会消失。


所以我根本不迷茫 35 岁以后能干啥。


我之前说的想写一辈子技术文章也不是说说而已。


与收入有关的一些问题


很多人关心我收入的问题,那我就来细说下这方面。


我获取收入的方式主要是公众号广告和小册。


公众号广告一个 1000,我大概一个月接 3、4 个,这些够我生活费用了。


感谢印客学院的负责推广的小姐姐,人很 nice。


很多人会反感广告,但你让一个人靠爱发电去写 300 篇技术文章也不现实。


所以,这个就当作很自然的事情就好了。


小册这个,确实有点难受。


比如我的 nest 小册,单看毛收入,是 50 万。


但是扣税 20%、平台分成 30%,加上去掉各种 7 折、 5 折活动、再去掉分销的返现。


能到手一半就不错了。


我最近听朋友说小鹅通这种就没有分成,而且当天打钱,差不多你卖了 50 万能到手 49 万。


类似的,知识星球、小报童等等这些平台,都差不多收入多少到手多少。


所以说,在掘金或者其他平台上出课,有好有坏吧。


要不要交社保


打工的时候公司给交社保,自由职业后就没公司给交了,要不要自己交也是个问题。


这个问题也是自由职业肯定会面临的。


据说社保里有用的就是医保,可以报销医疗费,但我感觉用不大到。


再就是养老保险要交满 15 年社保,我也就交了 5 年多,要不要自己再交 10 年我还没想好。


目前我还没自己交过。


脱离社会的游离感


自由职业之后,不再有固定的上下班时间,不用定闹钟,感受不到周一的痛苦、周五和周末的快乐。


没有这种周的概念,会感觉每天都差不多,时间过的特别快。


而且自己一个人在家里写东西,没有同事、领导等交流,没有团建。


你会有种脱离社会的游离感。


可能喜欢交际的人受不了这种,但我还好,我还是挺喜欢一个人的状态的。


不过感觉不到周和周的界限这个,确实会让我感觉生活少了一些东西,过于平淡了。


小县城没有夜生活和小众圈子


小县城是没有夜生活的,我们这最大的超市 9 点就关门了。


10 点的时候,整个城市差不多就都睡了。


而在北京,12 点睡觉都感觉很早了。


而且,之前在北京上海的时候,不管你有啥特殊爱好,都能找到不少志同道合的人,可以和你交流这些小众的话题。


但回到小县城之后,就不要想了,找不到的。


总结


回到老家小县城很久了,有很多的感受,但直到今天才梳理了一下。


自由职业有好有坏,会有收入焦虑、时间多了但产出不一定会高很多、脱离工作场景遇到的可研究的技术问题会变少,会有脱离社会的游离感,但是陪家人的时间变多了,而且可以把大把时间花在想做的事情上,可以做一些有积累的事情。


当然,感受这个比较主观,只是我个人的一些总结。


当你感觉状态不对的时候,可以像我一样剖析下自己,看看自己最近遇到的问题、发生的变化,和状态好的时候的一些区别。


把这些问题摆出来,并且找到问题的原因,也就能更好的去调整自己。


我的自由职业之路大概率会一直持续下去,希望过段时间我能调节好自己,有超过打工时的状态和输出效率。未来可期,加油吧。


作者:zxg_神说要有光
来源:juejin.cn/post/7304561386888511514
收起阅读 »

糟糕!试用期被裁了

如果你觉得找工作已经够难了?那么抱歉,接下来我说的这件事情可能更令你更糟心。 什么事情呢? 如题所见,就是“试用期被裁这件事”。 每年都会有同学找到我,说自己被裁了,比如下面这些。 同程旅行被裁: 一家知名外企被裁: 其他类似的同学还有很多,比如 B 站试...
继续阅读 »

如果你觉得找工作已经够难了?那么抱歉,接下来我说的这件事情可能更令你更糟心。


什么事情呢?


如题所见,就是“试用期被裁这件事”。


每年都会有同学找到我,说自己被裁了,比如下面这些。


同程旅行被裁:
211efa6455114289e6f46309f7f72bf.jpg
一家知名外企被裁:
c99be7e145f29436f1fc5fd9ca1bb7a.jpg
其他类似的同学还有很多,比如 B 站试用期被裁、小红书被裁、得物被裁等等,因为换了手机,之前的聊天没有了,所以这里只能给大家看最近的截图了。


为什么被裁?


每个人被裁的原因可能都不一样,但大概可能被分为两类:



  1. 主观原因

    1. 技术能力不够

    2. 理解能力不够

    3. 表达、沟通能力不够

    4. 上下级关系没有处理好



  2. 客观原因

    1. 公司财务收紧

    2. 公司业务线调整

    3. 公司转型




其中,客观原因已经超出了我们的掌控范围,所以不是本文要讨论的重点。我们本文主要讨论的是第一类问题,以及如何规避这些问题。


如何避免被裁?


其实知道了被裁的原因,反向提升自己的能力,就可以避免被裁的厄运了(当然非主观原因除外)。


1.多提升技术能力


时刻提醒自己,技术岗的核心竞争力是“技术”,所以既然选择了“技术”这条路,那么只有不断的学习,才是提升自己竞争力的关键。逆水行舟,有时候不是自己退步了,而是身边的人都进步了,那你自然而然就成了垫底的人了,这个时候,离末位淘汰和被裁就不远了。所以,一定要注意。


2.多做有效沟通


沟通分为有效沟通和无效沟通两类,有效沟通是指信息能够准确、清晰地传达、理解和接收的过程。它是在交流中实现真正的相互理解和达成共识的能力。


有效沟通包括以下几个方面:



  1. 表述清晰明确:有效沟通需要明确表达自己的意思,使用简洁、清晰的语言,避免模糊或含糊不清的词语或说法。理解者也要确保准确理解对方的意思,必要时可以进行追问或澄清。

  2. 倾听和理解:有效沟通不仅需要表达自己的观点,也需要认真倾听对方的观点和意见。倾听包括积极关注对方所说的话,并努力理解对方的观点和感受。

  3. 适应对方:有效沟通需要考虑对方的背景、情况和特点。要注意使用对方能够理解和接受的语言和方式进行沟通,避免使用无意义的行话或专业术语。

  4. 反馈和确认:为了确保信息的准确传达和理解,有效沟通需要进行反馈和确认。在沟通过程中,可以提问、请求对方重述或总结所表达的内容,以确保信息传达的一致性和准确性。


3.带上解决方案和自己的思考


上面教你要“多沟通”,但不代表,遇到任何事情都要给领导汇报和沟通,这样只会适得其反。我之前就有一个同事,工作 8~9 年了,我当时是部门负责人,他在工作中的任何问题,无论大小,都要和我反复沟通和确认。刚开始我还能好脾气的和他聊几句,后面就发现,如果要一直这样,那么我什么事也做不了,什么任务也完成不了,自己就像他的私人顾问一样。


这让我很苦恼,后来不得不开除他,因为如果留他在公司,那么我的所有任务都会延期和完成不了。


所以,领导一定是比你忙的,他的事情是最多的。所以遇到事情之后,一定要三思,自己先琢磨,如果自己深入思考之后,还是解决不了,那么这个时候就需要及时和领导沟通汇报了,千万不要怕丢脸。


还有就是沟通之前,最好自己先有几种方案,然后再和领导沟通汇报,让他参与到这件事并做最终的决策。


这里要遵循的原则是:小事、自己能搞明白的事,认真思考之后,能不打扰领导就尽量不打扰领导,但如果真的遇到问题,千万不能藏着掖着,要及时上报,获得领导的支持和协助。


4.笨鸟先飞 + 谦虚谨慎


刚去公司的时候,无论你的技术再好,一定要谦虚谨慎,起码你的业务能力相比于老同事差的还很远,所以这个时候一定要下“奔功夫”。也就是早上早早去公司,提前熟悉公司的业务和开发流程,下班之后,如果同事都在加班,那么自己就多看会公司的文档,刚去切记不要给领导留下偷奸耍滑的印象,一定要能下得了“笨功夫”。


5.多听 + 充分准备


尤其在开需求会的时候,因为刚去公司可能对业务不熟悉,这个时候一定要多听,少发表意见。不要刚到一家公司就指手画脚的,先了解了实际情况之后再发表意见,不要给同事和领导留下“轻浮”的印象。


并且,最好在开需求大会之前,先深入了解业务和需求,做好充分的准备,以便自己能跟得上开会的节奏,也能发表真正有建设性的意见。


6.做事积极 + 可靠


公司给你分配的任务,尤其是试用期,不要表现悲观、不满等情绪,刚去公司试用期还是以低调、谦虚为主。领导给你分下来的活,无论大小,积极主动去做,因为事情你总是要做的,积极也是做,消极也是做,还不如积极一点,给领导留下一个好印象。


其次,做事一定要有结果和反馈,比如领导给你安排一件事要 3 天做完,那么 3 天之后,一定要把当前的任务的具体情况主动主动汇报给领导,这样领导才会觉得你办事靠谱,起码把他说的事认真落实了。


能不能完成任务是能力问题,有没有把领导安排的事积极落实是态度问题,所有的领导都喜欢听话的、办事靠谱的员工,这一点至关重要。


小结


找到工作后,能否平安度过试用期至关重要,所以在试用期期间,一定要下足“笨功夫”,用心做事、谨慎谦虚、积极主动、认真负责,多提升自己的技术能力、多和领导进行有效的沟通,以上这些都是平安度过试用期的关键。加油,少年~


作者:Java中文社群
来源:juejin.cn/post/7304538151455309875
收起阅读 »

努力学习和工作就等于成长吗?

努力学习和工作与成长的关系是一个值得去深思的问题。 有趣的是,参加实习的时候,我将手上的工作做完之后去学其他的技术了,因为那时候刚好比较忙,所以领导就直接提了一个箱子过来,然我去研究一下那个硬件怎么对接。 我看了下文档,只提供了两种语言,C++和JavaScr...
继续阅读 »

努力学习和工作与成长的关系是一个值得去深思的问题。


有趣的是,参加实习的时候,我将手上的工作做完之后去学其他的技术了,因为那时候刚好比较忙,所以领导就直接提了一个箱子过来,然我去研究一下那个硬件怎么对接。


我看了下文档,只提供了两种语言,C++和JavaScript,显然排除了C++,而是使用JavaScript,不过对于写Java的我来说,虽然也玩过两年的JS,但是明显还是不专业。


我将其快速对接完成后,过了几天,又搞了几台硬件过来叫我对接。


显然这次我不想去写好代码再发给前端了,于是直接拉前段代码来和他们一起开发了。


一个后端程序员硬生生去写了前端。


那么这时候,有些人就会说,“哎呀,能者多劳嘛,你看你多么nb,啥都能干,领导就喜欢这种人了”


屁话,这不是能力,这是陷阱。



之前看到一个大佬在他的文章中写道,“如果前端和后端都能干的人,那么大概率是前端能力不怎么滴,后端能力也不怎么滴”。


我们排除那种天生就学习能力特别强的人,这种人天生脑子就是好,学啥都很快,而且学得特别好,但是这样的人是很少数的,和我们大多数人是没关的。


就像有一个大佬,后端特别厉害,手写各种中间件都不在话下,起初我以为他是个全才。


知道有一天,他要出一门教程,然后自己连最基本的CSS和HTML都不会写,然后叫别人给他写。


那么,这能说明他不厉害吗?


各行各业,精英大多都是在自己的领域深耕的。


这个世界最不缺的就是各领域的高手。


在职场中,也并不是什么都会就代表领导赏识你,只能证明你这颗螺丝比较灵活,可以往左边扭,也可以往右边扭。



在自己擅长的领域去做,把一件事尽可能垂直。


之前和一朋友聊天,他说他干过python,干过java,干过测试,干过开发,干过实施......


反正差不多什么都干过了,但是为什么后面还是啥也没干成?


我们顶多能说他职业经历丰富,但是不能说他职业经验丰富,经历是故事,而经验才是成长。


可见垂直是很重要的,不过执着追求垂直也未必是一件好事,还要看风往那边吹,不然在时代发展的潮流中也会显得无力。


就像前10年左右,PHP可谓是一领Web开发的龙头!


那句“PHP是世界上最好的语言”可谓是一针强心剂。


可是现在看来,PHP已经谈出Web领域了,很多PHP框架早已转型,比如swoole,swoft等,只留下那句“PHP是世界上最好的语言”摇摇欲坠。


可笑的是,之前看到一个群友说,领导叫他去维护一套老系统,而老系统就是PHP写的,于是他去学了好久ThinkPHP框架,但是过了半年,这个项目直接被Java重构了。


真是造化弄人啊!



深度学习和浅尝辄止


在我们还没有工作的时候,在学校看着满入眼帘的技术,心中不免有一种冲动,“老子一定要把它全部学完”


于是从表面去看一遍,会一点了,然后马上在自己学习计划上打一个勾。


但是当遇到另外一个新技术的时候,完全又懵了,于是又重复之前的动作。


这看似学了很多,但是实际上啥也没学会。


个人的精力完全是跟不上时代的发展的,十年前左右,随便会一点编程知识,那找工作简直是别人来请的,但是现在不一样了,即使源码看透了,机会也不多。


而如果掌握了核心,那么无论技术再怎么变革,只需要短暂学习就能熟练了。


就像TCP/IP这么多年了,上层建筑依然是靠它。



看似努力,实则自我感动!


在我们读书的时候,总有个别同学看似很努力,但是考试就是考不好。


究其本质,他的努力只是一种伪装,可能去图书馆5个小时,刷抖音就用了四个小时,然后发个朋友圈,“又是对自己负责的一天”。


也有不少人天天加班,然后也会发个朋友圈,“今天的努力只是为了迎接明天更好的自己”。


事实如此吗?


看到希望,有目的性的努力才是人间清醒。


如果觉得自己学得很累,工作得很累,但是实际上啥也没学到,啥也没收获,那么这样得努力是毫无意义的。


这个世界欺骗别人很容易,但是欺骗自己很难!


作者:追梦人刘牌
来源:juejin.cn/post/7303804693192081448
收起阅读 »

日本排放的核污水就像软件项目迭代中的技术债

日本最终还是排放了核污水 2023年8月24日,日本最后还是排放了核污水。网上的讨论很多,有说不应该排放的,也有说污染其实不严重,不需要担心的。首先说明,我是反对排放的。不是因为核污水超标,即使没有超标,我也不认为应该排放到海里。 为什么呢,因为这些辐射元素排...
继续阅读 »

日本最终还是排放了核污水


2023年8月24日,日本最后还是排放了核污水。网上的讨论很多,有说不应该排放的,也有说污染其实不严重,不需要担心的。首先说明,我是反对排放的。不是因为核污水超标,即使没有超标,我也不认为应该排放到海里。


为什么呢,因为这些辐射元素排放到海水中后,会通过食物链富集效应,最终大量的集中到人类身上。即使排放时的指标是安全的,最终,辐射污染富集到人体身上后,迟早要超标的。


关于日本排放核污水的事,我觉得和软件开发过程中的技术债很像。所以今天就蹭个热点,聊一聊项目中的技术债。


软件项目的迭代过程


我记得大学的时候,课本上学的软件迭代还是瀑布流的迭代方式。这个就比较简单,提出一个大项目,然后细化各个功能。架构师拿到十分完善的需求文档后,开始架构设计。然后开发,测试,上线,验收,完成整个项目。在这个过程中,需求是明确的,按照需求去实现就行。


可是后来出现了敏捷开发。老板们一看,这个好呀,敏捷开发,不就是快速开发吗,大大提高开发速度。尤其是互联网公司,讲究的就是一个唯快不破。然后,,,很明显就感觉到,项目中的技术债越来越多了。


原先项目需求明确后,即使开发过程中有需求变化,也都是在代码上线前修改,可以把看到的不合理代码设计给改掉,影响可控。敏捷后,项目需求是逐步迭代上线的,有时候需求间是相互影响的,再加上互联网的人员换的也勤快,需求时间也短,这前后的代码越来越不融洽。


技术债的积累


技术债是怎么积累的呢,其实是项目过程中,为了短期的收益(上线时间)而做出的技术上的妥协(怎么快怎么来),这些妥协可能会在未来导致更多的工作,或者可能的线上问题。可以看出,技术债务并不总是坏事。有时,为了满足紧迫的市场需求或截止日期,团队可能需要做出一些妥协。关键是要意识到这些妥协,并在适当的时候偿还这些债务。如果需求上线了,就不管对应的技术债了,这个技术债可不就是越来越多吗。


就像文章最开始的日本排放核污水。从当年日本核电站地震出事,日本采用了注水冷却并储存核污水的方案,我们就能意识到,这个核污水一定要处理掉的,不然越堆越多,最后就只能排放出来的。10几年了,日本就没想过要解决核污水,现在说要排放,我觉得吧,这个估计是10几年前就确定的方案了,只是没有往外说,最后就看什么时间排放。最后,我们就这样又一次见证了历史。


重构


技术债不断积累后,会导致新需求越做越慢,bug还多。这个时候,老板就会觉得做这个需求的人不行,做的又慢,bug又多。但是只有做需求的人才知道,真的改不动呀。


所以,当你做一个需求,感觉改不动,或者明明没有改多少代码,但是bug特别多。 那么一定要想一想这个项目是不是存在了很长时间了。如果存在了很长时间了,那么大概率需要解决技术债的时候到了。怎么解决,重构!!


怎么重构,这个话题很大,一两句说不清楚。不过,一旦你成功重构了一个老项目,那么大概率你的技术水平能有一大步的提升。


就像有人说的,一个文明的衰退等于一个新的文明的诞生。






作者:写代码的浩
来源:juejin.cn/post/7271140848850272267
收起阅读 »

软件著作权证书申请

大家好,我是小悟 对我们行业来说,软著有什么作用不言而喻。对于在读学生来说,可能对加学分、评奖学金、保研、简历装饰有帮助。对于企业来说,可能对高企申请、应用市场上架有帮助。对于职场人士来说,可能对职称评定、升职加薪有帮助。但最重要的一点是,能保护你的软件成果...
继续阅读 »

大家好,我是小悟


image.png


对我们行业来说,软著有什么作用不言而喻。对于在读学生来说,可能对加学分、评奖学金、保研、简历装饰有帮助。对于企业来说,可能对高企申请、应用市场上架有帮助。对于职场人士来说,可能对职称评定、升职加薪有帮助。但最重要的一点是,能保护你的软件成果。


关于这个软著模板,已经有很多小伙伴领取到了,能不能用,全在于小伙伴们自己,只要用心去做,我觉得总会成功。

有按照模板申请成功的


图片


也有觉得模板没用的


图片


甚至还有觉得没用爆粗口的,难听,这就不放图了,这种人就是想着不要发挥自己的一点点脑筋,就是想找个不用自己修改一丁点的,最好是直接就能用的。很无奈啊。


但大部分小伙伴是有礼貌的


图片


经过实践,自己已经申请过成功很多张软著证书了,积累了一定经验。


image.png


image.png


image.png


image.png


image.png


image.png


您的一键三连,是我更新的最大动力,谢谢


山水有相逢,来日皆可期,谢谢阅读,我们再会


我手中的金箍棒,上能通天,下能探海


作者:悟空码字
来源:juejin.cn/post/7303827467037442048
收起阅读 »

你的团队是“活”的吗?

最近有同学离职,让我突然思考一个话题。 之前在腾讯,内部转岗叫做活水,是希望通过内部转岗,盘活团队。让团队保持一定的人员流动性,让个人与团队双向奔赴,满足各自的需要。因此,我们都希望,团队是活水,而不是一潭死水。 为什么团队要保持一定的人员流动性呢? “优”...
继续阅读 »

最近有同学离职,让我突然思考一个话题。


之前在腾讯,内部转岗叫做活水,是希望通过内部转岗,盘活团队。让团队保持一定的人员流动性,让个人与团队双向奔赴,满足各自的需要。因此,我们都希望,团队是活水,而不是一潭死水


为什么团队要保持一定的人员流动性呢?



  • “优”胜“劣”汰。这里不是指恶意竞争和卷。而是通过一定的人员流动性,有进有出,从而找到更加适合团队的人。找到跟团队价值观一致的,志同道合的成员。而跟团队匹配度不是很高的人,可以去寻找更加适合自己的团队和岗位,这对于双方都是有好处的。

  • 激活团队。当一个团队保持稳定太久,就会有点思想固化,甚至落后了。这时候,需要通过一些新鲜血液,带来不同的思想和经验,来激活团队,这就像鲶鱼一样。


那想要形成一个“活”的团队,需要什么条件呢?



  • 薪资待遇要好。首先是基本福利待遇要高于业界平均水平。其次,绩效激励是有想象空间的。如果没有这个条件,那人员流动肯定是入不敷出的,优秀的人都被挖跑了。

  • 团队专业。团队在业界有一定的影响力,在某一方面的专业技术和产出保持业界领先。这个条件隐含了一个信息,就是团队所在业务是有挑战的,因为技术产出一般都是依赖于业务的,没有业务实践和验证,是做不出优秀的技术产出的。因此,待遇好、有技术成长、有职业发展空间,这三者是留住人才的主要手段。

  • 梯队完整。在有了前面 2 个条件之后,就有了吸引人才的核心资源了。那接下来就需要有一个完整的梯队。因为资源是有限的,团队资源只能分配到有限人手里,根据最经典的 361,待遇和职业发展空间最多只能覆盖 3 成,技术成长再多覆盖 3 成人已经不错了。那剩下的 4 成人怎么办?所以,团队需要有一些相对稳定的人,他们能完成安排的事情,不出错,也不需要他们卷起来。


这是我当前的想法,我想我还需要更多的经验和讨论的。


那我目前的团队是“活”的吗?答案是否定的。


首先,过去一年,公司的招聘被锁了,内部转岗也基本转不动。薪资待遇就更不用说了。整个环境到处都充斥着“躺”的氛围。


其次,团队专业度一般,在金融业务,前端的发挥空间极其有限。我也只能尽自己所能,帮大家寻求一些技术成长的空间,但还是很有限。


最后,梯队还没有完整,还在建设中,不过也是步履维艰。因为前两个条件限制,别说吸引优秀人才了,能不能保住都是个问题。


最近公司开始放开招聘了,但还不是大面积的,不过还是有希望可以给有人员流失的团队补充 hc 的。但比较难受的是,这个 hc 不是过我的手的,哈哈,又有种听天由命的感觉。


这就是我最近的一个随想,那么,你的团队是“活”的吗?


作者:潜龙在渊灬
来源:juejin.cn/post/7298347391164383259
收起阅读 »

独立开发月入1K的实践之路与可持续思考

梦想不止,CV不息。 在从事后端开发的这几年里,尝试过很多所谓的副业,企图在某一时刻实现财富自由,我相信这也是很多程序员的梦想。但程序员做出一款产品很容易,如果想要很多人用起来就可以说是痴人说梦了。第一就是不知道怎么推广,第二是抓不住客户的痛点,以程序员思维做...
继续阅读 »

梦想不止,CV不息。


在从事后端开发的这几年里,尝试过很多所谓的副业,企图在某一时刻实现财富自由,我相信这也是很多程序员的梦想。但程序员做出一款产品很容易,如果想要很多人用起来就可以说是痴人说梦了。第一就是不知道怎么推广,第二是抓不住客户的痛点,以程序员思维做出的产品,与市场格格不入。 中间试过公众号运营,做了个粉丝2W的号,但变现成了问题,就放弃了。也试过一些google chrome插件,抖音去水印小程序、小区信息发布,这些开发周期都在3天到1周,但苦于开发好之后没有人用,都一 一的放弃了。


很多次的试水,虽然做的东西不尽人意,但从另一方面来说,的确丰富了自己的技术栈。于是我开始思考,我可不可以用心的做一款产品,然后让人用起来,即使不盈利,如果自己的产品有人用,也算是很有成就感了。 


做什么? 在开发之前,我翻遍了论坛和博客,想要从中找到普通人的需求。中间发现很多帖子:独立开发者的三件套:todo、记账、笔记。很多人对此嗤之以鼻,但我想试一试todo。


先别喷,看看我的想法。


当你不知道做什么的时候,一定不要让自己闲着。todo的需求简单,开发周期极短,1周内可以完成上线,甚至还能更新几个迭代。 就这样,我翻了市面上的所有待办清单,对已有产品的待办逻辑进行了梳理,分析了差异点。结合我自己的办公需求,我决定做一个极简的todo,毕竟审美有限,功能多了肯定不好看。 独立开发不只要考虑开发,还要考虑开发后的运营。我开发出来之后,怎么能够快速投入到市场,让人用起来。


这时我发现了uTools,分析了一下uTools的用户量,用户特征,新插件下载使用率,以及审核发布机制,这些能够满足自己的期望值,就决定以uTools为依托,开发一款以element ui+springboot的待办应用,起名大气一点:超级待办!不管产品超不超级,先吸引人下载就好了。 


开发周期零零散散大概一周,就上线到uTools了。 



主要功能有任务的增删改查,可以快速拖拽,快速编辑、关联笔记、分类、待办的微信推送提醒。还注册了一个微信服务号,实现uTools超级待办与微信互通,随时查看自己的待办,目前通过该应用 公众号粉丝到400左右。




第一天下载量达到了50多,没有任何用户反馈。刚巧第二天,uTools发了新应用的推文,我的应用可能因为提交审核时间,排在推文的第一,下载量达到了300多,这时,各种用户反馈开始来了。用户量超出了自己的预期,于是我开始在反馈中做出功能的取舍,然后进行一版一版的迭代上线。 


从6.25上线到现在,一共迭代了55个版本,每个迭代用时大概30分钟-1个小时。 用户量满1000后,开始进行差异化付费模式,主打基础功能免费+个性化功能付费。从9月开始付费到现在,每月平均付费1K左右,并且在11月,我只迭代了3次,总用时20分钟。目前总下载量10596个,实际注册用户数4099个,日活114左右。 



后续规划: 


1、多思考,多动手,多充实技术栈。


2、尝试围绕几百条反馈,总结需求点,继续完善应用,开发收费点。 


3、尝试多做些其他类型的应用。 


一些思考: 


1、不要鄙视独立开发三件套,他是你入门独立开发的第一步,能够在一定程度上锻炼你的产品思维能力。 


2、开发之前需要考虑产品的全生命周期,包含时间成本、需求取舍、盈利预期,推广模式。


3、重视客户需求反馈,做出自己的判断,把反馈完美的融入到现有的产品中去。 


4、不要低估产品的可用性,即使你做个记事本,也是有人用的。 


5、苍蝇再小也是肉,苍蝇多了,肉也就多了。 


最后希望各位独立开发者盆满钵满,早日财富自由,躺赚斗金。 


有同学可能会关心这么小的服务,提供在线服务会不会连服务器成本都收不回来。其实有另一款盈利产品在支撑,目前每月4K左右,能够兼顾成本,该项目后续我再进行分享。


作者:探路
来源:juejin.cn/post/7303847314896175116
收起阅读 »

被约谈,两天走人,一些思考

五档尼卡引爆全场 前言 个人身边发生的事,分享自己的一些思考,有不同意见是正常的,欢迎探讨交流 来龙去脉 上周坐我前面的前端开发工程师突然拿了张纸去找业务线领导签字了,领导坐我旁边,我看两人表情都认真严肃,一句话没说,那个前端同事签完字就坐自己工位上了,似乎...
继续阅读 »

五档尼卡引爆全场



前言


个人身边发生的事,分享自己的一些思考,有不同意见是正常的,欢迎探讨交流


来龙去脉


上周坐我前面的前端开发工程师突然拿了张纸去找业务线领导签字了,领导坐我旁边,我看两人表情都认真严肃,一句话没说,那个前端同事签完字就坐自己工位上了,似乎有什么事发生


微信上问了一句:什么情况?


前端同事:裁员,做好准备



公司现状


从我去年入职公司后,就在喊降本增效了,周一晨会时不时也会提一下降本增效,毕竟大环境不好,公司的业务这两年也受到不小的影响


今年好几个项目组人手不够,两三月前还在疯狂面试前后端测试产品,我们这边的业务线前端都面试都超过五十个人了,最后招了一个前端一个后端一个测试


想着这种情况,公司薪资给的也不高,新员工不大量招就算降本了吧,再优化优化各方面流程等提提效率,没想到降本的大刀直接落下来首先砍掉的是技术开发人员


裁员情况


公司北京总部这边,目前我们部门是裁了两个前端一个后端,其他部门也有有裁员,人数岗位就不清楚了


从被裁掉的同事那边了解到的消息,上周三下班后下午找他们谈的,周四交接,周五下班后就走了,按照法律规定赔偿


上周只是一个开始,应该是边裁边看,什么时候结束最终裁员比例目前还不清楚,由其他来源得到的消息来源说是这次裁员力度很大


现在如果不是核心项目员工,如果不是和领导关系比较好的员工,每个人头上都悬着一把达摩克利斯之剑


个人思考


看待裁员


我认为首先是放平心态吧


国际经济形去全球化,贸易战,疫情,到现在的各种制裁,俄乌战争等,极端气候频发,真是多灾多难的年代


裁员这几年大家也见多了,该来的总会来


我认为裁员好说,正常赔偿就行,好聚好散,江湖再见


企业层面


裁员也是企业激发组织活力的一种方式,正常看待就行,关于企业组织活力介绍的,这里推荐一本前段时间刚读完的一本书 《熵减:华为活力之源》



熵是来源于物理科学热力学第二定律的概念,热力学第二定律又称熵增定律。熵增表现为功能减弱直到逐渐丧失,而熵减表现为功能增强...



个人层面


1.如果公司正常走法律流程,拿赔偿走人,继续找工作,找工作的过程也能发现自己的不错,更加了解市场,甚至倒逼自己成长


2.如果公司只想着降低成本,不做人事,有那种玩下三滥手段的公司,一定要留好证据,拍照,录音,截图,保存到自己的手机或者云盘里,不想给赔偿或恶意玩弄手段的,果断仲裁,我们员工相对企业来讲是弱势群体,这时候要学会用法律武器保护自己(可能也是唯一的武器)



这年头行情不好,老板损失的可能只是近期收益,有的员工失去的可能是全家活下去的希望



日常准备


做好记录


日常自己工作上的重大成果,最好定期梳理一下,或者定期更新简历,也可以不更新简历,找地方记录下来,例如项目上的某个重大模块的开发升级,或者做的技术上的性能优化等,我是有写笔记博客的习惯,技术相关的有时间一般会写成文章发到社区里


保持学习


日常保持学习的基本状态,这个可能我们每个人都会有这个想法,但是能定期沉下心来去学习提升,系统地去提升自己的时候,很少能坚持下来,万事开头难,开头了以后剩下的是坚持,我自己也是,有些事情经常三天打鱼,两天晒网,一起加油


关注公司


如果公司有查考勤,或者重点强调考勤了,一般都是有动作了,我们公司这次就是,年中会后的第二周吧,大部门通报考勤情况,里面迟到的还有排名,没多久就裁员了


保护自己


有的公司可能流程操作不规范,也有的可能不想赔偿或者少赔偿,可能会在考勤上做文章,例如迟到啥的,如果公司有效益不好的苗头,一定要注意自己这方面的考勤,以及自己的绩效等,做好加班考勤截图,领导HR与自己的谈话做好录音,录屏等,后面可能用的上,也可能会让自己多一点点谈判筹码


经营关系


虽然裁员明面上都是根据工作表现来的,好多时候大家表现都差不多,这个时候就看人缘了,和领导关系好的,一般都不是优先裁员对象,和领导团队成员打成一片真的很重要



以前我还有过那种想法:


我一个做技术的,我认真做好我自己的工作不就行了?专心研究技术,经过多年的工作发现,很多时候真的不行,我们不是做的那种科研类的,只有自己能搞,国内的大部分软件开发岗可能都是用的开源的技术做业务相关的,这种没什么技术难度,技术上来看基本没有什么替代性的难度


可能可替代性比较难的就是某个技术人长期负责的某个大模块,然后写了一堆屎山吧,毕竟拉屎容易,吃屎难


越是优秀的代码,可读性越强,简洁优雅,像诗一样



关于简历


如果是刚毕业的,可能简历上还好,大部分都优化都是已经是有一定的工作经验了,简历的更新就比较重要了,尤其工作了两三年了,如果简历看起来内容很少,不是那么丰富或者看起来很简陋,在简历筛选这一关会降低自己的面试几率,这时候一定要丰富一下,也有一些可能不知道自己简历是否丰富的,网上有那种简历模板可以搜搜看看,也可以找大佬帮忙看看,也有技术圈提供简历优化的有偿服务


再找工作


我个人的感觉是如果还是继续老本行继续打工,这年头行情不好,最好第一时间找工作,不能因为拿了赔偿就想着休一个月再说之类的,我周围有那种本来准备休半个月或一个月的,结果一下子休了一年以上的,我面试的时候如果遇到那种空窗期很长的,如果第一轮技术面能力都差不多的情况,到第二轮的领导面或者HR面,他们有优先考虑让空窗期短的人加入


关于空窗期


基本所有的公司都会关注离职空窗期,如果这个空窗期时间长了,那么求职的竞争力会越来越小,我在面试的时候我也会比较关注空窗期,因为我会有如下思考(举个例子,纯属乐子哈)


1.为什么这个人求职者三个月多了不找工作,家里有矿?家里有矿还上班,工作不会是找个地方打发时间的吧



我朋友的朋友就是这样,北京土著,家中独子,前几年拆迁了,家里好几套房,自己开俩车,人家上班就是找地方交个社保,顺便打发一下时间




2.能力不行吗?找工作这么久都没找到,是太菜了吗?还是太挑剔了?长时间不敲代码,手也生疏了,来我们团队行不行呀,我们这里赶项目压力这么大,招进来万一上手一段时间干不了怎么办,自己还被牵连了



几年前在某家公司做团队leader的时候,我们做的又是AI类项目,用的技术也比较前沿,当时AI的生态还不完善,国内做AI的大部分还处于摸索阶段,项目中用的相关技术栈也没个中文文档,由于公司创业公司,价格给的很低,高手招不进来,没办法只能画饼招综合感觉不错的那种,结果好几个人来了以后又是培训,又是有把手把手教的,结果干了没多久干不动走了,留下的烂摊子还得自己处理



关于社保


如果自己家里没矿,最好还是别让社保断了,拿北京举例,社保断了影响医疗报销,影响买车摇号等等


如果实在没找到工作,又马上要断缴社保了,可以找个第三方机构帮忙代缴,几千块钱,这时候的社保补缴相对来讲代价就比较高了



我遇到的情况是,社保断了一个月,后来找到工作了,第三方机构补缴都补不了,后来一通折腾总算弄补缴上了



关于入职


先拿offer,每一家公司的面试都认真对待,抱着一颗交流开放互相尊重的心


如果自己跳槽频繁,再找公司,可能需要考虑一下自己是否能够长待了,跳槽越频繁,后面找工作越困难,没有哪个公司希望招的人干一年就走了


所以面试结束后,最好根据需要面试情况,以及网上找到的资料,分析一下公司的业务模式了,分析这家公司的行业地位,加入的业务线或者部门是否赚钱,所在的团队在公司属于什么情况,分析团队是否是边缘部门,招聘的业务线是否核心业务线,如果不是核心业务线,可能过段时间效益不好还会被砍掉,有时候虽然看拿了对应的赔偿,但是再找工作,与其他同级选手对比的话,竞争力会越来越低


不论是技术面试官,还是负责面试的HR,大部分也都是公司的普通员工,他们可能不会为公司考虑,基本都会为自己考虑的,万一招了个瘟神到公司或者团队里,没多久自己团队也解散了怎么整



这里也许迷信了,基于我的一些经历来看有些人确实会有一些人是看风水,看人分析运势的


之前在创业公司的时候,有幸和一些投资人,上市公司的总裁,央企董事长等所谓的社会高层接触过,越是那些顶级圈里的人,有些人似乎很看中这个,他们有人研究周易,有人信仰佛教,有人招聘必须看人面相,有人师从南怀瑾等等



再次强调


每个人的经历,认知都是不一样的,同样的人不同角度下的世界也是不一样的,有不同意见是非常正常的,欢迎探讨交流不一样的心得,互相学习,共同进步


作者:草帽lufei
来源:juejin.cn/post/7264236820725366840
收起阅读 »

气死了😤,过五关,斩六将,结果被 HR 捅了一刀!!

大家有没有遇到过这样的事情:“过五关,斩六将。通过了两轮、甚至是三轮的技术面,最后 HR 面被“捅死”了” 这样的事情,最近在一位同学身上连续出现了两次,弄得人都麻了。 所以,我们昨天直接腾讯会议沟通了一个小时,分析这到底是因为什么问题导致的。 经过沟通之...
继续阅读 »

大家有没有遇到过这样的事情:“过五关,斩六将。通过了两轮、甚至是三轮的技术面,最后 HR 面被“捅死”了”


这样的事情,最近在一位同学身上连续出现了两次,弄得人都麻了。



所以,我们昨天直接腾讯会议沟通了一个小时,分析这到底是因为什么问题导致的。



经过沟通之后发现,这位同学在 HR 面中所存在的问题,是很多其他的同学也都存在的。所以这一篇文章,咱们就主要来说一说【HR 面的常见问题,以及应对方式】


01、HR 面出现的时机


HR 面根据公司不同,在整个面试流程中出现的位置也不相同。一般情况下会有两个不同的时机:



  1. 技术面试开始之前

  2. 技术面试结束之后


通常,一个完整的面试流程中,HR 只会出现一次。所以,以上两个时机是【二选一】的。


但是,在不同的时机之下,HR 面所代表的意义也会完全不同。


1:技术面试前进行 HR 面


把 HR 面试放到整个技术面试开始之前,通常的作用是:判断你的技术是否可以匹配团队业务、询问你的基本个人信息是否符合公司“价值观”。


这样的情况下,HR 通常会拿着技术部门预先给的八股文让你进行回答,只要你的回答不会偏离八股文太多,通常都会得到面试的机会。(同理:内容不要也不要偏离八股文太多,秀技术不要在这里秀,因为TA听不懂😂)


好处是,这样的公司 HR 权限一般有限,技术团队用人权限会更大。只要技术面试可以顺利通过,那么入职就问题不大。



如果你遇到的面试 HR 面是在初面,那么恭喜你!你会少遇到很多幺蛾子事。



2:技术面试后进行 HR 面


这样的 HR 面一般是作为终面进行的。这也就意味着:HR 有可能拥有一票否决权。


此时你就要小心了,一个不慎,可能就会前功尽弃。


所以,接下来咱们就来看看 HR 面的应对方式。


02、HR 面基础注意事项


无论你有多么迫切的期望得到这份工作,你都没有必要把自己的位置放的过低(过于高傲也是不行的)。


记住:面试本质上是一个双向的选择。


在 保持礼貌 的同时,以 平常心 看待当前的面试。反而会比过于 “谄媚” 或过于 “高傲” 要有效的多。


03、自我介绍


自我介绍是一个必答题。


那么我们在进行自我介绍时,应该 重点描述,匹配当前岗位的业务能力和技术能力。如果有 数据可以支撑的,尽量多说 数据不要 有太多的 主观 词汇。


同时,自我介绍的时长,尽量控制在 40 秒 - 60 秒 之内。


能力强的同学,可以根据面试公司的业务不同,把自己的履历在自我介绍中尽量的往面试公司的业务上去靠。


需要注意的是:HR 面和技术面的自我介绍是不一样的。因为 HR 听不懂太多的技术词汇,他们关心的点都是在“非技术”的问题上



面试时容易紧张的同学,可以事先把自我介绍写在纸上(200-270字即可),背下来去说,总比临阵说不出来要好。



04、你为什么从上家公司离职


一般 HR 都会问这样的问题,同时这个问题也并不好回答(因为真实的离职原因一般很难说)。



内心的真实离职原因:还能因为啥?老板太SB、给的钱太少、加班太多、饼太硬......



心里可以这么想,但是你嘴上不能这么说吧。


所以嘴上说的时候就要注意了,不要说在很多公司都会出现的问题。


可以从以下几点进行思考:



  1. 首先:千万不要暴露自己的问题。(记住:没有公司想要一个问题员工)

  2. 其次:不要贬低上家公司,即时它确实很差劲

  3. 最后:不要贬低同事或领导,因为这在别人听来会非常主观


可以从 公司搬家、自己搬家、公司裁员(现在裁员的多)、更高挑战 等, 现公司不太可能会出现的问题 上回答。


05、你对加班怎么看


我相信很多同学都是 不喜欢加班的,包括我在内。


但是,你 绝对不能 直接说 我不加班。除非你不想要这个 offer


网上有很多比较 “含蓄” 的说法,如:



任何公司,加班都是不可避免的。


如果工作实在有需要,我会愿意加班。


同时,我也会尽量提升工作效率,努力保证在规定的时间内,完成工作。



但是这种说法在实际面试中,可能并没有那么可靠。毕竟大家都不是傻子,话里话外什么意思,TA还能听不懂吗?


所以尽量不要耍这种小聪明(特别是急需这份工作的同学),可以直接说:“加班这种事情不可避免,之前的公司加班也挺多的,所以正常的加班还是没有问题的” 。


以这样的说辞,先拿到 offer 再说。


06、你凭什么认为你值这个钱?


这个话虽然不中听,但是在很多垃圾 HR 嘴里确实蹦出来过。


你也没必要生气,怼他一顿走了虽然很爽,但是这个 offer 同样也会飞掉了。先咽下这口气,等以后入职了再慢慢拾到TA。


这样的问题可以直接从 前面的技术面试 以及 过往履历的匹配度 上面去说。


例如:



之前和技术面试官的沟通整体还是非常愉快地。面试官那边对我的技术也非常认可,同时贵公司目前在做的业务和我过去的工作经验匹配度也比较高,所以说我和该岗位的整体匹配度还是很高的。


同时,我要的薪资也是符合目前市场行情价的,我之前的薪资是xxx,所以我并没有漫天要价



07、你的学校也太差了,还不是本专业。比你履历好的多的是,我们为什么要选择你?


和上一个问题类似,这种问题我是真的在 HR 面试中遇到过的。


这样的问题会很让人生气,同时也很难进行回答。


所以,当你遇到类似这种让人生气的问题时,先想清楚 你是想要一时爽还是想要这个 offer 。


如果想要这个 offer 的话,那么回答可以参考 【06、你凭什么认为你值这个钱?】回答的前半部分。


08、你认为你的缺点都有什么


一般 HR 问这个问题,都是从一些《HR的自我修养》这类书中看到的。但是不得不说,这样的问题并不好回答。


我要是直说我这人:好吃懒做,喜欢插科打屁 好像也不太合适。


所以说最好的方式是:列举出一些不太严重的问题。


这里列举出来几点,为大家提供参考:



  1. 不要说自己的大缺点:比如,“我很懒、我喜欢摸鱼打滑”。这种千万不要说。

  2. 不要把优点当成缺点说:比如,“我总是追求工作的完美,所以在一项工作上会花费更多事件”。毕竟大家都不是傻子。

  3. 不要说影响应聘当前岗位的缺点:比如,“应聘开发,说我总是很粗心,项目上线总是丢三落四”。


大家可以从一些,不影响当前应聘岗位的缺点说起,同时 强调自己已经认识到了这个问题,并且在改正


比如:



我之前特别喜欢熬夜,特别是休息日的时候。


这样并不好,所以我现在在有意识的,强迫自己早早休息。



09、还有拿到其他的 offer 吗?


HR 这么问其实是想要判断 给你发了 offer 之后,你能入职的概率有多少。 因为 HR 自己很清楚自己公司的成色。


但是,这样的问题如果直接说【没有其他 offer】也不好,因为这也有可能会被认为 “你没人要” 。


所以,最好的一个回答方式是:表现出来有 offer,但是对当前贵公司非常认可。


例如:



我当前有几个面试已经再走 offer 的流程了。但是在贵公司的整个面试过程,是我感觉比较专业的,也是体验比较好的。同时贵公司的业务也是我比较喜欢的,如果贵公司给我发 offer 的话,那么我会优先选择贵公司入职。



10、 你还有什么想要问我的吗?


这个问题一般是面试的结尾才会出现的。


这里建议大家,尽量抓住这个机会,多了解了解总是没错的。


但是要注意,尽量不要 问一些 “敏感” 的问题。


比如:



  • 公司忙吗?加班多不多?

  • 公司福利咋样,有下午茶吗?

  • 上班打卡吗?迟到扣钱吗?

  • 这只会 充分暴露,我们想养老的本心 😄 ,所以不要这么说。


如果你特别想要聊这些事情,那么可以在 收到 offer 之后,再去聊。


在收到 offer 之前,尽量聊一些工作之内的事情。


比如:



  • 当前岗位的明确工作内容

  • 公司对该岗位的要求

  • 是否会有新人培训

  • 团队人数与在公司的工作年限(如果团队有很多人在公司的工作年限比较长,那么可以侧面证明公司还不赖。)


总结


目前国内的很多 HR 面试,确实让整个面试的过程变得更加的复杂。


同时不得不说,很多中小企业的 HR 并不专业,很问出很多非常业余并且容易激发矛盾的问题(比如:第六题和第七题)。但是同时部分公司 HR 的权限又非常高,这就导致很多同学不得不陪TA们去玩这个愚蠢的游戏。


最后,老规矩:祝大家都可以拿到满意的 offer,高薪入职心仪的公司~~


作者:程序员Sunday
来源:juejin.cn/post/7304182487663312947
收起阅读 »

运气大于努力???

标题前言   我想看见这个标题,可能要是近两年,换工作或者刚毕业的小伙伴们最身有体感吧。我先从我自身出发,来讲一下这个我理解,也可能是大家遇见的最多的。 须知:   我是7月25号晚上被辞退,什么原因我上篇文文章已经写过了,就不细细描述了。本人男,25岁,专科...
继续阅读 »

标题前言


  我想看见这个标题,可能要是近两年,换工作或者刚毕业的小伙伴们最身有体感吧。我先从我自身出发,来讲一下这个我理解,也可能是大家遇见的最多的。


须知:


  我是7月25号晚上被辞退,什么原因我上篇文文章已经写过了,就不细细描述了。本人男,25岁,专科,工作经验三年。个人能力不出众,没做过什么可以拿出来吹嘘的东西。就这样平平无奇的开始了,在找工作的路上征战,征战地(上海~杭州),目前是已经入职2个多月了,今天也是有时间上来谈下感受,当然也谢谢上篇文章下各位小伙伴以及各位前辈的鼓励以及帮助


进入正题


  刚刚被辞的时候,我是调整了半个月,准备了一个星期*(一定要自己准备好,别浪费机会,现在的机会很可贵,花点时间没关系的),当时我想的是要走两条路,一个是产品助理,一个就是接着前端了。我其实已经在思考变局这件事。所以也算是一次尝试。虽然尝试的结果并不好,没有什么机会




  回归正题,我当时还是首选的上海,在上海找工作,也面试了几家。大概我总结一下啊,8月份的行情可以说是,一塌糊涂。首先我个人比较跨,特别大的公司,因为我学历的问题,基本是约不到面试的。我就讲我面的几家公司,总体是体量100多人的公司双休很少,大部分是大小周,100以下可能就是双休,但是你基本上要独立负责了。(当然我是没面过外包的,外包我个人觉得是可以的,但是我个人不怎么喜欢外包的氛围。如果给的多的话,无脑冲,哈哈)。后来因为个人感情问题也是决定去杭州,当时也是网上也是各种传递说,专科真别去杭州,一点机会没有,去了也是白去。但是我也是对感情一腔热血啊,直接就冲了。发现没有想象的那么差,机会也是有的。也大大小小的面了不少的公司。就突然觉得运气大于努力了!为什么这么说,因为无论是我在上海或者是杭州,面试的时候都会有觉得不错,而且回答的很好的时候。但是往往这些就是说,回去等通知,因为我这边还有约的。到时候通知你,当然也可能遇见过。这时候你自己回家的时候就会有幻想,觉得嗯,可以,应该没啥问题。可是这些往往没了后续。也遇见过说,技术面过以后,说你要的薪资我们肯定给不到的,你能接受多少多少吗?这时候你看下招聘信息,你就挠头,心里想着:“啊,不是,招聘信息上不是有吗”。为啥又给不到,那你就要说的低一点,试试能不能行。然后照常等通知。再遇见,去面试,花了很久过去,然后人事说 技术开会,人事说,技术出差,人事说,技术这会在忙。然后让你等一会,等一会人事就会告诉你,今天不行了,等晚上技术给你电话面试。然后你就点头说,好好好,那晚上几点呢?8点钟吧。ok这时候你已经得到了有用的信息,准备回家了。开始回家准备,7点半就已经严阵以待,8点钟没有电话,8点半没有,9点了你开始想用招聘信息联系一下,然后得到的信息是,技术忙忘了,明天吧,,我只想说别等了,等不到的。再有的,在面试过程中,面试官上来用他自己很明白很清楚的话术问你问题的,你知道,但是你听不懂他先问啥的。这时候你就怀疑自己,我是不是不会,没遇见过。不妨你再问一边,你说,你能把这个问题举个例子吗?可能这时候你就会豁然开朗,原来他问的是这个。我个人遇见get 跟git 一个发音的,导致他觉得我没用过。我为什么会知道,因为他问的问题我基本没答上来。最后他让我问他有什么问题的时候,我才给他说,我说你想问什么呢?你问的我咋都没听过,然后他就开始给我解答,他问的问题是什么,我知道以后我都裂开了。你这问的跟你刚刚问的有关系吗?害,当时觉得自己小丑。当然结果肯定不过。那时候就陷入了一个很奇怪的误区,我每天那么努力,去背,去准备。结果完全用不上。




  看了看那些找工作的群,很多人不如你,却都拿着比你高的工资,嘴里说着不知道为啥就过了,也没问啥问题,就过了,听见后。心理一阵恍惚。觉得自己运气真差啊。真不争气啊。不知所措,迷茫冲上心头,就是不知道差哪了,虽然不入那些真正的大佬牛皮,可是也比刚出来的培训生好吧(这里解释一下,没有其他意思,个人帮很多培训的看简历,以及回答问题,如有冒犯,本人现在就很对不起,可私聊喷我,当场对不起,评论区还是正向一点),为啥事事不如意。然后就那种失望的情绪会笼罩你,会让你觉得,努力不过如此。




  努力,百度百科里是这么解释的:努力指用尽力气去做事情,后来指一种做事情的积极态度,当我们失去积极的态度的时候我们其实压根就没努力。那运气,百度百科里是怎么写的呢,某种事件发生的概率微小、随机性强、无法计算且不可控制的情况下,事件结果产生后恰好与某人的猜想或个人情况决定一致,并且在现实中发生一般为不可思议或完全不可能存在的背景下发生的事件。这句话不做任何解答,自己多读两遍,然后再去认知你的努力。


结束啦


  其实我写的东西很简单,又很生活,讲不出来大道理,聊不出人生观。只有生活,也只是我自己的生活。你们的生活嘛,当然是要 努力 .那运气呢?你们肯定都是有的,如果自己最近运气不好也没有关系。去走一走,转一转,可能你的运气,就会来了。各位也可以评论一下,各位对运气还有努力的看法,评论我会认真回。这篇文章如果有冒犯到的地方,也请见谅。


作者:想努力的菜菜
来源:juejin.cn/post/7295328074601218060
收起阅读 »

因为山就在那里

第一次爬北京的山,看到了不一样的风景,也收获到了意外的体验。虽说是3A级景区,但这次给我的体验远不止3A,恰巧赶上了日落,路上遇到了小猫,2000多米的爬山体验,给我的感觉是,棒极了。 千里之行,始于足下 也许是最近在学校待久了吧,课堂上一些公式化的学习生活...
继续阅读 »


第一次爬北京的山,看到了不一样的风景,也收获到了意外的体验。虽说是3A级景区,但这次给我的体验远不止3A,恰巧赶上了日落,路上遇到了小猫,2000多米的爬山体验,给我的感觉是,棒极了。




千里之行,始于足下


也许是最近在学校待久了吧,课堂上一些公式化的学习生活有时让人觉得些许枯燥,刚好最近特别想去爬山,想去那就去呗!于是乎,我咨询了一下经常在北京各大山区骑行游览的同学,他随手推荐了离学校不远的蟒山。我上地图搜了一下,在网上简略地看了一下攻略,就决定出发了。没想到的是,另外有两位同学也打算出去走走,我说,那就一起呗,反正也不远。就这样,我收获了两个小伙伴。出发前,我东西收拾得差不多了,但我依然还在想是不要再准备些什么?思索了一下,我觉得不用再考虑太多了,千里之行,始于足下,想做就直接去做先,直接行动起来!




山路崎岖,拥抱自然


在到达正式爬山之前,其实还是经历了许多的小插曲。当天我们三人是坐地铁到达关东站,然后骑着共享单车去到蟒山国家森林公园的入口。但是骑到一半突然觉出似乎山区附近没有停车点,于是本来已经快到山脚下的我们决定原路返回一段距离去最近的停车点。好在最近停车点不远,也没有迂回多少。之后我们开始等公交,可等了一会儿也没见车来,我索性提出直接打车,然后刚打车就有师傅接单了,发现路费也不贵,其实也就10来分钟的路程,不过上山有点坡度,所以骑车可能会久些。就这样我们来到了入口。检完票进去后就面临路线的选择,我想着先从山脚走起吧,就先往文化广场的方向走去。蟒山森林公园其实好多小景点都别有一番风味。


一走进森林公园,给我的感觉就是:“清爽”!在这里,你可以深吸一口气,不用担心烟尘啥的,这里的空气让人很舒服。旁边这些小树林也别有也一番风味,阳关透过枝叶映射在地面上,一条一条的,很有感觉。最重要的是,这里人流很少,是真正的清净!路上有很多的休息椅子,累了也能随时坐会儿,开始给我一种真正世外桃源的感觉。





在体验一番过后,突然来到了观蟒台,说实话, 我好像没咋观出哪里是蟒,可能是还在蟒山脚的缘故,看得不是很开阔,但是风景还是不错的。之后我们开始往山上的方向走去,途中经过了蟒山叠翠、碑林、然后就到了文化广场,广场上面有个水池(忘记叫什么了)。这些景点我个人感觉不是很惊艳,但也算是有该有的吧,水池是个环形的,能看到山的倒影,也算还行吧。




山不向我,我向山去


经过这些小景点的兜兜转转后,我们才算最终踏上了通向山顶的道路,也能明显地感到坡道有些坡度了。我们往五观台的方向爬去,五观台,听说是观五样东西,一个是京城什么的,一个是水库什么的,其他几个也记不太清了,反正就是看五样不同的景观。开始上去的时候有路牌提示,说据顶点还有2000来米,大约需要2个小时,当时看了还是有些吃惊的,竟然这么高吗?没事,反正我也没咋去过,就直接上呗。于是,一个接着一个的台阶就这样在我的脚下流过。



开始的山景似乎没特别惊艳的,因为也许还没到半山腰,景色不是很丰富,但也有不同的植被,也能看到一些小山的景色。一开始觉得没什么难爬的,可能会稍微耗点体力,但是走了一小阵后发现确实有些小累,于是我们开始稍微歇会儿。歇会儿过后又继续前进,路上也碰到了一些来爬山的人,不过也不多。我们一路走着,路上也有不一样的景色,当我们走着走着时,发现太阳似乎快要落山了,有一个角度望去特别的好看,突然的这样的景色也让我给惊艳到了。





不知为什么,从此刻起,突然觉得现在山上的景色好好看,让原本些许累的我们也放松了一下,脚上的累也消了不少。就这样,我们一边欣赏着夕阳,一边继续前行。路上还遇上了一只“学长”,“学长”挺胖挺可爱的。



太阳马上就落山了,我们也目睹了这场绝美的日落







其实太阳落得很快,估计就几秒的时间,可能美好的东西总是很短暂吧!这也让我想起了“夕阳无限好,只是近黄昏”,但是呢,我又觉着“莫道桑榆晚,为霞尚满天”,虽然从岁数来说,放在我们身上不太合适吧,但是我觉得从做事角度,其实还是要怀抱希望,做自己热爱的,现在出发去做,不会太迟。我没有用手机录下它日落那一瞬,而更多是用眼睛去感受了。


半山腰有些拥挤,到山顶看看




太阳已经落山了,但距离山顶还有一段距离,考虑到待会还要下山,心里有些犹豫。但是呢,山顶就在眼前了,总得去看看吧,反正现在也不算太晚,路上还有些人,于是我们就一鼓作气,冲向了山顶。



可能是冬天+北方吧,天黑得比较快,这会儿月亮也出来了,人们也点起了灯火,从山顶上望去,夜景还是挺好看的。




天黑了,也不敢待太久,稍微看看后就下山去了,幸好我们有三个人,不然我还真不敢上来。


总结


本次爬山给我的收获还是挺大的,在山里面,花花草草,虫虫鸟鸟,一山一木,一水一露,让人感到十分清净。我觉得的是,得顺其自然,做你想做的事,有想法就直接行动;做你热爱的事情,喜欢才会有动力;做能让你感到开心和快乐的事情,不必背着自己的内心,做一些不开心不快乐的事。很喜欢的的一句话:“为什么要登山?因为山就在那里”。是的,山就在那里,它们不会走动,你去它那,它就会给你反馈,给你舒心。也许它们不会说话,但是它又无时无刻不在与你互动呢?偶遇的绝美日落,半山腰出现的“可爱学长”,问鼎山峰后的夜景,这才是真正的交流,所以,喜欢就去做呗,不用太在意结果,路途中的美景本身就是一种收获,在过程中,也许就能找到答案了。


作者:椰佬小KK
来源:juejin.cn/post/7302371147978113078
收起阅读 »

学习能力必然是职场的核心能力

最近新工作的编程语言换为了Golang,同时也在面试招聘相关岗位的人才。通过简历面试(别人的经历),以及自己的亲身学习经历,真切的感受到学习能力将是未来的一大竞争力。 从面试方面来看,大多数人工作稳定之后便失去了学习能力,以为现在的工作可以长久的干下去。结果,...
继续阅读 »

最近新工作的编程语言换为了Golang,同时也在面试招聘相关岗位的人才。通过简历面试(别人的经历),以及自己的亲身学习经历,真切的感受到学习能力将是未来的一大竞争力。


从面试方面来看,大多数人工作稳定之后便失去了学习能力,以为现在的工作可以长久的干下去。结果,互联网的风停下来之后,市场的需求变了,从单一的编程语言、单一业务的能力变成更加综合的能力,需要的人逐渐变为T型人才甚至π型人才。此时,学习能力就变得更加重要。否则,面临的只能是市场的淘汰。


下面分享一下自己最近三周学习Golang的一些经验和方法,大家可以拿来借鉴的其他学习方面上:


第一、实践。任何的学习都离不开实践。不能够运用到实践中的学习大概率是无效学习,而实践也是学习最有效的手段。在刚开学学习Golang时,找了一份基础语法的文档,花一两个小时看了一遍,知道常见的语法结构怎么用的,便开始搭建项目,写业务功能。其实这样的效果最快,以具体的功能实践来驱动学习,同时把对这方面的手感和思路锻炼出来。


第二、系统学习。单纯动手实践的过程中会掺杂着业务逻辑的实现,学习效率和范围上会有一些局限,属于用到什么学什么,缺点是不够系统。这时还需要一两本书,通读全书,帮助系统的了解这门语言(或某个行业)是怎么运作的,整个生态是什么样的,底层逻辑是怎样的,以便查漏补缺。在系统学习这块,建议以书籍为主,书籍的优势就是方便、快捷、系统、准确。


第三、交流。之前找一个懂的大佬请教和交流不是那么容易。但随着AI的发展,交流形式不仅仅限于大佬了,也可以是GPT。GPT最强大的能力是无所不知,知无不言。当然,对于它提供的结果也需要辩证的去看,某些地方可能会有错误,但大方向基本上是没错的,再辅以佐证,基本上能够解决80%的问题。


如果有机会参与面试,无论是作为面试官或者被面试者,都是一个交流的过程。在相互沟通的过程中了解市场需要什么,市场流行什么。


最后,针对某些问题,还是得去跟大佬交流才行,交流的过程中会碰撞出很多火花来。比如,不断的迭代某个算法,学到更好的实现方式,了解到你不知道的知识点等。曾经,一个字符串截取的功能,与大佬交流了三次,升级了三版,也学到了不同的API的使用方法和特性。


第四,输出。检验是否学会的一个标准就是你能否清晰的给别人描述出来,让别人听得懂。这一条是否很耳熟?对,它就是费曼学法,世界公认的最快的学习法。如果没办法很好的表达,说明这块掌握的还不是很清楚。当然,这个过程中也属于交流,也会拿到别人的反馈,根据别人的反馈来认识到自己的掌握程度和薄弱点。


第五,利用别人的时间。个人的时间总是有限的,不可能什么事情都自己做,也不可能都亲手验证。而作为管理者,最大的技能之一就是靠别人、靠团队来实现目标。那么,一个技术方案是否可行,是否有问题,也可以交给别人来调研、实践、验证。这样,可以让学习的效率并行起来。


另外,我们可能都听说过“一万小时定律”,这个概念是极具迷惑性的,会让你觉得学习任何东西都需要花费大量的时间的。其实不然,一万小时定律指的是学习一个复杂的领域并且成为这个领域的专家。


而我们在生活和实践的过程中,往往不需要什么方面都成为专家,只需要知道、掌握或会用某一领域的知识即可。对于入门一个新领域,一般来说,可能只需要20小时、100小时不等,没有想象中那么难。对于一个懂编程语言的人来说,从零学习另外一门语言,一般也就一两周时间就可以上手了。因此,我们不要对此产生畏惧心理。


上面讲的是学习方法,但最根本的是学习的意愿。你是选择花一年时间学习一门技术,然后重复十年,还是愿意每年都不断的学习迭代自己?两者的结果差距超乎你的想象。


作者:程序新视界
来源:juejin.cn/post/7257285697382449189
收起阅读 »

技术管理经验

做了几年的技术管理,简单几点经验可以分享交流一下,管理比起程序还复杂很多,因为一个面向人,一个面向机器,不能以相同的方式来思考,重点是找到平衡,不能用一种方式解决所有问题;好的管理者日常要看的面相非常多,尤其是一、二线带团队,不仅要关注好每个人,同时还要能做好...
继续阅读 »

做了几年的技术管理,简单几点经验可以分享交流一下,管理比起程序还复杂很多,因为一个面向人,一个面向机器,不能以相同的方式来思考,重点是找到平衡,不能用一种方式解决所有问题;好的管理者日常要看的面相非常多,尤其是一、二线带团队,不仅要关注好每个人,同时还要能做好承上启下的作用,要做到面面俱到难度十分高,以下就根据几个维度来分享我自己的经验。


做一个自己都喜欢的团队


每个人带的团队都会有自己的风格,我对自己的要求就是创造自己都愿意待的团队,至于什么是我自己喜欢的团队,简单归类了几个要点,有目标、有空间、有坚持,有明确且有挑战的目标,有足够的空间和舞台来发挥所长,有耐心能坚持做正确的事,能有机会和一群伙伴来达成目标真的是再幸福不过的事,这过程肯定会遇到无数的问题,只要确认不断保持向前,坚持就是胜利✌️


找到共同的目标,坚持做对的事


很多时候团队会存在支持多个目标/业务,这时候就必须类似技术抽象一样的来找到团队内的最大公约数,不一定只有一个但必须要有,核心点还是找到共同的目标,有了共同目标、愿景后可以更好的凝聚方向。


如果一个管理者只是在做分配资源的事,那么还不如不要这个管理者,毕竟传声筒的工作完全可以交给系统解决,例如团队 OKR 只是把每个小方向聚合,那么团队大概率是没方向,等待着别人来推进。


换位思考,保持沟通,面对的是人不是机器


任何沟通最重要的就是换位思考,如果能做到这件事大概率沟通上可以减少很多问题;沟通的过程重点应该是通,关键点不是自己说了多少或做了多少,而是对方获得了多少,多理解对方背后考量的因素,去解决问题而不是解决出问题的人。


过去常听到对于技术人的评价是 “无法沟通”,这种情况大概率是双方没找到频率,每个人都有自己习惯的沟通方式,作为管理者应该要在团队内帮助大家达成一种沟通默契,不应该要求所有人都能使用同一种方式来交流,以及该有的底线划清楚;非常多优秀的人是很有个性的,懂得如何把这样的人摆好位置,会比起把这样的人驯服更有意义,只要在影响范围可控的情况下,应该多花点时间思考在整体排兵布阵。


团队成长 > 个人成长


带团队后最大的不同点就在于需要思考的是整个团队的产出,而不是自己的产出;尤其是原先自己是同团队最优秀的成员因此被提拨出来作管理,自己原先是其他人的 150% 以上的贡献度,但开始带团队后必须要能接受自己的产出会大幅下降,可能自己剩下 50%,团队其他人提升 20%,达到团队整体产出提升。


放权、给予试错空间很重要,想要让团队成员成长势必要让他逐步能承担起更重要的责任与任务;以战养兵是在工作中很好的方案,过程给予适度的辅助与容错,很多错没经历过是不会懂,读万卷书不如行万里路。


建团队,招聘 培养 汰换


建团队是每个管理者都会面对的问题,团队人才密度、人才水平都会决定采用不同的管理方式,其中招聘我认为是最重要的,这关卡的越严格后面就会越轻松,强烈建议这关必须把握好底线,水桶永远会从最低的那一边开始漏水。


招聘是一门大学问,坊间也有很多相关的书籍介绍,并且有专门的服务和职位,在这就以用人的部分来谈谈,一般我自己决定用人就两个原则,“我是否愿意汇报给他/她?”或 “我是否愿意把背后交给他/她?” 这两个问题概括大量的信息和判断,包含当前/未来是否需要这样的能力、团队匹配度、潜力和领导力等,团队整体布局上最好能保持更多元,并且别怕团队成员能力超越自己,就像曾子说的 “用師者王,用友者霸,用徒者亡。”


培养简单可以分为两块专业和软素质,专业部分培养一般相对容易,刚好是相同专业可以直接指导,如果是不同的领域可以找外部进来帮忙,软素质部分大多还是依靠团队日常培养,这块重点主要还是言传身教,身为主管日常的一举一动都会成为团队同学的标杆,因此必须对于自己的言行有一定的要求,尤其是公开场合。


汰换对管理者来说是个很重要的责任,尤其在面对这个环节一定要慎重的考量,要对于每个汰换最好都能有记录留底,帮助自己复盘;一般来说必须找到当前的瓶颈,究竟是卡在事还是人,如果是卡在人,也必须分析清楚原因,因为造成团队不稳定因素?潜力?阻碍团队发展?包含考虑这个瓶颈是不是自己。


1 to 10,10 to N,定义规则


团队 <10 的时候可与所有团队成员都非常的亲近,能明确的知道每个人在做些什么,甚至是团队成员家里的猫受伤了都能知道,在这个时期管理的负担并不是特别大,至少能有一半的时间能在执行日常工作,这时期可能会出现蜡烛两头烧的情况,必须要能尽快的找到平衡点,不需要扣每个细节,但要抓准方向。


团团在 >10 后在 <=15 可能整体变化不大,不过可以很明显的感受到管理成本提升,这个时期会慢慢的开始发现到靠着过去手把手了解细节方式精力会严重不足,需要靠着各种规则、规范来达到找寻最大公约数。


随着管理的范围越大会发现想要知道每个同学的情况不现实,靠着规则来减少管理精力,引导团队走向正确的方向,这其中会有很多的权衡,出现很多错误解读或过度解读信息的问题,通过不断的调整来达到平衡,然而这个平衡是来自于成熟度及规模。


Netflix 的团队有出了一本《零规则》,描述的是大多更像是以原则来取代规则减少理解成本,相信每个人都能按照规则走,再定期抽查的机制保障,从书中来看是可行的,为了适配不同地区文化不同也做了适度的调整,是一种感觉可行的模式,但还是要根据当前团队情况调整。


绩效管理


绩效只是管理的工具和手段,通过这个工具来帮助团队发展和个人提升,让每个同学知道自己阶段的优缺点以和校正方向,让好的更好,阶段性不好的同学能找到方向,达到个人和团队的成长。


绩效管理一定要记得 “功在平时”,绝对不能把绩效管理作为周期性的工作处理,日常付出的越多在绩效评分的时候问题就越少,同时也能帮助绩效沟通上更顺畅,把事情放到最后一刻很容易造成意外,一个不小心就成了事故。


不能忘本


大多技术管理者都是从 IC 开始,保持手感很重要,随着管理的幅度增加会大量降低自己的时间,最好还是能保持着写代码的手感,过往的经验能帮助增加判断力,但技术是不断在翻新,缺少了手感短期可能问题不大,要是习惯了会逐步脱节,严重点就会出现 “技术官僚” 问题,毕竟迭代这么快,哪怕知道原理也容易出现多个类似产品出现后该如何更好的判断问题。


多体验自己做出来的东西,感受技术带来的价值,相信自己每一行代码都在提升人的生活水平,而不是完成一个个任务;技术是个很不同的工种,除了使用工具还能够创造新的工具,为别人提升效率同时也能为自己提升效率。


小结


修身 齐家 治国 平天下,先能以身作则才能更好的要求其他人,让更多人能一起朝着相同方向前进,就像优秀的技术管理者大多也会是个优秀的 IC;保持同理心,多换位思考,帮助更多人激发潜力,各自发挥所长并找到其中的平衡点,这门学问就像是艺术一样的有趣。


到今天仍然觉得自己不是个合格的管理者,还有很多事要学,还有很多要改,没办法做到完美,只能尽可能在前往更好的路上加速前进着,欢迎各种交流讨论,互相学习🤝


作者:iskenhuang
来源:juejin.cn/post/7268301435066368035
收起阅读 »

程序员接外包的三个原则以及有意思的讨论

原则一:乙方来做决策 最终拍板人是谁?是甲方,如果你非要抢板子,那你以后就没有甲方了 但是,如果甲方也觉得“我花钱了,当然要听我的(那些只对上级负责又不能拍板的底层打工人,总是这样认为)”,那这种甲方的项目你就不要接 因为在这种甲方眼里,你只是“施工方”,他...
继续阅读 »

原则一:乙方来做决策



  • 最终拍板人是谁?是甲方,如果你非要抢板子,那你以后就没有甲方了

  • 但是,如果甲方也觉得“我花钱了,当然要听我的(那些只对上级负责又不能拍板的底层打工人,总是这样认为)”,那这种甲方的项目你就不要接

  • 因为在这种甲方眼里,你只是“施工方”,他们即不需要你的经验价值,更不会为你的经验买单。所以这种甲方你会做得很累,当他们觉得“你的工作强度不足以匹配付给你的费用时(他们总这样觉得)”,他们就会不停地向你提出新的开发需求

  • 所以,你要尽量找那种尊重你经验价值,总是向你请教,请你帮他做决策的甲方


原则二:为甲方护航



  • 甲方未来会遇到什么问题,你们双方其实都不知道,所以你需要一边开发一边解决甲方实际遇到的问题。

  • 因此,不要为了完成合同上的工作内容而工作,要为甲方遇到的实际问题,为了甲方的利益而开发,要提前做好变通的准备。

  • 永远不要觉得你把合同上的功能列表做完,你就能休息了。你要解决的真正问题是,为甲方护航,直至甲方可以自己航行。


原则三:不做没有用户的项目



  • 如果甲方的项目没有太多用户使用,这种项目就不要接。

  • 除了代码的累计经验,还有一种经验也很重要,那就是“了解用户的市场经验”

  • 只有真正面对有实际用户的项目,你才能有“解决市场提出的问题”的经验,而不是停留在“解决甲方提出的问题”

  • 拥有市场经验,你就会有更高的附加价值,再配上尊重你经验价值的甲方,你就会有更高的收入

  • 永远记住:真正愿意在你身上花钱的甲方,他的目的一定是为了让你帮他赚钱!


以上只是我根据自己经验的一家之言,可能对我有用,不一定对别人也有用。肯定还有很多有价值的原则,希望大家根据自己的经验一起来分享。


下面是一些有意思的讨论


原则 2 、3 都是虚的,就不讨论了。

只说原则一:


一般而言,甲方跟你对接的,一定不是老板。

所以他的核心目的一定是项目实施成功。

但项目是不是真的能给企业带来效益,其实是优先级特别低的一个选项。


拿日常生活举个例子。夫妻、情侣之间,你媳妇儿托你办个事,比如让你买个西瓜。

你明知道冬天的西瓜又贵又不好吃,你会怎么办?


A ,买西瓜,回去一边吃西瓜一起骂水果摊老板没良心。

B ,给你媳妇儿上农业课。然后媳妇儿让你跪搓衣板。

C ,水果摊老板训你一顿,以冬天吃白菜豆腐好为由,非卖你一颗大白菜。你家都不敢回。


这里面,你就是那个甲方对接人。你怎么选?


所以乙方一定不能做决策。乙方做决策的结果,就是甲方对接人被利益集团踹开或者得罪甲方对接人,最终导致项目失败




我也来说三个原则

1.要签合同,合同越细越好;

2.要给订金,订金越多越好;

3.尾款不结不给全部源码。




原则一:外包大部分就是苦力活,核心有价值的部分有自己公司的人干轮不到外包,你不干有的是人干,不会有人尊重你经验价值,甲方说怎么干就怎么干,写到合同里,按合同来,没甲方懂自家业务,别替甲方做决策,万一瞎建议导致项目出现大问题,黄了,外包钱都拿不回来


原则二:给多少钱办多少事,如果甲方给钱痛快,事少,可以看自己良心对甲方多上点心,否则别给自己加戏,不然很可能把自己感动了,甲方却想着好不容易碰上这么个人,白嫖


原则三:不做没有用户的项目,太片面,不是所有外包项目都是面对海量用户,但是做所有外包项目都是为了赚钱,假如有个富二代两三万找你做个毕设,简单钱多不用后续维护,这种接不接?假如某工厂几十万定制内部系统,可能只有几个人用,这种接不接


总之外包就是赚个辛苦钱,别指望这个来提升自己技术和自我价值,外包行业水太深,你这几个原则都太理想化




某富豪要盖一栋私人别墅,招建筑工人,现在缺一名搅拌水泥的工人,

找到了张三,张三说我去过很多工地,啥活儿都干过,经验极其丰富,我可以指导一切事物,我再给你兼职当个总设计师吧,一切事物听我的决策没错。

我每天做完我的本职工作搅拌水泥砂浆,我还能熬夜给建筑设计布局,风水,房间规划,材料采购等等,我啥都会,直接干到建筑完工

富豪很感兴趣,说那你来吧,我盖的是自己住的别墅,张三一听连连摆手:你是盖私人别墅啊?不行不行,我不去了,我以前盖的都是高楼大厦,住户多对我技术水平有严峻的考验,做成了对我有很大提高,私人别墅才几个人用,对我职业生涯一点帮助都没




永远不要接外包

这才是正确的答案

做私活的时间

不如自己休息休息,陪陪家人




屁事真多,有钱就行了,管他项目有没有人,人家产品低能你还得兜底,接外包考虑的是能不能满足需求。啥条件啊还能挑三拣四,给多少钱干多少活。 招投标接的 30 万以上的项目才有可能考虑你说的这些东西。





呵呵 我的意见是:



  1. 给钱就做(前提是合规,不是合理),先给定金,拿到定金开工。

  2. 遇到扯皮,就停止开发。

  3. 要有空闲的时间,偶尔做做(上面说的对:永远不要做外包)。


展开来说,做外包的长期收益很低。就当临时玩一下,所以给钱就做,不管你的需求合理不合理,比如甲方想给智障人士开发一款数独小游戏,好,给钱,签合同,支付定金,开工。


开工了3天,甲方突然说,那个我想加个魔方游戏。不好意思,不行,立即停止开发,开始和甲方掰扯,如果掰扯不明白,就终止合同,如果掰扯明白就继续。


不说了,我要和甲甲甲甲甲方掰扯去了。


作者:Data_Adventure
来源:juejin.cn/post/7256590619412676663
收起阅读 »

再高级的打工人也只是打工人!

再高级的打工人也只是打工人! OpenAI CEO 奥特曼被罢免的事情人尽皆知「虽然,今天又复职了。。」,我们能从中学到什么呢? CEO 也能被裁,这应该是最近几年被裁名单里面,职级最高的一个人了吧。你再也不用担心给别人说自己被裁有多丢人了,因为 CEO 都...
继续阅读 »

再高级的打工人也只是打工人!


OpenAI CEO 奥特曼被罢免的事情人尽皆知「虽然,今天又复职了。。」,我们能从中学到什么呢?



CEO 也能被裁,这应该是最近几年被裁名单里面,职级最高的一个人了吧。你再也不用担心给别人说自己被裁有多丢人了,因为 CEO 都会被裁。


另外,我想说,再高级的打工人也只是打工人!


作为打工人,被裁,尤其是这几年,是在是再正常不过的事情。尽管 CEO 的罢免和总裁的辞职对于外界来说可能是一个令人震惊的消息,但在公司内部,这些变动可能只是公司内部的调整和重组的一部分。


因为,再高级的打工人对于整个公司来说,都不是不可替代的。甚至,连公司的老板也不是不可替代的。国内很多大公司都开始这么培养接班人,离开了老板,公司照常运转的公司,才是一个体制健全的公司,这样的公司才能实现基业长青!当然,老板的不同在于,自己能决定自己什么时候离开。


不管是谁,当公司想裁你的时候,你就不再重要,就跟我上次被裁一样,上午还在写需求、改 bug,下午 6 点多通知被裁,第二天就不用来了!虽然这个对比优点不恰当,毕竟我对于公司来说只是一个普通打工人。


一声被裁,马上就得搬着东西走人。



当然,对于奥特曼(Sam Altman)这样的人来说,被裁不像我们大多数人一样需要考虑下一份工作、生活有没有保障、房贷能不能还上等一系列生存问题。


但是这件事也提醒了我们,无论我们的职位有多高级,我们仍然处于职场中不可忽视的变化之中。因此,我们应该时刻保持敏感和警觉,不断更新自己的知识和技能,以应对潜在的职业变动和挑战。


尤其是对于很多大厂中低层管理者而言,放弃了技术,管理能力也不见得有竞争力,毕竟国内大部分管理者都是野路子,没有经过系统的学习与培训。


如果你放弃了技术,之后因为各种原因被裁,那你可能还不如底层员工,他们还能更好的获取下一份工作,毕竟金字塔的底层岗位最多。


那我们能做什么呢?


做一家「一人企业」。什么是「一人企业」,就是把自己当做一个企业、一个产品来运营,来推销,把自己的能力最大化。


什么人适合做「一人企业」呢?借用饭大的话来说:主业稳定、有时间&有乐趣、不躺平&能利他。



所以,我不是在劝你无脑去干,而是满足了这三个条件,你再去干,你也应该是去干。


当自己的老板!


作者:伍六七AI编程
来源:juejin.cn/post/7302644330883727360
收起阅读 »

一个30岁专科java猿自白,对苍白的现实不妥协!!!

🙈 序言 时光弹指一挥,三十而立的年纪,生活在自己眼里,可以说一地鸡毛… 我通过这篇文章来分享我的经历,在软件行业栉风沐雨的六年… 🚂 茫 16年专科毕业,确切的说是在英雄联盟游戏里毕业,夙兴夜寐的三年,在游戏、吃喝上忙碌,一周7天,五个通宵。就这样,从学校出...
继续阅读 »


🙈 序言
时光弹指一挥,三十而立的年纪,生活在自己眼里,可以说一地鸡毛…
我通过这篇文章来分享我的经历,在软件行业栉风沐雨的六年…


🚂 茫
16年专科毕业,确切的说是在英雄联盟游戏里毕业,夙兴夜寐的三年,在游戏、吃喝上忙碌,一周7天,五个通宵。就这样,从学校出来,开始做销售,第一份工作,卖鞋油,给别人擦鞋,三月后,去了企业管理咨询公司,卖课,做了半年,兜里比脸还干净,又去做保险,更惨淡,就这样,17年,踏上北漂之路!


image.png


🪂 17 入行


17年三月,清楚记得自己报道的日子。七天的基础班,倒数第一名的成绩,差点把我劝退,硬着头皮坚持,扛下来了,我是最笨的人,但也是最努力的人,培训的那半年,每天早八点,晚12的敲代码。只因为,这是自己唯一的退路!半年后,我是班里第二个找到工作的人,入职某外包公司,现在想想自己那时候的选择,还是有一些遗憾。


image.png


☠ 18 踩坑最多的一年
拿到第一个月工资的时候,简直不敢相信,激动的和家里人分享。如果不做这个行业,我觉得月薪1万1很可能就是做梦,现在我也能理解到认知那句话了。这算是第一次找到了自信,在工作上有了结果。工作没想象的难,但也非常难受,学习能力方面确实和本科是有差距,纯野路子,没有什么专业基础,为此,18年,加了很多班,通宵达旦的修复很多自己写的Bug,后来,能力得到认可,当然,这是一点一滴的积累,血和泪只有自己知道。


🔥 19 裸辞
18年上半年买了房子,开始背负房贷,又贷款买了车位,这个时候每月贷款就需要还6K,去掉房租,生活费,身无分文,很多个夜晚挣扎着无法入睡,在压力驱使下,不得不找一个薪水更高一些的工作,找工作的过程对我的打击很大,找了将近一个月,才得到一份工作,比原来高2K,14薪,不过是内部员工,这一点是值得欣慰的。在找工作的过程中能明显感觉到社会对专科的歧视很大,因为有很多聊的很好的场面,但都是因为学历失之交臂!
这一年,我成了开发组长,管理四五个人开发,说组长感觉又不太合适,因为自己的开发任务也比较大,就算这样,也还好,因为房贷压力小了,能腾出手忙一点发展的事儿了,这个时候,没有时间谈个人的私事,这一年,工作中忙碌,兼顾生活,贷款,家庭,遇到了很多研发方面的困难,不过都一一克服了,还获得了客户的好评,这儿就不细说了,后续博客会写一部分。


🤡 20 裸辞
这一年,房子交房了,要装修,除了贷款的压力,还得装修房子,在工作上,已顺风顺水,有啥困难都能解决,个人能力团队也都很认可,但薪水成了一个生活发展的阻碍,为此向公司提了一下涨薪,被驳回了。然后我又提出裸辞,公司开始打算涨薪挽留,我拒绝了!然后我又去了外包公司,只为多拿点钱,让压力小一些,把家里的事情处理完。


下图来纪念以下公司的前台!!!


image.png


🦧 21 沉淀
裸辞也算非常顺利,半月的时间就接上了,薪资的话18K。工作很轻松,很多任务都能快速高效完成,在这个空闲的时间里,也没有闲着,会读读书,思考一下人生的意义!以下是我读完的书!


image.png


读书给我带来了一些动力和精神的慰藉,我也没有想到,一个大学不务正业的人能够静下来看书看到一千多个小时!我读的书没有太多技术方面的,在那个时候最大的作用应该是抵抗那些来自生活得压力和孤独吧。这一年的收获和前几年相比来说,应该是人更平和了,不在那么功利和浮躁,开始看淡一些物质相关的东西!


🧸 22 被解雇
作为一个外包公司,服务的项目做完了,又赶上疫情,被解雇也算是顺理成章的事情,这个时候也没有埋怨,也赶上春节,在家里呆了半个月,就开始投递简历,心里想的是在奋斗一年,找个离家近一点的工作。这个时候的就业环境已经不太乐观了,就学历门槛就很卡了,复习了几天,然后面了三四家吧,就又踏上北漂征程,这次也是外包公司,薪资22K。
三月入职,9月晋升,薪水涨到24.3K,工作上没怎么加过班,工作时间内也都能很出色的完成任务,这一年的总结就是遇到了很多优秀的人,学到了很多方法论,自己更能独立解决问题,在研发层面能够结合业务提出更多的解决方案,的确,这一年做方案的能力很强了。


🎨 23 前篇裸辞
23年五月,通过了PMP项目管理考试,顺利获得证书。作为一个山东人,深受孔孟思想的影响,不孝有三,无后为大!如今也快30岁了,别说结婚,对象的影子也没见!这个压力也慢慢加到了生活了。当我感受到痛苦和不想漂泊的时候,今年五月底,我递交了辞职申请!
离职需要在呆一个月,处理一下自己手头的尾部工作和交接事宜,7月1号,踏上了回家的征程。我很感谢这个公司,让我经历压力没那么大了,房子装修完了,就剩贷款了!
用此图来纪念一下!!!


image.png


🎨 23 中篇挣扎
回到家,作为一个驾-照拿了八年没摸过车的人,这个时候买了车,找了个教练,练了练车,差不多了,就开始闭关一月,学习,看视频,属于恶补吧。
8月开始投递简历,本是泰安人,想在家乡谋一份差事,为家乡发展做点贡献,自己钱包也多一点,这个双赢的机会在我面了两三家公司后打消了念头。
开始投递济南的公司,面了一家,项目经理职位,16k,就去工作了,也是一家外包公司。局方公司背景还是不错的!
工作了三个月,我又裸辞了,原因是太累,在提升自己层面上,得到的比较少。因为有贷款的压力,我辞职是做了很大心理建设的!


image.png


🔅 23 后篇 展望
辞职后,无缝衔接了一家公司,就是专门做研发,薪资12K,大小周。没有嫌弃,没有抱怨。目前自己的想法很简单,就是打造自己的产品,能够拿得出手一些东西,比如博客,比如项目,比如情感的一些价值!以前的自己好高骛远,现在的自己更脚踏实地,一步一个脚印,把自己的价值分享出来,成就别人,也成就自己!


⚜ 未来我会怎么做



  • 做好自己的本职工作-核心

  • 少花一点时间放在娱乐上

  • 多做一些有价值有产出的事儿 比如博客 比如读书分享 比如研究新项目

  • 跟随趋势走 拥抱变化

  • 更好的利用技术而不是沉迷技术

  • 更平和的心态处事

  • 简单的态度生活处世 己所不欲 勿施于人


作者:码农佩奇
来源:juejin.cn/post/7303720074842652709
收起阅读 »

简历中的项目经历可以怎么写?

概述 工作这10多年来,也经常做招聘的工作,面试过的人超过50人次了,而看过的候选人的简历则有几百份了,但是清晰且能突出重点的简历,确实很少遇到。这里基本可以说明一个问题,很多候选人是不太清楚如何写出一份好的简历的。 下面基于简历中的项目经历,重点铺开说一下。...
继续阅读 »

概述


工作这10多年来,也经常做招聘的工作,面试过的人超过50人次了,而看过的候选人的简历则有几百份了,但是清晰且能突出重点的简历,确实很少遇到。这里基本可以说明一个问题,很多候选人是不太清楚如何写出一份好的简历的。


下面基于简历中的项目经历,重点铺开说一下。在社招中,项目经历面试官重点考察的地方。


写项目经历需要注意的地方


项目经历是介绍你实战经历的地方,同时也能反映你对已掌握的技能的使用情况。对于应聘偏技术类的岗位来说,这块非常的重要。


下面会以支付中心作为例子进行阐述。




  • 项目背景,也即是你一定要非常清楚启动这个项目的缘由是啥。如果这个都说不清楚的话,那说明,你真的就是埋头干活,偏执行的角色。对项目并没有一个整体的认识。就算你只是这个项目的普通参与者,也需要主动的去了解和理解该项目立项的原因。有个注意的地方是,项目背景的文字描述不要太长,一两句就可以了。比如说:当前支付中心耦合在订单系统中,为了提升支付模块的稳定性、维护性、性能和扩展性,需要将支付模块独立出来,统一为其他内部系统提供支付能力;




  • 项目功能介绍,介绍一下这个项目能做什么,有什么核心模块,需要应付什么量级的流量。以支付中心为例子:为内部的订单系统提供支付能力,对内提供了微信、支付宝、抖音、海外、信用卡、钱包、礼品卡以及组合支付的支付、回调、退款、查询、业务对账等能力。平时需要应付每秒1万的支付请求。




  • 技术架构设计,这里考察的是技术选型的严谨性和模块设计的合理性。如果项目用到了RabbitMQ、Redis、Kafka等一些技术,你自己心里一定有个底,就是当时为什么选用这些技术,是经过深思熟虑的吗?是经过了很多轮的技术栈对比后决定使用的吗。也即是技术选型是一个严谨的论证的一个过程。而设计这块,则要说清楚模块划分的缘由以及解决方案。还是以支付中心为例子:通过支付网关,对外提供统一的接口,而内部则通过支付路由模块,进行具体的支付方式路由,并把单独的支付方式,以物理单元进行隔离,避免各种支付方式在出故障时,相互影响。为了应付高频的支付动作,采用数据库分库的方式缓解写的压力。




  • 我负责的模块,如果你参与的项目是部门核心项目,但是自己参与的模块确是边缘模块或者只是参与了很小的一部分,虽然你也能在这个项目里,得到成长。但是那是称不上个人亮点的。因为面试官会更倾向于:你为这个项目做了什么贡献,因为你,项目有了什么好的改变和突破性进展。因此,做项目的时候,不妨跟自己的领导多反馈一下,希望能独立主导一些重要的模块。如果领导觉得当前的你还无法独立hold住重要的模块,你也不要气馁,平时多多提升自己,争取后续能主导一些重要模块。这个真的很重要,为了将来的自己,你必须得这么做。在做项目的时候,如果你长期一直起着螺丝钉的作用的话,对你极其不利,甚至可以说,你是在浪费时间。




  • 难点和踩过的坑,难点也即是亮点。在你负责的模块里,具体的难点是什么,你是通过什么方案解决的。而解决的过程中,又遇到什么大坑?怎么优化的。这个其实是一种引导,把面试官引入到你自己比较熟悉又印象深刻的领域,如果你准备充分的话,是能给面试官一个好的印象的,是能加分的。同时能解决掉难点,对自身成长也是有利的,且还能说明的你韧性不错,有追求。




  • 取得的成效,不能只是重视过程,而不重视结果,这是不可取的。你需要用结果和数据体现你的价值。比如说,支付中心上线后,你负责的业务模块,慢调用和慢SQL消失了,接口响应速度提升了10倍,上线半年,无任何大故障。等等。




项目经历写几个合适?


如果按照上面的的方式来书写项目的话,那每个项目的文字描述是不短的,一个项目的描述就大概要占用半页了。因此,简历里的项目不能太多,2到3个就可以了。项目主要在精不在多,把自己负责比较多的且能作为自己的一个亮点的核心项目,说清楚道明白,更为重要。


现在的你应该做什么?


赶紧好好总结一些当前和之前做过的项目,按照上面列的方式,好好梳理和思考一下,提炼一些重要的内容出来。争取能作为自己履历的亮点。如果你发现到目前为止,还没有能为自己带来竞争力的项目,那赶紧好好反思一下,赶紧争取去做。


小结


如果你不是什么名人或者知名大佬,学历和履历也一般般,那么你只能通过曾经做过好的项目来增强自己的竞争力了。HR也会通过你的项目经历来了解你的能力。项目经历一定要真实,要突出亮点和难点,并说清楚自己在项目起到什么作用。


作者:SamDeepThinking
来源:juejin.cn/post/7200953096893136955
收起阅读 »

我们工作快乐吗

工作满意度是幸福感的重要预测指标。对于工作有多满意,很大程度上也决定了对人生有多满意。有研究表明,在幸福感的所有预测指标中,工作仅次于婚姻。盖洛普公司主导了一次针对全球十几万人的调查研究,包括了从原始部落到现代文明的不同工作形态,结果表明,不管在地球的哪个角落...
继续阅读 »

工作满意度是幸福感的重要预测指标。对于工作有多满意,很大程度上也决定了对人生有多满意。有研究表明,在幸福感的所有预测指标中,工作仅次于婚姻。盖洛普公司主导了一次针对全球十几万人的调查研究,包括了从原始部落到现代文明的不同工作形态,结果表明,不管在地球的哪个角落,「一份有意义的工作可以显著地预测幸福感。」


在希腊神话里有这样一个故事,一个叫西西弗斯的国王,他自作聪明,戏弄了死神和冥王等众神。众神把他抓到阴间,给他一个恶劣的惩罚,他需要每天把一块大石头从山脚推到山顶,每当他正好要到达山顶的时候,大石就会滑落回山脚,西西弗斯只有顶着烈日,日复一日地将石头从推到山顶,如此循环往复。「西西弗斯这个故事代表了没有意义工作的极致,也是一项非常残酷的惩罚。」


著名的富士康连续自杀事件,在工厂车间,几百个工人,日复一日地做着重复而简单的工作,不就是西西弗斯的神话在现实中发生?在无休止的加班和重复劳动中,不知道工作的意义是什么,如此麻木而紧张的工作状态,导致了最终的悲剧。


上班如上坟:最糟糕的工作状态


现在有一句话描述的特别贴切——“上班如上坟”,这句话非常形象地表达出了最糟糕的工作状态。


马云曾经说过一个深受大家认同的观点,一个人离职,原因无外乎两点:



  • 钱没给够

  • 受委屈了


其实真实发生的离职情况来看,第二点的因素占绝大多数,当我们工作中遇到了很多不快乐的事情时,就会触发大脑的情绪思维,从而产生了离职的念头。


在互联网行业,大多数产生这种“上班如上坟”的状态是以下几种情况:



  • 「内卷」,一种是**「工作时长」上的卷,一天有做不完的工作,干不完的活,每天工作可能超过12个小时,甚至没有周末,类似于富士康的模式,简单低效且麻木,没有基本的休息时间保障;另一种是「内心」上的卷,可能是过高的要求,无法完成的目标,带来的无尽压力,产生了「绝望感和窒息感」**,长期在这个状态下非常容易出现心理问题。

  • 「得不到认可」,一直被领导PUA,这会导致一种无论如何努力都不被认可的无力感,产生非常大的精神内耗,会怀疑自己和否定自己,有很大的负面情绪产生。


一旦达到“上班如上坟”这个状态,实际上已经是非常糟糕的情况了。往往这种状态下,大家会选择摆烂,消极对待工作,逃避,有离职冲动等等,工作和生活都会受到极大影响。


金钱不过老六


在正式工作之前,我们对于薪资有无比强烈的渴求,那时的offer选择真的很简单,哪一家给的钱多就去。在工作之后,很多公司挖人的手段也是以高薪涨幅为第一吸引力,在环境比较好的时候,往往跳槽才是获得更高薪酬的最有效手段。


大多数打工人面临的是生存问题,大城市高额的生活成本,房贷车贷子女教育,是压在每个人心头的大山,尤其在深圳这样的地方,无数人在这个地方有着共同的目标——搞钱,金钱的重要性不言而喻。


但是,我们是否过于重视金钱而忽视了其他?在赫兹伯格的研究中,「金钱排在成就、认可、工作本身、责任、晋升之后」,在第6位,「前5项因素才是真正驱动员工的动力所在」


在赫兹伯格提出的著名的双因素理论中,金钱属于保健因素,它是必要的保障,只会让员工产生不满的情绪,而无法得到满意的情绪:


image


image


实际上,我们在跳槽拿到高薪的最快乐的阶段,是在拿到Offer后的那段时间,以及拿到第一个月的薪水的时候,其他的时间的情绪感受都与金钱本身关系不大了。


物质资源永远是有限的,在大幅度提高的情况下才能产生激励的效果。钱并不是万能的,从员工的角度来说,个人的身心健康应该是更重要的东西。


快乐工作的价值


谷歌在早些时候平均年薪仅在美国科技公司中排12位,但是却获得了最佳雇主排行榜的榜首。谷歌对员工开出了丰厚的条件:



  • 免费用餐

  • 班车接送

  • 股票期权

  • 发放IPad

  • 社交活动,比如瑜伽、葡萄酒、足球比赛、露天烧烤、吉他等

  • 健身房、免费按摩、免费理发、体能训练等等


这些福利并非浪费,盖洛普指出,员工满意度提高5%,连带提升11.9%的外部客户满意度,同时企业效益也会提升2.5%


后来这一类的福利策略也被其他公司纷纷效仿。快乐工作的第一步是需要有一个舒心的环境,让大家能够对公司满意,才能更加自发地了解探寻工作的意义。


Denison Consulting公司调查显示,员工心情不愉快的企业年销售额仅增长了0.1%,而心情愉快的同期增长15.1%。企业若能将员工满意度提高20%,便可将财务绩效提升42%


快乐工作,会让企业产率、质量、销售额、客户满意度、创新性、适应性都有一定的提升,降低员工缺勤率、跳槽率、紧张与疲劳感,这是雇主与雇员的双赢策略。


「我们需要追求的终极目标是,让工作成为一种享受。」


管理是控制还是服务


相信绝大多数的管理者认为管理是服务,但是在实际行为中却不一定,比如:



  • 不应该对员工说“谢谢”,这种假客气只会产生距离感?

  • 不需要征询员工意见,我对结果要负责应该我说了算?

  • 成功来自于能力和实力,与其他因素无关?

  • 无法容忍下属的挑战,有悖于合作的伦理并产生糟糕的示范效应?

  • 每个人都得为自己的情绪负责,管理还有更重要的事情要做?

  • 保持开放的沟通固然重要,但是很容易让员工自以为是,需要保持距离?

  • 比起目标、绩效、团队的前途,友善和蔼的风格只会让权威旁落?

  • 每天压力这么大,谁能有时间去培养员工提升他们的能力呢?

  • 授权并不靠谱,现在这个环境,更适合各司其职,稳稳当当?

  • 说实话,所谓的愿景和将来就是忽悠,我如何与员工谈论自己都不相信的未来?


这些问题能够帮助我们反思,自己究竟是在控制还是在服务,作为管理者,一个细微的举动可能在员工看来就会引起不小的情绪波动。


我们冷漠吗


工作氛围的糟糕,上班如上坟,十有八九跟管理者有很大的关系,更多的时候,冷漠与氛围直接相关,比如:



  • 同事见面都会热切的打招呼吗?

  • 同事们互相信任,困惑、焦虑和感受都能相互分享吗?

  • 大家在各种沟通场合中能够畅所欲言吗?是否藏着掖着?

  • 吃饭时会形成若干个自发团体吗?有人形单影只吗?

  • 下班之后同事还有可能有聚会吗?

  • 团队稳定性很高吗?团建大家都积极参与吗?

  • 新人容易融入吗?会有计划培养新人吗?

  • 奖励时常发生吗?无论是物质上的还是精神上的

  • 大家认可自己的工作是有价值的吗?

  • 领导的压力和情绪会透传给下属吗?

  • 领导愿意和员工单独交流吗?

  • 领导与员工相处舒服吗?

  • 领导善于夸奖人吗?


这些问题有助于判别团队的氛围如何,一个好的工作氛围,才能享受工作,激发更大的动力,这样的团队才能创造更大的价值。


内心驱动模式


从个人内心的动力上,大概可以分为三类驱动模式:


恐惧驱动



  • 害怕最亲近的人离开?

  • 害怕失去工作,失去工作能力?

  • 害怕失去健康?

  • 害怕不成功,窝窝囊囊过一辈子?

  • 害怕资产缩水,辛辛苦苦的钱贬值?

  • 害怕晚年凄凉,孤苦伶仃?

  • 害怕被领导同事瞧不起,不被认可?

  • 害怕家庭解体?

  • 害怕死亡?


责任驱动



  • 要对工作负责,我做事是有品质的

  • 要对同事负责,不能给别人带来麻烦

  • 要对领导负责,不能辜负他的信任

  • 要对父母负责,懂得报恩

  • 要对那一位负责,已经是利益共同体

  • 要对孩子负责,作好的榜样

  • 要对银行负责,需要还贷

  • 要对朋友负责,有真心的朋友不容易

  • 要对国家负责,民族的脊梁

  • 要对自己负责,希望回首往事不留遗憾


梦想驱动



  • 我想赚很多钱,可以衣食无忧想要什么就有什么

  • 我想成为大家都喜欢的人,因为我而快乐

  • 我想周游世界,看看外面的风景

  • 我想健康长寿,尽量活得久一点

  • 我想每天能够幸福满足,活出质感

  • 我想好日子延续下去,不要大起大落要平安喜乐

  • 我想大家都能够快快乐乐在一起

  • 我想做自己喜欢的事,可以不要为了钱而工作

  • 我想帮助更多需要帮助的人,人本来应该善良


在工作上,「责任驱动、梦想驱动占据主导地位的人是非常稀缺的」,作为一个管理者,如果因为自己,把这类人变成了行尸走肉,只剩下恐惧驱动,真的是最大的过错,令人发指,天理难容!


个人感悟


上班如上坟这种状态,十有八九都是跟管理者有很大的关系。在目前互联网增速放缓的今天,物质金钱上已经无法带来激励的时候,这类问题尤为突出。若工作氛围很糟糕,更是雪上加霜,团队没有凝聚力,无法获得更高的产出,导致更多的裁员,形成恶性循环。


在目前的大环境下,企业面对生存压力,沉重的指标压在管理者的身上,更需要管理者能够创造快乐的工作氛围,即使在互联网这个不得不加班的大环境下,也能够让工作成为一种享受,不要再让员工产生额外的内耗,驱动团队创造更大的价值,共克时艰。


作者:孟健
来源:juejin.cn/post/7292442438249791538
收起阅读 »

前段时间面试了一些人,有这些槽点跟大家说说​

前段时间组里有岗位招人,花了些时间面试,趁着周末把过程中的感悟和槽点总结成文和大家讲讲。简历书写和自我介绍今年的竞争很激烈:找工作的人数量比去年多、平均质量比去年高。裸辞的慎重,要做好和好学校、有大厂经历人竞争的准备去年工作经历都是小公司的还有几个进了面试,今...
继续阅读 »

前段时间组里有岗位招人,花了些时间面试,趁着周末把过程中的感悟和槽点总结成文和大家讲讲。

简历书写和自我介绍

  1. 今年的竞争很激烈:找工作的人数量比去年多、平均质量比去年高。裸辞的慎重,要做好和好学校、有大厂经历人竞争的准备

  1. 去年工作经历都是小公司的还有几个进了面试,今年基本没有,在 HR 第一关就被刷掉了

  2. 这种情况的,一定要走内推,让内推的人跟 HR 打个招呼:这人技术不错,让用人部门看看符不符合要求

  3. 用人部门筛简历也看学历经历,但更关注这几点:过去做了什么项目、项目经验和岗位对不对口、项目的复杂度怎么样、用到的技术栈如何、他在里面是什么角色

  4. 如果项目经历不太出彩,简历上可以补充些学习博客、GitHub,有这两点的简历我都会点开仔细查看,印象分会好很多

  5. 现在基本都视频面试,面试的时候一定要找个安静的环境、体态认真的回答。最好别用手机,否则会让人觉得不尊重!

  6. 我面过两个神人,一个在马路上边走边视频;另一个聊着聊着进了卫生间,坐在马桶上和我讲话(别问我怎么知道在卫生间的,他努力的声音太大了。。。)

  7. 自我介绍要自然一点,别像背课文一样好吗亲。面试官不是考你背诵,是想多了解你一点,就当普通聊天一样自然点

  8. 介绍的时候不要过于细节,讲重点、结果、数据,细节等问了再说

  9. 准备介绍语的时候问问自己,别人可以得到什么有用的信息、亮点能不能让对方快速 get 到

  10. 实在不知道怎么介绍,翻上去看第 4 点和第 5 点

  11. 出于各种原因,很多面试官在面试前没看过你的简历,在你做自我介绍时,他们也在一心二用 快速地浏览你的简历。所以你的自我介绍最好有吸引人的点,否则很容易被忽略

  12. 你可以这样审视自己的简历和自我介绍:

    a. 整体:是否能清晰的介绍你的学历、工作经历和技能擅长点

    b. 工作经历:是否有可以证明你有能力、有结果的案例,能否从中看出你的能力和思考

    c. 技能擅长点:是否有岗位需要的大部分技能,是否有匹配工作年限的复杂能力,是否有区别于其他人的突出点

面试问题

  1. 根据公司规模、岗位级别、面试轮数和面试官风格,面试的问题各有不同,我们可以把它们简单归类为:项目经历、技能知识点和软素质

  2. 一般公司至少有两轮技术面试 + HR 面试,第一轮面试官由比岗位略高一级的人担任,第二轮面试官由用人部门领导担任

  3. 不同轮数考察侧重点不同。第一轮面试主要确认简历真实性和基础技术能力,所以主要会围绕项目经历和技能知识点;第二轮面试则要确认这个人是否适合岗位、团队,所以更偏重过往经历和软素质

项目经历

项目经历就是我们过往做过的项目。

项目经历是最能体现一个程序员能力的部分,因此面试里大部分时间都在聊这个。

有朋友可能会说:胡说,为什么我的面试大部分时候都是八股文呢?

大部分都是八股文有两种可能:要么是初级岗位、要么是你的经历没什么好问的。哦还有第三种可能,面试官不知道问什么,从网上搜的题。

在项目经历上,面试者常见的问题有这些:

  1. 不重要的经历占比过多(比如刚毕业的时候做的简单项目花了半页纸)

  2. 经历普通,没有什么亮点(比如都是不知名项目,项目周期短、复杂度低)

  3. 都是同质化的经历,看不出有成长和沉淀(比如都是 CRUD、if visible else gone)

出现这种情况,是因为我们没有从面试官的角度思考,不知道面试的时候对方都关注什么。

在看面试者的项目经历时,面试官主要关注这三点:

1. 之前做的项目有没有难度

2. 项目经验和当前岗位需要的是否匹配

3. 经过这些项目,这个人的能力有哪些成长

因此,我们在日常工作和准备面试时,可以这样做:

  1. 工作时有意识地选择更有复杂度的,虽然可能花的时间更多,但对自己的简历和以后发展都有好处

  2. 主动去解决项目里的问题,解决问题是能力提升的快车道,解决的问题越多、能力会越强

  3. 解决典型的问题后,及时思考问题的本质是什么、如何解决同一类问题、沉淀为文章、记录到简历,这些都是你的亮点

  4. 经常复盘,除了公司要求的复盘,更要做自己的复盘,复盘这段时间里有没有成长

  5. 简历上,要凸显自己在项目面试的挑战、解决的问题,写出自己如何解决的、用到什么技术方案

  6. 投简历时,根据对方业务类型和岗位要求,适当的调整项目经历里的重点,突出匹配的部分

  7. 面试时,要强调自己在项目里的取得的成果、在其中的角色、得到什么可复制的经验

技能知识点

技能知识点就是我们掌握的编程语言、技术框架和工具。

相较于项目经历,技能知识点更关键,因为它决定了面试者是否能够胜任岗位。

在技能知识点方面,面试者常见的问题有这些:

  1. 不胜任岗位:基础不扎实,不熟悉常用库的原理

  2. 技术不对口:没有岗位需要的领域技术

  3. 技术过剩:能力远远超出岗位要求


第一种情况就是我们常说的“技术不行”。很多人仅仅在工作里遇到不会的才学习,工作多年也没有自己的知识体系,在面试的时候很容易被基础知识点问倒,还给自己找理由说“我是高级开发还问这么细节的,面试官只会八股文”。框架也是浅尝辄止,会用就不再深入学了,这在面试的时候也很容易被问住。

第二种情况,是岗位工作内容属于细分领域,但面试者不具备这方面的经验,比如音视频、跨端等。为了避免这种情况,我们需要打造自己的细分领域技能,最好有一个擅长的方向,越早越好。

第三种情况简单的来说就是“太贵了”。有时候一些资深点的开发面试被挂掉,并不是因为你的能力有问题,而是因为岗位的预算有限。大部分业务需求都是增删改查和界面展示,并不需要多复杂的经验。这种情况下,要么再去看看更高级的岗位,要么降低预期。

在我面试的人里,通过面试的都有这些特点:

  1. 技术扎实:不仅仅基础好,还有深度

  2. 解决过复杂的问题:项目经验里除了完成业务需求,也有做一些有挑战的事

有些人的简历上只写项目经历不写技能知识点,对此我是反对的,这样做增加了面试官了解你的成本。问项目经历的目的还是想确认你有什么能力,为什么不直接明了的写清楚呢?

软素质

这里的「软素质」指面试时考察的、技术以外的点。

程序员的日常工作里,除了写代码还需要做这些事:

  1. 理解业务的重点和不同需求的核心点,和其他同事协作完成

  2. 从技术角度,对需求提出自己的思考和建议,反馈给其他人

  3. 负责某个具体的业务/方向,成为这个方面所有问题的处理者


因此,面试官或者 HR 还会考察这些点,以确保面试者具备完成以上事情的能力:

  1. 理解能力和沟通表达能力

  2. 业务能力

  3. 稳定性


第一点是指面试者理解问题和讲清楚答案的能力。遇到过一些面试者,面试的时候过于紧张,讲话都讲不清楚,这种就让人担心“会不会是个社恐”、“工作里该不会也这样说不清楚吧”;还有的人爱抢答,问题都没听明白就开始抢答,让人怀疑是不是性格太急躁太自大;还有的人过于能讲,但讲不到重点,东扯西扯,让人对他的经历和理解能力产生了怀疑。

第二点是指在实现业务目标的过程中可以提供的能力。 业务发展是需要团队共同努力的,但有的人从来没这么想过,觉得自己上班的任务就是写代码,来什么活干什么活,和外包一样。

业务发展中可能有各种问题。定方向的领导有时候会过于乐观、跨部门协作项目可能会迟迟推进不动、产品经理有时候也会脑子进水提无用需求、质量保障的测试同学可能会大意漏掉某个细节测试。这个时候,程序员是否能够主动站出来出把力,帮助事情向好的方向发展,就很重要了。

遇到过一些面试者,在一家公司干了好几年,问起来业务发展情况语焉不详,让人感觉平时只知道写代码;还有的面试者,说起业务问题抱怨指责一大堆,“领导太傻逼”、“产品经理尽提蠢需求”,负能量满满😂。

第三点是指面试者能不能在一家公司长久干下去。 对于级别越高的人,这点要求就越高,因为他的离开对业务的发展会有直接影响。即使级别不高,频繁换工作也会让人对你有担心:会不会抗压能力很差、会不会一不涨工资就要跑路。一般来说,五年三跳就算是临界线,比这个频繁就算是真的“跳的有点多”。

针对以上这三点,我们可以这样做:

  1. 面试时调整心态,当作普通交流,就算不会也坦然说出,不必过于紧张

  2. 回答问题时有逻辑条理,可以采用类似总分总的策略

  3. 工作时多关注开发以外的事,多体验公司产品和竞品,在需求评审时不摸鱼、多听听为什么做、思考是否合理、提出自己的想法

  4. 定好自己的职业规划(三年小进步、五年大进步),在每次换工作时都认真问问自己:下一份工作能否帮助自己达到目标

总结

好了,这就是我前段时间面试的感悟和吐槽。

总的来说,今年找工作的人不少,市面上的岗位没有往年那么多。如果你最近要换工作,最好做足准备。做好后面的规划再换、做好准备再投简历、经历整理清楚再面试。


作者:拭心又在思考了我的天
来源:mp.weixin.qq.com/s/TvfKTXUHZAR37f9oi3W12w

收起阅读 »

为什么手机厂商都纷纷入局自研操作系统?

时间线 2020 年 9 月 10 日,华为召开了开发者大会,正式推出了 HarmonyOS 2.0 系统,并宣布为开发者提供完整分布式设备与应用开发生态。 2023年10月17日,小米集团首席执行官雷军正式公布了这款操作系统,并称该系统将逐步接替之前小米开...
继续阅读 »

时间线


2020 年 9 月 10 日,华为召开了开发者大会,正式推出了 HarmonyOS 2.0 系统,并宣布为开发者提供完整分布式设备与应用开发生态。


image.png


2023年10月17日,小米集团首席执行官雷军正式公布了这款操作系统,并称该系统将逐步接替之前小米开发的MIUI系统,成为小米智能硬件互联生态的统一计算平台。首款搭载HyperOS的智能手机为小米14系列手机。10月20日、23日,MIUI的微信、微博等公众平台账号陆续将MIUI改为其中文名“小米澎湃OS”。


image.png


2023年11月3日消息,在此前举行的 2023 vivo 开发者大会上,vivo 已经宣布首款搭载蓝河操作系统的设备将是 vivo WATCH 3 手表。vivo 副总裁周围在接受媒体采访时明确表示,vivo 自研蓝河操作系统不兼容安卓应用。


image.png


以上这几年国内著名手机厂商公布自研操作系统的时间线。笔者最近比较对国内操作系统的发展动向比较感兴趣,所以就开始了解收集这方面的信息,想通过这篇文章帮我看清操作系统发展脉络或者说补充一些相关认知盲区。


先用一张图厘清操作系统发展脉络


大家应该都知道华为、小米和Vivo分别是国内三个著名的Android手机厂商。国内移动互联网快速的发展,也是得益于Android的开放性,国内手机厂商基本都是基于ASOP(Android Open Source Project)魔改源码逐渐形成自己的定制操作系统,比如HarmonyOS、小米的MIUI和Vivo的OriginOS。如下图所示:


Xnip2023-11-20_19-34-03.jpg


iOS 是由苹果开发的移动操作系统。苹果最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上。iOS与苹果的macOS操作系统一样,属于类Unix的商业操作系统。苹果凭借它极具竞争力的软硬件创新产品,妥妥是一方巨头,跟Android开放生态不一样,苹果的操作系统并不开源。


但从2023年国内手机厂商公布的操作系统来看,从曾经套壳Android逐渐演变成去安卓化趋势。那为啥会有这种趋势发生,或者说这真的是未来操作系统发展趋势吗,国内厂商可能会面临什么样的挑战?这个问题的答案我们需要时间去验证,我们只能先做些畅想。


国内手机厂商是如何发展起来的?


国内手机厂商的发展主要经历了以下几个阶段:



  1. 初步阶段(2000-2003年):在这个阶段,国内手机市场刚刚起步,消费者对手机的需求逐渐增加。一些国内厂商开始生产手机,主要以低端和中端产品为主,如联想、TCL等。

  2. 品牌竞争阶段(2004-2006年):随着消费者对手机品牌的关注度增加,一些知名品牌开始崛起,如华为、中兴、酷派等。这些品牌通过自主研发、产品创新和技术积累,逐渐在中高端市场占据一席之地。

  3. 智能手机时代(2007-2010年):智能手机的兴起,为国产手机厂商提供了新的发展机遇。在这个阶段,小米、OPPO、vivo等厂商迅速崛起,通过高性价比、良好的用户体验和市场营销策略,逐渐在国内市场占据重要地位。

  4. 全球化竞争(2011年至今):随着国内手机市场的逐渐饱和,国产手机厂商开始将目光投向海外市场,如印度、东南亚等新兴市场。此外,厂商也在积极布局5G、物联网等新兴领域,以寻求新的增长点。


Android系统最早于2008年9月23日正式发布。进入中国市场的时间则是在2009年左右,随着第一款搭载Android系统的手机HTC Dream(在中国市场称为G1)的上市,Android系统开始在中国市场逐渐普及。


华为、小米和vivo这些手机厂商开始使用Android系统的时间如下:



  1. 华为:华为早在2009年就推出了第一款搭载Android系统的智能手机——华为U8220。此后,华为逐步发展成为全球领先的手机厂商之一,并在Android系统上推出了自家的EMUI(Emotion UI)用户界面。

  2. 小米:小米成立于2010年4月,同年8月推出了基于Android系统的MIUI定制系统。2011年8月,小米发布了第一款搭载Android系统的手机——小米1。凭借高性价比和出色的用户体验,小米迅速崛起成为国内外知名的手机品牌。

  3. vivo:vivo成立于2009年,2011年推出了第一款搭载Android系统的智能手机——vivo X1。随后,vivo在Android系统上推出了自家的Funtouch OS用户界面,并逐步发展成为市场份额较高的手机厂商之一。


从上面我们回顾了下国内手机厂商的发展历史,可以说没有Android系统进入国内市场,中国的智能手机时代历史进程就不可能这么快,国内手机厂商也正是抓住了这波机遇完成了国产化,并且发展至今。


更具象化分析智能手机厂商发展


从我个人的分析理解,国内手机厂商发展分为以下几个阶段:



  1. 第一阶段:本土化定制,实现自主可控
    这个阶段国内手机厂商主要关注于对Android系统进行本土化定制,通过开发自家的用户界面(如华为的EMUI、小米的MIUI、vivo的Funtouch OS等),满足国内用户的需求和使用习惯。同时,厂商也开始关注硬件研发和生产,逐步减少对外部供应商的依赖,提高自主可控能力。

  2. 第二阶段:自家产品生态化拓展建设
    在第二阶段,国内手机厂商开始关注产品生态的构建,将手机作为核心,围绕其开发各类智能硬件和应用服务,如智能家居、可穿戴设备、云服务等。这有助于提高用户粘性,形成闭环的生态系统,从而提升品牌竞争力和市场份额。

  3. 第三阶段:公布自研操作系统,引入AI大模型完善产品体验
    在第三阶段,国内手机厂商开始研发自家的操作系统,如华为的鸿蒙OS(HarmonyOS),以降低对Android系统的依赖,提高自主创新能力。同时,厂商也开始引入人工智能技术,通过AI大模型优化产品性能、提升用户体验,为未来5G、物联网等新技术应用做好准备。


目前手机厂商已经来到第三阶段,自华为公布鸿蒙系统之后,小米和Vivo也相继公布自家的自研操作系统,自主创新似乎是国内厂商不约而同的战略共识。


避免被“卡脖子”再发生


2019年5月15日,华为被美国正式制裁,截止目前,已经过去了4年。那么这些年华为到底被制裁了什么?


华为受到的制裁主要包括以下几个方面:



  1. 美国实体清单:2019年5月,美国政府将华为及其关联公司列入实体清单,禁止美国企业与华为进行商业往来,除非获得特别许可。这意味着华为无法从美国供应商处购买关键零部件和技术,如芯片、软件等。

  2. 芯片供应限制:2020年5月,美国政府进一步收紧对华为的制裁,要求全球芯片制造商在向华为供应美国技术含量超过25%的产品时,必须获得美国政府的许可。这使得华为的芯片供应受到严重影响,尤其是高端芯片。

  3. 软件限制:华为受到制裁后,谷歌停止为华为新款手机提供GMS(谷歌移动服务),包括谷歌应用商店、Gmail、YouTube等关键应用。尽管华为推出了自家的HMS(华为移动服务)替代GMS,但在全球范围内,GMS仍然具有很高的市场需求和用户粘性。

  4. 网络设备限制:美国政府将华为视为国家安全威胁,禁止美国电信运营商使用联邦补贴购买华为的网络设备。此外,美国还在全球范围内施压,敦促其他国家在5G网络建设中排除华为。

  5. 金融制裁:美国政府还对华为进行金融制裁,限制华为及其关联公司在美国的金融交易,使其在全球范围内融资和开展业务受到限制。


这些制裁对华为的业务造成了很大影响,尤其是在芯片供应、软件服务和5G网络设备方面。然而,华为在此期间加大了自主研发投入,努力寻求突破和替代方案。


华为是如何应对技术封锁的?



  • 推出麒麟9000S芯片突破5G芯片断供


image.png
今年爆火的Mate60系列手机搭载就是这款芯片,华为终于扬眉吐气了一番。



  • 推出自研鸿蒙全场景分布式操作系统


image.png



  • 推出HMS 替代 GMS


image.png


当然还有很多自主创新的突破,从这些战略手段来看,华为确实非常值得尊敬的企业,至少给国内众多科技企业打了个样。


从华为被制裁的案例来看,国内其他一众手机厂商谁都无法预测自己可能是下一个华为。那么实现自主可控就显得非常迫切了,除非国内一众厂商放弃海外市场这块蛋糕,但这看起来是不太可能的事情。


万物互联生态蛋糕


我们知道不管是华为还是小米,它们的产品可不仅仅只是手机和PC,还有全场景的IoT智能硬件(包括智能家居、可穿戴设备,平板等等),未来还有智能驾驶汽车业务,比如现在小米正在如火如荼正在进行的造车运动。


小米IoT平台设备接入数据
image.png
小米IoT万物互联布局
image.png


小米智能汽车
image.png


面对如此庞大的设备和连接数,小米需要一套融合的系统框架统一支持全生态设备与应用,要成为未来百亿设备、百亿连接,万物互联的公有底座。这也能理解这为什么小米会推出澎湃OS来替代MIUI,未来构建万物互联的大格局所做出的战略性布局。


然而国内手机厂商的产品布局大致相同,属于强竞争关系,虽说鸿蒙系统较早就发布,但从商业竞争来看,这是另外一个层面的自主可控,让小米、Vivo这些厂商投入到鸿蒙怀抱目前来看是不太现实的,毕竟谁都不想当谁的小弟,或许形成操作系统联盟生态更合适。


写在最后


从最开始时间线开始我们了解到国产厂商纷纷入局自研操作系统,然后通过一张图理解了操作系统的发展脉络,再了解到国产手机厂商是如何发展起来的,Android的进入让国产手机进入智能化时代,我们再具象化理解目前如华为、小米和Vivo这些手机厂商发展的几个阶段。从华为被美国制裁,国内厂商引发的担忧和战略布局万物互联生态,最终为了能够实现自主可控,摆脱外部依赖的风险,纷纷入局自研操作系统。从各家厂商分别分布自己家的自研操作系统,说明这件事相比于自研芯片的难度要小很多。从操作系统发展脉络来看至少是站在巨人的肩膀上,完全自主产权这样的说法听听就好。要撼动Android和iOS的地位,要看开发者买不买单,这么多年所沉淀下来的生态要是这么容易就能够替代,那么当年Windows Phone就不会落寞而去,相比于微软大家觉得我们的差距还有多大呢。


作者:巫山老妖
来源:juejin.cn/post/7303413519907586057
收起阅读 »

虽然炒股赚了十多万,但差点倾家荡产!劝你别入坑

今天,五阳哥不打算聊技术,而是聊一下炒股的话题。我自认为在这方面有发言权,自述一个程序员的炒股经历。 2019年,我开始涉足股市,在2021年中旬为了购房,将持有的股票全部卖出,赚了十多万元。在最高峰时期,我获利超过了二十多万元,但后来又回吐了一部分利润。虽然...
继续阅读 »

今天,五阳哥不打算聊技术,而是聊一下炒股的话题。我自认为在这方面有发言权,自述一个程序员的炒股经历。


2019年,我开始涉足股市,在2021年中旬为了购房,将持有的股票全部卖出,赚了十多万元。在最高峰时期,我获利超过了二十多万元,但后来又回吐了一部分利润。虽然我的炒股成绩不是最出色的,但也超过了很多人。因为大多数股民都是亏损的,能够在股市长期盈利的人真的是凤毛麟角。


股市中普遍流传的七亏二平一赚的说法并不只是传闻,事实上,现实中的比例更加残酷,能够长期赚钱的人可能连10%都达不到。


接下来,我想谈谈我的炒股经历和心路历程,与大家分享一下我的内心体验,为那些有意向或正在炒股的朋友提供一些参考。希望劝退大家,能救一个是一个!


本文倒叙描述,先聊聊最后的疯狂和偏执!


不甘失败,疯狂上杠杆


股市有上涨就有下跌,在我卖出以后,股市继续疯涨了很多。当时长春高新,我是四百一股买入,六百一股就卖出了,只赚了2万。可是在我卖出去的两个月以后,它最高涨到了一千。相当于我本可以赚六万,结果赚了两万就跑了。


我简直想把大腿拍烂了,这严重的影响了我的认知。我开始坚信,这只股票和公司就是好的,非常牛,是我始乱终弃,我不应该早早抛弃人家。 除了悔恨,我还在期盼它下跌,好让我再次抄底,重新买入,让我有重新上车的机会!


终于这只股票后来跌了10%,我觉得跌的差不多了,于是我开始抄底买入!抄底买入的价格在900一股(复权前)。


没想到,这次抄底是我噩梦的开始。我想抄他的底,他想抄我的家!


image.png


这张图,完美的诠释了我的抄底过程。地板底下还有底,深不见底,一直到我不再敢抄底为止。一直抄到,我天天睡不着觉!


当时我九百多一股开始抄底买入,在此之前我都是100股,后来我开始投入更多的资金在这只股票上。当时的我 定下了规矩,鸡蛋不能放在一个篮子里;不能重仓一只股票,要分散投资;这些道理我都明白,但是真到了节骨眼上,我不想输,我想一把赢回来,我要抄底,摊平我的成本。


正所谓:高位加仓,一把亏光。之前我赚的两万块钱,早就因为高位加仓,亏回去了。可是我不甘心输,我想赢回来。当时意识不到也不愿意承认:这就是赌徒心理。


后来这只股票,从1000,跌倒了600,回调了40%。而我已经被深深的套牢。当时我盈利时,只买了1股。等我被套牢时,持有了9股。 按照1000一股,就是九十万。按照600一股,就是54万。


我刚毕业,哪来的那么多钱!


我的钱,早就在800一股的时候,我就全投进去了,我认为800已经算是底了吧,没想到股价很快就击穿了800。


于是我开始跟好朋友借钱。一共借了10万,商量好借一年,还他利息。后来这10万块钱,也禁不住抄底,很快手里没钱了,股价还在暴跌。我已经忘记当时亏多少钱了,我当时已经不敢看账户了,也不敢细算亏了多少钱!


于是,我又开始从支付宝和招商银行借贷,借钱的利率是相当高的,年利息在6%以上。当时一共借了30万。但是股价还不见底,我开始焦虑的睡不着觉。


不光不见底,还在一直跌,我记得当时有一天,在跌了很多以后,股价跌停 -10%。当时的我已经全部资金都投进去了,一天亏了5万,我的小心脏真的要受不了了。跌的我要吐血! 同事说,那天看见我的脸色很差,握着鼠标手还在发抖!


跌成这样,我没有勇气打开账户…… 我不知道什么时候是个头,除了恐惧只有恐惧,每天活在恐惧之中。


我盘算了一下,当时最低点的我,亏了得有二十多万。从盈利六万,一下子到亏二十多万。只需要一个多月的时间。


我哪里经历过这些,投资以来,我都是顺风顺水的,基本没有亏过钱,从来都是挣钱,怎么会成这个样子。


当时的我,没空反思,我只希望,我要赚回来!我一定会赚回来,当时能借的支付宝和招行都已经借到最大额度了…… 我也没有什么办法了,只能躺平。


所以股价最低点的时候,基本都没有钱加仓。


侥幸反弹,但不忍心止盈


股价跌了四个月,这是我人生极其灰暗的四个月。后来因为种种原因,股价涨回来了,当时被传闻的事情不攻自破,公司用实际的业绩证明了自己。


股价开始慢慢回暖,后来开始凶猛的反弹,当时的我一直认为:股价暴跌时我吃的所有苦,所有委屈,我都要股市给我补回来!


后来这段时间,股价最高又回到了1000元一股(复权前)。最高点,我赚了二十多万,但是我不忍心止盈卖出。


我觉得还会继续涨,我还在畅想:公司达到,万亿市值。


我觉得自己当时真的 失了智了。


结婚买房,卖在最高点


这段时间,不光股市顺丰顺水,感情上也比较顺利,有了女朋友,现在是老婆了。从那时起,我开始反思自己的行为,我开始意识到,自己彻彻底底是一个赌徒。


因为已经回本了,也赚了一点钱,我开始不断的纠结要不要卖出,不再炒股了。


后来因为两件事,第一件是我姐姐因为家里要做小买卖,向我借钱。 当时的我,很纠结,我的钱都在股市里啊,借她钱就得卖股票啊,我有点心疼。奈何是亲姐,就借了。


后来我盘算着,不对劲。我还有贷款没还呢,一共三十万。我寻思,我从银行借钱收6%的利息,我借给别人钱,我一分利息收不到。 我TM 妥妥的冤大头啊。


不行,我要把贷款全部还上,我Tm亏大了,于是我逐渐卖股票。一卖出便不可收拾。


我开始担心,万一股价再跌回去,怎么办啊。我和女朋友结婚时,还要买房,到时候需要一大笔钱,万一要是被套住了,可怎么办啊!


在这这样的焦虑之下,我把股票全部都卖光了!


冥冥之中,自有天意。等我卖出之后的第二周,长春高新开启了下一轮暴跌,而这一轮暴跌之后,直至今日,再也没有翻身的机会。从股价1000元一股,直至今天 300元一股(复权前是300,当前是150元)。暴跌程度大达 75%以上!


image.png


全是侥幸


我觉得我是幸运的,如果我迟了那么一步!假如反应迟一周,我觉得就万劫不复。因为再次开启暴跌后,我又会开始赌徒心理。


我会想,我要把失去的,重新赢回来!我不能现在卖,我要赢回来。再加上之前抄底成功一次,我更加深信不疑!


于是我可能会从1000元,一路抄底到300元。如果真会如此,我只能倾家荡产!


不是每个人都有我这么幸运,在最高点,跑了出去。 雪球上之前有一个非常活泼的用户, 寒月霖枫,就是因为投资长春高新,从盈利150万,到亏光100万本金,还倒欠银行!


然而这一切,他的家人完全不知道,他又该如何面对家人,如何面对未来的人生。他想自杀,想过很多方式了结。感兴趣的朋友可以去 雪球搜搜这个 用户,寒月霖枫。


我觉得 他就是世界上 另一个自己。我和他完全类似的经历,除了我比他幸运一点。我因为结婚买房和被借钱,及时逃顶成功,否则我和他一样,一定会输得倾家荡产!


我觉得,自己就是一个赌狗!


image.png


image.png


然而,在成为赌狗之前,我是非常认真谨慎对待投资理财的!


极其谨慎的理财开局


一开始,我从微信理财通了解到基金,当时2019年,我刚毕业两年,手里有几万块钱,一直存在活期账户里。其中一个周末,我花时间研究了一下理财通,发现有一些债券基金非常不错。于是分几批买了几个债券基金,当时的我对于理财既谨慎又盲目。


谨慎的一面是:我只敢买债券基金,就是年利息在 5%上下的。像股票基金这种我是不敢买的。


盲目的一面是:我不知道债券基金也是风险很大的,一味的找利息最多的债券基金。


后来的我好像魔怔了,知道了理财这件事,隔三差五就看看收益,找找有没有利息更高的债券基金。直到有一天,我发现了一个指数基金,收益非常稳定。


是美股的指数基金,于是我买了1万块钱,庆幸的是,这只指数基金,三个月就赚了八百多,当时的我很高兴。那一刻,我第一次体会到:不劳而获真的让人非常快乐!


如饥似渴的学习投资技巧


经过一段时间的理财,我对于理财越来越熟悉。


胆子也越来越大,美股的指数基金赚了一点钱,我害怕亏回去,就立即卖了。卖了以后就一直在找其他指数基金,这时候我也在看国内 A股的指数基金,甚至行业主题的基金。


尝到了投资的甜头以后,我开始花更多的时间用来 找基。我开始从方方面面评估一只基金。


有一段时间,我特别自豪,我在一个周末,通过 天天基金网,找到了一个基金,这只基金和社保投资基金的持仓 吻合度非常高。当时的我思想非常朴素, 社保基金可是国家队,国家管理的基金一定非常强,非常专业,眼光自然差不了。这只基金和国家队吻合度如此高,自然也差不了。


于是和朋友们,推荐了这只基金。我们都买了这只基金,而后的一个月,这只基金涨势非常喜人,赚了很多钱,朋友们在群里也都感谢我,说我很厉害,投资眼光真高!


那一刻,我飘飘然……


我开始投入更多的时间用来理财。下班后,用来学习的时间也不学习了,开始慢慢的过度到学习投资理财。我开始不停地 找基。当时研究非常深入,我会把这只基金过往的持仓记录,包括公司都研究到。花费的时间也很多。


我也开始看各种财经分析师对于股市的分析,他们会分析大盘何时突破三千点,什么时候股市情绪会高昂起来,什么行业主题会热门,什么时候该卖出跑路了。


总之,投资理财,可以学习的东西多种多样!似乎比编程有趣多了。


换句话说:我上头了


非常荒谬的炒股开局


当时我还是非常谨慎地,一直在投资基金,包括 比较火爆的 中欧医疗创新C 基金,我当时也买了。当时葛兰的名气还很响亮呢。后来股市下行,医疗股票都在暴跌,葛兰的基金 就不行了,有句话调侃:家里有钱用不完,中欧医疗找葛兰。腰缠万贯没人分,易方达那有张坤。


由此可见,股市里难有常胜将军!


当时的我,进入股市,非常荒谬。有一天,前同事偷偷告诉我,他知道用友的内幕,让我下午开盘赶紧买,我忙追问,什么内幕,他说利润得翻五倍。 我寻思一下,看了一眼用友股票还在低位趴着,心动了。于是我中午就忙不迭的线上开户,然后下午急匆匆的买了 用友。 事后证明,利润不光没有翻五倍,还下降了。当然在这之前,我早就跑了,没赚着钱,也没咋亏钱。


当时的我,深信不疑这个假的小道消息,恨不得立即买上很多股票。害怕来不及上车……


自从开了户,便一发不可收拾,此时差2个月,快到2019年底!席卷全世界的病毒即将来袭


这段时间,股市涨势非常好,半导体基金涨得非常凶猛! 我因为初次进入股市,没有历史包袱,哪个股票是热点,我追哪个,胆子非常大。而且股市行情非常好,我更加相信,自己的炒股实力不凡!


换句话说:越来越上头,胆子越来越大。 学习编程,学个屁啊,炒股能赚钱,还编个屁程序。


image.png


刚入股市,就赶上牛市,顺风顺水


2019年底到2020年上半年,A股有几年不遇的大牛市,尤其是半导体、白酒、医疗行业行情非常火爆。我因为初入股市,没有历史包袱,没有锚点。当前哪个行业火爆,我就买那个,没事就跑 雪球 刷股票论坛的时间,比上班的时间还要长。


上班摸鱼和炒股 是家常便饭。工作上虽然不算心不在焉,但是漫不经心!


image.png


在这之前,我投入的金额不多。最多时候,也就投入了10万块钱。当时基金收益达到了三万块。我开始飘飘然。


开始炒股,也尝到了甜头,一开始,我把基金里的钱,逐渐的转移到股市里。当时的我给自己定纪律。七成资金投在基金里,三成资金投在股市里。做风险平衡,不能完全投入到风险高的股市里。


我自认为,我能禁得住 炒股这个毒品。


但是逐渐的,股票的收益越来越高,这个比例很快就倒转过来,我开始把更多资金投在股市中,其中有一只股票,我非常喜欢。这只股票后来成为了很多人的噩梦,成为很多股民 人生毁灭的导火索!


长春高新 股票代码:000661。我在这只股票上赚的很多,后来我觉得股市涨了那么多,该跌了吧,于是我就全部卖出,清仓止盈。 当时的我利润有六万,我觉得非常多了,我非常高兴。


其中 长春高新 一只股票的利润在 两万多元。当时这是我最喜欢的一只股票。我做梦也想不到,后来这只股票差点让我倾家荡产……


当时每天最开心的事情就是,打开基金和证券App,查看每天的收益。有的时候一天能赚 两千多,比工资还要高。群里也非常热闹,每个人都非常兴奋,热烈的讨论哪个股票涨得好。商业互吹成风……


换句话说:岂止是炒股上头,我已经中毒了!


image.png


之后就发生了,上文说的一切,我在抄底的过程中,越套越牢……


总结


以上都是我的个人真实经历。 我没有谈 A 股是否值得投资,也不评论当前的股市行情。我只是想分享自己的个人炒股经历。


炒股就是赌博


我想告诉大家,无论你在股市赚了多少钱,迟早都会还回去,越炒股越上头,赚的越多越上头。


赌徒不是一天造成的,谁都有赢的时候,无论赚多少,最终都会因为人性的贪婪 走上赌徒的道路。迟早倾家荡产。即使你没有遇到长春高新,也会有其他暴跌的股票等着你!


什么🐶皮的价值投资! 谈价值投资,撒泡尿照照自己,你一个散户,你配吗?


漫漫人生路,总会错几步。股市里错几步,就会让你万劫不复!



”把钱还我,我不玩了“




”我只要把钱赢回来,我就不玩了“



这都是常见的赌徒心理,奉劝看到此文的 程序员朋友,千万不要炒股和买基金。


尤其是喜欢打牌、打德州扑克,喜欢买彩-票的 赌性很强的朋友,一定要远离炒股,远离投资!


能救一个是一个!


作者:五阳神功
来源:juejin.cn/post/7303348013934034983
收起阅读 »

这样解释shift,面试官直接起立!

面试官提问 面试官:候选人你好,请解释下面的现象: 数组1000个元素,shift操作和对象delete操作的benchmark 差不多。 数组10w个元素时,shift操作和对象delete操作的benchmark 相差巨大。 场景如下: 数组1000个...
继续阅读 »

面试官提问


面试官:候选人你好,请解释下面的现象:



  1. 数组1000个元素,shift操作和对象delete操作的benchmark 差不多。

  2. 数组10w个元素时,shift操作和对象delete操作的benchmark 相差巨大。


场景如下:
数组1000个元素时:shift和delete相差无几
63368106fc02fd76c9cd6cc951dc064.png


数组100000个元素时,shift比delete慢了100倍
a120b0387b1118d83ffbc4ac0b3f052.png


开始表演!


候选人:总的来说,这是因为数组在1k长度时,v8引擎能申请到一段连续内存做shift运算,在利用L1缓存的优势下,速度能和object的delete有得一比。


顺便一提,利用L1缓存思想做性能优化,也是最近游戏界中ECS架构为何能获得如此高的关注度的原因之一。


我们回到咱们前端来讲,口说无凭,眼见为实,让我们直接打开V8引擎源码一睹为快。


第一步、我们找到[].shift相关v8引擎源码


我们可以看到ArrayPrototypeShift代码会尝试执行TryFastArrayShift函数,若该函数抛出Slow或者Runtime标志,则运行相应的逻辑。


image.png


第二步、我们进入 TryFastArrayShift 这个函数继续看,这个函数有两个逻辑:



  1. 若没有连续内存,则抛出Slow

  2. 若数组长度>100,则抛出Runtime



回到我们案例:我们数组长度如果在1000,则抛出的是Runtime标志;如果在10W,则抛出的是Slow标志。



image.png


第三步、查看Slow和Runtime的逻辑。




  • slow对应的GenericArrayShift函数逻辑如下 :



    • 先把数组转换为对象

    • 再遍历对象的key,每一个key都往前移一位。(这也是ECMAScript-262规范定义的算法)
      image.png




  • runtime对应的ArrayShift函数逻辑如下:



    1. 申请连续内存

    2. 遍历并移位

      image.png




最后总结,从上面三步我们确认了V8引擎的执行逻辑:



  1. 10W数据,很难申请到连续内存,通常就无法利用L1缓存,导致比较卡慢

  2. 1000数据,较容易申请到连续内存,通常能利用到L1缓存,速度较快。

    1. 100长度以下的数组,直接走C++逻辑。

    2. 100长度以上的数组,走汇编逻辑加速。




这也就说明了为什么1000数据和10W数据执行上有一定差异的原因。



注意:ArrayShift函数源码可能有误,也请大佬指点。


PS:这个ArrayShift源码不在v8中,而在汇编中。


PS:这是因为buitin的代码需要在vs上编译出来才能查到相关代码的引用地址,目前比较忙,先分享思路,我后续会进行更新订正。



小结


上诉面试经历是我刚编的,希望能来更多的朋友讨论,毕竟大家对v8源码或多或少有一点陌生的畏难心理,我也如此。本问题实际是来自我交流群的某一次讨论。


不过道理是真的:


平时遇到某些问题,咱们也不妨从V8源码入手分析。


有时候源码比各类文章讲得更清晰。


日积月累,总会有一些意想不到的收获。


参考文章



作者:尘码在划水
来源:juejin.cn/post/7302330573382107148
收起阅读 »

Altman王者归来!强势要求解散董事会,OpenAI终极宫斗一触即发

【新智元导读】 董事会打脸了!Altman众望所归上演王者归来,戴着访客证出现在OpenAI总部,并且强势要求董事会解散。CEO的复仇之路反转再反转,双方目前仍在对峙。 从被扫地出门到王者回归,乔布斯用了12年,而Sam Altman,仅仅用了两天。 现在,A...
继续阅读 »
【新智元导读】 董事会打脸了!Altman众望所归上演王者归来,戴着访客证出现在OpenAI总部,并且强势要求董事会解散。CEO的复仇之路反转再反转,双方目前仍在对峙。

从被扫地出门到王者回归,乔布斯用了12年,而Sam Altman,仅仅用了两天。


现在,Altman已经以胜利者的姿态重返OpenAI探讨自己的去留问题,并且对董事会提出了新的要求——


「更换现有的董事会成员,并且得到证明自己并无过错的声明。」


简单来说就是,我可以回来,但你们得走。

图片临时CEO Mira Murati、首席战略官Jason Kwon、首席运营官Brad Lightcap,都站在了Altman这一边,希望董事会辞职。董事们让步了,原则上同意辞职,但还未正式执行,正在评估新董事的人选。截止发稿时,双方还在僵持中。但Altman,应该是已经掌握了主动权。


「王者回归」之路



当地时间周日,六小时之前,Sam Altman po出自己佩戴OpenAI访客证进入大楼的照片,皱着眉、眼神复杂地望向镜头,同时打下这样一句话——



这是我第一次,也是最后一次,戴上OpenAI的访客证。



图片而在Altman被离职的同时也一起辞职的OpenAI总裁Greg Brockman,也和Altman一起与OpenAI展开了谈判。上周六,四人董事会将Altman无情踢出之后,又在周日反悔了,跪求Altman重返OpenAI。原因一方面是金主爸爸们给董事会的压力,另一方面,则是大量员工的追随和支持。董事会是让步了,但Altman却未必会接受了。现在,他手头的选择很多,如果回OpenAI,他就要求重新设立新董事会;或者,他甚至可以带着大批愿意离职的前员工,直接另起炉灶创立新公司。从这里也能看出,真正让Altman不可替代的,是OpenAI顶级科学家对他的无限忠诚。他们,才是OpenAI的中流砥柱,也是ChatGPT的核心贡献者。


金主之怒


据彭博社报道,微软CEO纳德拉对于董事会的行为非常愤怒。据悉,他在事件爆发后一直和Altman保持着联系,并且保证会支持他。要知道,微软是OpenAI最大的投资者,投入了130亿美元,拥有OpenAI Global LLC 49%的股份。图片与此同时,OpenAI最主要的风投支持者们,包括其第二大股东Thrive Capital、Tiger Global、Khosla Ventures以及Sequoia Capital,都表示希望Altman回归。而且,无论Altman接下来要做什么,他们都会给予支持。图片这不由得让人想起硅谷的另一起著名事件——众所周知,史蒂夫·乔布斯在1985年的时候被自己亲手创立的苹果解雇。随后,他创立了NeXT,一家生产高端计算机的公司。而彼时的苹果,已经风雨飘摇。1997年,乔布斯正式回归。很快,他就把苹果从一个苦苦挣扎的科技公司转变为一个全球巨头。图片


员工纷纷表态


另一创始人、OpenAI总裁及董事会主席Greg Brockman,在第一时间辞职,坚决表示自己和Altman同进退。图片随着事情的发酵,Altman发推表示:我太爱OpenAI团队了。图片同时,大量OpenAI的核心员工和高管,都转发了Altman的推特,纷纷po出爱心,表示支持。图片这些OpenAI核心员工对于Altman的支持,似乎在告诉董事会,开了他,OpenAI很有可能面临大量的员工流失。图片而这些人,正是OpenAI能够走到今天,成为科技圈最受瞩目,甚至能够改变科技行业未来的公司的原因。图片为了安抚员工,OpenAI和Altman展开复职谈判之后,OpenAI高管在一份发给员工的备忘录中称,他们对Altman和Brockman的回归「非常乐观」。


董事会被架到火上烤


现在,Altman复职谈判最大的障碍是,他希望能够解散炒掉他的董事会,并引入新的董事会成员。对此,原董事会很有可能不得不重新发表一个声明,推翻原本炒掉Altman的声明,为Altman平反。这样的话,他们不但把自己架到了火上烤,还让所有人都有理由对董事会的「合法性」提出质疑。图片根据外媒报道,如果董事会真的重组,新加入董事会的成员可能会包括:Salesforce Inc.前联席首席执行官Bret Taylor。图片以及另一位来自微软的高管。而推动前董事会裁掉Altman的OpenAI首席科学家Ilya,能否继续留在董事会之中,就不得而知了。毕竟,矛盾的地方在于,不久前的开发者大会已经充分昭示了Altman的商业野心。而董事会成员,尤其以Ilya为主,则对AI的安全性产生了担忧。对此,马斯克也不忘趁此时机倒油,表达对Ilya的支持,同时也就间接表达了对Altman的质疑。



我十分担心。Ilya有良好的道德观,他并不是一个追求权力的人。除非他认为绝对必要,否则他绝不会采取如此激进的行动。



图片


虽然,董事会还在犹豫,但如果Altman真要决定创办新公司,必定有一大批员工会忠心追随。


太长不看版


总结一下就是,在过去短短几天内,OpenAI就发生了一系列惊天大动荡——



  • OpenAI发布公告,宣布解除Sam Altman CEO和Greg Brockman董事会主席的职务。



  • CTO Mira Murati被任命为临时CEO。



  • 很快,Brockman也发帖表示已经辞职。



  • Altman和Brockman发表联合声明,对董事会的做法表示「震惊和悲痛」。


图片



  • 三位高级研究员Jakob Pachocki、Aleksander Madry和Szymon Sidor,纷纷辞职表示抗议。



  • 据了解,首席科学家Ilya Sutskever在解雇Altman的过程中发挥了关键作用。



  • 第二天,OpenAI似乎迫于压力,又想让Altman回归CEO职位。



  • 对此,Altman提出了自己的条件,包括要求解雇他的董事会成员辞职。而董事会则犹豫不决。



  • 有媒体报道称,如果未能达成协议,将会有大批员工辞职。


Altman有意成立新的AI公司



据知情人士透露,Altman正计划成立一家新的人工智能企业。而OpenAI前总裁Greg Brockman有望加入该公司。不过,目前我们还不清楚这家企业的具体情况。图片


与此同时,关于Altman在开发人工智能方面的雄心壮志和更多细节也已浮出水面。不久前,他与包括芯片设计公司Arm在内的半导体高管进行了讨论,商讨如何尽早设计出新的芯片,为OpenAI这样的大语言模型公司降低成本。


图片


据彭博社报道,Altman计划创办的这家芯片公司,将会打造类似于谷歌TPU(张量处理单元)的人工智能芯片。为此,Altman一直在中东为这个代号为Tigris的项目筹集资金。


TPU等定制设计的芯片被认为有朝一日有可能超越英伟达制造的人工智能加速器。人工智能公司都对其梦寐以求,但开发一款AI芯片需要巨量的时间和资源。


图片


不过公司尚未成立,与投资者的谈判也还处于早期阶段。但无论新公司采取何种形式,Altman和Brockman都可以避免重复目前在OpenAI遇到的问题。除了这家芯片公司,Altman还一直在为他与苹果公司前设计总监Jony Ive合作开发的一款人工智能硬件设备筹集资金。


图片


据一位知情人士透露,最近几个月,Altman定期参加孙正义在加州Woodside豪宅举行的晚宴,与微软首席执行官Satya Nadella等其他科技高管讨论人工智能、芯片和其他科技话题的未来。或许,正是Altman的野心和副业,使他与董事会本已紧张的关系变得更加复杂。


竞争对手急于挖角


这边Altman前脚刚走,Cohere和Adept等竞争对手已经开始在OpenAI挖人了,而谷歌DeepMind也收到了来自OpenAI员工的新简历。


这些举动表明了Altman下台后OpenAI面临的风险:四位高管的离职有可能引发一连串的辞职潮,使其难以维持去年的高速发展。随着Altman考虑回归,许多高管也在考虑回归。


图片


Adept是一家估值10亿美元的初创公司,它正在创建一个人工智能模型,可以在用户的电脑上为他们完成任务。


该公司的代表在Altman被解雇后24小时内,联系了OpenAI的多名现任工程师和研究人员。


一位知情人士表示,OpenAI的一些员工在董事会发表声明解雇Altman后的几个小时内,向谷歌的人工智能实验室DeepMind提交了简历。OpenAI的主要创业公司竞争对手在LinkedIn上发布了一则招聘信息,称其正在招聘多名技术项目经理。


图片


而Cohere公司的联合创始人兼首席执行官Aidan Gomez则在公司的招聘页面上发布了一个链接,指出该公司正在招聘「机器学习技术人员」。


图片


代码生成初创公司Replit的创始人兼首席执行官Amjad Masad也同样在OpenAI宣布领导层变动三小时后发布了公司招聘页面的链接。


图片


——看起来像是落井下石?不过这种相互挖角的事情对于OpenAI等公司可能也习以为常。OpenAI成立于2015年,目前有700多名员工,其中一些人就是从谷歌、Meta和Stripe等大型科技公司挖来的。去年他们高调聘用的一些员工包括特斯拉自动驾驶汽车前主管Andrej Karpathy和Stripe隐私与数据保护前主管EmmaRedmond。据知情人士透露,OpenAI最近通过提供数百万美元的股票套餐来吸引谷歌的员工。毫不夸张地说,Altman在从其他公司招募人才方面发挥了关键作用。


网友吃瓜整活乐开了花


微软在幕后发大力了,现在看看OpenAI谁说了算。图片Altman亮出了自己的最后王牌,「权力转换卡」!图片相同的姿势,相同的结局,只是Altman效率高太多了。图片和一年前马老板收购推特后相似的场景再次上演!图片


参考资料:


time.com/6337449/ope…


http://www.theinformation.com/articles/al…


http://www.theinformation.com/articles/op…


http://www.theverge.com/2023/11/19/…


http://www.theverge.com/2023/11/19/…


作者:新智元
来源:juejin.cn/post/7303423871708987427
收起阅读 »

高效案例检索工具,Alpha案例库智慧检索成为律师检索工具首选

“工欲善其事,必先利其器。”当今,律界同仁需要权衡的问题早已不是“要不要”使用法律科技,而是如何高质量、高效率地使用法律科技工具。在业内人士看来,随着人工智能技术的不断发展,法律行业科技化将成为不可逆转的趋势。从目前国内律所引入科技工具的现状来看,Alpha法...
继续阅读 »

“工欲善其事,必先利其器。”当今,律界同仁需要权衡的问题早已不是“要不要”使用法律科技,而是如何高质量、高效率地使用法律科技工具。在业内人士看来,随着人工智能技术的不断发展,法律行业科技化将成为不可逆转的趋势。从目前国内律所引入科技工具的现状来看,Alpha法律智能操作系统具有较高的使用率,该系统在律师日常法律检索和律所管理方面都产生了巨大的“动能”。其官网链接:法律检索阿尔法

最新的数据显示,业已有多达15W法律人长期使用Alpha。平台为满足众多律所的需求,更是做到了“天”级更新,每年斥资千万研发经费用以丰富系统的功能。当前,该工具的功能模块几乎覆盖到了法律工作的各个领域,被形象地称为律师工作的“得力干将”,特别是其中大数据赋能的“秒”级法律检索功能,更是极大地提升了律师的工作效率。


法律检索阿尔法


比如,在检索“单位分的房子,离婚时如何分割?”这一问题时,Alpha可以智能化地对“法院认为”板块中的“房改房”或“福利分房”关键词进行有效检索,在短短几秒钟的时间内就会得出相关案例,法规等相关内容。帮助律师们有效地缩小了检索范围,进一步提高了检索的精确度。此外,Alpha针对多个关键词之间“或”的逻辑关系,也可以通过深入的“思考”决定是否修改为“且”,用以满足某些案情的复杂性要求。


法律检索阿尔法


如果说Alpha的高级检索已经达到了全面的效果,那么其“智慧检索”功能则更是深入到“地毯式细致检索”的程度。目前,Alpha的“智慧检索”通过精准全面的标签设置,做到了检索的“主动化”,它能够依据技术与算法,科学设计标签的产生规则,从而为律师以“点选标签”的方式进行创新检索打下了坚实的基础。它分类细致、检索便捷,更重要的是它依据强大的算法,抓住了万变之“宗”,能够在纷繁复杂的社会生活中总结出各个领域的法律纠纷焦点问题,帮助律师快速提升理论运用的能力,在实务工作中长足进步。这一功能让众多的律师,尤其是经验不足的新手律师受益颇深。


法律检索阿尔法


在生成检索报告方面,Alpha也堪称是一把好手。针对日常的“案例检索”,律师可以直接下载文书列表,将所需文书的“法院认为”“裁判结果”等重要部分截取下来,用以快速浏览,并进行初步法律分析。若需要完整文书,也可以选择下载完整版。在自定义检索报告功能的助力下,律师们还可以设置报告封面、导出格式等,真正做到了“一气呵成”,一键生成。

作为一款集法律全面检索、可视化分析、报告制作、文书模板等强悍功能于一体的工具,Alpha可以帮助法律人全方面、多维度、高效率地开展工作,以科技为律所发展插上有力的翅膀!

Alpha系统官网:https://www.icourt.cc/product/alpha


收起阅读 »

半年120GC盘红盘,电脑救赎之旅

工作开始,一直被程序猿=修电脑的,厌恶感十足,很可惜打脸来的太快,经历了公司换新电脑,坏了几次,再到工作变动自己搞了新电脑,直到红盘,被迫开启了自己的电脑救赎之旅,本次以这次被迫优化为例,主要想说的是搞程序的解决红盘的问题。 装系统     之前配备的电脑新拆...
继续阅读 »

工作开始,一直被程序猿=修电脑的,厌恶感十足,很可惜打脸来的太快,经历了公司换新电脑,坏了几次,再到工作变动自己搞了新电脑,直到红盘,被迫开启了自己的电脑救赎之旅,本次以这次被迫优化为例,主要想说的是搞程序的解决红盘的问题。


装系统


    之前配备的电脑新拆就一直有莫名重启,移动电源无法使用的情况,随后到了彻底无法忍受的程度,你能想象,你正敲着代码毫无征兆就重启吗,还是一天10几次那种,好在常年随时保存的好习惯避免了重大事故,于是开始了反反复复的系统重装,直到确认是硬件问题,拿去报修,完了之后,当系统安装已经成为了本能,让我彻底的不再恐惧重装系统这个事儿,你们应该都懂,作为一名开发,系统重装这个事儿到底是有多恐惧、

    在这之后,由于工作变动的原因,又仓促的买了新电脑,安装已经驾轻就熟,大概是对纯净版,专业版系统的执着,微PE工具箱让我感觉到装系统和纯净版是一个让人愉悦的事儿,夹带私货的系统让人头皮发麻,我大概经过了这个几个阶段,
系统安装->升级专业版->C盘分区扩容->提权administrator(普通用户对权限引起的bug和问题深度受害者)->驱动/开发工具安装,一顿操作搞下来,我的C盘大概控制在了40G以内,其他软件的安装严格的装在了指定盘符,结果半年多下来,我的120G的C盘坎坎到今天只剩下了5个G,可能这个就是全栈加全干带来的深度后果吧。


C盘红盘过程


     像是npm 、cargo、vs、maven、Android Studio、python等工具C盘盘符产生缓存的问题我已经极度的进行了处理,但从120G-40G=80G的过程,你应该能想象我这大半年都经历了啥、找的c盘批处理完全解决不了我的困难,至于现有的C盘瘦身啥的软件要么收费要么夸大,感觉跟搞程序用的电脑不吻合,完全解决不了啥问题,没办法,我只能挨个的分析文件夹,定位这些内容产生自哪里。


@echo off

echo 正在清除系统垃圾文件,请稍等……

del /f /s /q %systemdrive%\*.tmp

del /f /s /q %systemdrive%\*._mp

del /f /s /q %systemdrive%\*.log

del /f /s /q %systemdrive%\*.gid

del /f /s /q %systemdrive%\*.chk

del /f /s /q %systemdrive%\*.old

del /f /s /q %systemdrive%\recycled\*.*

del /f /s /q %windir%\*.bak

del /f /s /q %windir%\prefetch\*.*

rd /s /q %windir%\temp & md %windir%\temp

del /f /q %userprofile%\cookies\*.*

del /f /q %userprofile%\recent\*.*

del /f /s /q “%userprofile%\Local Settings\Temporary Internet Files\*.*”

del /f /s /q “%userprofile%\Local Settings\Temp\*.*”

del /f /s /q “%userprofile%\recent\*.*”

echo 一键清理系统垃圾完成!

echo. & pause

优化前C盘只剩下5个G,没有先见之明,只能把优化后的结果贴图了,从D盘应该看得出端倪
image.png


在这个截图之前,C盘的用户数据大约是60多个G,20多G的优化空间也从此处来的
image.png




C盘救赎



  • C:\Users\Administrator\AppData\Local如果作为前端,大概率空间的占用是从这里开始的
    image.png

  • 如果作为服务端



  1. JAVA检查一下你的maven包缓存位置,我开始就设置了,因此没有占据C盘空间,很多都放在D盘了。

  2. c# 检查一下nuget的包缓存,可能会很大

  3. python的可以检查一下pip相关的包

  4. 总之现在的开发工具都很热衷于你的用户数据存储包,你如果分析一下c盘空间会有惊喜发现



  • 我之前也搜过很多教程,然并卵,很多压根没考虑过C盘用户数据造成的问题。


     整的比较简单,算是个程序猿群体避免重装系统的一个方案吧,求人不如求己,实在是在重装的边缘挣扎的老哥,可以尝试从这几个方面去做处理,尝试把相关的批处理删除加到以上的脚本中,做个自己的专清小工具,别被各种C盘瘦身垃圾软件折磨了。


结束


马上2023,还是在修电脑的过程中度过,为程序奋斗的一年画上句号、祝愿各位的电脑利器更加畅快随心,在新的一年里创造新的,专属于自己的程序传奇。
----------最后,新年快乐!!!


作者:沈二到不行
来源:juejin.cn/post/7183343983907569720
收起阅读 »

前端程序媛的编程之旅:第一卷,一年的萌新探索与成长

写在前面: 不知不觉已工作一年有余,好像毕业后的时光是一匹发疯的马,用尽全身气力疯狂向前,人生前半段是缓慢成长,后半程却加速变老。我以为越长大越沉默,没想到我还是一以贯之的废话一大堆。他日再回首时,恐已不复如今的心境,生活是值得记录的,无论好坏呀~ 正文: 校...
继续阅读 »

写在前面:


不知不觉已工作一年有余,好像毕业后的时光是一匹发疯的马,用尽全身气力疯狂向前,人生前半段是缓慢成长,后半程却加速变老。我以为越长大越沉默,没想到我还是一以贯之的废话一大堆。他日再回首时,恐已不复如今的心境,生活是值得记录的,无论好坏呀~


正文:


校招篇:面试官,你好


校招的记忆已然有点模糊了,有点后悔之前怎么没有记录生活。但我记得每次面试时的自我介绍,开场白的第一句话就是面试官,你好。我校招那一年互联网寒冬还不太寒,至少我周围熟悉的同学基本都手握好多大厂offer,所以当时有点小沮丧,总觉得自己菜菜的。也曾想过先去北京工作,不过考虑到我的性格以及离家近,最终还是选择来到成都。其实从小到大我没有什么目标,只是跟着周围同学朋友的节奏学习与生活,不掉队一路走到了现在,我不知道我喜欢什么,只是明确的知道不接受什么,排除掉不接受的,其他范围内我都可。


工作篇:我的前端初体验


依稀记得入职第一天,leader来楼下门口接的我,然后参加早会自我介绍与相互介绍,从此就正式开启了我的搬砖之路。刚入职时有好多不懂的,不懂开会时说的许多缩略词(连PM、PRD、RD啥的都不知道),还不懂从哪里开始看项目代码,对于提交代码、联调、部署、Nginx配置等环节,我就如同面对迷雾,一片茫然。挺感谢leader和同事们的指导与帮助,不仅仅是工作上的,还有帮助我融入团队,因为刚毕业时的我有点轻微社恐,不敢也不好意思多说话(然而现在笑声最大的就是我哈哈哈哈),虽然社恐不过我也是爱笑的社恐,即使很多不会,每天也是笑嘻嘻的,后来年终述职时同事的评价,以及晋升的其中一条理由,都是说我心态好哈哈哈哈哈哈。虽然网上挺多骂我司的,但从我自己的角度来看,我司的应届生培养确实还行,会给你充足的时间学习与成长,长期有耐心不仅仅是空口号。入职3个月时,我每天的工作还是培训和学习,除了已定的学习计划,mentor也会问我还有啥想学的嘛,可以调整。


当我害怕自己做不好时,同事:领导问啥都要说“好,能做到”,反正工作又不是造火箭,不难的,而且不会就问嘛。结果真的不难耶哈哈哈,人最大的恐惧是对未知的恐惧。当我出现了线上事故时,同事:这有啥,我以前还有更严重的,大家都是这么过来的。当我提前想工作跳槽时,同事:我是一年一跳,自从帮leader筛选简历后,才发现我还可以,你也要相信你是比较靠前的。还有好多诸如此类的对话,缓解了我的焦虑与迷茫,偷偷在这里谢谢大家呀。


后来我才开始慢慢接触项目,从最开始修改一个小bug,到后来完成一个小模块的开发,再到现在可以独立负责一个项目的开发上线。与刚入职时相比,现在更大的感受可能是更从容(也可能是开始摆烂哈哈哈),不再害怕新的任务不会怎么办,不再担心我的提问在别人看来是否有点笨笨的,不再纠结晚上早10分钟走会不会不太好……原来技术方案评审、CodeReview、述职等都没有想象中的可怕,很多事经历后才发现不过如此,一切都没关系哒。


生活篇:程序媛的日常


来成都后,经历了第一次震感强烈的地震,经历了高温限电于是居家办公,也见证了从全民防疫到全面放开。新冠全面放开后,leader说:大家如果身体有不适的就请假,别硬撑着,这只是一份工作而已。其他同事基本请了将近2周的假,我申请了一周,其实我只发烧了一天就没啥症状了,中间还去了一趟都江堰玩。后来的二阳、三阳大家都波澜不惊了。


程序员只是一份工作,并不是生活的全部,周围同事有沉迷于养花的,有每周都骑行一天的,也有喜欢跳舞的……至于我,喜欢美食,喜欢小裙子,喜欢一切可爱的东东(๑• . •๑)。成都真的有好多好吃的,至少很对我的胃口,来了以后胖了8斤多呜呜呜。


还有一个绕不开的话题,可能是我一生最悲伤的事情之一,工作一年时我的奶奶去世了,我哭了好久好久,现在提起仍然很难过,个中辛酸就不在此赘述了。


其实还经历了好多事,但有些事只适合收藏。凡所发生,必有来意,不管开心还是难过,都想记下那时的感受,等我老了再来看,当时开心的事我是否依然会笑,当初觉得悲痛万分的坎坷,是否又轻舟已过万重山了(^-^)


最后:


这篇博客是我工作总结系列的第一篇,我希望通过这个平台,记录我在编程之旅中的点点滴滴,记录代码之外的日常生活。如果通过分享我的经历和感受,或多或少能够帮助和鼓励更多的人,那就更好啦。


我想以喜欢的史铁生的一段话结尾~~
我一直要活到我能够历数前生,你能够与我一同笑看,所以死与你我从不相干。


作者:正是江南好时节
来源:juejin.cn/post/7302276173789954098
收起阅读 »

透过线上问题谈横向能力

主题    昨天遇到了一个比较有意思的服务器问题,然而就这么发生了,有些异形问题在多方协作模式下发生,协调甩锅、“坐等靠”,证明等乱七八糟的内容太消磨热情,本次通过一个异常的问题排查分享,来谈谈横向能力的问题,谈谈看法 起因   事情的起因是这样,运维的堡垒机...
继续阅读 »

主题


   昨天遇到了一个比较有意思的服务器问题,然而就这么发生了,有些异形问题在多方协作模式下发生,协调甩锅、“坐等靠”,证明等乱七八糟的内容太消磨热情,本次通过一个异常的问题排查分享,来谈谈横向能力的问题,谈谈看法


起因


  事情的起因是这样,运维的堡垒机访问发布一直未发生任何问题,但节后,C系统出现统一认证异常的情况,但其他集成系统均无任何问题,堡垒机同样,这个C系统是正常的、出现了一方正常其他方不正常的情况,一般规律,软件出现问题,这个情况会在某些场景下复现,出现异常情况.


注: 这里补充一下,统一认证起到的作用是保证内部系统的统一,同样承担着接入外部系统以及接入外部认证逻辑的作用,而此时的异常系统为自身系统、因此才有了排查的前提
认证的逻辑,基本上是通过,统一存储服务域下的localStorage,通过ifame隐藏打开指定页,通过postMessage 进行唯一交换进行的(唯一交换的好处是不用源头统一,不用处理乱七八糟的不一致问题)
image.png


经过


  基于以上前提,经过异常反馈的情况和代码的确认,剔除了自身逻辑的问题(之所以要确认一次,是为了核实),怀疑问题出自于服务器网络问题,了解到之前一直没有任何问题,C系统中间经过发布,而且都笃定之前没出现过此种情况,因此有了退版本的情况,但情况依然不正常,又找到了我这里,此时有了远程的可调试环境,此时观测到一个特殊标记,在域下明明有token的情况下,通过这种方式获取不到、又核实了其他系统均正常。


  此时的问题已基本定位到服务器上了,但如何在当前条件下快速的验证证明此项结论的正确性,是个问题(业主方服务器相关已经过沟通,绕进了鸡生蛋、蛋生鸡的循环种)。


   过程大略是经过nginx的重新代理访问,达到切换服务的目的,通过路径配置进行更改验证,一番操作下来,验证了外部认证逻辑的正确性,但又产生了跨域问题,原因是C系统的发布用的是绝对地址,配置有服务指定访问地址,源码替换,重新docker镜像发布之后,添加服务的nginx访问后,问题得到了解决,当然过程回溯很容易,中间也是各波折。


如何证明


   说实话,这个问题,我也属于第一次遇到,怀疑可能是安全策略的问题导致的,两个服务器的连通性是没有任何问题的,期间怀疑过nginx配置问题,docker问题,就也不知道怎么证明服务器的什么因素影响到了无法有效获取localStorage,有知道的老哥,也还请赐教、


回溯


  这个问题,现在分析来看,涉及到前端、后端、运维的三重交接处,nginx这个问题,经常被甩来甩去,均认为是运维的职责、而此项问题,运维也无法跟踪排查得出结论,试错的条件和成本较大(并非别人想不到),但问题需要解决,此时的情况下,最小化的验证和解决问题就需要有横向的能力去综合评判、某方面缺失,很容问题就变成三方证明,这个问题不是我的问题,结果显而易见,就跟死锁一样得不到解决,当然这只是很小的一方面、


分析


  每个人的想法和态度,会随着不同阶段变化,在某一个情况下希望努力学习新的知识内容用以变化成薪资、某个阶段需要安稳,又可能在某个阶段变成需要休息和清闲,但这一切的选择,有个前提是事前的努力,运气和时代的洪流并不是一直都有,求而不得是常态,为啥都经历过高考,却想不明白,更高的分数才有更多的选择,未来也才有更多的机会、至于年龄大转行这个问题,这是个人姿态的问题,积极向上总是好的,丧着也不是不能过,各自容忍,毕竟过的都是自己的人生,不是他人的,姿态和态度总要有,那么,你的态度又是啥?


作者:沈二到不行
来源:juejin.cn/post/7288678134076162111
收起阅读 »

语雀 P0 事故复盘,这 9 个字亮了!

大家好,我是鱼皮。 最近语雀不是出了个号称 “载入史册” 的 P0 级事故嘛 —— 连续宕机 7 个多小时无法使用,作为一个大厂知名产品,这个修复速度属实让人无法理解。要命的是我们公司的知识库也是放在语雀上的,导致那天下午大家摸鱼很愉快。 很快,官方就发布了《...
继续阅读 »

大家好,我是鱼皮。


最近语雀不是出了个号称 “载入史册” 的 P0 级事故嘛 —— 连续宕机 7 个多小时无法使用,作为一个大厂知名产品,这个修复速度属实让人无法理解。要命的是我们公司的知识库也是放在语雀上的,导致那天下午大家摸鱼很愉快。


很快,官方就发布了《故障公告》。有一说一,这个公告写得还是挺不错的,时间线梳理的很清楚。而且起码没有把责任归咎于 “网络原因”,还以为又是某个地区的网线被挖断了呢。



故障公告原文:mp.weixin.qq.com/s/WFLLU8R4b…



也有同学看了的语雀故障公告文章,发现改进措施这一段中提到了 “可监控,可灰度,可回滚” 这 9 个字,我觉得这确实是全文的核心亮点了,把事故复盘总结地很精辟。



但是这 9 个字到底是什么意思呢?鱼皮给大家解读一下。


如何保证系统发布的稳定性?


首先,这几点都是企业正式线上项目需要重点关注的能力,所以大家在校自学时一般是很少能接触到的。



但如果你知道并实践过这些,前途不可限量啊!



可监控


可监控是指能够实时地收集和展示系统运行时的数据和指标,以便开发和运维同学可以及时发现系统问题、更快进行故障排查和性能调优。需要监控的信息可以包括系统性能指标(内存、CPU、带宽等)、业务日志、错误信息等。


还有一个与之相关的术语 “可观测性”,就是指一个系统状态对开发维护者的透明程度。举个例子,我不需要每次打开服务器看日志或者用什么 jmap 命令分析 gc,而是直接通过一个面板整体查看系统的状态,甚至是自动提示问题和解决方案。


AIOps 智能运维也是现在很流行的一种技术,用 AI 帮忙运维诊断系统,大大提高开发运维效率。


可灰度


指灰度发布能力(又叫金丝雀发布)。将系统的新版本全量部署给所有用户之前,先仅对一小部分用户进行试用。这样可以通过收集这部分用户的反馈和监控数据就能评估新版本的稳定性,并及时进行调整和修复,从而减少对全体用户的潜在风险。


灰度发布又有很多策略。比如经典的按流量阶段性发布,先随机给 5% 的用户使用新版本,验证没问题后,再给 20%、50%、75% 的用户使用新版本逐渐放量,直到覆盖 100% 的用户。


还有很多策略,列举几个常见的:


1)按照用户的业务属性灰度,比如 VIP 用户先用、老用户先用。


2)按人群灰度,比如特定地域、特定年龄、特定偏好、特定客户端的用户。


3)按渠道灰度,比如通过某平台注册的用户先体验等等。


灰度做的好,可以避免很多线上问题,及时控制影响。因此很多知名产品发布时都会采用灰度或者内测的策略,这也就是为什么有些同学能第一时间体验到微信新功能,有些同学却没有。


可回滚


就像 Git 版本控制系统回滚写错的代码一样,系统的版本也是可以回滚的。


线上系统出现问题时,可以将已经部署的新版本回退到之前的稳定版本。这样做可以快速恢复系统,减少对用户的影响,并给开发同学足够的时间来排查和修复问题。而不是线上一直故障,每分钟都是损失。


最后


咱也不是阿里内部的同学,说实话我不相信阿里内部没有统一的监控平台、灰度发布和部署管理平台。估计是部门自治或者人员不规范的操作导致的吧。(毕竟一个实习生说不定就能干崩一家公司)


总之,上面讲的这些特性都是为了在软件开发和发布过程中提高系统的稳定性、可靠性和可维护性。


想要实践上面这几点其实也很简单,直接用微信云托管平台就好了。我之前直播时录制过一套微信云托管的实践教程,大家如果需要的话,可以评论 “需要教程” 让我看看大家对这方面的需求,有必要的话回头给大家发出来~


作者:程序员鱼皮
来源:juejin.cn/post/7302230973738893349
收起阅读 »

程序员必看几大定律(2),你中招了吗?

1 洛克定律 确定目标,专注行动! 这条定律,我相信做过几年的程序员感受都会特别深! 除非你写的代码没什么难度,否则思考或者说设计才是程序员最经常要做的事,只有想清楚了,动手写代码才会顺畅! 不然你会发现自己经常在写一会->想一会->改一会 中...
继续阅读 »

1 洛克定律



确定目标,专注行动!



这条定律,我相信做过几年的程序员感受都会特别深!


除非你写的代码没什么难度,否则思考或者说设计才是程序员最经常要做的事,只有想清楚了,动手写代码才会顺畅! 不然你会发现自己经常在写一会->想一会->改一会 中循环往复,浪费不少时间和精力。


我自己总结了一下程序员的几个阶段:




  1. 初期: 以学习技术为主,写代码过程中花费时间最多的是:


    很多语法不懂要查、被一些低级错误耽误,调试很久可能发现只是单词拼错、完全没思路,只能疯狂搜索或者求助前辈。




  2. 中期: 常用技术已经熟悉,业务也逐渐深入,花费时间最多的是:


    某些代码因为经常copy,虽然已经写了几十次了,每次用的时候总是想不起来,还是要经常查。


    花更多的时间思考业务逻辑、思考代码结构。




  3. 后期: 我也还没达到,只能自己脑补一下:


    代码敲的更少了,主要负责项目管理,系统设计,系统架构。


    百科全书级的人物,能够解决绝大部分问题,当新人向你询问自己也曾犯过的错误时,也会感慨:时光不再了啊!!




2 相关定律



条条大路通罗马,万事万物皆有联系!



不知道你们是不是跟我曾经一样,有某一段时期,痴迷于各种技术栈。


我之前在刚接触前端,学习vue的时候,对前端充满了兴趣,不仅要会element-ui,也要会ant-design,不管是less,scss我都想要会,各种实用的工具库我也要会,vue2还不过瘾,vue3也得会,还看了react,nodejs,express,nuxt,next,ts,webpack,vite,rollup......


花了不少时间看了各种技术栈的文档,也实际动手搞了点小东西。


不过说真的,收获其实不多,即使当时感觉收获很多知识,但是因为这些额外的知识在工作中不常使用,过一段时间就忘了差不多了。


后来我是想通了,与其这样囫囵吞枣,不如深入现有经常接触的知识,我就不信了,如果我把vue2彻底搞懂了,学vue3还不是轻轻松松,学react应该也只是分分钟的事。


于是我就从各种源码开始看起,从axios到vuex,vue-router,vue2的源码也看了一部分了,不过最近工作忙,已经停了几周没看了,但是收获还是很多的,确实更让我坚信了:


条条大路通罗马!!


感兴趣的小伙伴也可以进入我的主页,里面有不少源码的阅读解析。


3 奥卡姆剃刀定律



把握关键,化繁为简



不知不觉,已经从当初的菜鸟逐渐变成现在的老鸟,工作也从繁复的coding中挣脱出来了一些些。


现在越来越觉得设计才是软件开发的精髓


而一个好的设计,一定不能太过复杂!


听一位领导讲过:公司推广过不少,不乏设计精细,十分深入业务理解的系统,但是真正能够推广让用户爱用的系统,一定不能太复杂,必要的时候也需要为用户的便利做出一些牺牲。


4 墨菲定律



如果事情有变坏的可能,不管这种可能性有多小,它总会发生。



不知道是谁瞎传的,我一直以为墨菲定律说的是:你越害怕的事情,越容易发生!


直到我看完墨菲定律才发现自己真的是被这句话给耽误了好久。




墨菲定律对于程序员来说,我觉得意义是很重大的。


因为如果代码存在bug,那么就一点有变坏的可能,不管这种可能性有多小,它总会发生!


也就是说,只要存在bug,它早晚都是会被触发的!!


不知道有多少人跟我曾经一样,抱着侥幸的心理,有时候即使知道某段代码存在bug,但是因为触发条件十分苛刻,就不去管它!!


只是我的心里还是会隐隐担心着某天会不会被人发现。




作为程序员,一定要保持代码的严谨性,对自己的代码负责。


任何人都无法保证自己不出错。


但是至少,如果已经有我们知道的问题,不要因为麻烦,不要因为侥幸,而去逃避它!


或许你们不相信,当我抱着这种消除自己所有已知隐患的态度写代码之后,反而觉得整个人都轻松了不少。


脑袋里没有那么多要惦记的事情,事情做完就真的等于事情做完了!如果真的出现自己也没想到的问题,那我也已经尽力了,再解决就是了。


5 酝酿效应



灵感来自偶然!



不知道你们是否也有遇到过这样的场景:


一整天都被某个问题困扰,百思不得其解!!


回去睡一觉,第二天再一想这个问题,我去,答案怎么就直接有了!!


那我昨天为什么会困扰这么久呢?




这其实就跟酝酿效应有关系!


当我们百思不得其解的时候,往往代表着脑袋的思考方向就进入了死胡同,这时候再怎么往里投入时间,投入精力都进展甚微。


而当我们放下这件事,去做其他事情的时候,我们的潜意识并没有忘记这件事,还是在帮助我们思考,只不过不是继续往死胡同里走了,用一个词来形容,那就是酝酿


所以当我们回过头再思考的时候,常常发现有心栽花花不开,无心插柳柳成荫柳暗花明又一村这样的现象!


所以如果你们看到程序员老哥们正在喝茶发呆,一定要小心,他们一定不是表面看过去的这么简单,他们的脑海可能正在疯狂酝酿着一段绝佳的代码!!


作者:林劭敏
来源:juejin.cn/post/7302249949215408167
收起阅读 »

浅谈一下滴滴实习

在租房躺尸好几天了,自从周一从滴滴离职就一直待在租房打游戏,瞬间没有工作的负担是真的彻底让我释放了心中的欲望,实际上游戏纯属发泄欲望和转移注意力的工具,我是一个喜欢瞎想的人(这可能就是我胖不起来的主要原因),放纵完实在是太无聊了,想写点什么。 说实话我这文章写...
继续阅读 »

在租房躺尸好几天了,自从周一从滴滴离职就一直待在租房打游戏,瞬间没有工作的负担是真的彻底让我释放了心中的欲望,实际上游戏纯属发泄欲望和转移注意力的工具,我是一个喜欢瞎想的人(这可能就是我胖不起来的主要原因),放纵完实在是太无聊了,想写点什么。
说实话我这文章写得毫无章法,完全是想到哪里写到哪里,也不想去分门别类了,我觉得真实的想法最重要,如果有语义错误就略过吧哈哈。


说说业务


对这段实习做一个小小的总结,先说一说业务吧,我所在的是滴滴商旅的一个技术部门,主要负责企业版这块的业务,我去的第一天上午看团队规范文档,下午跑项目看代码,第二天接需求,当然是比较简单的需求,后面陆陆续续做了滴滴企业版的小部分 pc 端官网和大部分移动端官网,如果你现在用手机搜滴滴企业版,那么你看到的页面大概率就是我做的,除此以外还有一个经典后台管理项目,其实项目用的技术栈都还好,没有说很有难度的,对于业务来说我觉得最难的应该就是项目的搭建和部署,然后就是技术方案,开发代码确实是最基础的事情了,这几个月完成的代码量并不大,这也完全在意料之中,实习生嘛,能确保自学到东西就行,当自学到一定的程度会很迷茫,不知道下一个进阶的领域是什么,但是在这段时间我逐渐感觉前端的一个瓶颈就在前端工程化,其实早就在学了,但是没有实际的项目经验加上网上教程比较匮乏,大多是讲解 webpack 的基本使用甚至一度让大部分人认为 webpack 就是前端工程化,如果有后端基础我觉得理解工程化那就太简单了,只不过可惜的是参与前端开发的大多是后端经验为 0 的同学,因此对于常年在浏览器玩 js 的我们很难理解在编译阶段能做的一些工作的意义所在,不管是现在的 Node 或是 Go 和 Rust,其实都可以作为一个深入挖掘的方向,至少我感觉业务是真的很无聊,偶尔当玩具写写还行,每天写真的没意思。


除了业务以外认知到一些原来不知道的职场"内幕"。


第一点:面试冷知识

走之前组内一直在招社招的员工,当面试官的兄弟和我说了我才知道,原来面试通一个部门甚至是同一个面试官可能真的会因为面试官心情或者其余外在因素决定你面试是否通过,比如最近部门比较忙,那可能面试也就比较水一点,大概考察没问题就直接过了没有那么多的时间去做横向比较(那我面的部门基本都还是比较闲啊哈哈),又或者是面试官看你比较顺眼性格也比较符合他的要求,大概率会给一些比较简单的题,这些都会影响面试官的判断从而决定你是否能通过面试最终拿 offer,所以经过这件事之后看开了很多,如果原来你一直不理解平时技术没你好的同学最后能拿到同公司或者同部门 offer,现在应该慢慢也就看开了,一旦挂了及时投递下一个部门,这不一定是自己的原因。


第二点:大厂其实不全是 996

不要被危言耸听,这其实大概率取决于你的部门而非公司,我在的部门经过这两年的形势成功变得小而精,小组的氛围很好,平时开发大家都合作得很开心,不管是导师还是 leader,休息了也会偶尔一起打打游戏,在这个部门我感觉挺好至少没有看到所谓的大厂 996,基本上大家 10 点来,最晚 8 点也都走了。离职的前一天刚好赶上了部门团建于是狠狠地去蹭了一只烤全羊,leader 把商旅的大 leader 请过来了,我对大领导的刻板印象是电视里那种懂得都得,但是没想到和我想的完全相反,大家举杯畅饮吹牛逼,欢声笑语,挺好,,后来想想有可能是因为大家都是技术出身很多时候也都很讨厌那一套,这也是我对互联网最满意的一点,凭本事吃饭,对于出身不是那么地依赖,也不是尔诈我虞,阿谀奉承。


第三点:学会装菜,不要没事找事

作为实习生,懂的都懂,其实在哪里都一样,如果你太着急表现自己,别人就会觉得你过分刺毛,能装菜的地方千万别装逼,艹,我感觉我就是傻逼了,这也许也是我离开的原因之一,作为实习生老老实实完成自己的工作就好,能够保质保量完成任务对于导师来说基本就差不多了,至于一些 pua 话术里面说的额外价值,我觉得对于没有转正的实习生来说毫无意义,反而会自找麻烦,因为并不会因为你原本安排 2 天切完的图你一天切完导师就给你放松自学,很多时候你做的事情是否有意义完全取决于你的导师是否愿意安排有意义的工作给你,所幸我在滴滴完整地参与了项目的技术方案到代码编写直至最后部署上线,里面沉淀了我自己的思考,经过这段实习确实让我受益匪浅。


最后一点是软实力

我觉得这也是我在这段实习中收获到的最重要的东西之一:"学会总结,及时复盘",每次周会给导师和兄弟们讲方案总是要准备很久,会去看很多的自己不知道的东西,以此来让我写的东西显得足够的高大上,记得有一次上线官网出问题了,意料之中做了一个复盘,倒不是说学到了什么代码层面的东西,更多的是让我了解了整个项目从开发到部署上线的流程,这个远远比写代码有意义,不得不说这极大地培养了我的能力,包括新技术的敏感程度,技术的深度以及口才,总结出来的东西一方面加深了自己的记忆和理解,往小了说,让我可以在以后的技术面试中就这段经历侃侃而谈,往大了说,这个让我学会从更高的视角去看问题,不再是盯着代码的一亩三分地,更多的是学会从项目的技术架构层面去看问题,第二是学会表现自己并且及时纠正自己的错误,没错,就是给别人看,自己瞎学总结是没有意义的,你是一个无比努力的人,可是大家不知道那也毫无意义,他能知道的仅仅是你能写上简历的东西,只有向别人更好的展示自己,下一次面试官看到你才会觉得你是一个善于总结和反思的人,程序员这一行也是这样,其实参与一个开源项目远远比你基础扎实更让人刮目相看,尽管你只是为一个看起来无比高大上的开源切了图,对我自己来说我只是把曾经在 wps 或者 typora 的写作 转移到了掘金或者 github,内容并没有太大的变化,这样的事情何乐而不为呢。


最后做一个收尾。


这两天想去北京附近转转,今天跑到了天安门,还是想吐槽地铁站一些人地素质问题,经典的钱包鼓起来了素质教育没跟上来,或者换句话说富起来很多并非接受过良好教育的一批人。


马上快开学了,要回学校拿保研名额,说实话我到现在都不确定哪条路是对了,大厂?还是保研?还是国企公务员?谁知道呢,每个人有每个人的说法,老员工会劝你保研进编制,新员工会劝你尽早进大厂捞钱,每个人追求的往往都是目前最缺失的,也许正是因为未来充满未知所以才无限期待,不然像我这样躺尸一周那该多无聊,脑袋都睡麻木了,这两周陆陆续续也面试了四五家公司,不得不说有大厂背书投简历就是好使,曾经拒绝过我的那些公司都拿到了 offer 然后全给拒了哈哈,不为别的就是解气,基本都是一些 b 格还比较高的独角兽公司,比如教育,云服务器,游戏行业等等,大厂我肯定还是没这个底气的哈哈我依然是大部分大厂的舔狗,不过结果不算坏,下一站是老铁厂了。


不知道是否会有之前一起工作的兄弟看到这篇文章,如果认为我有说得不恰当的地方欢迎指正。


作者:雨赎
来源:juejin.cn/post/7268289776867934266
收起阅读 »

结构思考力-透过结构看思考

欢迎大家关注 github.com/hsfxuebao ,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈 目标:思考清晰,表达有力,解决问题 0. 理念:透过结构看世界 结构化思考力的核心理念是应用结构化思维底层逻辑进行思考、表达和解决问题。  ...
继续阅读 »

欢迎大家关注 github.com/hsfxuebao ,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈



目标:思考清晰,表达有力,解决问题


0. 理念:透过结构看世界


结构化思考力的核心理念是应用结构化思维底层逻辑进行思考、表达和解决问题


  高效管理者应当具备三种基本技能:技术性技能、人际性技能和概念性技能。概念性技能是指面对复杂情况进行抽象和概念化的技能。


  结构思考力是一种“先总后分”的思考和表达方式,强调先框架后细节,先总结后具体,先结论后原因,先重要后次要


0.1 透过结构看世界,洞悉事物本质


结构是万物之本


  内行和外行的差别在于,是否具备这个行业的思维结构。


  结构存在于每个整体和局部的无穷变化中,每个局部变现整体,而每个局部的意义又由整体来决定。


结构也是思维的根本


  由欲望产生需求,由需求产生动机,由动机产生行为等,这些构成了心理活动的结构。


  从物质基础看,记忆和思维的发生基于的是人类大脑物质层次的“实体结构”;从思维效果看,思考和表达的效率不同,则基于的是人类思考的“逻辑结构”。


    


0.2 三层次模型:结构思考力的核心理念


案例:如何把200ml的水装入100ml的杯子里?



image.png


解决问题的三个步骤,对应到结构思考力的三层次模型




  • 第一步,明确自己遇到了什么问题。

  • 第二步,用科学的方法重新梳理思路,自己想清楚、想全面,从而针对问题做出有效的决策。

  • 第三步,保证解决方案可以顺利实施。


总结:




  • 理解:隐性思维显性化。觉察现有的思维,并且判断它是否清晰。




  • 重构:显性思维结构化




  • 呈现:结构思维形象化




0.3 金字塔结构:结构思考力的训练工具


麦肯锡咨询公司:以事实为基础,以假设为导向,严格的结构化


巴巴拉·明托的金字塔原理是一项层次性、结构化的思考、沟通技术,可以用于结构化的说话与写作过程


有一些经典案例,请看视频。


1. 理解:隐性思维显性化


看似有一个统一的标准,但具体又说不清楚这个标准究竟是什么,是不能量化的,换句话说,只能意会不能言传。这是隐性的感受。


理解是结构思考力的基础,本质是拆分信息找结构


image.png


结构化接收信息的三个步骤:识别、判断和概括:




  • 第一步:识别信息中的事实和观点,确定理由和结论。找出哪些是观点类信息、哪些是事实类信息,观点类信息中哪些是结论、哪些是支撑结论的理由,并将它们区分。




  • 第二步:判断结论和理由的对应关系,并依据这些对应关系画出金字塔结构图
    要判断对方结论的合理性可以从两点出发:一是看对方提供的事实与数据是否真实。二是这些事实与数据是否可以得出相应的理由,相应的理由是否可以得出最终的结论。




  • 第三步:一句话概括所有内容
    在“序言”的基础上,从“ ”,“ ”,“ ”N个方面(一级目录),说明了“结论”。




1.2 案例


1.2.1 中国书法


中国书法是一门古老的艺术,它伴随着中华文明的发展而发展。世界上,拥有书法艺术的民族屈指可数。书法作为一种艺术创作,具有很深的玄妙。中国书法,具有悠久的历史,从甲骨文、金文演变而为大篆、小篆、隶书,到东汉、魏、晋时期,草书、楷书、行书、诸体基本定型,书法时刻散发着古老艺术的魅力。为一代又一代人们所喜爱。书法,是在洁白的纸上,靠毛笔运动的灵活多变和水墨的丰富性,留下斑斑迹相,在纸面上形成有意味的黑白构成,所以书法是构成艺术;书家的笔是他手指的延伸,笔的疾厉、徐缓飞动、顿挫,都受观的驱使成为他情感、情绪的发泄,所以,书法也是一种表现性的艺术;书法能够通过作品把书家个人的生活感受、学识、修养、个性等悄悄地折射出来,所以,通常有"字如其人”、"书为心画“的说法;书法还可以用于题辞、书写牌匾,因此,也是一种实用性的艺术


结构化:


一句话概括:

介绍世界上拥有书法艺术的民族屈指可数的基础上,从书法具有悠久的历史丰富艺术表现形式两个方面,说明了书法是一种古老而玄妙的艺术创作


2. 重构:显性思维结构化


2.1 结构思考力四个核心原则


案例:紧急事件的沟通


小李:李总,您好!我是小赵,有件事情非常紧急,今早七点我接到郑州交通管理局的电话,六点十分在郑州203国道上发生重大交通事故,我公司销售部的小马驾车与一辆大货车相撞,小马当场死亡,对方司机重伤,目前正在医院抢救,与小马同车的还有公司的销售员人员张三李四和王五、三人都不同程度受伤,但无生命危险。目前事故责任还不能确定,我准备立刻前往郑州处理相关事务,希望跟您商量一下应对措施。


李总:立即向主管总裁汇报;然后联系相关医院确保伤病员的全力敷治;再联系保险公司,协商理赔事宜;还有,联系伤亡员工家属;别忘了跟郑州交警部门确定事故责任,一定要全力维护公司利益跟销售部门说,让他们确保货物安全,做好工作交接,处理好与客户的关系,请他们理解;总之就是按照公司应急预案立即成立事故处理小组处理上述事宜。对了,别忘了做好伤亡员工家属前往郑州的准备。


如果李总这么表达,小李听的一脸懵逼~~


按照对内和对外分,为:



根据公司应急预案组成事故处理小组处理事故。


第一,跟总裁汇报情况并联系销售部做好善后处理;
第二,与医院、家属、交警和保险公司等多方协调维护员工和公司利益。



按照人员,事故,业务划分:



跟总裁汇报,根据预案成立事故小组处理事故。
第一,确保伤病员的全力救治并好家属安排;
第二,与各部门多方协调维护员工和公司利益;
第三,销售部做好货物和供应商的善后处理。



我们根据 对内和对外 画结构图,如下:


1239.jpg

重构“四核”:结构思考力四个核心原则


image.png

2.2 论:结论先行,一句话100%传达传达你的意思


案例:政府工作报告


image.png

案例:媒体的结论先行


image.png

案例:咨询公司的结构


image.png

案例:工作总结


修改前:

image.png


修改后:

image.png


2.3 证:以上统下,让你的观点经得住挑战质疑


image.png

  • 有结论

  • 有理由

  • 结论和理由相联系


2.4 类:归类分组,让你的表达清晰全面且容易记


案例:好友印象


image.png

分类:


image.png

结构化:


image.png

划分标准


**MECE原则**(Mutually Exclusive Collectively Exhaustive):中文意思是“相互独立,完全穷尽”,即对于一个重大的议题,能够做到不重叠,不遗漏的分类,而且能够借此有效把握问题的核心,并解决问题的方法。


“相互独立”意味着问题的细分是在同一纬度上并有明确区分、不可重叠的,“完全穷尽”则意味着全面、周密。



  • 例子:


  • image.png


2.5 比:逻辑递进,让你的观点逻辑严谨且有说服力


递进排列有三种顺序:




  • 时间顺序:当想要达成某个结果时,这个结果的达成必然有一系列行动或步骤来支撑,而这些行动或步骤就是按照时间顺序排列的一些要素。这些要素是对该组行动或步骤的概括,也是该组行动或步骤达成的结果。


  时间顺序适用于项目进展、阶段汇报。


 



  • 结构顺序:是指将一个整体划分为不同的部分,这个整体既可以是事物也可以是概念,或者从外到内、从上到下、从整体到局部来加以介绍。




  • 重要性顺序:是指具有某些共同特点和内容,按照重要程度进行排序。



3. 呈现: 结构思维形象化


3.1 结构罗盘,一张图说清所有工作内容


案例:隆中对,诸葛亮分析、汇报战略的结构


image.png

案例:一张图说清企业战略的前提是‘结构’


image.png

图表指南工具-结构罗盘


image.png


案例:停 缺 得


image.png

案例:整合-字母


image.png

3.2 配关系,四大模式十六种结构




  1. 形象表达是视觉化呈现结构的最佳方法。




  2. 结构罗盘:一站式形象表达的解决方案。




结构罗盘从内到外主要分成三个部分:“配”关系、“得”示图、“上” 包装




  • 流动模式:线性、流程、循环、关联

  • 作用模式:对立、合力、平衡、阻碍

  • 关系模式:并列、重叠、包含、分割

  • 比较模式:成分、排序、序列、关联


案例


image.png
image.png

基于信息定结构练习


image.png

3.3 得图示,关系匹配类图


3.3.1 好图胜千言


image.png

3.3.2 流动模式:整理流程的流动模式


image.png

线性和流程关系


image.png

关联和循坏


image.png

对应的图示


image.png

3.3.3 作用模式:动态变化的作用模式


分别是:阻碍,平衡,合力,对立


对立和合力


image.png

平衡和阻碍


image.png

图示


image.png

3.3.4 关系:要点清晰的联系模式


并列、重叠、包含、分割


并列和重叠


image.png

包含和分割


image.png

图示


image.png

比较模式:数据说话的比较模式


成分、排序、序列、关联


成分和排序


image.png

序列和关联


image.png

图示


image.png

3.4 上包装,让观点更吸引人更容易记


将已经搭建好的金字塔结构的一级目录通过简化、类比、整合和引用的方式进行包装,让对方更容易记忆并接受你的观点:
image.png


案例:简化


image.png

类比


类比-形象


image.png


类比-行为


image.png
image.png

类比-形象


image.png

整合


image.png
image.png
image.png

引用


image.png
image.png

4. 总结


image.png


作者:hsfxuebao
来源:juejin.cn/post/7301901927858880538
收起阅读 »

IT界惊现文豪!华为领导及阿里P10遭吐槽!

来源:网络一篇奇文出现在某匿名社交软件,引起了大家对文豪的赞口不绝。先发原图:一遍好文一定少不了精彩评论写这么好,应该不是偶然,原来这位文豪之前也有关于P10的大作,分享给各位小伙伴以上只是工作之余的一点乐趣,仅供娱乐。真正的P10,还确实是挺厉害的,只不过他...
继续阅读 »

来源:网络

一篇奇文出现在某匿名社交软件,引起了大家对文豪的赞口不绝。

先发原图:

一遍好文一定少不了精彩评论

写这么好,应该不是偶然,

原来这位文豪之前也有关于P10的大作,分享给各位小伙伴

以上只是工作之余的一点乐趣,仅供娱乐。

真正的P10,还确实是挺厉害的,只不过

他的厉害,懂得人并不多,

因为懂得人至少也得P9!

作者:程序员直聘
来源:mp.weixin.qq.com/s/Fw0s7uE76a2h2opHRGVUfg

收起阅读 »

技术人该如何准备晋升答辩?

前言 大家好,我是路由器没有路。今天跟大家聊下关于技术人该如何准备晋升答辩的话题。 每到年中或者年底,都会有一波晋升答辩潮。所以在这个时间点,想跟大家聊聊我的个人经验,以及一些对技术人该如何准备晋升的一些启发。 在公司里,我曾参与过各个职级的晋升答辩,也见到过...
继续阅读 »

前言


大家好,我是路由器没有路。今天跟大家聊下关于技术人该如何准备晋升答辩的话题。


每到年中或者年底,都会有一波晋升答辩潮。所以在这个时间点,想跟大家聊聊我的个人经验,以及一些对技术人该如何准备晋升的一些启发。


在公司里,我曾参与过各个职级的晋升答辩,也见到过各种各样的答辩现场。就在前阵子,公司部门刚结束了年中职级晋升答辩,我也花了不少时间在团队成员的答辩辅导上。今天我就把一些晋升答辩的技巧和常见的坑跟大家说说,希望能够在晋升之路上对你有所启发。


争取获得答辩机会


现在很多公司都有完善的员工职级晋升管理制度。职级晋升的答辩当然是少不了的了。既然是答辩,就会涉及答辩内容及现场答辩发挥,每一个环节都不容忽视。


也有一些公司的年中或年度晋升是需要在时间范围内先自主提报的,也就是说每个人都有机会,但有些公司是按提名制的,需要你自己去争取答辩机会。下面我们就来说说怎样才能获得提名资格:



  • 自身能力能够达到了下一个职级的要求。但有些人可能会认为,要晋升了之后才需要具备下一个职级的能力,这观点是不正确的。

  • 公司对人才的要求具备高度的确定性。通常不会冒太大风险去晋升能力不确定的人。因此,你可以提前参考目标职级的要求或同事,关注他们的技术深度和业务能力。

  • 主动找领导沟通,确定努力发展方向。对发展方向制定可落地的措施。其实上级对于希望得到成长的员工都是非常欢迎的。



接下来,在争取获得答辩晋升机会后,就可以着手为答辩做准备了。


准备答辩素材


说到述职晋升答辩,当然少不了一份晋升汇报的 PPT。那么该如何准备晋升答辩素材呢?内容当然是包含近一年来的工作成果。


在答辩时,晋升答辩评委通常是跨团队或跨部门的领导。他们往往是不了解你工作成果的业务背景和技术实现细节,因此你需要在短时间内将业务背景、工作成果介绍清楚,这对不善演讲的技术人来说确实有比较大的挑战。


有人可能会说,平时是不是需要记录项目素材呀,我只能说,关系不太大。答辩素材是需要你去实践并产生的,而并非是靠记录。所以我建议,如果有机会,要尽可能多的去参与比较有挑战的项目建设,当然这可能开发难度较大、工作量大、比较累,但相比简单的项目则更容易创造价值、得到收获。


当然如果你没有参与过这种项目,那么你也可以对项目或者线上问题的点作技术深挖


比如线上有这么个问题:经常性的发生 CPU 占用突然飙高,停顿一两秒后又恢复正常。或者内存间歇性的发生 OOM 了。虽然这对业务影响不算大,很多人可能也不会在意和处理这种问题,最多重启下服务,恢复正常就好,但是如果你去深挖问题背后产生的原因,找到问题的根源和涉及的底层技术点,并在团队内部给大家分享。


这就是很有价值的内容,因为你不仅主动的解决了看似不起眼问题,而且还通过分享的方式让其他同事也明白其中的原因,帮助了其他同学的成长。


根据素材,编写答辩 PPT


在上面准备了答辩素材案例之后,接下来需要根据准备好的素材,编写答辩素材 PPT。这里有几个需要遵循的原则:



  1. 在讲述结果的同时,需要把问题点和解决方式也讲清楚。比如在这一年里,你负责了一个大型项目,并成功完成了上线。切记在 PPT 里花大篇幅介绍项目是什么,以及项目成功上线这一结果。因为评委无法通过结果评估你的能力和价值。所以,在介绍素材时,首先要介绍背景,然后介绍这个项目案例中存在哪些问题,你是如何解决的?

  2. 结果要有价值和数据体现。说到结果时,很多人习惯讲解项目如期上线等内容,但在评委看来,这是基本的要求,并不是加分项。正确的做法是通过一些上线后的数据说话。比如介绍上线后的系统性能、数据质量等相关内容。这里强调一点,很多研发同学习惯写上线后的一些业务数据。如新增用户数带来的金额、收入等,这类数据其实与产品、业务同学联系更紧密一些。研发应该更多的把关注点应放在技术层面上。

  3. 素材要匹配晋升的职级定位。像只有苦劳的内容,比如在赶工期的项目里,加班加点的保证他如期上线,且获得了领导认可等,建议不要写,原因很简单,就是不能体现你的技术价值,这些活,说不好听点,刚毕业的同学都可以完成。



晋升答辩素材 PPT 的一些建议


这里和大家分享下编写晋升答辩 PPT 的一些建议,可以参考一下:



  1. PPT 的基本格式要统一。答辩的 PPT 的内容不要太过绚丽。除了要保证基本的工整,细节也很重要,一定要注意审查错字。有些评委会认为错字多,可能写代码 bug 也多。还要注意统一字号,不要一页字大一页字小。此外,还要避免过多动画。注意控制字数,重要的内容标红、加粗。答辩一般都是集中评审,评委一天要评审,很多人没有耐心看太多字。把你想要表达的重点内容标红加粗,这样评委才能快速吸收。

  2. 不要放一张大而全的架构图。很多同学都习惯在 PPT 里放一张大家全的架构图。但在答辩时,你只讲解了其中的一小部分。你可能会认为大而全的架构图可以彰显自己系统的完善性。但如果你只讲解了其中一二,其实是很难讲出价值内容,毕竟时间有限,反而容易给评委留下浮于表面的形象。你可以对自己负责实现的那个模块单独拿出来讲,可以采用更优雅的方式进行展现,就具体问题的架构,加上细节问题描述,代替大而全的架构图,才能让评委快速了解问题的背景和解决方法,进而更好的评判你到底做的好还是不好。

  3. PPT 上不要露马脚。我曾经遇到过答辩人在 PPT 中写了幂等两个字,我想他写出来的目的是想表示如何实现它,但评委一直对这个点穷追不舍,导致答辩人最终答辩挂了。你写在 PPT 上的每一个字都需要十分熟悉,每一个内容都可能是地雷。


要写答辩稿并加以练习


写完 PPT 后,在正式答辩前的这段时间里,可以不断的加强练习。在练习时也有以下几个建议:



  1. 写出答辩稿。很多人没有写答辩稿的习惯,撰写文字稿能够帮助你发现答辩的逻辑是否通畅,还能够框定你的表达内容。咱们前面提到过,答辩是有时间限制的,如果没有固定的稿子,每次发挥的时长都不一样,最后很容易因为超时影响答辩效果。

  2. 你要准确按照答辩的时间完整练习至少十遍以上,注意是完整练习。非完整的零碎练习和完整的练习节奏差别非常大。

  3. 做预答辩。不同公司的晋升评委组成不同,有的是管理者,有的是技术专家,还有的是管理者加技术专家。因此,在做预答辩练习时,最好邀请相对应的人员辅导你答辩,比如选择你的 leader,相信部门 leader 还是比较乐意的。


调整答辩心态


在答辩将至时,大家都会跟你说,答辩时不要紧张,会影响发挥。但过来人都知道,不紧张好像太难了。下面就说说具体有什么方式可以抑制紧张。



  • 首先还是上一节的内容,答辩稿必须写出来,跟着稿子来。人在紧张时,智力和反应能力会呈指数级下滑。没有预先练习,顺溜的稿子你是临场发挥不出来的,只能满嘴跑火车或者照着 PPT 念,效果会大打折扣。

  • 一个能够避免紧张的好办法是做最坏假设。紧张是因为想通过晋升,你可以想象一下此次晋升没有通过的场景,你会怎样对待这个答辩结果,如果最坏的结果你都接纳了,还有什么是不能面对的呢?这也能反过来激励你好好准备。

  • 回答问题要言简意赅。一般答辩时都会设提问环节,很多时候答辩演讲的很好,但回答差,也会被一票否决,这种情况就比较可惜。作为过来人,我在这里给你提个醒,评委比较喜欢回答问题,言简意赅,直达重点的人印象分都比较高,你可以换位思考一下,评委提了一天的答辩,理解能力也下降的厉害,如果你半天收不到点子上,评委可能会认为你知识储备和逻辑能力薄弱。

  • 不会的问题不要直接回答不知道。如果评委临场抛出了一个较难的问题,你可以短暂思考,尝试从几个角度简单回答一下,一定不要直接回答不知道。


总结


最后用一句话总结下:有些人工作五年,但只有一年的经验,但有些人工作一年却拥有了五年经验,那是因为一直在学习、思考和总结


希望这篇文章能够对你在晋升道路上有所帮助。


作者:路由器没有路
来源:juejin.cn/post/7243248407535468600
收起阅读 »

程序员黑话集

为什么 10.24 是程序员节计算机采用的是 2 进制,2 的 10 次方是 1024,而数据存储的单位从 B, KiB, MiB, GiB, TiB ..... 以 1024 作为一个跨度,比如 1 KiB = 1024 B。程序员在日常工作中接触到 102...
继续阅读 »

为什么 10.24 是程序员节

计算机采用的是 2 进制,2 的 10 次方是 1024,而数据存储的单位从 B, KiB, MiB, GiB, TiB ..... 以 1024 作为一个跨度,比如 1 KiB = 1024 B。程序员在日常工作中接触到 1024 的机会太多了,看到 1024 就会产生条件反射。
除了 1024 外,程序员届还有许多的术语/黑话,借着 10.24 这个日子,也和大家分享一下吧。学会了这些术语,基本就能和程序员们谈笑风生,而把非程序员们唬得一愣一愣。

通用术语

404

当请求的网络资源不存在时,返回的错误编号。扩展为某样东西不存在/找不到。

403

当没有权限访问网络资源时,返回的错误编号。扩展为没有权限/资格接触某项信息。

500

当在请求某个网络资源时,服务器内部发生错误时,返回的错误编号。扩展为系统发生内部故障。

API

Application Programming Interface。程序间对接的接口,两边程序只要遵循这个接口,就能互相交互。扩展为两个对象之间交互应该遵循的规范,对象没有限定,可以为人,机器,系统等概念。

Bug

软件错误。扩展到因为人为疏漏导致的问题。

Cookie

网站记录你个人访问行为的载体。你能被广告主精准命中的关键情报仓库,各种 “Allow Cookie" 骚扰弹窗的根源。

Cache

一层缓冲,商家每年搞剁手节,能不被海量用户冲垮的核心堤坝。当然偶尔流量实在太大,也会决堤,比如被屡次冲垮的微博。

RFC

Request for Comments。起初用于起草互联网标准,比如 HTTP 1.0 协议是 RFC 1945。后来不少公司的设计文档也沿用了 RFC 这个名字。

Interesting

有趣🧐。起初是个褒义词,但现在在许多场合下,因为无法给出积极评价的时候,会用该词来化解尴尬。有时甚至会传达嘲讽,所以请慎用。

UI vs UX

UI - User Interface。用户的视觉感受。UX - User Experience。用户的真实使用感受。

Frontend and Backend

前端和后端,一个应用的两个组成部分。前端是用户能感知的部分,后端则是用户感知不到,隐藏起来的部分。既有左图里美如画的前端,脏乱差的后端,也有右图里风雨飘摇的前端,高精尖的后端。

研发流程相关

DevOps

把研发(Dev) 和运维(Ops) 两种职能融合在一起的运动。也有人认为这是让一个人打两份工的阴谋。

生产环境 (Production / Prod)

也叫线上环境,实际在生产当中使用的。与之对应的是内部的研发环境 (Dev),测试环境 (Test),预发环境(Staging)。

Test in Prod

一种以快速迭代作为借口,不做全面的测试,就直接把代码发布到生产环境的行为。虽然许多产品都是这么做的。

Canary (金丝雀)

过去矿工下井时会带上金丝雀,因为金丝雀对有害气体敏感,如果有害气体超标,金丝雀会率先死亡,矿工便知道需要撤离。在软件发布中,也通常会采用金丝雀模式,把新的版本先发布到一小部分用户中。有些地方把前面提到的预发环境也直接叫做金丝雀环境。

删库跑路

最严重的事故莫过于误删了应用数据库,所有的数据都没了,那整个公司的业务也就完蛋了。就像当年的扁鹊一样,无法挽回,唯有跑路了。扩展为强调后果的严重性。

Fat Finger

胖胖的手指。因为手指粗,所以误敲到了回车键,引发了诸如删库这样的事故。扩展为人为的操作不小心。

Repository / Repo

仓库,托管代码的地方。

Branch

分支。多人在同一个仓库上工作时,为了避免互相影响到对方,会在不同的分支上进行开发。

Trunk

主干或者叫主干分支。通常主干的分支名字叫 main 或者 master。主干也是一个仓库的代码主线,大家在不同的分支上开发,但某一个时刻,还是要把开发的代码合并进入主干。另外要开启新的分支时,通常也会基于主干进行分叉。当然也可以基于其他分支进行进一步分叉,但最终在某一个时间点,代码还是要合并回主干的。

主干开发 (Trunk-based development)

一种强调迭代速度的开发模式。要求大家尽可能频繁地把开发完的功能合并进主干,但同时也要尽量保证主干的健康。如果主干经常有问题的话,团队就无法基于主干开启新的分支,进行新的研发任务。所以主干开发会强调小步快跑,高频提交小规模变更。

Cherrypick

有时候你只想从一个分支里挑选一部分的内容合并到另一个分支,这个动作就像是捡樱桃一样。落水三千,只取一瓢。

Release Train

发布列车。每隔一段时间,软件就会进行发布,发布负责人往往会规定一个时间点,如果希望让自己的功能赶上这次的发布,就需要在这个时间点前把代码提交,不然发布列车就开走了。不过现实中,发布列车往往要等某一个 VIP 功能,会推迟发车时间。

TODO

在代码里记录一个将来再解决的问题,但至于什么时候去解决,谁知道呢。

Postmortem

原义是验尸报告。在软件研发领域,在发生事故后,详细的故障分析报告,报告最后通常会留好几个 TODO。

On-call (Carry the pager)

值班,以前带着的传呼机叫做 Pager。现在传呼机被手机/软件取代了,但 Pager 这个名字沿用了下来。

Spaghetti code

形容代码乱成一团,像通心粉一样交织在一起。

PR

不是指公关 (Public Relations),而是 Pull Request。GitHub 里要像某一个分支合并代码时,提交的合并请求。而在 GitLab 里,对应的概念叫 Merge Request (MR)。你看出来了,这两家老对着干,倒霉的是我们这帮程序员。

虚构概念

ACME

一家虚构的公司,一般文档例子里要用到一家子虚乌有的公司时,会用这个名字。

Alice and Bob

一组虚构人物,起源于网络安全,交换信息的双方。

example.com

访问这个网站就知道是用来干嘛的了。

Foo, Bar, Baz

一组没有意义的占位符(Placeholder)来指代某种概念。失去自我,成就大我。

缩略语

LGTM

Looks Good To Me。通常用于审核(Review)流程中,比如代码审核,文档审核。审核人(Reviewer)用来表示认同,批准👍。

PTAL

Please Take Another Look。通常用于审核(Review)流程中,比如代码审核,文档审核。发起人(Author)告知审核人(Reviewer)再次审核。

Nit

Nitpicking。吹毛求疵,通常用于审核(Review)流程中,比如代码审核,文档审核。审核人(Reviewer)提出的一些不影响核心内容,或者带有主观判断的建议。

WDYT

What Do You Think。在双方问题讨论中,在提出自己观点后, 一种启发式的希望获得对方反馈的表达方式。

YMMV

Your Mileage May Vary。在分享完自己的经验和观点后,也提醒他人要思辨地吸收。

EOF

End Of File。标识一个文件结尾的符号。扩展为表示一件事情的终结。

IMO / IMHO

In My Opinion / In My Humble Opinion。在表达自己观点前,为了降低对方抵触情绪,附加的谦逊语气。但也不要指望加了这个,就能避免引起对方的不适。

WYSIWYG

What You See Is What You Get。所见即所得,一种提供更好用户体验的交互方式。

TGIF

Thank God It's Friday 🪩!

TIL

Today I Learned.

Happy 1024! 早点下班!🎉


作者:Bytebase
来源:mp.weixin.qq.com/s/WRANBcZ69_COkZfnZY0pCQ

收起阅读 »

工作了5年你居然不知道版本号有这些规范?

前言 所谓语义化版本控制,就是要求你的版本号能按照特定规则及条件来进行约束,以期达到见到版本号即能了解其修改内容的信息或相邻版本间的更新迭代关系。通过阅读本文,你将能够对语义化版本控制规范能够有一个全面的了解,同时也对各平台上依赖版本时的语法有个大体的了解。 ...
继续阅读 »



前言


所谓语义化版本控制,就是要求你的版本号能按照特定规则及条件来进行约束,以期达到见到版本号即能了解其修改内容的信息或相邻版本间的更新迭代关系。通过阅读本文,你将能够对语义化版本控制规范能够有一个全面的了解,同时也对各平台上依赖版本时的语法有个大体的了解。


背景


在正式开始之前,先问大家几个问题:


我们经常在类似 Github、npm、或者 pub.dev 上看到一些软件或者库的版本号包含如下信息,你是否会疑惑他们之间的区别是什么?分别适用什么场景?



  • alpha

  • beta

  • rc

  • release


再看看下面几组版本号,你是否能弄清楚各个版本号之间谁更新更大?



  • 1.0.0 1.0.1 1.1.0

  • 1.0.0-beta 1.0.0

  • 1.0.0-release 1.0.0

  • 1.0.0-alpha 1.0.0-alpha.1

  • 1.0.0-alpha 1.0.0-rc.1


这次将借着我们在做组件管理平台的机会,像大家介绍一下日常软件开发中的语义化版本控制规范。相信通过下面的学习,上述的问题也能够迎刃而解。


常见先行版本号标识


上面说到 alpha、beta、rc、release 等版本号中常见的一些标识,有一个正式的名称叫做:先行版本号标识。我们可以通过一个生活中的例子来通俗易懂的说明它们之间的差异和联系。


现在假设你是一个蛋糕店的老板,你打算给你的蛋糕店推出一个新品,那么上述所谓的先行版本号就是如下几个阶段的蛋糕:


Alpha 版就是你对于你蛋糕的最终形式还在脑海当中,只有一个蛋糕的基本样子,口味应该是什么味道你心里还没谱,对于装饰如奶油、水果还有蜡烛这些甚至都还没有放在一起(你的软件各功能甚至都没有打通)。由于过于简陋,并且口味还没固定,你还不能将其给你的顾客品尝。你只能自己反复摸索尝试,或者让自己店里的员工对口味、外观以及一些缺陷进行点评。


Alpha版蛋糕


Beta 版就是你的蛋糕已经开始尝试将部分奶油涂抹在蛋糕上,你已经尝试将所有的元素组装起来,这时候的蛋糕还处于不能拿出去卖的阶段,但口味和后续方向已经基本固定。你甚至可以邀请你店里的熟客来参加小规模的试吃活动,并让他们针对你的这款蛋糕进行全方面的点评。


Beta版蛋糕


RC 版就是你的蛋糕已经基本做完了,其最核心的口味和外观已经确定下来,你可以再检查一下蛋糕是否有裂缝、哪些地方需要针对性的进行一些美化或修补。


RC版蛋糕


release 版就是你已经把蛋糕装饰好了,插上蜡烛,撒上曲奇,进行裱花。这时候蛋糕已经完成了,你可以正式的将这块蛋糕摆上橱窗,向大家兜售你的艺术品了。


release版蛋糕


通过上述的蛋糕制作过程,你应该对这些先行版本号标识有了自己的认知。接下来我们再总结下这些先行版本号标识的常见含义:


标识常见含义
alpha(α)内部测试版(有些也叫 A 测版)。α 是希腊字母的第一个,表示最早的版本,一般此类版本包含很多 BUG ,功能也不全,主要面向的是开发人员和测试人员。
beta(β)公开测试版(有些也叫 B 测版)。 β 是希腊字母的第二个,因此这个版本比alpha版发布较晚一些,主要是给参与内部体验的用户测试用,该版本仍然存在很多 BUG ,但是相对 alpha 版要稳定一些。此时,基本功能已经固定,但仍然可能增加新功能。
rc(Release Candidate)rc (候选版本),该版本又较 beta 版更进一步了,该版本功能不再增加,和最终发布版功能一样。
这个版本的作用是提前预览即将发行版本的内容,并且在该版本后,最终发行版的发布也迫在眉睫了。
release稳定版(有些也叫做 stable、GA 版)。在开源软件中,都有正式版,这个就是开源软件的最终发行版,用户可以放心大胆的用了。

相信阅读到这里,上面的第一个问题你已经有了答案。那么明白这些标识的具体含义之后,它到底应该怎么用呢?具体要放在版本号里的哪个位置上呢?接下来我们将通过对语义化版本控制规范的详细介绍,来帮助你解答这些疑惑。


何为语义化版本控制规范


在介绍什么是语义化版本控制规范之前,我们先需要了解为什么需要语义化版本控制规范。


大家先设身处地的设想这样一个开发场景:


你现在的项目现在分别依赖了 foo : 1.0.0bar : 2.0.0baz : 3.0.0


项目example_app的依赖项


同时 foo 组件也依赖了 bar : 2.0.0baz : 3.0.0


组件foo的依赖项


同时 bar 组件也依赖了 baz : 3.0.0


组件bar的依赖项


现在你很幸运,项目可以跑起来。


突然有一天因为要修改一个问题,需要升级你项目中 baz 组件的版本号,需要将它从 3.0.0 升级到 3.0.1。但很不幸的是,baz 组件这个小小的版本升级却发生了破坏性的 API 改动。然后你发现你不仅需要修改主工程 example_app 的版本号,还需要升级 foo 组件的版本号以及 bar 组件的版本号。而在你做完这些之后,发现 foo 依赖的其他组件的版本又和你主工程 example_app 项目中依赖的组件的版本冲突了,于是你崩溃了。


这就是软件管理领域中被称作“依赖地狱”的死亡之谷。即当你的系统规模越大,引入的包越多,你就越可能遇到由于依赖导致的问题:



  • 如果依赖关系过高,可能面临版本控制被锁死的风险(必须对每一个依赖包改版才能完成某次升级)

  • 而如果依赖关系过于松散,又将无法避免版本的混乱(假设兼容于未来的多个版本已超出了合理数量) 当你项目的进展因为版本依赖被锁死或版本混乱变得不够简便和可靠,就意味着你正处于依赖地狱之中。


通过上述的场景我们可以看到,版本号的管理(包括依赖关系的控制以及版本号的命名)并不是一个随心所欲的事情:管理好了,能给你带来极大便利,反之则会给你的开发带来很多没必要的麻烦。那么我们应该如何解决这些事情呢?


基于上述的一些问题,Gravatars 及 Github 的创始人之一的 Tom Preston-Werner 提出了一个名为语义化版本控制规范(Semantic Versioning)的解决方案,它期望用一组简单的规则及条件来约束版本号的配置和增长。这套规则是根据现在各种封闭、开源软件所广泛使用的版本号命名规则所设计。为了让这套理论运作,必须要定义好你的公共 API。一旦定义了公共 API,你就可以透过修改相应的版本号来向大家说明你的修改。考虑使用这样的版本号格式:



版本格式:主版本号.次版本号.修订号,版本号递增规则如下:



  1. 主版本号:当你做了不兼容的 API 修改

  2. 次版本号:当你做了向下兼容的功能性新增

  3. 修订号:当你做了向下兼容的问题修正


先行版本号版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。



以上这套规则或者说系统,就是所谓的”语义化版本控制”,在这套规则之下,版本号以及版本号的更新都潜在包含了代码的修改信息,而这套规则被简称为 semver (Semantic Versioning 简写)。


接下来我将基于 semver 2.01 向大家介绍 这套规则的一些细则。


语义化版本控制规范细则


语义化版本控制规范的细则有很多,有兴趣的同学可以直接到semver 2.01 的官方文档 查看即可,我们这里将其主要内容总结给大家。


X.Y.Z(主版本号.次版本号.修订号)修复问题但不影响 API 时,递增修订号;API 保持向下兼容的新增及修改时,递增次版本号;进行不向下兼容的修改时,递增主版本号。


一个标准的语义化版本号各部分的含义


其实所谓语义化版本控制规范,本来也只是一种约定,它并不能完美适合每一个团队,我们也没必要完全生搬硬套,这里以 Google 官方推出的 mockito2 的版本号为例,可以看到其也没有严格按照细则进行遵守。


组件mockito的一些非正式版本号


所以如果你团队内已经统一认知,了解版本号中每个地方代表的含义,做到“见号知意”:看到 1.0.0-npeFixed.8 就知道这个组件是从 1.0.0 拉出来 为了修复 NPE 的;看到 2.3.0-addFaceIdSupport.1 就知道这个组件是基于 2.3.0 来做 FaceId 支持的;见到 5.0.0-nullSafety.6 就知道这个版本是为了空安全的。那么我们的语义化版本控制规范的目的也就达到了,不是吗?


版本语法


就像人类的烹饪方式从最开始的单纯用火烤到发明陶器之后的烹煮,再到现代社会中基于烤、煮、蒸而演化出来的各类五花八门的烹饪方式一样,语义化版本控制规范在各个平台上也衍生出不同的版本规范和版本语法(Version Syntax),但万变不离其宗。接下来我将大致介绍下常见平台版本语法的异同,期望能对你有所帮助。



由于 PyPI上的版本规范及版本说明符比较特殊且繁琐,这里就不进行比对,有兴趣的同学可以查看PEP 440 – Version Identification and Dependency Specification3 了解更多细节。



和烹饪方式的的演化过程一样, 语义化版本控制规范在不同平台、不同时期也有不同的表现


定义平台格式示例描述
完全匹配目标版本gradleversion

version!!
com.example:foo:5.0.2

com.example:foo:5.0.2!!
这里用5.0.2 和 5.0.2!! 是有区别的。
5.0.2 这种写法是对此版本最低要求,但是可以被引擎升级,这里的5.0.2是被称作必须版本(Required version4), 也就是说它最小版本是5.0.2,并且相信未来的任何升级都是可以正常工作的。

而5.0.2!! 则是严格版本(Strict version5), 即只能使用5.0.2的版本,传递依赖项过来的版本如果没有更高约束或者别的严格版本,会被覆写为此版本,否则会失败。
mavenversion

[version]
5.0.2

[5.0.2]
和gradle类似,这里用5.0.2 和 [5.0.2] 是有区别的。
5.0.2 这种写法是对此版本的软要求(Soft requirement6),如果依赖关系树中较早没有出现其他版本,则使用 5.0.2。

而 [5.0.2] 这种写法是对此版本的硬性要求(Hard requirement6)。使用 5.0.2并且仅使用 5.0.2。
pubversionfoo: 5.0.2
npmversionfoo: 5.0.2
podversion

= version
pod 'foo', '5.0.2'

pod 'foo', '=5.0.2'
兼容版本gradleversion.+com.example:foo:1.+>= 1.0.0 < 2.0.0
maven[version, version+1)[1.0.0, 2.0.0)同上
pub^version

~version
foo: ^1.0.0

foo: ~1.0.0
>= 1.0.0 < 2.0.0

>=1.0.0 < 1.1.0

^version 和 ~version 分别被称作 插入符语法(Caret Syntax7) 和 波形语法(Tilde Syntax8),他们的主要区别在于前者兼容当前版本后及后续所有的 次版本号及修订号,即 ^X.Y.Z 等价于 >=X.Y.Z
<(X+1).0.0;

而后着只兼容当前版本号及后续所有的修订号,即
~X.Y.Z 等价于 >=X.Y.Z
npm^versionfoo: ^1.0.0同上
pod~> versionpod 'foo', '~> 1'同上
匹配任意版本gradlecom.example:foo任意一个版本,具体约束可能由其他组件依赖了此组件并且存在具体约束,否则默认取最新的
maven[firstVersion,)[0.0.1,)>=0.0.1
pubanyfoo: any任意一个版本,具体约束可能由其他组件依赖了此组件并且存在具体约束,否则默认取最新的
npm*foo: *同上
podpod 'foo'同上
已发布的最新版本gradle+com.example:foo:+任意一个版本,具体约束可能由其他组件依赖了此组件并且存在具体约束,否则默认取最新的
mavenLATEST

LATESTLATEST 在maven 3.x版本被废弃
pubanyfoo: any任意一个版本,具体约束可能由其他组件依赖了此组件并且存在具体约束,否则默认取最新的
npm*foo: *同上
pod> 0.0.1pod 'foo', '>0.0.1'同上
大于当前版本gradle(version, )com.example:foo: (0.0.1, )
maven(version, )(0.0.1, )
pub>versionfoo: >0.0.1
npm> versionfoo: > 0.0.1
pod> versionpod 'foo', '> 0.0.1'
大于等于当前版本gradle[version, )com.example:foo: [0.0.1, )
maven[version, )[0.0.1, )
pub>=versionfoo: >=0.0.1
npm>= versionfoo: >= 0.0.1
pod>= versionpod 'foo', '>= 0.0.1'
小于当前版本gradle(, version)com.example:foo: (, 2.0.0)
maven(, version)(, 2.0.0)
pubfoo: <2.0.0
npm< versionfoo: < 2.0.0
pod< versionpod 'foo', '< 2.0.0'
小于等于当前版本gradle(, version]com.example:foo: (, 2.0.0]
maven(, version](, 2.0.0]
pub<=versionfoo: <=2.0.0
npm<= versionfoo: <= 2.0.0
pod<= versionpod 'foo', '<= 2.0.0'
范围区间gradle[version1, version2]com.example:foo: [1.0.0, 2.0.0]
maven[version1, version2][1.0.0, 2.0.0]
pub'>=version1 <=version2 'foo: '>=1.0.0 <=3.0.0'当存在区间约束的时候,版本号需要通过单引号进行包裹
npmversion1-version2

>=version1 <=version2
foo: 1.0.0-3.0.0


foo: >=1.0.0 <=3.0.0
version1 到 version的任意版本号,包含自身
pod>=version1, <=version2pod 'foo', '>= 1.0.0' , '<= 3.0.0'
范围集合gradle(,version1), [version2,)com.example:foo:
(,1.0.0),[3.0.0,)
< 1.0.0 或者 >= 3.0.0
maven(,version1), [version2,)(,1.0.0),[3.0.0,)同上
pub不支持不支持不支持
npmversion1version2foo: <1.0.0>= 3.0.0< 1.0.0 或者 >= 3.0.0
pod=version2pod 'foo', '< 1.0.0' , '>= 3.0.0'同上
排除制定版本gradle(,version), (version,)com.example:foo:
(,1.0.5),(1.0.5,)
不等于 1.0.5
maven(,version), (version,)(,1.0.5),(1.0.5,)同上
pub不支持不支持不支持
npm>versionfoo: <1.0.5>1.0.5不等于 1.0.5
pod!= versionpod 'foo', '!= 1.0.5'不等于 1.0.5
特有gradlemaven特殊版本标识: -SNAPSHOTcom.example:foo: 1.0.0-SNAPSHOT这个其实是maven的特殊版本标识,当你发布此带-SNAPSHOT标识版本后,maven自己会根据你的发布时间将版本展开为类似于1.0-yyyyMMdd-HHmmss-1 的格式,所以如果你带了此标识,你可以重复发布此版本,当前前提是你的maven开启了对应的配置。
其他特殊标识
dev

rc\snapshot\final\ga\release\sp
1. dev会被判定低于任何其他非数字部分,如:
1.0.0-dev < 1.0.0-ALPHA < 1.0.0-alpha < 1.0-rc
2. 字符串rc,snapshot,final,ga,release和 sp 被认为高于其他字符串部分(按此顺序排序),如:
1.0-zeta < 1.0-rc < 1.0-snapshot < 1.0-final < 1.0-ga < 1.0-release < 1.0-sp < 1.0


有些平台中还有一些特定的其他语法和规则,如果感兴趣,可以点击平台名称的超链接进入对应平台的官方文档自行查看。



相信你读到了这里,对语义化版本控制规范已经了然于胸。那么开篇的两个问题你是否也有了答案,欢迎在评论区留言。


Q&A 环节


经过上面的分享,相信大家对语义化版本已经有了一个整体的了解,那么我们来检验一下你的学习效果,请尝试回答下面几个问题:


Q:“v1.2.3” 是一个语义化版本号吗?


首先,“v1.2.3” 并不是的一个语义化的版本号。但是,在语义化版本号之前增加前缀 “v” 是用来表示版本号的常用做法。在版本控制系统中,将 “version” 缩写为 “v” 是很常见的。但是我们可以通过 npm-semver 来进行处理并转化成语义化的版本。


npm-semver可以帮你处理和转化语义化版本


Q:这么多规则及要求,我该如何验证我的语义化版本是否符合规范或者比较他们之间的大小关系呢?


这里就推荐 npm 的 github.com/npm/node-se…


node-semver 也可以帮你做到


对于脚本上对版本是否符合要求进行验证,可以使用 semver 2.0 文档中推荐的如下两个正则表达式。


第一个用于支持按组名称提取的语言,PCRE(Perl 兼容正则表达式,比如 Perl、PHP 和 R)、Python 和 Go。参见: regex101.com/r/Ly7O1x/3/



/^(?P0|[1-9]\d*).(?P0|[1-9]\d*).(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:+(?P[0-9a-zA-Z-]+(?:.[0-9a-zA-Z-]+)*))?$/gm



第二个用于支持按编号提取的语言(与第一个对应的提取项按顺序分别为:major、minor、patch、prerelease、buildmetadata)。主要包括 ECMA Script(JavaScript)、PCRE(Perl 兼容正则表达式,比如 Perl、PHP 和 R)、Python 和 Go。 参见: regex101.com/r/vkijKf/1/



/^(0|[1-9]\d ).(0|[1-9]\d).(0|[1-9]\d )(?:-((?:0|[1-9]\d|\d*a-zA-Z-)(?:.(?:0|[1-9]\d |\da-zA-Z- )) ))?(?:+([0-9a-zA-Z-]+(?:.[0-9a-zA-Z-]+)))?$/gm



Q:万一不小心把一个不兼容的改版当成了次版本号发行了,或者在修订等级的发布中,误将重大且不兼容的改变加到代码之中,我能通过重复发布当前版本来解决问题吗?


首先必须强调一点,不管如何都不能去修改已发行的版本(这点在部分平台已经帮你处理掉了,例如 pub 本身已经做了这种限制)。然后最好根据场景升级一个对应级别的版本来回滚逻辑,最后再将你的重大且不兼容的改版升一个主版本号进行发布。记住,语义化的版本控制就是透过版本号的改变来传达意义。


尾声


至此,我们已经了解了语义化版本控制规范的具体细则,常用的先行版本号标识的含义及应用场景,希望能在大家日后的工作生活当中所有帮助。你还见过哪些常见的先行版本号,你们团队又是如何避免包依赖地狱的,欢迎在评论区补充。感谢大家的观看,再见。


作者:政采云技术
来源:juejin.cn/post/7278238875456684090
收起阅读 »

某研究生不写论文竟研究起了算命?

起因 大约一个月前,在学校大病一场(不知道是不是🐑了,反正在学校每天核酸没检测出来)在宿舍休息了整整一周。当时因为发烧全身疼所以基本一直躺着刷刷视频。看了一周倪海厦老师讲的天纪,人纪感悟颇多,中华传统中一些优秀的东西竟然在现代教育下被丢失了而现在的人也只有在身...
继续阅读 »

起因


大约一个月前,在学校大病一场(不知道是不是🐑了,反正在学校每天核酸没检测出来)在宿舍休息了整整一周。当时因为发烧全身疼所以基本一直躺着刷刷视频。看了一周倪海厦老师讲的天纪,人纪感悟颇多,中华传统中一些优秀的东西竟然在现代教育下被丢失了而现在的人也只有在身体不得不休息的情况下才会停止内卷慢下来好好思考。


当然有人会说算命啥的都是封建迷信,作为接受了科学思想洗礼的新时代人慢慢也不再去接受那一套,在这里呢我不对这些想法做任何评价。信则有不信则无,存在即合理嘛。


因为疫情原因呢学校早早就给我们放了假,有了更多的空闲时间可以思考在学校没时间想的事情,做一些除开看论文、做项目之外的事


开始


前几天买的服务器刚好到家了,花了几天配置好环境(最重要的是花了大半天解决todesk、向日葵远程黑屏的问题)。今天下午写好代码丢到阳台让它自己慢慢训练去,剩下的时间就开始写今天关于算命的小程序。


六壬法


六壬法


留连速喜赤口
大安空亡小吉

根据倪师讲的,计算现在的农历日期加上时辰就可以推算当前某个想法适不适合去做。以大安开始每次从当宫开始顺时针数,下面是例子。



  • 假如今天是农历十二月十号 子时




  1. 首先从大安开始数1到12,结果是空亡




  2. 再从空亡开始数1到10,结果是速喜




  3. 然后从速喜开始子丑寅卯这样数,子是1




  4. 所以上面例子最后的结果就是速喜




计算过程都理解了怎么写成代码呢。这里需要知道三个条件,农历的月日以及当前的时辰,农历的月日这个地方我借鉴了这篇博客【C/C++】:用C实现输出日期的阴历日子直接复制了主要内容,打表直接计算农历日期,只需要输入当前阳历的年月日。


然后当前时间转为十二时辰也很简单,首先得到当前的小时时间hour,那么十二时辰就是(hour+1)/2<12?(hour+1)/2:0;这里子时记为0。


整个程序如下:


#include<iostream>
#include<string>
#include<ctime>
#include<vector>

std::vector<std::string> MAP{"大安","留连","速喜","赤口","小吉","空亡"};

unsigned int LunarCalendarDay;
unsigned int LunarCalendarTable[199] =
{
0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A

,/*1901-1910*/


0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754

,/*1911-1920*/


0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,0x02B64D,0x095742,0x2497B7,0x04974A,0x664B3E

,/*1921-1930*/


0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B644,0x393738,0x092E4B,0x7C96BF,0x0C9553,0x0D4A48

,/*1931-1940*/


0x6DA53B,0x0B554F,0x056A45,0x4AADB9,0x025D4D,0x092D42,0x2C95B6,0x0A954A,0x7B4ABD,0x06CA51

,/*1941-1950*/


0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,0x052B4C,0x8A953F,0x0E9552,0x06AA48,0x6AD53C

,/*1951-1960*/


0x0AB54F,0x04B645,0x4A5739,0x0A574D,0x052642,0x3E9335,0x0D9549,0x75AABE,0x056A51,0x096D46

,/*1961-1970*/


0x54AEBB,0x04AD4F,0x0A4D43,0x4D26B7,0x0D254B,0x8D52BF,0x0B5452,0x0B6A47,0x696D3C,0x095B50

,/*1971-1980*/


0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,0x06D449,0x6ADA3D,0x0AB651,0x093746,0x5497BB

,/*1981-1990*/


0x04974F,0x064B44,0x36A537,0x0EA54A,0x86B2BF,0x05AC53,0x0AB647,0x5936BC,0x092E50,0x0C9645

,/*1991-2000*/


0x4D4AB8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,0x7AADBD,0x025D52,0x092D47,0x5C95BA,0x0A954E

,/*2001-2010*/


0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,0x0A5B48,0x652BBC,0x052B50,0x0A9345,0x474AB9

,/*2011-2020*/


0x06AA4C,0x0AD541,0x24DAB6,0x04B64A,0x69573D,0x0A4E51,0x0D2646,0x5E933A,0x0D534D,0x05AA43

,/*2021-2030*/


0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,0x6D25BC,0x0D254F,0x0D5244,0x5DAA38,0x0B5A4C

,/*2031-2040*/


0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,0x0AA546,0x5B52BA,0x06D24E,0x0ADA42,0x355B37

,/*2041-2050*/


0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092E42

,/*2051-2060*/


0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B

,/*2061-2070*/


0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6

,/*2071-2080*/


0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04B64E,0x0A5743,0x452738,0x0D264A,0x8E933E

,/*2081-2090*/
0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5

/*2091-2099*/
};

int MonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334};
int LunarCalendar(int year,int month,int day)
{
int Spring_NY,Sun_NY,StaticDayCount;
int index,flag;
//Spring_NY 记录春节离当年元旦的天数。
//Sun_NY 记录阳历日离当年元旦的天数。
if ( ((LunarCalendarTable[year-1901] & 0x0060) >> 5) == 1)
Spring_NY = (LunarCalendarTable[year-1901] & 0x001F) - 1;
else
Spring_NY = (LunarCalendarTable[year-1901] & 0x001F) - 1 + 31;
Sun_NY = MonthAdd[month-1] + day - 1;
if ( (!(year % 4)) && (month > 2))
Sun_NY++;
//StaticDayCount记录大小月的天数 29 或30
//index 记录从哪个月开始来计算。
//flag 是用来对闰月的特殊处理。
//判断阳历日在春节前还是春节后
if (Sun_NY >= Spring_NY)//阳历日在春节后(含春节那天)
{
Sun_NY -= Spring_NY;
month = 1;
index = 1;
flag = 0;
if ( ( LunarCalendarTable[year - 1901] & (0x80000 >> (index-1)) ) ==0)
StaticDayCount = 29;
else
StaticDayCount = 30;
while (Sun_NY >= StaticDayCount)
{
Sun_NY -= StaticDayCount;
index++;
if (month == ((LunarCalendarTable[year - 1901] & 0xF00000) >> 20) )
{
flag = ~flag;
if (flag == 0)
month++;
}
else
month++;
if ( ( LunarCalendarTable[year - 1901] & (0x80000 >> (index-1)) ) ==0)
StaticDayCount=29;
else
StaticDayCount=30;
}
day = Sun_NY + 1;
}
else //阳历日在春节前
{
Spring_NY -= Sun_NY;
year--;
month = 12;
if ( ((LunarCalendarTable[year - 1901] & 0xF00000) >> 20) == 0)
index = 12;
else
index = 13;
flag = 0;
if ( ( LunarCalendarTable[year - 1901] & (0x80000 >> (index-1)) ) ==0)
StaticDayCount = 29;
else
StaticDayCount = 30;
while (Spring_NY > StaticDayCount)
{
Spring_NY -= StaticDayCount;
index--;
if (flag == 0)
month--;
if (month == ((LunarCalendarTable[year - 1901] & 0xF00000) >> 20))
flag = ~flag;
if ( ( LunarCalendarTable[year - 1901] & (0x80000 >> (index-1)) ) ==0)
StaticDayCount = 29;
else
StaticDayCount = 30;
}
day = StaticDayCount - Spring_NY + 1;
}
LunarCalendarDay |= day;
LunarCalendarDay |= (month << 6);
if (month == ((LunarCalendarTable[year - 1901] & 0xF00000) >> 20))
return 1;
else
return 0;
}

void output(int year,int month,int day,int &d_month,int &d_day)
{
const char *ChDay[] = {"*","初一","初二","初三","初四","初五",
"初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五",
"十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五",
"廿六","廿七","廿八","廿九","三十"
};
const char *ChMonth[] = {"*","正","二","三","四","五","六","七","八","九","十","十一","腊"};
char str[13] = "";
strcat(str,"农历");
if (LunarCalendar(year,month,day)){
strcat(str,"闰");
d_month=(LunarCalendarDay & 0x3C0) >> 6;
strcat(str,ChMonth[(LunarCalendarDay & 0x3C0) >> 6]);
}
else{
d_month=(LunarCalendarDay & 0x3C0) >> 6;
strcat(str,ChMonth[(LunarCalendarDay & 0x3C0) >> 6]);
}
strcat(str,"月");
d_day=LunarCalendarDay & 0x3F;
strcat(str,ChDay[LunarCalendarDay & 0x3F]);
puts(str);
}


int ChangeHourToPeriods(){
time_t now=time(0);
int hour;
std::tm* t=std::localtime(&now);
hour=(int)t->tm_hour;
hour=(hour+1)/2<12?(hour+1)/2:0;
return hour;
}


int main(){
int year,month,day;
std::cout<<"Please input the number of year,month,day:"<<std::endl;
std::cin>>year>>month>>day;
int d_month=0,d_day=0;
output(year,month,day,d_month,d_day);
int hour=ChangeHourToPeriods();
int SumAll=d_month+d_day+hour-2;
std::cout<<"The result is : "<<MAP[(SumAll%6)]<<std::endl;
return 0;
}

因为每次从当宫开始数也就每次都少数了1,但是由于最后子时以0开始所以只减2。


测试结果(测试的时间是21点亥时)
在这里插入图片描述


占卦法


占卦法


还有傅佩荣教授的三组三位数占卦法,这个更多就是易经中的内容太过于深奥,所以直接说计算方法。


三组三位数分别代表下卦,上卦和爻,卦象的三位数对8取余爻对6取余,如果整除就记为除数本身。


然后再去六十四卦中复制打表,最后得到卦象以及爻


整体实现如下


#include<iostream>
#include<string>
#include<vector>


std::vector<std::string> TRIGRAM=std::vector<std::string> {"乾","兑","离","震","巽","坎","艮","坤"};
std::vector<std::string> TRIGRAMMAP {
"乾为天","泽天夬","火天大有","雷天大壮","风天小畜","水天需","山天大畜","地天泰",
"天泽履","兑为泽","火泽睽","雷泽归妹","风泽中孚","水泽节","山泽损","地泽临",
"天火同人","泽火革","离为火","雷火丰","风火家人","水火既济","山火贲","地火明夷",
"天雷无妄","泽雷随","火雷噬嗑","震为雷","风雷益","水雷屯","山雷颐","地雷复",
"天风姤","泽风大过","火风鼎","雷风恒","巽为风","水风井","山风蛊","地风升",
"天水讼","泽水困","火水未济","雷水解","风水涣","坎为水","山水蒙","地水师",
"天山遁","泽山咸","火山旅","雷山小过","风山渐","水山蹇","艮为山","地山谦",
"天地否","泽地萃","火地晋","雷地豫","风地观","水地比","山地剥","坤为地"

};

int main(){
std::vector<int> LowToHigh(3);
std::vector<std::string> results(3);
std::cout<<"Input 3*xxx like(111,222,333),means from up to high"<<std::endl;

for(int i=0;i<3;++i){
std::cin>>LowToHigh[i];
}

LowToHigh[0]=LowToHigh[0]%8==0?8:LowToHigh[0]%8;
LowToHigh[1]=LowToHigh[1]%8==0?8:LowToHigh[1]%8;
LowToHigh[2]=LowToHigh[2]%6==0?6:LowToHigh[2]%6;



for(int i=0;i<2;++i){
results[i]=TRIGRAM[LowToHigh[i]-1];
}
results[2]=std::to_string(LowToHigh[2]);

std::cout<<"下卦:"<<results[0]<<" 上卦:"<<results[1]<<" "<<results[2]<<std::endl;
std::cout<<"卦象: "<<TRIGRAMMAP[(LowToHigh[0]-1)*8+LowToHigh[1]-1]<<std::endl;
}

这里测试的例子是视频中的数字
在这里插入图片描述


结尾


有的时候真的需要一些自己的沉淀时间,不能忘了最初的目标。写这篇Blog也并不是为了宣传封建迷信,而是希望让更多程序圈的人想想当初我们喜欢敲代码到底是为了什么?我们喜欢的是将代码作为工具实现一些有趣的功能,并不是为了水论文或者工作被迫的去东拼西凑弄出一些用处不大的东西。


好多想吐槽的话最终还是打了又删,无法改变现状的时候只能屈服于现状,我相信不止我一人如此。但是请不要忘了 潜龙勿用见龙在田,终日乾乾飞龙在天


作者:shelgi
来源:juejin.cn/post/7176629565559685178
收起阅读 »

买房后,害怕失业,更不敢裸辞,心情不好就提前还房贷,缓解焦虑

自从买房后,心态有很大变化。虽然住自己的房子,心情和体验都很好,但是一把掏空钱包,很焦虑。买房后现金流一直吃紧,再加上每年16万的房贷,我很焦虑会失业。之前我喜欢裸辞,现在不敢想裸辞这个话题。尤其是在行业下行期,找工作很艰难,背着房贷裸辞,简直是头孢就酒,嫌命...
继续阅读 »

自从买房后,心态有很大变化。虽然住自己的房子,心情和体验都很好,但是一把掏空钱包,很焦虑。买房后现金流一直吃紧,再加上每年16万的房贷,我很焦虑会失业。之前我喜欢裸辞,现在不敢想裸辞这个话题。尤其是在行业下行期,找工作很艰难,背着房贷裸辞,简直是头孢就酒,嫌命太久。


焦虑的根源是背负房贷,金额巨大,而且担心40岁以后失业,还不上房贷。


一次偶然的沟通


"你的贷款利率调整了吗",同事问我。


同事比我早两年在北京买房,他在顺义买的,我在昌平买的,我俩一直有沟通房贷的问题。但我没听说利率有调整,银行好像也没通知我,于是我问道:”我不知道啊,你调整了?调到多少了?“。


”调的挺多的,已经降到了 4.3%“。同事兴高采烈的回复我。


”这么牛逼,之前我记得一直是4.85%,我去看看我的利率“,我听说房贷利率下降那么多,很是兴奋。


然而我的房贷利率没有调整,我尝试给银行打电话,沟通的过程很坎坷。工商银行客服说了很多,大概意思是:利率会自动调整,无需申请,但是要等到利率调整日才会调整”。我开始很不理解,很生气,利率都调整了,别人也都调整了,凭什么不给我调整呢?


我想到同事有尝试提前还贷,生气的时候,我就萌发了提前还贷的想法。


开始尝试提前还贷,真香


我在22年初贷款买房,其中商业贷款 174 万,贷款25年,等额本息,每个月要还 1 万的房贷。公积金贷款每个月大概需要还 2500。每个月一万二的房贷还是很有压力的,尤其是刚买房的这一两年,兜里比脸都干净,没存款,不敢失业,更不敢裸辞。


即便兜里存款不多,也要提前还贷,因为实在太香了。


我在工行App上,申请 提前还贷,选择缩短 18个月的房贷,只需要 6万2,而我每个月房贷才1万,相当于是用 6 万 顶 18 万的房贷。还有比这更划算的事情吗?


image.png
预约提前还款后,银行会安排一个时间,在这个时间前,把钱存进去。到时候银行就会扣除,如果扣除金额不足,那么提前还款计划则自动终止,需要重新预约!


工行的预约还款时间大概是1个月以后,我是10-15号申请提前还款,银行给的预约日期是 11-14号,大概是1个月。


提前还款,比理财强多了


这次还贷以后,我又申请了提前还款, 提前还 24 期,只需要 9 万,也就是 9 万顶 24 万;提前还 60 期,只需要 24 万,相当于 24 万顶 60 万。


image.png


image.png


还有比提前还贷收益更高,风险更低的理财方式吗?没有! 除了存款外,任何理财都是有风险的。债券和基金收益和风险挂钩,想找到收益5%的债券基金,要承担亏本风险。你惦记人家的利息,人家惦记你的本金!


股票的风险更不必说,我买白酒股票已经被套的死死,只能躺平装死。(劝大家不要入 A 股)


提前还贷划算吗?


我目前的贷款利息是 4.85%,而存到银行的利息不会超过 3% ,很多货币基金只有 2%了。两者利息差高达 3%,肯定是提前还贷款更加合适。


要明白,一年两年短期的利息差还好,但是房贷可是高达 25 年。25年 170 万贷款 3% 的利息差,这个金额太大了。提前还了,省下来的钱还是很多的。例如刚才截图里展示的 提前还 24 万顶了 60 万的房贷。


网上很多砖家说,“要考虑通货膨胀因素,4.85% 的贷款利率和实际通货膨胀比起来不高,提前还款不划算。”


砖家说话都是昧良心的。提前还贷款是否划算,只需要和存款利率比就行了,不需要和通货膨胀比。因为把钱存在银行也会因为通货膨胀贬值。只有把钱 全都消费,全部花光才不会受通货膨胀的困扰,建议砖家,多消费,把家底败光,这样最划算!


砖家们一定是害怕太多人提前还贷,影响了银行的放贷生意。今年上半年,提前还贷已经成潮流,有些银行坐不住,甚至关闭了提前还贷的入口…… 所以要抓紧,没准哪天就提高了还贷门槛,或者直接禁止。


程序员群体收入高,手里闲钱多,可以考虑提前还贷款,比存银行划算多了,别再给银行打工了!


作者:五阳神功
来源:juejin.cn/post/7301530293378727971
收起阅读 »

流量思维的觉醒,互联网原来是这么玩的

流量就是钱,这是一个很原始的认知。但最开始我并不清楚流量和钱之间是如何相互转化的。 微创业,认知很低 大学时期,不管是出于积累项目经验、还是折腾新技术的需要,我有做过一个相对完整的项目。 没记错的话,应该是在20年10月份启动的。当时在宿舍里买了一台激光打印机...
继续阅读 »

流量就是钱,这是一个很原始的认知。但最开始我并不清楚流量和钱之间是如何相互转化的。


微创业,认知很低


大学时期,不管是出于积累项目经验、还是折腾新技术的需要,我有做过一个相对完整的项目。


没记错的话,应该是在20年10月份启动的。当时在宿舍里买了一台激光打印机,做起了点小买卖。所以就发现如果我手动给同学处理订单会非常麻烦。他们把文件通过qq发给我,我这边打开,排版,确认格式没有问题之后算一个价格,然后打印。


所以根据痛点,我打算开发一个线上自助下单,商户自动打印的一整套系统。


百折不挠,项目终于上线


21年年中克服各种困难终于实现整套系统,提供了小程序端,商户客户端,web端。


用户在手机或网页上上传文件后会自动转换为pdf,还提供了在线预览,避免因为格式与用户本地不同的纠纷。可以自由调节单双面、打印范围、打印分数、色彩等参数。实时算出价格,自助下单。下单后服务器会通知商户客户端拉取新任务,拉取成功后将文件丢入打印队列中。打印完成后商户客户端发送信息,并由服务器转发,告知用户取件。


image.png


image.png


大三下学期,宿舍里通过线上平台,在期末考试最忙那段期间经过了“订单高峰”的考验,成交金额上千块钱。看着我商户端里面一个个跳动的文件,就像流入口袋里的💰,开心。


商业化的很失败


没想到,我自己就是我最大的客户。


期末考完,其实想拉上我的同学大干一场,让校里校外的所有的商户,都用上我们的软件,多好的东西啊。对于盈利模式的概念非常模糊,同时也有很强的竞品。我的同学并不看好我。


我对商业化的理解也源自美团模式,美团是外卖的流量入口,所以对商户抽佣很高。滴滴是打车的流量入口,对司机的抽佣也很高。所以我认为,假设我未来成为了自助打印的流量入口,那应该也可以试试抽佣模式。


而且就算我不能为商户引流,也能解放他们的双手。


当时的我,一个人做技术,做UI,还要做商业计划,去地推,真的搞得我精疲力尽。反正后面觉得短期内变现无望,就去腾讯实习了。


其实也推广了2个商户,但是他们因为各种原因不愿意用。一个是出于隐私合规风险的考虑,一个是订单量少,不需要。


所以基本这个自助打印只能框死在高校。大学生打印的文件私密性很低,但是单价低,量多,有自助打印的需求。还有一部分自助打印的场景是在行政办事大厅,这种估计没点门门道道是开不进去的。


看不懂的竞品玩法


商户通过我的平台走,我这边并不无本万利。


因为开通了微信支付、支付宝支付,做过的小伙伴应该都知道办这些手续也会花一些钱,公司还要每年花钱养。还有需要给用户的文档成转换成pdf,提供在线预览,这很消耗算力和带宽,如果用户的成交单价非常低,哪怕抽佣5%都是亏的。比如用户打印了100份1页的内容,和打印了1份100页的内容,对我来说成本差别很大,前者很低,后者很高。


当时学校里已经有一部分商户用上自助打印了。一共有3个竞品。


竞品A:不抽佣,但是每笔订单对用户收取固定的服务费,界面简陋,有广告。


竞品B:不抽佣,不收用户的服务费,界面清爽无广告。


竞品C:彻彻底底走无人模式,店铺内基本没有老板,店铺是自营或加盟的。


前期缺乏市场调研,后期缺乏商业认知


当时我在没有摸清自己商业模式,市场调研也没怎么做好的情况下。一心想的就是先把东西做出来再说,卖不成自己还能学到技术。毕竟技术这个玩意不在项目里历练,永远都是纸上谈兵。所以对于商业化的设想就是搞不成就不搞了。


我当时的想法就是要“轻”运营,就是最好我的利润是稳定的,不会亏损的。商户如果要用就得每笔订单都给我一笔钱。


后面为了补齐和竞品的功能差距,也耗费了大量心力。让我把项目从一个大学课程设计,变成了一个有商业化潜力的产品。


竞品玩法的底层逻辑


商业化的时候,就发现这个市场还是蛮卷的,不可能直接和商户收钱。竞品B不仅免费,还想着帮商户创造额外收入,做“增益”。那我确实是没有精力去对抗的。


我当时也没搞懂自己的定位,我究竟是tob还是toc。当时想着我精心设计的界面,怎么可以被广告侵蚀?那可是我的心血。所以一心想把产品体验做的比竞品好,就会有人用。但这个定位也很模糊,因为如果商户不用你的,用户怎么可能用你的下单呢。


其实应该to rmb。面向利润开发。美,是奢侈品,那是属于我内心的一种追求,但他很难具有说服力让商户使用。在国内的各种互联网产品,不盈利的产品最后都是越来越粗糙,越来越丑的,都要降本增效。而rmb是必需品,如果不能为各方创造价值,那就没有竞争力。


所以后续分析了一下各家的玩法:


竞品A:传统商业模式,依靠用户强制付费和广告,市占率一般,和第一差了10倍数量级。


竞品B:烧钱模式,免费给商户用,免费给用户用,自己想办法别的渠道做增益,还要补贴商户。市占率第一。先圈地,再养鱼,变现的事之后再说。


竞品C:不单单做打印软件,卖的是项目。一整套自助打印店的解决方案,不知道店铺能不能赚钱,但是可以先赚加盟商的钱。这个对商业运作的要求会很高,我一时半会做不了。


大佬指点了一下我


他说,你看现在什么自助贩卖机,其实就是一个流量入口。至于别的盈利不盈利再说,但是流量是值钱的。


我最近去查阿拉丁指数,了解到了买量和卖量的观念,重新认识了流量,因为知道价格了。


买量和卖量是什么?


买量说的就是你做了一个app,花钱让别人给你引流。


卖量就是你有一个日活很高的平台,可以为别人引流。


买量和卖量如何结算?


一般分为cpc和cpa两种计价方式。前者是只要用户点击了我的引流广告,广告主就得掏钱。后者是用户可能还需要注册并激活账号,完成一系列操作才掏钱。


一般价格在0.1-0.3元,每次引流。


后面我查了一下竞品B在卖量,每天可以提供10-30w的uv,单次引流报价0.1元。也就是理想情况下,每天可以有1-3w的广告费收入。


侧面说明了竞品B的市占率啊,在这个细分市场做到这个DAU……


关于流量,逆向思维的建立


流量是实现商业利益的工具。


工具类应用通过为别人引流将流量变现,内容类应用通过电商将流量变现的更贵。


依靠流量赚钱有两种姿势,主动迎合需求,和培养需求。前者就是你可以做一些大家必须要用的东西,来获得流量。比如自助打印小程序,只要商户接入了,那么他的所有顾客都会为这个小程序贡献流量。比如地铁乘车码,所有坐地铁的人都会用到,比如广州地铁就在卖量,每天有几百万的日活。


培养需求就是做自己看好的东西,但是当下不明朗,尝试发掘用户潜在的需求。


流量,如果不能利用好,那就是无效流量。所以正确的姿势是,发掘目标人群 -> 设计变现方案 -> 针对性的开发他们喜欢的内容或工具 -> 完成变现。而不是 自己发现有个东西不错 -> 开发出来 -> 测试一下市场反应 -> 期盼突然爆红,躺着收钱。


研究报告也蛮有意思,主打的就是一个研究如何将用户口袋里的钱转移到自己口袋里。做什么产品和个人喜好无关,和有没有市场前景相关。


互联网是基于实体的


互联网并不和实体脱钩,大部分平台依赖广告收入,但广告基本都是实体企业来掏钱。还有电商也是,消费不好,企业赚不到钱,就不愿意投更多推广费。


作者:程序员Alvin
来源:juejin.cn/post/7248118049583906872
收起阅读 »

真正的成长没有速成剂,都是风吹雨打过来的

一个人真正的成长一定是极其不容易的,如果想通过一两本书,一两个鸡汤文案,一两场培训就能够获得成长,那简直是痴人说梦,真正的成长一定不会是轻松的,一定是经过一次又一次的跌倒,然后爬起,对所做过的事,所经历的事进行一次又一次的复盘,总结,思考,最终才能慢慢认识到事...
继续阅读 »

一个人真正的成长一定是极其不容易的,如果想通过一两本书,一两个鸡汤文案,一两场培训就能够获得成长,那简直是痴人说梦,真正的成长一定不会是轻松的,一定是经过一次又一次的跌倒,然后爬起,对所做过的事,所经历的事进行一次又一次的复盘,总结,思考,最终才能慢慢认识到事物的本质,成长不是时间的堆积,也不会因为年龄递增而获得。


思考的难关


毫不夸张的说,思考是这个世界上最难的事,因为思考是要动脑的,而在现在这个信息爆炸的时代,我们想要任何资讯,任何知识,都可以找到现成的答案,所以懒惰就此滋生出来,“都有现成的答案了,我干嘛还要去动脑,我动脑得到的东西也未必有现成的好,而且动脑肚子还消耗能量,这种消耗不亚于体力劳动”,所以思考是最难的,而思考也是获取知识最快的途径。


我们在读书的时候,有些同学看似十分努力,一天感觉都是泡在书本里面的,但是成绩往往都不理想,初高中时,班上有些同学十分努力,对于我这种混子来说,我一定是扛不住的,就比如背英语单词,我发现有一些同学采用“原始人”的方式去背诵,因为我们整个初中换了三四个英语老师,而每个老师的教学方式不一样,其中一个老师就是教死记硬背,英语单词就比如“good”,她的方式是,“g o o d , g o o d”,也就是一个字母一个字母的背诵,后来因为一些原因,又换了老师,老师又教了音标,但是最后我还是发现,很多同学依旧还是“g o o d”,后来我才发现,因为学音标还需要花时间,还要动点脑子,对于一个单词,还有不同的情况,所以还是司机硬背好,这种方式就是“蛮力”,其实只要稍微花点时间去研究一下音标,然后再好好学学,背单词就会轻松很多,所以初高中英语成绩一直比较好,当然,现在很差,词汇量很少,完全是后面吃了懒惰的大亏。


所以,思考虽然是痛苦的,但是熬过痛苦期,就能够飞速成长,如果沉浸在自我感动的蛮力式努力中,那么只会离成长越来越远。


懒惰的魔咒


说到懒惰,我们可能会想到睡懒觉,不努力学习,不努力工作,但这其实并不是懒惰,每天起得很早去搬砖,日复一日地干着重复的事,却没有半点成长,这才是真正的懒惰。


没有思考的勤快是一文不值的,在现在这个社会,各种工具十分普遍,如果我们依旧保持原始人的工作方式,那么最终只会把自己累死,就像很多统计工作,如果认为自己加班到十二点,人工统计出数据来,老板就会很欣赏你,觉得你很吃苦耐劳,那么这是愚蠢的,因为有很多工具可能五分钟就能够搞出来,可偏偏固执去搞一些没用的东西,这有用吗,还有现在是人工智能时代,各种GPT工具那么爽,直接让效率翻倍,但是我就是不用,我就喜欢自己从头搞,那也没办法。


很多时候,所谓的勤快不过是为了掩饰自己的懒惰而已,懒惰得不愿意去接受新的事物,不愿意去学习新东西,总觉得“老一套“万能。


成长过程中,要不断打破自己的认知,冲破自己的心灵上的懒惰,拥抱新鲜事物,这样才不至于和主流脱节。


环境的影响



在南瓜里度日,就成圆形;在竹子里生活,就成长形。



一个人的环境同样是塑造成长的重要因素。环境不仅指物理环境,也包括人际环境和心理环境。在环境中,我们需要学会适应和改变环境,让环境成为我们成长的动力。


人以类聚,物以群分,如果我们身边的人都是不思上进,终日惶惶,那么长时间下来,我们也会受影响,读书时,如果身边的同学都好学,那么自己也绝对不会变得很烂,相反,如果同学都整天无所事事,那么自己自然也不会好到哪里去,当身边的人都是勤于思考,有想法,那么大家就会有一个良好的氛围,这样成长得就比较快,工作中,如果大家都很有热情,分享很多,学习很多,那么自己也不好意思,自然也会去学习。


但是我们每个人的能力都不一样,所以遇到的环境也不一样,所以很多时候,这并不是我们能选择的,所以说在自己没能力选择的时候,那么就要克制自己,别人混,自己不能混,要时刻提醒自己不能松懈,也不要因为别人的闲言碎语而去”同流合污“,始终记住,一切都是为了自己变得更好,不要太在意别人的看法。


保持良好的心态


在这个浮躁的社会,我们的思想和意志总是被这个社会所影响,特别现在短视频如此火爆,”脉脉上面低于百万年薪不好意思发言,抖音上面人均劳斯莱斯,自己同学朋友又买了几套房“,我们的心态时不时会受到打击,原本平稳的步伐一下变得不稳了,想一步升天了,但是当步子迈大了,可能就受伤了。


我们要时刻提醒自己自己是为自己而活,无论别人是真还是假,和自己关系不大,不要被外界过于影响,这个世界上没有一个人的成功是轻易的,都是在黑暗中努力发光的,如果相信了速成,相信快速致富,那么镰刀造已经嫁到脖子上了,而且还割坏了很多把,一茬接着一茬!


即使此刻多么的不堪,也不要放弃,积累自己,也许有一天,我们再相逢,睁开眼睛看,我才是英雄,他日若遂凌云志,敢笑黄巢不丈夫!



今天的分享就到这里,感谢你的观看,我们下期见!



作者:刘牌
来源:juejin.cn/post/7233052510554423333
收起阅读 »

【一点点税务知识】我的工资原来是这样少的

起因是这样的,我发现我的工资代扣个税,相较以前翻了三、四倍,工资也没给我涨呀,怎么交税还多了。怀疑给我算错了,于是我翻了翻资料找到一张税务总局的个人所得税税率表。 它是这样计算的: 1. 一年分成12个月,交纳税也分为12期 2. 本期应预扣预缴税额 = ...
继续阅读 »

起因是这样的,我发现我的工资代扣个税,相较以前翻了三、四倍,工资也没给我涨呀,怎么交税还多了。怀疑给我算错了,于是我翻了翻资料找到一张税务总局的个人所得税税率表



它是这样计算的:


1. 一年分成12个月,交纳税也分为12期

2.
本期应预扣预缴税额 = (累计预扣预缴应纳税所得额 * 税率 - 速算扣除数)- 累计已预扣预缴税额

3.
累计预扣预缴应纳税所得额 = 累计收入 - 累计免税收入 - 累计减除费用 - 累计专项扣除 - 累计专项附加扣除 - 累计依法确定的其他扣除

4.
其中,累计减除费用,按照5000元/月乘以纳税人当年截至本月在本单位的任职受雇月份数计算


举个例子,假设张三每月工资收入20000,各项社会保险金(五险一金)扣除为1000。


在八月份:



  • 张三累计减除费用是5000*8=40000

  • 累计专项扣除是1000*8=8000

  • 排除张三有免税收入等情况,他的累计预扣预缴应纳税所得额为20000*8-40000-8000=112000

  • 累计预扣预缴应纳税所得额112000对应税率表的2级数,所以第八期应预扣预缴税额为(112000*0.1-2520)-累计已预扣预缴税额

  • 累计已预扣预缴税额是前7个月的纳税总和。这样计算,20000*7-5000*7-1000*7=98000 对应税率表的2级数,前7期累计已预扣预缴税额为98000*0.1-2520 = 7280

  • 最后,张三在八月份,他要纳税为(112000*0.1-2520)-7280=1400


等等,文章还没完呢,不然又有人怼我纯水了。



我发现网络上像这类纳税计算器参差不齐,计算公式差得离谱,所以决定自己动手撸一个。



个税计算器


由于html、css、js代码内容长,所以我把这部分内容拼接成一张大图,也方便读源码。css布局大量使用Flex弹性布局,不了解的同学先学习一波《和我女神王冰冰一起学display: flex布局》



描述下js逻辑层:



  • 本月工资、社保(五险一金)、专项附加扣除都要乘以纳税期数,分别计算出各自的累计数

  • 本月工资、社保(五险一金)、专项附加扣除、累计减除费用累计数相减计算后,就是累计预扣预缴应纳税所得额(累计应缴税款)

  • 个人所得税税率表转化成taxRates数据结构,累计预扣预缴应纳税所得额作为参数调用getTaxRate方法返回税率、速算扣除数

  • 累计已预扣预缴税额(已缴税款)计算为纳税期数减1,然后以减后的纳税期数再重复一遍上述计算过程

  • 本期应预扣预缴税额(应交税额)= 累计预扣预缴应纳税*税率-速算扣除数-累计已预扣预缴税额(已缴税款)


布局兼容到了PC端、移动端,它们分别是这样的:



想要源码的同学,可以访问下面👇链接保存页面即可。


个税计算器在线链接:http://www.linglan01.cn/c/salary/


最后的话


文章中一类的个税计算器,一般计算出来的结果是有偏差的,原因如下:



  • 每月工资不是固定的,受KPI影响工资会有一定起浮

  • 奖金类的收入也要计算进去,如果有奖金没有计算进累计预扣预缴应纳税所得额,那计算的结果就是会偏差


所以说,个税计算器只能计算出大概的税。


想要准确的计算自己纳税情况,建议下载个人所得税APP。



当工资收入越高,应纳税所得额比重也会增大,比重在到一定程度后,我想我们应该要考虑如何合法避税。


每年年未都会有一次在个人所得税APP提交专项附加扣除,它能一定程度上补返回税额给我们。



另外,开通个人养老金帐户也可以进行一定额度的避税,将来养老滋不滋润重点看这个帐户。我收入还不足以供个人养老帐户,有条件、有需要的同学可以去了解一下。


如果我的文章对你有帮助,您的👍就是对我的最大支持^_^。


作者:凌览
来源:juejin.cn/post/7270395503821160506
收起阅读 »