목차
1. 배경
2 클라이언트 IP 인터페이스 얻기
3.获取ip归属地
3.1 Ip2region 特性
3.2 整合Ip2region客户端进行查询
3.3 springboot整合示例
컴퓨터 튜토리얼 컴퓨터 지식 Douyin의 IP 위치를 쿼리하는 방법(Douyin의 IP 위치를 표시하는 방법)

Douyin의 IP 위치를 쿼리하는 방법(Douyin의 IP 위치를 표시하는 방법)

Feb 15, 2024 pm 02:42 PM
틱톡 메모리 사용량

Douyin의 IP 위치를 쿼리하는 방법(Douyin의 IP 위치를 표시하는 방법)

1. 배경

PHP 편집자 Xiaoxin이 Douyin의 IP 위치를 쿼리하는 방법을 소개합니다. Douyin 앱을 사용할 때 특정 사용자의 IP 주소가 어디에 속하는지 알고 싶은 경우가 종종 있습니다. IP 위치를 쿼리하면 사용자의 대략적인 위치 정보를 알 수 있습니다. 그렇다면 Douyin의 IP 위치를 확인하는 방법은 무엇입니까? 다음으로 자세한 답변을 드리겠습니다.

다음으로 Java 백엔드가 IP 속성 기능을 구현하는 방법에 중점을 두겠습니다. 실제로 다음 두 단계만 필요합니다.

2 클라이언트 IP 인터페이스 얻기

웹 개발을 해본 사람이라면 누구나 이해할 것입니다. 모바일이든 PC이든 요청 인터페이스는 HttpServletRequest 객체로 캡슐화됩니다. 이 객체에는 요청 주소, 매개변수, 제출된 데이터 등 클라이언트가 요청한 다양한 정보가 포함되어 있습니다.

서버가 IP를 직접 노출하는 경우 request.getRemoteAddr()을 사용하여 클라이언트 IP를 얻을 수 있습니다.

현재 널리 사용되는 아키텍처에서는 대부분의 서버가 IP 주소를 직접 노출하지 않지만 하나 이상의 역방향 프록시 계층을 통해 요청을 처리합니다. 일반적인 역방향 프록시 도구는 nginx입니다. 프록시를 도입하면 서버와 클라이언트 사이에 추가 계층이 있으므로 request.getRemoteAddr() 메서드를 사용하여 얻은 IP 주소는 클라이언트의 IP 주소가 아닌 프록시 서버의 IP 주소가 됩니다. 원래 클라이언트의 IP 주소를 추적하기 위해 일반적으로 X-Forwarded-For와 같은 정보가 전달 헤더에 추가됩니다. 이 정보는 요청의 실제 소스를 확인하는 데 사용될 수 있습니다.

X-Forwarded-For는 Squid에서 개발한 필드로 HTTP 프록시나 로드 밸런싱 서버를 통과할 때만 추가됩니다. 형식은 X-Forwarded-For:client1,proxy1,proxy2입니다. 일반적으로 첫 번째 IP 주소는 클라이언트의 실제 IP이고, 다음 IP 주소는 통과한 프록시 서버의 IP입니다. 위의 코드 주석에 따르면 첫 번째 IP 주소를 직접 가로챌 수 있습니다. Proxy-Client-IP/WL-Proxy-Client-IP는 Apache HTTP 서버에서 요청할 때만 존재하는 헤더입니다. Apache HTTP를 프록시로 사용하는 경우 일반적으로 Proxy-Client-IP 요청 헤더가 추가되며, WL-Proxy-Client-IP는 WebLogic 플러그인에 의해 추가되는 헤더입니다. 이 경우 헤더 정보를 직접 얻을 수도 있습니다. HTTP_CLIENT_IP는 일부 프록시 서버가 추가할 수 있는 요청 헤더입니다. X-Real-IP는 Nginx에서 일반적으로 사용하는 요청 헤더입니다.

일상적인 개발에서는 클라이언트를 추적하기 위해 어떤 헤더 정보를 사용해야 하는지 명확하게 지정되어 있지 않습니다. 얻을 때까지 하나씩 시도해야 합니다. 해당 코드는 다음과 같습니다.

ini
로그인 후 복사
로그인 후 복사

Copy code

@Slf4jpublic class IpUtils { private static final String UNKNOWN_VALUE = “unknown”; private static final String LOCALHOST_V4 = “127.0.0.1”; private static final String LOCALHOST_V6 = " 0:0:0:0:0:0:0:1"; private static final String X_FORWARDED_FOR = "X-Forwarded-For"; private static final String private static final String PROXY_CLIENT_IP = "프록시 -Client-IP”; private static final String WL_PROXY_CLIENT_IP = “WL-Proxy-Client-IP”; private static final String HTTP_CLIENT_IP = “HTTP_CLIENT_IP”; private static final String IP_DATA_PATH = ”/Users/shepherdmy /Desktop/ip2region.xdb”
; private static byte[] contentBuff; /*** 클라이언트 IP 주소 가져오기 * @param 요청 * @return*/ public static String getRemoteHost(HttpServletRequest request) { String ip = request.getHeader(X_FORWARDED_FOR); if ( StringUtils.isNotEmpty(ip) && !UNKNOWN_VALUE.equalsIgnoreCase(ip)) { // 여러 역방향 프록시 후에는 여러 개의 IP 값이 있으며 첫 번째 IP는 실제 IP입니다. int index = ip.indexOf(“,”)
; if (index != -1) { return ip.substring(0, index); } else { return ip; } }ip = request.getHeader( X_REAL_IP); if (StringUtils.isNotEmpty (ip) && !UNKNOWN_VALUE.equalsIgnoreCase(ip)) { return ip
; } if (StringUtils.isBlank(ip) ||UNKNOWN_VALUE.equalsIgnoreCase(ip)) {ip = request.getHeader(PROXY_CLIENT_IP)
; } if (StringUtils.isBlank(ip) ||UNKNOWN_VALUE.equalsIgnoreCase(ip)) {ip = request.getHeader(WL_PROXY_CLIENT_IP)
; } if (StringUtils.isBlank(ip) ||UNKNOWN_VALUE.equalsIgnoreCase(ip)) {ip = request.getRemoteAddr()
;} if (StringUtils.isBlank(ip) ||UNKNOWN_VALUE.equalsIgnoreCase(ip)) {ip = request.getHeader(HTTP_CLIENT_IP)
; } if (StringUtils.isBlank(ip) ) ||UNKNOWN_VALUE.equalsIgnoreCase(ip)) {ip = request.getRemoteAddr()
; } return ip.equals(LOCALHOST_V6) ? LOCALHOST_V4 : ip; } }

项目推荐:基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba企业级系统架构底层框架封装,解决业务开发时常见的非功能性需求,防止重复造轮子,方便业务快速开发和企业技术栈框架统一管理。引入组件化的思想实现高内聚低耦合并且高度可配置化,做到可插拔。严格控制包依赖和统一版本管理,做到最少化依赖。注重代码规范和注释,非常适合个人学习和企业使用

Github地址:github.com/plasticene/…

Gitee地址:gitee.com/plasticene3…

微信公众号:Shepherd进阶笔记

交流探讨群:Shepherd_126

3.获取ip归属地

通过上面我们就能获取到客户端用户的ip地址,接下来就可以通过ip解析获取归属地了。

如果我们在网上搜索资料教程,大部分都是说基于各大平台(eg:淘宝,新浪)提供的ip库进行查询,不过不难发现这些平台已经不怎么维护这个功能,现在处于“半死不活”的状态,根本不靠谱,当然有些平台提供可靠的获取ip属地接口,但是收费、收费、收费。

本着作为一个程序员的严谨:“能白嫖的就白嫖,避免出现要买的是你,不会用也是你的尴尬遭遇”。扯远了言归正传,为了寻求可靠有效的解决方案,只能去看看github有没有什么项目能满足需求,果然功夫不负有心人,发现一个宝藏级项目:ip2region,一个准确率 99.9% 的离线 IP 地址定位库,0.0x 毫秒级查询,ip2region.db 数据库只有数 MB的项目,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现,这里只能说:开源真香,开源万岁。

3.1 Ip2region 特性

标准化的数据格式

每个 ip 数据段的 region 信息都固定了格式:国家|区域|省份|城市|ISP,只有中国的数据绝大部分精确到了城市,其他国家部分数据只能定位到国家,其余选项全部是0。

数据去重和压缩

xdb 格式生成程序会自动去重和压缩部分数据,默认的全部 IP 数据,生成的 ip2region.xdb 数据库是 11MiB,随着数据的详细度增加数据库的大小也慢慢增大。

极速查询响应

即使是完全基于 xdb 文件的查询,单次查询响应时间在十微秒级别,可通过如下两种方式开启内存加速查询:

vIndex 索引缓存 :使用固定的 512KiB 的内存空间缓存 vector index 数据,减少一次 IO 磁盘操作,保持平均查询效率稳定在10-20微秒之间。xdb 整个文件缓存:将整个 xdb 文件全部加载到内存,内存占用等同于 xdb 文件大小,无磁盘 IO 操作,保持微秒级别的查询效率。

IP 数据管理框架

v2.0 格式的 xdb 支持亿级别的 IP 数据段行数,region 信息也可以完全自定义,例如:你可以在 region 中追加特定业务需求的数据,例如:GPS信息/国际统一地域信息编码/邮编等。也就是你完全可以使用 ip2region 来管理你自己的 IP 定位数据。

99.9% 准确率

数据聚合了一些知名 ip 到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比经典的纯真 IP 定位准确一些。

ip2region 的数据聚合自以下服务商的开放 API 或者数据(升级程序每秒请求次数 2 到 4 次):

01,>80%,淘宝IP地址库,ip.taobao.com/%5C02,≈10%,GeoIP,geoip.com/%5C03,≈2%,纯真 IP 库,www.cz88.net/%5C

备注:如果上述开放 API 或者数据都不给开放数据时 ip2region 将停止数据的更新服务。

3.2 整合Ip2region客户端进行查询

提供了众多主流编程语言的 xdb 数据生成和查询客户端实现,已经集成的客户端有:java、C#、php、c、python、nodejs、php扩展(php5 和 php7)、golang、rust、lua、lua_c,nginx。这里讲一下java的客户端。

首先我们需要引入依赖:

xml
로그인 후 복사

复制代码

org.lionsoulip2region2.6.5

接下来我们需要先去下载数据文件ip2region.xdb到本地,然后基于数据文件进行查询,下面查询方法文件路径改为你本地路径即可,ip2region提供三种查询方式:

完全基于文件的查询

java
로그인 후 복사
로그인 후 복사
로그인 후 복사

复制代码

import
org.lionsoul.ip2region.xdb.Searcher;import java.io.*;import
java.util.concurrent.TimeUnit;publicclassSearcherTest {publicstaticvoidmain(String[] args) {// 1、创建 searcher 对象StringdbPath=”ip2region.xdb file path”;Searchersearcher=null;try { searcher = Searcher.newWithFileOnly(dbPath); } catch (IOException e) { System.out.printf(“failed to create searcher with `%s`: %s\\n”, dbPath, e);return; }// 2、查询try {Stringip=”1.2.3.4″;longsTime= System.nanoTime();Stringregion= searcher.search(ip);longcost=
TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() – sTime)); System.out.printf(“{region: %s, ioCount: %d, took: %d μs}\\n”, region, searcher.getIOCount(), cost); } catch (Exception e) { System.out.printf(“failed to search(%s): %s\\n”, ip, e); }// 3、关闭资源 searcher.close();// 备注:并发使用,每个线程需要创建一个独立的 searcher 对象单独使用。 }}

缓存 VectorIndex 索引

我们可以提前从 xdb 文件中加载出来 VectorIndex 数据,然后全局缓存,每次创建 Searcher 对象的时候使用全局的 VectorIndex 缓存可以减少一次固定的 IO 操作,从而加速查询,减少 IO 压力。

java
로그인 후 복사
로그인 후 복사
로그인 후 복사

复制代码

import
org.lionsoul.ip2region.xdb.Searcher;import java.io.*;import
java.util.concurrent.TimeUnit;publicclassSearcherTest {publicstaticvoidmain(String[] args) {StringdbPath=”ip2region.xdb file path”;// 1、从 dbPath 中预先加载 VectorIndex 缓存,并且把这个得到的数据作为全局变量,后续反复使用。byte[] vIndex;try { vIndex =
Searcher.loadVectorIndexFromFile(dbPath); } catch (Exception e) { System.out.printf(“failed to load vector index from `%s`: %s\\n”, dbPath, e);return; }// 2、使用全局的 vIndex 创建带 VectorIndex 缓存的查询对象。 Searcher searcher;try { searcher =
Searcher.newWithVectorIndex(dbPath, vIndex); } catch (Exception e) { System.out.printf(“failed to create vectorIndex cached searcher with `%s`: %s\\n”, dbPath, e);return; }// 3、查询try {Stringip=”1.2.3.4″;longsTime= System.nanoTime();Stringregion= searcher.search(ip);longcost=
TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() – sTime)); System.out.printf(“{region: %s, ioCount: %d, took: %d μs}\\n”, region, searcher.getIOCount(), cost); } catch (Exception e) { System.out.printf(“failed to search(%s): %s\\n”, ip, e); }// 4、关闭资源 searcher.close();// 备注:每个线程需要单独创建一个独立的 Searcher 对象,但是都共享全局的制度 vIndex 缓存。 }}

缓存整个 xdb 数据

我们也可以预先加载整个 ip2region.xdb 的数据到内存,然后基于这个数据创建查询对象来实现完全基于文件的查询,类似之前的 memory search。

java
로그인 후 복사
로그인 후 복사
로그인 후 복사

复制代码

import
org.lionsoul.ip2region.xdb.Searcher;import java.io.*;import
java.util.concurrent.TimeUnit;publicclassSearcherTest {publicstaticvoidmain(String[] args) {StringdbPath=”ip2region.xdb file path”;// 1、从 dbPath 加载整个 xdb 到内存。byte[] cBuff;try { cBuff =
Searcher.loadContentFromFile(dbPath); } catch (Exception e) { System.out.printf(“failed to load content from `%s`: %s\\n”, dbPath, e);return; }// 2、使用上述的 cBuff 创建一个完全基于内存的查询对象。 Searcher searcher;try { searcher = Searcher.newWithBuffer(cBuff); } catch (Exception e) { System.out.printf(“failed to create content cached searcher: %s\\n”, e);return; }// 3、查询try {Stringip=”1.2.3.4″;longsTime= System.nanoTime();Stringregion= searcher.search(ip);longcost=
TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() – sTime)); System.out.printf(“{region: %s, ioCount: %d, took: %d μs}\\n”, region, searcher.getIOCount(), cost); } catch (Exception e) { System.out.printf(“failed to search(%s): %s\\n”, ip, e); }// 4、关闭资源 – 该 searcher 对象可以安全用于并发,等整个服务关闭的时候再关闭 searcher// searcher.close();// 备注:并发使用,用整个 xdb 数据缓存创建的查询对象可以安全的用于并发,也就是你可以把这个 searcher 对象做成全局对象去跨线程访问。 }}

3.3 springboot整合示例

首先我们也需要像上面一样引入maven依赖。然后就可以基于上面的查询方式进行封装成工具类了,我这里选择了上面的第三种方式:缓存整个 xdb 数据

ini
로그인 후 복사
로그인 후 복사

复制代码

@slf4jpublic class iputils {private static final string ip_data_path =”
/users/shepherdmy/goodtop/ip2grecion.xdb”; 개인 정적 byte [] contentbuff; 。contentBuff =Searcher.loadContentFromFile(IP_DATA_PATH)
; } catch (IOException e) { e.printStackTrace(); } } /*** IP 기반 위치 쿼리, 고정 형식: China|0|Zhejiang Province|Hangzhou City|Telecom * @param ip * @return*/ public static IpRegion getIpRegion(String ip) { Searcher searcher = null; IpRegion ipRegion = new IpRegion(); 시도해 보세요 {searcher = Searcher.newWithBuffer(contentBuff); String Region = searcher.search(ip); String[]info = StringUtils.split(region, “|”); ipRegion.setCountry(info[0]); ipRegion.setArea(info[1]); ipRegion.setProvince(info[2]); ipRegion.setCity(info[3 ]); ipRegion.setIsp(info[4]); } catch (Exception e) { log.error(“get ip 지역 오류: “, e); } finally { if (searcher != null ) { try { searcher.close(); } catch (IOException e) { log.error(“검색기 닫기 오류:”, e); } } } return ipRegion; }}

위 내용은 Douyin의 IP 위치를 쿼리하는 방법(Douyin의 IP 위치를 표시하는 방법)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

외국 여성의 표현 팩 전체 모음 외국 여성의 표현 팩 전체 모음 Jul 15, 2024 pm 05:48 PM

외국인 여성의 이모티콘은 무엇입니까? 최근에는 외국 여성의 이모티콘 패키지가 인터넷에서 큰 인기를 끌었습니다. 많은 친구들이 영상을 볼 때 접하게 될 것입니다. 아래에서 해당 이모티콘 패키지를 공유해 드리겠습니다. 외국 여성의 표현 팩 전체 모음

저는 솔직하게 밈 소개를 자제해달라고 요청했습니다. 저는 솔직하게 밈 소개를 자제해달라고 요청했습니다. Jul 17, 2024 am 05:44 AM

솔직하게 말하고 놓아준다는 것은 무엇을 의미합니까? "솔직히 놔달라고 애원했어요"라는 인터넷 유행어는 물가 상승에 대한 일련의 유머러스한 논의에서 유래됐다. 이 표현은 현재는 개인이 특정한 상황에 직면한다는 것을 의미하는 자기비하나 조롱 상황에서 주로 사용된다. (압박, 놀림, 농담 등) 참을 수 없거나 논쟁을 벌일 수 없을 것 같은 느낌이 든다면 편집자를 따라가서 이 밈의 소개를 살펴보겠습니다. "벌써 놔달라고 애원한다"라는 밈의 소개 출처: "벌써 놔달라고 애원한다"는 "시간의 보물을 더하면 솔직해진다"에서 유래하여 나중에 "리쿤이 올라간다면"으로 발전했다. 2위안, 솔직하게 말씀해주세요.", "아이스티 홍차는 1위안 올라갑니다. 솔직하게 말씀해주세요." 네티즌들은 “솔직하게 가격 깎아달라고 했어요”라고 외쳤고, 이는 결국 “솔직하게 놔달라고 했어요”로 발전해 이모티콘 패키지가 탄생했다. 사용법 : 방어를 무너뜨릴 때, 선택의 여지가 없을 때, 심지어 자신을 위해서도 사용됩니다.

현지에서 Deepseek을 미세 조정하는 방법 현지에서 Deepseek을 미세 조정하는 방법 Feb 19, 2025 pm 05:21 PM

Deepseek 클래스 모델의 로컬 미세 조정은 컴퓨팅 리소스와 전문 지식이 충분하지 않아야합니다. 이러한 과제를 해결하기 위해 다음과 같은 전략을 채택 할 수 있습니다. 모델 양자화 : 모델 매개 변수를 저 반영 정수로 변환하여 메모리 발자국을 줄입니다. 더 작은 모델 사용 : 더 쉬운 로컬 미세 조정을 위해 작은 매개 변수가있는 사전 취사 모델을 선택하십시오. 데이터 선택 및 전처리 : 고품질 데이터를 선택하고 모델 효과에 영향을 미치는 데이터 품질이 좋지 않도록 적절한 전처리를 수행하십시오. 배치 교육 : 대규모 데이터 세트의 경우 메모리 오버플로를 피하기 위해 훈련을 위해 배치로 데이터를로드하십시오. GPU 로의 가속도 : 독립 그래픽 카드를 사용하여 교육 프로세스를 가속화하고 교육 시간을 단축하십시오.

왜냐면 그 사람은 소개를 잘하니까 왜냐면 그 사람은 소개를 잘하니까 Jul 16, 2024 pm 08:59 PM

스토킹을 잘한다고 무슨 뜻인가요? 많은 친구들이 짧은 영상 댓글 영역에서 이런 댓글을 본 적이 있을 거라 생각하는데, 오늘은 '그 사람이 좋으니까'라는 밈을 소개하려고 합니다. 아직 모르시는 분들은 오셔서 구경해보세요. '그 사람이 좋으니까' 밈의 유래: '그 사람이 좋으니까'라는 밈은 인터넷에서 유래되었으며, 특히 Douyin과 같은 짧은 동영상 플랫폼에서 인기 있는 밈으로, 잘 알려진 누화에 의한 농담과 관련이 있습니다. 배우 궈더강. 이 문단에서 곽덕강은 어떤 일을 하지 말아야 할 몇 가지 이유를 유머러스하게 나열했는데, 각각의 이유는 '그 사람이 좋으니까'로 끝나서, 사실 직접적인 인과관계는 없지만 말도 안되는 유머러스한 논리를 형성하고 있다. 그리고 웃긴 표정. 핫한 밈: 예를 들어 “난 할 수 없어”

세분성 줄기 소개 정렬 세분성 줄기 소개 정렬 Jul 16, 2024 pm 12:36 PM

세분성을 정렬한다는 것은 무엇을 의미합니까? "Align the granularity"는 영화 "The Annual Meeting Can't Stop!"에서 처음 등장했으며, 인터뷰에서 배우 Dapeng이 제안한 내용을 자세히 살펴보겠습니다. 밈 소개 "Align the granularity" [Align the granularity]는 표준 영어나 전문용어가 아니라, 특정 상황에서 사용하는 일종의 직장 속어입니다. 직장 속어의 의미는 두 당사자가 정보를 동기화하고 공통의 이해를 형성한다는 것입니다. 영화가 말하는 것은 모든 세부 사항을 양측 모두에게 알리는 것입니다.

JD.com, Taobao, Pinduoduo, Douyin 및 Kuaishou가 '온라인 거래 준수 및 운영에 관한 자율 규율 협약'에 공동으로 서명했습니다. JD.com, Taobao, Pinduoduo, Douyin 및 Kuaishou가 '온라인 거래 준수 및 운영에 관한 자율 규율 협약'에 공동으로 서명했습니다. Aug 23, 2024 am 12:05 AM

"온라인 거래의 준수 및 운영에 관한 자율 규율에 관한 협약" 서명자: 북경 징동 세기 무역 유한 회사 타오티엔 유한 회사 상하이 Xunmeng 정보 기술 유한 회사 상하이 Gewuzhipin 네트워크 기술 유한 회사 .Beijing Kuaishou Technology Co., Ltd. 주요 내용: 1. 플랫폼 책임 이행 신용 평가 메커니즘, 제품 품질 즉석 확인 메커니즘, 광고 릴리스 관리 메커니즘을 구축하고 온라인 생방송 및 짧은 비디오 마케팅 활동 관리를 강화합니다. 2. 소비자의 권익을 보호하고 소비자의 개인정보가 원활하게 유통되도록 성실하게 운영합니다. 3. 불공정 경쟁을 엄격히 금지합니다. 법적 프레임워크 내에서의 건전한 경쟁을 방지합니다. 규칙을 악용하여 플랫폼 내에서 부당한 손실을 입히는 것을 방지합니다. 4. 가격을 명확하게 표시하고 이익을 금지합니다.

Douyin의 콩바오 기능을 활성화하는 방법 Douyin의 콩바오 기능을 활성화하는 방법 Nov 28, 2024 pm 07:39 PM

틱톡의 모회사 바이트댄스가 출시한 AI 비서 '두바오(Doubao)'가 강력한 생성 능력으로 주목을 받았다. 이 가이드는 빈백 여행을 쉽게 시작하는 데 도움이 되는 간단한 단계를 제공합니다. 처음에는 웹 버전(doubao.com)이나 Android 앱을 통해 Douyin 계정에 로그인할 수 있습니다. 로그인 후 텍스트 생성, 이미지 생성, 음성 상호작용(안드로이드 앱만 해당) 등의 기능을 사용해 AI 창작의 재미를 체험해 볼 수 있습니다.

도시 또는 도시 밈 소개 도시 또는 도시 밈 소개 Jul 15, 2024 pm 10:58 PM

도시가 아닌 도시 밈은 무엇을 의미하나요? 도시(City)는 중국어와 영어를 교묘하게 결합하여 장소, 장면, 생활 방식이 현대 도시의 스타일과 트렌드를 가지고 있는지 유머러스하게 평가하는 인터넷 밈입니다. 도시는 도시가 아니다 밈 소개의 출처: 이 밈은 외국 블로거 '바오바오 시옹(Bao Bao Xiong)'이 중국을 여행할 때 여동생과 대화할 때 항상 사악한 말투로 "도시는 도시가 아니다"라고 묻곤 했습니다. , 예를 들어: "상하이는 도시가 아닌가요?" 도시? "정말 도시군요!" 의미: 소위 "도시"는 도시화, 서구적 스타일, 심지어는 "흥미진진함"을 표현하는 데 사용됩니다. 많은 장면과 현상을 볼 때 느끼는 충격, 행복, 기쁨.

See all articles