zoukankan      html  css  js  c++  java
  • 项目中整合第三方插件与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类型

     

     

     

     

  • 相关阅读:
    Request 获取网址各片段
    网上购物系统(Task008)——用户界面层公共函数集WebUtility
    网上购物系统(Task010)——FormView编辑更新商品详细信息
    网上购物系统(Task011)——FormView插入删除商品详细信息
    网上购物系统(Task004)——通用数据库访问函数
    网上购物系统(Task009)——FormView显示商品详细信息
    今天上了个新网站,减肥族
    http://www.fluorinefx.com/
    山河有异,风景已非。神州陆沉,百年丘墟
    上次发布的网站网址错了
  • 原文地址:https://www.cnblogs.com/yangxiansen/p/7860017.html
Copyright © 2011-2022 走看看