注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

Demo体验

Demo体验

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

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

大洗牌!2021年,全国TOP50城市GDP排行榜

导读:中国城市,正在迎来新一轮大洗牌。产业格局、人口形势、国际局势变迁,疫情、洪涝、能耗双控等因素影响……全国城市经济格局发生了巨大变化。谁进谁退?01 50强城市,谁是守门员?这是2021年内地GDP50强城市排行榜:中国城市第一梯队的竞争,已从最初的万亿俱...
继续阅读 »
导读:中国城市,正在迎来新一轮大洗牌。

产业格局、人口形势、国际局势变迁,疫情、洪涝、能耗双控等因素影响……全国城市经济格局发生了巨大变化。
谁进谁退?

01 50强城市,谁是守门员?

这是2021年内地GDP50强城市排行榜:
pic_e67a993c.png
中国城市第一梯队的竞争,已从最初的万亿俱乐部,向2万亿乃至3万亿俱乐部进军。
同时,内地万亿GDP城市已经扩容到24个,南方18个, 北方6个。
TOP50城市的门槛也提高到了5000亿元以上,太原是“守门员”,还有部分省会未能晋级50强之列。
具体来看,京沪联袂突破4万亿,成为我国仅有的2个4万亿大市。
作为地位最为超然的两大一线城市,一个是政治和文化中心,一个是经济和金融中心,未来综合实力仍将遥遥领先。
京沪之后,同为一线城市的广深,都在向3万亿进军。
虽然与京沪之间的差距有所拉大,但广深都只是副省级城市,广州更是受制于三级财政,无论行政级别还是城市能级,抑或政策力度都难与京沪匹敌,更多依靠自力更生,能取得如此成绩殊为不易。
在2万亿俱乐部中,广州、重庆、苏州遥遥领先。2022年,广州、重庆突破3万亿问题不大,而苏州未来5年同样不乏挑战3万亿的可能。
pic_97d74350.png
事实上,在TOP10城市里,成都离2万亿只有一步之遥,而杭州、武汉等地突破2万亿也只是一两年的时间问题。
同时,万亿俱乐部成员,再次迎来扩容,但2021年仅有东莞一城晋级。目前,全国已有24个万亿城市,18个位于南方,6个位于北方。
当然,随着万亿城市大扩容,万亿GDP的含金量也在急速下降,万亿将只是城市竞争的起点,而非终点。

02 大城博弈:谁晋级了?
城市经济,可谓你追我赶,不进则退,没有谁能永葆强势。
过去一年,哪些城市守住了经济优势地位?哪些城市受到了挑战?
其一,济南、合肥、福州、东莞、唐山、沈阳、南昌、太原等省会或经济强市,实现了晋级。
太原以1亿元左右的微弱优势,超过南宁,晋级50强城市,成为TOP50城市的“守门员”。
南宁、贵阳、乌鲁木齐、兰州、呼和浩特等省会城市止步于50强之外。
其二,广州稳超重庆,守住了GDP第四城之位,且拉近了与深圳之间的距离。
2021年,广州GDP为2.82万亿元,重庆为2.78万亿,广州对重庆的领先优势扩大到300亿元以上。
同时,广深之间的差距,从前几年高峰时期的4000亿元以上,缩小到2400亿元左右。
pic_94049bb6.png
正如《全国GDP第四城之争,再无悬念》一文的分析,这背后得益于广州完成了产业转型,借助新一代信息技术、生物医药、新能源等新动能,以及城市更新的助力,经济发展重回高增长轨道。
其三,天津仍然止步于十强之外。
自2020年南京取代天津成为内地GDP第十城之后,天津经济何去何从就成了舆论关注焦点,十强城市只剩下北京一个北方城市之类的说法不绝于耳,这在凯风新书《中国城市大趋势》中有详细论述。
不过,2021年,天津离TOP10仍有一步之遥。2021年,天津GDP1.57万亿,离位居第十名的南京仍有600多亿的差距。
pic_75e94abc.png
继2020年南京首次超越天津,晋级十强城市之后,2021年天津仍未能反超南京,与南京的差距约为600亿左右。

03 谁是最大“黑马”?
2021年,城市经济涌现出一批“黑马”,经济实力实现大幅跃升。
在TOP50城市中,进步最大的城市有4个:陕西榆林、山西太原、山东潍坊、福建福州。
其中,福州借助强省会优势重回省内经济第一大市之位,GDP连超泉州、南通和西安,跻身TOP20城市之列。
而山东潍坊,则反超石家庄、绍兴、盐城等城市,排名大幅提升。
潍坊的晋级,一方面得益于工业增长强劲,工业增速超过12%;另一方面则来自投资的贡献,固定投资增速超过16%,其中基建投资超过33%。
潍坊曾喊出“咬定地区生产总值过万亿、冲刺全国大中城市综合实力前30强、加速迈入国内二线城市行列”的口号。
如果能保持高速增长,这一目标未必没有实现的可能。
相比而言,榆林、太原更为突出。
2021年,榆林、太原GDP名义增速分别高达32.9%、23.3%,城市排名分别跃升11位、6位,两城更是得以晋级50强之列。
pic_b3d2de23.png
榆林和太原大幅晋级,得益于资源价格大涨。
榆林是著名的煤炭大城,而太原所在的山西则是全国产煤第一大省。
过去1年,在全球供应链紧张、通胀高企以及能耗双控影响之下,煤炭产能扩张,而价格大幅上涨,由此带动资源型城市经济总量的罕见大增长。
pic_79a2bed5.png
这其中,榆林最为典型。2021年,榆林GDP达5435.18亿元,不仅超过了邻省省会太原,而且还超过了襄阳、宜昌,直逼长期领跑中西部非省会城市的洛阳。
煤炭价格大涨,对榆林经济的贡献有多大?
数据显示,2021年榆林全市规上工业产值首次突破7000亿元大关,比上年增长55.9%。其中,能源工业产值增长61.4%;化工行业产值增长54.3%。
pic_22fdc795.png
当然,未来能源行业,还会面临美联储加息、全球供应链恢复常态、双碳战略等影响,能否继续保持高速增长,值得关注。

04 强省会的逆袭
2021年,强省会可谓光芒四射。
这一年,不仅成都、武汉等传统强省会实现了再突破,一些向来“弱势”的省会经济实力也迈上新台阶。

前不久,福建福州、江西南昌、广西南宁、贵州贵阳、河北石家庄、山西太原不约而同将“强省会提上日程”,有地方甚至喊出了“省会强则全省强,省会兴则全省兴”的口号。
过去一年,多个省会经济实力提升:
沈阳逼近30强城市,重返东北第一大省会之位 福州跃居20强城市之列, 太原跻身50强城市, 济南、合肥、南昌等省会排名也有明显提升。
这其中,最典型的当属福州,不仅跃居20强城市,还重回福建第一大市之位。
在福建省,长期以来都是“三城鼎立”的格局:福州为省会,泉州为经济强市,厦门为经济特区、计划单列市和副省级城市。
2021年,福州GDP达11324.48亿元,而泉州为11304.17亿元,厦门为7033.9亿元。
这意味着,福州以20亿的领先优势,时隔20多年,重回福建经济第一大市。
pic_25c08bad.png
这背后,不无强省会战略的助力。
去年,福建出台《关于支持福州实施强省会战略的若干意见》,支持福州创建国家中心城市,大力支持福州做大做强,增强省会城市辐射带动力。
pic_1fe279aa.png
这意味着,福州不仅要做强省会,而且还要竞夺国家中心城市。要知道,同属一省的厦门,也曾提出创建国家中心城市的想法。
虽然福州重回福建第一大市之位,但福州与厦门、泉州的良性竞争还会持续。

05 东北,仍然只有一个TOP30城市
东北共有4大中心城市:大连、沈阳、长春、哈尔滨。
这4个城市全部位列副省级城市,占全国副省级城市(共15个)的四分之一强。
据分析,东北4市之所以能全员晋级,是因为在副省级城市设立的1990年代,东北经济还在全国位居前列。
后来副省级城市再未进行任何扩容,这也导致郑州、长沙、合肥等万亿强市仍然只是普通省会。
不过,近年来,东北经济强市被其他省会陆续赶超。加上前几年经济普查,原本已经突破7000亿的多个东北地市,GDP遭遇挤水分,又回到了重新攀上7000亿的历程。
2020年之后,东北各地发展均步入正轨。
pic_a170e9d3.png
从2021年经济数据来看,大连以7825.9亿元位居东北第一,在全国排名第29名。
沈阳GDP达7249亿元,反超昆明、长春,位列31名,重回东北第一大省会之位。
长春GDP为7000亿元左右,位列30-40名之间,哈尔滨GDP为5351亿元,位列50名之内。
未来几年,东北有望诞生第一个万亿城市。

06 谁是下一个万亿城市?
目前,内地共有24个万亿GDP城市,其中南方18个,北方6个。
广东独占4席,与江苏并列第一,广州、深圳、佛山、东莞全部破万亿。
北方的6个万亿城市分别是:北京、天津、青岛、郑州、济南、西安。
pic_d958d245.png
那么,谁是下一个万亿城市?
可以看到,东莞晋级之后,9000亿量级城市存在明显断层,这意味着2022年或许将是没有新晋万亿城市的一年。(参阅《又一个万亿GDP城市诞生》)
目前,8000亿量级共有4个城市:江苏常州、山东烟台、河北唐山、江苏徐州。
这些城市快则未来2年、慢则2025年之前,都有望跻身万亿城市之列。
而在7000亿量级,则有大连、温州、昆明、沈阳、潍坊等众多城市,这些地方未来5年左右也大概率会有万亿城市诞生,而东北地区也有望实现零万亿城市的突破。
当然,随着中国经济总量超过美国3/4,省域经济最高已经攀升到12万亿以上,市域经济最高也超过4万亿,万亿城市的含金量将与以往有着明显不同。
届时,2万亿城市,或将是新的起点。

作者:凯风 来源:国民经略(ID:guominjinglve) 收起阅读 »

浙江出招:大学生如果创业失败,贷款10万以下的由政府代偿

2月17日上午,国家发展改革委举行新闻发布会,介绍支持浙江省高质量发展建设共同富裕示范区推进情况。浙江省人力资源和社会保障厅副厅长陈中在答记者问中介绍,为鼓励大学生创业, 浙江大学生如果创业失败,贷款10万以下的可由政府代偿。陈中表示,高校毕业生是宝...
继续阅读 »

2月17日上午,国家发展改革委举行新闻发布会,介绍支持浙江省高质量发展建设共同富裕示范区推进情况。

浙江省人力资源和社会保障厅副厅长陈中在答记者问中介绍,为鼓励大学生创业, 浙江大学生如果创业失败,贷款10万以下的可由政府代偿。

陈中表示,高校毕业生是宝贵的人才资源,浙江始终坚持把高校毕业生就业工作当作人才工作来抓,从来没有把他们当作包袱、压力、负担,而是把他们作为优质的资源来配置、引进、使用和储备。今年,全国高校毕业生超过1000万,对浙江来说是一个很好的机遇,我们要抓住这个机遇,大力引进高校毕业生。

浙江的高校毕业生就业政策比较丰富。除了杭州市区,全面放开专科以上学历毕业生的落户限制,杭州的落户条件为本科以上学历。高校毕业生到浙江工作,可以享受 2万到40万不等的生活补贴或购房租房补贴。大学生想创业,可贷款10万到50万, 如果创业失败,贷款10万以下的由政府代偿,贷款10万以上的部分,由政府代偿80%。大学生从事家政、养老和现代农业创业,政府给予10万元的创业补贴,大学生到这些领域工作,政府给予 每人每年1万的就业补贴,连续补贴3年。大学生到浙江实习的,各地提供生活补贴。对家庭困难的毕业生,发放每人3000元的求职创业补贴。我们欢迎全国的高校毕业生到浙江来就业创业。

浙江是用工大省,省外务工人员在浙江有2300万,他们为浙江经济社会发展作出了重要贡献。在浙江,省外务工人员与本地户籍的劳动者享受同等的就业创业服务和政策。另外,浙江还开发不讲技能、不讲学历、不讲年龄的爱心岗位,专门安置脱贫人口,保证他们的月薪4500元以上,去年全省有脱贫人口225万。

浙江的平台经济比较发达,各种新就业形态快速发展,浙江非常关注新就业形态劳动者的劳动保障问题。去年,浙江专门出台了维护新就业形态劳动者劳动保障权益的实施办法,主要是放开了灵活就业人员在就业地参加企业职工基本养老保险、基本医疗保险的户籍限制,支持新就业形态劳动者单险种参加工伤保险;我们还要求平台企业发挥数据技术优势,合理管控在线工作时间,对连续工作超过4小时的要安排工间休息。

来源:国家发展和改革委员会官方网站、浙江新闻客户端

收起阅读 »

近六成员工强烈支持,携程将推出“3+2 ”工作模式,一周三天到岗两天在家办公

对于通勤时间动辄一两个小时的上班族来说,在家办公可谓是最理想的选择。情人节当天,携程宣布将推出“3+2”混合办公制度,并在全公司实行。从3月1日起,每周三、周五,员工可以根据自己的实际需求选择在家办公,当然这个“家”也可以是咖啡馆和酒店等任意地点。 携程方面透...
继续阅读 »

对于通勤时间动辄一两个小时的上班族来说,在家办公可谓是最理想的选择。情人节当天,携程宣布将推出“3+2”混合办公制度,并在全公司实行。从3月1日起,每周三、周五,员工可以根据自己的实际需求选择在家办公,当然这个“家”也可以是咖啡馆和酒店等任意地点。 携程方面透露,这次全面推广“3+2”工作制,将覆盖该集团全部员工(约3万人),不分男女、不分值岗、不做薪资调整。
pic_0e7c2131.png 新制度经过多次试验

此次携程推出的新制度并不是盲目跟风,而是经过了对公司员工的多次实验。早在2010年,携程就组织客服人员进行了为期9个月的“在家办公”试验。结果显示,员工的业绩由随机实验中的13%进一步上升为22%,员工的离职率下降了50%。 后来在2020年疫情爆发期间,携程近70%的客服员工依据经验迅速实施“在家办公”方案,部分部门在家办公人数近85%。结果显示,在不受办公室干扰和通勤时间等因素的影响下,在家办公的人完成的工作更多。 该试验的发起人——携程集团联合创始人兼董事局主席梁建章表示,设立新工作制度的目的,既是疫情防控所需,更为缓解员工照顾家庭、带孩子的压力,最好能促进社会生育率的提升。恢复正常上班后,梁建章再次倡导职能更广泛的混合办公试验。 在携程2021年8月到2022年1月的混合办公试验中,有超过1600人参加。结果显示,员工参与意愿上升至近六成,不支持的人数下降至了0.1%。

pic_985fcd1a.png

图源:携程 在支持混合办公的原因中,投票最高的3个理由分别是:减少了通勤时间;工作和生活更平衡;更幸福、更富创造力。在不影响绩效的情况下,离职率下降约1/3。

pic_38ef91ac.png

图源:携程 但同时也有部分员工和主管表达了对这个模式的担忧,其中,“担心影响同事之间的交流”占近50%,主管也有“担心难以管理”等问题。对此,携程人力资源部相关负责人介绍,接下来公司将重点探索的是对员工赋能,提升远程办公效率和对主管赋能,助力主管加强管理能力。

pic_dd8a9fa3.png

图源:携程 携程集团董事局主席梁建章说:“混合办公正在变成一种全球性的趋势,期待更多企业效仿和推广。”他还表示,混合办公制度的推广是企业、员工和社会的多赢。
pic_f4964732.png 多家互联网大厂实行混合办公制度

随着互联网技术的发展,远程办公已逐渐成熟并可被实现,受新冠疫情的影响,全球更是掀起了远程办公的潮流。据报道,已有多家美国互联网公司实行混合办公制度。 微软和推特早在2020年就推出允许员工长期在家办公的新政策。扎克伯格在去年宣布,在所有全职员工可以远程完成自己的工作的前提下,允许他们长期在家办公。Google去年也实行了混合型工作周,大多数员工只需在办公室办公三天,其余两天可以在他们最适合的地方办公;另外还有“自由工作周”,即员工每年“可以在办公室以外的地方工作4周 (经经理批准)”。苹果和亚马逊也实施了类似的混合办公政策。 再看国内,去年钉钉总裁叶军在全员群发出倡议,从11月开始,钉钉员工可在家使用钉钉远程办公一天。12月,阿里巴巴在内网公布了多项针对员工关怀的“暖心计划”,其中一项就是将试行灵活办公制度,鼓励有条件的团队试行每周不超过一天的灵活办公,可自由选择办公地点。 此前公众号的一篇文章曾提到,远程办公或常态化。CSDN的AI小组的成员分布在北京,长沙,深圳和天津,每个人都可以说是在远程办公,他们每天早上9:30有一个半小时的晨会,交流项目进度,然后其余的时间就各自按照各自的优先级自行工作。他们通过企业微信,Git来交流。他们的“技能树森林” 项目,还有不少外部团队通过开源的方式贡献。
pic_95df5f84.png 网友:既高兴又担忧

消息一出,不少网友表示,“真令人羡慕,谁不愿意在家办公呢?”,“如何让老板不经意间看到这条微博。”同时,也有网友提出了自己的担忧,“在家办公基本等于24小时在线办公”,“这只会让工作和生活界限模糊。” 网友@奶盖呆桃:什么?!这么好,我也想在家办公,这样压力会小很多的 网友@一枚儿童:减少不必要通勤时间,挺好 网友@大尾巴婷:建议大力推广 网友@茶茶喝香草养乐多: 这个模式还可以,不过要先试试看,如果合适就推行就行啦 网友@Chaoybb_虞:居家办公24小时待机,而且自制力差的真的不建议。像我就是总玩,然后熬夜通宵,身体熬完了 网友@我寄愁心与明月··:我不想,家里办公,效率太低,不仅仅要工作,还有一堆琐事 携程“3+2”混合办公模式算是企业灵活办公模式的首次尝试,具体结果如何还要看后续的实施情况。你对携程的新制度有什么看法呢?如果你所在的公司可以申请混合办公,你会支持吗?欢迎在评论区留下你的看法~ 

参考链接:

整理 | 于轩
出品 | 程序人生(ID:coder _life)

收起阅读 »

办一届奥运会,到底赚不赚钱?

2月4日,北京冬奥会盛大开幕。尽管有疫情影响,91个国家和地区的代表团健儿仍然将给全世界人民带来一场场精彩的冰雪赛事。不过,也是因为疫情,这次冬奥会将原计划通过公开销售门票的方式调整为定向组织观众现场观赛。▲2022年北京冬奥会会徽 ©Getty Images...
继续阅读 »

pic_f6b9f0fc.png

2月4日,北京冬奥会盛大开幕。

尽管有疫情影响,91个国家和地区的代表团健儿仍然将给全世界人民带来一场场精彩的冰雪赛事。

不过,也是因为疫情,这次冬奥会将原计划通过公开销售门票的方式调整为定向组织观众现场观赛。

pic_f1c3b575.png

▲2022年北京冬奥会会徽 ©Getty Images

客观上说,这必然会减少这次冬奥会的门票收入。

举办奥运会的价值谁都知道,对于任何一个国家和城市来说,奥运会都有无法用金钱衡量的重要意义。

可大家同样还是会好奇,举办奥运会到底赚不赚钱呢?

事实上,自从1896年第一届雅典奥运会开幕,直到1984年的洛杉矶奥运会前,办奥运会的国家并不赚钱,也压根没想到要赚钱。

01 早期的奥运会纯属“赔本赚吆喝”

说起来,这与奥运会创始人顾拜旦所提出的奥运会三大原则“非职业化、非政治化、非商业化”有关。

pic_54b28a3b.png

这三条原则也是奥运精神的重要体现,并得到全世界的公认。

既然办奥运会是全世界人民体育和文化事业的盛事,谈钱那就俗了。

一个国家承办奥运会,不仅能在举办期间得到全世界的关注,而且还是综合国力的体现,即便不赚钱,也同样让很多国家为申办奥运而挤破头。

钱不是万能的,可没钱是万万不能的。

不管怎么说,如此关系重大的体育赛事,总不可能让参赛国自行解决费用吧?况且不是说承办国都是实力雄厚,财大气粗么?

因此,虽说国际奥委会并没有明确说明奥运会期间的选手食宿、交通等费用到底该由谁承担,可按照约定俗成的规矩,无论是夏季奥运会还是冬季奥运会,参赛运动员的所有费用基本都由承办国承担。

pic_42793fbf.png

▲国际奥委会(IOC)展示的“奥运会支出账目”

奥运会举办期间,承办国大多数的收入几乎都是微不足道的门票收入,这点钱和兴建场馆,还要对参赛国选手包吃包住等费用来说,几乎可以忽略不计。

虽然举办奥运不是个赚钱的买卖,可毕竟是挺有面子的国际重大赛事,更是申办国经济实力的重要体现。经济不发达的国家就是想申请也没戏。

早期奥运会承办国为解决资金,基本就三个套路:政府拨款、发行彩票以及民间捐款。

可因为后两项资金来源实在不稳定,加上募集的钱也杯水车薪,最后几乎都是承办国政府买了单。

虽然承办国也有电视转播权收入,可因那时全世界的电视普及率实在太低,这点钱也只是杯水车薪。

说到底,对早期奥运申办国来说,办奥运就是赔本赚吆喝。

可问题是,很多举办奥运会的国家是“申奥一时爽,赛后火葬场”。

由于举办奥运纯属只有投入没有盈利的事情,使得很多奥运举办国在奥运会后背了一屁股债。

比如1972年的德国慕尼黑奥运会耗费10亿美元,最后亏损6亿美元,中间还闹出11名以色列运动员被恐怖分子杀害的严重恐怖事件。

而1976年的加拿大的蒙特利尔更惨,总投资20亿美元,结果亏了10亿美元。不仅导致蒙特利尔市政府几近破产,还让当地300万市民背上了20多年的债务,还由此诞生了“蒙特利尔陷阱”这样的专有名词。

pic_9fb12d68.png

随后的1980年莫斯科奥运会,主办国投资了90亿美元,收入基本为零,亏大发了。

这说的还是夏季奥运会,其实办一次冬奥会也不容易。

同样是1980年,这年的冬奥会是在纽约普莱西湖镇举办。

其中最为人熟知的故事是东道主美国冰球队面对强大的苏联冰球队,以4:3反败为胜,打破了苏联自1964年来垄断冰球冠军的局面。

只是,本次冬奥会最终使得普莱西德湖小镇欠下800多万美元债务,让仅有3000人的小镇实在不堪重负。幸好所在的纽约州最终伸出援手,代其支付了全部债务。

不过,1980年的纽约普莱西湖冬奥会最值得一提的是,距首次参加第10届奥运会48年后,中国奥运代表团首次出现在奥运会的赛场上。

pic_d44486ef.png

▲1980年纽约普莱西湖冬奥会是新中国成立后首次参加奥运会

只是因为中国队的成绩不是很理想,宣传较少,使得很多人都误以为1984年的洛杉矶夏季奥运会才是中国奥运代表团的“首秀”。

正是因为无论夏季奥运会还是冬季奥运会都不赚钱,这之后很多国家都在申办奥运变得畏首畏尾,根本不想接手这个“烫手山芋”。

1984年的美国洛杉矶申奥成功后,美国国内压根就不感冒。

洛杉矶所在的加州政府直接立法规定,禁止洛杉矶奥运会动用任何财政收入举办赛事。

民众也自发上街游行,表示“休想动用我们一分钱的税金来办奥运”。

至于发行彩票?想都别想,在加州这属于违法行为。

当时的美国总统里根态度更狠:要钱没有,得洛杉矶市政府自己想办法。

要钱没钱,民众还十分反感举办奥运会,这让洛杉矶奥运会筹备组急得团团转。

02 奥运会变成了赚钱的买卖

官方没辙,那就只好从民间想办法。

被逼无奈的洛杉矶奥运会筹备组经人推荐,从民间找来一位商人负责筹款事宜。

这个人就是彼得·尤伯罗斯,当时是一家大型旅游公司的老板。

pic_6f22f85e.png

▲将洛杉矶奥运会“点石成金”的商人彼得·尤伯罗斯

洛杉矶奥运资金筹委会刚成立时,就尤伯罗斯一个人。亏得他率先捐出了100美元,才算打破筹委会账目的“零记录”。

尤伯罗斯给出的对策就是“赞助”。

本来赞助这回事对奥运会并不是新鲜事,各届都有赞助商。哪怕亏到家的莫斯科奥运会还拉到200多家赞助商。

可赞助商多是多,真正赞助的总额并不多。

由于之前奥运组委会不懂管理,加上企业杀价,每次拿到的赞助款只有区区数百万美元。

尤伯罗斯上任后,当即改变了奥运会的赞助策略。

他规定奥运会每个项目只能有唯一赞助商,而且全部项目只允许30家赞助企业。

不仅如此,尤伯罗斯还规定,想要赞助,出资必须在400万美元起,低于这个数字免谈。

总结下来,尤伯罗斯其实就是利用奥运会的重要性玩起了“稀缺”牌,搞了个饥饿营销。

为了让更多商家心甘情愿入局,他与洛杉矶奥运会筹备委员会共同提供了一份阵容强大的参赛国名单,其中就包括派出300多人的中国奥运代表团。

也是在这届奥运会上,射击选手许海峰彻底打破了中国奥运金牌史上的“零的纪录”。

pic_8f62fc6c.png

当时国际奥委会成员有159个,最后宣布参加洛杉矶奥运会的有140个国家和地区,远远超过了以往任何一届的规模。

如此盛大的场面,不能不让商家们心动,他们为了广告位展开激烈竞争,这让洛杉矶奥运会喜滋滋地赚了个盆满钵满。

比如当时的可口可乐为了击败百事可乐,砸了1260万美元,几乎是当时可口可乐全年广告投入的十分之一;日本富士为了抢占美国市场,挑战行业巨头柯达,拿出了700万美元。

而这些广告商全部都成了日后奥运会最重要的赞助商,为自己赚足了眼球。

尤伯罗斯开创的赞助模式也成为奥运会后来最主要的盈利手段,衍生出包括top计划、组委会合作伙伴、赞助商、供应商、特许经营企业等盈利模式。

尤伯罗斯的“吸金”计划到这里就结束了么?并没有。

尤伯罗斯还遇到了好时机,当时电视已在全世界得到普及。他顺势又搞出个电视转播权竞标,想投标得先交75万美元的保证金。

最后,美国五大电视广播巨头中的美国广播公司(ABC)以2.25亿美元拿下本次奥运会的转播权,也再次为奥运会开辟了一项新的盈利项目。

pic_d48887f5.png

▲历届奥运会的电视传播权收入

由于洛杉矶奥运会越来越多的参赛国加入,很多人都希望现场第一时间能见证世界纪录的诞生,比赛门票开始金贵起来。

洛杉矶奥运会随即宣布,本次门票的价格会根据赛事不同,将为50-200美元不等,任何人凭票入场,美国总统也不例外。

随后,热门赛事的门票果真卖到这样的价格,热门赛事还被“黄牛”炒到数百美元一张。

pic_b29f6930.png

▲1984年的洛杉矶奥运会打破了办奥运只会赔钱的历史

不用说,这背后还是尤伯罗斯的操作。

洛杉矶奥运会在各项赚钱的项目上一顿操作猛如虎,不仅结束了办奥运会赔钱的历史,还赚了2.5亿美元。

1984年,美国《时代》周刊将尤伯罗斯评选为“1984年最杰出人物”,而他正式开创了奥运动会的商业化运营模式,使各国再次开始争相申办奥运会。

03 真成了赚钱的买卖

因为有了洛杉矶奥运会这样现成的案例,后来几届奥运会几乎都是“照葫芦画瓢”,均取得了不错的经济效益,

这其中不仅有不断提升的广告赞助费用,连电视传播费用也在逐年增长。

根据国际奥委会公布数据,从1993-2012年,奥运电视转播授权费已从12.5亿涨到了38.50亿美元。

根据后来各国公布的数据,1988年的汉城奥运会总投资40亿美元,通过企业赞助,电视转播授权等方式,盈利4.97亿美元,也是首次政府举办奥运会盈利。

1992年,巴塞罗那奥运会总投资达到了96亿美元,虽然直接赛事盈利只有4000万美元,可奥运会后给西班牙和巴塞罗那带来了260亿美元的经济效益。

pic_8c5d6733.png

▲今天风光秀美、基础建设完善的巴塞罗那市要拜当年举办的奥运会所赐

申办奥运之前,巴塞罗那的城市十分破旧,基础设施也很不完善。

正是借助奥运会的契机,巴塞罗那市将90%的支出用在了基建、电信以及环境综合整治上。

奥运会最终让巴塞罗那焕然一新:其中道路设施增加了15%;污水处理系统增加了17%;绿化带和海滨旅游区增加了78%;人工湖和喷泉增加了268%。

旧貌换新颜的巴塞罗那也成为举世闻名的国际旅游城市,旅游收入自此成为该市最主要的财政收入来源。

同样,1996年亚特兰大奥运会算下来也只盈利1000万美元,却创造了50亿美元的经济效益;2012年伦敦奥运会总投资在100亿英镑(约合135亿美元),但是受到奥运经济的带动,整体收益达到210亿英镑(约合284亿美元)。

所谓“奥运经济”是指承办国在奥运筹备以及举办期间一切与之相关的经济活动,也是承办国最重要的经济来源。

换句话说,奥运会的收入已不是单纯从赛事结束就测算,更是从更为长远的承办国整体经济发展衡量。

拿1964年日本东京奥运会来说,由于当时办奥运还是“赔钱”项目,奥运结束后的账目自然是亏的。可靠着奥运带来的旅游和外资项目收入,日本当年GDP的增幅达到9%。

pic_9289de77.png

说来说去,大家肯定最关心2008年北京奥运会到底是赚是赔。

2009年6月19日,国家审计署公布了北京奥运会财务收支跟踪审计结果显示“北京奥组委收入将达到205亿元,较预算增加8亿元;支出将达到193.43亿元,较预算略有增加;收支结余将超过10亿元”。

不过,这只是经济学上的直接成本和收入。

而间接成本根据当时有关媒体报道,为筹备北京奥运会,中国差不多总投入近3000亿元,其中2800亿大部分用在了城市基建上。

pic_6cd57c45.png

根据北京申奥报告财政预算和北京“十五”计划的数据显示,北京奥运筹备期间,用于城市基础设施建设1800亿元:900亿元用于修建地铁、轻轨、高速公路、机场等;450亿元用于环境治理;300亿元用于信息化建设;其余150亿元将用于水电气热等生活设施的建设和改造。

这些钱也不是单单为了举办奥运会而花。

实际按照有关部门规划,无论是否举办奥运,这笔经费都最终要花在改善相关民生的项目上。

与此同时,北京奥运还加速了京津冀主要城市间的交通建设,形成了30分钟经济圈。

其中,我国首条时速超过350公里/小时的高速铁路——京津城际铁路就是在这期间建成的。

pic_7c3ffcac.png

▲北京奥运带动了京津冀主要城市进入1小时交通圈

从客观角度说,举办奥运会对承办国的经济确实会起到积极的推进作用。但是各国经济发展的趋势主要还是取决于经济的基本面,奥运会对经济体量较大的国家影响并不会十分明显。

中国自从北京奥运会之后经济增速一直保持在10%左右,当然,这是中国多年经济发展的成果,并不只是奥运会单一的促进作用。

04 举办奥运会的意义,绝非只是为了赚钱

一届奥运会不仅考验一个国家的综合管理和运营能力,难以预料的政治和疫情因素也会让承办国欲哭无泪。

比如2004年的雅典奥运会,原本预算是50亿美元。因对间接成本估计不足,加上当时恐怖事件频发,雅典方面不得不在安保等环节上大幅增加投入,使得实际支出达到100多亿美元。

而雅典赛事收入仅为20亿美元,加之许多比赛场馆赛后也没能充分利用,最终导致巨额亏损,还拖累了希腊经济。

2016年的巴西里约热内卢奥运会,不仅场馆、安全以及住宿问题屡被参赛选手诟病,甚至由于巴西政局动荡,包括巴西总统在内的多国政要都缺席了开幕式。

也是因为国内政治更迭,没人花心思在赛后的经济提振上,导致这次奥运会血亏了几十亿美元,被巴西人称为“巴西的灾难”。

pic_411656ae.png

▲2016年的巴西里约热内卢奥运会因为政局动荡以及国内诸多问题,亏损严重

而去年的东京奥运会,东京奥组委申奥期间靠着各种赞助还赚了2亿多美元,甚至为了节省预算,连奥运村的桌椅床铺都换为了纸质材料。

精打细算的日本东京奥组委本想在奥运会的时候再大赚一笔,谁想到新冠疫情袭来,奥运会不得不延期一年举办,疫情的反复使日本东京奥运会最终亏损达300亿美元。

转过头来看,此次北京冬奥会虽然因疫情影响无法正常售卖门票,少了部分收入,可实际的赞助和电视转播权等收入并没减少。

而且,我们也必须要明白,举办奥运会最终目的并非是为了赚钱,而是为了弘扬奥运精神,以“更快、更高、更强——更团结”的宗旨来传承人类文明的历史和文化。

pic_5728e1cd.png

▲奥运会的举办并不是为了赚钱,而是为了体现“更快、更高、更强——更团结”的奥林匹克格言

面对突如其来的新冠疫情,我们或许更加体会到人类的命运始终是一体的,全世界的人们面对共同的灾难,更需要表现出前所未有的团结力量和坚定信心。

事实上,顾拜旦创立奥运会的目的之一,就是希望通过体育运动增强民众的体质,与各种疾病作抗争。

也正如顾拜旦所说:对人生而言,重要的绝不是凯旋,而是战斗。

收起阅读 »

加班最狠的城市,北京只能排第三

当内卷的现象一直在持续,朝九晚五的行业越来越少,没有年轻人对“加班”是陌生的。虽然大家都在网上抵制996,但现实工作只能默默接受加班。除了白天效率低导致的加班,很大一部分原因是领导临时布置任务、白天频繁开会,或者领导没走不敢走、临时开会等等。即使这些客观情况很...
继续阅读 »

pic_7dcf8412.png

pic_f0d3544e.png

pic_33960cbc.png

pic_4997eb8e.png

pic_ccc8b0db.png

pic_43aa870e.png

pic_45072756.png

pic_1156bbff.png

pic_cbe17c29.png

pic_b162e3bd.png

pic_d7a63a01.png

pic_6aa08df7.png

pic_eb75cf78.png

pic_2711981c.png

pic_4633dcb1.png

pic_ea1dc4da.png

当内卷的现象一直在持续,朝九晚五的行业越来越少,没有年轻人对“加班”是陌生的。

虽然大家都在网上抵制996,但现实工作只能默默接受加班。除了白天效率低导致的加班,很大一部分原因是领导临时布置任务、白天频繁开会,或者领导没走不敢走、临时开会等等。

即使这些客观情况很难改变,我们也并不鼓励年轻人频繁跳槽(你会发现大部分公司都一样),但并非我们对加班这件事就应该“无动于衷”。

除了更高效、合理地安排每周、每天的工作,你还应该提高自己的“职场议价力”。当你在职场有了更强的实力和更出色的作品,你的底气也就会越足。对于一些莫须有的加班,你也会有更足的拒绝的勇气。

就像马东在“下班要不要回工作消息”这一期《奇葩说》的总结,“我们的人生最重要的,是照顾着苟且,别忘了诗和远方。我们最悲哀的,是既不容于眼前的苟且,而又忘了诗和远方。”

作者:梅雪 永旺 十一
来源:后浪研究所(ID:youth36kr)

收起阅读 »

系统监测员工聊天记录惹争议 ,业内:系统早就有了,成本最低1万/年

一款号称能监控员工跳槽倾向的“员工行为感知”系统引起关注。2月11日,网友@深圳张逸轩在社交平台上称,有监控系统能提前获知员工跳槽念头,并附上系统监控页面图。图源:微博截图根据其发布的截图显示,该系统能检测到员工访问求职网站次数、聊天关键词量、搜索关键词量以及...
继续阅读 »

一款号称能监控员工跳槽倾向的“员工行为感知”系统引起关注。

2月11日,网友@深圳张逸轩在社交平台上称,有监控系统能提前获知员工跳槽念头,并附上系统监控页面图。


图源:微博截图

根据其发布的截图显示,该系统能检测到员工访问求职网站次数、聊天关键词量、搜索关键词量以及简历投递次数等内容。

除此之外,员工通过公司内网的聊天记录、上网时长、访问应用的特征等上网行为都会被这套系统监控,并通过预定义的规则判定员工的工作状态。

“员工行为感知”系统曝光后,不少网友质疑“公司侵犯员工个人隐私”。

上海普世万联律师事务所高级合伙人陶书澄对时代周报记者表示,部分企业使用先进的、技术化的管理程序及方式,实行正当的管理行为,无可厚非。但随着科技的发展、信息技术运用的延伸,很容易出现涉及侵犯劳动者隐私的情形。

01 连聊天记录都被监控

2月12日,某家上市公司员工对时代周报记者表示,该公司使用了“员工行为感知”系统。“我是从公司公告中知道这事儿的,平时我们在公司,手机、电脑在连着WiFi的情况下,聊天都不敢讨论不利于公司的内容,担心被系统监控到”。

当天下午,时代周报记者以客户身份咨询了深圳一家主营上网行为管理的公司,其相关产品涉及“行为感知”系统。

据该公司销售经理介绍,“员工行为感知”系统并不算很稀有的产品,市面上已经出来7-8年了,“像一些互联网大厂都有自己独立的一套系统,一般运用于公司内网”。

“网站、贴吧、QQ聊天记录等,员工在电脑上面的全部上网行为都可以提取出关键词,做一个分析报表”,该经理向时代周报记者发来的《上网行为管理产品产品介绍书》显示,上网行为管理涉及网页、文件、邮件和聊天记录。

其中,网页记录管理是指全面记录内网用户向公网BBS、论坛、博客、空间等发表的帖子内容及附件;聊天记录管理则支持对即时通讯协议如QQ、飞信、旺旺等进行阻止登录,并对文字聊天、语音聊天及文件传输进行过滤与聊天内容记录。

此外,时代周报记者发现,该公司“员工行为感知”系统除了提供离职倾向分析服务外,还有专门的员工工作效率分析。

主要内容包括:针对员工在工作时段的浏览内容、访问应用的特征进行时长统计,根据预定义的规则判定员工的工作状态;针对工作效率低下的员工,可详细查看具体上网的网站和应用,以及时长,判定消极怠工有据可查。

02 成本价低至1万元/年

上述销售经理称,监控系统安装起来不难,只需要在主机房的路由器旁外接一个硬件,就可以管控到全公司的电脑,“一般情况下,我们会建议公司告知员工,否则员工难以察觉”。

那么,企业采购这样一套监控系统,需要花费多少?

该销售经理表示,其公司是直销的厂商,如果购买企业人数在50以下,基本按照成本价1万块/年来卖,之后每年付1千多块的维护费用。“主要是按企业人头区间计费,如果通过中间商销售,费用肯定比我们高。”

据媒体报道,有相关研发方称,“员工行为感知”系统均为按年付费,费用与网络带宽、终端数量有关。如果是两套系统配合使用,那这一费用会上升到十几万元,在配备更好的网络宽带、更多的终端数量时,费用甚至能达到几十万元。

据红星新闻报道,本次网传“行为感知系统”页面截图与A股上市公司深信服科技股份有限公司(以下简称“深信服”)2017年开发的一款软件“深信服行为感知系统BA”产品介绍页面一致。

时代周报记者查阅专利检索及分析系统发现,2018年3月,深信服公开申请一项名为“一种离职倾向分析方法、装置、设备及存储介质”的专利,于当年8月公开。这份专利的摘要显示:该方法包括获取员工终端中的上网行为数据;判断所述上网行为数据中是否存在与离职倾向相关的行为数据等。

03 律师:极易侵犯劳动者隐私

对于收集员工上网行为数据,企业是否涉及相关法律风险?前述销售经理表示,上网行为审计,是国家相关文件支持的,是对上网行为的预警,“并不会有相关法律风险”。

北京瀛和律师事务所律师谭威告诉时代周报记者,收集员工上网行为数据是否侵犯隐私,“不能一概而论,要具体情况具体分析”。

“如果公司恶意抓取员工信息,不仅监控员工工作时间的网络使用情况,还可能会对员工在非劳动时间内和工作场所外的互联网使用情况进行监视,那么公司就涉嫌侵犯员工隐私权了。”谭威称。

对于本次引发争议的事件,陶书澄认为,企业使用“行为感知、研判、识别”技术及管理方式,涉及的监管、分析范围不仅仅针对劳动者基于劳动关系提供的劳动行为本身,还涵盖了劳动者的聊天记录、浏览记录、邮件投递记录甚至邮件附件等。

“聊天记录、邮件附件等内容,不排除包含劳动者工作事项、工作时间之外的个人信息及记录,因此针对这些内容的监管及分析,极易侵犯劳动者的隐私及其他合法权益。”陶书澄提醒。

陶书澄认为,企业使用“员工行为感知”系统,应该内部事先告知、征得劳动者同意,并且只进行与提升工作效率相关的监管,对涉及劳动者个人隐私的信息、记录不做监管。

此外,对于获取的信息进行制度化、合法化的保密等措施,对于企业在技术运用、提升效率与保护劳动者隐私的平衡及风险规避,具有重要的运用。

作者:郭梓昊 石恩泽
来源:https://mp.weixin.qq.com/s/LFrhQZONSTKOXuTMLOxM1g

收起阅读 »

北京冬奥从开幕式就黑科技曝了!日本网友:人类半年里科技进步巨大

这一次的北京冬奥会,从开幕式就直接火了!不仅在国内各大平台迅速登上热榜,国外也被开幕式的诸多惊艳瞬间刷屏,连奥林匹克官方都开始求带货:而除了大型带货现场之外,最让国内外网友感到震撼的,就是其中展现出来的十足的科技感。最开始破冰而出的五环一出,其逼真的碎冰效果就...
继续阅读 »

这一次的北京冬奥会,从开幕式就直接火了!

不仅在国内各大平台迅速登上热榜,国外也被开幕式的诸多惊艳瞬间刷屏,连奥林匹克官方都开始求带货:


而除了大型带货现场之外,最让国内外网友感到震撼的,就是其中展现出来的十足的科技感。

最开始破冰而出的五环一出,其逼真的碎冰效果就已经让不少人惊呼:不会真是现场雕刻的吧?


8K屏倾斜而下的瀑布流水,让人仿佛能直观地感受那种黄河之水天上来的震撼:


△图源CCTV16直播

还有跟随演员的脚步变幻的“流沙”,也是由AI动作捕捉实时实现的灯光特效:


△图源CCTV5 直播

面对此情此景,有日本网友甚至拉出了自家半年前的夏季奥运会,语气复杂地表示:

仅仅半年时间,人类科技的发展竟如此惊人。


接下来,就让我们来依次看看开幕式里那些令人惊艳的黑科技。

冰雪五环:重3吨LED异形屏

首先是开场那晶莹透亮的冰雪五环,可以说是兼具科技感与美感:


△图源中国青年报

有网友这样称赞道:

希望是破土而出,未来是破冰而生。


奥运五环经过24道激光“雕刻”后,从冰立方中破冰而出并随着音乐冉冉升起,随后就在高空伫立整整了70-80分钟。

这究竟是怎么做到的?

事实上,整个冰雪五环就是个巨大的LED异形屏,长达20米,重3吨。

据《盛会》纪录片报道,当时面临三个问题。

一个是透亮。即便是在大风、大雨等极端天气下也能保证看得到。最终经过不断地选择和调试,确定屏幕选择2毫米PC板,透光率达到70%。

还有就是供电方式和体重。按照原计划,五环升起需要用两根挨着地的拖线来牵引。

这样可以确保即便是在大风情况下,不至于晃悠太厉害,而且人力也可以介入来保障。

但在张艺谋导演团队看来,这样用两根细线来拉,会显得不够“美”。

于是他们就改变计划——上下都不拉线,由威亚吊起。


△图源冬奥会纪录片《盛会》

这就要求团队改变供电方式以及减轻体重。

供电方式上,他们从外部供电改为原本用来应急的电池。经过航天技术团队反复测试,并完成耐低温的性能测试,确定了航天强化电源。

而在体重控制上,工作人员曾描述,已经精确抠到一个小螺丝钉算重量。

最后总体重量从3.5吨控制到了3吨。

而将其包裹的冰立方,也是整场发布会中少有的几个大装置之一,通体被LED屏包围。

雪花火炬:嵌有55万颗LED灯珠

随后就是代表团入场,每个国家和地区入场时都有一个雪花引导牌。


这个引导牌可不简单。除了形状上像中国结,还在材质上下了不少功夫。

据团队介绍,一开始他们考虑的是3D打印,但是透光率不行、做不到晶莹剔透,看起来也笨重。

最终采用雪花和字母部分用LED灯珠代替,其他部分细钢丝支撑,利用光的折射来隐藏钢丝。


△图源冬奥会纪录片《盛会》

另外,为了防止过程中出现停电导致字母缺失、雪花不亮,团队采用五路供电的方式,即便3、4根电线断了,也能正常发光。

随着中国代表队入场之后,引导牌随着志愿者的动作汇聚在一起。此时,巨大的虚拟雪花开始形成。

大雪花形状的主火炬台就此诞生。

据京东方官微介绍,这个主火炬台直径有14.89米,由96块小雪花形状和6块橄榄枝形状的LED双面屏组成。

上面嵌着超55万颗LED灯珠,每个LED灯珠都由驱动芯片的单一信道独立控制。

而在点火仪式上,巨型雪花屏由中心向四周辐射开来。


这当中保证屏快速变化、视频画面完美协同的技术,同样也是京东方同/异步兼容信发系统。

异步集控能在极短时间内将大规模视频内容快速下发,同步集控确保102块双面屏幕实现毫秒级响应。

此外,“主路+环路”备份的高冗余控制系统确保了火炬台播控系统的超高可靠性。

与此同时,还采用了LoRa(远距离无线电)低延迟控制系统搭配同步播放时间校正技术,进一步确保视频画面完美协同。

最强AI辅助:4个摄像头实现全场动捕

除了这些黑科技之外,冬奥会还完成了几个首次。

其中一个首次,就是世界上首次对超过600人集体实时AI动作捕捉。

在《雪花》的节目中,上百位小朋友挥舞着和平鸽灯,在场地中四处游荡合唱~

他们脚下的每一步,都化作一朵朵雪花。


△图源央视直播

整个过程包括数据采集、传输以及实时渲染,总共时间不超过0.1秒,达到实时互动的效果。

而且据技术团队介绍,仅需4部摄像机就能覆盖全场。

核心主要解决两个方面的问题。

一个是识别出舞台上的演员并定位他们所在的位置;另一个则是保证实时互动。

前者是由英特尔提供的3DAT三维运动员追踪技术,由摄像机信息采集、数据分析、艺术效果渲染三大子系统构成,其核心算法是实时人体检测和位置追踪技术。后者由北京电影学院提供实时渲染支持。

实际上在这个节目之前,四组滑冰选手划出奥运口号那一刻,就已经使用了该技术。

8K地面屏:42000多块LED模块

要实现整场节目的效果完美呈现,还少不了一个大功臣。

那就是8K地面屏。

据介绍,这是目前世界上最大的一块LED地屏,面积达到了10552平方米。

光LED模块就用了42000多块。背后的技术团队京东方采用了多个8K+级分辨率的画面融合技术,以及光学校正算法。

其中,光学校正算法可对每个显示画面进行像素点级的光学校正。

最终呈现出100000:1超高对比度,3840Hz超高刷新率,以及29900x15096超高分辨率的超高清绚丽画面。

△图源CCTV16直播

但除了要实现8K超高清视频播放视觉体验外,还要兼具舞台的耐磨、结构承重、防水防寒以及电气安全等特性。

而且更具挑战的是,传统的地屏也没有经历过冬季室外环境的考验。

负责地屏建设的航天科技集团,为了解决这一问题,给传统的LED屏幕穿上了一层特殊的“防护服”。

最终,每一平方米的承重量都超过500公斤以上。

“我负责精彩,航天负责成功”

这是开幕式的总设计张艺谋挂在嘴巴的一句话。

没错,开幕式上的这些震撼画面的背后,离不开航天科技集团的支持。

这一集团共负责了地面舞台、威亚、火炬、冰立方、指挥监控、通信系统、地面显示系统、冰瀑、指挥中心、央视视频播放及VR、视频渲染机房等11个大项目。

比如开场“雕刻”出五环的那块冰立方,就是基于航天一院15所的多级折叠结构,最终在1毫米的误差之下成功升起的。

航天一院12所则负责整个开幕式的通信支持,开发出了有线内通系统、无线通信系统和无线FM广播系统。

除了开幕式上肉眼可见的“科技感”,冬奥会背后也可谓是卧虎藏龙。

北京冬奥会赛事时长约1000小时,转播内容总生产量将达6000小时。

所有的内容都将通过阿里云以4K的超高清格式向全球转播,部分重要赛事还将以8K格式转播,这将使今年的北京冬奥会成为全球首个全程4K直播的奥林匹克竞赛。


还有来自百度智能云团队的AI手语主播,在经历了朱广权的魔鬼面试后,现已正式上岗,将在各类冰雪赛事中,为2780万听障人士提供24小时不间断的手语服务。


场地里随处可见的智能向导机器人,不仅能指路,还会在被外国选手打招呼时,无情提醒“带好你的口罩”:


……

再回想起总导演张艺谋在赛前剧透的那句:

这场比赛很有科技含量,但是我们不炫技。

可以说是非常的凡尔赛了。

参考链接:

[1]https://search.bilibili.com/all?keyword=%E7%9B%9B%E4%BC%9A&from_source=webtop_search&spm_id_from=333.1007
[2]https://mp.weixin.qq.com/s/ikiOjXueuIQyEJsmZftRrg
[3]https://mp.weixin.qq.com/s/DFsmy3k1bP3xfA1oHQPp8Q

来源丨量子位(ID:QbitAI)
杨净 博雯 发自 凹非寺
https://mp.weixin.qq.com/s/g6jIJjNrPTeYAjhlaAD9WA

收起阅读 »

竟还有如此沙雕的代码注释!我笑喷了

然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗?其实,不止这些,代码注释还有很多种玩法。毕竟,最会玩的还是你们程序员。01杀了个产品经理祭天大概全天下的程序员,都悄悄在代码里藏进了自己对产品举起的那把大刀,而且一不留神,刀尖就露出来了......傻逼的是...
继续阅读 »

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。

我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路......

首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。

eb60368d165e7c0ad07c142d5e68f118.png

然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗?

cdda766efc8f6b721df2dbadbb035334.png

这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是会被标记的。

3eaa5896f4823e431905129d7b368dfe.png

其实,不止这些,代码注释还有很多种玩法。毕竟,最会玩的还是你们程序员。

01杀了个产品经理祭天

大概全天下的程序员,都悄悄在代码里藏进了自己对产品举起的那把大刀,而且一不留神,刀尖就露出来了......

傻逼的是产品,不是我

7675eaee2e0529535ff9f7007a161736.png

到底要什么,我也很无奈啊.jpg

07df3abc6889ed3540a89edc9cf7dc15.png

▲昕霖是产品经理,李超是设计师

锅是产品的,不是我的

e71291474ca6a626ef68ce939853c473.png

02 诉求都在注释里了

出来工作,不就是为了赚钱吗?一不小心,真实的想法就在注释里流露。

不得不说,该站的程序员,真的很会搞事情。

9b8a6b9abc7dfd8fbbc77b2556b6fe34.png

“钱多活少办公室大,最好还能经常去国外旅游并能报销。”学生时代的Sergey Brin也把这个朴素的愿景写在了简历代码的注释里。原来,每个人的职业追求,都差不多。虽然后来的他成了Google联合创始人。

abad5e10652846e5099028c456b5b410.png

03 一不小心,就把实话说出来了

领导和老板们总有那么些不可言说的小心思,不过,程序员们你们也太耿直了吧?!

662ae0923616c10560ee29b602ed9a9c.png

老板的心机,都被你们暴露了。

/** 老板说多线程先不开,等客户提需求优化 */

当然,同事也并没有多么靠谱。

4c7d6a1eee7dd3c4a4695241520eeeb4.png

04 隔空喊话,“友好”切磋

在代码注释里,程序员们还能隔着时空通过comment喊话,进行友好地交流与切磋。

比如下面这两行注释,就是跨越两年的一段喊话。

9a1b69955f2245fe8c405a4f26c38537.png

不过,一不小心,画风可能就变了,忍不住就Diss了一下。

12142544328cdc03b955e2c55a9d0346.png

//somedev1 - 6/7/02 添加对登录屏幕的暂时追踪功能

// somedev2 - 5/22/07 暂时个屁

05 猿们,要学好英语啊

还有些注释里,包含着前辈程序员的语重心长:要学好英语啊!否则是会闹笑话的。

蓝翔毕业不要紧,重要的是缩写不能乱写:

9fa8df2dfac89ede6c574f9514204c3b.png

否则后果很严重:

# 不要再用 anal 做变量名了
# 你们想用 anal 这个缩写来表示analyze(分析),可是 anal 这个单词的意思是“肛门”
# 我特么在哪都能看到 anal 这个词!
# 请不要再这么做了!
# 你们要用就用analyze,或者xbvvzr,要不然用什么其他的都可以。就是别写成 anal_insert 或者 anal_check了
# insert是插入的意思,check是检查的意思,自行脑补吧
06 喜提彩蛋,招聘了解一下

如果你有一双善于发现的眼睛,也许你就能看到,那些藏在Console里的招聘广告。也许,你从此就走上了升职加薪的人生巅峰呢~

081570388341646338fc8ea7519e4327.png 01fb9cf60a28f7b159be14df1bb187e5.png

07离职员工的温馨提醒

不过,跳槽需谨慎。史上最良心注释,碰到这样的坑,就赶紧撤吧。

c86fc336a05324220db2ec2bc113485e.png

08 我的代码就像一首诗

最后,写代码就像写一首诗,就像唱一首歌。

9053ba8140ccecff0637aaebd6a0f6ce.png

这样写注释,代码无bug!

不过,话说回来,你们写代码,居然都写注释?



来源:顶级程序员

收起阅读 »

cURL开源作者怒怼“白嫖”企业:我不删库跑路,但答疑得付钱!

cURL 作者 Daniel Stenberg 在 1 月 21 日收到了一家美国《财富》500 强企业发来的电子邮件,要求 Stenberg 回答关于 cURL 是否受到 Log4Shell 漏洞影响以及如何处理等问题。随后,他将邮件内容截图发到了推特上,并...
继续阅读 »

cURL 作者 Daniel Stenberg 在 1 月 21 日收到了一家美国《财富》500 强企业发来的电子邮件,要求 Stenberg 回答关于 cURL 是否受到 Log4Shell 漏洞影响以及如何处理等问题。随后,他将邮件内容截图发到了推特上,并写道:

如果你是一家价值数十亿美元的公司还关注 Log4j,怎么不直接给那些你从未支付过任何费用的 OSS 作者发邮件,要求他们 24 小时内免费回复你这么多问题?

这件事迅速引发了网友们的关注。

把开源当成供应商

根据公开的邮件内容,这家《财富》500 强企业(暂且称为“NNNN”)将 Daniel 团队当成了产品供应商,并要求其 24 小时内免费提供关于 Log4j 漏洞的解决方案。下面是 NNNN 要求 Stenberg 回答的问题:

  1. 如果您在应用程序中使用了 Java 日志库,那么正在运行的是哪些 Log4j 版本?
  2. 贵公司是否发生过任何已确认的安全事件?
  3. 如果是,哪些应用程序、产品、服务和相关版本会受到影响?
  4. 哪些 NNNN 产品和服务受到影响?
  5. NNNN 的非公开或个人信息是否会受到影响?
  6. 如果是,请立即向 NNNN 提供详细信息。
  7. 什么时候完成修复?列出每个步骤,包括每个步骤的完成日期。
  8. NNNN 需要采取什么行动来完成此修复?

pic_16829db5.png

cURL(client URL 请求库的简称)是一个命令行接口,用于检索可通过计算机网络访问资源的内容。资源由 URL 指定,并且必须是软件支持的类型。cURL 程序实现了用户界面,基于用 C 语言开发的 libcurl 软件库。

Apache Log4j 日志库被 Java/J2EE 应用开发项目和基于 Java/J2EE 的现成软件解决方案的供应商大量使用。去年 12 月 9 日,Log4j 中被发现了一个漏洞,攻击者通过该漏洞能够进行远程代码执行,具体包括通过受影响的设备或应用程序访问整个网络、运行任何代码、访问受影响设备或应用程序上的所有数据、删除或加密文件等。可以说,cURL 开源代码与 Log4j 漏洞事件毫不相干。

虽然 Stenberg 从未参与过任何 Log4j 的开发工作,也没有任何使用了 Log4j 代码的版权产品,但 Stenberg 还是回复道,“你不是我们的客户,我们也不是你的客户。”并略带调侃地表示,只要双方签了商业合同就很乐意回答所有的问题。

“发邮件”只是例行公事?

“这封电子邮件显示出来的无知和无能程度令人难以置信。”Stenberg 在博文里写道,“很奇怪他们现在才发送关于 Log4j 的查询邮件,这似乎有点晚了。”

“这很可能只是一封发送给数十或数百个其他软件供应商 / 开发人员的模板电子邮件。如果确实来自像我过去工作过的那些大型企业,他们很可能会要求各种 IT 支持和开发团队编制一份企业使用的所有软件 / 工具的列表以及每个软件 / 工具的电子邮件地址。所以,很大可能只是有人按照项目计划中的要求向供应商发送电子邮件以延缓问题,并勾选他们的方框,说明已联系该供应商 / 开发人员。”有网友猜测道。

网友“Jack0r”介绍,其所在公司规定要有一个记载依赖项的 Excel 列表,列表里大多数是开源软件,还有一些封闭源代码和付费产品。开发人员要为每个依赖项设置一个联系人,因此与某软件相关的电子邮件可能会被放入列表中。但这个列表通常非常过时,也没有人专门更新。

“我曾经被要求填写一份 3 页关于 Oracle 数据库的详细资料表,但我们从未使用过 Oracle。有的软件运行在 Postgres 上,有的运行在 MySQL 上,有的运行在 NoSQL 上,但他们说,‘MySQL 是从 Oracle 来的,不是吗?’”网友现身说法。

而当出现严重安全漏洞时,负责 Excel 工作表的人员(非开发人员,也不知道这些依赖项如何使用,甚至不知道它们是什么)必须联系每个依赖项的所有者并向他们提出相同的问题。他们这样做不是为了做有用的事情,只是为了告诉他们的客户“我们正在竭尽全力修复这个漏洞”。大多数情况下,这些甚至要被写进合同中。

Reddit 上也有网友表示,Stenberg 收到的邮件来自对计算机或开源一无所知的律师助理。他只是有一长串的名字要联系,这样就可以为公司建立防御,防止因黑客攻击而被起诉。他甚至不在乎公司是否被黑,也不在乎会不会被起诉,他只关心自己的工作,那就是做好准备,以防万一。

因此,有人庆幸道,这就是为什么开源许可证非常重要的原因。开源许可证保护了作者的权益,同时确保了治理到位是企业的责任。

“只盖房子而不关心地基”

“我认为,这可能是开源金字塔的一个很好例证,上层用户根本不考虑底层设施的维护。只盖房子而不关心地基。”Stenberg 写道。

pic_cd5ffc21.png

开源金字塔的最底部是基础组件、操作系统和库,上面所有的东西都是在此基础上建立的。

越往上走,产品更多是面向终端用户,企业能赚更多的钱,同时产品迭代更快、语言要求层次更高,开放源码的份额也不断减少。在最上面,很多东西已经不是开源的了。反之,越往下走,产品使用寿命更长,语言要求不好,但 bug 的影响更大,修复需要的时间更长,因此维护比重构更重要。在最底部,几乎所有的东西都是开源的,每个组件都被无数的用户所依赖。

只要有可能在不为“公共基础设施”付出很多就能赚到很多钱,那么企业就没有什么动力去投资或支付某些东西的维护费用。但足够好的软件组件也会偶尔出现 bug,但只要这些漏洞没有真正威胁到赚钱的人,这种情况就不会改变。

Stenberg 认为,为依赖项的维护付费有助于降低未来在周末早上过早发出警报的风险。底层组件的开发者们的工作就是要让依赖其组件功能的用户相信,如果他们购买支持,就能更加放心,避免任何隐藏的陷阱。

根据 Linux 基金会和学术研究人员对 FOSS(免费和开源软件)贡献者进行的调查,开发者们花在安全问题上时间低于 3%,同时受访者并不希望增加花在安全上的时间。“安全事业是一项令人沮丧的苦差事”“安全是令人难以忍受的无聊程序障碍”。有足够的资金让工程师将时间花在代码维护上,或许可以降低严重故障的发生率。

与此同时,底层开发者与上层使用者之间的矛盾日益加深。1 月 11 日, Apache PLC4X 的创建者 Christofer Dutz 在 GitHub 发文称,由于得不到任何形式的回报,他将停止对 PLC4X 的企业用户提供免费的社区支持。若后续仍无企业愿意站出来资助项目,他将停止对 PLC4X 的维护和任何形式的支持。

有的组件可能被成千上万家公司用于一项很小而重要的任务,有的是与 Apache PLC4x 一样,可能只有一个少数组织形成的自然市场。但目前没有具体办法来衡量使用组件给企业带来的收益,更没有一个通用方案可以用来收集和分配企业对开源项目的捐款。

开源可持续性问题的解决已经迫在眉睫。

作者:褚杏娟
来源:https://mp.weixin.qq.com/s/G_47x6D8-KXozSy8XWGXbg

收起阅读 »

程序员连相7天亲:规划有多重要!

人家程序员相7个亲都有个规划,身为凡事皆是项目,凡事皆有规划的项目经理,你呢?有相亲对象吗? 相亲必备SOP流程,直接拿走不谢第一步: 明确问题第二步:了解现状在一年之内将T对我好感由1星提升为8星 第四步: 把握真因找对象也一样。下面这个四句口诀,请牢记:...
继续阅读 »

近日,北京一程序员小伙提前放假,避开了连上7天班,不料被家人安排了7场相亲,每天一场。他结合相亲对象性格、爱好等认真制作了规划,并准备了不同年货礼物,感叹好累…


人家程序员相7个亲都有个规划,身为凡事皆是项目,凡事皆有规划的项目经理,你呢?有相亲对象吗? 相亲必备SOP流程,直接拿走不谢

第一步: 明确问题

找到自己的爱人项目在立项之前,最重要的是,先明确做这个项目是为了要解决的问题是什么。要不然这个项目本身就是不成立的。

现在你要解决的问题就是:找对象。而立之年,恋爱结婚是你当前的一大任务!(注:那些本身就不想结婚的人不在我们讨论范围之内。)

第二步:了解现状

好感度等级

我们在做计划之前必须进行一些分析和定义,这样我们才能有针对性的制定计划首先我们对“潜在对象对你的好感度”做等级划分如下:
第三步:设定目标

在一年之内将T对我好感由1星提升为8星

第四步: 把握真因

了解自己和对方真实需求

项目经理在跟甲方对接需求的时候,一定要先了解对方的真实原因。

找对象也一样。下面这个四句口诀,请牢记:

了解自己的优势,扬长避短;

了解目标的界定,聚焦战略;

了解对方的全况,知己知彼;

了解对方的需求,对症下药;

第五步: 制定对策

了解一切的可能,制造机缘

首先,确定T的日常作息。这个可以直接问本人,如果认识T的朋友同学会更好。比如,有的姑娘每周五下班会去超市采购,你就可以也在同样的时间点去偶遇。

其次,了解对方的兴趣爱好。比如T喜欢打篮球,跟他朋友打听一下T经常去什么地方打篮球;如果T喜欢看书,那就去看看T喜欢什么类型的书,增加以后聊天的话题。

总之,就是寻找突破口,制造更多在一起的时间增进彼此了解。

举个例子:

第六步:实施对策

用逻辑树来进行归纳整理以便更好的实施


:以上只是作为举例,具体实践请根据你们交往发展情况而定。

第七步: 评价结果和过程

关注实施方案,随时修正

在采取行动的过程中,要保持警惕,用思维导图分析不良效果的原因,时刻注意对方的变化,采取相应对策化解,修正自己的行为。

使用思维导图进行原因分析:

针对问题列出措施改进方法:

第八步: 评估方法并标准化

了解力量的消长,成功或退出

理性的三个关键词:

  • 敏感:上帝存在于细节之中,如果是你要怎么把握对方的话。

  • 关爱:爱胜在付出,每个人都在为爱播种,是否结果看你照顾多少。

  • 尊严:人最后的防线就是自尊,不要为了恋爱却失去了尊严。

作者:圈圈
来源:https://mp.weixin.qq.com/s/GNPVc5qgOpMgnAeeQlAwrw

收起阅读 »

李纳斯是个怎样的人?

李纳斯,更常用的翻译是林纳斯,下文保留作者的写法。我对生命的意义有种理论。我们可以在第一章里对人们解释生命的意义何在。这样可以吸引住他们。一旦他们被吸引住,并且付钱买了书,剩下的章节里我们就可以胡扯了。虽然李纳斯戏谑的称自己是在胡扯,但是如果你看到后面,了解李...
继续阅读 »

李纳斯,更常用的翻译是林纳斯,下文保留作者的写法。

我对生命的意义有种理论。我们可以在第一章里对人们解释生命的意义何在。这样可以吸引住他们。一旦他们被吸引住,并且付钱买了书,剩下的章节里我们就可以胡扯了

虽然李纳斯戏谑的称自己是在胡扯,但是如果你看到后面,了解李纳斯的为人,了解李纳斯的生活,了解李纳斯的故事之后,再来看这句话,你心里会嘀咕:这是在胡扯吗?其实还好啦。

也许真正的大佬才能懂得生命的意义,当李纳斯说"有三件事具有生命的意义。它们是你生活当中所有事情的动机,包括你所做的任何事情和一个生命体该做的所有事情。第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事情都是按这个顺序发展的。娱乐之后便一无所有。因此从某种意义上说,这意味着生活的意义就是要达到第三个阶段。你一旦达到了第三个阶段,就算成功了。但首先要越过前两个阶段。"

反观我们生活的世界,这三个道理却具有普适性意义。也许马斯洛需求理论根本不存在,该理论提出最底层就是人的生存需求,上一层就是社会秩序、安全需求,再往上什么归属于爱的需求、尊重需求、求知需求、审美需求、自我实现等等都是可以归为娱乐。


吃得饱穿得暖是人的天性,而爱玩娱乐也是人的天性。但是娱乐这个范围非常却是广泛的,李纳斯抱着 CommodoreVIC-20 在芬兰严冬中的屋内编程玩游戏是一种娱乐;我们在北方的地暖屋里躺在床上刷着短视频也是一种娱乐,只不过后者无法创造出现实价值来罢了。

李纳斯是很简单的。他的妈妈对她的一些朋友们说,"我是个非常好养的孩子。她只要把我放在一个黑咕隆咚的储藏柜里,再配上一台电脑,偶尔朝里扔一些意大利面条,我就会感到格外高兴了。她的话不无道理。"其实我们也是很简单的,当你在玩游戏上瘾的时候,我相信给你一根网线,一瓶水,一碗面条,一个瓶子(用来装什么大家可以猜测)你也能熬两天,不要问我怎么知道的,因为我这么熬过,只不过我有洗手间。。。。。。

我写文章已经两年多了,这段时间以来我确实也有许多次能体会到李纳斯的那种快乐,单纯地快乐,喜欢写作,发自内心的喜欢,对象找我去逛街我觉得麻烦,领导让我开发新功能我觉得麻烦,甚至我家狗子拉的屎我都不愿意收。。。。。。

但是我非常佩服的就是李纳斯在暑假只做两件事情,第一件事是什么都没做。第二件事是读完了719页的《操作系统:设计和执行》。放在现如今的学生时代,我想恐怕鲜有人能够做到,反正我在上学时候的暑假,要么就是写作业,要么就是玩游戏。

李纳斯编写的 Linux 操作系统确实花费了他大量的时间和精力,"编程――睡觉――编程――睡觉――编程――吃饭(饼干)――编程――睡觉――编程――洗澡(冲冲了事)――编程。" 阿基米德说过给我一根杠杆我就能撬动地球,我却想说,给我六个月,我能把游戏玩明白了。

不管李纳斯编写出来的 Linux 系统多么耀眼和辉煌,他却从不在家人面前过多谈论自己,他只是想在家人面前表现出:"这就是一个喜欢捣鼓电脑的老实孩子"。

毫不夸张的说,开源创造了整个软件行业,无私分享的精神真是人类进步的阶梯和推动力,这也是为什么开源精神如此崇高的原因,即站在巨人的肩膀上看世界。

最让我觉得李纳斯特别尊敬的一点就是他对版权的看法:如果一个人每月只能挣五十美元,他可能会为一个软件花费二百五十美元吗?如果花一点钱买非法拷贝软件,而把五个月的工资用于吃饱肚子,我一点不觉得他不道德。这种侵权是道义上可以接受的。去追捕这种“侵权者”是不道德的,更不要说简直就是愚蠢的。科技向善,科技最终的目标就是让我们的生活更加方便和便利,而不是驱逐一些人。

我觉得那些能在各种领域构建一个小型世界的人真的很酷,比如海贼王这部作品就构筑了一个海上世界,世界格局和世界秩序相辅相成,同样的,李纳斯也构建了一个世界,这个世界是属于操作系统的,他自己制定了操作系统的运行规则,他决定了进程和线程的生死,他决定了内存的分配规则,他构建了一切应用软件的基础规则。

在这本自传中,让我很能体会到李纳斯一个非常显著的特点就是:当懒人,编程是一项创造性的工作,而 Linux的发明从来不是靠牺牲宝贵的睡眠时间换来的。事实上相比创造 Linux,他更喜欢睡觉。

也许程序员都是直率的,李纳斯也是一样,因为直率的人善于解决问题,这类人遇到问题时想的不是拐弯抹角想方设法逃避问题,而是直接上手解决,这样才会节省出来时间做更多的事儿。但是直率的人怼人也非常直率,我相信大家都遇到过被上司无情痛批或是在 Code View 时代码被无情的 diss。李纳斯在回复安德鲁塔南鲍姆(MINIX 的作者)的质疑时也显现出了直率的一面,只不过他怼人的语气相较于国内来说,还是温柔太多了。

李纳斯和塔芙育有三个孩子,塔芙最开始是李纳斯所讲的《计算机科学入门》这门课程的学生,后来李纳斯在给学生布置作业时说到:今天的家庭作业是给我发一个邮件(这在通讯如此发达的现代看起来有点傻),其他人都在问候,只有塔芙在请李纳斯出去约会。只有塔芙让李纳斯将近两周都没有使用计算机。

Linux 被创建出来,轰动了全世界,但是作为 Linux 的作者,却奉行了开源的思想,我想这就是为什么李纳斯在程序员眼里被看做是神一样的男人,这种看似离经叛道的行为,这种和资本主义金钱主义背道而驰的行为,在大多数人看起来都是不可理喻的,但是也许只有他自己知道,Just For Fun。

还有一句话我觉得很有意思,就是他在和盖茨的比较中说的话:"在这场操作系统之争中,一方是庞大而邪恶的微软公司与刻毒、贪婪却他妈富得流油的比尔盖茨,另一方则是以无私的爱心致力于自由软件的谦逊的民间英雄李纳斯·托沃兹。" 当 Linux 有足够和微软抗衡的资本后:"于是,有些加盟微软的朋友告诉我,他们曾见到我的头像被钉在了微软公司里的飞镖靶心上,我对此唯一的评论是:我的大鼻子实在太好瞄准了。"

作者:cxuan
来源:https://mp.weixin.qq.com/s/wyUUyf9cEKgr7s51EQYF9w

收起阅读 »

中美程序员不完全对比

我是在美国工作过两年,回国经历了逆文化冲击,现在勉强算是适应了国内互联网公司的节奏。随便聊聊,没有崇洋媚外的意图,只是刚好最近被剥削得很不爽,趁机吐槽一下。1.年龄美国公司:同事里 20 多到 70 多岁的都有,众数是三四十的中年人,大部分工作目标都是为了早日...
继续阅读 »


我是在美国工作过两年,回国经历了逆文化冲击,现在勉强算是适应了国内互联网公司的节奏。随便聊聊,没有崇洋媚外的意图,只是刚好最近被剥削得很不爽,趁机吐槽一下。

1.年龄

美国公司:

  • 同事里 20 多到 70 多岁的都有,众数是三四十的中年人,大部分工作目标都是为了早日退休,攒够钱就随时办退休 party。也有些纯粹因为热爱工作、热爱写代码选择不退休的。
  • 我们组的核心成员之一,是位 72 岁的老头,他每天 4 点多起床到公司写一会儿代码,等天全亮就戴上头盔去骑山地车锻炼,9 点多回公司继续工作。对这老头印象深刻,是因为他逻辑清晰、思路锐利,他是 code review 小组的成员,经常在邮件里破口大骂其他人写的代码写得有多烂,被投诉,只好在邮件里道歉,过几天继续骂,在我工作的两年里一直循环。
  • 我的另一位资深同事,是位 68 岁的架构师,热爱工作,每天都乐呵呵的,对我这种新毕业生也很友好,有人问他什么时候退休,他回答说他死的那天。

我国公司:

  • 回国之后我现在工作的公司,员工平均年龄在 30 岁以下。年纪大的都去哪里了呢?极少数在管理层。

2. 加班

美国公司:

  • 从没加过班,晚上发版除外(会默认第二天调休)。
  • 经常正开着会,时间到了 5 点半,产品打断领导说到点了他要回去喂狗(他是一个 50 岁的不婚族,养了一院子狗),然后就散会下班了。
  • 加班需要申请,有次我申请工作日晚上加班,没批准只好回家了。因为加班费会比较高,需要从项目预算走,领导控制预算不给批。
  • 偶尔周末去办公室取东西,几层停车场只有两三辆车。

我国公司:

  • 996 是常事了。
  • 印象比较深的是我司之前有个清华本科+美国硕士的小伙子,每天 7 点半准时下班,结果试用期被辞退了,原因是工作态度不积极,据说后来还和公司打了官司,不知输赢。

3. 代码质量

美国公司:

  • 项目在前期花的时间是最多的,比如说需求分析、架构讨论、技术讨论。
  • 写代码会考虑得比较长远,比较有时间去考虑开发原则、维护成本,领导也会乐意去安排版本来解决技术债务。

我国公司:

  • 国内互联网节奏会要快得多,讲究小步快跑,就几天的开发时间,不管三七二十一先上线再说,刚开始我都惊呆了。

4.工作氛围

美国公司:

  • 老美的公司确实比较尊重员工,在员工关怀上做得比较好。我可以感受到,和领导职位不同,但是我们人格是平等的,彼此尊重。
  • 记得有一次发版前几天,组里程序员说他压力太大,领导给他假期让他放松调整,版本被延迟上线。
  • 美国有 family first 的文化。有个老印同事,家里老人身体不好,公司同意他回印度工作照顾家人,远程跨国工作。经常有同事因为要看孩子比赛请假。领导自己也会偶尔周五请假,因为要去和女儿一起参加学校的公益活动。
  • 对差异性接受度也比较高。同事有变性人、残疾人,大家相处得都很好。

我国公司:

  • 绝大部分领导高高在上(我遇到的),官威很大。请个假,和求他借钱似的,组长还提醒我让我请假原因不要写“旅游”不然可能会不给批假。
  • 记得有个需求,大家都认为不合理没必要,我去找领导沟通,刚提了一句还没展开,领导直接甩脸色“你是领导还是我是领导”。
  • 有个同事因为耿直,和领导不和,被各种排挤冷暴力,逼他自己辞职拒给赔偿金。
  • 开个线上事故复盘会,做 root cause 分析,就像要把人钉在耻辱柱一样,我不理解这对解决问题有什么帮助。

5.工作之外

美国公司:

  • 很注重对健康的投资。至少 1/3 同事有每天早上去健身房的习惯。公司很多球场,晚上下班能看到很多同事在楼下踢足球、打排球。健身不只是为了锻炼,还是很多同事的爱好。看起来平平无奇的程序员,可能都是隐藏的运动高手,多年马拉松选手、山地车骑手遍地都是,还有不少极限运动爱好者。
  • 喜欢看牙医。喜欢看各种体育比赛。喜欢旅游,基本上每年至少一次家庭旅游,游轮是热门项目。
  • 一部分同事热衷慈善回馈社会,小到捐血捐钱做公益,大到组织慈善拍卖会。
  • 据我观察都没啥夜生活,下了班就开车直接回家两点一线,偶尔聚餐也是和同事朋友。可能是我自己的感觉,人和人之间的链接比较淡薄,所以华人码农也会经常吐槽空虚无聊。
  • 已婚同事的其他时间和我国的一样,花在养孩子和投资上。

我国公司:

  • 办公室的好多同事,不敢看体检报告。都是 20 多岁的年轻人,检查出来啥的都有,胆囊炎、结石、痛风。。。前几天还有一个要好的同事请假去做痔疮手术的(捂脸),据他说是因为久坐,加班经常吃小龙虾。
  • 相比之下离职率高太多了,每个月都有几个认识的同事离职,跳槽的、转行的、回老家躺平的。
  • 除了领导们,几乎每个人看起来都很焦虑,都想着退路,想着搞点什么副业。
··········  END  ··············

原文链接:https://www.zhihu.com/question/497793332/answer/2216734220
收起阅读 »

35岁奥地利最帅总理辞职,超360万年薪加入硅谷当「码农」

1、 除了北妈,说实话你们🍋不?有意思的是,这位世界上最年轻的政付首脑,虽曾就读于在维也纳大学的法学院,但中途就辍学了。又是一个辍学的学渣逆袭的故事,为什么外国人都喜欢辍学啊,我气啊。在过去的四年里,这位35岁的年轻人一直是奥地利政治的主人。但一桩腐...
继续阅读 »
1、


先看个图,客观的说,这人帅不帅?气质可以不?

此人就是刚在年底辞职的奥地利总理。

此人名叫Sebastian Kurz,他是世界最年轻的郭嘉总理,27岁就任外交部长,31岁当选总理。

35岁辞职总理职务,转行去硅谷科技公司做打工人!

刺激不?励志不?

现在互联网这么卷了吗?35岁奥地利总理辞职转行去硅谷当码农?我们看看咋回事。

但你不得不服,有些人一出生就站在罗马城外了。

Kurz 在2021年12月辞职总理,但不到一个月的时间,他就在美国硅谷找到了薪酬最高的经理职位。
 
据估计,Kurz的年薪将超过50万欧元(约360万元),远远高于他担任总理时31.2万欧元(约226万元)的收入。不过总理200多万年薪,也算是很高了啊。

果然,资本主义太邪恶了,连人民公仆都给这么高收入,腐蚀人啊。

在政府工作了十年的Kurz,依然是世界上最年轻的外交部长和最年轻的总理保持者。

除了北妈,说实话你们🍋不?



有意思的是,这位世界上最年轻的政付首脑,虽曾就读于在维也纳大学的法学院,但中途就辍学了。

又是一个辍学的学渣逆袭的故事,为什么外国人都喜欢辍学啊,我气啊。

在过去的四年里,这位35岁的年轻人一直是奥地利政治的主人。但一桩腐败丑闻,让他的第二个总理职位戛然而止。
 
警方突袭了维也纳的各个部门,揭开了奥地利国家检察官对政府核心部门腐败的调查。
 
虽然没有提出正式指控,但调查的一部分正是关于Kurz在2013年至2017年担任外交部长期间是否使用国家资金并开具假发票以购买有利的媒体报道。
 
12月2日,星期四,Sebastian Kurz 在新闻发布会上,他宣布自己将辞去所有职务。
 
这个决定对他来说很不容易,但尽管如此,他说「我并不感到任何忧郁。因为我非常感谢在过去十年中我所经历的一切」。

瞧瞧,政客真是说话的艺术家。

2、
随后,在不到一个月的时间里,他转头去找了老朋友,一位在美国硅谷的大资本家 Thiel资本的创始人Peter Thiel。

就是那个和如今的世界首富 马斯克年轻时候一起创造 第一个移动支付paypal的家伙。他们俩也是靠paypal捞到了第一桶金。

如今 Thiel 身家91.3亿美元,排名世界富豪279名。

对于Kurz来说,算是老熟人了,他在当总理期间就市场去硅谷访问考察,对科技有浓烈兴趣。 然后结交了各种硅谷CEO和各种人脉,这是要提前布局啊这是。


看来这帅哥一直都有个互联网梦,也难怪从政坛辞职,立马加入硅谷公司。

目前前总理 Kurz 加入 Thiel的资本公司,这是一家风险对冲基金资本公司,严格意义来说算是一家科技金融公司。

用技术来指导商业投资理财和商业战略等业务。

而Kurz的职位严格意义来说 是战略执行官,负责欧洲奥地利地缘政治和欧洲战略指导判断,并不是具体写业务的码农。

看来这位最年轻的总理帅哥,还可能干老本行。而且收入更高,身份更自由,完美实现了,破圈副业,妥妥的人生赢家。

说实话,我已经吃了一筐柠檬了。酸🍋🍋

3、
那么给我们的启示是什么呢?我认为有三点。

一是无论身份职位差异多么大,未来都是不可确定的。你贵为总理也要未雨绸缪,说下台就下台了,更别说我们普通小人物。

二是人脉和保持好奇心的重要性,我们要时常维护职场关系,甚至利用职场和工作便利 要懂得权衡利弊为自己拓展相关人脉,日后你绝对用得上。

刘邦之所以草根得天下,我觉得他比那朱元璋还难,他利用的很重要的一点是什么?很大程度就是人脉的力量。

而如果日后,个人创业,很大程度也是整合资源,利用人脉。

因为web2.0时代,技术已经完全不是壁垒了,资源和生产资料才是。而web3.0又要来了呢。

而人脉资源属于生产资料的一种重要资料。

35岁其实大家不用害怕,每年互联网圈都会裁人,而在5年前,都在传说30岁码农就找不到工作了,如今变成了35岁危机。

我想过不了几年,40岁的码农还依然是很多的。因为从业者其实是在减少的,总人口趋势也不容乐观。

每年都在谈 中年危机,但真正的危机并不是大环境带给你的危机, 而是你自己在年轻时候意识不到你也会老。

你没有人无远虑必有近忧的觉悟。

大家主张躺平,而你真的信了!躺不了几年,你就真的危机了。

三是,成年人追求利益和money没有错。错的是你怎么追求,君子爱财取之有道,才是正常的社会想象。

今天北妈又在贩卖焦虑?但焦虑不是北妈写出来你才焦虑,而是它一直在你内心,而你不愿意面对它罢了,一起成长吧。

作者:北妈
来源:https://mp.weixin.qq.com/s/kHyPm1ww8msBGn-TMtn58w
收起阅读 »

字节面:什么是伪共享?

CPU 如何读写数据的?先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下: 可以看到,一个 CPU 里通常会有多个 CPU 核心,比如上图中的 1 号和 2 号 CPU 核心,并且...
继续阅读 »

CPU 如何读写数据的?

先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下:


pic_dab4651e.png

可以看到,一个 CPU 里通常会有多个 CPU 核心,比如上图中的 1 号和 2 号 CPU 核心,并且每个 CPU 核心都有自己的 L1 Cache 和 L2 Cache,而 L1 Cache 通常分为 dCache(数据缓存) 和 iCache(指令缓存),L3 Cache 则是多个核心共享的,这就是 CPU 典型的缓存层次。


上面提到的都是 CPU 内部的 Cache,放眼外部的话,还会有内存和硬盘,这些存储设备共同构成了金字塔存储层次。如下图所示:


pic_f0854715.png

从上图也可以看到,从上往下,存储设备的容量会越大,而访问速度会越慢。至于每个存储设备的访问延时,你可以看下图的表格:


pic_6b362bd7.png

你可以看到, CPU 访问 L1 Cache 速度比访问内存快 100 倍,这就是为什么 CPU 里会有 L1~L3 Cache 的原因,目的就是把 Cache 作为 CPU 与内存之间的缓存层,以减少对内存的访问频率。


CPU 从内存中读取数据到 Cache 的时候,并不是一个字节一个字节读取,而是一块一块的方式来读取数据的,这一块一块的数据被称为 CPU Line(缓存行),所以 CPU Line 是 CPU 从内存读取数据到 Cache 的单位。


至于 CPU Line 大小,在 Linux 系统可以用下面的方式查看到,你可以看我服务器的 L1 Cache Line 大小是 64 字节,也就意味着 L1 Cache 一次载入数据的大小是 64 字节。


pic_4c8081a7.png

那么对数组的加载, CPU 就会加载数组里面连续的多个数据到 Cache 里,因此我们应该按照物理内存地址分布的顺序去访问元素,这样访问数组元素的时候,Cache 命中率就会很高,于是就能减少从内存读取数据的频率, 从而可提高程序的性能。


但是,在我们不使用数组,而是使用单独的变量的时候,则会有 Cache 伪共享的问题,Cache 伪共享问题上是一个性能杀手,我们应该要规避它。


接下来,就来看看 Cache 伪共享是什么?又如何避免这个问题?


现在假设有一个双核心的 CPU,这两个 CPU 核心并行运行着两个不同的线程,它们同时从内存中读取两个不同的数据,分别是类型为 long 的变量 A 和 B,这个两个数据的地址在物理内存上是连续的,如果 Cahce Line 的大小是 64 字节,并且变量 A 在 Cahce Line 的开头位置,那么这两个数据是位于同一个 Cache Line 中,又因为 CPU Line 是 CPU 从内存读取数据到 Cache 的单位,所以这两个数据会被同时读入到了两个 CPU 核心中各自 Cache 中。


pic_54538b4a.png

我们来思考一个问题,如果这两个不同核心的线程分别修改不同的数据,比如 1 号 CPU 核心的线程只修改了 变量 A,或 2 号 CPU 核心的线程的线程只修改了变量 B,会发生什么呢?


分析伪共享的问题

现在我们结合保证多核缓存一致的 MESI 协议,来说明这一整个的过程,如果你还不知道 MESI 协议,你可以看我这篇文章「[10 张图打开 CPU 缓存一致性的大门][10 _ CPU]」。


①. 最开始变量 A 和 B 都还不在 Cache 里面,假设 1 号核心绑定了线程 A,2 号核心绑定了线程 B,线程 A 只会读写变量 A,线程 B 只会读写变量 B。


pic_20cb02eb.png

②. 1 号核心读取变量 A,由于 CPU 从内存读取数据到 Cache 的单位是 Cache Line,也正好变量 A 和 变量 B 的数据归属于同一个 Cache Line,所以 A 和 B 的数据都会被加载到 Cache,并将此 Cache Line 标记为「独占」状态。


pic_31e05dfd.png

③. 接着,2 号核心开始从内存里读取变量 B,同样的也是读取 Cache Line 大小的数据到 Cache 中,此 Cache Line 中的数据也包含了变量 A 和 变量 B,此时 1 号和 2 号核心的 Cache Line 状态变为「共享」状态。


pic_611082d7.png

④. 1 号核心需要修改变量 A,发现此 Cache Line 的状态是「共享」状态,所以先需要通过总线发送消息给 2 号核心,通知 2 号核心把 Cache 中对应的 Cache Line 标记为「已失效」状态,然后 1 号核心对应的 Cache Line 状态变成「已修改」状态,并且修改变量 A。


pic_c6c22e2c.png

⑤. 之后,2 号核心需要修改变量 B,此时 2 号核心的 Cache 中对应的 Cache Line 是已失效状态,另外由于 1 号核心的 Cache 也有此相同的数据,且状态为「已修改」状态,所以要先把 1 号核心的 Cache 对应的 Cache Line 写回到内存,然后 2 号核心再从内存读取 Cache Line 大小的数据到 Cache 中,最后把变量 B 修改到 2 号核心的 Cache 中,并将状态标记为「已修改」状态。


pic_33e76a58.png

所以,可以发现如果 1 号和 2 号 CPU 核心这样持续交替的分别修改变量 A 和 B,就会重复 ④ 和 ⑤ 这两个步骤,Cache 并没有起到缓存的效果,虽然变量 A 和 B 之间其实并没有任何的关系,但是因为同时归属于一个 Cache Line ,这个 Cache Line 中的任意数据被修改后,都会相互影响,从而出现 ④ 和 ⑤ 这两个步骤。


因此,这种因为多个线程同时读写同一个 Cache Line 的不同变量时,而导致 CPU Cache 失效的现象称为伪共享(False Sharing)。


避免伪共享的方法

因此,对于多个线程共享的热点数据,即经常会修改的数据,应该避免这些数据刚好在同一个 Cache Line 中,否则就会出现为伪共享的问题。


接下来,看看在实际项目中是用什么方式来避免伪共享的问题的。


在 Linux 内核中存在 cacheline_aligned_in_smp 宏定义,是用于解决伪共享的问题。


pic_2ad0ad52.png

从上面的宏定义,我们可以看到:



  • 如果在多核(MP)系统里,该宏定义是 cacheline_aligned,也就是 Cache Line 的大小;
  • 而如果在单核系统里,该宏定义是空的;

因此,针对在同一个 Cache Line 中的共享的数据,如果在多核之间竞争比较严重,为了防止伪共享现象的发生,可以采用上面的宏定义使得变量在 Cache Line 里是对齐的。


举个例子,有下面这个结构体:


pic_46aebc19.png

结构体里的两个成员变量 a 和 b 在物理内存地址上是连续的,于是它们可能会位于同一个 Cache Line 中,如下图:


pic_56ff524f.png

所以,为了防止前面提到的 Cache 伪共享问题,我们可以使用上面介绍的宏定义,将 b 的地址设置为 Cache Line 对齐地址,如下:


pic_1eeffcc3.png

这样 a 和 b 变量就不会在同一个 Cache Line 中了,如下图:


pic_e35118bc.png

所以,避免 Cache 伪共享实际上是用空间换时间的思想,浪费一部分 Cache 空间,从而换来性能的提升。


我们再来看一个应用层面的规避方案,有一个 Java 并发框架 Disruptor 使用「字节填充 + 继承」的方式,来避免伪共享的问题。


Disruptor 中有一个 RingBuffer 类会经常被多个线程使用,代码如下:


pic_ce4a0542.png

你可能会觉得 RingBufferPad 类里 7 个 long 类型的名字很奇怪,但事实上,它们虽然看起来毫无作用,但却对性能的提升起到了至关重要的作用。


我们都知道,CPU Cache 从内存读取数据的单位是 CPU Line,一般 64 位 CPU 的 CPU Line 的大小是 64 个字节,一个 long 类型的数据是 8 个字节,所以 CPU 一下会加载 8 个 long 类型的数据。


根据 JVM 对象继承关系中父类成员和子类成员,内存地址是连续排列布局的,因此 RingBufferPad 中的 7 个 long 类型数据作为 Cache Line 前置填充,而 RingBuffer 中的 7 个 long 类型数据则作为 Cache Line 后置填充,这 14 个 long 变量没有任何实际用途,更不会对它们进行读写操作。


pic_4fc4c5eb.png

另外,RingBufferFelds 里面定义的这些变量都是 final 修饰的,意味着第一次加载之后不会再修改, 又由于「前后」各填充了 7 个不会被读写的 long 类型变量,所以无论怎么加载 Cache Line,这整个 Cache Line 里都没有会发生更新操作的数据,于是只要数据被频繁地读取访问,就自然没有数据被换出 Cache 的可能,也因此不会产生伪共享的问题。


作者:小林
来源:https://mp.weixin.qq.com/s/zeGxBx77TFGtVeMRBVR-Lg

收起阅读 »

2021年互联网公司“死亡”名单,看看有没有你的老东家

几年前我就知道IT桔子一直在统计互联网公司的死亡清单,没想到他们一直坚持在做,目前统计了2014年至2022年,随时更新,上榜公司表示:简直是社死现场!找ofo小黄车 、学霸君、环球易购、叮咚快买、菜鸟团、巨人教育、买卖宝、DaDa英语等因为是公墓嘛,所有还有...
继续阅读 »

几年前我就知道IT桔子一直在统计互联网公司的死亡清单,没想到他们一直坚持在做,目前统计了2014年至2022年,随时更新,上榜公司表示:简直是社死现场!

这里面包括也很多的知名公司,如:

找ofo小黄车 、学霸君、环球易购、叮咚快买、菜鸟团、巨人教育、买卖宝、DaDa英语等

因为是公墓嘛,所有还有一个让人哭笑不得的功能,就是“上香“,你要不要为你已经倒闭的前公司上个香呢?

在这份名单中,清晰的记录了公司名称,存活时长、倒闭时长、所属行业、公司地点、成立时间、获投状态,我们根据行业来看看,2021年总计倒闭公司821家,都是什么情况。

2021年《教育类》公司死亡清单

2021年《金融类》公司死亡清单

2021年《游戏类》公司死亡清单

2021年《区块链类》公司死亡清单

总计分为23个大类,详细的可以去IT桔子的网站查看。

针对这些行业公司的死亡原因,该网站也进行了统计。

如:手机游戏类公司 公司死亡795家,死亡原因70%都是因为资金问题。

如:交友社区类公司 公司死亡464家,死亡原因40%都是市场定位有问题,30%的原因是产品问题,也有10%的原因是资金问题。

针对除了行业的大类分析,每个公司的死亡原因也进行了详细说明。

如买卖宝,存活时间有14年2个月,曾经获得过红杉资本、腾讯、京东等的融资。估值97.5亿元。

死亡原因:竞争不足。

如杰睿教育,存活时间有10年9个月,曾经获得过赛领资本、千帆资本、真格基金等的融资。估值26.6亿元。

死亡原因:政策监管。

数据说明

死亡公司数据库网页声明:

一、本网页基于IT桔子投资数据库而打造的“死亡公司数据库”,致力于展现中国新经济领域近些年倒闭的创新创业公司;
二、“死亡公司数据库”的公司关闭时间是依据公开媒体报道及部分估算,可能会存在些许误差,但我们着力确保更高的可靠性;
三、IT桔子对所收录公司运营状况的判定来源如下:
1、公开媒体报道公司关闭、破产清算的;
2、公司自身在微信、微博等渠道宣布关闭、破产清算的;
3、公司明显经营异常:公司被注销;公司产品比如APP或微信持续6个月及以上没更新;公司因为监管被抓、无法经营……交叉比对后确认没有持续经营。

这几天也看了不少博主对2022年的进行了预测,但是,我们始终要相信:世界上唯一不变的是一直在变。特别是作为一名在互联网觅食的程序员,一定要提升自己的技术和管理能力,投资自己是最正确的选择。

对于那些想创业的朋友,一定要三思而后行,别一时想不开就出来创业!

守住自己的钱袋子,别乱投资!猥琐发育,只要还有本金,没下赌桌,就还有翻身的机会,不要梭哈!

2022年,我们一起加油!

作者:机器人的秘密探索
来源:https://www.sohu.com/a/515405099_121124372

收起阅读 »

腾讯三面:40亿个QQ号码如何去重?

大家好,我是道哥。今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G. 这个题目的意思应该很清楚了,比较直白。为了便于大家理解,我来画...
继续阅读 »

大家好,我是道哥。

今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:

文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G.

这个题目的意思应该很清楚了,比较直白。为了便于大家理解,我来画个动图玩玩,希望大家喜欢。

能否做对这道题目,很大程度上就决定了能否拿下腾讯的offer,有一定的技巧性,一起来看下吧。

在原题中,实际有40亿个QQ号码,为了方便起见,在图解和叙述时,仅以4个QQ为例来说明。

方法一:排序

很自然地,最简单的方式是对所有的QQ号码进行排序,重复的QQ号码必然相邻,保留第一个,去掉后面重复的就行。

原始的QQ号为:

排序后的QQ号为:

去重就简单了:

可是,面试官要问你,去重一定要排序吗?显然,排序的时间复杂度太高了,无法通过腾讯面试。

方法二:hashmap

既然直接排序的时间复杂度太高,那就用hashmap吧,具体思路是把QQ号码记录到hashmap中:

mapFlag[123] = true
mapFlag[567] = true
mapFlag[123] = true
mapFlag[890] = true

由于hashmap的去重性质,可知实际自动变成了:

mapFlag[123] = true
mapFlag[567] = true
mapFlag[890] = true

很显然,只有123,567,890存在,所以这也就是去重后的结果。

可是,面试官又要问你了:实际要存40亿QQ号码,1G的内存够分配这么多空间吗?显然不行,无法通过腾讯面试。

方法三:文件切割

显然,这是海量数据问题。看过很多面经的求职者,自然想到文件切割的方式,避免内存过大。

可是,绞尽脑汁思考,要么使用文件间的归并排序,要么使用桶排序,反正最终是能排序的。

既然排序好了,那就能实现去重了,貌似就万事大吉了。我只能坦白地说,高兴得有点早哦。

接着,面试官又要问你:这么多的文件操作,效率自然不高啊。显然,无法通过腾讯面试。

方法四:bitmap

来看绝招!我们可以对hashmap进行优化,采用bitmap这种数据结构,可以顺利地同时解决时间问题和空间问题。

在很多实际项目中,bitmap经常用到。我看了不少组件的源码,发现很多地方都有bitmap实现,bitmap图解如下:

这是一个unsigned char类型,可以看到,共有8位,取值范围是[0, 255],如上这个unsigned char的值是255,它能标识0~7这些数字都存在。

同理,如下这个unsigned char类型的值是254,它对应的含义是:1~7这些数字存在,而数字0不存在:

由此可见,一个unsigned char类型的数据,可以标识0~7这8个整数的存在与否。以此类推:

  • 一个unsigned int类型数据可以标识0~31这32个整数的存在与否。

  • 两个unsigned int类型数据可以标识0~63这64个整数的存在与否。

显然,可以推导出来:512MB大小足够标识所有QQ号码的存在与否,请注意:QQ号码的理论最大值为2^32 - 1,大概是43亿左右。

接下来的问题就很简单了:用512MB的unsigned int数组来记录文件中QQ号码的存在与否,形成一个bitmap,比如:

bitmapFlag[123] = 1
bitmapFlag[567] = 1
bitmapFlag[123] = 1
bitmapFlag[890] = 1

实际上就是:

bitmapFlag[123] = 1
bitmapFlag[567] = 1
bitmapFlag[890] = 1

然后从小到大遍历所有正整数(4字节),当bitmapFlag值为1时,就表明该数是存在的。 而且,从上面的过程可以看到,自动实现了去重。显然,这种方式 可以通过腾讯的面试 。

扩展练习一

文件中有40亿个互不相同的QQ号码,请设计算法对QQ号码进行排序,内存限制1G.

很显然,直接用bitmap, 标记这40亿个QQ号码的存在性,然后从小到大遍历正整数,当bitmapFlag的值为1时,就输出该值,输出后的正整数序列就是排序后的结果。

请注意,这里必须限制40亿个QQ号码互不相同。通过bitmap记录,客观上就自动完成了排序功能。

扩展练习二

文件中有40亿个互不相同的QQ号码,求这些QQ号码的中位数,内存限制1G.

我知道,一些刷题经验丰富的人,最开始想到的肯定是用堆或者文件切割,这明显是犯了本本主义错误。直接用bitmap排序,当场搞定中位数。

扩展练习三

文件中有40亿个互不相同的QQ号码,求这些QQ号码的top-K,内存限制1G.

我知道,很多人背诵过top-K问题,信心满满,想到用小顶堆或者文件切割,这明显又是犯了本本主义错误。直接用bitmap排序,当场搞定top-K问题。

扩展练习四

文件中有80亿个QQ号码,试判断其中是否存在相同的QQ号码,内存限制1G.

我知道,一些吸取了经验教训的人肯定说,直接bitmap啊。然而,又一次错了。根据容斥原理可知:

因为QQ号码的个数是43亿左右(理论值2^32 - 1),所以80亿个QQ号码必然存在相同的QQ号码。

海量数据的问题,要具体问题具体分析,不要眉毛胡子一把抓。有些人完全不刷题,肯定不行。有些人刷题后不加思考,不会变通,也是不行的。好了,先说这么多。我们也会一步一个脚印,争取每篇文章讲清讲透一件事,也希望大家阅读后有所收获,心情愉快。

作者:爱码有道
来源:https://mp.weixin.qq.com/s/YlLYDzncB6tqbffrg__13w

收起阅读 »

别被你的框架框住了

我短暂的职业生涯被 React 充斥着。还没毕业前我从 Vue 2.x 入手开始学习框架,在一个我当时觉得还行现在回看完全不行的状态进了公司。然后开启了跟 React 死磕的状态,从 class 组件到函数式组件,从 Redux 到 Recoil,从 Antd...
继续阅读 »

我短暂的职业生涯被 React 充斥着。

还没毕业前我从 Vue 2.x 入手开始学习框架,在一个我当时觉得还行现在回看完全不行的状态进了公司。然后开启了跟 React 死磕的状态,从 class 组件到函数式组件,从 Redux 到 Recoil,从 Antd 到 MUI...

不久前一个呆了2年多的项目成功结束,接下来要去一个新项目,新项目要用 Angular,于是我开始告别从毕业就开始用的 React,开始学习这个大家少有提及的框架。

回顾这几年,要说 React 带给我最多的是什么,我觉得可能是思想,是一种编程范式。为了理解 React 新的函数式组件,我去学习 FP,但我并不是一个原教旨主义者,所以我当然也不认同你想学 FP 就得去学 Lisp 的说法。

在这期间我发现小黄书的作者 Kyle Simpson 也写了一本专门为 JSer 介绍 FP 的,书中前言部分我深以为然:

The way I see it, functional programming is at its heart about using patterns in your code that are well-known, understandable, and proven to keep away the mistakes that make code harder to understand.

是的,编程范式的作用是为了让人们更好地组织和理解代码,编程范式应该去服务写代码的人,而不是人去事无巨细地遵循编程范式的每一个规则,理解每一个晦涩难懂的概念。

I believe that programming is fundamentally about humans, not about code. I believe that code is first and foremost a means of human communication, and only as a side effect (hear my self-referential chuckle) does it instruct the computer.

敏捷需要以人为本,写代码其实也一样。我们要做的应该是理解编程范式本身以及它背后的作用,或许在未来的某天你会突然发现,原来我用了这么久的这个玩意儿有一个这么有意思的名字,亦或者你可能永远也解释不清楚那个概念到底是什么:

A monad is just a monoid in the category of endofunctors.

一个单子不过是自函子范畴上的幺半群

那是不是搞不懂我就不能玩 FP 了?然后我就得站在鄙视链底端,被 Haskell、Lisp 玩家们指着鼻子嘲笑:你们看那家伙,其实啥也不懂,他那也叫 FP?

这个问题我没有答案,或许可以留给大家来讨论。但是到这里我至少明白了 React Hooks 为什么要叫 "hook";为什么有一个 hook 叫 "useEffect";我也理解了为什么大家都说不要用 hook 去实现 class 组件的生命周期。

除了写好 React 本身,我也尝试了纯函数、偏函数、柯里化、组合和 Point-free 风格的代码,确实得到了一些好处,也确实带来了一些不便。

可能这些思想就是学习 React 带给我最大的 side effect 吧(笑。

与 React 准备 all in FP 相反的是,与 Angular 短暂接触的我发现它全面拥抱 OOP。与当时 React 从 class 组件切换到函数式组件一样,首先你得把编程范式思想完全转变过来才能很好地理解 Angular。这又促使我不得不去复习许多被我丢弃很久的 OOP 思想。

到这我不禁想起一次公司内 TDD 训练营,作业完成后去找 coach 讲解,讲解过程中 coach 讲到了抽象能力、隔离层、防腐层。那时我才发现自己 OO 的抽象能力和一起的后端小伙伴一比实在是差到不行,只有大学时候的能力。反思过后像是被 React 给“惯”坏了,几乎已经丢掉了这部分能力。

老实说我接触 React class 组件时间并不长,第一个项目只有短短几个月。后面两个项目虽然去写 Java 了,但是第一个都是一些修修补补的工作,更像是在做 DevOps,后来的项目去写 Java BFF,毫无抽象可言,全是数据 mapping。然后又进到了一个将“追求技术卓越”贯彻执行的项目,成了那批最早吃函数式组件螃蟹的人。

于是我接触 class 组件的时间就只有作为毕业生的那短短几个月而已。

然后当我看到 Angular 文档中的依赖注入时,我脑子只能零星蹦出一些概念:SOLID、解耦。别说细节,我甚至不知道我蹦出来的这些东西是不是对的。于是我又只能凭着自己的记忆去邮件里搜相关的博客大赛的文章。

我好像已经丢掉了 OOP 了。

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

跳出all in FP 的 React 我发现世界不是非黑即白的。说是全面拥抱 OOP,但其实你可以很轻易的在 Angular 中发现 FP 的影子 -- 用 pipe 来处理数据,用 Rx 来处理请求。

既然是以人为本,编程范式本就不应该对立,它们明明可以互补,在自己擅长的领域处理自己擅长的事情,哪怕是同一个项目。看惯了两个阵营吵架的场景,好像这样的场景才是我想要的。

于是我又回忆起某天在项目上和大家讨论的项目分包问题,最后的结论是 OOP 的以对象和 domain 分包的策略在大多数时候要优于单纯的 FP 的方式。它能让功能更集中,让大家更容易找到自己想要找的东西。

但是回过头来静静思考,我虽然会好好学习 OOP,但是我目前大概率不会去深入学习相关的建模方法。因为在目前我的工作环境下,我没看到有前端同学需要深刻理解建模方法的场景,大多数情况浅尝辄止即可。

以我自身的经历来看,DDD 我看过也参加过培训,也跟着项目后端小伙伴在搭建项目时从零到一实践过。但是在实践不多的情况下,整个过程逃脱不了学了忘忘了学的魔咒。大概唯一的用处就是当我被抓到后端去干活能看懂他们为什么要这么组织代码,至于建模的那个过程,被抓去干活的我是大概率不会参与的。(当然如果你有相关的经历还请喷醒我,比如你作为偏前端的小伙伴就是要熟练掌握建模方法,不然工作就做不下去了)

不要被技术栈限制住了自己,其实以前一直对这句话一知半解,虽然可能现在的理解也没有很强。可是当你从一个框里跳出来以后,去思考画框这个人的想法,你可能能够得到一些不一样的思考。对于 Thoughtworker 来说学习一个新框架,一门新语言可能不是什么问题,那我们是不是可以更进一步,想想那些看起来“虚无缥缈”的东西呢。

别被你的框架框住你了。


作者:Teobler
来源:https://juejin.cn/post/7032467133611294733

收起阅读 »

环信广纳人才,base北京,欢迎大家踊跃跳槽/推荐~~ps:双休不加班

1、高级Android开发工程师:1. 3年及以上Android开发经验,具有成熟Android APP产品开发经验者优先;2. 熟练掌握Android SDK,Java,设计模式,http,多线程编程者优先;3. 有NDK开发经验优先;4. 熟悉Androi...
继续阅读 »

1、高级Android开发工程师:
1. 3年及以上Android开发经验,具有成熟Android APP产品开发经验者优先;
2. 熟练掌握Android SDK,Java,设计模式,http,多线程编程者优先;
3. 有NDK开发经验优先;
4. 熟悉Android Framwork,插件开发,有APP架构设计优先;
5. 有SDK开发经验优先;6.有IM开发经验优先


2、iOS开发工程师:
1. 3年及以上iOS开发经验,具有成熟iOS APP产品开发经验者优先;
2. 熟悉iOS框架以及各种特性,深刻理解常用设计模式, 熟练使用网络、多线程、数据库等客户端开发技术;
3. 扎实的Objective-C或Swift语言基础;
4. 分析问题和解决问题的能力强,有大规模代码的阅读和修改经验者优先;
5. 有较好的学习能力和沟通能力,有创新能力和责任感,对移动端产品有浓厚的兴趣;

3、前端工程师:
1. 计算机及相关专业本科及以上学历,至少3年以上前端开发工作经验;
2. 有丰富的Web前端开发经验,熟悉HTML5开发,浏览器渲染原理,熟悉React框架;
3. 工作认真负责,乐观开朗,有较强的逻辑分析、问题排查能力,善于团队合作;
4. 良好软件工程思想,良好的编程能力和编程习惯;
5. 熟悉HTTP、WebSocket等协议;
6. 有针对海外开发者产品经验的优先考虑;
7. 有SDK开发经验者优先考虑;

4、高级SDK跨平台开发工程师(Flutter/Electron/RN/Unity/Unreal):
1. 熟练使用 Java script/C#/Dart 其中至少一种以上开发语言。
2. 熟悉使用 C++,有多语言混合开发经验。
3. 有过 Android/iOS/Windows/macOS 其中至少一种原生平台应用的开发经验。
4. 使用过跨平台框架,有框架和原生混合开发经验。例如:Electron/ Unity/Flutter 其中的一种或者多种。
5. 有即时通讯相关的开发经验属于加分项。
6. 有跨平台框架的插件,中间件或者 SDK 开发经验属于加分项。
7. 本科及以上学历, 有两年以上的工作经验。

5、中高级后台工程师(Erlang/Go/C++):
1. 3年以上软件工程师工作经验,有Erlang,Go,C++经验或感兴趣优先;
2. 大型通讯软件,通讯协议开发经验优先;
3. 计算机科学、自动化、通讯等相关专业本科以上学历;
4. 熟悉TCP/IP,HTTP、WebSocket协议;
5. 熟悉SQL、Kafka、Redis;6.熟悉Linux操作系统;

6、中高级Java工程师:
1. 3年以上大型互联网分布式产品或网络软件设计经验;
2. 强大的需求分析能力与编码能力;
3. 精通Java语言,精通异步编程、多线程编程;
4. 精通Spring、Spring Boot、Sp;

7、产品经理:
1. 5年以上to B产品规划与设计经验,3年及以上互联网产品工作经验,计算机或相关专业本科以上学历,有IaaS、Paas、中台方向相关经验者优先;
2. 具备良好的需求分析和产品设计能力,熟练使用Axure/Sketch等产品原型工具;
3. 具备丰富的PaaS平台相关经验,理解PaaS、SaaS等架构逻辑,对业界领先的云平台有一定研究;
4. 对产品的发展趋势有敏锐的洞察力和创新意识,重视细节与用户体验,对用户使用流程、交互流程敏感;
5. 2年以上B端产品经验;6.有研发经验可以作为加分项;

8、初级测试和高级自动化测试工程师:
1. 计算机本科及以上学历;
2. 2年以上自动化测试经验;
3. 熟悉mysql或者相关数据库,能熟练编写sql脚本优先;
4. 熟悉Java\\Python和Linux操作系统;
5. 熟悉自动化测试,熟悉robot framework\\Appium\\Selenium等测试框架,有多个大型实际项目自动化测试经验者优先;
6. 良好的表达沟通能力、细致、责任心、团队精神;7.具备追求卓越的质量观念,并有志成为测试领域的高端人才。

9.运维工程师:
1. 有3年以上互联网系统运维工作经验。
2. 熟悉Linux操作系统的管理维护(部署、配置和调优),熟练使用Linux Shell或Python或者golang编程语言。
3. 熟悉Docker以及相关容器技术,使用过docker-compose、mesos 等容器编排工具,进行过开发维护经验者优先。
4. 熟悉Prometheus等常用监控软件。
5. 熟练使用nginx, redis, kafka 等常用软件,并进行调优。
6. 熟悉TiDB或者CockroachDB优先。
7. 热爱运维工作,能承受压力,具备较强的问题分析和解决能力。
8. 积极主动、责任心强,良好的沟通能力和团队协作精神。


10、高级产品市场经理
岗位职责:
1.负责环信即时通讯云的价值挖掘、内容组织并推动将产品及价值传递给用户,主要产出物为:产品技术及解决方案干货内容;客户案例;产品彩页;产品PPT;市场软文;市场活动演讲PPT;官网内容;市场活动产品资料等
2.行业研究,分析行业及竞争对手动向,为产品团队提出产品定位建议
3.做为公司产品对外接口, 不定期参加公司对外直播公开课演讲以及行业会议演讲


任职资格:
1.有技术背景,懂得如何与研发团队、销售及用户沟通和协作;
2.熟悉通讯云领域SaaS、PaaS产品,理解并挖掘相关产品核心价值;
3.沟通能力强,写作能力强;
4.有IM通讯云领域市场分析,行业分析,顾问咨询经验者优先;
5.有产品经理或项目经理经验者优先;
6.本科以上学历;
7.5年以上工作经验;

--------------------------------

以上岗位如有意向,可私信我,咱们内推搞起来!

成功推荐朋友入职可获奖励5000~20000元,欢迎大家踊跃推荐!

收起阅读 »

最新·前端的工资分布情况 - 你拖后腿了吗?

前言要说我们工作最关心的东西肯定少不了这两个方向:我们前端开发的工资分布情况技术更新的风向今天我就和大家分享小生最近收集的一些数据。关于行业的平均薪资水平我们一定不要拿一些特例当成范例。最能反应行业的平均薪资的指标应该是正态分布的中间值。再说明一点:知乎和脉脉...
继续阅读 »



前言

要说我们工作最关心的东西肯定少不了这两个方向:

  1. 我们前端开发的工资分布情况
  2. 技术更新的风向

今天我就和大家分享小生最近收集的一些数据。

关于行业的平均薪资水平我们一定不要拿一些特例当成范例。最能反应行业的平均薪资的指标应该是正态分布的中间值

再说明一点:

知乎和脉脉上的薪资水平比整体偏高,不建议作为依据。

总体分布情况

我们先看一下每个工作年限对应的平均工资是多少(这里只收集了北上广深杭五个城市)

工作年限应届生1-3年3-5年5年+可信度
北京9.5K13.7K19.5K25.9K较高
上海8.8K12.9K17.6K22.5K较高
深圳9K12K15.9K21.8K较高
杭州8.9K11.7K15.8K20K存疑
广州7.9K10.1K13.6K17.8K不高

数据来源: http://www.jobui.com/salary/?cit…

说明:

  • 应届生的样本数相对来说少了很多,可信度不会很高。
  • 这里没有按学历区分,所以 985 高校的同学可能觉得偏低。

绝大多数人,3-5 年经验,薪资范围基本都在 15k - 20k。所以千万不要妄自菲薄。

北上广深杭平均工资

  • 这部分的数据来源于 - 职友集

全国

数据来源职友集

  • 全国 平均工资为: ¥12330(这个数据基本被一线城市平均了)
  • 分布最多的区间为:10K 到 15K

北京

数据来源职友集

  • 北京 平均工资为: ¥18770
  • 分布最多的区间为:20K 到 30K

上海

数据来源职友集

  • 上海 平均工资为: ¥16220
  • 分布最多的区间为:10K 到 15K

深圳

数据来源职友集

  • 深圳 平均工资为: ¥15090
  • 分布最多的区间为:10K 到 15K

广州

数据来源职友集

  • 广州 平均工资为: ¥11390(广州表示不服,竟然没有全国平均高?)
  • 分布最多的区间为:10K 到 15K

杭州

数据来源职友集

  • 杭州 平均工资为: ¥14350
  • 分布最多的区间为:10K 到 15K

后话

我也看了下看准网发布的数据(不分地区的平均工资达到了 ¥19800)和一些其他来源的数据。结合个人的经验,认为这份数据还是比较客观的。

这次你是否又拖后腿了呢?

作者:小生方勤
来源:https://juejin.cn/post/6844904082193268749 收起阅读 »

iOS - UIApplication

一、UIApplication1.简单介绍(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIAppli...
继续阅读 »

一、UIApplication

1.简单介绍

(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。
(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。
(3)通过[UIApplication sharedApplication]可以获得这个单例对象
(4) 一个iOS程序启动后创建的第一个对象就是UIApplication对象,且只有一个(通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的)。
(5)利用UIApplication对象,能进行一些应用级别的操作

2.应用级别的操作示例:

(1)设置应用程序图标右上角的红色提醒数字(如QQ,微博等消息的时候,图标上面会显示1,2,3条新信息等。)


@property(nonatomic) NSInteger applicationIconBadgeNumber;
代码实现和效果:
- (void)viewDidLoad{
[super viewDidLoad];
//创建并添加一个按钮
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 100, 60, 30)];
[btn setTitle:@"按钮" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor brownColor]];
[btn addTarget:self action:@selector(onClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(void)onClick{
NSLog(@"按钮点击事件");
//错误,只能有一个唯一的UIApplication对象,不能再进行创建
// UIApplication *app=[[UIApplication alloc]init];
//通过sharedApplication获取该程序的UIApplication对象
UIApplication *app=[UIApplication sharedApplication];
app.applicationIconBadgeNumber=123;
}


(2)设置联网指示器的可见性

@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
代码和效果:
 //设置指示器的联网动画
app.networkActivityIndicatorVisible=YES;



(3)管理状态栏

  • 从iOS7开始,系统提供了2种管理状态栏的方式
    通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏).
    在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式

状态栏的样式    
- (UIStatusBarStyle)preferredStatusBarStyle;
状态栏的可见性 
-(BOOL)prefersStatusBarHidden;
#pragma mark-设置状态栏的样式
-(UIStatusBarStyle)preferredStatusBarStyle{
//设置为白色
//return UIStatusBarStyleLightContent;
//默认为黑色
return UIStatusBarStyleDefault;
}
#pragma mark-设置状态栏是否隐藏(否)
-(BOOL)prefersStatusBarHidden{
return NO;
}

通过UIApplication管理(一个应用程序的状态栏都由它统一管理)
如果想利用UIApplication来管理状态栏,首先得修改Info.plist的设置




//通过sharedApplication获取该程序的UIApplication对象
UIApplication *app=[UIApplication sharedApplication];
app.applicationIconBadgeNumber=123;

//设置指示器的联网动画
app.networkActivityIndicatorVisible=YES;
//设置状态栏的样式
//app.statusBarStyle=UIStatusBarStyleDefault;//默认(黑色)
//设置为白色+动画效果
[app setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
//设置状态栏是否隐藏
app.statusBarHidden=YES;
//设置状态栏是否隐藏+动画效果
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

  • 补充
    既然两种都可以对状态栏进行管理,那么什么时候该用什么呢?
    如果状态栏的样式只设置一次,那就用UIApplication来进行管理;
    如果状态栏是否隐藏,样式不一样那就用控制器进行管理。
    UIApplication来进行管理有额外的好处,可以提供动画

(4)openURL:方法
UIApplication有个功能十分强大的openURL:方法

-(BOOL)openURL:(NSURL*)url;

openURL:方法的部分功能有
打电话


UIApplication *app = [UIApplicationsharedApplication]; [app openURL:[NSURLURLWithString:@"tel://10086"]];
发短信 [app openURL:[NSURLURLWithString:@"sms://10086"]];
发邮件 [app openURL:[NSURLURLWithString:@"mailto://12345@qq.com"]];
打开一个网页资源 [app openURL:[NSURLURLWithString:@"http://ios.itcast.cn"]];
打开其他app程序 openURL方法,可以打开其他APP。

URL补充:
URL:统一资源定位符,用来唯一的表示一个资源。
URL格式:协议头://主机地址/资源路径
网络资源:http/ ftp等 表示百度上一张图片的地址  http://www.baidu.com/images/20140603/abc.png
本地资源:file:///users/apple/desktop/abc.png(主机地址省略)

二、UIApplication Delegate

1.简单说明
所有的移动操作系统都有个致命的缺点:app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止。
还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件。
作用:当被打断的时候,通知代理进入到后台。



每次新建完项目,都有个带有“AppDelegate”字眼的类,它就是UIApplication的代理,NJAppDelegate默认已经遵守了UIApplicationDelegate协议,已经是UIApplication的代理。




2.代理方法

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

// 当应用程序启动完毕的时候就会调用(系统自动调用)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

return YES;
}
//当应用程序程序失去焦点的时候调用(系统自动调用)
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}

//当程序进入后台的时候调用
//一般在这里保存应用程序的数据和状态
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

//将要进入前台的是时候调用
//一般在该方法中恢复应用程序的数据,以及状态
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

//应用程序获得焦点
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

// 应用程序即将被销毁的时候会调用该方法
// 注意:如果应用程序处于挂起状态的时候无法调用该方法
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


@end

三、程序启动原理

UIApplicationMain
main函数中执行了一个UIApplicationMain这个函数

intUIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
*argc、argv:直接传递给UIApplicationMain进行相关处理即可
*principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值

1、delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议
2、UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
程序正常退出时UIApplicationMain函数才返回

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
/*
argc: 系统或者用户传入的参数个数
argv: 系统或者用户传入的实际参数
1.根据传入的第三个参数创建UIApplication对象
2.根据传入的第四个产生创建UIApplication对象的代理
3.设置刚刚创建出来的代理对象为UIApplication的代理
4.开启一个事件循环
*/

}
}

系统入口的代码和参数说明:
argc:系统或者用户传入的参数
argv:系统或用户传入的实际参数
1.根据传入的第三个参数,创建UIApplication对象
2.根据传入的第四个产生创建UIApplication对象的代理
3.设置刚刚创建出来的代理对象为UIApplication的代理
4.开启一个事件循环(可以理解为里面是一个死循环)这个时间循环是一个队列(先进先出)先添加进去的先处理
ios程序启动原理



四、程序启动的完整过程

1.main函数
2.UIApplicationMain

  • 创建UIApplication对象
  • 创建UIApplication的delegate对象
    3.delegate对象开始处理(监听)系统事件(没有storyboard)
  • 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
  • 在application:didFinishLaunchingWithOptions:中创建UIWindow
  • 创建和设置UIWindow的rootViewController
  • 显示窗口

3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)

  • 创建UIWindow
  • 创建和设置UIWindow的rootViewController
  • 显示窗口


作者:默默的前行
链接:https://www.jianshu.com/p/16b65b9c22b0

收起阅读 »

【开奖咯!】回帖晒晒端午节你们公司都发了什么?顺便抽个奖!~

开奖咯!本次使用excel开奖,真实随机(参考链接https://www.excelhome.net/316.html)。部分用户回帖不符合活动要求,不参与本次开奖。参与回帖的10个随机幸运伙伴是:获得点赞最多的柳天明 5AuCf 4Lambert 3获得3...
继续阅读 »
开奖咯!本次使用excel开奖,真实随机(参考链接https://www.excelhome.net/316.html)。
部分用户回帖不符合活动要求,不参与本次开奖。

参与回帖的10个随机幸运伙伴是:


获得点赞最多的

柳天明 5
AuCf 4
Lambert 3

获得3个最惨伙伴:

yangjian、春春、孤狼☞小九

请以上同学在6月17日 23:59前,将你的收件人,地址,电话,衣服图案(星空/字母)+尺码(L-3XL)信息发站内私信给@admin,超过领取截止时间未提交信息,视为放弃领取~

感谢大家参与!下次见~

=================================

首先祝各位端午安康

然而端午来临之际,各种群兴起了一些攀比之风

有这样的



还有这样的



还有这样的



然而我是这样的:




不过节日没福利的同学们也没关系.环信精心为大家准备了端午福利 有福利的也可双喜临门!!!


活动规则


  • 活动时间:即日起至 6 月 15 日 中午 12:00 截止
  • 参与方式 :在本篇帖子下留言关于端午福利或端午计划的回复(图文皆可,发图请单独开帖然后链接回到本帖下方)
  • 活动结束后,将从所有参与回帖的用户里随机抽取10人,赠送imgeek定制T恤。😉
  • 并且选出3个端午福利寒酸的盆友赠送夏日清凉挂脖风扇😆
  • 最多的前3名直接获得一件T恤!
  • 获奖名单将会在 6 月 15 日公布于本篇帖子下。
T恤:



收起阅读 »