项目中整合第三方插件与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.找到所有的依赖项(cssjsjar、配置文件),并且注意依赖项的顺序

 

  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个整数存储

     方法二:使用Datedatetime;另外再一个字段表示公元前还公园后或年份偏移量、

 

 

五、日期时间函数

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%

 

JSTLvar属性

1.JSTL的很多标签都支持var属性,var属性可以将标签中的计算结果变成一个变量(默认在pageScope,可以通过scope属性指定放在哪个作用域中),供标签外部使用。

  2.form:input 的属性中不能再嵌套JSTL标签,但是还希望能够显示JSTL标签的计算结果,此时使用var就能解决问题

 

 

MySql索引

 1. 索引存在意义是加速数据查找!加速的原理是数据库使用了特定的算法

(二分法、平衡二叉树、BTree

 2.索引的类型

   A.普通索引(对于数据没有限制,但是对于数据值很少的列建索引的意义不大,如性别或枚举值)

         外键(普通索引),当创建外键时,会同时创建一个普通索引

   B.唯一性索引 (要求数据必须保持唯一性,一个值只能出现一次,否则就报错)

              (索引可以跨越多个列,比如2列索引,3列索引)

            如:用户名、邮箱、手机号、身份证号、主键(特殊的唯一索引)

         C.全文索引   用于加速长字符串的搜索(短字符串的like搜索速度也不快,对于长字符串,使用like 是无法接受的)

               desccontentvarchar200以上)

               数据库中的text类型都是长文本

      

           MySQL全文索引默认只对英文支持比较好,对于中文,通常会使用某种分词技术。

 

           MYSQL的全文索引智游MyISAM引擎支持。MyISAM引擎支持千万级数据存储,但不支持事务。

                常用的支持事务的引擎是InnoDB,但通常只能支持百万级数据

       3.索引的命名规则

            i_表名_列名1_列名2...

        索引方法

           HASH    直接计算出值得存储位置,不需要搜索过程,速度最快

           Btree     通过决策以二分法的方法快速收敛,搜索到结果,当数据量以指数级增长时,搜索时间只以线性方式增长,所以它适合大量数据的索引

 

八、MyBatis异常处理

    MyBatis会在内部捕获所有的SQLException,捕获之后会在日志中输出错误信息,然后创建一个DataAccessException抛出

所以在DaoService层应该写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="yyyyMM dd日  E" />


【父类】java.util.Date日期格式为:年月日时分秒 
【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据
【子类】java.sql.Time日期格式为:时分秒 
【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒) 
针对不同的数据库选用不同的日期类型 
·OracleDate类型,只需要年月日,选择使用java.sql.Date类型 
·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型

 

 

 

 

posted on 2017-11-19 15:56  杨先森的博客  阅读(151)  评论(0编辑  收藏  举报

导航