也谈wifi断流问题 (by quqi99)

版权声明:本文为博主原创文章,如需转载,请注明出处! https://blog.csdn.net/quqi99/article/details/82346840

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2018-09-03)

问题

笔者最近应该是遇到了常听大家说起的wifi断流问题, 新入一款安卓原生系统手机, 但是在使用wifi上网时会感觉到某些APP上网不流畅, 尤其是使用京东APP搜索商品时会总说找不着网络, 但此时显然是有网络的. 为此, 笔者先做了一系统排除性实验:

  • 排除法测试, 使用京东APP搜索商品时说找不着网络, 但使用京东APP的其他功能没有问题, 并且使用京东以外的其他APP也没问题
  • 排除法测试, 切换为4G网络使用京东APP搜索商品正常, 仅仅只是使用WIFI网络时才会出问题.
  • 排除法测试, 去麦当劳使用WIFI确认无问题, 但速度也不快, 但能打开页面.
  • 排除法测试, 难道是家里的WIFI有问题吗? 但换个手机型号使用京东APP搜索商品却又正常.
  • 排除法测试, 难道是VPN的问题? 关掉VPN, 恢复DNS国内设置依然有问题.
  • 排除法测试, 继续换一个没有VPN的干净的OpenWRT路由器依然有问题, 可惜家里没有Non-OpenWRT路由器可供测试.
  • 排除法测试, 路由器上修改802.11g, 802.11n, 802.11ac等设置后问题依旧.
  • 排除法测试, 检查了路由器上的MAC地址是否与其他机器重复, 未发现异常
  • 排除法测试, 使用114.114.114.114作为DNS, 问题依旧
  • 排除法测试, OpenWRT路由器使用tcpdump抓包, 干扰条目过多, 未深入
  • 排除法测试, 现在问题看起来只是发生在这款特定手机型号与特定的OpenWRT路由器与特定的某些APP如京东, 手机刷机到android 8.1与7.1两个版本问题依旧.
  • 排除法测试, google搜索大量京东或别的某些应用在各种手机型号上出问题的帖子, 试着更改帖子中的各种切换手机配置的操作, 如不对京东使用电源优化,问题依旧.
  • 排除法测试, 绝大多数时候打不开京东的这个搜索商品的功能, 但极少数情况又能打开, 但非常慢, 使用别家的wifi网络时也是非常慢, 很难说清楚现象.

解决

上述一系列排除性测试让我相信该问题仅和我使用特定的手机型号, 使用特定的OpenWRT路由器, 使用特定的某些APP如京东有关.
京东APP, 一个上层应用而已, 理论上只有下列几个因素会影响到上层应用:

  • DNS
  • IPv6/IPv4 fallback
  • MTU
    理论让我将目光回到MTU, 修改OpenWRT路由器WAN口的MTU=1492后问题依旧.继续深挖:
  • 路由器背后的手机操作系统应该有/proc/sys/net/ipv4/ip_no_pmtu_disc=0让手机可以根据pmtu来确实应用所需的mss值. 遗憾地是, 手机没有root, 无法检查此项值.
  • OpenWRT路由器tcpdump抓包, 看到的mss值确实不小. 既然无root权限无法修改手机的ip_no_pmtu_disc参数, 那有没有方法直接修改OpenWRT路由器强迫修改mss值呢?
    OK, 在路由器上添加如下两个命令, 问题就这么解决了:
#iptables -A FORWARD -j ACCEPT
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

root@OpenWrt:~# iptables-save |grep mss
:mssfix - [0:0]
-A FORWARD -j mssfix
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A mssfix -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "wan (mtu_fix)" -j TCPMSS --clamp-mss-to-pmtu

root@OpenWrt:~# tcpdump -ni br-lan src host 192.168.99.194 and dst host 111.13.24.129 and dst port 443
06:37:42.085674 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [S], seq 140081180, win 65535, options [mss 1460,sackOK,TS val 8629819 ecr 0,nop,wscale 8], length 0
06:37:42.092397 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [.], ack 2370816066, win 343, length 0
06:37:42.095245 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [P.], seq 0:173, ack 1, win 343, length 173
06:37:42.141194 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [.], ack 1453, win 354, length 0
06:37:42.141396 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [.], ack 2905, win 365, length 0
06:37:42.141536 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [.], ack 3472, win 377, length 0
06:37:42.147373 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [P.], seq 173:491, ack 3472, win 377, length 318
06:37:42.185607 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [P.], seq 491:1736, ack 3714, win 388, length 1245
06:37:42.194932 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [P.], seq 1736:1767, ack 4065, win 388, length 31
06:37:42.195258 IP 192.168.99.194.39494 > 111.13.24.129.443: Flags [R.], seq 1767, ack 4065, win 388, length 0

总结

这款手机的操作系统没有设置ip_no_pmtu_disc参数去协商mss值, 而OpenWRT路由器刚好缺一条iptables rule (iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu), 这样遭遇了pppoe的1492 MTU问题.
换句话说, 当我外出时, 如果所连的路由器没有加这条设置, 那么这个问题仍然又遇到. 手机操作系统ip_no_pmtu_disc设置才能彻底解决某些应用wifi网络不能上网的问题.

iptables -t mangle -I POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I OUTPUT -o pppoe-wan -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -t mangle -I POSTROUTING -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -t mangle -I OUTPUT -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -t mangle -I FORWARD -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

另一个案例

openstack虚机上再创建docker容器, 因为是vxlan网络虚机的mtu=1450, docker0的mtu如果为1500时将导致docker container无法通信.
当mtu配置不正确时此时需要依赖mss, 此时计算节点充当的是路由器它发现此情况(不能将docker container发出的mtu=1500的包发出时)应该发ICMP error到docker container, 或者openstack vrouter应当做这件事情.

docker container错误的具体表现是无法下载, 此时, 最可能的情况时, 最大的包到达openstack vrouter后, 它从external interface收到mtu=1500的包并尝试分片发给虚机, 失败后将发ICMP error到外部下载服务器. 此时:

1, 当non-DVR时, l3-agent上的snat-xxx确实向外部下载服务器发出了ICMP error:

11:45:04.873959 fa:16:3e:c5:b3:ed > fe:54:00:36🆎b4, ethertype IPv4 (0x0800), length 590: 100.64.1.1 > 120.146.233.220: ICMP 103.245.215.9 unreachable - need to frag (mtu 1450), length 556

2, 当DVR时, FIP移到了计算节点上, 此时是qrouter-xxx, 但是这个ns没有default route,

root@maas-node02:~# ip -n qrouter-1752c73a-be9f-4326-97cc-99dbe0988b3c rule show
0:	from all lookup local 
32766:	from all lookup main 
32767:	from all lookup default 
57481:	from 103.245.215.14 lookup 16 
80000:	from 103.245.215.0/28 lookup 16 

root@maas-node02:~# ip -n qrouter-1752c73a-be9f-4326-97cc-99dbe0988b3c route show table 16
default via 169.254.106.115 dev rfp-1752c73a-b 

root@maas-node02:~# ip -n qrouter-1752c73a-be9f-4326-97cc-99dbe0988b3c route show 
103.245.215.0/28 dev qr-ec03268e-fb proto kernel scope link src 103.245.215.1 
169.254.106.114/31 dev rfp-1752c73a-b proto kernel scope link src 169.254.106.114 

只有再添加下列默认路由之后, DVR qrouter-xxx’s才能将ICMP error发出去, 这样才可能去使用mss,

root@maas-node02:~# ip -n qrouter-1752c73a-be9f-4326-97cc-99dbe0988b3c route add default via 169.254.106.115 dev rfp-1752c73a-b 

所以这样造成的问题就是, non-DVR虚机上运行docker container没问题, 而DVR虚机上运行docker container有问题. 解决办法有三个:

1, 修改docker0的mtu=1450, 我们不能修改bridge的mtu, 但可以往docker0里再添加一个tap, 这样bridge的mtu将取决于tap mtu的最小值.
2, 计算节点上运行:

iptables -t mangle -A FORWARD -o ens3 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu

3, to increase the global-physnet-mtu to 1550 to allow the real tenant network MTU to be 1500.
注: 沿路的交换机也要配置相应的MTU, 特别是如果交换机配置的MTU过小, 那么ICMP error直接就没有提示就被drop( 千万注意: 过来的包的MTU如果大于设备的MTU值才会分片分段, 如果是小于的话直接就DROP掉了, 这个参数net.ipv4.tcp_mtu_probing也可以探测这种情况)了这样导致MTU没配对之后也无法利用MSS, 这种问题更不好查. 另外, 也发现IPv6情况下的ICMPv6没有被ip6table rule允许的情况.

也谈印度软件业

04-25

也谈印度软件业rn 面对今天大多数人叫嚷着,软件业要向印度看齐的呼声,我动手开始写此文章可能是个不太和时宜的举动rnrn。但我作为一个中国人,不能不说一些自己的感想,对未来可以起多大作用我并不做太多的期盼,因为我毕竟rnrn只是个小人物。rn 不知大家有没有看到过《第二次战败》这篇日本人的文章。虽然我对日本人一向没什么好感,但我还是推rnrn荐有识之士读读此文。这篇文章精辟的阐述了日本在二战后的高速发展的泡沫经济(日本人已经觉醒不知国人rnrn何时明了),80年代末期日本经济神话似的发展,工人、农民,连家庭主妇都疯狂的投资消费,那时日本人有rnrn一句最自豪的话:“美国已经没有什么值的日本学习的地方了。”然而好景不长,日本经济在90年代大崩溃,rnrn究其原因“千人一面的‘精英’怎么能带领日本开拓新时代”(同样我觉得这句话也很适合中国)。日本之所rnrn以失败还在于把眼前的利益看得太重,什么能赚钱就干什么(虽然我觉得美国人也是一样,但美国总是有一部rnrn分眼光长远的人,能够洞察未来,实在是不理解???),所以注定他们没能把握住顶尖的科技。rn 一个把经济发展建筑在别人科技成果之上的国家,是不可能成为世界大国的。印度的软件业是很赚钱,但rnrn是他们真的能挑起世界软件科技的大梁么?(国人的合作精神是不怎么样,但这并不是软件业发展的病根。)rn那一项为众人熟知的软件科技成果不是欧美人的,在美国印度人也只能当软件工程师(可能有失偏颇)。他们rnrn的工程水平很高么,至少我不这么认为,奴隶社会的奴隶主们,领导者众多的奴隶可以建造出令今人都叹为观rnrn止的建筑,难道你认为奴隶主的领导水平很高么(如果是我也就没得说了)。印度的国家制度我不想多说,那rnrn也不是我们关心的问题。就拿我们自己国家的建筑业来说吧,你知道搞地产有多来钱吗?大大小小的地产商动rnrn不动就有几个亿的身价(我可不是瞅着眼馋,也有些眼馋吧),如果他们不是只给底下打工仔五六百元的话,rnrn我想他们不会发的那么快,可能你们不信,我的舅舅就是一个包工头(一个包工头就已经很黑了)他能从每个rnrn小工身上赚四五百元/每月,他曾经跟我说如果真按公平交易的话,每个小工至少每月工资在2500左右。呜呼,rnrn何其黑已。rn 以此观之国内软件业,还算不错的了,但是大老板们也越来越不知足自己赚到的钱(仔细想想也能理解,rnrn有那个资本家愿意把到手的钱又扔出去呢。),与是想出各种办法克扣程序员那点本来已不多的薪水(如果不rnrn是痴迷技术的那类人,我劝你还是转行吧,想赚钱的话不能搞技术,至少不能给别人搞),想想看如果有一天rnrn连高中生都把程序编得烂熟,老板会给你多少钱,我要是老板就雇那些廉价的劳动力,你要的高我不用就是了rnrn,到那时企业的费用自然降下来,恐怕连盗版也不用打击了,因为正版才一元钱(瞎猜的)还盗个什么劲。rn 难道这样我们的软件科技水平就提高了吗,恐怕不会吧(倒退很有可能),我们现在很多人一看别人挣钱rnrn就眼红,不管三七二十一硬拿来就是。印度是什么样的国家,它可以不考虑今后国家的发展,挣了大钱移民美rnrn国了事。我们也像他们一样么,如果你回答是,我也无话可说。为什么美国科技可以一直领先于世界各国,因rnrn为他们是真给钱,不会让你觉得做技术没有出路,在中国搞技术是不用想出路的,因为你也没什么出路,大多rnrn数是不会比销售赚的多。令你我这些搞技术之人又怎能踏心于此,印度在技术上远不是美国的对手,今天美国rnrn大谈这个威胁那个威胁,还不是为了让全世界对他放松警惕,日本一不留神就被他整得如此之惨(苏联就不说rnrn了),这些国家都有一个特点,都是急于与美国比个高低,畸形的发展导致最终的失败(也许不是最终),印rnrn度同样走上了这条路(我不知结果会如何),难道我们又要跟风了吗?苏联与美国较量,我们没有实力跟所以rnrn没造成多大影响;日本与美国较量,我们也没有实力跟所以也没造成多大影响;现在我们有实力跟了,难道真rnrn的要跟么(结果不可想象)?rn 多承包几个国际企业级的管理软件,你的软件科技实力就增强了吗?你用的还不是别人的东西,人家可以rnrn制你,你怎么制人家。软件工程实在是很重要,但他重要不过其它软件技术。现在一些程序员,为自己掌握了rnrn一两项小技巧而沾沾自喜,实在是无可就要;还有一些程序员,为自己使用的工具别人不会使而得意忘形这又rnrn何必。核心层面的技术你又能理解多少,你有能感悟多少,你又能与别人分享多少。实在是在下愚笨,我时至rnrn今日仍不能领会其中奥秘,拙论有辱您耳的话,小的在这里赔个不是先。rn

也谈华为

03-29

看到最近这么多人谈论华为,也算是有点感慨吧,说得不好,大家包涵下。rn 华为这些年来发展不错,已经隐隐成为中国民营企业No.1,在通讯这块已经几乎三分天下有其一,而且现在也涉足或者大力发展一些新的领域,如手机行业等。究其原因,其实大家也能知其一二,通讯这块基本已经饱和,一些没分到的蛋糕,或者是没有利润空间,或者是涉及到国家政治等一些因素,拿不下来的了。根据跨国公司扩张的一些规律,横向已经铺得够开了,是该利用自己的资金、技术、人才积累向纵向其它相关领域扩张了。手机行业因为之前有过代工、贴牌的经验,或者小打小闹过,所以是华为比较势在必得的一个发展导向了。rn 但是华为走得并不顺利,手机部门亏损也不是空穴来风.什么原因?我尽量客观地谈下我的看法,大家也就当个笑谈吧。rn 企业文化。这些年来,华为吸收了国内非常多的优秀的人才,但是都被淹没在华为的红海中,除了创业的几个人,其它叫得上号的只有李一男,一个典型的技术型大男孩,最后也因为一些原因没留下来,出去做事业也是被华为大鱼吃小鱼吃掉了,现在默默待在一个投资集团,这应该也不是他想要的结果把。为什么会这样,我认为这跟文化有很大的关系。华为培养的都是一颗颗螺丝钉,最多打磨成不锈钢的,而且标榜的文化也是这样的,不怕苦不怕累不怕加班用于奉献、讲资格排辈份,一人说话大家都听着。这里说个道听途来的消息,据说华为原来准备在手机按钮上搞个华为的log,大家都觉得难看,但是没个设计师反对,因为是老大提的,呵呵,后来老大自己想了下觉得不好,还是拿掉了。这样的文化下,有这样的事情应该不难理解吧。相反,如果你说了不,可能当时听了,包不好后果很严重。因为,在华为,这里是上下级的关系,就跟军队一样,只有服从,不听话,保不成哪次就被踢出队伍了。rn 有没有人看,有再写吧,打字太累了,呵呵。

也谈年龄

11-02

我们总对年龄抱有忧虑,以我看来,如果按照下面的做法,你的成就必然会和您的年龄成正比。rnrn1.[b][color=#FF0000]你不能总是跳槽,否则的话你将永远都是新人[/color][/b]。无论是国内的公司还是国外的公司,资历都是很重要。这并不意外,不同的公司必然有不同的业务和环境(文化),新人都需要适应和学习,这与技术无关。同时从管理的角度出发,公司需要奖励忠诚,给老人以更高的待遇和地位,否则将会鼓励跳槽。rn2.[b][color=#FF0000]如果你不勤奋主动,年龄和工作经验并不能代表你水平[/color][/b]。有的人勤奋主动,但有的人消极怠慢,两者相比,可能导致数十倍的差异。你的知识可能仅来自于有限的工作,如果这些工作很简单,范围很有限,你所能获得的则必然很少。rn3.[b][color=#FF0000]不要简单的考虑年龄,而要考虑你进入某个领域的时间[/color][/b]。也许你已经30岁了,但也许你做开发仅仅只有3年,你的薪水和地位与那些做开发5年但不到30相比而优越,我说你已经很成功了。rn4.[b][color=#FF0000]你可以一直做开发[/color][/b]。开发是个无止境的东西,你永远不会达到顶峰,如果你并非虚度,多一年的时间必然多一年的水平。30岁或35岁会是个门槛,这太可笑,如果你还算勤奋,5年经验恰是你入门的时间,此时的离开会使你终生不知道软件开发为何物。rnrn因此我的建议是:忘记您的年龄,勤奋主动,找到一个合适的职位干下去,你一定会得到回报。

也谈工作经验

11-06

既然已经谈了学历,也来谈谈什么是工作经验。正如学历分了本科、硕士、博士以及什么统招,成人教育等等。研发人员的工作经验也是,并不是所有的经验都含金量十足,我把它分为6等:rnrn[b][color=#FF0000]五流工作经验[/color][/b]:打杂的,技术含量不高的,以及以重复劳动为主的外包编码 。rn[b][color=#FF0000]四流工作经验[/color][/b]:就是以上项目的设计、分析和管理。rn[b][color=#FF0000]三流工作经验[/color][/b]:一般公司中,技术含量较高的项目和产品研发,或者是知名企业(ibm,googole)的外围研发。rn[b][color=#FF0000]二流工作经验[/color][/b]:知名企业的核心产品的研发骨干。rn[b][color=#FF0000]一流工作经验[/color][/b]:知名企业德核心产品的核心成员,并在业内有一定知名度的人士(如:ms的os的架构师,google和核心算法研究员) 。rn[b][color=#FF0000]超级工作经验[/color][/b]:知名实验室首席科学家,甚至图灵奖获得者,至少也是诸如GUN创始人,或是bill gates的人物. rnrn[b][color=#0000FF]没有学历,可以通过经验来补充,但想获得二流以上的工作经验又谈何容易。[/color][/b]rnrn注:这篇文章并非我的原创,来自于我另一篇文章《也谈学历》([url=http://topic.csdn.net/u/20091030/16/0464b1d4-1933-4562-8668-a0755be18118.html][/url])的回帖,在此向cychen([url=http://hi.csdn.net/cychen1984][/url])表示感谢!

也谈内存的消耗

05-14

我最近做了一个查询的小程序,仅用了两重的循环,最内层的语句大概执行了150次,这是查询的结果就变得比较慢,我也不知道这是怎么回事,请高手指教:rn 现在我将我的源码贴出来::rn for i=1 to 31 step 1rn ls_personcode=dw_bb_attendstat.getitemstring(i,"eperson_personcode")rn rn select count(PersonCode)rn into :li_comelatern from eAttendancern where personcode=:ls_personcode and checkdate>=:ld_date1 and checkdate<=:ld_date2 and comelate='是'rn ;rn rn select count(PersonCode)rn into :li_leaveearlyrn from eAttendancern where personcode=:ls_personcode and checkdate>=:ld_date1 and checkdate<=:ld_date2 and leaveearly='是'rn ;rn do while(ld_date<=ld_date2)rn select count(PersonCode)rn into :nrn from epersonexceptionrn where personcode=:ls_personcode and excepstartdate<=:ld_date and excependdate>=:ld_date and exceptype='病假'rn ;rn if n>0 thenrn li_sicktime++rn end ifrn rn select count(PersonCode)rn into :nrn from epersonexceptionrn where personcode=:ls_personcode and excepstartdate<=:ld_date and excependdate>=:ld_date and exceptype='薪假'rn ;rn if n>0 thenrn li_salarytime++rn end ifrn rn select count(PersonCode)rn into :nrn from epersonexceptionrn where personcode=:ls_personcode and excepstartdate<=:ld_date and excependdate>=:ld_date and exceptype='旷工'rn ;rn if n>0 thenrn li_offtime++rn end ifrn rn select count(PersonCode)rn into :nrn from epersonexceptionrn where personcode=:ls_personcode and excepstartdate<=:ld_date and excependdate>=:ld_date and exceptype='事假'rn ;rn if n>0 thenrn li_shitime++rn end ifrn rn select count(PersonCode)rn into :nrn from epersonexceptionrn where personcode=:ls_personcode and excepstartdate<=:ld_date and excependdate>=:ld_date and exceptype<>'事假' and exceptype<>'旷工' and exceptype<>'薪假' and exceptype<>'病假'rn ;rn if n>0 thenrn li_othertime++rn end ifrn rn ld_date=relativedate(ld_date,1)rnlooprnrn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_comelate",li_comelate)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_leaveearly",li_leaveearly)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_sicktimes",li_sicktime)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_salarytimes",li_salarytime)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_offtimes",li_offtime)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_shitimes",li_shitime)rn dw_bb_attendstat.setitem(dw_bb_attendstat.getrow(),"emonthreport_other",li_othertime)rn rn li_comelate=0rn li_leaveearly=0rn li_sicktime=0rn li_salarytime=0rn li_offtime=0rn li_shitime=0rn li_othertime=0rn rn dw_bb_attendstat.scrollnextrow()rn ld_date=ld_date1rn rn INSERT INTO emonthreport rn ( personcode, rn dateofmonth, rn comelate, rn leaveearly, rn sicktime, rn salarytime, rn shitime, rn other, rn offtimes ) rn)rn VALUES ( :ls_personcode, rn :li_month1, rn :li_comelate, rn :li_leaveearly, rn :li_sicktime, rn :li_salarytime, rn :li_shitime, rn :li_othertime, rn :li_offtime ) ;rnrnnextrn

也谈加班

03-12

刚刚看到一个帖子[url=http://bbs.csdn.net/topics/390729660][/url],里面提到rn加班 -> 没空学习 -> 老是写同等水平代码 -> 无法提升代码质量 -> 老是出BUG -> 老是需要修改 -> 加班 -> ....rn想起了我上家公司的情况,说说自己的看法。rnrn我在上一家公司,项目组的代码稀烂,开发效率很低,还容易出bug,在里面写代码有时候很憋屈。rn而且公司加班非常严重,因为老板不太重视技术,对技术人员也不是很注重,觉得架构不好也没什么,反正不过是加加班的事情。公司风气是每天晚上加班到9点,我当然也是跟着大流,而且我每天都是“加班”到更晚,rn老板看我每天很晚才走,还以为我工作很勤恳,经常表扬我(这老板,就是看谁加班多就狠狠表扬,然后示意大家向他学习,按时下班会则会被点名批评),rn但事实上呢?其实很多加班时间,我都没干工作方面的内容,自己找点资料,demo,源码学习,rn老板有时候会偷瞄我们的屏幕,看见我满屏幕的代码,也以为我在干正事,哈哈。rnrn其实很多时候,与其抱怨环境,还不如换个心态,有免费空调和台式机,大显示屏可以用,网速也快,回去也没事做。rnrn当然,我是才毕业不久,身上也没什么牵挂,技术积累也不够。rn但是话又说回来,我觉得我三年后,应该是能把一条技术线挖得比较深的,到时候还需要和年轻人拼体力,那就太失败了。rnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试