- “深入浅出”系列之C++:(21)C++23
我真不会起名字啊
c++c++23java
凌晨3点,你盯着屏幕上的段错误崩溃日志:"第387行用%d输出了string...这都能过编译?""为了对齐表格,我写了20个setw!""客户说中文乱码,又要调locale到天亮?"2023年,C++开发者终于等来这个历史性时刻:ISO委员会全票通过std::print/println——让printf和cout同时失业的终极打印方案!⌛时间旅行对比://2003年(C++03时代)std::c
- Golang - 时间处理总结
二进制杯莫停
Golanggolang开发语言后端
Golang-时间处理总结1获取时间对象1.1获取当前对象对象1.2根据指定时间返回time.Time类型1.2获取当前年月日时分秒、星期几、一年中的第几天等操作1.3日期字符串解析成time.Time类型解析的时候需要特别注意时区的问题:2时间对象转时间字符串3时区4时间运算5时间比较6时间戳7常见例子7.1time转日期字符串7.2time转时间戳7.3时间戳转time7.4时间戳转日期字符串
- 【转】“小前台,大中台”战略—以阿里云中台设计为例
调皮的芋头
阿里云云计算大数据
前言:当一位设计师拿到中台设计业务的时候,会想什么?别人会怎么评价中台的设计呢?“你这系统才几百人用,有啥价值啊?”“都是内部人员使用,能用就行了,没必要那么极致”“中后台系统人数这么少,你做像人家官网那样做数据统计有什么意义吗?”“你的设计出去讲,观众都没用过,没啥体感啊!”“你别纠结了,今天给你的需求,明天给我设计稿啊,老板要这周就上线,没多少开发时间了”听到这些声音的时候是不是无言以对?就在
- FocusSearch/focus_mcp_sql实战:低成本实现精准自然语言转SQL指南
mysql数据库
最近在GitHub上逛的时候,发现了一个挺有意思的项目——FocusSearch/focus_mcp_sql。作为一个对Text2SQL有点小研究的前端码农,我忍不住想和大家聊聊这个工具。它不像那些常见的基于大模型的框架那样“高大上”,反而用了一种更接地气的思路解决问题。接下来,我就从Text2SQL的老故事讲起,带你看看这个项目能干啥,顺便设想一个场景,最后再唠唠为啥我觉得它值得开发者试一试。T
- golang时间相关函数总结
zhoupenghui168
golang#golang基础golang服务器前端time
1.时间戳转换成日期函数//时间戳转换成日期函数funcUnixToTime(timestampinterface{},formatstring)string{ifformat==""{format="2006-01-0215:04:05"}value1,ok64:=timestamp.(int64)//类型断言,判断传入的参数数据类型,并根据不同数据类型进行逻辑处理value2,ok32:=ti
- python C# 内存共享互传 图像 以及字符串
虚假程序设计
pythonc#图像处理
首先用命令行调用:publicstringExecuteCommand(stringcommand){stringoutput=string.Empty;//用于存储命令的输出stringerror=string.Empty;//用于存储命令的错误信息try{using(Processp=newProcess())//使用Process类启动新进程{//配置进程启动信息p.StartInfo.Fi
- C++STL之string
画个逗号给明天"
C++之STL容器c++开发语言
1.介绍在C++中,string是标准库中的一个类,用于处理字符串。相比于C风格字符串(字符数组),string提供了更强大和便捷的功能。2.string用法(1)声明与初始化std::stringstr;//空字符串std::stringstr="Hello,World!";std::stringstr1="Hello";std::stringstr2(str1);//使用str1初始化str2
- 力扣刷题打卡第一天——基础——知识积累
Helen_star_L
leetcode前端javascript
第一题交替合并字符串题目描述:给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回合并后的字符串。代码如下:/***@param{string}word1*@param{string}word2*@return{string}*///先将字符串变成小写的——>判断字符串长度(需符合条
- Java-自动拆箱/装箱/缓存/效率/String和包装类相互转换
我荔枝呢!
java开发语言
为什么基本类型需要包装类?泛型与集合支持问题:基本数据类型在使用上虽然方便、简单且高效,但像泛型以及集合元素的存储等场景并不支持基本数据类型,而包装类可以解决这个问题,使其能更好地融入到一些需要对象类型的机制中。面向对象思维:基本数据类型不符合面向对象编程的思维方式,包装类把基本数据类型“包装”成了对象形式,更契合面向对象的编程模式。提供实用方法:包装类提供了很多实用的方法,例如Integer类中
- std::string 使用
滚菩提哦呢
c++开发语言
std::string是C++中的一种字符串类型。它实际上是一个封装了动态字符数组的类。使用std::string可以轻松地进行字符串操作,如拼接、插入、删除、查找等。使用std::string的方法如下:定义std::string变量:#includestd::strings;//空字符串std::strings1="Hello,world!";//使用字面值初始化std::strings2(s
- java http远程调用接口下载文件
《小书生》
java杂谈java
远程调用http接口下载文件,接口返回流一、将文件保存本地publicStringhttpDownload(StringhttpUrl){try{URLurl=newURL(httpUrl);//filePath文件地址,fileName文件名Filefile=newFile(filePath,fileName);FileUtils.copyURLToFile(url,file);}catch(I
- C++ 动态字符串String的介绍及经典用法展示
幸存者letp
算法竞赛池c++java开发语言
std::string:在C++中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。std::string的特点:1.动态字符串:std::string是一个动态字符串类,它可以根据需要自动调整大小。2.操作简便:std::string提供了类似于C风格字符串的接口,
- Query String 传递 json 对象参数、map参数
dreamofheart1
jsonjavahttp
?params[name]=John¶ms[age]=30¶ms[isStudent]=trueparams[name]和params[age]中的[]是非法字符。服务器(ApacheTomcat)默认不允许在URL中使用[]。对[]进行URL编码将[]编码为%5B和%5D。示例:?params%5Bname%5D=John¶ms%5Bage%5D=30¶ms%5B
- 【Python爬虫(24)】Redis:Python爬虫的秘密武器
奔跑吧邓邓子
Python爬虫python爬虫redis开发语言缓存
【Python爬虫】专栏简介:本专栏是Python爬虫领域的集大成之作,共100章节。从Python基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。目录一、Redis数据结构大揭秘1.1字符串(String)1.2哈希
- ASP.NET MVC 下载文件
csdn_aspnet
.netasp.netmvc
如何从MVC控制器(.NETFramework)下载文件。使用从ASP.NETMVC中的控制器下载任何文件类型FileStreamResult。注意:如果使用ASP.NETCore,请参阅此页面,如果想要将文件上传到服务器,请参阅此页面。//downloadazipfileasanattachmentpublicFileStreamResultDownloadZipFile(){stringpat
- MFC中CString的Format、与XML中的XML_SETTEXT格式化注意
云中飞鸿--**峰
MFCXMLmfcxmlc++
1、在MFC中导入"msxml6.dll",并使用其中的XML_SETTEXT函数,此调用在进行格式化的时候,调用的还是CString.Format()函数!2、用double类型的数据,格式化整形数%d之前,必须将double强转为int,如下图所示:否则,结果将全部变为0,无法获取到真实的数据。3、保存double数据的时候,必须使用%lf进行格式化,如果使用%d进行格式化,结果也会全部变成0
- 数据类型与变量
5xidixi
java开发语言
数据类型与变量1.字面常量常量即程序运行期间,固定不变的量称为常量publicclassMain{publicstaticvoidmain(String[]args){System.out.println("helloworld!");System.out.println(10);System.out.println(1.11);System.out.println('A');System.out
- pdf转换成word在线 简单好用 支持批量转换 效率高 100%还原
hello_simon
pdfword自媒体产品运营性能优化pdf转换pdf转word
pdf转换成word在线简单好用支持批量转换效率高100%还原在数字化办公的浪潮中,文档格式转换常常让人头疼不已,尤其是PDF转Word的需求极为常见。PDF格式虽然方便阅读和传输,但难以编辑,而Word格式却能灵活地进行内容修改。现在,有一款宝藏工具——小白工具网PDF在线转换功能(https://www.xiaobaitool.net/files/pdf-word/?r=qzz1x8),让PD
- MacOS快速安装FFmpeg、ffprobe、ffplay
杰哥的技术杂货铺
Linuxmacoslinuxffmpeg流媒体工具
文章目录一、工具简介二、mac安装ffprobe、FFmpeg等相关工具2.1方法一:使用Homebrew安装FFmpeg2.2从官网下载FFmpeg安装包,源码安装2.3macOS无法验证开发者时安装一、工具简介这些工具都是与多媒体处理和流媒体相关的开源工具,它们都属于FFmpeg多媒体框架。FFmpeg是一个用于处理多媒体内容(音频、视频、图像等)的命令行工具。它可以执行各种各样的操作,包括转
- ioc详解
FuckTheWindows
java
IoC全称InversionofControl,直译为控制反转。这是一种设计理念,并非技术。在明白控制反转之前,应该知道“反转”反的是什么。被反转的正转我们从生活中的做饭场景开始。在家做菜与餐馆吃饭自己做饭:想好要做的菜——自己准备原料——自己烹饪——成品//Rectangle.javapublicclassSquareimplementsShape{publicclassCircleimplem
- 【迭代器学习】
奋斗的刘
学习开发语言c++
迭代器在Vector中的使用在C++中可以使用下标运算符来访问string对象的字符和vector的元素,还有另外一种更通用的的机制也可以实现同样的目的,这就是迭代器。迭代器和指针不同的是不使用取地址符,有迭代器的类型同时拥有返回迭代器的成员。例如这些类型都拥有名为begin和end的成员,其中begin成员负责返回指向第一个元素,end负责返回指向最后一个元素。//初始化定义vectorvi{1
- python迭代器与生成器实际用途_Python的迭代器和生成器
weixin_39856208
先说迭代器,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的就,在后台for语句对容器对象对象调用iteration()函数,这是python的内置函数,iter()会返回一个定义next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素是,调用next()会抛出一个StopIteration异常上
- 对于Windows 11备份和还原的探索
黄铎彦
大一上学期windows
前言本来我的安全意识不足,认为自己的电脑随便玩都没事。但是几天之前就出事了。当我想打开威睿工作站(VMwareWorkstation)的Linux虚拟机的时候,发现它开不起来了!威睿的图标下面的圈子一直在转,转了好几分钟都没办法。重装威睿也没办法!于是,我就用了华为的F10恢复出厂设置。这一恢复可不得了。所有软件都得重装!像微信、QQ之类零零碎碎的软件不说,特别是VS,得等半天,真的耗不起!于是我
- Swift:KeyPath
陌上心
Swiftswift
Swift中可以使用KeyPath来获取属性值,语法为\Type.property.property.....。官方给出的示例:classAnimal:NSObject{@objcvarname:Stringinit(name:String){self.name=name}}letllama=Animal(name:"Llama")letnameAccessor=\Animal.nameletna
- CSE 231 Computer Python program
后端
CSE231Spring2025ComputerProject#4LearningobjectivesThisassignmentfocusesonthedesign,implementationandtestingofaPythonprogramthatusescharacterstringsforlookingattheDNAsequencesforkeyproteinsandseeingho
- tidb实时同步到mysql
数据库
客户要求实时同步表的数据到mysql,但这个表在tidb。测试直接通过tidbcdc写入到mysql,有些字段是null,所以中间加了一个kafka实现客户库中创建表CREATETABLEtb_1(idbigintprimarykey,cidbigint,gidbigint,feeDECIMAL(10,2),created_attimestamp,typesmallint,remarkstring
- CSE 231 Computer Python program
后端
CSE231Spring2025ComputerProject#4LearningobjectivesThisassignmentfocusesonthedesign,implementationandtestingofaPythonprogramthatusescharacterstringsforlookingattheDNAsequencesforkeyproteinsandseeingho
- JavaScript的内置对象有哪些?
乐多_L
javascript开发语言ecmascript
一、内置对象1、概念JavaScript中的对象共分为3种:自定义对象、浏览器对象和内置对象。之前我们自己创建的对象都属于自定义对象,而内置对象又称为API,是指JavaScript语言自己封装的一些对象,用来提供一些常用的基本功能,来帮助我们提高开发速度,例如:数学-Math、日期-Date、数组-Array、字符串-String等等。JavaScript的内置对象很多,我们不可能都记住,所以我
- lombok在高版本idea中注解不生效的解决
L_!!!
springbootmavenjava服务器前端
环境:IntelliJIDEA2024.3.1.1+SpringBoot+Maven问题描述使用@AllArgsConstructor注解一个用户类,然后调用全参构造方法创建对象,出现错误:java:无法将类com.itheima.pojo.User中的构造器User应用到给定类型; 需要:没有参数 找到: java.lang.Integer,java.lang.String,java.lang
- cocos creator从零开发简单框架(12)-代码生成单色Sprite
cocos
在写Panel前,先写个方法生成单色Sprite,这样当碰到需要单色Sprite的时候不需要在编辑器拖拽和代码动态加载资源。编辑framework/scripts/AppUtil.ts,添加newSpriteNode方法。//生成默认白色100x100大小Sprite(单色)节点publicstaticnewSpriteNode(name:string='newSpriteNode'):cc.No
- 继之前的线程循环加到窗口中运行
3213213333332132
javathreadJFrameJPanel
之前写了有关java线程的循环执行和结束,因为想制作成exe文件,想把执行的效果加到窗口上,所以就结合了JFrame和JPanel写了这个程序,这里直接贴出代码,在窗口上运行的效果下面有附图。
package thread;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util
- linux 常用命令
BlueSkator
linux命令
1.grep
相信这个命令可以说是大家最常用的命令之一了。尤其是查询生产环境的日志,这个命令绝对是必不可少的。
但之前总是习惯于使用 (grep -n 关键字 文件名 )查出关键字以及该关键字所在的行数,然后再用 (sed -n '100,200p' 文件名),去查出该关键字之后的日志内容。
但其实还有更简便的办法,就是用(grep -B n、-A n、-C n 关键
- php heredoc原文档和nowdoc语法
dcj3sjt126com
PHPheredocnowdoc
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Current To-Do List</title>
</head>
<body>
<?
- overflow的属性
周华华
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&q
- 《我所了解的Java》——总体目录
g21121
java
准备用一年左右时间写一个系列的文章《我所了解的Java》,目录及内容会不断完善及调整。
在编写相关内容时难免出现笔误、代码无法执行、名词理解错误等,请大家及时指出,我会第一时间更正。
&n
- [简单]docx4j常用方法小结
53873039oycg
docx
本代码基于docx4j-3.2.0,在office word 2007上测试通过。代码如下:
import java.io.File;
import java.io.FileInputStream;
import ja
- Spring配置学习
云端月影
spring配置
首先来看一个标准的Spring配置文件 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=&q
- Java新手入门的30个基本概念三
aijuans
java新手java 入门
17.Java中的每一个类都是从Object类扩展而来的。 18.object类中的equal和toString方法。 equal用于测试一个对象是否同另一个对象相等。 toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示.(toString 方法是一个很重要的方法) 19.通用编程:任何类类型的所有值都可以同object类性的变量来代替。
- 《2008 IBM Rational 软件开发高峰论坛会议》小记
antonyup_2006
软件测试敏捷开发项目管理IBM活动
我一直想写些总结,用于交流和备忘,然都没提笔,今以一篇参加活动的感受小记开个头,呵呵!
其实参加《2008 IBM Rational 软件开发高峰论坛会议》是9月4号,那天刚好调休.但接着项目颇为忙,所以今天在中秋佳节的假期里整理了下.
参加这次活动是一个朋友给的一个邀请书,才知道有这样的一个活动,虽然现在项目暂时没用到IBM的解决方案,但觉的参与这样一个活动可以拓宽下视野和相关知识.
- PL/SQL的过程编程,异常,声明变量,PL/SQL块
百合不是茶
PL/SQL的过程编程异常PL/SQL块声明变量
PL/SQL;
过程;
符号;
变量;
PL/SQL块;
输出;
异常;
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言PL/SQL 是对 SQL 的扩展,sql的执行时每次都要写操作
- Mockito(三)--完整功能介绍
bijian1013
持续集成mockito单元测试
mockito官网:http://code.google.com/p/mockito/,打开documentation可以看到官方最新的文档资料。
一.使用mockito验证行为
//首先要import Mockito
import static org.mockito.Mockito.*;
//mo
- 精通Oracle10编程SQL(8)使用复合数据类型
bijian1013
oracle数据库plsql
/*
*使用复合数据类型
*/
--PL/SQL记录
--定义PL/SQL记录
--自定义PL/SQL记录
DECLARE
TYPE emp_record_type IS RECORD(
name emp.ename%TYPE,
salary emp.sal%TYPE,
dno emp.deptno%TYPE
);
emp_
- 【Linux常用命令一】grep命令
bit1129
Linux常用命令
grep命令格式
grep [option] pattern [file-list]
grep命令用于在指定的文件(一个或者多个,file-list)中查找包含模式串(pattern)的行,[option]用于控制grep命令的查找方式。
pattern可以是普通字符串,也可以是正则表达式,当查找的字符串包含正则表达式字符或者特
- mybatis3入门学习笔记
白糖_
sqlibatisqqjdbc配置管理
MyBatis 的前身就是iBatis,是一个数据持久层(ORM)框架。 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis对JDBC进行了一次很浅的封装。
以前也学过iBatis,因为MyBatis是iBatis的升级版本,最初以为改动应该不大,实际结果是MyBatis对配置文件进行了一些大的改动,使整个框架更加方便人性化。
- Linux 命令神器:lsof 入门
ronin47
lsof
lsof是系统管理/安全的尤伯工具。我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步。将这个工具称之为lsof真实名副其实,因为它是指“列出打开文件(lists openfiles)”。而有一点要切记,在Unix中一切(包括网络套接口)都是文件。
有趣的是,lsof也是有着最多
- java实现两个大数相加,可能存在溢出。
bylijinnan
java实现
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BigIntegerAddition {
/**
* 题目:java实现两个大数相加,可能存在溢出。
* 如123456789 + 987654321
- Kettle学习资料分享,附大神用Kettle的一套流程完成对整个数据库迁移方法
Kai_Ge
Kettle
Kettle学习资料分享
Kettle 3.2 使用说明书
目录
概述..........................................................................................................................................7
1.Kettle 资源库管
- [货币与金融]钢之炼金术士
comsci
金融
自古以来,都有一些人在从事炼金术的工作.........但是很少有成功的
那么随着人类在理论物理和工程物理上面取得的一些突破性进展......
炼金术这个古老
- Toast原来也可以多样化
dai_lm
androidtoast
Style 1: 默认
Toast def = Toast.makeText(this, "default", Toast.LENGTH_SHORT);
def.show();
Style 2: 顶部显示
Toast top = Toast.makeText(this, "top", Toast.LENGTH_SHORT);
t
- java数据计算的几种解决方法3
datamachine
javahadoopibatisr-languer
4、iBatis
简单敏捷因此强大的数据计算层。和Hibernate不同,它鼓励写SQL,所以学习成本最低。同时它用最小的代价实现了计算脚本和JAVA代码的解耦,只用20%的代价就实现了hibernate 80%的功能,没实现的20%是计算脚本和数据库的解耦。
复杂计算环境是它的弱项,比如:分布式计算、复杂计算、非数据
- 向网页中插入透明Flash的方法和技巧
dcj3sjt126com
htmlWebFlash
将
Flash 作品插入网页的时候,我们有时候会需要将它设为透明,有时候我们需要在Flash的背面插入一些漂亮的图片,搭配出漂亮的效果……下面我们介绍一些将Flash插入网页中的一些透明的设置技巧。
一、Swf透明、无坐标控制 首先教大家最简单的插入Flash的代码,透明,无坐标控制: 注意wmode="transparent"是控制Flash是否透明
- ios UICollectionView的使用
dcj3sjt126com
UICollectionView的使用有两种方法,一种是继承UICollectionViewController,这个Controller会自带一个UICollectionView;另外一种是作为一个视图放在普通的UIViewController里面。
个人更喜欢第二种。下面采用第二种方式简单介绍一下UICollectionView的使用。
1.UIViewController实现委托,代码如
- Eos平台java公共逻辑
蕃薯耀
Eos平台java公共逻辑Eos平台java公共逻辑
Eos平台java公共逻辑
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月1日 17:20:4
- SpringMVC4零配置--Web上下文配置【MvcConfig】
hanqunfeng
springmvc4
与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明。
applicationContext-MvcConfig.xml
<!-- 启用注解,并定义组件查找规则 ,mvc层只负责扫描@Controller -->
<
- 解决ie和其他浏览器poi下载excel文件名乱码
jackyrong
Excel
使用poi,做传统的excel导出,然后想在浏览器中,让用户选择另存为,保存用户下载的xls文件,这个时候,可能的是在ie下出现乱码(ie,9,10,11),但在firefox,chrome下没乱码,
因此必须综合判断,编写一个工具类:
/**
*
* @Title: pro
- 挥洒泪水的青春
lampcy
编程生活程序员
2015年2月28日,我辞职了,离开了相处一年的触控,转过身--挥洒掉泪水,毅然来到了兄弟连,背负着许多的不解、质疑——”你一个零基础、脑子又不聪明的人,还敢跨行业,选择Unity3D?“,”真是不自量力••••••“,”真是初生牛犊不怕虎•••••“,••••••我只是淡淡一笑,拎着行李----坐上了通向挥洒泪水的青春之地——兄弟连!
这就是我青春的分割线,不后悔,只会去用泪水浇灌——已经来到
- 稳增长之中国股市两点意见-----严控做空,建立涨跌停版停牌重组机制
nannan408
对于股市,我们国家的监管还是有点拼的,但始终拼不过飞流直下的恐慌,为什么呢?
笔者首先支持股市的监管。对于股市越管越荡的现象,笔者认为首先是做空力量超过了股市自身的升力,并且对于跌停停牌重组的快速反应还没建立好,上市公司对于股价下跌没有很好的利好支撑。
我们来看美国和香港是怎么应对股灾的。美国是靠禁止重要股票做空,在
- 动态设置iframe高度(iframe高度自适应)
Rainbow702
JavaScriptiframecontentDocument高度自适应局部刷新
如果需要对画面中的部分区域作局部刷新,大家可能都会想到使用ajax。
但有些情况下,须使用在页面中嵌入一个iframe来作局部刷新。
对于使用iframe的情况,发现有一个问题,就是iframe中的页面的高度可能会很高,但是外面页面并不会被iframe内部页面给撑开,如下面的结构:
<div id="content">
<div id=&quo
- 用Rapael做图表
tntxia
rap
function drawReport(paper,attr,data){
var width = attr.width;
var height = attr.height;
var max = 0;
&nbs
- HTML5 bootstrap2网页兼容(支持IE10以下)
xiaoluode
html5bootstrap
<!DOCTYPE html>
<html>
<head lang="zh-CN">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">