精华内容
下载资源
问答
  • 几年后,爸妈就开始吐槽我们的微信头像了。 爸妈对我们微信头像的关注程度远胜过我们的衣食住行,我在新浪微博上看到了这张统计图。 图片来源:新浪微博 所以,你就会被催着经常换头像了。 图片来源:新浪微博 但是...
        


    点击上方“Python爬虫与数据挖掘”,进行关注

    回复“书籍”即可获赠Python从入门到进阶共10本电子书

    态度决定高度,格局决定结局。

    几年前,我们给爸妈手机上下载了一款神奇的软件,他的名字叫微信。几年后,爸妈就开始吐槽我们的微信头像了。

    爸妈对我们微信头像的关注程度远胜过我们的衣食住行,我在新浪微博上看到了这张统计图。

    640?wx_fmt=jpeg

    图片来源:新浪微博

    所以,你就会被催着经常换头像了。

    640?wx_fmt=jpeg

    图片来源:新浪微博


    但是,如果你想来个「绝地反击」、「以牙还牙」,让他们换头像,那你还是太嫩了。

    640?wx_fmt=jpeg

    图片来源:新浪微博

    640?wx_fmt=gif

    怎么办啊?身为技术人儿,我们当然不会被这些问题难住。今天,pk哥就教你如何用技术来个「绝地求生」。

    我要让爸妈看看我所有微信好友的头像都是什么样,让他们学会适应,适应我们年轻人的头像。

    640?wx_fmt=gif

    所以,接下来我要做的,就是收集我微信好友所有好友的微信头像,并把这些头像全部整合在一张图上,然后我们保存或者收藏。下次,你爸妈让你再换头像时,哼哼,你就把这大图发给他们。

    640?wx_fmt=png

    以上是我的所有微信好友头像的「全家福」,微信好友比较多。跟着 pk 哥学,分分钟教会你做一张属于你自己微信圈所有好友头像的「全家福」。

    项目环境

    语言环境Python 3.6

    导入库:itchat、PIL

    因为我们要获取微信头像,所以我们又要请出我们的老朋友 itchat 库了,这个库应该不陌生了,因为 pk 哥之前用它做过微信机器人:用 Python 玩微信,机器人陪你唠嗑;用它绘制过微信好友的签名的词云图:Python爬取微信,我发现了之前没发现的秘密!;用它查看好友撤回的消息:Python骚操作 | 还原已撤回的微信消息;用它给你的女神说早安或者晚安:你还单身?Python 教你脱单

    头像收集完成后,我们还有对所有头像进行合成处理,所以我们还要引入一个 PIL 图像处理库。

    所以,有这么强大的库支持我们,我们一定可以「绝地反击」、「反败为胜」的,相信我,嘿嘿。

    以上说的库请自行用 pip 命令安装好,导入就行。

    import itchat
    import PIL.Image as Image
    import math
    import os

    登录微信

    我们首先用 itchat 库登录我们的微信,获取所有好友信息。

    itchat.auto_login(True)  # 登录微信
    friends = itchat.get_friends(update=True)[0:]

    保存头像

    itchat 库中有个自带的获取微信头像的方法:get_head_img,直接调用即可。获取头像后,我们把头像以数字递增命名并保存在我们规定的目录中即可。

    640?wx_fmt=png

    上面这个保存图片的函数,我们看到有个参数,是保存图片的主目录,这个主目录如果不存在,我们就创建一个。我们单独写一个函数来定义这个目录并返回它。

    640?wx_fmt=png

    以上两个简单的函数,我们就把微信好友的所有图像保存到指定的目录了。

    头像合成

    接下来我们需要做的是把这所有的头像制作成「全家福」。

    这时,该另外一个库出场了,他就是图片处理库:PIL 库。

    接下来,用这个库,新建一个一个白色背景的新图片,根据图片的大小,把所有图片按照算好的尺寸填入到这个大画布中。处理完成后,把「全家福」也保存在头像同样的目录下。

    640?wx_fmt=png

    再然后,接下来就不用 pk 哥我教了吧,把「全家福」发到自己微信,保存或者收藏。下次,你妈再喊你换头像时,你就把这张全家福发给她,告诉她,别人的头像都是这样的,我就不换,哼哼。

    不说了,我去给我妈发制作好的微信头像「全家福」了,下次再聊。

    640?wx_fmt=gif

    想要获取本文完整版代码,请在公众号后台回复「微信头像」获取。

    ------------------- End -------------------

    往期精彩文章推荐:

    640?wx_fmt=png

    欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

    想加入Python学习群请在后台回复【入群

    万水千山总是情,点个【在看】行不行

    展开全文
  • 码畜的无力吐槽

    2012-05-11 13:58:14
    跳动的头像在闪动,打开一看是昔日的舍友,问了我很多工作上的事,我一往如旧的提着小借口上班没事做,学不到什么。 好友听了给我讲述了他做过什么大的项目用到了什么技术,现在需要什么样的...
    听君一席话,胜读十年书。当真不假,跪拜这位说出这句话的.
    今天还是和昔日一样,睡到到点才起床,急急忙忙洗漱提着衣服上班。来到公司还是和往常一样登上QQ,玩玩微博(有多少程序猿中标)。一个IPhone
    跳动的头像在闪动,打开一看是昔日的舍友,问了我很多工作上的事,我一往如旧的提着小借口上班没事做,学不到什么。
    好友听了给我讲述了他做过什么大的项目用到了什么技术,现在需要什么样的人才和技术。我一听懵了!当初的他那里去了,
    整日与game做伴的他,起来快晚上的他,那里去了!怎么变化那么大。心里联想到了很多很多,怎么自己一天没事还在玩玩微博,
    看看小说,一天一天的度过了。当初那份憧憬,冲动,理想远远抛开脑后,整日想着拿那几千块混日子.没有一点事业心没有一点上进心.
    身边的朋友一个比一个好,无奈只能向一个好友吐槽,好友说:是不是有什么启发。我立马吐一堆想法出去,好友给我讲述着她的经历
    以前吃过很多苦看见身边的朋友家人的经历,改变自己的人生只能自己改变,我们没有生在多么富裕的家庭,只能靠自己的勤快和手段来改变。
    我想起了多年前看见的一句话:变强是生存唯一的出路 勤奋是生存的必须付出 手段只是为了更好的生存!
    每次有这样的念头时候,总是三分钟热度,时间久了渐渐淡忘了。希望这次是彻彻底底的觉悟。多少没有觉悟的程序员改清醒了,一起奋斗吧。现在房价那么高,娶老婆那么奢侈,以前爷爷结婚半斗米,爸爸结婚半条猪,现在结婚半个肾啊!真心伤不起.
    各位大牛扔砖头的扔砖头教育的教育!
    展开全文
  • 但它也有一些缺点让很多开发者忍不住吐槽,比如它在函数式编程、通道 / 并行切片处理、内存垃圾回收、错误处理等方面都有一些问题。本文作者将 Go 存在的“硬伤”设计记录了下来,与大家分享、讨论。p.s. 如果你是...
    733e0758279e1a19e6d928db0e9ea8a4.png

    Go 是一门非常不错的编程语言,并且逐渐取代 Python 成为很多人的首选语言。但它也有一些缺点让很多开发者忍不住吐槽,比如它在函数式编程、通道 / 并行切片处理、内存垃圾回收、错误处理等方面都有一些问题。

    本文作者将 Go 存在的“硬伤”设计记录了下来,与大家分享、讨论。

    p.s. 如果你是golang初学者,下图的资料可以下载看看,golang的参考资料真少得可怜。点击小编头像,关注之后私信回复“资料”即可获取。

    4e830086e05f07740a8aa22a49cc229b.png

    Go 是一门非常不错的编程语言。然而,我在公司的 Slack 编程频道中对 Go 的抱怨却越来越多(猜到我是做啥了的吧?),因此我认为有必要把这些吐槽写下来并放在这里,这样当人们问我抱怨什么时,我给他们一个链接就行了。

    0e9f67f4f9b8f9dd7991d46932f8d629.png

    先声明一下,在过去的一年里,我大量地使用 Go 语言开发命令行应用程序、scc、lc 和 API。 其中既有供客户端调用的大规模 API,也有即将在 https://searchcode.com/ 使用的 语法高亮显示器。

    我这些批评全部是针对 Go 语言的。但是,我对使用过的每种语言都有不满。 我非常赞同下面的话:

    “世界上只有两种语言:人们抱怨的语言和没人使用的语言。” —— Bjarne Stroustrup

    不支持函数式编程

    我并不是一个函数式编程狂热者。 说到 Lisp 语言,我首先想到的是语言障碍。

    这可能是 Go 语言最大的痛点了。 与大部分人不同,我不希望 Go 支持泛型,因为它会为多数 Go 项目带来不必要的复杂性。 我希望 Go 语言支持适用于内置切片和 Map 的函数式方法。 切片和 Map 具有通用性,并且可以容纳任何类型,从这个意义上讲,它们已经非常神奇。在 Go 语言中只有利用接口才能实现类似效果,但这样一来将丧失安全性和速度。

    例如,请考虑下面的问题。

    给定两个字符串切片,找出二者都包含的字符串,并将其放入新的切片以备后用。

    existsBoth := []string{}for _, first := range firstSlice {for _, second := range secondSlice {if first == second {existsBoth = append(existsBoth, proxy)break}}}

    上面是一个用 Go 语言实现的简单方案。当然还有其它方法,比如借助 Map 来减少运行时间。这里我们假设内存足够用或者切片都不太大,同时假设优化运行时间带来的复杂性远超收益,因此不值得优化。作为对比,使用 Java 流和函数式编程把相同的逻辑重写如下:

    var existsBoth = firstList.stream().filter(x -> secondList.contains(x)).collect(Collectors.toList());

    上面的代码隐藏了算法的复杂性,但是,你更容易理解它实际做的事情。

    与 Go 代码相比,Java 代码的意图一目了然。 真正灵活之处在于,添加更多的过滤条件易如反掌。 如果使用 Go 语言添加下面例子中的过滤条件,我们需要在嵌套的 for 循环中再添加两个 if 条件。

    var existsBoth = firstList.stream().filter(x -> secondList.contains(x)).filter(x -> x.startsWith(needle)).filter(x -> x.length() >= 5).collect(Collectors.toList());

    有些借助 go generate 命令的项目可以帮你实现上面的一些功能。但是,如果缺少良好的 IDE 支持,抽取循环中的语句作为单独的方法是一件低效又麻烦的事情 。

    通道 / 并行切片处理

    Go 通道通常都很好用。 但它并不能提供无限的并发能力。它确实存在一些会导致永久阻塞的问题,但这些问题用竞争检测器能很容易地解决。对于数量不确定或不知何时结束的流式数据,以及非 CPU 密集型的数据处理方法,Go 通道都是很好的选择。

    Go 通道不太适合并行处理大小已知的切片。

    77e83d7b30a16fe9040ceb446f5684e6.png

    多线程编程、理论和实践

    几乎在其它任何语言中,当列表或切片很大时,为了充分利用所有 CPU 内核,通常都会使用并行流、并行 Linq、Rayon、多处理或其它语法来遍历列表。遍历后的返回值是一个包含已处理元素的列表。 如果元素足够多,或者处理元素的函数足够复杂,多核系统会更高效。

    但是在 Go 语言中,实现高效处理所需要做的事情却并不显而易见。

    一种可能的解决方案是为切片中的每个元素都创建一个 Go 例程。 由于 Go 例程的开销很低,因此从某种程度上来说这是一个有效的策略。

    toProcess := []int{1,2,3,4,5,6,7,8,9}var wg sync.WaitGroupfor i, _ := range toProcess {wg.Add(1)go func(j int) {toProcess[j] = someSlowCalculation(toProcess[j])wg.Done()}(i)}wg.Wait()fmt.Println(toProcess)

    上面的代码会保持切片中元素的顺序,但我们假设不必保持元素顺序。

    这段代码的第一个问题是增加了一个 WaitGroup,并且必须要记得调用它的 Add 和 Done 方法。这增加了开发人员的工作量。如果弄错了,这个程序不会产生正确的输出,结果是要么输出不确定,要么程序永不结束。此外,如果列表很长,你会为每个列表创建一个 Go 例程。正如我之前所说,这不是问题,因为 Go 能轻松搞定。问题在于,每个 Go 例程都会争抢 CPU 时间片。因此,这不是执行该任务的最有效方式。

    你可能希望为每个 CPU 内核创建一个 Go 例程,并让这些例程选取列表并处理。创建 Go 例程的开销很小,但是在一个非常紧凑的循环中创建它们会使开销陡增。当我开发 scc 时就遇到了这种情况,因此我采用了每个 CPU 内核对应一个 Go 例程的策略。在 Go 语言中,要这样做的话,你首先要创建一个通道,然后遍历切片中的元素,使函数从该通道读取数据,之后从另一个通道读取。我们来看一下。

    toProcess := []int{1,2,3,4,5,6,7,8,9}var input = make(chan int, len(toProcess))for i, _ := range toProcess {input 

    上面的代码创建了一个通道,然后遍历切片,将索引值放入通道。 接下来我们为每个 CPU 内核创建一个 Go 例程,操作系统会报告并处理相应的输入,然后等待,直到所有操作完成。这里有很多代码需要理解。

    然而,这种实现有待商榷。如果切片非常大,通道的缓冲区长度和切片大小相同,你可能不希望创建一个有这么大缓冲区的通道。因此,你应该创建另一个 Go 例程来遍历切片,并将切片中的值放入通道,完成后关闭通道。 但这样一来代码会变得冗长,因此我把它去掉了。我希望可以大概地阐明基本思路。

    使用 Java 语言大致这样实现:

    var firstList = List.of(1,2,3,4,5,6,7,8,9);firstList = firstList.parallelStream().map(this::someSlowCalculation).collect(Collectors.toList());

    通道和流并不等价。 使用队列去仿写 Go 代码的逻辑更好一些,因为它们更具有可比性,但我们的目的不是进行 1 对 1 的比较。 我们的目标是充分利用所有的 CPU 内核处理切片或列表。

    如果 someSlowCalucation 方法调用了网络或其它非 CPU 密集型任务,这当然不是问题。 在这种情况下,通道和 Go 例程都会表现得很好。

    这个问题与问题#1 有关。如果 Go 语言支持适用于切片 /Map 对象的函数式方法,那么就能实现这个功能。 但是,如果 Go 语言支持泛型,有人就可以把上面的功能封装成像 Rust 的 Rayon 一样的库,让每个人都从中受益,这就很令人讨厌了(我不希望 Go 支持泛型)。

    顺便说一下,我认为这个缺陷妨碍了 Go 语言在数据科学领域的成功,这也是为什么 Python 仍然是数据科学领域的王者。 Go 语言在数值操作方面缺乏表现力和能力,原因就是以上讨论的这些。

    垃圾回收器

    Go 的垃圾回收器做得非常不错。我开发的应用程序通常都会因为新版本的改进而变得更快。但是,它以低延迟为最高优先级。对于 API 和 UI 应用来说,这个选择完全可以接受。对于包含网络调用的应用,因为网络调用往往会是瓶颈,所以它也没问题。

    我发现的问题是 Go 对 UI 应用来讲一点也不好(我不知道它有任何良好的支持)。如果你想要尽可能高的吞吐量,那这个选择会让你很受伤。这是我开发 scc 时遇到的一个主要问题。scc 是一个 CPU 密集型的命令行工具。为了解决这个问题,我不得不在代码里添加逻辑关闭 GC,直到达到某个阈值。但是我又不能简单的禁用它,因为有些任务会很快耗尽内存。

    缺乏对 GC 的控制时常令人沮丧。你得学会适应它,但是,有时候如果能做到这样该有多好:“嘿,这些代码确实需要尽可能快地运行,所以如果你能在高吞吐模式运行一会,那就太好了。”

    2aec5318bd7ab13bf5022dfa194573b0.png

    我认为这种情况在 Go 1.12 版本中有所改善,因为 GC 得到了进一步的改进。但仅仅是关闭和打开 GC 还不够,我期望更多的控制。 如果有时间我会再进行研究。

    错误处理

    我并不是唯一一个抱怨这个问题的人,但我不吐不快。

    value, err := someFunc()if err != nil {// Do something here}err = someOtherFunc(value)if err != nil {// Do something here}

    上面的代码很乏味。 Go 甚至不会像有些人建议的那样强制你处理错误。 你可以使用“_”显式忽略它(这是否算作对它进行了处理呢?),你还可以完全忽略它。比如上面的代码可以重写为:

    value, _ := someFunc()someOtherFunc(value)

    很显然,我显式忽略了 someFunc 方法的返回。someOtherFunc(value)方法也可能返回错误值,但我完全忽略了它。 这里的错误都没有得到处理。

    说实话,我不知道如何解决这个问题。 我喜欢 Rust 中的“?” 运算符,它可以帮助避免这种情况。V-Lang https://vlang.io/ 看起来也可能有一些有趣的解决方案。

    另一个办法是使用可选类型(Optional types)并去掉 nil,但这不会发生在 Go 语言里,即使是 Go 2.0 版本,因为它会破坏向后兼容性。

    结语

    Go 仍然是一种非常不错的语言。如果你让我写一个 API,或者完成某个需要大量磁盘 / 网络调用的任务,它依然是我的首选。现在我会用 Go 而非 Python 去完成很多一次性任务,数据合并任务是例外,因为函数式编程的缺失使执行效率难以达到要求。

    与 Java 不同,Go 语言尽量遵循“最小惊喜“原则。比如可以这样比较字两个符串是否相等:stringA == stringB。但如果你这样比较两个切片,那么会产生编译错误。这些都是很好的特性。

    的确,二进制文件还可以变的更小(一些 编译标志和 upx 可以解决这个问题),我希望它在某些方面变得更快,GOPATH 虽然不是很好,但也没有人们想得那么糟糕,默认的单元测试框架缺少很多功能,模拟(mocking)有点让人痛苦......

    它仍然是我使用过的效率较高的语言之一。我会继续使用它,虽然我希望 https://vlang.io/ 能最终发布,并解决我的很多抱怨。V 语言或 Go 2.0,Nim 或 Rust。现在有很多很酷的新语言可以使用,我们开发人员真的要被宠坏了。

    展开全文
  • 1.lync 和 outlook不能取消头像,不能恢复原来没有头像的状态。 2.lync的offline或者away的消息不能发送;应该临时保存,用户active状态下由云端发送。 3.onenote的表格功能不能像excel一样方便,总是会是以文本的...

    1.lync 和 outlook不能取消头像,不能恢复原来没有头像的状态。

    2.lync的offline或者away的消息不能发送;应该临时保存,用户active状态下由云端发送。

    3.onenote的表格功能不能像excel一样方便,总是会是以文本的形式保存;导致会格式错误。

    -Lijun Wu

    转载于:https://www.cnblogs.com/midsummer2014/p/4166833.html

    展开全文
  • 2K Sports最新的NBA2K21已经推出了一段时间,但是连续好几个补丁下来,勇士巨星史蒂芬-库里的脸孔失真...有球迷吐槽说:“谁能告诉我,2K21中这个看着跟土豆一样的孩子是谁?这是库里吗?完全不像啊!”是的,库里现...
  • 本文来源于程序员开源社区微信更新了7.0.13版本,iOS用户也可以修改微信号,版本更新还加入了跟随...当你想要拍一个朋友的时候,直接轻轻点击两下对方的头像,对话框中就会出现“你拍了拍XXX”的字样,你的手机也...
  • 我想大家对头像上传功能在陌生不过了把,每个人都应该用过,当然,从不更改...难得吐槽一下,不知道是我人品问题还是没用对。如图: 准备工作好了,废话不多说了,一般常用的头像上传有两种(据我所知):普通的文件...
  • 查收我的礼物大家好我是你们的吐槽姐昨天留言点赞第一名的是【忘川彼岸】吐槽姐每天都会在文章中插入音乐请各位继续留言评论推荐好听的音乐歌曲谁推荐的音乐歌曲点赞最多就会被录用个性男生女生头像2020年10月9日 ...
  • 就是吐槽创业好难。自己能力不足,基本上我获得的经验都是segmentfault上面一个个提问得来的。在这里,我要感谢哪些帮助过我的人,不管是多么幼稚的问题都会有人热心的回答你。当然,我又有了新问题。就是陌陌的八张...
  • 首先吐槽一下:小编最近想更换个人CSDN博客的头像, 发现PC端网页上怎么搞都不成功。问了同事,竟然也遇到同样的问题, 根据小编的性格,这是不能容忍的,一个CSDN 技术网站,居然头像都不给换,不可能呀。。。。。 ...
  • 如何更换个人CSDN博客 用户头像

    千次阅读 多人点赞 2017-01-25 12:45:13
    前言首先吐槽一下:小编最近想更换个人CSDN博客的头像, 发现PC端网页上怎么搞都不成功。问了同事,竟然也遇到同样的问题, 根据小编的性格,这是不能容忍的,一个CSDN 技术网站,居然头像都不给换,不可能呀。。。...
  • 用python批量获取微信头像

    千次阅读 2017-08-04 09:53:05
    爬虫新手,第一次写博客。 目前正在实习,最近领导给了我一个excel表格,里面有3000+微信公众号的名字,微信号,让我...2.写代码工具:Notepad++,不得不吐槽一下python的tab和空格之间的关系总是让我很头疼,但还好Not
  • 几年后,爸妈就开始吐槽我们的微信头像了。 爸妈对我们微信头像的关注程度远胜过我们的衣食住行,我在新浪微博上看到了这张统计图。 图片来源:新浪微博 所以,你就会被催着经常换头像了。 图片来源:新浪...
  • 最近刚好跟朋友在讨论百度外卖上那个头像波浪效果,想想好像蛮好玩的,写一个玩玩,参考了 乔同X的博客 使用 CADisplayLink,并改成 Swift ...欢迎大家吐槽。 效果图: 使用方法 // 初始化 let frame = CGRect(x:...
  • JAVA + js 实现 头像上传及裁剪功能

    万次阅读 2012-10-23 17:47:44
    题记 我想大家对头像上传功能在陌生不过了把,每个人都应该用过,当然,从不更改头像的大侠除外...难得吐槽一下,不知道是我人品问题还是没用对。如图: 准备工作 好了,废话不多说了,一般常用的头像上传有
  • 几年后,爸妈就开始吐槽我们的微信头像了。爸妈对我们微信头像的关注程度远胜过我们的衣食住行,我在新浪微博上看到了这张统计图。图片来源:新浪微博所以,你就会被催着经常换头像了。图片来源:新浪微博但是,如果...
  • 这两周,大家的朋友圈被一套“我们是谁”“我们做什么”的吐槽表情包疯狂刷屏了,有大牛就做出了这样一个小程序,可以自己动手制作“我们是谁”表情包,简单易上手,跟着小编来看看吧!头像姬 简介:“我们是谁” ...
  • 当人多的时候(例如上图所示) 地图滑动起来就能感觉到明显顿卡 那种不流畅感能折磨死人 所以 自然我们要解决这个问题(等等 先不要吐槽为什么不用地图聚合 因为这已经是地图放到最大了 聚合不适合这次的问题讨论) ...
  • 前段时间,闺蜜微信里问向我吐槽:你说为啥老人就那么喜欢给孩子睡扁头呀。我家孩子刚出院回家,他奶奶就已经准备好一本书,特意交代我说要让孩子枕着睡觉,这样睡出来的头型会更加好看。我就不明白了,扁头真的就有...
  • 引言这段时间集成了最新的环信,看文档,下载环信demo,问题多得一匹,这里吐槽一下环信这个专业做即时通讯的,就这水准是有点过分了呀。还是一个非常不爽的就是环信Android的离线推送在国内用不了,还需要单独集成...
  • 时隔很久,HeyUI终于有了一些新的组件补充了 这个组件都是来自于近期的一些开发思考,...同时也欢迎大家的吐槽:Issue Clipboard复制剪切板 这个组件是基于我们一直使用的clipboard.js插件引起的一些问题的思考。 ...
  • 吐槽:爷吐了,就一个Github头像加载不出来,试了博客高赞的方法——修改DNS、修改host文件,都不行 直到遇到这个大佬的博客https://www.cnblogs.com/stars-one/p/14300463.html 先看上方链接的方法 我做一...
  • 就是吐槽创业好难。自己能力不足,基本上我获得的经验都是segmentfault上面一个个提问得来的。在这里,我要感谢哪些帮助过我的人,不管是多么幼稚的问题都会有人热心的回答你。当然,我又有了新问题。就是陌陌的八张...
  • 父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像。 最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生日,在群里没说生日快乐,吐槽我没礼貌。这种群常年...
  • 父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像。最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生日,在群里没说生日快乐,吐槽我没礼貌。这种群常年发...
  • 父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像。最近 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生日,在群里没说生日快乐,吐槽我没礼貌。这种群常年发小...
  • 父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像。最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生日,在群里没说生日快乐,吐槽我没礼貌。这种群常年发...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

吐槽头像