樱娆

文章 评论 浏览 32

樱娆 2025-02-21 01:00:44

您需要在下面添加按钮,并在单击事件侦听器上添加功能,您可以检查字符串的长度,至少一个大写和特殊字符。如果您的病情已经错误。您也可以使用警报或吐司消息呈现错误消息。

注意:有关现成的功能,可在Google上找到。您的参考链接之一如下。

password_validator

快乐编码

you need to add button below this from and add functionality on click event listener you could check length of string, at least one upperCase and special char. if your condition gone false. you could render error message by using Alert or Toast message also.

Note: for ready-cooked functions are available at google. one of link for your reference are below.

password_validator

Happy coding

如何使用JavaScript添加密码强度计到输入字段?

樱娆 2025-02-21 00:33:52

您的降低是关闭的;这只是确保您在每个日期键内创建对象以计算是/否答案的问题。

const array = [
  { date: '2022-01-03', answer: 'yes' },
  { date: '2022-01-03', answer: 'no' },
  { date: '2022-01-03', answer: 'no' },
  { date: '2022-01-04', answer: 'yes' },
  { date: '2022-01-04', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'no' },
]

const result = array.reduce((acc, curr) => {
  if (!acc[curr.date]) {
    acc[curr.date] = { yes: 0, no: 0 }
  }
  acc[curr.date][curr.answer]++;
  return acc;
}, {});

console.log(result)

Your reduce is close; it's just a matter of making sure you create objects within each date key to count the yes/no answers.

const array = [
  { date: '2022-01-03', answer: 'yes' },
  { date: '2022-01-03', answer: 'no' },
  { date: '2022-01-03', answer: 'no' },
  { date: '2022-01-04', answer: 'yes' },
  { date: '2022-01-04', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'yes' },
  { date: '2022-01-05', answer: 'no' },
]

const result = array.reduce((acc, curr) => {
  if (!acc[curr.date]) {
    acc[curr.date] = { yes: 0, no: 0 }
  }
  acc[curr.date][curr.answer]++;
  return acc;
}, {});

console.log(result)

计算一个对象数组

樱娆 2025-02-20 17:52:01

不要过度思考。提示:

  • 保持您的提取逻辑尽可能简单。
  • 更喜欢异步等待,而不是链接以获得可读性。
  • 尊重您的国家初始化。如果您说这是一个数组,请不要将其设置为对象。

如果您有数组,则可以轻松地将其映射到JSX中并生成您的选项。
您做得很好,非常接近。看看我为使其工作所做的更改:

import { useEffect, useState } from 'react';

export const SettingsForm = () => {
  const [stateList, setStateList] = useState([]);
  const [userLocation, setUserLocation] = useState('');

  const handleLocation = () => {
    setUserLocation(e.target.value);
  };

  useEffect(() => {
    const loadOptions = async () => {
      const data = await fetch(
        'https://servicodados.ibge.gov.br/api/v1/localidades/estados/'
      ).then((response) => {
        return response.json();
      });

      setStateList(data);
    };
    loadOptions();
  }, []);

  
  return (
    <form>
      <div className="user-country">
        <label className="white-label">Local</label>
        <div className="input-icon-wrapper">
          <div className="icon-input w-embed"></div>
          <select
            className="select-field white-select w-select"
            id="locationField"
            name="locationField"
            onChange={handleLocation}
          >
            {stateList.map((state) => {
              return (
                <option key={state.nome} value={state.nome}>
                  {state.sigla}
                </option>
              );
            })}
          </select>
        </div>
      </div>
    </form>
  );
};

希望它有帮助!保持良好的工作,并随时伸出手,以防您仍然卡住!

Don't overthink. Tips:

  • Keep your fetching logic as simple as possible.
  • Prefer Async Await instead of then chaining for readability.
  • Honor your state initialization. If you said it is an Array, don't set it as an object.

If you have an array, you can easily map it into jsx and generate your options.
You did very well, and got really close. Take a look at the changes I've done to get it working:

import { useEffect, useState } from 'react';

export const SettingsForm = () => {
  const [stateList, setStateList] = useState([]);
  const [userLocation, setUserLocation] = useState('');

  const handleLocation = () => {
    setUserLocation(e.target.value);
  };

  useEffect(() => {
    const loadOptions = async () => {
      const data = await fetch(
        'https://servicodados.ibge.gov.br/api/v1/localidades/estados/'
      ).then((response) => {
        return response.json();
      });

      setStateList(data);
    };
    loadOptions();
  }, []);

  
  return (
    <form>
      <div className="user-country">
        <label className="white-label">Local</label>
        <div className="input-icon-wrapper">
          <div className="icon-input w-embed"></div>
          <select
            className="select-field white-select w-select"
            id="locationField"
            name="locationField"
            onChange={handleLocation}
          >
            {stateList.map((state) => {
              return (
                <option key={state.nome} value={state.nome}>
                  {state.sigla}
                </option>
              );
            })}
          </select>
        </div>
      </div>
    </form>
  );
};

Hope it helps! keep up the good work and feel free to reach out in case you're still stuck!

从下拉列表中动态创建选项

樱娆 2025-02-20 17:39:35

我有点愚蠢。

因为子过程是其自己的外壳,所以使用CD然后在另一个外壳中代码毫无价值。使用代码project_dir 工作。

感谢@Charles Duffy

Kind of dumb of me.

Because Subprocess is its own shell, using cd then code in another shell is worthless. Using code project_dir works.

Thanks to @Charles Duffy

Python Shell脚本的开放VSCODE

樱娆 2025-02-20 13:31:47

我最终使用了此 consurrentModificationException ,同时使用 stream()。map()方法迭代列表。但是,(:)在迭代和修改列表时没有引发异常。

这是代码段,如果它对任何人提供帮助:
在这里,我在 arrayList&lt; buildentity&gt; 上迭代,并使用list.remove(obj)对其进行修改

 for(BuildEntity build : uniqueBuildEntities){
            if(build!=null){
                if(isBuildCrashedWithErrors(build)){
                    log.info("The following build crashed with errors ,  will not be persisted -> \n{}"
                            ,build.getBuildUrl());
                    uniqueBuildEntities.remove(build);
                    if (uniqueBuildEntities.isEmpty()) return  EMPTY_LIST;
                }
            }
        }
        if(uniqueBuildEntities.size()>0) {
            dbEntries.addAll(uniqueBuildEntities);
        }

I ended up with this ConcurrentModificationException, while iterating the list using stream().map() method. However the for(:) did not throw the exception while iterating and modifying the the list.

Here is code snippet , if its of help to anyone:
here I'm iterating on a ArrayList<BuildEntity> , and modifying it using the list.remove(obj)

 for(BuildEntity build : uniqueBuildEntities){
            if(build!=null){
                if(isBuildCrashedWithErrors(build)){
                    log.info("The following build crashed with errors ,  will not be persisted -> \n{}"
                            ,build.getBuildUrl());
                    uniqueBuildEntities.remove(build);
                    if (uniqueBuildEntities.isEmpty()) return  EMPTY_LIST;
                }
            }
        }
        if(uniqueBuildEntities.size()>0) {
            dbEntries.addAll(uniqueBuildEntities);
        }

通过集合进行迭代,避免在循环中删除对象时进行contrentModification Exception

樱娆 2025-02-20 13:07:34

这是我所做的,它有效

await service.configure(
    androidConfiguration: AndroidConfiguration(
        
        onStart: onStart,
        autoStart: true,
        isForegroundMode: false,

        notificationChannelId: 'my_foreground',
        initialNotificationTitle: 'my service',
        initialNotificationContent: 'the service is started',
        foregroundServiceNotificationId: 888,
        autoStartOnBoot: true
    ),
    iosConfiguration: IosConfiguration(
        autoStart: true,
        onForeground: onStart,
        onBackground: onIosBackground,
    ),
);

This what i've made and it works

await service.configure(
    androidConfiguration: AndroidConfiguration(
        
        onStart: onStart,
        autoStart: true,
        isForegroundMode: false,

        notificationChannelId: 'my_foreground',
        initialNotificationTitle: 'my service',
        initialNotificationContent: 'the service is started',
        foregroundServiceNotificationId: 888,
        autoStartOnBoot: true
    ),
    iosConfiguration: IosConfiguration(
        autoStart: true,
        onForeground: onStart,
        onBackground: onIosBackground,
    ),
);

背景服务在Android上的应用程序关闭后不停止

樱娆 2025-02-20 11:06:49

您需要使用 OnSaveInstancestate 函数的另一个超载函数:一个只有一个参数: fun onSaveInstanceState(OnsaveInstate:oftstate:bundle)

您的代码应以下内容:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString(KEY_NAME, name)
}

You need to use another overload of the onSaveInstanceState function: the one with with just one parameter: fun onSaveInstanceState(outState: Bundle)

Your code should look the following:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString(KEY_NAME, name)
}

onsaveinstancestate不处理状态

樱娆 2025-02-20 09:53:30

对您的问题不是直接的答案,但您可能会在以间隔,以及其他事物(例如,重新焦点或手动重新验证)。

Not a direct answer to your question, but you might be intersted in SWR. It provides React hooks for data fetching, and has options for polling at intervals, as well as other things (revalidate on focus, or manual revalidation for example).

使用React/JavaScript每10秒提出一次请求的最优化的方法是什么

樱娆 2025-02-20 08:04:50

首先,定义一个将给定字符串拆分为多个令牌的函数,由给定的分隔符隔开:

bool split(const char *str, const char sep, char **tokens, const size_t maxtokens, size_t *ntokens)
{
    *ntokens = 0;
    const char *start = str;
    const char *p = str;
    
    for (;;) {
        if (*ntokens >= maxtokens) return false;
        
        while (*p && *p == sep) ++p;
        if (!*p) return true;
        
        start = p;
        
        while (*p && *p != sep) ++p;
        
        size_t len = p - start;
        char *tmp = malloc(sizeof(char) * (len + 1));
        strncpy(tmp, start, len);
        tmp[len] = '\0';
        tokens[(*ntokens)++] = tmp;
        
        if (!*p) return true;
    }
    
    return true;
}
  • str 是要分配的字符串;
  • sep 是分隔符/分界符;
  • 令牌是将保持令牌的数组;
  • maxtokens 是您的数组可以容纳的最大令牌(即其容量);
  • ntokens str 中的代币的实际编号。

返回:

  • true 如果字符串完全被标记化,
  • false 如果达到令牌限制的最大数量( maxtokens ),并且字符串的结尾未达到。

然后,定义一个函数,该函数计算给定字符串中的令牌数:

size_t count_tokens(const char *str, const char sep)
{
    size_t counter = 0;
    for (const char *p = str; ; ) {
        while (*p && *p == sep) ++p;
        if (!*p) return counter;
        
        while (*p && *p != sep) ++p;
        ++counter;
        
        if (!*p) return counter;
    }
    return counter;
}

将两个函数放在一起:

int main(void)
{
    const char *str = "   To    be    or    not    to    be    that     is   the question ";
    
    const size_t maxtokens = count_tokens(str, ' ');
    size_t ntokens = 0;
    char *tokens[maxtokens+1]; // +1 for the last NULL entry.
    
    split(str, ' ', tokens, maxtokens, &ntokens);
    tokens[maxtokens] = NULL; // Last entry is NULL

    for (size_t i = 0; tokens[i]; ++i) {
        printf("%zu)\t%s\n", i+1, tokens[i]);
    }
}

输出:

1)  To
2)  be
3)  or
4)  not
5)  to
6)  be
7)  that
8)  is
9)  the
10) question

注释:

  • 如果不允许使用&lt; string.h&gt; ,您可以用自己的版本替换 strncpy()
  • 不要忘记在使用令牌后立即释放使用 malloc()的内存。

First, define a function that splits a given string into multiple tokens, separated by a given separator:

bool split(const char *str, const char sep, char **tokens, const size_t maxtokens, size_t *ntokens)
{
    *ntokens = 0;
    const char *start = str;
    const char *p = str;
    
    for (;;) {
        if (*ntokens >= maxtokens) return false;
        
        while (*p && *p == sep) ++p;
        if (!*p) return true;
        
        start = p;
        
        while (*p && *p != sep) ++p;
        
        size_t len = p - start;
        char *tmp = malloc(sizeof(char) * (len + 1));
        strncpy(tmp, start, len);
        tmp[len] = '\0';
        tokens[(*ntokens)++] = tmp;
        
        if (!*p) return true;
    }
    
    return true;
}
  • str is the string to be splitted;
  • sep is the separator/delimiter;
  • tokens is the array that will hold your tokens;
  • maxtokens is the maximum number of tokens your array can hold (i.e. its capacity);
  • ntokens is the actual number of tokens in str.

Returns:

  • true if the string has been tokenized totally,
  • false if the maximum number of tokens limit (maxtokens) is reached and the end of string is not reached.

Then, define a function that computes the number of tokens in a given string:

size_t count_tokens(const char *str, const char sep)
{
    size_t counter = 0;
    for (const char *p = str; ; ) {
        while (*p && *p == sep) ++p;
        if (!*p) return counter;
        
        while (*p && *p != sep) ++p;
        ++counter;
        
        if (!*p) return counter;
    }
    return counter;
}

Putting the two together:

int main(void)
{
    const char *str = "   To    be    or    not    to    be    that     is   the question ";
    
    const size_t maxtokens = count_tokens(str, ' ');
    size_t ntokens = 0;
    char *tokens[maxtokens+1]; // +1 for the last NULL entry.
    
    split(str, ' ', tokens, maxtokens, &ntokens);
    tokens[maxtokens] = NULL; // Last entry is NULL

    for (size_t i = 0; tokens[i]; ++i) {
        printf("%zu)\t%s\n", i+1, tokens[i]);
    }
}

Output:

1)  To
2)  be
3)  or
4)  not
5)  to
6)  be
7)  that
8)  is
9)  the
10) question

Notes:

  • If you are not allowed to use <string.h>, you can replace strncpy() with your own version.
  • Don't forget to free the memory allocated with malloc() as soon as you are done with the tokens.

无法正确分配内存,也无法在我的(ft_split)函数中释放它

樱娆 2025-02-19 01:11:08

Quarkus Dev Mode是您Quarkus应用程序的连续运行。因此,当然,它仍然需要运行,如果您成功运行DEV模式,您会发现有一个 run.jar.jar 运行(例如,带有 JPS ):

$ jps
44482 Jps
44354 test-app-dev.jar

POM不是可运行的类型,因此对Quarkus插件的期望是正确的。

但是我试图在好奇之后做自己的事情。这是我的项目 -

首先,您会看到在parent pom.xml中,我们无法直接定义插件,因此不会为POM类型的父执行它们。我们可以使用&lt; pluginManagementhe&gt; 部分仅定义基本上的插件配置和执行: https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus/quarkus-main/quarkus-multimodule/pom.xml.xml.xml.l42 。您会发现我刚刚包装了生成的&lt;插件&gt; 部分。另外,我们不需要在此处定义依赖项,因为我们没有在父pom模块中包装任何可执行的代码。我保留了属性和本机概况,因此它们是在儿童模块中继承的。

接下来,我们有三个模块( module1 module2 module3 ),所以我只介绍一个。

module1 的pom.xml中,我们可以看到我们需要定义该模块的依赖项,而没有从父级定义的quarkus bom继承的版本。而且,我们还需要仅定义 https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-multimodule/module1/pom.xml#l35-l53 。请注意,所有执行和配置都可以省略,因为从父级的&lt; pluginManagement中选择了它。

还有一件事,由于您计划同时运行多个开发模式,因此您需要指定Quarkus Applications开发模式运行的不同端口 - https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-多模块/module1/src/main/resources/application.properties#l1 类似地在不同的模块中/module2/src/main/resources/application.properties#l1“ rel =” nofollow noreferrer“> https://github.com/xstefank.com/xstefank/quarkus-reproducers/blob/main/main/quarkus-main/quarkus-main/quarkus-multimimodule/module/module2/mmodule2/src/src/src/mmain/src/mmain/ Resources/application.properties#l1 。

就是这样,现在您可以运行 Quarkus dev mvn quarkus:dev 从父模块中运行,它以Dev模式运行所有孩子。但是,由于Maven执行是顺序的,因此您将首先运行 module1 dev模式,然后停止。只有当您停止此开发模式(CTRL + C)时,它才能运行 module2 dev模式,并且只有您停止此操作,它将运行 module3 dev模式。

但这就是Maven的工作方式。因此,您需要的是并行化Maven执行,幸运的是,这可以使用Maven守护程序或 mvnd https://github.com/apache/maven-mvnd )。有了这个,您可以在父目录中执行以下操作:

$ mvnd quarkus:dev      
Building quarkus-multimodule  daemon: b580640b  threads used/hidden/max: 3/0/3  progress: 1/4  25%  time
:module3             quarkus:3.3.3:dev (default-cli)
:module2             quarkus:3.3.3:dev (default-cli)                                                    
:module1             quarkus:3.3.3:dev (default-cli)

并且您在三个不同的端口上有3种运行的Quarkus开发模式:

$ jps
48565 Jps
47959 module3-dev.jar
48122 module2-dev.jar
48062 module1-dev.jar

但是,当然,您无法访问Dev模式的各个功能,例如终端控制台。为此,您需要在Quarkus dev Executions上编写自己的包装器,例如,bash脚本将在后台运行该过程。

希望这会有所帮助。如果您不会错过终端中的功能,则可以在Dev UI中访问其中的大多数。只需记住要在您要更改的模块的正确端口上处于正确的DEV UI,例如,http:// localhost:8082/q/q/dev-ui/Extensions。

Quarkus Dev mode is a continuous run of your Quarkus application. So, of course, it still needs to run, and if you run the dev mode successfully, you will see that there is a something-run.jar running (e.g., with jps):

$ jps
44482 Jps
44354 test-app-dev.jar

POM is not a runnable type, so the expectation of the Quarkus plugin is right.

But I tried to do what you're after out of curiosity. Here is my project - https://github.com/xstefank/quarkus-reproducers/tree/main/quarkus-multimodule.

First, you see that in the parent pom.xml, we can't define the plugins directly, so they are not executed for the parent of type POM. We can use the <pluginManagement> section only to define basically plugin configurations and executions like this: https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-multimodule/pom.xml#L42. You see that I just wrapped the generated <plugins> section. Also, we don't need to define dependencies here since we don't pack any executable code in the parent POM module. I kept the properties and the native profile, so they are inherited in children's modules.

Next, we have three modules (module1, module2, and module3) which are the same, so I'll cover only one.

In module1's pom.xml we can see that we need to define the dependencies for this module, without versions which are still inherited from the Quarkus BOM defined in the parent. And we also need to define just the plugin definitions as showed in https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-multimodule/module1/pom.xml#L35-L53. Notice that all executions and configuration can be omitted since it is picked from the parent's <pluginManagement> section.

One more thing, since you plan to run multiple dev modes at the same time, you need to specify different port on which your Quarkus applications Dev modes run - https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-multimodule/module1/src/main/resources/application.properties#L1 and similarly in different modules https://github.com/xstefank/quarkus-reproducers/blob/main/quarkus-multimodule/module2/src/main/resources/application.properties#L1.

And that's it, now you can run quarkus dev or mvn quarkus:dev from the parent module and it runs all the children in dev mode. BUT, since maven execution is sequential, you will first run module1 dev mode, and it stops there. Only when you stop this dev mode (Ctrl + C) it will run module2 dev mode, and again only you stop this one, it will run the module3 dev mode.

But this is how maven works. So what you need is to parallelize the maven execution and luckily this can be done with maven daemon or mvnd (https://github.com/apache/maven-mvnd). With this you can do the following in the parent directory:

$ mvnd quarkus:dev      
Building quarkus-multimodule  daemon: b580640b  threads used/hidden/max: 3/0/3  progress: 1/4  25%  time
:module3             quarkus:3.3.3:dev (default-cli)
:module2             quarkus:3.3.3:dev (default-cli)                                                    
:module1             quarkus:3.3.3:dev (default-cli)

And you have 3 running Quarkus dev modes on three different ports:

$ jps
48565 Jps
47959 module3-dev.jar
48122 module2-dev.jar
48062 module1-dev.jar

BUT, of course, you don't have access to the individual features of the Dev mode, like the terminal console. For that, you would need to write your own wrapper around the quarkus dev executions, e.g., with a bash script that would run the process in the background.

Hopefully, this helps. If you don't miss the features in the terminal, you can access most of them in the Dev UI. Just remember to be in the correct Dev UI on the correct port of the module you're changing, e.g., http://localhost:8082/q/dev-ui/extensions.

Quarkus可以使用多模块项目开始开发开发模式

樱娆 2025-02-18 20:01:19

最后,这解决了问题:

svelte.config.js

import adapter from '@sveltejs/adapter-static';

/** @type {import('@sveltejs/kit').Config} */
const config = {
    kit: {
        adapter: adapter(),
        prerender: {
            default: true
        }
    }
};

export default config;

In the end, this solved the problem:

svelte.config.js

import adapter from '@sveltejs/adapter-static';

/** @type {import('@sveltejs/kit').Config} */
const config = {
    kit: {
        adapter: adapter(),
        prerender: {
            default: true
        }
    }
};

export default config;

使用AWS放大的静态苗条应用程序

樱娆 2025-02-17 20:47:19

尝试以下试验:

model = SVC(kernel='rbf')
resampler = NearSVUmdersampler(random_state=123)
base_estimator = Pipeline([('sampler', resampler), ('clf', model)])
classifier = OneVsOneClassifier(estimator=base_estimator)

现在,当您调用 classifier.fit OneVsoneClalsifier 将适合您的 base_estimator pipeline pipeline for to every nate数据列

Try this:

model = SVC(kernel='rbf')
resampler = NearSVUmdersampler(random_state=123)
base_estimator = Pipeline([('sampler', resampler), ('clf', model)])
classifier = OneVsOneClassifier(estimator=base_estimator)

Now when you call classifier.fit the OneVsOneClassifier will fit your base_estimator pipeline for each slice of the data, thus resampling for each pair of columns

在管道中的一v-One的自定义重采样器

樱娆 2025-02-17 12:34:44

感谢@Cyrus对原始问题的评论,

$ sudo apt install moreutils
$ echo '1' > test
$ cat test | sponge test
$ cat test
1

它确实需要安装额外的软件包并使用诸如Sponge 检查是否已安装的之类的内容进行预先检查。

With thanks to the comment made by @Cyrus to the original question

$ sudo apt install moreutils
$ echo '1' > test
$ cat test | sponge test
$ cat test
1

It does require installing an extra package and pre-checking for the binary using something like where sponge to check if it is installed.

bash:如何在不使用辅助文件的情况下将文件编辑到自身中 -

樱娆 2025-02-17 10:07:59

我猜想您显示的代码片段是为了设置初始线程 ttls 的值(其线程过程为 main ),仅。在所有其他线程中, ttls 将被更改为指向其他结构。

您可以通过显示至少一个线程过程的代码来确认此猜测,而不是 main

I'm guessing that the code fragment you showed is meant to set up the value of tTLS for the initial thread (the thread whose thread procedure is main), only. In all the other threads, tTLS will be changed to point to some other struct.

You could confirm this guess by showing the code of at least one thread procedure other than main.

将使用全局结构指针作为线程本地存储的原因是什么

樱娆 2025-02-17 02:54:14

也许不是最好的,但它解决了问题:

  SELECT T2.ID, T2.NAME, T2.PLACEID
  FROM
  (
    SELECT T1.*, RANK() OVER(PARTITION BY placeId ORDER BY ID) RNK
    FROM test_tbl T1
  ) T2
  WHERE T2.RNK = 1
  ORDER BY T2.ID

Maybe not the best, but it solves the problem:

  SELECT T2.ID, T2.NAME, T2.PLACEID
  FROM
  (
    SELECT T1.*, RANK() OVER(PARTITION BY placeId ORDER BY ID) RNK
    FROM test_tbl T1
  ) T2
  WHERE T2.RNK = 1
  ORDER BY T2.ID

Fiddle

跳过具有重复列值的行?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

更多

友情链接

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