- vue和django接口联调
变形金刚卖人寿保险还是汽车保险
前端javascriptvue.js
vue访问服务端接口配置跨域前端跨域打开vite.config.js,在和resolve同级的地方添加配置。proxy代表代理的意思"/api"是以/api开头的路径走这个配置target代表目标changeOrigin:true,是开启跨域请求rewrite是编辑路径。(path)=>path.replace(/^\/api/,"")是去掉/api这样一个路径进来就会被处理,如下:"/api/c
- Vue3中实现el-table单选功能(取消前一项的选中)
需求描述产品说,表格行要只能选中一个且,不能使用el-radio方式因为要可以取消选中于是乎,有了当前的文章记录我们先看效果图效果图代码思路首先,把el-table的全选全不选勾选框取消::v-deep(.myTable){thead{th:nth-child(1){.cell{display:none;}}}}然后,去除前一项的选中状态@select="selectChange"constsel
- 如何在c# 项目中使用redis
A_nanda
c#redis缓存
在C#中使用Redis通常通过StackExchange.Redis库实现,这是.NET中最流行的Redis客户端库。以下是详细的使用指南,包含基础操作、连接管理、常见数据结构和高级功能:1.安装与基础配置安装NuGet包Install-PackageStackExchange.Redis连接Redis服务器usingStackExchange.Redis;//创建连接配置varconfigura
- el-radio
shadouqi
elementuivue.js
1.ElementUI中el-radio再次点击取消选中不使用change,当radio已被选中时,@change事件不会被触发备选项备选项备选项clickitem(e){e===this.radio2?this.radio2='':this.radio2=e},2.el-radio点击执行两次我直接使用@click.native.prevent.stop也没复现这个问题,如果有可参考下面方式el
- mysql练习
夏炎正好眠
MySQLmysql数据库
创建数据库db_ck,再创建表t_hero,将四大名著中的主要人物都插入这个表中,将实现过程中sql提交上上来1、创建数据库db_ckmysql>createdatabasedb_ck;2、创建表t_heromysql>usedb_ckDatabasechangedmysql>createtablet_hero(->idintprimarykeyauto_increment,->namevarch
- mysql数据库alter语句_MySQL之alter语句用法总结
许小晴
mysql数据库alter语句
1:删除列ALTERTABLE【表名字】DROP【列名称】2:增加列ALTERTABLE【表名字】ADD【列名称】INTNOTNULLCOMMENT'注释说明'3:修改列的类型信息ALTERTABLE【表名字】CHANGE【列名称】【新列名称(这里可以用和原来列同名即可)】BIGINTNOTNULLCOMMENT'注释说明'4:重命名列ALTERTABLE【表名字】CHANGE【列名称】【新列名称
- 使用 Node.js 和 Follow 模块监控 CouchDB 数据库变更
田猿笔记
nodeJs高级应用node.jscouchdb数据库
在现代分布式系统中,实时监控数据库变更并将数据推送到消息队列(如RabbitMQ)是一个常见需求。本文将介绍如何使用Node.js、Nano库和Follow模块实现对CouchDB数据库的变更监控,处理历史数据并无缝切换到实时监听。背景CouchDB提供了强大的_changes端点,支持实时获取数据库变更。通过结合Node.js的异步能力和Follow模块的事件驱动机制,我们可以构建一个高效的监控
- Android 滑块开关 自定义Switch
Cui晨
android
自定义Switch开关:cSwitch.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){Log.i(TAG,"onCheckedChanged改变状
- Dubbo知识点整理
eeeeeeeeethan
dubbojava
Dubbo模块划分Service:服务代码的实现。Config:RPC调用的配置,如超时时间、重试、缓存。Proxy:远程调用的服务代理。Registry:注册中心,给出调用方IP。Cluster:路由层,选择调用的服务提供者,实现路由过滤和均衡负载。Monitor:监控层。Protocol:远程调用层,封装调用过程。Exchange:信息交换层,用于封装请求并模式同步、异步获取响应结果。Tran
- Java直通车系列19【Spring MVC】(国际化支持)
浪九天
Java直通车javaspringmvc开发语言
目录国际化支持机制概述1.资源束(ResourceBundle)2.MessageSource3.LocaleResolver4.LocaleChangeInterceptor场景示例1.创建资源束文件2.配置MessageSource3.配置LocaleResolver4.配置LocaleChangeInterceptor5.创建控制器和视图解释国际化支持机制概述SpringMVC的国际化支持主
- 【HarmonyOS NEXT应用开发】案例89:基于Swiper的页面布局
青少年编程作品集
华为harmonyos华为云华为odlinqazure
场景一:Swiper页面支持自定义动画方案:给Swiper组件设置.nextMargin(50).prevMargin(50)属性。给Swiper组件添加onChange事件,设置当前this.currentIndex=index,当currentIndex为首页或者尾页时,设置上一张以及下一张图片的缩放值。核心代码:.onChange((index)=>{console.info('change
- flink-cdc实时增量同步mysql数据到elasticsearch
大数据技术派
#Flinkelasticsearchflinkmysql
什么是CDC?CDC是(ChangeDataCapture变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入INSERT、更新UPDATE、删除DELETE等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。1.环境准备mysqlelasticsearchflinkonyarn说明:如果没有安装hadoop,那么可以不用yarn,直
- 【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
wangnaisheng
WPFC#c#wpf
一、Slider基础用法在XAML中添加一个Slider控件,并设置其基本属性:Maximum="100"Value="50"Width="200"Height="30"HorizontalAlignment="Left"VerticalAlignment="Top"TickFrequency="10"TickPlacement="BottomRight"IsSnapToTickEnabled="
- 人脸识别,dlib优化,Dlib/OpenCV交叉编译
yiyayiya557
linux嵌入式
参考文章:GitRepo镜像使用帮助https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/交叉编译Dlib+OpenCV交叉编译移植到ARM64-v8平台(编译不通过,不可用)https://blog.csdn.net/kaychangeek/article/details/80365320Qt移植到ARM64-v8平台(NXPi.MX8M)笔记(未
- 【贪心算法】柠檬水找零
I_Am_Me_
贪心算法贪心算法算法
1.题目解析860.柠檬水找零-力扣(LeetCode)2.讲解算法原理分情况讨论5---》直接收下10---》找五元,收下20----》10+5△----》5+5+5由于5元更有用,则尽可能保留5元3.代码classSolution{publicbooleanlemonadeChange(int[]bills){intfive=0,ten=0;for(intx:bills){if(x==5){f
- js基本功(四)
码林鼠
javascript开发语言ecmascript
ASCIIASCII(AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。可以通过charCodeAt()方法获取字符的ASCII码,也可以通过String.fromCharCode()方法将ASCII码转换为字符。随着国际化的需求增加,ASCII的局限性也逐渐显现,
- 数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell
caihuayuan4
面试题汇总与解析springsqljava大数据课程设计
@TOC[Mysql数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell:https://blog.csdn.net/weixin_42526326/article/details/121148721什么是CDC?CDC(ChangeDataCapture)是变更数据获取的简称。可以基于增量日志,以极低的侵入性来完成增量数据捕获的工
- React基础之useMeno
青红光硫化黑
react.jsjavascript前端
作用:在组件每次重新渲染的时候缓存计算的结果import{useReducer,useState}from"react";functionfib(n){console.log('开始计算');if(nthisisapp,{setCount1(count1+1)}}>changecount1:{count1}{setCount2(count2+1)}}>changecount2:{count2}{r
- 《踩坑与填坑:细数早期 Vue2 项目那些事儿,附一手优化经验》
内向的小农
vue.js
前端实现导入文件的步骤(运用vue.js—导入)1,利用inputtype=file原生属性绑定change事件2,为触发按钮绑定事件导入3、按钮绑定的事件中触发inputchange事件```javascript//导入表格`在这里插入代码片`asyncimportData(){this.$refs.userImport.click()},4,清空inputflie文件(element.oute
- ONNX GraphSurgeon详细介绍
Lntano__y
模型部署算法
ONNXGraphSurgeon(ONNX-GS)是一个用于操作和修改ONNX(OpenNeuralNetworkExchange)模型图的Python库。它允许开发者在ONNX模型的图结构中进行修改、优化、插入节点、删除节点以及其他图结构操作,是在深度学习推理部署过程中非常有用的工具。ONNXGraphSurgeon常用于TensorRT中,用来优化和调整ONNX模型,以便于模型可以高效地在GP
- Spring Cloud Gateway网关获取路由转发后的真实地址
练川
微服务Gatewaygatewayjava微服务后端
目录配置文件代码结果在使用SpringCloudGateway时,我们可能需要获取路由转发后的地址(注意,这里的地址不是请求到网关的地址,是网关路由转发后的真实地址),下面通过代码演示如何在filter中获取路由转发后的地址。核心代码是Routeroute=exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);获取路由ro
- RabbitMQ知识点梳理
java1224
rabbitmq分布式
1.RabbitMQ逻辑架构有哪些?分为server端(也称为Broker)和client端server端:Broker:RabbitMQ服务器,用于对外提供服务。客户端(生产者及消费者)使用RabbitMQ消息中间件均需要连接到Broker,使用Rabbit的消息队列服务。VirtualHost:Broker的虚拟机,提供多租户功能,实现租户的权限分离。Exchange:消息交换器,指定消息发送
- (即插即用模块-特征处理部分) 三十、(2024) BFAM & CBM & DFEM 特征聚合+特征提取+边界感知
御宇w
即插即用-特征处理深度学习计算机视觉即插即用模块
文章目录1、BitemporalFeatureAggregationModule2、ChangeBoundary-AwareModule3、DeepFeatureExtractionModule4、代码实现paper:B2CNet:AProgressiveChangeBoundary-to-CenterRefinementNetworkforMultitemporalRemoteSensingIm
- xlsx.js 读取excel文件
这个昵称也不能用吗?
javascriptandroid开发语言
需求:读取一个excel文件。一、使用antd的Upload组件的【customRequest】方法。互斥。此方法跟【onChange】方法互斥,即:不可同时出现。调用次数不一样。onChange方法会根据文件当前的上传状态从而被调用多次(读取中,上传中,上传失败、上传完成等)。customRequest方法是自定义读取和上传的文件,因此,onChange方法的几个状态,【customReques
- antd Form 监听数据变化的2种方式比较。onValuesChange vs Form.useWatch
这个昵称也不能用吗?
前端javascript开发语言
1、onValuesChangeconstonValuesChange=(changedValue:any)=>{console.log('changedValues',changedValue);//此处只会展示,form里发生变更的属性};2、Form.useWatch此方式类似于使用useState包裹的数据。是可以实时更新的。参考官网使用方式constlanguage=Form.useWa
- RabbitMQ之交换机
CodePanda@GPF
RabbitMQrabbitmq分布式
文章目录1.交换机概念2.fanout交换机3.direct交换机4.topic交换机1.交换机概念RabbitMQ消息传递模型的核心思想是:生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何
- Base64图片压缩
真是6的不行
js前端javascript
Base64图片压缩,及将Base64转换成文件//图片文件上传获取urldocument.getElementById("aaa").addEventListener('change',function(){pressImg({file:this.files[0],targetSize:2*1024*1024,quality:0.5,width:600,succ:function(resultF
- OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
村北头的码农
OpenCVopencv人工智能计算机视觉
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。cv::illuminationChange是OpenCV中用于调整图像光照效果的一个函数。通过这个函数,你可以修改图像中的光照分布,以达到改善图像视觉效果或者为图像
- springboot Rabbit MQ topic 配置文件绑定队列和交换机
c137范特西
javajava-rabbitmqspringboot微服务
SpringBoot中如何将队列和交换机绑定(含实例讲解)在使用SpringBoot开发高并发的秒杀系统或者其他场景时,RabbitMQ是常用的消息队列中间件之一。本文将详细讲解如何在配置类中通过代码将队列与交换机绑定,并指定路由键来实现消息路由。一、RabbitMQ中的关键概念Exchange(交换机):交换机负责接收消息,并根据路由规则分发给绑定的队列。常见的交换机类型有Direct、Fano
- 进制转换 Python
热风暴
python开发语言
1.代码num=int(input("请输入要转换的数据:\n"))change=input("请选择转换进制:2、8、10、16\n")ifchange=='2':num=bin(num)print(f"进制转换后的数据为:"+num)elifchange=='8':num=oct(num)print("进制转换后的数据为:"+num)elifchange=='10':num=int(num)p
- 继之前的线程循环加到窗口中运行
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">