精华内容
下载资源
问答
  • 微信小程序的一级页面和二级页面设置

    微信小程序的一级页面和二级页面设置

     

           微信小程序中开发中,新建了page,在app.json里面设置了pages属性。

    运行时,会出现报错。

     

          报错截图:


         报错原因:

         这是由于,在微信小程序中app.json里面的路由填写顺序,如一般二级界面就写在一级界面的下面,千万别写在末尾。


         解决方法:

       

         在app.json的page路由按一级、二级的顺序向下排列显示。

         解决方法如图:








    展开全文
  • MyBatis中的一级缓存和二级缓存介绍

    千次阅读 多人点赞 2017-06-13 20:07:22
    先说缓存,合理使用缓存是优化...一级缓存 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也
    先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。

    一级缓存
    一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。

    一级缓存的工作原理:


    用户发起查询请求,查找某条数据,sqlSession先去缓存中查找,是否有该数据,如果有,读取;
    如果没有,从数据库中查询,并将查询到的数据放入一级缓存区域,供下次查找使用。
    但sqlSession执行commit,即增删改操作时会清空缓存。这么做的目的是避免脏读。
    如果commit不清空缓存,会有以下场景:A查询了某商品库存为10件,并将10件库存的数据存入缓存中,之后被客户买走了10件,数据被delete了,但是下次查询这件商品时,并不从数据库中查询,而是从缓存中查询,就会出现错误。
    既然有了一级缓存,那么为什么要提供二级缓存呢?
    二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。二级缓存的作用范围更大。
    还有一个原因,实际开发中,MyBatis通常和Spring进行整合开发。Spring将事务放到Service中管理,对于每一个service中的sqlsession是不同的,这是通过mybatis-spring中的org.mybatis.spring.mapper.MapperScannerConfigurer创建sqlsession自动注入到service中的。 每次查询之后都要进行关闭sqlSession,关闭之后数据被清空。所以spring整合之后,如果没有事务,一级缓存是没有意义的。

    二级缓存
    二级缓存原理:

    二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
    UserMapper有一个二级缓存区域(按namespace分),其它mapper也有自己的二级缓存区域(按namespace分)。每一个namespace的mapper都有一个二级缓存区域,两个mapper的namespace如果相同,这两个mapper执行sql查询到数据将存在相同的二级缓存区域中。
    开启二级缓存:
    1,打开总开关
    在MyBatis的配置文件中加入:
    <settings>  
       <!--开启二级缓存-->  
        <setting name="cacheEnabled" value="true"/>  
    </settings> 
    2,在需要开启二级缓存的mapper.xml中加入caceh标签
    <cache/>
    3,让使用二级缓存的POJO类实现Serializable接口
    public class User implements Serializable {}

    测试一下
    @Test
    public void testCache2() throws Exception {
        SqlSession sqlSession1 = sqlSessionFactory.openSession();
        SqlSession sqlSession2 = sqlSessionFactory.openSession();
        UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);
        User user1 = userMapper1.findUserById(1);
        System.out.println(user1);
        sqlSession1.close();
        UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);
        User user2 = userMapper2.findUserById(1);
        System.out.println(user2);
        sqlSession2.close();
    }
    输出结果:
    DEBUG [main] - Cache Hit Ratio [com.iot.mybatis.mapper.UserMapper]: 0.0
    DEBUG [main] - Opening JDBC Connection
    DEBUG [main] - Created connection 103887628.
    DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@631330c]
    DEBUG [main] - ==>  Preparing: SELECT * FROM user WHERE id=? 
    DEBUG [main] - ==> Parameters: 1(Integer)
    DEBUG [main] - <==      Total: 1
    User [id=1, username=张三, sex=1, birthday=null, address=null]
    DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@631330c]
    DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@631330c]
    DEBUG [main] - Returned connection 103887628 to pool.
    DEBUG [main] - Cache Hit Ratio [com.iot.mybatis.mapper.UserMapper]: 0.5
    User [id=1, username=张三, sex=1, birthday=null, address=null]
    我们可以从打印的信息看出,两个sqlSession,去查询同一条数据,只发起一次select查询语句,第二次直接从Cache中读取。

    前面我们说到,Spring和MyBatis整合时, 每次查询之后都要进行关闭sqlSession,关闭之后数据被清空。所以spring整合之后,如果没有事务,一级缓存是没有意义的。那么如果开启二级缓存,关闭sqlsession后,会把该sqlsession一级缓存中的数据添加到namespace的二级缓存中。这样,缓存在sqlsession关闭之后依然存在。

    总结:
    对于查询多commit少且用户对查询结果实时性要求不高,此时采用mybatis二级缓存技术降低数据库访问量,提高访问速度。

    但不能滥用二级缓存,二级缓存也有很多弊端,从MyBatis默认二级缓存是关闭的就可以看出来。
    二级缓存是建立在同一个namespace下的,如果对表的操作查询可能有多个namespace,那么得到的数据就是错误的。
    举个简单的例子:
    订单和订单详情,orderMapper、orderDetailMapper。在查询订单详情时我们需要把订单信息也查询出来,那么这个订单详情的信息被二级缓存在orderDetailMapper的namespace中,这个时候有人要修改订单的基本信息,那就是在orderMapper的namespace下修改,他是不会影响到orderDetailMapper的缓存的,那么你再次查找订单详情时,拿到的是缓存的数据,这个数据其实已经是过时的。

    根据以上,想要使用二级缓存时需要想好两个问题:
    1)对该表的操作与查询都在同一个namespace下,其他的namespace如果有操作,就会发生数据的脏读。
    2)对关联表的查询,关联的所有表的操作都必须在同一个namespace。





    展开全文
  • 光分配网(ODN)的分光方式主要有两种:一级分光和二级分光,如图1所示。受PON设备光功率预算及带宽的限制,当前,ODN的总分路比一般为1:64。 图1 ODN的一级分光和二级分光 采用一级分光时,分路器一般设置在配线...

     

    光分配网(ODN)的分光方式主要有两种:一级分光和二级分光,如图1所示。受PON设备光功率预算及带宽的限制,当前,ODN的总分路比一般为1:64。

    图1 ODN的一级分光和二级分光

    采用一级分光时,分路器一般设置在配线光交处;采用二级分光时,第一级分路器一般设置在配线光交处,第二级分路器一般设置在分纤箱处。

    那么,一级分光和二级分光有哪些不同?分别适用于什么场景呢!

     

    1 引入段光缆纤芯数

     

    当采用一级分光时,分纤箱分配的纤芯数(从配线光交连接到分纤箱的纤芯)主要与分纤箱覆盖的住户数和配线比(配置的端口数/覆盖的住户数)有关;例如,当一个光缆分纤箱覆盖一个12户的住宅单元,如果配线比为50%,则分纤箱分配的纤芯数为12×50%=6(芯);分纤箱分配的光缆纤芯一般为6、8、12芯,如图2所示。

     

    图2 采用一级分光时的引入光缆芯数

    当采用二级分光时,无论分纤箱覆盖的住户数多少,分纤箱分配的纤芯数均为2芯,其中1芯连接分路器,另1芯备用,如图3所示。注意,光缆中分配的纤芯是指该段光缆在光交成端的纤芯数,与光缆的芯数不一定一样。

    图3采用二级分光时的引入光缆芯数

    显然,采用一级分光时,引入光缆的纤芯数随覆盖的住户数增加而增加;采用二级分光时,引入光缆的纤芯数只和分纤箱的数量有关。例如,一个住宅小区共设置了50个分纤箱,每个分纤箱覆盖的平均住户数为20户,配线比为50%,则采用一级分光时的引入光缆总芯数不少于50×20×0.5=500芯,采用二级分光时的引入光缆总芯数不少于50×2=100芯。

     

    2 用户放装的便捷性

     

    当采用一级分光时,光分路器的上行方向端口在工程阶段就已经和上行配线光缆进行了连接,在用户放装时,装维人员一般需经过以下步骤才能完成外线光缆的连接:

    (1)在覆盖待装用户的分纤箱处找到分纤箱内的空闲端口A;

    (2)到安装分路器的交接箱处,找到上述空闲端口A在交接箱内的对应端口B;

    (3)将分路器下行方向的指定空闲端口,连接到端口B。

    当采用二级分光时,第一级光分路器的上、下行端口在工程阶段已经分别与配线、引入光缆的纤芯进行了连接,放装时,只需要根据网管资料,在覆盖待装用户的分纤箱内找到对应的空闲端口即可。

    显然,采用二级分光时的用户放装较一级分光要便捷得多。

     

    3 ODN链路全程衰耗

     

    在同样分路比的情况下,二级分光所采用的2个光分路器的插损之和要大于一级分光的分路器;例如,1个1×64分路器(盒式)的插损为20.9dB,2个1×8分路器(1个盒式、1个插片式)的插损之和为22dB。注意,同样分路比的分路器,封装型式不同,插损也不一样。

    另外,采用二级分光时,分纤箱处采用的是插片式分路器,共有2个活接头;而采用一级分光时,分纤箱处只会有一处活接头;如图4所示。

    图4 ODN中的活接头与分路器插损

    所以,采用二级分光时,ODN链路的全程衰耗要比一级分光大1.6dB左右(活接头的衰耗按0.5dB计算)。

     

    4 PON口及主干纤芯的占用

     

    我们以一个实例来说明采用不同分光方式时PON口及主干纤芯的占用。

    某一多层小区,共60个单元,层高均为6层,每单元总户数12户,小区总户数720户;每个单元设置一个分纤箱。

    工程阶段,采用一级分光方式时,因为没有用户,所以只需安装一个1×64分路器,占用1芯主干和1个PON口;采用二级分光方式时,如果每个分纤箱安装一个1×8分路器,则在配线光交处还需安装8(60/8向上取整)个分路器,共占用8芯主干和8个PON口。

    放装阶段,假如渗透率(实装用户/覆盖住户)达到30%,即219户;当采用一级分光时,则需占用4(219/64向上取整)芯主干和4个PON口;当采用二级分光时,则占用的主干光缆芯数和PON口依然为8。

    可见,采用二级分光方式时PON口及主干纤芯的占用要大于一级分光。

     

    5 扩容方法

     

    原采用一级分光的ODN,扩容后会形成一、二级分光并存的情况,可能会带来网络维护的不便。(下期专门分析)

     

    6 ODN投资

     

    对采用一、二级分光方式的ODN建设投资差异影响较大的因素主要有以下几点:

    (1)一级分光方式下引入光缆的芯数较大;

    (2)一级分光方式下在配线光交、分纤箱处成端的光缆芯数较多;

    (3)二级分光对主干纤芯及PON口的占用较多。

    据测算,采用一级分光方式时,ODN的投资在不同配线比下均比二级分光高,见表1。

     

     

    在住户密度较低的区域,如农村、别墅区,尽管采用一、二级分光方式时光缆的芯数差异不大,但由于光缆成端芯数不一样,投资差异依然存在,只是没那么悬殊而已。

     

    7 一、二级分光使用场景的建议

     

    与二级分光相比,一级分光无论在投资、放装的便利性、扩容的便利性方面均显不足,虽然一级分光ODN链路的衰耗较低,但当前PON设备的光功率预算已完全满足二级分光的需求;所以,当前的ODN主要采用二级分光。

    但在内部管线共建共享的小区,运营商与开发商网络的分界点为配线光交,如图5所示;分纤箱内引入光缆和每个住户的入户光缆是一一对应熔接的,所以,这种情况下宜采用一级分光。

    图5 共建共享小区的配线光交

     


     

    一丁一卯,专注于通信管线和宽带接入工程技术交流与分享

    微信搜索公众号“一丁一卯”添加关注

    转载或引用请注明出处

     

     

    展开全文
  • Web前端开发实战1:二级下拉式菜单之CSS实现

    万次阅读 多人点赞 2015-12-30 20:47:58
    二级下拉式菜单在各大学校网站,电商类网站,新闻类网站等大型?网站很常见,那么它的实现原理是什么呢? 学习了Web前端开发的知识后,我们是可以实现这样的功能的。复杂的都是从基础效果上添加做出来的,原理流程...

           二级下拉式菜单在各大学校网站,电商类网站,新闻类网站等大型?网站很常见,那么它的实现原理是什么呢?

    学习了Web前端开发的知识后,我们是可以实现这样的功能的。复杂的都是从基础效果上添加做出来的,原理和流程

    还是一样的,今天开始做一些简单的二级下拉式菜单。

           横向一级菜单我们见到的很多,如下图所示是:


           二级下拉菜单图:


           二级下拉菜单是在横向一级菜单的基础上添加下拉效果实现的,制作思路:

           第一步:静态网页的制作

           标签<ul><li>...</li></ul>项目列表

           标签<a>链接

           float浮动

           display:block属性

           postion属性规定元素的定位

           第二步:动态特效的实现

           下拉菜单的显示与隐藏

           今天我们使用CSS样式表实现,那么制作流程是:

           1一级菜单设置:设置CSS样式,使一级菜单横向显示,位于一行中。

           2二级菜单设置:给”课程大厅”菜单,添加二级菜单(JavScript/JQuery/Ajax三项),并带链接;同时给“学习中心”菜

    单,添加二级菜单(视频学习/案例学习/交流平台三项),也带链接。

           3隐藏二级菜单: 设置CSS样式,让二级菜单隐藏。

           4显示二级菜单:设置CSS样式,让二级菜单显示。

           5浏览器兼容性问题解决以及代码优化,至少测试五个浏览器。我测试的是IE7,8,9,2345浏览器,谷歌浏览器以

    及火狐浏览器。

           HTML代码部分:

    <span style="font-size:18px;"><!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>下拉菜单</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    
    <body>
    <div id="nav" class="nav">
         <ul>
    	          <li><a href="#">网站首页</a></li>
    		  <li><a href="#">课程大厅</a>
    		      <ul>
    			      <li><a href="#">JavaScript</a></li>
    			      <li><a href="#">jQuery</a></li>
    			      <li><a href="#">Ajax</a></li>
    		      </ul>
    		  </li>
    		  <li><a href="#">学习中心</a>
    		      <ul>
    			      <li><a href="#">视频学习</a></li>
    			      <li><a href="#">案例学习</a></li>
    			      <li><a href="#">交流平台</a></li>
    		      </ul>
    		  </li>
    		  <li><a href="#">经典案例</a></li>
    		  <li><a href="#">关于我们</a></li>
         </ul>
    </div>
    </body>
    </html></span>

           CSS样式表style.css文件代码:

    /*CSS全局设置*/
    *{
       margin:0;
       padding:0;
    }
    .nav{
       background-color:#EEEEEE;
       height:40px;
       width:450px;
       margin:0 auto;
    }
    /*横向一级菜单样式设置*/
    ul{
       list-style:none;
    }
    ul li{
       float:left;
       line-height:40px;
       text-align:center;
       position:relative;
    }
    a{
        text-decoration:none;
    	color:#000000;
    	display:block;/*将a行内元素转变成块级元素*/
    	width:90px;
    	height:40px;
    }
    a:hover{
        background-color:#666666;
    	color:#FFFFFF;
    }
    /*二级下拉菜单样式设置*/
    ul li ul li{
        float:none;
    	background-color:#EEEEEE;
    }
    ul li ul{
        position:absolute;
    	top:40px;
    	left:0px;
    	display:none;/*默认状态下或鼠标离开时隐藏*/
    	width:90px;
    }
    /*为了兼容IE7写的CSS样式,但是必须写在a:hover前面*/
    ul li ul li a:link,ul li ul li a:visited{
        background-color:#EEEEEE;
    }
    ul li ul li a:hover{
        background-color:#009933;
    }
    /*鼠标滑过一级菜单的元素时显示下拉菜单*/
    ul li:hover ul{
        display:block;
    }

           来看一下效果:

           1初始化状态或鼠标离开显示为横向一级菜单:


           2鼠标滑过有二级下拉菜单的元素时显示下拉菜单:


           3显示的下拉菜单中的链接样式:





    展开全文
  • drm原生只支持pm runtime的休眠方式,不支持一级二级休眠,为了支持android的一级休眠功能,在drm上采用如下的方式进行一级休眠:使能CONFIG_DRM_FBDEV_EMULATION功能 echo 3 &amp;amp;gt; /sys/c...
  • 很多时候,我们会遇到这种需求,通过个select框中选择的值,去动态的加载另个下拉框中的内容 实现代码 models.py # 内容大类类别模型 class ArticleCategory(models.Model): category_name = models.CharField...
  • 篇博文提到了二级下拉式菜单是用HTMLCSS实现的,我们这篇来用JavaScript脚本实现下拉菜单的显 示隐藏。使用 JavaScript方法实现我们需要用的知识有:  1)JS事件:onmouseover鼠标经过事件onmouseout...
  • 【MyBatis】查询缓存(一级缓存和二级缓存)

    万次阅读 多人点赞 2017-02-27 14:01:56
    一级缓存:是SQlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的SqlSession之间的缓存数据区域(HashMap)是互相不影响的。  二级缓存:是...
  • 通常我们在外卖或者商城app会看到竖排二级列表的界面,点击左边列表的分类菜单,右边列表则会显示对应分类下的列表内容,这篇博文将对该功能的实现归纳整理。 首先看下效果图: 在第个页面选择最多三个标签...
  • 的,那么这篇就用jQuery来实现二级下拉式菜单。  使用JQuery实现需要用到的知识有:  1)使用$(function(){...})获取到想要作用的HTML元素。  2)通过使用children()方法寻找子元素。  3)
  • uniapp开发市区二级联动小项目

    千次阅读 2020-05-11 17:14:05
    今天做项目时遇到个小需求,那就是做个市区的二级联动,由于我用的是uniapp开发,神奇的发现了官方的个小bug,起来看看是怎么回事吧! 先看下效果图: 我们重点看这里有个市区的二级联动,选中市后区的数据...
  • 二级分销定制技术开发系统

    千次阅读 2017-10-24 11:57:13
    Facebook创始人马克·扎克伯格表示:“移动(互联网)是当前的平台。目前,我们也开始为属于明天的平台做准备。Oculus有机会开发有史以来最具社 ... 二级分销定制技术开发系统中粉丝的逻辑产生关系:
  • 这个问题其实去年就遇到了,只是今年再次开发时想了半天才想起来这些问题,索性写下来记录一下,要是赶巧能帮到两位程序猿同仁,就再好不过了。 前提:  公司主域名是在西部数码备案的,而且是用了很多年的,...
  • mybatis的缓存机制(一级缓存二级缓存刷新缓存)mybatis整合ehcache
  • 我们现在做个电商网站,网站的图片非常多我想做个类似于img.abc.com的二级域名来对应个目录存储我的图片,不知道怎样做求大神指点
  • Mybatis的一级缓存和二级缓存机制

    千次阅读 2017-04-14 22:02:43
    一级缓存的应用(自动开启,创建Sqlsession) 正式开发,是将mybatisspring进行成和开发,事务控制在service中。一个service方法中包括很多mapper方法的调用。 Service 开始执行时, 开启事务(创建sqlSession...
  • 因给单位行行政部门开发一个《文具管理系统》需要在管理端的入库员工的领用端实现按文具分类查找出相应的文具,在页面上放了个select, 第个select 列出文具分类, 第个select根据第个select的分类列出...
  • //获取所有子元素返回个子元素节点集合包括#text节点,在DOM中,文本也是个节点,类型为DOM Text,包含进去了每个li节点前面的文本节点"回车 ",即个回车后面跟很多空格 var oA; for(var i = 0;i;i++){ ...
  • MyBatis实战(5)缓存机制(一级缓存、二级缓存)

    千次阅读 多人点赞 2019-11-30 09:49:01
    这篇博客对Mybatis中的一级缓存和二级缓存做了比较详细的阐述,并有完整的代码实现。
  • 二级联动三级联动的代码结构都是一样,就看要怎么设置。接下来上三级联动的代码。 wxml &lt;view class="picker-box"&gt; &lt;view class='skill-picker'&gt; &lt;picker ...
  • 众所周知,互联网时代,分享...二级分销其实是种让用户分裂通过邀请的形式来获得更多的用户。如有ABC三个人,A推荐B购买件商品,B推荐C购买件商品。假定通过直接推荐购买该商品可获得10%利润,通过间接推荐购...
  • 、popup的使用(可参考uni-app开发文档) <template> <view class="content"> <button @tap="startOpen">打开弹窗按钮</button> </view> <!-- 第个弹窗 --> ...
  • IOS高级开发~Runtime(

    万次阅读 2014-01-02 19:50:14
    原文传送门 ... IOS高级开发~Runtime() IOS高级开发~Runtime() IOS高级开发~Runtime(三) IOS高级开发~Runtime(四) 一些公用类: @interface 
  • Python全国二级等级考试(2019)

    万次阅读 多人点赞 2019-03-19 08:40:24
    最后送给报名了3月份python计算机二级同学份福利:**2019年3月二级Python考试模拟软件**,同时也预祝大家都能顺利通过,快快转发分享给你的同学们一起刷波题吧~
  • Mybatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存是mapper级别的缓存,二级缓存是多个SqlSession共享的。Mybatis通过缓存机制减轻数据压力,提高数据库的性能。 一.一级缓存没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 979,980
精华内容 391,992
关键字:

一级开发和二级开发的区别