不再让梦枯萎

文章 评论 浏览 31

不再让梦枯萎 2025-02-13 06:25:56

django休息将如何识别它是序列化的
缓存的数据?这真的会提高性能吗?

您的模型对象实例中,所有由 select_reced 获取的数据都在您的模型对象实例中。因此,由于您定义的序列化和模型属性本质上是使用这些实例,因此它们将可以直接访问此“缓存”数据。

我还需要element_name,element_text和对象用户在fooviewSet中返回。我该如何以最有效的方式退还它们?

与此相一致,您可以将它们全部用于一个查询(包括 element_name element_text 需求)

queryset = Foo.objects.select_related(
    "bar__element",
    "customer__user",
).filter(**data)

how Django Rest would identify that it is to serialize
the cached data? Would that really improve performance?

All the data that has been fetched by select_related are in your model object instances. So since the serializers as well as the model properties you defined essentially use these instances, they will have access to this "cached" data directly.

I also need element_name, element_text and object user to be returned in the GET of FooViewSet. How can I return them in the most efficient way?

In line with this, you can get them all in one query (including what element_name and element_text needs) with:

queryset = Foo.objects.select_related(
    "bar__element",
    "customer__user",
).filter(**data)

如何在Django REST框架中更有效地序列化数据?

不再让梦枯萎 2025-02-12 12:01:51

感谢所有人的建议,但我弄清楚这里是什么问题。抱歉,没有提供HTML代码BCZ我没有添加表单。因此,请求。未提供用户。有两种解决此问题的方法。您可以在Models.py中使用OneToOne关系,PY不需要您选择用户。下一个更有效的是,形式是。 PY通过以下方式隐藏用户表单:

class accountForm(ModelForm):
    class Meta:
        model = profile
        fields = "__all__"
        widgets = {
            user': forms.hiddenInput(),
            'profile_img': forms.FileInput(attrs={'class': 'form-control', 'id': 'inputGroupFile04'}),
            'bio': forms.Textarea(attrs={'class': 'form-control'}),
            'location': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Location'}),

        }

然后,通过tives.py添加用户,请通过初始类似:

def account(request):
    form = accountForm(initial=request.user)
    if request.method == "POST":
        form = accountForm(request.POST, initial = request.user)
        if form.is_valid():
            form.save()
            return redirect("sign_in")

    context = {"form": form}
    return render(request, "account.html", context)

如果要更新它,请使用实例而不是初始&在那里提供个人资料

thanks for everyones suggestions but i figured out what was the issue here. sorry for not providing the html codes bcz i didn't added forms.user tag there . so request.POST wasn't providing the user. there are two ways to fix this. you can use onetoone relation in models.py which will not necesarily need you to choose users. the next one is more efficient that is, in forms. py hide the user form by:

class accountForm(ModelForm):
    class Meta:
        model = profile
        fields = "__all__"
        widgets = {
            user': forms.hiddenInput(),
            'profile_img': forms.FileInput(attrs={'class': 'form-control', 'id': 'inputGroupFile04'}),
            'bio': forms.Textarea(attrs={'class': 'form-control'}),
            'location': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Location'}),

        }

then, add the user in views.py through INITIAL like :

def account(request):
    form = accountForm(initial=request.user)
    if request.method == "POST":
        form = accountForm(request.POST, initial = request.user)
        if form.is_valid():
            form.save()
            return redirect("sign_in")

    context = {"form": form}
    return render(request, "account.html", context)

if you want to update it, use instance instead of initial & provide the profile there

django form.is_valid失败&不保存表格

不再让梦枯萎 2025-02-12 05:48:32

如果您的“数字”属性是类型字符串,则不能将其格式化为数字。将其转换为一个数字然后格式,或找到的位置并使用子字符串:

var s = "224.39000000000001";
var i = s.IndexOf('.');
if (i >= 0  && i < s.Length-2)
{
  // found a '.' so just use up to that + 2 extra characters
  Console.WriteLine(s.Substring(0, i+3));
}
else
{
  // no '.' found, so just take all
  Console.WriteLine(s);
}

您当然可以将其包装在返回修剪的字符串的方法中,因此您可以从任何地方调用它。

编辑
还要在(例如“ 244.4”)之后防止少于2个字符。

If your "Number" property is of type string, then you cannot format it as a number. Either convert it to a number and then format, OR find the position of the . and use a substring:

var s = "224.39000000000001";
var i = s.IndexOf('.');
if (i >= 0  && i < s.Length-2)
{
  // found a '.' so just use up to that + 2 extra characters
  Console.WriteLine(s.Substring(0, i+3));
}
else
{
  // no '.' found, so just take all
  Console.WriteLine(s);
}

You can of course wrap this in a method returning the trimmed string, so you can call it from anywhere.

EDIT
Also guard against less than 2 characters after the ., such as "244.4".

形成字符串

不再让梦枯萎 2025-02-12 05:08:10

@papojari,我已经检查了您的网站,我认为这是z索引与标头和主部分之间的问题。

这是用于修复它的添加样式。

header {
    position: relative;
    z-index: 99;
}

main {
    position: relative;
    z-index: 0;
}

我希望这对您有帮助。

@papojari, I have checked your site and I think that it's the problem of the z-index between and header and main section.

Here is the adding style for fixing it.

header {
    position: relative;
    z-index: 99;
}

main {
    position: relative;
    z-index: 0;
}

I hope it is helpful for you.

列出网站上菜单上显示的项目

不再让梦枯萎 2025-02-12 04:58:13

您可以使用任务删除文件,如下所述:

# Delete files
# Delete folders, or files matching a pattern
- task: DeleteFiles@1
  inputs:
    #SourceFolder: # Optional
    #Contents: 'myFileShare' 
    #RemoveSourceFolder: # Optional

输入源文件夹可以是文件夹 $(rootfolder) $(build.ArtifactStagingDirectory)

我遇到了类似的问题,并以这种方式解决了。特别是 .git .vsfolder

You can use the task Delete Files, as covered below:

# Delete files
# Delete folders, or files matching a pattern
- task: DeleteFiles@1
  inputs:
    #SourceFolder: # Optional
    #Contents: 'myFileShare' 
    #RemoveSourceFolder: # Optional

The input source folder can be folder $(rootFolder) or $(Build.ArtifactStagingDirectory).

I've had a similar problem and solved it this way. Especially .git or .vsfolder.

如何在部署中的Azure DevOps上排除文件?

不再让梦枯萎 2025-02-11 21:54:10

case + = 只是通过定义〜= 定义的不同拼写。

if case 1... = 2 // true! 

case + = is just a different spelling enabled by having ~= defined.

if case 1... = 2 // true! ????
if 1... ~= 2 // Same as above.

So, you could write

let str = .dark ~= colorScheme ? "dark" : "light"

But all that does is call ==

public func ~= <T: Equatable>(a: T, b: T) -> Bool {
  return a == b
}

…so you should just write it more clearly, as suggested by the comments:

let str = colorScheme == .dark ? "dark" : "light"

Also, never name anything str. That practice is a holdover from a time when variable name length mattered.

Swift/SwiftUi:如果在一行中,有可能吗?

不再让梦枯萎 2025-02-11 09:35:28

一个选项是 ggh4x 软件包,该软件包通过 facetted_pos_scales 允许为每个方面单独设置量表。在下面的代码中,我使用 facetted_pos_scales 设置第一个和第三个方面的休息时间,而对于所有其他方面,则使用默认值( null )。

注意1: facetted_pos_scales 需要通过 scales =“ free_x” 来免费x刻度。

注2:要使 facetted_pos_scales scale_y_reverse 一起工作,我也必须在 scale_y_reverse 中移动 facetted_pos_scales

library(tidyverse)
library(tidypaleo)
library(ggh4x)

theme_set(theme_paleo(8))

data("alta_lake_geochem")

ggplot(alta_lake_geochem, aes(x = value, y = depth)) +
  geom_lineh() +
  geom_point() +
  facet_geochem_gridh(vars(param), scales = "free_x") +
  labs(x = NULL, y = "Depth (cm)") +
  facetted_pos_scales(
    x = list(
      scale_x_continuous(breaks = 1:8),
      NULL,
      scale_x_continuous(n.breaks = 10),
      NULL
    ),
    y = list(
      scale_y_reverse()
    )
  )

“”

One option is the ggh4x package which via facetted_pos_scales allows to set the scales individually for each facet. In the code below I use facetted_pos_scales to set the breaks for the first and the third facet, while for all other facets the default is used (NULL).

Note 1: facetted_pos_scales requires to the free the x scale via scales="free_x".

Note 2: To make facetted_pos_scales work with scale_y_reverse I had to move scale_y_reverse inside facetted_pos_scales too.

library(tidyverse)
library(tidypaleo)
library(ggh4x)

theme_set(theme_paleo(8))

data("alta_lake_geochem")

ggplot(alta_lake_geochem, aes(x = value, y = depth)) +
  geom_lineh() +
  geom_point() +
  facet_geochem_gridh(vars(param), scales = "free_x") +
  labs(x = NULL, y = "Depth (cm)") +
  facetted_pos_scales(
    x = list(
      scale_x_continuous(breaks = 1:8),
      NULL,
      scale_x_continuous(n.breaks = 10),
      NULL
    ),
    y = list(
      scale_y_reverse()
    )
  )

我如何在r中的facet_grid中分别更改每个图的每个图的x轴的断裂数?

不再让梦枯萎 2025-02-11 08:59:22

简单修复。在第29行上,您在 #addchoices()函数上给出一个对象。您需要一个数组。替换以下:

.addChoices({name: "Elliot Miller", value: "123456789"})))

以此:

.addChoices([{name: "Elliot Miller", value: "123456789"}])))

Simple fix. On line 29, you give an object on the #addChoices() function. You need an array. Replace this:

.addChoices({name: "Elliot Miller", value: "123456789"})))

with this:

.addChoices([{name: "Elliot Miller", value: "123456789"}])))

discordjs v13 addchoices()期望一个数组,但接收到对象

不再让梦枯萎 2025-02-10 21:13:17

我不确定您在计算什么。从您的措施来看,这是您在寻找什么?

dax计算

(%) Amount ST = 
VAR STAmount =
    CALCULATE ( SUM ( table1[Amount] ), table1[Line] = "ST" )
RETURN
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( table1[Line] ) = "AB", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SELECTEDVALUE ( table1[Line] ) = "AC", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SELECTEDVALUE ( table1[Line] ) = "AG", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SUM ( table1[Amount] )
    )

输出

“在此处输入图像描述”

I'm not sure what are you calculating. From your measure, is this is what are you looking for?

DAX Calculation

(%) Amount ST = 
VAR STAmount =
    CALCULATE ( SUM ( table1[Amount] ), table1[Line] = "ST" )
RETURN
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( table1[Line] ) = "AB", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SELECTEDVALUE ( table1[Line] ) = "AC", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SELECTEDVALUE ( table1[Line] ) = "AG", DIVIDE ( SUM ( table1[Amount] ), STAmount ),
        SUM ( table1[Amount] )
    )

Output

enter image description here

PBI测量作为矩阵视觉的值

不再让梦枯萎 2025-02-10 00:05:34

这些只是建议,而不是答案。

有点小问题,但是很难回答,因为答案可能在解释时都与每个问题相矛盾。

解释

实际上取决于您的要求。例如,

  1. 您将要在表中管理多少个记录?

    • 如果它很小,则可以将患者和专家放在同一张桌子上,并带有标志来对其进行分类。
    • 相当大,您可以保留患者专家在每个桌子内部具有共同字段。
  2. 您期望系统的隔离水平如何?
    例如,在微服务中,保留两个不同的表最好隔离每个服务。但这也取决于您要使用的体系结构。

但是将共同字段分为不同的表并管理这些领域是不必要的,就像我们对OOP概念所做的那样。因为不需要的数据库关系给您的查询带来了额外的负担。

这是我的主意。你可以从其他人那里有很多:)

These are just suggestions and not an answer.

Kind of very small questions, but very difficult to answer because answers may contradict each while explaining.

explenation

That depends on your requirement actually. for example,

  1. How many records that you going to manage inside a table?

    • if it is comparably small, you can keep both patients and specialists on the same table with a flag to categorize them.
    • comparably big, you can keep Patient and specialist tables separately with common fields inside each table.
  2. What level of segregation do you expect from your system?
    For example in microservices, keeping two different tables is better to isolate each service. But that also depends on the architecture you're going to use.

But separating common fields into a different table and managing those fields are not necessary like what we are doing with OOP concepts. because unwanted DB relations give you an extra burden to your queries.

This is my idea. You can have many from others :)

如果我有两个具有通用列名称的表,是否有必要创建一个新表? SQL最佳实践

不再让梦枯萎 2025-02-09 12:44:39
  a =(rand()%2001-1000) / 2.e3;
 

rand()首先评估

    a = (rand() % 2001 - 1000) / 2.e3;
         ^^^^^^ int between `0` and `RAND_MAX` inclusive

,然后模量运算符在 0 2000 之间生成一个值。

    a = ([0 .. 2000] - 1000) / 2.e3;
         ^^^^^^^^^^^ int

然后该值的 1000 减去,成为 -1000 1000 之间的值

    a = ([-1000 .. 1000]) / 2.e3;
         ^^^^^^^^^^^^^^^ int

,然后由 2000.0.0 (或 2.e3 )在 -0.5 0.5 之间生成 double

    a = [-0.5 .. 0.5];
        ^^^^^^^^^^^^^ double
 a = (rand() % 2001 - 1000) / 2.e3;

rand() is evaluated first

    a = (rand() % 2001 - 1000) / 2.e3;
         ^^^^^^ int between `0` and `RAND_MAX` inclusive

Then the modulus operator generates a value between 0 and 2000.

    a = ([0 .. 2000] - 1000) / 2.e3;
         ^^^^^^^^^^^ int

Then that value has 1000 subtracted, becoming a value between -1000 and 1000

    a = ([-1000 .. 1000]) / 2.e3;
         ^^^^^^^^^^^^^^^ int

Then, divided by 2000.0 (or 2.e3) generates a double between -0.5 and 0.5

    a = [-0.5 .. 0.5];
        ^^^^^^^^^^^^^ double

在C中生成一个随机数(-0.5,0.5)

不再让梦枯萎 2025-02-08 19:06:39

我偶然发现了同一件事 - Bitbucket Pipes可以与AWS OIDC一起使用,但脚本却没有。如果您检查特定的管道源代码,您会发现要担任角色的额外步骤几乎需要 - https://bitbucket.org/atlassian/aws-s3-deploy/src/master/pipe/pipe/pipe.sh#lines-35

与OIDC合作的部分,您需要这样做:

default:
- step:
    name: Connect to AWS using OIDC
    oidc: true
    script:
      - export AWS_REGION=$AWS_REGION
      - export AWS_ROLE_ARN=arn:aws:iam::1234567890:role/MyRole
      - export AWS_WEB_IDENTITY_TOKEN_FILE=$(pwd)/web-identity-token
      - echo $BITBUCKET_STEP_OIDC_TOKEN > $(pwd)/web-identity-token
      - aws configure set web_identity_token_file ${AWS_WEB_IDENTITY_TOKEN_FILE}
      - aws configure set role_arn ${AWS_ROLE_ARN}
      - unset AWS_ACCESS_KEY_ID
      - unset AWS_SECRET_ACCESS_KEY
      - printenv BITBUCKET_STEP_OIDC_TOKEN
      - printenv AWS_REGION
      - printenv AWS_ROLE_ARN

I stumbled into the same thing - BitBucket pipes works with AWS OIDC out of the box but scripts does not. If you check particular pipe source code you will find there are few extra steps needed to assume the role - https://bitbucket.org/atlassian/aws-s3-deploy/src/master/pipe/pipe.sh#lines-35

So to make script section working with OIDC you need to have it like this:

default:
- step:
    name: Connect to AWS using OIDC
    oidc: true
    script:
      - export AWS_REGION=$AWS_REGION
      - export AWS_ROLE_ARN=arn:aws:iam::1234567890:role/MyRole
      - export AWS_WEB_IDENTITY_TOKEN_FILE=$(pwd)/web-identity-token
      - echo $BITBUCKET_STEP_OIDC_TOKEN > $(pwd)/web-identity-token
      - aws configure set web_identity_token_file ${AWS_WEB_IDENTITY_TOKEN_FILE}
      - aws configure set role_arn ${AWS_ROLE_ARN}
      - unset AWS_ACCESS_KEY_ID
      - unset AWS_SECRET_ACCESS_KEY
      - printenv BITBUCKET_STEP_OIDC_TOKEN
      - printenv AWS_REGION
      - printenv AWS_ROLE_ARN

使用Atlassian Bitbucket和AWS使用OIDC的错误

不再让梦枯萎 2025-02-08 09:41:01

2021年底更新

了Excel的新calculation engine and array functionality, and

另外,我将最后使用的定义为不是空白,如 isblank 函数。

Excel公式

首先,请注意,过滤器功能使使用以下公式使用特定行或列的以下公式变得更加简单(在这种情况下列a low 1 >):

=MAX(FILTER(ROW(A:A),NOT(ISBLANK(A:A))))
=MAX(FILTER(COLUMN(1:1),NOT(ISBLANK(1:1))))

使用上述函数的最后一行特定范围的VBA函数

我们可以将其转换为VBA函数,但通过执行多个列来扩展其功能,从而使其更快地使其更快(感谢 Chris Neilsen 立即提供反馈tweeking/建议)。我还发现,通过将每一列范围范围范围比上的范围高于上一排高的范围,从而发现了巨大的速度。

Function FindLastRowInRange(someColumns As Range) As Long
Const zFx = "=MAX(FILTER(ROW(????),NOT(ISBLANK(????)),0))"
   
   Dim tRng As Range, i As Long, tRow As Long, pRng As Range
   With someColumns.Worksheet
      Set tRng = Intersect(someColumns.EntireColumn, .UsedRange)
      
      For i = 1 To tRng.Columns.Count
         
         Set pRng = Intersect(tRng.Columns(i), _
         Range(.Rows(FindLastRowInRange + 1), .Rows(.Rows.Count)))
         
         If Not pRng Is Nothing Then
            tRow = .Evaluate(Replace(zFx, "????", _
               pRng.Address, 1, -1))
         
            If tRow > FindLastRowInRange Then _
               FindLastRowInRange = tRow
            
         End If
      Next i
   End With
End Function

工作表中最后一行的VBA函数

考虑整个工作表(所有列),我建议使用其他引用先前的VBA公式,但为a 挥发性函数。这样可以确保使用任何更改工作表的公式更新。显然,一个人可以结合这两个公式,但我更喜欢限制挥发性函数的用法。

Function FindLastRowInSheet(anywhereInSheet As Range) As Long
      Application.Volatile
      FindLastRowInSheet = FindLastRowInRange(anywhereInSheet.Worksheet.UsedRange)
End Function

与其他选项相比,优点

  • 允许工作表中的某些或所有行/列而无需更改方法。
  • XLUP 忽略格式/二手问题问题的风险是不可能缺少隐藏行的可能性
  • 不会干扰用户的查找设置。
  • 使用比VBA计算快的工作表功能。
  • 没有计数细胞(性能猪)。

希望这结束了辩论,但是如果有人发现这件事的弱点,请分享。

Updated at End of 2021

With Excel's new calculation engine and array functionality, and Filter Function, I believe this topic should now be far less contested and that the below options offer the best mix of speed, reliability, and simplicity (which has proven difficult to balance in the past as the numerous posts here illustrate).

Also, I'm defining last used as NOT blank as defined by the isBlank function.

Excel Formula

First, note that the Filter Function makes it much simpler to get a last cell using the below formulas for a specific row or column (in these case Column A or Row 1):

=MAX(FILTER(ROW(A:A),NOT(ISBLANK(A:A))))
=MAX(FILTER(COLUMN(1:1),NOT(ISBLANK(1:1))))

VBA Function For Last Row Specific Range

Using the above function we can convert it into a VBA function, yet make it even faster by limiting the range, while expanding its capabilities by doing multiple columns (thanks to Chris Neilsen for immediate feedback tweeking/suggestions). I also found massive speed improvement by scoping each column to only be a range with a row HIGHER than the previous last row.

Function FindLastRowInRange(someColumns As Range) As Long
Const zFx = "=MAX(FILTER(ROW(????),NOT(ISBLANK(????)),0))"
   
   Dim tRng As Range, i As Long, tRow As Long, pRng As Range
   With someColumns.Worksheet
      Set tRng = Intersect(someColumns.EntireColumn, .UsedRange)
      
      For i = 1 To tRng.Columns.Count
         
         Set pRng = Intersect(tRng.Columns(i), _
         Range(.Rows(FindLastRowInRange + 1), .Rows(.Rows.Count)))
         
         If Not pRng Is Nothing Then
            tRow = .Evaluate(Replace(zFx, "????", _
               pRng.Address, 1, -1))
         
            If tRow > FindLastRowInRange Then _
               FindLastRowInRange = tRow
            
         End If
      Next i
   End With
End Function

VBA Function For Last Row In Worksheet

To consider the entire worksheet (all columns), I would recommend using a different VBA formula that references the prior one, but is a Volatile Function. This ensures that the formula updates with any changes to a worksheet. Obviously, one could combine these two formulas, but I prefer to limit the usage of volatile functions.

Function FindLastRowInSheet(anywhereInSheet As Range) As Long
      Application.Volatile
      FindLastRowInSheet = FindLastRowInRange(anywhereInSheet.Worksheet.UsedRange)
End Function

Advantages Compared To Other Options

  • Allows for some or ALL rows/columns in worksheet without changing approach.
  • No possibility of missing hidden rows as is a risk with xlup
  • Ignores formatted/usedrange issues.
  • Does not interfere with user's Find settings.
  • Uses worksheet functionality which is faster than VBA calcs.
  • No counting cells (performance hog).

Hopefully this ends the debate, but if anyone finds weaknesses in this please share.

在Excel VBA中找到最后使用的单元格

不再让梦枯萎 2025-02-08 03:06:09

我的回忆是SSIS存储了.NET脚本本身编译的二进制文件。您可以尝试打开您在Visual Studio中导出的软件包,编辑脚本任务并按下Repompile按钮,保存,保存并部署到MSDB(通过dtutil.exe),

遇到的下一个挑战是

软件包中的版本号无效

,将目标更改为SQL 2016和Redeploy。如果您通过命令行部署,请确保您在130路径中使用dtutil.exe,否则部署将在部署操作过程中升级包装(假设140 dtutil首先在路径环境变量中列出了140个dtutil

)将路径号安装到SQL Server版本IE IE IE 130 == SQL Server 2016

My recollection is that it SSIS stored the .NET script itself and the compiled binary. You might try opening the package you exported in Visual Studio, editing the Script Task and hitting the recompile button, save, save and deploy to the MSDB (via dtutil.exe)

The next challenge encountered was

The version number in the package is not valid

In the Project settings in VS 2017, change the target to SQL 2016 and redeploy. If you deploy via the command line, ensure that you usethe dtutil.exe in the 130 path, otherwise the deploy will upgrade the package during deploy operation (assuming the 140 dtutil is listed first in the PATH environmental variable)

Reference answer/chart for translating install path numbers to SQL Server versions i.e. 130 == SQL Server 2016

我们直接在msdb.dbo.sysssispackages中修改了SSIS软件包,但旧版本仍在运行

不再让梦枯萎 2025-02-07 10:05:43

您需要初始化for循环的变量 ,否则不会增加:

<tbody>
@{
    int count = 1;
    foreach (var item in Model)
    {                
        <tr>
            <td>@count</td>
            <td>@item.ProductName</td>
            <td>
                @Html.ActionLink("Edit", "ProductEdit", new { productId = item.ProductId })
            </td>

        </tr>
        count = count + 1;
    }
}
</tbody>

You need to initialize the variable outside of the for loop, or it will not increase:

<tbody>
@{
    int count = 1;
    foreach (var item in Model)
    {                
        <tr>
            <td>@count</td>
            <td>@item.ProductName</td>
            <td>
                @Html.ActionLink("Edit", "ProductEdit", new { productId = item.ProductId })
            </td>

        </tr>
        count = count + 1;
    }
}
</tbody>

在此中,循环计数不会增加

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文