您的位置:首页 > 奇异游戏 >

会go加速免费版(八部门联合发文,和你的快递有关)

导读 会go加速免费版文章列表:1、八部门联合发文,和你的快递有关2、Go 语言在极小硬件上的运用一3、史上最强安卓间谍软件Skygofree4、拳头新游Valorant一周初体验:更像CS:GO的FPS让

会go加速免费版文章列表:

会go加速免费版(八部门联合发文,和你的快递有关)

八部门联合发文,和你的快递有关

纸箱、塑料袋

填充物、商品自带包装

……

你有没有过拿到过类似包装繁琐的快递?

近日,国务院办公厅转发了国家发改委等八部门联合发布的《关于加快推进快递包装绿色转型的意见》。《意见》提出快递包装绿色转型目标,两年内,电商快件不再二次包装比例达到 85%,可循环快递包装应用规模达 700 万个。到2025年,快递包装领域全面建立与绿色理念相适应的法律、标准和政策体系;电商快件基本实现不再二次包装,可循环快递包装应用规模达 1000 万个。

南京一家圆通快递网点,有客人取包裹时直接将快递箱留下,只带走物品。快递点负责人表示,他们已设置快递包装回收点,回收后的包装可以二次利用。目前,快递的二次包装率已经很低,很多商家邮寄的快递包装符合邮寄标准,他们只需要贴单即可。

江苏省邮政管理局市场监管处负责人表示,虽然之前各部门都在推进快递绿色包装,但是没有形成协同联动。这次的意见更加系统全面,是对快递包装全过程全环节的指导意见,比如要推进快递包装材料源头减量、减少电商快件二次包装以及包装要循环回收等。

江苏从2019年起就在全面推进快递包装绿色化,目前效果非常明显。截至今年10 月,全省45毫米以下瘦身胶带使用率达到98.6%,电商快件不再二次包装率达到97.6%,快递企业分拨中心和网点所使用的循环中转袋使用率接近95%。此外,全省已有超过8000个邮政快递网点设置了包装废弃物的回收装置,达到城区自营网点的 92%以上。

负责人表示,现阶段推进快递绿色包装,需要各地政府进行政策支持和资金引导,同时快递包装生产企业要改进技术,生产出既环保又相对低价格的包装材料。当然,更需要广大用户积极配合,自备包装材料时可选用可降解的包装物,从点点滴滴中做到为快递“减负”。

来源:零距离| 转载请注明来源:南京零距离

来源: 南京零距离

Go 语言在极小硬件上的运用一

Go 语言,能在多低下的配置上运行并发挥作用呢?

-- Michał Derkacz(作者)

Go 语言,能在多低下的配置上运行并发挥作用呢?

我最近购买了一个特别便宜的开发板:

STM32F030F4P6

我购买它的理由有三个。首先,我(作为程序员)从未接触过 STM320 系列的开发板。其次,STM32F10x 系列使用也有点少了。STM320 系列的 MCU 很便宜,有更新一些的外设,对系列产品进行了改进,问题修复也做得更好了。最后,为了这篇文章,我选用了这一系列中最低配置的开发板,整件事情就变得有趣起来了。

硬件部分

STM32F030F4P6 给人留下了很深的印象:

CPU: Cortex M0 48 MHz(最低配置,只有 12000 个逻辑门电路)

RAM: 4 KB,

Flash: 16 KB,

ADC、SPI、I2C、USART 和几个定时器

以上这些采用了 TSSOP20 封装。正如你所见,这是一个很小的 32 位系统。

软件部分

如果你想知道如何在这块开发板上使用 Go 编程,你需要反复阅读硬件规范手册。你必须面对这样的真实情况:在 Go 编译器中给 Cortex-M0 提供支持的可能性很小。而且,这还仅仅只是第一个要解决的问题。

我会使用 Emgo ,但别担心,之后你会看到,它如何让 Go 在如此小的系统上尽可能发挥作用。

在我拿到这块开发板之前,对 stm32/hal 系列下的 F0 MCU 没有任何支持。在简单研究 参考手册 后,我发现 STM32F0 系列是 STM32F3 削减版,这让在新端口上开发的工作变得容易了一些。

如果你想接着本文的步骤做下去,需要先安装 Emgo

cd $HOMEgit clone https://github.com/ziutek/emgo/cd emgo/egcgo install

然后设置一下环境变量

export EGCC=path_to_arm_gcc # eg. /usr/local/arm/bin/arm-none-eabi-gccexport EGLD=path_to_arm_linker # eg. /usr/local/arm/bin/arm-none-eabi-ldexport EGAR=path_to_arm_archiver # eg. /usr/local/arm/bin/arm-none-eabi-arexport EGROOT=$HOME/emgo/egrootexport EGPATH=$HOME/emgo/egpathexport EGARCH=cortexm0export EGOS=noosexport EGTARGET=f030x6

更详细的说明可以在 Emgo 官网上找到。

要确保 egc 在你的 PATH 中。 你可以使用 go build 来代替 go install,然后把 egc 复制到你的 $HOME/bin 或 /usr/local/bin 中。

现在,为你的第一个 Emgo 程序创建一个新文件夹,随后把示例中链接器脚本复制过来:

mkdir $HOME/firstemgocd $HOME/firstemgocp $EGPATH/src/stm32/examples/f030-demo-board/blinky/script.ld .

最基本程序

在 main.go 文件中创建一个最基本的程序:

package mainfunc main() {}

文件编译没有出现任何问题:

$ egc$ arm-none-eabi-size cortexm0.elf text data bss dec hex filename 7452 172 104 7728 1e30 cortexm0.elf

第一次编译可能会花点时间。编译后产生的二进制占用了 7624 个字节的 Flash 空间(文本 数据)。对于一个什么都没做的程序来说,占用的空间有些大。还剩下 8760 字节,可以用来做些有用的事。

不妨试试传统的 “Hello, World!” 程序:

package mainimport "fmt"func main() { fmt.Println("Hello, World!")}

不幸的是,这次结果有些糟糕:

$ egc/usr/local/arm/bin/arm-none-eabi-ld: /home/michal/P/go/src/github.com/ziutek/emgo/egpath/src/stm32/examples/f030-demo-board/blog/cortexm0.elf section `.text' will not fit in region `Flash'/usr/local/arm/bin/arm-none-eabi-ld: region `Flash' overflowed by 10880 bytesexit status 1

“Hello, World!” 需要 STM32F030x6 上至少 32KB 的 Flash 空间。

fmt 包强制包含整个 strconv 和 reflect 包。这三个包,即使在精简版本中的 Emgo 中,占用空间也很大。我们不能使用这个例子了。有很多的应用不需要好看的文本输出。通常,一个或多个 LED,或者七段数码管显示就足够了。不过,在第二部分,我会尝试使用 strconv 包来格式化,并在 UART 上显示一些数字和文本。

闪烁

我们的开发板上有一个与 PA4 引脚和 VCC 相连的 LED。这次我们的代码稍稍长了一些:

package mainimport ( "delay" "stm32/hal/gpio" "stm32/hal/system" "stm32/hal/system/timer/systick")var led gpio.Pinfunc init() { system.SetupPLL(8, 1, 48/8) systick.Setup(2e6) gpio.A.EnableClock(false) led = gpio.A.Pin(4) cfg := &gpio.Config{Mode: gpio.Out, Driver: gpio.OpenDrain} led.Setup(cfg)}func main() { for { led.Clear() delay.Millisec(100) led.Set() delay.Millisec(900) }}

按照惯例,init 函数用来初始化和配置外设。

system.SetupPLL(8, 1, 48/8) 用来配置 RCC,将外部的 8 MHz 振荡器的 PLL 作为系统时钟源。PLL 分频器设置为 1,倍频数设置为 48/8 =6,这样系统时钟频率为 48MHz。

systick.Setup(2e6) 将 Cortex-M SYSTICK 时钟作为系统时钟,每隔 2e6 次纳秒运行一次(每秒钟 500 次)。

gpio.A.EnableClock(false) 开启了 GPIO A 口的时钟。False 意味着这一时钟在低功耗模式下会被禁用,但在 STM32F0 系列中并未实现这一功能。

led.Setup(cfg) 设置 PA4 引脚为开漏输出。

led.Clear() 将 PA4 引脚设为低,在开漏设置中,打开 LED。

led.Set() 将 PA4 设为高电平状态,关掉LED。

编译这个代码:

$ egc$ arm-none-eabi-size cortexm0.elf text data bss dec hex filename 9772 172 168 10112 2780 cortexm0.elf

正如你所看到的,这个闪烁程序占用了 2320 字节,比最基本程序占用空间要大。还有 6440 字节的剩余空间。

看看代码是否能运行:

$ openocd -d0 -f interface/stlink.cfg -f target/stm32f0x.cfg -c 'init; program cortexm0.elf; reset run; exit'Open On-Chip Debugger 0.10.0 dev-00319-g8f1f912a (2018-03-07-19:20)Licensed under GNU GPL v2For bug reports, read http://openocd.org/doc/doxygen/bugs.htmldebug_level: 0adapter speed: 1000 kHzadapter_nsrst_delay: 100none separateadapter speed: 950 kHztarget halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x0800119c msp: 0x20000da0adapter speed: 4000 kHz** Programming Started **auto erase enabledtarget halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000003a msp: 0x20000da0wrote 10240 bytes from file cortexm0.elf in 0.817425s (12.234 KiB/s)** Programming Finished **adapter speed: 950 kHz

在这篇文章中,这是我第一次,将一个短视频转换成 动画 PNG 。我对此印象很深,再见了 YouTube。 对于 IE 用户,我很抱歉,更多信息请看 apngasm 。我本应该学习 HTML5,但现在,APNG 是我最喜欢的,用来播放循环短视频的方法了。

STM32F030F4P6

更多的 Go 语言编程

如果你不是一个 Go 程序员,但你已经听说过一些关于 Go 语言的事情,你可能会说:“Go 语法很好,但跟 C 比起来,并没有明显的提升。让我看看 Go 语言的通道和协程!”

接下来我会一一展示:

import ( "delay" "stm32/hal/gpio" "stm32/hal/system" "stm32/hal/system/timer/systick")var led1, led2 gpio.Pinfunc init() { system.SetupPLL(8, 1, 48/8) systick.Setup(2e6) gpio.A.EnableClock(false) led1 = gpio.A.Pin(4) led2 = gpio.A.Pin(5) cfg := &gpio.Config{Mode: gpio.Out, Driver: gpio.OpenDrain} led1.Setup(cfg) led2.Setup(cfg)}func blinky(led gpio.Pin, period int) { for { led.Clear() delay.Millisec(100) led.Set() delay.Millisec(period - 100) }}func main() { go blinky(led1, 500) blinky(led2, 1000)}

代码改动很小: 添加了第二个 LED,上一个例子中的 main 函数被重命名为 blinky 并且需要提供两个参数。 main 在新的协程中先调用 blinky,所以两个 LED 灯在并行使用。值得一提的是,gpio.Pin 可以同时访问同一 GPIO 口的不同引脚。

Emgo 还有很多不足。其中之一就是你需要提前规定 goroutines(tasks) 的最大执行数量。是时候修改 script.ld 了:

ISRStack = 1024;MainStack = 1024;TaskStack = 1024;MaxTasks = 2;INCLUDE stm32/f030x4INCLUDE stm32/loadflashINCLUDE noos-cortexm

栈的大小需要靠猜,现在还不用关心这一点。

$ egc$ arm-none-eabi-size cortexm0.elf text data bss dec hex filename 10020 172 172 10364 287c cortexm0.elf

另一个 LED 和协程一共占用了 248 字节的 Flash 空间。

STM32F030F4P6

通道

通道是 Go 语言中协程之间相互通信的一种 推荐方式 。Emgo 甚至能允许通过中断处理来使用缓冲通道。下一个例子就展示了这种情况。

package mainimport ( "delay" "rtos" "stm32/hal/gpio" "stm32/hal/irq" "stm32/hal/system" "stm32/hal/system/timer/systick" "stm32/hal/tim")var ( leds [3]gpio.Pin timer *tim.Periph ch = make(chan int, 1))func init() { system.SetupPLL(8, 1, 48/8) systick.Setup(2e6) gpio.A.EnableClock(false) leds[0] = gpio.A.Pin(4) leds[1] = gpio.A.Pin(5) leds[2] = gpio.A.Pin(9) cfg := &gpio.Config{Mode: gpio.Out, Driver: gpio.OpenDrain} for _, led := range leds { led.Set() led.Setup(cfg) } timer = tim.TIM3 pclk := timer.Bus().Clock() if pclk < system.AHB.Clock() { pclk *= 2 } freq := uint(1e3) // Hz timer.EnableClock(true) timer.PSC.Store(tim.PSC(pclk/freq - 1)) timer.ARR.Store(700) // ms timer.DIER.Store(tim.UIE) timer.CR1.Store(tim.CEN) rtos.IRQ(irq.TIM3).Enable()}func blinky(led gpio.Pin, period int) { for range ch { led.Clear() delay.Millisec(100) led.Set() delay.Millisec(period - 100) }}func main() { go blinky(leds[1], 500) blinky(leds[2], 500)}func timerISR() { timer.SR.Store(0) leds[0].Set() select { case ch <- 0: // Success default: leds[0].Clear() }}//c:__attribute__((section(".ISRs")))var ISRs = [...]func(){ irq.TIM3: timerISR,}

与之前例子相比较下的不同:

    添加了第三个 LED,并连接到 PA9 引脚(UART 头的 TXD 引脚)。

    时钟(TIM3)作为中断源。

    新函数 timerISR 用来处理 irq.TIM3 的中断。

    新增容量为 1 的缓冲通道是为了 timerISR 和 blinky 协程之间的通信。

    ISRs 数组作为中断向量表,是更大的异常向量表的一部分。

    blinky 中的 for 语句被替换成 range 语句。

为了方便起见,所有的 LED,或者说它们的引脚,都被放在 leds 这个数组里。另外,所有引脚在被配置为输出之前,都设置为一种已知的初始状态(高电平状态)。

在这个例子里,我们想让时钟以 1 kHz 的频率运行。为了配置 TIM3 预分频器,我们需要知道它的输入时钟频率。通过参考手册我们知道,输入时钟频率在 APBCLK = AHBCLK 时,与 APBCLK 相同,反之等于 2 倍的 APBCLK。

如果 CNT 寄存器增加 1 kHz,那么 ARR 寄存器的值等于更新事件(重载事件)在毫秒中的计数周期。 为了让更新事件产生中断,必须要设置 DIER 寄存器中的 UIE 位。CEN 位能启动时钟。

时钟外设在低功耗模式下必须启用,为了自身能在 CPU 处于休眠时保持运行: timer.EnableClock(true)。这在 STM32F0 中无关紧要,但对代码可移植性却十分重要。

timerISR 函数处理 irq.TIM3 的中断请求。timer.SR.Store(0) 会清除 SR 寄存器里的所有事件标志,无效化向 NVIC 发出的所有中断请求。凭借经验,由于中断请求无效的延时性,需要在程序一开始马上清除所有的中断标志。这避免了无意间再次调用处理。为了确保万无一失,需要先清除标志,再读取,但是在我们的例子中,清除标志就已经足够了。

下面的这几行代码:

select {case ch <- 0: // Successdefault: leds[0].Clear()}

是 Go 语言中,如何在通道上非阻塞地发送消息的方法。中断处理程序无法一直等待通道中的空余空间。如果通道已满,则执行 default,开发板上的LED就会开启,直到下一次中断。

ISRs 数组包含了中断向量表。//c:__attribute__((section(".ISRs"))) 会导致链接器将数组插入到 .ISRs 节中。

blinky 的 for 循环的新写法:

for range ch { led.Clear() delay.Millisec(100) led.Set() delay.Millisec(period - 100)}

等价于:

for { _, ok := <-ch if !ok { break // Channel closed. } led.Clear() delay.Millisec(100) led.Set() delay.Millisec(period - 100)}

注意,在这个例子中,我们不在意通道中收到的值,我们只对其接受到的消息感兴趣。我们可以在声明时,将通道元素类型中的 int 用空结构体 struct{} 来代替,发送消息时,用 struct{}{} 结构体的值代替 0,但这部分对新手来说可能会有些陌生。

让我们来编译一下代码:

$ egc$ arm-none-eabi-size cortexm0.elf text data bss dec hex filename 11096 228 188 11512 2cf8 cortexm0.elf

新的例子占用了 11324 字节的 Flash 空间,比上一个例子多占用了 1132 字节。

采用现在的时序,两个闪烁协程从通道中获取数据的速度,比 timerISR 发送数据的速度要快。所以它们在同时等待新数据,你还能观察到 select 的随机性,这也是 Go 规范 所要求的。

STM32F030F4P6

开发板上的 LED 一直没有亮起,说明通道从未出现过溢出。

我们可以加快消息发送的速度,将 timer.ARR.Store(700) 改为 timer.ARR.Store(200)。 现在 timerISR 每秒钟发送 5 条消息,但是两个接收者加起来,每秒也只能接受 4 条消息。

STM32F030F4P6

正如你所看到的,timerISR 开启黄色 LED 灯,意味着通道上已经没有剩余空间了。

第一部分到这里就结束了。你应该知道,这一部分并未展示 Go 中最重要的部分,接口。

协程和通道只是一些方便好用的语法。你可以用自己的代码来替换它们,这并不容易,但也可以实现。接口是Go 语言的基础。这是文章中 第二部分 所要提到的.

在 Flash 上我们还有些剩余空间。

via: https://ziutek.github.io/2018/03/30/go_on_very_small_hardware.html

作者: Michał Derkacz 译者: wenwensnow 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接

史上最强安卓间谍软件Skygofree

最近,卡巴斯基实验室的研究人员发现了一款新的安卓间谍软件,功能十分强大,可以监听用户位置信息,通话记录,文字短信,日程活动等一系列重要的个人数据。

Skygofree是什么?

这款间谍软件名为“Skygofree”,研究人员已经基本确认制造商为一家专门生产销售类似监控软件的意大利公司。这款Skygofree 可以执行48种不同的监控指令,包括获取照片和视频,录制语音,自动连接到黑客指定的Wi-Fi网络,读取WhatsApp信息和盗窃手机上存储的其他信息,Skygofree甚至可以在某些特定的位置自动激活手机录音功能。

研究人员称这款恶意软件其实在2015年就出现了,其后几年功能不断增强,比如说通过利用安卓漏洞获取root权限,自身复杂的载荷结构,不断更新加强的监听能力,到今年,这款软件可以说是目前功能最强的间谍软件之一。

如何应对?

Skygofree虽然是一款功能复杂的恶意软件,但是其传播途径没什么新意:伪装成合法的应用被用户下载安装。目前为止,Skygofree只出现在意大利的几个网站上,受害者也只限于意大利的一些安卓用户。但是这并不代表别的国家的用户就不用担心了,因为别的类型的恶意软件同样可以利用Skygofree的强大的功能。

我们建议IT人员对公司设备进行管理,不管是公司自己的设备还是员工的设备(BYOD)都安装防病毒软件并且保证最新版本。公司的防火墙也应该进行设置,阻断含有恶意软件的网站。

个人安卓用户也应该多留意,目前来看这种恶意软件一般会伪装成一种更新,声称可以对你的设备进行提速。另外下载App的时候选择可靠的市场,下载之前一定要看确认一下开发者,评分和评论数目。

拳头新游Valorant一周初体验:更像CS:GO的FPS让我真香了

《Valorant》,作为拳头最新的一款射击游戏,最早在《英雄联盟》十周年庆典活动中它曾经以代号“A计划”首次出现在了玩家的面前,而如今随着时间的推移,这款游戏终于在前不久正式推出了内测版本,让少部分拥有测试资格的玩家们可以抢先体验下这款游戏。

而不得不说是《英雄联盟》开发商推出的新游戏,《Valorant》虽然才刚刚内测但却在游戏圈内引发了不小的轰动,甚至于部分玩家为了早日玩到游戏,使得一个拥有内测资格的账号曾一度被炒到了1200元的高价,从这足见拳头对于游戏市场的号召力。

作为抢先拿到内测资格的玩家之一,今天就来简单和大家聊聊《Valorant》这款游戏的初体验。

截止今天小天本人刚好已经体验了《Valorant》一周的时间,不得不说这款游戏让人感到了一种真香的感觉。

犹记得曾经这款游戏还是以“A计划”的代号释出游戏短片时,乍一看上去像是杂糅了《守望先锋》的英雄射击概念以及类似《CS:GO》的攻防玩法并没有让人提起多大的兴趣,给人的感觉就只是一款“没什么新意”的普通游戏而已。

但在经过了实际的游玩之后,这款游戏给人的实际感受则与宣传片有些许的不同,在《Valorant》宣传片里由于说各种角色你来我回的互丢技能的关系,让人觉得英雄技能在游戏中似乎起了非常大的作用。

然而在实际游玩过程中这款游戏给人的感受则更像是一个改款的《CS:GO》,比起技能的应用而言枪准才是更重要的一项游戏能力,玩家在游戏里需要记得压爆头线,懂得拉枪也是游戏里非常重要的一个能力,而至于说到游戏中技能的存在在一定程度上它更像是《彩六》里的战术技能,战略意义强但并不是《守望先锋》中那种放的好可以团灭对方的大杀器。

另外在玩法上这款游戏也与《CS:GO》非常相似,一样都是攻防轮换的玩法,游戏率先拿到13小局胜利的一方将会赢得比赛,而在打满12局后系统出于平衡性考量会进行一次攻防轮换,玩家们在游戏里为了尽可能的拿到优势需要学会顺风局强压以及逆风局控经济拿枪,《CS:GO》玩家应当会非常好的适应这款游戏的玩法。

当然了《Valorant》还有着和现有的游戏不太相似的地方,首先这个游戏具有着更大的地图,因此相比较于一般射击游戏安放炸弹的两个控制点也有一个新点位的增加,而由于这种A、B点向A、B、C点的转变,也使得游戏的打法更加多样,比如说除了无脑Rush B之外,现在我们也可以Rush C点了。

另外由于说游戏拥有了更大地图的关系,拳头还比较具有创新性地在其中加入了传送点的设计,通过传送点玩家可以更快的往返于两个位置,并且传送室内作为封闭空间可以让玩家暂时落脚,能够尽可能减少错误传送到敌方人群中而送人头的情况,并且由于传送门的设计也让游戏的节奏加快,玩法上也多样了起来。

当然这款游戏也不是没有缺点了,不知是因为目前处于内测服务器不稳定且人流量大的缘故还是说单纯的网络原因,开加速器上游戏ping值也偏高,并且偶尔还会出现突然瞬移的情况,不过好在这种问题比较少见,对游戏体验的影响比较小,不过游戏中当两个玩家的角色挨得过近时会出现卡顿的情况,这一点小问题可能会影响到玩家间拉枪的配合,不过相信不久拳头便会修复这个问题,毕竟现在还是封测期嘛。

另外还有一个问题就是游戏中角色的移动比较怪异,虽然说还是和《CS:GO》一样的操作方式,但是角色的位移动作感觉不是很流畅,有些影响视觉效果,这一点不知是故意这样设计还是说未来会进行修复。

最后,或许是出于兼容性的考量,《Valorant》的画面无论是乍一看上去还是玩过一段时间之后都觉得有点不像这个世代所应该出现的一款游戏,这种稍有些复古的风格可能会成为劝退玩家的一个重要原因,不过老实说这款游戏可玩性还是非常高的,并且游戏对电脑配置要求也很低,因此如果说对这个类型感兴趣的玩家,希望大家还是不要因为看到了画面就被劝退了。

好了,今天对于《Valorant》的游玩体验感受就分享到这里了,在下一篇文章里我将会主要带大家看看游戏中各个角色的技能使用,感兴趣的玩家不妨先点个关注,免得错过第一时间的分享。

2022海外突破限制回国看腾讯视频范薇、崔雨鑫恋爱角色请指定

《恋爱角色请指定》是由青年导演刘骐嘉执导,明明担任总策划与总编剧,范薇、崔雨鑫领衔主演,贾博雅、俞逸夫、成止微主演的奇幻都市青春甜宠剧,该剧于2022年2月21日在腾讯视频全网独播。

该剧讲述了恋爱脑的游戏公司艺术总监秦夕,失恋穿入游戏,意外发现游戏中男友竟是现实中的前男友,奇幻解锁双面男友恋爱游戏攻略!

2022海外突破限制回国看腾讯视频范薇、崔雨鑫《恋爱角色请指定》

秦夕,是一个虽然有点恋爱脑,但独立好强且智商极高的艺术总监,某天晚上,她带着爱心夜宵去犒劳加班的男友江寒,意外撞见男友的青梅竹马沈菁菁正准备偷亲熟睡时的男友。四年积攒的失望再次爆发,秦夕立马辞职分手毫不拖泥带水,势要划清界限。正巧手机里魔性推广《整蛊前男友》游戏,气头上的秦夕毫不犹豫地点进去,从而开启解锁双面男友的奇幻游戏恋爱攻略

免责声明:本文由用户上传,如有侵权请联系删除!