2020-04
19

秒杀的感觉真爽!

By xrspook @ 20:06:17 归类于: 扮IT

配合我的二分法搜索,10万单词找出397对回文词,我只需1.7秒。list.index()需要291秒,期间如果不输出单词,你绝对认为自己的电脑卡死了!参考答案用了70秒,而且搜出了885对,其中91对准确来说是91个,那些词自己跟自己回文,自己跟自己根本算不上两个词好吗!余下的397对是因为A词和B词算一对,B词和A词他们又输出了一遍。参考答案的语句很精炼,但特殊情况没有处理好。

赢了参考答案,真爽!!!

练习11:两个词如果互为逆序,就称它们是『翻转配对』。写一个函数来找一下在这个词汇表中所有这样的词对。

Exercise 11: Two words are a “reverse pair” if each is the reverse of the other. Write a program that finds all the reverse pairs in the word list. Solution: http://thinkpython2.com/code/reverse_pair.py.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
import time
def in_bisect(library, first, last, myword): # 二分法搜索,10万数据查询最多只需不到20步
    if first > last: # 这是一句拯救了我的条件
        return -1
    else:
        mid = (first + last)//2
        if myword == library[mid]:
            return mid
        elif library[mid] > myword:
            return in_bisect(library, first, mid-1, myword)
        else:
            return in_bisect(library, mid+1, last, myword)
j = 0
count = 0
library = []
fin = open('words.txt')
for line in fin:
    word = line.strip()
    library.append(word)
library.sort()
start = time.time()
for i in range(len(library)-1): # 二分法搜索 
    j = in_bisect(library, 0, len(library)-1, library[i][::-1])
    if j > -1 and library[i] < library[j]:
        print(library[i], library[j])
        count += 1
# for i in range(len(library)-1): # list.index()搜索
#     if library[i][::-1] in library:
#         j = library.index(library[i][::-1], 0, len(library)-1)
#         if library[i] < library[j]:
#             print(library[i], library[j])
#             j = 0
#             count += 1
print(count)
end = time.time()
print(end - start)
# abut tuba
# ad da
# ados soda
# agar raga
# agas saga
# agenes senega
# ah ha
# aider redia
# airts stria
# ajar raja
# alif fila
# am ma
# amen nema
# amis sima
# an na
# anger regna
# animal lamina
# animes semina
# anon nona
# ante etna
# are era
# ares sera
# aril lira
# arris sirra
# arum mura
# at ta
# ate eta
# ates seta
# auks skua
# avid diva
# avo ova
# ay ya
# bad dab
# bag gab
# bal lab
# bals slab
# ban nab
# bard drab
# bas sab
# bat tab
# bats stab
# bed deb
# ben neb
# bid dib
# big gib
# bin nib
# bins snib
# bird drib
# bis sib
# bog gob
# bos sob
# bots stob
# bows swob
# brad darb
# brag garb
# bud dub
# bun nub
# buns snub
# bur rub
# burd drub
# burg grub
# bus sub
# but tub
# buts stub
# cam mac
# cap pac
# cares serac
# cod doc
# cram marc
# cud duc
# dag gad
# dah had
# dahs shad
# dam mad
# dap pad
# dart trad
# daw wad
# debut tubed
# decal laced
# dedal laded
# deem meed
# deep peed
# deeps speed
# deer reed
# dees seed
# defer refed
# degami imaged
# deifier reified
# deil lied
# deke eked
# del led
# delf fled
# deliver reviled
# dels sled
# demit timed
# denier reined
# denies seined
# denim mined
# dens sned
# depot toped
# depots stoped
# derat tared
# derats stared
# dessert tressed
# desserts stressed
# devas saved
# devil lived
# dew wed
# dewans snawed
# dexes sexed
# dial laid
# dialer relaid
# diaper repaid
# dig gid
# dim mid
# dinar ranid
# diols sloid
# dirts strid
# do od
# dog god
# dom mod
# don nod
# doom mood
# door rood
# dor rod
# dormin nimrod
# dorp prod
# dos sod
# dot tod
# drail liard
# draw ward
# drawer reward
# draws sward
# dray yard
# dual laud
# ducs scud
# duel leud
# duo oud
# dup pud
# dups spud
# eat tae
# edile elide
# edit tide
# eel lee
# eh he
# elides sedile
# em me
# emes seme
# emir rime
# emit time
# emits stime
# enol lone
# er re
# ergo ogre
# eros sore
# ervil livre
# etas sate
# even neve
# evil live
# eviler relive
# fer ref
# fires serif
# flog golf
# flow wolf
# fool loof
# gal lag
# gals slag
# gam mag
# gan nag
# gar rag
# gas sag
# gat tag
# gats stag
# gel leg
# gelder redleg
# get teg
# gip pig
# girt trig
# gnar rang
# gnat tang
# gnats stang
# gnaws swang
# gnus sung
# got tog
# gul lug
# gulp plug
# guls slug
# gum mug
# gums smug
# guns snug
# gut tug
# habus subah
# hahs shah
# hales selah
# hap pah
# hay yah
# hey yeh
# ho oh
# hoop pooh
# hop poh
# is si
# it ti
# jar raj
# kay yak
# keel leek
# keels sleek
# keep peek
# keets steek
# kips spik
# knaps spank
# knar rank
# knits stink
# lager regal
# lair rial
# lap pal
# lares seral
# larum mural
# las sal
# leer reel
# lees seel
# leets steel
# leper repel
# lever revel
# levins snivel
# liar rail
# lin nil
# lion noil
# lit til
# lobo obol
# loom mool
# loons snool
# loop pool
# loops spool
# loot tool
# looter retool
# loots stool
# lop pol
# lotos sotol
# macs scam
# maes seam
# map pam
# mar ram
# marcs scram
# mart tram
# mat tam
# maws swam
# may yam
# meet teem
# meter retem
# mho ohm
# mils slim
# mir rim
# mis sim
# mon nom
# moor room
# moot toom
# mot tom
# mures serum
# mus sum
# muts stum
# namer reman
# nap pan
# naps span
# neep peen
# net ten
# neves seven
# new wen
# nip pin
# nips spin
# nit tin
# no on
# nolos solon
# nos son
# not ton
# notes seton
# now won
# nu un
# nus sun
# nut tun
# nuts stun
# oat tao
# oohs shoo
# oot too
# os so
# ow wo
# pacer recap
# pals slap
# pans snap
# par rap
# part trap
# parts strap
# pas sap
# pat tap
# paw wap
# paws swap
# pay yap
# peels sleep
# pees seep
# per rep
# pets step
# pins snip
# pis sip
# pit tip
# pols slop
# pools sloop
# poons snoop
# port trop
# ports strop
# pot top
# pots stop
# pow wop
# pows swop
# prat tarp
# pupils slipup
# puris sirup
# pus sup
# put tup
# raps spar
# rat tar
# rats star
# raw war
# ray yar
# rebus suber
# rebut tuber
# recaps spacer
# redes seder
# redips spider
# redraw warder
# redrawer rewarder
# rees seer
# reflet telfer
# reflow wolfer
# reknit tinker
# reknits stinker
# relit tiler
# remeet teemer
# remit timer
# rennet tenner
# repins sniper
# res ser
# rot tor
# sallets stellas
# saps spas
# sat tas
# saw was
# scares seracs
# secret terces
# seeks skees
# selahs shales
# sirs sris
# sit tis
# six xis
# skeets steeks
# skips spiks
# sleeps speels
# sleets steels
# slit tils
# sloops spools
# smart trams
# smuts stums
# snaps spans
# snaw wans
# snaws swans
# snips spins
# snit tins
# snoops spoons
# snoot toons
# snot tons
# snow wons
# sow wos
# spat taps
# spay yaps
# spirt trips
# spirts strips
# spit tips
# sports strops
# spot tops
# spots stops
# sprat tarps
# sprits stirps
# staw wats
# stew wets
# stow wots
# stows swots
# straw warts
# strow worts
# struts sturts
# swat taws
# sway yaws
# swot tows
# tav vat
# taw wat
# tew wet
# tort trot
# tow wot
# trow wort
# way yaw
# tort trot 
# tow wot
# trow wort
# way yaw
# 397, 291.1146504878998 # list.index()搜索
# 397, 1.7120981216430664 # 二分法搜索
# 885, 70.3680248260498 # 参考答案运行结果
2020-04
18

死磕二分法搜索

By xrspook @ 15:00:07 归类于: 扮IT

我是看着题目的中文版做题的

练习10:要检查一个单词是不是在上面这个词汇列表里,你可以使用 in 运算符,但可能会很慢,因为这个 in 运算符要从头到尾来搜索整个词汇表。我们知道这些单词是按照字母表顺序组织的,所以我们可以加速一下,用一种对折搜索(也叫做二元搜索),这个过程就和你在现实中用字典来查单词差不多。你在中间部分开始,看看这个要搜索的词汇是不是在中间位置的前面。如果在前面,就又对前半部分取中间,继续这样来找。当然了,不在前半部分,就去后半部分找了,思路是这样的。不论怎样,每次都会把搜索范围缩减到一半。如果词表包含了113809个单词,最多就是17步就能找到单词,或者能确定单词不在词汇表中。那么问题来了,写一个函数,名为 in_bisect,接收一个整理过的按照字母顺序排列的列表,以及一个目标值,在列表中查找这个值,找到了就返回索引位置,找不到就返回空。

做到死去活来词语在词汇表里有索引正确,没有时却会疯掉的时候我不得不去看答案,看到答案后傻眼了,答案对单词的判断只有True和False,再去找原题,我那个去,题目改了!不要求索引了好吗!

Exercise 10: To check whether a word is in the word list, you could use the in operator, but it would be slow because it searches through the words in order. Because the words are in alphabetical order, we can speed things up with a bisection search (also known as binary search), which is similar to what you do when you look a word up in the dictionary (the book, not the data structure). You start in the middle and check to see whether the word you are looking for comes before the word in the middle of the list. If so, you search the first half of the list the same way. Otherwise you search the second half. Either way, you cut the remaining search space in half. If the word list has 113,809 words, it will take about 17 steps to find the word or conclude that it’s not there. Write a function called in_bisect that takes a sorted list and a target value and returns True if the word is in the list and False if it’s not. Or you could read the documentation of the bisect module and use that! Solution: http://thinkpython2.com/code/inlist.py.

又纠结一番后我终于写出了一句“first > last”返回例外情况,终于,世界被拯救了!记录索引和不记录索引很不一样啊,按照参考答案的解法,i即便返回也永远是1,索引无能。纠结是有好处的,让我明白到二分法搜索有多么的高效,简直甩while循环几十条街,但如果真索引的话,估计我会很懒地直接用list.index(),虽然用之前必须用in历遍列表,判断是否存在。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import time
def in_bisect(library, first, last, myword): # 二分法搜索,10万数据查询最多只需不到20步
    if first > last: # 这是一句拯救了我的条件
        return None
    else:
        mid = (first + last)//2
        if myword == library[mid]:
            return mid
        elif library[mid] > myword:
            return in_bisect(library, first, mid-1, myword)
        else:
            return in_bisect(library, mid+1, last, myword)
myword = 'zoo' # input('myword is: ')
i = 0
library = []
fin = open('words.txt')
for line in fin:
    word = line.strip()
    library.append(word)
library.sort()
start = time.time()
 
# j = 0
# while i < len(library) - 1: # 我的脑洞第一反应用的循环
#     if myword == library[i]:
#         j = i
#         break
#     i += 1
# if j == 0:
#     print('myword is not in library')
# else:
#     print('index =', j)
 
# if myword in library: # 伟大列表自带的查询索引号,但先得确定单词在那里
#     i = library.index(myword, 0, len(library)-1)
# if i == 0:
#     print('myword is not in library')
# else:
#     print('index =', i)
 
if in_bisect(library, 0, len(library), myword) == None: 
    print('myword is not in library')
else:
    print('index =', in_bisect(library, 0, len(library), myword))
end = time.time()
print(end-start)
# myword is not in library while 0.07   index 0.003  bisect 0.001
# apple 4450               while 0.003  index 0.001  bisect 0.001
# zoo 113707               while 0.07   index 0.005  bisect 0.001
# while,index和bisect没有对比就没有伤害
2020-03
18

全屏搜索大功告成

By xrspook @ 20:04:21 归类于: 烂日记

昨天,我把COLOR3模板的搜索功能终于做上去了。从前的搜索都非常简单,就是在网页上做一个输入框,然后再加一个提交按钮,搜索都这样。我有想过要不要在WordPress里形成一个搜索的页面,然后要搜索的话就到那里输入内容然后提交,最后返回搜索结果。这样做显然就绕了一圈,我在任何一个页面想搜索,就必须先到达那里,于是网站就要在那两个地方跳转。对于我来说这个体验肯定是不好的。因为这就意味着又要重新把网页加载一次。直接在任何一个页面就能提交搜索然后反馈得出答案跟多绕一圈差别很大,起码我个人觉得这样很折腾。

现在跟10年前的区别大概在于搜索的花样多了很多,比如现在终于可以通过CSS做出比较好看的效果,从前那只是CSS的一个美好梦想。CSS的改进让我印象深刻的是鼠标悬停时的过渡效果以及半透明的展示。从前要展示半透明,每个浏览器出来的东西还不一样,所以写一个效果还得备着多个浏览器的不同选择版本。如果是Chrome和Firefox还好一点,版本兼容性还不错。如果遇到不同版本的IE,出来的东西千差万别。我没有去研究过现在主流的浏览器都有哪些,但可以肯定的是,非常大一部分用户是的是智能设备,而不是传统的PC电脑,所以即便是看到主流浏览器的使用比例,参考性也不大。

从前,当我有了自己的网站,又或者说我有了自己的blog以后,即便blog在BSP上,我已经试图在做网站优化,尽量的让搜索网站能找到我的东西。但现在我已经完全不在乎那些东西了。所以,我连Google的SEO插件也直接删掉。百度也好,Google也好,其它搜索引擎也好,收不收录,收录多少我根本无所谓,搜索得到,搜索不到,我没兴趣去知道,从前我隔一段时间就会神经病地在搜索网站上找自己,但现在我完全不这么干了。那对我来说毫无意义。比如说我在B站上有了账号,而某些视频的点击率又很高。非常有可能,在搜索网站输入我的网名出来的大都是那些点击率很高的东西,不知道看到多少条才看到我自己的blog,但什么重要,什么不重要,哪些有价值,哪些才是我的代表作,我心里明白,我不需要知你们觉得,我不需要知道网页爬虫觉得。之所以要把网站搞好,是因为我要对自己负责。首先网站要让我自己觉得顺眼好看,我自己用得舒服,其次才是别人的浏览体验到底如何,或者我是否应该根据访客的需求进行改进。这么多年以来,我已经习惯了网站一直都冷冷清清。对我来说,有人评论是稀罕事,没人评论是再正常不过的常态,但因为我每天都会写blog,所以即便没有评论,我也要去那里去看一眼,但非常有可能一天就只看那么一眼。

回到搜索功能这个话题上,这一次我给网站配置的搜索是一个全屏搜索。因为我把链接做在版头的导航栏上,所以blog里任何网页都能到达,但是连接我做得有点隐晦,不是正常人所熟知的那种放大镜,所以要找到那个功能,可能会有点难。搜索很简单,就是点击一个像链接一样东西,然后就会有个全屏的搜索框,把需要搜索的关键字敲进去,回车就能得到结果。那个全屏搜索的界面很简洁,甚至没有提交按钮,只有右上角的一个X,作为关闭窗口。会不会有人不知道如何提交搜索内容,有没有人找不到右上角的X把这个搜索界面关掉呢?我不知道,但我相信,可能会有这种存在。这个炫酷的搜索功能是CSS和JS的配合,但是JS只用了非常简单的两条语句。我在CSS那里用了半透明的句子,从前这种东西在浏览器可能行不通,但现在无论是IE还是非IE,效果都很好。因为我是一个懒到了极点的人,所以在做这种全屏搜索的时候,我并没有加其它特效,比如说渐变。那的确很好看,但意味着要加载更多的语句。现在我已经很满意搜索界面的效果了,我把字体搞得很大。能摸到那个搜索入口,试用过以后,估计会觉得很爽,起码我自己是这么觉得的。

过去几天我就像一个少年一样,改进自己的东西,这种专心致志的感觉非常好。

2019-07
5

我搜我

By xrspook @ 9:02:04 归类于: 烂日记

还记得刚开始上网的时候,我过一段时间就会搜索一下自己的网名,看一下出来什么信息,但这种事我已经很多年都没干过了,准确来说估计10年以上都没干过这种事了,昨天我又无聊地搜索了一下,出来的结果挺让人惊讶。

首先,我去度娘那里搜索,出来的第1条记录是我的B站主页,这很正常,但让我有点吃惊的是B站居然超越了我全部的网上驻留地,实际上,我大概是2017年才开始在B站活跃起来的,在那之前我一直在用的土豆跟优酷合并了,变成了一个残废的东西,很多视频都转码失败或者审核不通过,即便通过了,也不知道会不会过一段时间又被打下来,让人很痛心是从前我的视频几乎都在土豆,但是在改制以后,我很多视频都变成无法播放。那个时候,我急需一个替代方案,当时我选择的是B站。因为他们的视频完全没有广告,而且清晰度也很好。虽然据说那是个二次元的东西,我做的东西一点都不二次元,但我也明白那些沉迷于二次元的人有些很牛。相对于其他视频网站的打开速度和点击量,B站貌似还可以。当我决定要在那里开号的时候,却遇到了注册困难。因为如果没有高级会员的邀请。我就要回答100道题,而且其中很多是二次元的,我根本就不知道他们在说什么。答题要达到一定的分数才可以注册,这实在太为难我了。有些题目,我靠常识回答,有些完全搞不懂是什么的,就去度娘搜索,但还是有一些找不到答案。我从来没有试过注册一个网站需要这么努力。入会的时候很艰难,但是之后的经历我觉得挺不错。虽然在网络繁忙的时候,他们的审核需要很长时间。网络通畅的时候可能十几分钟就可以了,但如果网络非常不通畅,可能得花上6个小时以上。至今为止,B站给我的感觉都很好,因为起码没有给我飘广告。他们的管理界面没有广告,他们的视频播放界面也没有。但毕竟那个地方通常都是一些二次元的聚集地,所以无论是弹幕还是评论,总会有一些完全超乎我意料的东西。浏览量、评论数、弹幕数这些东西的确可以鼓舞人,但显然我不是为那些而活的。如果我只为了那些流量去做,我根本不可能有动力做下去。一直以来,我都是自己跟自己较劲,我觉得那个东西我喜欢,我希望别人也看到,那么我就去做了。视频的制作需要花心思,视频的信息也一样。在B站,除了发布视频以外,我也会发布一些翻译的文章,之所以把东西都放在那里,是因为我觉得可能看的人会多一点,而且他们的后台和前台界面我都比较喜欢。度娘的搜索结果除了B站的链接以外,还有我blog的链接,豆瓣的链接,还有一些我说不上到底是什么东西。反正总体来说,从度娘出来的第1页结果看来,我貌似是个挺文艺的人。

然后我又用了必应的国内版国际版以及G老师去搜索。必应出来的结果最让人无语,我不知道为什么会搜索出十几年前我某个老blog的网址,那个东西居然还没死,实在太让人惊讶了。G老师的结果也有点出乎我意料,我觉得那有点重点错。

总的来说,度娘、必应和G老师三个搜索引擎居然是度娘更能反映当下的我,难道这是因为我很久都没去外语网站混了吗?

2019-03
23

不只是中文

By xrspook @ 19:34:46 归类于: 烂日记

还记得大学的某个专业课的老师跟我们说,认真读书,然后找份好工作是为了以后当我们想吃什么的时候,我们可以随心所欲买,而不会有各种约束。当时我学的那门课叫做感官评价。那是很重要的一门食品专业方面的课程,虽然只是选修课,但是我却从中学到了很多。

这门课不需要进行闭卷考试,但是却要交一份集合了几种感官评价方式的资料收集。这其中就包括了翻译,因为我们收集的资料必须是外语的,然后我们需要把核心部分翻译为中文,不需要全文翻译,只需把核心的部分翻译出来就可以了。那门课之前我们的确已经学过了各大数据库的文献检索,但那是我们第一次真的主动自己找那些我们需要的评价方法。这就需要我们要准确把握关键词。那也是我一次也是主动阅读英语论文,他们的版式和思路让我着迷。这种训练在后续完成毕业论文的时候帮了我大忙。这是一项非常重要的技能。

一直以来我都觉得搜索能力非常重要,虽然我一开始上网的时候已经掌握了这个,这也是我接触的最多的。如果不是Google被墙,大概现在我的生活会很不一样。在学校的时候查阅外语文献我们还有校园网,虽然里面的资源可能会有点旧。离开了大学以后要在找那些东西实在太难了,但实际上不只是专业学者需要知道那些东西,普通人也应该可以查阅得到,只不过是下载的时候可能要额外付费而已。但实际情况是不在校园网,外人甚至连进入那个文件检索的平台,于是离开学校后我们就只能回到一开始那样靠普通搜索引擎里查找我需要的东西。我一直觉得专业的东西跟生活是不脱节的。当然,专业尤其是高精尖的生东西肯定必须源于生活高于生活,但那些东西不是在钻牛角尖,不只是为了写论文去做研究,而是因为我们能看出那真的很有意义。说不准马上能帮助人类什么忙,但是在恰当的时候那一定会起到恰当的作用。起码在我做研究的时候,我是这么觉得的,如果连我自己都觉得那没有意义那只是在浪费时间,那只是在应付式的完成任务,我无论如何都不能打起精神去干那种事。我或许会直接跟老师拍板说我不干这个,的确我也干过这种事。质疑老师布置下来的任务的学生绝对是个神经病。遇到这种学生的时候,老师除了生气还有能力祭出大招让学生心服口服的,那更也是非常厉害的存在。我觉得做大学毕业论文的时候,我和我的导师就是这样。现在回想起来觉得这非常不可思议。正是因为曾经做过这种非常规的事,这样的经历足以让我铭记一辈子。

后来我明白到不一定非得在高精尖层面上突破才算厉害,把一些普通的事做到极致其实也很了不起,对我来说这很重要。比如我看过一部翻译得很一般的好电影,我下定决心把那重新翻译,而且我还真做到了,那成为了我的处女作。作为当事人我不能评价我的翻译一定比我之前看过的那个好多少,实际情况是的确已经好了一些,但具体有多少我不知道,最重要的是我曾经为了那个竭尽全力,我很自信,我不后悔。对别人来说这是微不足道事,但这对我来说,做这种事让我感到很幸福满足。认真地竭尽所能的感觉非常好。

我的世界不只是在中文领域。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress