- LeetCode 解题思路 2(Hot 100)
S01d13r
leetcode算法职场和发展
解题思路:哈希去重:将所有元素存入哈希集合。遍历检查起点:对每个元素,若其前驱不存在,则作为起点开始向后扩展,统计最长连续序列。Java代码:classSolution{publicintlongestConsecutive(int[]nums){SetnumSet=newHashSet<>();for(intnum:nums){numSet.add(num);}intmaxLength=0;fo
- LeetCode 解题思路 1(Hot 100)
S01d13r
leetcodejava算法
解题思路:哈希表优化查找:利用哈希表存储已遍历元素的值及其索引,将查找时间从O(n)降至O(1)。一次遍历:遍历数组对每个元素计算补数,若补数存在于哈希表中,则直接返回结果;否则将该元素存入哈希表。Java代码:importjava.util.HashMap;importjava.util.Map;classSolution{publicint[]twoSum(int[]nums,inttarge
- tkinter防抖数字输入框
三巧
pythontkinter
importtkinterastkimportlocalefromtkinterimportfontastkFontclassDebouncedNumericEntry(tk.Entry):def__init__(self,master=None,debounce_delay=500,warning_duration=3000,allow_decimal=True,allow_negative=T
- MySQL中OR操作导致索引失效的深度解析与技术优化方案
阿豆学编程
Mysqlmysql数据库
一、索引机制与查询优化基础B+树索引的结构特性MySQL采用B+树作为核心索引结构,其平衡多路搜索树的特性保证了O(logN)的查询效率。B+树具有以下显著特征:所有叶子节点形成有序链表,支持高效范围查询非叶子节点仅存储索引键值,不保存数据指针数据记录按主键顺序存储在聚簇索引的叶子节点每个节点存储的键值数量由页大小和键值长度决定以InnoDB引擎为例,其默认页大小为16KB。假设索引键为INT类型
- 第9章 Apache WEB服务器企业实战
lihuhelihu
Linux运维学习apache前端服务器linux运维centos计算机网络
万维网(WORLDWIDEWEB,WWW)服务器,也称之为WEB服务器,主要功能是提供网上信息浏览服务。WWW是Internet的多媒体信息查询工具,是Internet上飞快发展的服务,也是目前用的最广泛的服务。正是因为有了WWW软件,才使得近年来Internet迅速发展。目前主流的WEB服务器软件包括:Apache、Nginx、Lighttpd、IIS、Resin、Tomcat、WebLogic
- LangChain —— 多模态大模型的 prompt template
Miyazaki_Hayao
LangChainlangchainprompt
文章目录一、如何直接将多模态数据传输给模型二、如何使用mutimodalprompts一、如何直接将多模态数据传输给模型 在这里,我们演示了如何将多模式输入直接传递给模型。对于其他的支持多模态输入的模型提供者,langchain在类中提供了内在逻辑来转化为期待的格式。 传入图像最常用的方法是将其作为字节字符串传入。这应该适用于大多数模型集成。importbase64importhttpximage
- 【Python pro】函数
CH3_CH2_CHO
今天你学Python了嘛python网络开发语言
1、函数的定义及调用1.1为什么需要函数提高代码复用性——封装将复杂问题分而治之——模块化利于代码的维护和管理1.1.1顺序式n=5res=1foriinrange(1,n+1):res*=iprint(res)#输出:1201.1.2抽象成函数deffactorial(n):res=1foriinrange(1,n+1):res*=ireturnresprint(factorial(5))#输出
- EasyTcp 服务器完善版
wwxy261
算法
服务器主函数#include"EasyTcpServer.hpp"#includeboolg_bRun=true;voidcmdThread(){while(true){charcmdBuf[256]={};scanf("%s",cmdBuf);if(0==strcmp(cmdBuf,"exit")){g_bRun=false;printf("退出cmdThread线程\n");break;}el
- 如何判断字符串中所有字符是否全都不同?
钰云空间
java算法开发语言
文章目录概要解法一:利用Set不可重复性代码解析优点与缺点解法二:位运算解决代码解析优点与缺点结论概要在编程中,检查一个字符串中所有字符是否全都不同是一个常见问题。以下是两种常见的解决方案:使用集合(Set)和位运算(BitManipulation)。每种方法都有其优点和适用场景。本文将详细介绍这两种方法,包括其实现代码和分析解法一:利用Set不可重复性使用集合(Set)是一种直观且易于理解的方法
- 以太网的分层架构_以太网上TCP/IP协议的分层结构及其报文格式
weixin_39589557
以太网的分层架构
TCP/IP协议是一个比较复杂的协议集,有很多专业书籍介绍。在此,我仅介绍其与编程密切相关的部分:以太网上TCP/IP协议的分层结构及其报文格式。我们知道TCP/IP协议采用分层结构,其分层模型及协议如下表:应用层(Application)HTTP、Telnet、FTP、SMTP、SNMP传输层(Transport)TCP、UDP网间网层(Internet)IP【ARP、RARP、ICMP】网络接
- redis 实现登陆次数限制
weixin_30388677
数据库javaruntime
title:redis-login-limitation利用redis实现登陆次数限制,注解+aop,核心代码很简单.基本思路比如希望达到的要求是这样:在1min内登陆异常次数达到5次,锁定该用户1h那么登陆请求的参数中,会有一个参数唯一标识一个user,比如邮箱/手机号/userName用这个参数作为key存入redis,对应的value为登陆错误的次数,string类型,并设置过期时间为1mi
- 文件服务器登录次数限制,redis 实现登陆次数限制的思路详解
Sinaean Dean
文件服务器登录次数限制
title:redis-login-limitation利用redis实现登陆次数限制,注解+aop,核心代码很简单.基本思路比如希望达到的要求是这样:在1min内登陆异常次数达到5次,锁定该用户1h那么登陆请求的参数中,会有一个参数唯一标识一个user,比如邮箱/手机号/userName用这个参数作为key存入redis,对应的value为登陆错误的次数,string类型,并设置过期时间为1mi
- C++数据结构之数组(详解)
画个逗号给明天"
C++常用数据结构数据结构c++开发语言
1.介绍在C++中,数组是一种基本的数据结构,用于存储相同类型的元素的集合。数组的元素在内存中是连续存储的,可以通过索引访问。下面将详细介绍C++数组的相关内容。2.数组的定义数组的定义需要指定元素的类型和数组的大小。typearrayName[arraySize];type:数组元素的类型(如int、char)等。arrayName:数组的名称。arraySize:数组的大小(必须是常量表达式)
- WPF-ReactiveUi
晓纪同学
C#技巧总结wpfhadoop大数据
文章目录依赖属性和命令的绑定弱绑定强绑定界面后台的cs文件强捆绑方式定义属性和命令第一种方法第二种方法第三种方法动态数据集合whenAny监听单个监听单个对象的多个属性监听多个对象对各属性whenAnyValue例程一例程二WhenAnyValue属性WhenAnyValue(x=>x.SearchTerm)Throttle(TimeSpan.FromMilliseconds(800))Selec
- unity shader 处理圆角矩形进度条
frankxixu
手游开发
Shader"Custom/BloodShader"{Properties{_MainTex("Base(RGB)",2D)="white"{}_RADIUSBUCE("_RADIUSBUCE",Range(0,0.5))=0.2_WidthDevideHeight("WidthDevideHeight",Float)=8.889//宽/长}SubShader{pass{CGPROGRAM#pra
- Python 基础(三):入门必备知识的思考与对之前内容的总结
AI自学kuke-v
Python教学python开发语言
1思考前两节我们讲了input,print()还有变量与数据类型的用法,但是我发现可学习性还是比较低。无法让大家系统的掌握Python这门语言的入门语法。那么为什么要系统的掌握语法呢?因为系统的掌握语法后,当我们想要用到这一知识点的时候,我们就可以迅速的找到相应的处理方法,从而更加方便与快捷的解决我们遇到的问题,不至于我们到用到的时候再去寻找相关的处理方法,所以我讲的内容要尽可能的高度地相关性、全
- 判断二进制中1的个数(c语言版)
老吴学编程
1的个数c语言开发语言算法c++c#
第一种方法,直接unsignedinta,使它变成无符号数,也是最简单直接的方法。这是第二种方法,也是最为简便的方法,其中的while(n),当n=0时,为假,也就跳出了循环,然后n&(n-1)这个步骤也不难理解,第一个n与第二个n可以发现它的最右端1没了,第二个与第三个也是如此,因此可以得出n&(n-1)可以消掉其最右端的1。这是第三种方法,理解较简单,看代码便能看懂,就不一一赘述了。
- 51单片机学习-流水灯(keil与Proteus)
创益无界
嵌入式学习51单片机嵌入式硬件单片机学习
一、跑马灯(keil)1.硬件接线原理图(1)、89C52(2)、流水灯2、keil代码#include//包含51头文件#include//包含移位标准库函数头文件#defineuintunsignedint#defineucharunsignedcharuchartemp;//LED灯相关变量voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=114;
- 【go语言规范】Kubernetes 中kubelet关于接口的反模式、并且违背单一职责原则
还没入门的大菜狗
kubelet
Go接口设计与KubernetesKubelet接口实现分析Go语言的接口理念是"在使用侧定义接口"(interfacesegregationprinciple),而不是让实现者提供接口。但在Kubelet代码中看到的情况确实有些特殊。//SyncHandlerisaninterfaceimplementedbyKubelet,fortestabilitytypeSyncHandlerinterf
- 蓝桥杯备考1
计算机小白进化版CM
程序设计基础学习蓝桥杯算法职场和发展
第一题#includeusingnamespacestd;typedeflonglongLL;intmain(intargc,char*argv[]){inta,b,c,d,e,f,g,h;ints=0;for(a=0;a>,cout用usingnamespacestd;intmain(){printf("%d",'L');//输入字符时注意用‘’单引号。return0;}第三题#includeu
- C语言排序算法
只有月亮知道
排序算法c语言算法
这篇文章总结一下C语言数据结构中常见的几种排序算法。1.直接插入排序直接插入排序的算法思想是,从第二个元素开始,逐个将元素插入到已排序部分。对于每个待插入元素,从后向前扫描已排序部分,找到合适的位置并插入voidInsertSort(int*a,intn){for(inti=1;i=0)//挨个遍历判断大小{if(temp1){gap/=2;//当gap为1时,就为直接插入排序for(inti=0
- cookieParser 依赖详解
yqcoder
web安全前端
cookie-parser是一个用于在Express.js中解析HTTPCookie的Node.js中间件。它将Cookie字符串解析为JavaScript对象,使开发者能够方便地在Express应用中访问和操作Cookie。一、安装npminstallcookie-parser二、基本使用constexpress=require("express");constcookieParser=requ
- 2022.2.10训练思维练习
钟佩颖
c语言
//输出十进制1234对应的八进制和十六进制//#include//intmain()//{//printf("0%o,0x%x\n",1234,1234);//return0;//}//将一个四位数反向输出//#include//intmain()//{//intn=0;//scanf_s("%d",&n);//while(n)//{//printf("%d",n%10);//n=n/10;//
- 2022.2.12思维训练(入门c语言题)
钟佩颖
c语言
//#include//intmain()//{////return0;//}//#include//intmain()//{//printf("%d\n",sizeof(char));//printf("%d\n",sizeof(int));////printf("%d\n",sizeof(long));//printf("%d\n",sizeof(double));//return0;//}/
- Git出现 [rejected] master -> master (fetch first) error: failed to push some refs to解决方法
码农研究僧
BUGgitgithubssh
目录在gitadd以及commit之后通过push的时候出现如下问题PSD:\项目\manongyanjiuseng>gitpushoriginmasterTossh://xx.git![rejected]master->master(fetchfirst)error:failedtopushsomerefsto'ssh://xx.git'hint:Updateswererejectedbecau
- hint: Updates were rejected because the remote contains work that you dohint: not have locally. Thi
小趴菜日记
python
hint:Updateswererejectedbecausetheremotecontainsworkthatyoudohint:nothavelocally.Thisisusuallycausedbyanotherrepositorypushinghint:tothesameref.Youmaywanttofirstintegratetheremotechangeshint:(e.g.,'gi
- 图片产生深度效果的6种方式
不吃斋的和尚
unity计算机视觉前端
一、2D全景图采样这个Shader的核心是将输入的HDR环境图像通过反射方向进行采样,并且允许对反射方向进行旋转和调整MIP级别。PS:这里可以将2D图改成CubeMap方式去采样;Shader"Custom/HDRToCubemapRotateAndMip"{Properties{_MainTex("HDRTexture",2D)="white"{}//输入HDR单图_ReflectColor(
- [默认管线]sss角色渲染shader
不吃斋的和尚
unity计算机视觉
代码暂未优化,多光源着色器:Shader"Common/Skin/SSS_Wet"{Properties{_MainTex("主纹理",2D)="white"{}[HDR]_MakeUpCol("妆容颜色",Color)=(1,1,1,1)_MakeUpTex("妆容遮罩",2D)="balck"{}_AOTex("AO纹理",2D)="balck"{}_AOpow("AO强度",Range(0,
- JWT token工具类
HPF_99
springbootjwttokenizationspringboot
头部(header,一般使用base64加密)JWT的头部有两部分信息:声明类型,这里是JWT声明加密的算法,通常直接使用HMACSHA256载荷(payload)该部分一般存放一些有效的信息(如用户名)。iss:JWT的签发者sub:JWT所面向的用户aud:接收该JWT的一方exp(expires):什么时候过期,时间戳iat(issuedat):在什么时候签发的签名(signature)前面
- Excel中VLOOKUP 函数学习、多种函数混合使用
谁家有个大人
Excel的工作技巧excel学习
一、什么是VLOOKUP函数?VLOOKUP(垂直查找)是Excel中用于在表格中查找特定值并返回对应数据的函数。它常用于在大型数据集中快速查找信息。二、函数语法=VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])-lookup_value:要查找的值。-table_array:查找范围,包括查找列(也就是‘lookup_v
- 继之前的线程循环加到窗口中运行
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">