项目中整合第三方插件与SpringMVC数据格式化关于ip地址
一、Bootstrap 响应式按钮
<div calss=”col-sm-2”>
<button class=”btn btn-default btn-block”>
</div>
表现结果:手机上全宽 桌面上2列宽
原理;btn-block 会将按钮变成全宽
但是在桌面上col-sm-2会失效 按钮被设置在2列宽
在手机上 col-sm-2失效(手机的尺寸是xs)
二、在自己的项目中整合第三方插件或功能
1.找到所有的依赖项(css、js、jar、配置文件),并且注意依赖项的顺序
2.将找到依赖项添加到自己的项目中(注意放置的位置,让新增加的内容符合项目的文本结构规范)(注意如果本项目中已经引入了相同依赖项,但版本不同时,要注意冲突情况,如果前端的版本冲突,可以都加入到项目中,在某些页面使用a版本,另外的页面使用b版本。如果jar包版本冲突,先尝试使用新版本,不行的话,再考虑使用哪个版本改动的代价最小)
3.如果有完整的示例或者项目中有可运行的代码,直接将代码尽量完整地复制到本项目中。能够运行起来之后,再进行修改或删减代码(注意检查控制台有没有报错)。
4.如果没有示例代码,则从文档中挑选简单的代码实验,先让代码能够运行起来,然后再增加复杂度。
5.能够运行起来之后,再根据需求去调整,尽可能实现需求所要求界面和功能效果,此时应该简单快速地浏览一下API文档,对整体API有一个印象
注意:优先寻找并使用第三方插件,而不是自己写一个!除非技术过硬时间充裕!
注意:网上同类型第三方插件有可能很多,选择方法的标准是:
A)能满足自己的需要
B)简单好用,文档写的好
C)使用人数多,评价好
三、在网页加载完毕之后再执行一段代码
此功能带来的好处是:可以不受js加载顺序的影响,可以将代码放在页面的任何位置
而不出错(.....is undefined......未定义)
在jQuery中,通过下面的方法可以实现
1.
<script>
$(function(){
页面加载完毕后要执行的代码
})
</script>
2.
<script>
$(document).ready(function(){
页面加载完毕后要执行的代码
})
</script>
四、MySQL日期时间类型和函数
1.基本时间类型
日期类型
存储空间 日期格式 日期范围
------------ --------- --------------------- - ----------------------------------------
datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
year 1 bytes YYYY 1901 ~ 2155
time 3 bytes HH:MM:SS -838:59:59 ~ 838:59:59
2.datetime
还是 timestamp的使用比较
在 MySQL 中创建表时,对照上面的表格,很容易就能选择到合适自己的数据类型。不过到底是选择
datetime 还是
timestamp,可能会有点犯难。这两个日期时间类型各有优点:datetime
的日期范围比较大;timestamp
所占存储空间比较小,只是 datetime
的一半。
另外,timestamp
类型的列还有个特性:默认情况下,在 insert, update
数据时,timestamp
列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL
会替你去处理
一般情况下,我倾向于使用 datetime
日期类型。
两者之间的比较:
a. timestamp容易所支持的范围比timedate要小。 并且容易出现超出的情况
b.timestamp比较受时区timezone的影响以及MYSQL版本和服务器的SQL
MODE的影响.
3.非正常情况下
比如表示历史时间的日期时间无法直接内置的日期时间类型
方法一:将年月日拆分成3个整数存储
方法二:使用Date或datetime;另外再一个字段表示公元前还公园后或年份偏移量、
五、日期时间函数
NOW() 可以获取当前日期和时间,可以赋值给
Current_Timestamp() 当前时间戳
Current_Date() 获取当前日期部分
Current_Time() 获取当前时间部分
日期时间可以使用+ /-
日期加减 date_add() date_sub()
时间相减 time_add() time_sub()
两个日期之差 date_diff()
两个时间之差 time_diff()
字符串转日期 str_to_date()
str_to_time()
计算天数 to_days()
时间转秒数 sec_to_times()
六、SpringMVC数据格式化
数据格式化是数据绑定功能的重要构成部分,能够把用户输入的字符串转换成模型对象的属性值(属性不是字符串类型)
格式化提供了注解支持
@DateTimeFormat 用来格式化日期时间
@Number 用来格式化数字 如: 123,456.789
@Currency 用来格式化货币 如: ¥123.00
@Percent 用来格式化百分数 如: 99.00%
JSTL的var属性
1.JSTL的很多标签都支持var属性,var属性可以将标签中的计算结果变成一个变量(默认在pageScope中,可以通过scope属性指定放在哪个作用域中),供标签外部使用。
2.form:input 的属性中不能再嵌套JSTL标签,但是还希望能够显示JSTL标签的计算结果,此时使用var就能解决问题
七、MySql索引
1. 索引存在意义是加速数据查找!加速的原理是数据库使用了特定的算法
(二分法、平衡二叉树、BTree)
2.索引的类型
A.普通索引(对于数据没有限制,但是对于数据值很少的列建索引的意义不大,如性别或枚举值)
外键(普通索引),当创建外键时,会同时创建一个普通索引
B.唯一性索引
(要求数据必须保持唯一性,一个值只能出现一次,否则就报错)
(索引可以跨越多个列,比如2列索引,3列索引)
如:用户名、邮箱、手机号、身份证号、主键(特殊的唯一索引)
C.全文索引
用于加速长字符串的搜索(短字符串的like搜索速度也不快,对于长字符串,使用like
是无法接受的)
desc、content、varchar(200以上)
数据库中的text类型都是长文本
MySQL全文索引默认只对英文支持比较好,对于中文,通常会使用某种分词技术。
MYSQL的全文索引智游MyISAM引擎支持。MyISAM引擎支持千万级数据存储,但不支持事务。
常用的支持事务的引擎是InnoDB,但通常只能支持百万级数据
3.索引的命名规则
i_表名_列名1_列名2...
索引方法
HASH 直接计算出值得存储位置,不需要搜索过程,速度最快
Btree 通过决策以二分法的方法快速收敛,搜索到结果,当数据量以指数级增长时,搜索时间只以线性方式增长,所以它适合大量数据的索引
八、MyBatis异常处理
MyBatis会在内部捕获所有的SQLException,捕获之后会在日志中输出错误信息,然后创建一个DataAccessException抛出
所以在Dao和Service层应该写throws DataAccessException.不能写SQLException(因为MyBatis已经捕获它,并将之转换成DataAccessException)
九、关于ip地址
获取离服务器最近机器的ip地址 request.getRemoteAddr()
在客户机与服务器之间有代理服务器
request.getHeader(“x-forwarded-for”) 指定的就是客户机的真实ip
request.getHeader(“Proxy-Client-IP”) 也有可能是这个头指定的
如果使用localhost 那么用
getRemoteAddr()得到的值是
0:0:.....1
获取到的IP地址是点分十进制表示法的字符串值
对于IPv4数据库可以用一个int值来存储,而且MySQL提供了转换函数
点分十进制-->int inet_aton()
int-->点分十进制 inet_ntoa()
名字来自于c语言函数(linux系统的函数)
使用int存储ip,搜索速度要比字符串快很多
添加索引之后,字符串的速度与int的速度没法比
JSP中字符串日期强制为date
<fmt:parseDate value="${m.dateTime}" pattern="yyyy-MM-dd" var="date"></fmt:parseDate>
<fmt:formatDate value="${date}" pattern="yyyy年
MM月
dd日 E" />
【父类】java.util.Date日期格式为:年月日时分秒
【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]
【子类】java.sql.Time日期格式为:时分秒
【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)
针对不同的数据库选用不同的日期类型
·Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型
·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型
项目中整合第三方插件与SpringMVC数据格式化关于ip地址的更多相关文章
- vue-cli项目中引入第三方插件
前言 最近有小伙伴问道如何在vue-cli项目中引入第三方插件或者库,例如如果想在项目中使用jQuery中的Ajax请求数据呢?或者我想使用Bootstrap框架呢?等等这些问题,本篇博客将带你学习如 ...
- 如何在Ionic2项目中使用第三方JavaScript库
onic的官网放出一记大招Ionic and Typings,来介绍如何在Ionic2项目中使用第三方JavaScript库. 因为在前阵子正好想用一个非常有名的第三方JS库ChartJs来实现一些东 ...
- 实战:vue项目中导入swiper插件
版本选择 swiper是个常用的插件,现在已经迭代到了第四代:swiper4.常用的版本是swiper3和swiper4,我选择的是swiper3. 安装 安装swiper3的最新版本3.4.2: n ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...
- Android Studio 在项目中引用第三方jar包
在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...
- 在 Ionic2 TypeScript 项目中导入第三方 JS 库
原文发表于我的技术博客 本文分享了在Ionic2 TypeScript 项目中导入第三方 JS 库的方法,供参考. 原文发表于我的技术博客 1. Typings 的方式 因在 TypeScript 中 ...
- 在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示
在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示) 1.使用npm安装依赖 npm install --save codemirror; 2.在页面中放入如下代码 ...
- 为什么在项目中data需要使用return返回数据呢?
问:为什么在项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件.
- vue中使用第三方插件animate.css实现动画效果
vue中使用第三方插件animate.css实现动画效果1.首先先引入第三方类animated.css2.将你所需要动画的标签用包裹起来3.在transition元素中添加enter-active-c ...
随机推荐
- Spring Cloud(七):使用SVN存储分布式配置中心文件和实现refresh
国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心. svn版本 同样先示例server端的代码,基本步骤一样. 1.添加依 ...
- 用注册表更改DNS的代码分享
用注册表更改DNS,1秒切换完毕,快速又方便,不用麻烦的去等待了,支持远程路劲运行 最进我这里DNS老是间歇性掉,很不稳定,广州地区,如果你的DNS经常需要更换,试试这个批处理, 论坛很多人发过了更改 ...
- Atitit.struts2体系结构大总结
Atitit.struts2体系结构大总结 1. 国际化与异常处理 2 2. 第5章 拦截器 2 3. 第7章 输入校验 2 4. 避免表单重复提交与等待页面 2 5. Struts 2对Ajax的支 ...
- 彻底清除Linux centos minerd木马 实战 跟redis的设置有关
top -c把cpu占用最多的进程找出来: Tasks: total, running, sleeping, stopped, zombie Cpu(s): 72.2%us, 5.9%sy, 0.0% ...
- Spring学习12-Spring利用mock进行单元测试
一.概述 对于Java组件开发者来说,他们都盼望拥有一组能够对组件开发提供全面测试功能的好用的单元测试.一直以来,与测试独立的Java对象相比,测试传统型J2EE Web组件是一项更为困难的任务 ...
- jinja2问题集锦
用jinja2写模板的时候遇到了一些问题,记录一下 抽出base.html作为模板 之前的小项目写得都很不规范,模板都是能用就行,基本上只用到if语句,for语句和变量.导航栏都是复制粘贴,没有把共同 ...
- ORACLE用户角色与授权
--创建一个用户CREATE USER test_user IDENTIFIED BY test_user; --创建一个角色 CREATE ROLE connect2 ; --为角色授权 GRANT ...
- 基于html5制作3D拳击游戏源码下载
今天给大家分享一款基于HTML5实现的3d拳王游戏源码.这款实例适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器. 在线预览 ...
- Linux系统编程--read/write
. read/write read函数从打开的设备或文件中读取数据. #include <unistd.h> ssize_t read(int fd, void *buf, size_t ...
- typeof关键字
C语言中 typeof 关键字是用来定义变量数据类型的.在linux内核源代码中广泛使用. 使用方法 1.当x的类型为是 int 时 _min1变量的数据类型则为 int. 2.当x为一个表达式时(例 ...