精华内容
下载资源
问答
  • 之前分享了很多纯css的导航菜单,今天介绍款基于jquerycss3的响应二级导航菜单,这款导航是传统的基于顶部,鼠标经过的时候显示二级导航,还采用了当前流行的响应式设计。需要的朋友可以参考下
  • 微博weibo.com 端一级评论和二级评论接口返回的相应体,因为这个是unicode编码的,看不到中文,这里已经解码过,可以使用bs4等工具直接提取内容
  • 这是个HTML5+CSS3实现的响应二级导航菜单,资源来源于网络,侵删
  • 从国外收费网站翻译过来的款多种二级下拉菜单导航样式,二级导航菜单支持多种自定义内容,例如:图片列表,登陆注册信息,二级下拉导航条等等
  • 响应式网站二级导航菜单是款基于jquery.cbFlyout.jsjquery1.10.2.min.js制作的网站导航菜单,响应式设计,自适 应屏幕分辨率大小,兼容PC端手机移动端,页面正常显示时,网页顶部显示水平二级导航菜单,缩小...
  • 云平台安全响应机制 Microsoft Online Tech Forum 陈健宁 陈彬彬 微软全球技术支持中心 内容安排 云平台安全应急响应 更廉价的攻击 勒索软件: 预付$66 或者30% 的盈利 0days 价格从$5,000 到 $350,000 负载(受控...
  • jQuery响应式侧滑二级菜单栏是款基于jQuery+CSS3+HTML5实现的右侧滑出二级菜单。
  • 响应式网站二级导航菜单是款基于jquery.cbFlyout.jsjquery1.10.2.min.js制作的网站导航菜单,响应式设计,自适应屏幕分辨率大小,兼容PC端手机移动端,页面正常显示时,网页顶部显示水平二级导航菜单,缩小...
  • jQuery响应式侧滑二级菜单栏是款基于jQuery CSS3 HTML5实现的右侧滑出二级菜单。
  • 二级同轴摆线传动动态激励及响应分析,冉毅,杜雪松,环式减速机在使用过程中常出现振动、噪声大、发热等问题, 提出一种由一级渐开线传动和一级摆线传动组成的二级同轴双曲柄行星传动,
  • 本文实例讲述了JS实现超精简...这是款精简版的二级导航菜单,响应鼠标的动作,鼠标放上即显示出菜单,常见的种菜单样式。喜欢的朋友拿去修改一下,再美化一番,就够用了。 运行效果截图如下: 在线演示地址如下: ...
  • 应用集中参数法建立了种计及时变啮合刚度、齿侧间隙、传动误差的二级圆柱斜齿轮传动系统弯-扭-轴-摆耦合动力学模型,推导并求解传动系统的动力学微分方程组,得到了二级圆柱斜齿轮传动系统的动力响应。基于有限元...
  • 之前刚学习MFC的时候,啥也不懂,连一个MessageBox都看不懂,呵呵……,今天刚开博客,这也是我的第一篇文章,右键菜单的动态建立。就像一些大侠说的一样,其实方法都...2.创建一级弹出菜单 menu1.CreatePopupMenu()

    之前刚学习MFC的时候,啥也不懂,连一个MessageBox都看不懂,呵呵……,今天刚开博客,这也是我的第一篇文章,右键菜单的动态建立。就像一些大侠说的一样,其实方法都一样,看你能不能想得到,能不能触类旁通。

    1.定义CMenu的对象

    CMenu menu1, *menu2, *menu3;
     POINT curPos;

    2.创建一级弹出菜单

     menu1.CreatePopupMenu();
     SetForegroundWindow();
     // 创建右键菜单一级子目录
     menu1.AppendMenu(MF_POPUP, (UINT)menu1.m_hMenu,    "菜单");
     menu1.AppendMenu(MF_STRING|MF_ENABLED, IDC_MENU1, "菜单1");
     menu1.AppendMenu(MF_STRING|MF_ENABLED, IDC_MENU2,   "菜单2");

    这时[菜单1]与[菜单2]只是在一级菜单中,而[菜单]项则是一个没有下级菜单的空项.

    3.根据BOOL变量来控制是否选中该项

    刚开始建立菜单的时候可以设置它的初始状态,比如初始状态未选中,当右键单击该项的时候,

    改变布尔变量的值,下次再弹出菜单的时候就会根据变量的值重新建立一个新的右键菜单;

    相反,下次单击的时候又会根据这个变量来建立无勾的右键菜单(具体的事件响应在后面做介绍).

     if(m_control)  menu1.CheckMenuItem(IDC_MENU1, MF_BYCOMMAND|MF_CHECKED);
     else  menu1.CheckMenuItem(IDC_MENU1, MF_BYCOMMAND|MF_UNCHECKED);

    4.此处根据变量值来控制文本内容,也就是通过变量来改变MENU项的内容

    menu1.AppendMenu(MF_STRING|MF_ENABLED, IDC_RWFULLSCREEN, "全屏");
     if(!m_fullscreen)  menu1.AppendMenu(MF_STRING|MF_ENABLED, IDC_RWFULLSCREEN, "全屏");
     else  menu1.AppendMenu(MF_STRING|MF_ENABLED, IDC_RWFULLSCREEN, "恢复");

    5.创建二级子目录

       //创建右键菜单二级子目录
      menu2 = menu1.GetSubMenu(0);           //0--一级菜单中"菜单"项
       menu2->AppendMenu(MF_POPUP, (UINT)menu2->m_hMenu, "测试");

    6.创建右键三级子目录

     //创建右键菜单三级子目录

    #define IDC_RWTEMP 20000
         menu3 = menu2->GetSubMenu(0);               //0--二级菜单中的"测试"项
         menu3->AppendMenu(MF_STRING|MF_ENABLED, IDC_RWTEMP, "测试完了");
     7.创建好后就把它显示出来,并记录当前选中的项

    ::GetCursorPos(&curPos);
      nSelection = menu1.TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN|TPM_BOTTOMALIGN|
           TPM_NONOTIFY|TPM_RETURNCMD, curPos.x, curPos.y, this);

     8.此时就可以响应鼠标事件了,主要还是根据所建立的ID来确定是选中了哪一项

    if(nSelection == 20000)  MessageBox("测试完了");

    9.测试完了不要忘记把它们释放掉


     menu1.DestroyMenu();

    menu2->DestroyMenu();

     menu3->DestroyMenu();
     

    其实还有其它的方法来动态给某一项打勾,判断是否选中,不过下面这种方法没测试过,

    是一位网友发的,应该没问题.

    CMenu m_menu;
    m_menu.LoadMenu(IDR_MENU1);
    CMenu *m_pMenu = m_menu.GetSubMenu(0);

    void CAaDlg::OnUpdateNihao(CCmdUI* pCmdUI)
    {
    //根据flag判断设置
    m_pMenu ->CheckMenuItem(ID1,MF_CHECKED | MF_BYCOMMAND);//打勾
    //或者设置
    m_pMenu ->CheckMenuItem(ID1,MF_BYCOMMAND);//不打勾
    }

    再加几个关于右键菜单的链接

    http://community.csdn.net/Expert/topic/5331/5331719.xml?temp=.3090631

    http://community.csdn.net/Expert/topic/5408/5408740.xml?temp=.5233576

    这是小弟的第一篇文章,欢迎大家多提意见,有什么问题请联系我.

    展开全文
  • 购物网站中通过勾选类别、价格、销售量范围等属性来对所有的商品进行筛选,筛选出满足客户需要的商品,这是种典型的组合查询。在小数据量的情况下,后台通过简单的sql语句便能够快速过滤出需要的数据,但随着数据...

    1 概述

    组合查询为多条件组合查询,在很多场景下都有使用。购物网站中通过勾选类别、价格、销售量范围等属性来对所有的商品进行筛选,筛选出满足客户需要的商品,这是一种典型的组合查询。在小数据量的情况下,后台通过简单的sql语句便能够快速过滤出需要的数据,但随着数据量的增加,继续使用sql语句,查询效率会直线下降。当数据量达到一定的量级,服务器将会不堪重负甚至面临挂掉的危险,并且大数据量的存储也成为了一个问题。本文将讨论在亿级数据的情况下,多条件组合查询秒级响应的解决方案。

    2 方案思考

    2.1 数据存储

    假定每条数据有10个字段,每个字段的大小为4Byte,共有1亿条数据。通过传统的关系型数据库mysql,使用JDBC批处理和事务混合的方式对数据进行插入,插入一亿数据大约需要半小时,字段可能会出现为空的情况,导致冗余。针对海量数据的存储,现如今使用较多的是HBase。使用HBase的好处有三:其一,它是非关系型数据库,字段为空的值只在逻辑上存在,在空间上不存在,因此解决了冗余的问题;其二,它是面向列的数据库,能够通过简单的API调用对字段进行横向扩展;其三,它是分布式数据库,表的RowKey 按照字典排序,Region按照RowKey设置split point进行shard,通过这种方式实现全局、分布式索引,通过RowKey索引数据能够在毫秒级返回。Hbase插入数据可以调用批量插入或者通过MR程序插入,实测在批量提交数据条数设置为1000,开10个线程的情况下,插入一亿数据大约需要10分钟。若需要加速插入速度,可以通过增加批量提交数、调整线程数或者使用MR程序进行Hbase的写入。Hbase本身是分布式数据库,数据存储可以存储在多个节点上,使用Zookeeper统一管理,提供数据备份和故障恢复的功能。因此使用Hbase作为数据仓库,对结构化数据进行存储。

    2.2 数据查询

    Hbase中的数据查询只有两种方式:一是使用get 'tablename', 'rowkey‘’直接通过rowkey进行查询,亿级数据的查询结果可以在毫秒内返回;二是设置过滤器对全表进行Scan扫描,该查询方式在海量数据的情况下耗时十分长,当然也和服务器的性能有关。我们的需求是秒级响应,如果使用全表扫描方式,数据量达到万级或者十万级就无法实现实时响应了,要进行这样的查询,往往是要通过类似Hive、Pig等系统进行全表的MapReduce计算,这种方式既浪费了机器的计算资源,又因高延迟使得应用黯然失色。因此我们考虑使用rowKey对数据进行查询,如果我们使用rowKey对全表进行多条件组合查询,这将对rowKey的设置要求十分高,面向业务而言这对程序员十分不友好,因此我们需要通过建立二级索引的方式,按索引的种类扫描各自独立的单索引表,最后将扫描结果merge,得到目标rowKey。HBase有原生的建立二级索引的方式,即使用HBase的coprocessor协处理器,可以根据业务进行灵活的设置,但较为复杂,本文讨论使用一种业务模式较为固定,但更加简单直接的方式创建索引——Solr。Solr是一个独立的企业级搜索应用服务器,是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。我们可以直接使用Solr这一组件,通过修改配置文件以实现相关的业务需求。通过批量建立索引的方式对HBase中的一亿条数据的10个字段构建索引,耗时为3383s,约为1小时。具体代码如下:

    public class ThreadsCreateIndexWork {
        private static Logger logger = LoggerFactory.getLogger(ThreadsCreateIndexWork.class);
        public static void main(String[] args) throws IOException, SolrServerException {
            if(args.length < 3) {
                logger.info("[tableName  |  queueSize  |  threadCount]");
                logger.info("e.g.| test1 20000 20");
            }
            String tableName = args[0];
            String queueSize = args[1];
            String threadCount = args[2];
    
            long start = System.currentTimeMillis();
    
            final Configuration conf;
            Properties prop = PropertiesReaderUtils.getProperties("conf/path.properties");
            String server = prop.getProperty("solr.server");
            SolrServer solrServer = new ConcurrentUpdateSolrServer(server, Integer.parseInt(queueSize), Integer.parseInt(threadCount));
    
            conf = HBaseConfiguration.create();
            HTable table = new HTable(conf, tableName); // 这里指定HBase表名称
            Scan scan = new Scan();
            scan.addFamily(Bytes.toBytes("people")); // 这里指定HBase表的列族
            scan.setCaching(500);
            scan.setCacheBlocks(false);
            ResultScanner ss = table.getScanner(scan);
    
            try {
                for (Result r : ss) {
                    SolrInputDocument solrDoc = new SolrInputDocument();
                    solrDoc.addField("rowkey", new String(r.getRow()));
                    for (KeyValue kv : r.raw()) {
                        String fieldName = new String(kv.getQualifier());
                        String fieldValue = new String(kv.getValue());
                        if (fieldName.equalsIgnoreCase("upperClothing")
                                || fieldName.equalsIgnoreCase("lowerClothing")
                                || fieldName.equalsIgnoreCase("coatStyle")
                                || fieldName.equalsIgnoreCase("trousersStyle")
                                || fieldName.equalsIgnoreCase("sex")
                                || fieldName.equalsIgnoreCase("age")
                                || fieldName.equalsIgnoreCase("angle")
                                || fieldName.equalsIgnoreCase("bag")
                                || fieldName.equalsIgnoreCase("umbrella")
                                || fieldName.equalsIgnoreCase("featureType")){
                            solrDoc.addField(fieldName, fieldValue);
                        }
                    }
                    solrServer.add(solrDoc);
                }
                ss.close();
                table.close();
            } catch (IOException e) {
            } finally {
                ss.close();
                table.close();
            }
    
            long time = System.currentTimeMillis() - start;
            logger.info("---------- create index with thread use time " + String.valueOf(time));
        }
    }
    

    ConcurrentUpdateSolrServer类可以使用多线程向SolrCloud的多个节点发送http请求,queueSize为队列大小,即往Solr中一次性批量add的数据数目,threadCount为开启的线程数,可以根据服务器性能的不同进行自定义,以提高构建索引的速度。笔者对1000w条数据进行参数调整测试,得到如下结果:

    queueSizethreadNumTime (s)
    1000020274
    2000020250
    2000030255
    2000040254
    3000020255

    因此测试中选用的参数为queueSize:20000threadNum:20,索引构建速度为4w/s,还尝试通过修改scan.setCaching(500);的大小来提高构建速度,但是发现该缓存大小对构建速度的影响可以忽略不计,应该是索引构建速度低于HBase的Scan速度,因此暂时没有必要对HBase的Scan操作进行加速。Solr对构建索引的服务进行了上层封装,提供一个web服务的接口,可以直接通过可视化界面对结果进行查询。

    3 解决方案

    在这里插入图片描述
    综上,针对亿级数据多条件组合查询,给出的解决方案是使用HBase+Solr的方式,CDH将HBase和Solr都以组件的方式提供出来,可以使用CDH平台对HBase和Solr进行统一的管理。Hbase用于存储海量数据,Solr使用SolrCloud模式进行部署,提供索引构建和查询。索引的创建可以通过接口离线批量创建,也可以使用HBase Indexer连接HBase和Solr,提供自动化索引构建,CDH平台也集成了Hbase Indexer(Lily HBase Indexer)这一组件,具体的整合方法见 Solr+Hbase+Hbase Indexer查询方案流程整合

    4 方案测试

    笔者将一亿条包含10个字段的数据开启10个线程插入Hbase中,然后使用Solr对10个字段构建了索引,在Solr的可视化界面进行查询,查询结果如下图所示。
    查询全部数据
    组合查询1
    组合查询2
    其中,QTime为响应时间,q为查询语句,wt为请求格式(设置请求格式为xml响应速度更快),numFound为找到符合查询条件的数据条数,docs为返回的数据也就是rowKey。可以看到,组合查询都能够在秒级响应返回响应rowKey,而通过rowKey在HBase中返回该条数据的所有字段可以在毫秒级响应,如下图所示:
    在这里插入图片描述
    至此,可以证明,亿级数据多条件组合查询使用HBase+Solr的解决方案能够满足秒级响应的需求。具体流程操作可参考Solr+Hbase+Hbase Indexer查询方案流程整合

    展开全文
  • bootstrap响应式布局!
  • slinky是款轻量级响应式移动手机样式多级导航菜单jQuery插件。它使用简单,可以创建多级嵌套的移动设计样式的导航菜单效果。
  • 今日看点✦美团点评总市值突破万亿港元,再创历史新高✦ 微信开放MCN入驻,支持内容类代运营服务✦滴滴货运首批试点城市揭晓,23日起在成都、杭州上线✦ 北京市应急响应级别由三级调至二级...

    今日看点

    ✦ 美团点评总市值突破万亿港元,再创历史新高

    ✦ 微信开放MCN入驻,支持内容类代运营服务

    ✦ 滴滴货运首批试点城市揭晓,23日起在成都、杭州上线

    ✦ 北京市应急响应级别由三级调至二级,将加强十五项具体防控措施

    ✦ 苹果首次披露AppStore商业数据:中国区促成2460亿美元销售

    ✦今日分享研报:贝恩公司联合腾讯智慧零售发布《化疫为机,蓄客储能:品牌自控流量平台构建》报告---加微信:chanpin628 领取。

    国内要闻

    1、美团点评总市值突破万亿港元,再创历史新高

    2、腾讯、百度、爱奇艺回应“腾讯拟成为爱奇艺最大股东”:不予置评

    3、微信上线内容服务(MCN)专区,支持内容类代运营服务

    4、滴滴试水社区电商“橙心优选”:目前处于小范围测试阶段

    5、阿里云宣布深耕"被集成"战略:未来一年投20亿专项资金,助力50家合作伙伴云上营收实现过亿

    6、美团组织架构调整:充电宝、两轮、公交、地图业务调整至美团平台,进一步加强线下线上流量品牌一体化

    7、中兴通讯:任命倪飞为中兴通讯终端事业部总经理,全面负责终端业务,倪飞同时担任努比亚总裁

    8、贾跃亭个人破产重组方案公开:预留10%债务信托索赔池

    9、瑞幸咖啡:因新冠疫情和内部调查影响,推迟提交年报

    10、人人网宣布任命Yi Yang为新代理首席财务官,Stephen Tappin将辞任董事

    政务快讯

    1、北京市应急响应级别由三级调至二级,将加强十五项具体防控措施

    2、北京:中高风险街乡、新发地市场相关人员禁止离京,其他人员坚持“非必要不出京”,确需离京的须持7日内核酸检测阴性证明

    3、北京:恢复社区封闭式管理,中高风险街道乡镇所辖小区外来人员及车辆禁止进入,高风险街道乡镇辖区小区全封闭,人员只进不出

    4、北京:二级应急响应级别下不需要停工停产,但是下调办公楼宇到岗率,鼓励远程、居家等弹性办公,鼓励错峰上下班

    5、北京:小于1米近距离接触、处于人员密集、封闭拥挤场所,必须佩戴口罩

    6、北京:恢复各年级线上教学,高校学生停止返校

    7、北京市交通委:暂停北京市出租车、顺风车出京运营业务

    8、北京财政局:退还电影院2020年已缴专项资金,为电影业减负

    9、上海将打造100多家标杆性无人工厂,推动制造业高质量发展

    10、郑州与阿里巴巴深化战略合作,打造“中部数字经济第一城”

    科技通信

    1、HTC首款5G手机U20 5G发布:骁龙765G+5000mAh电池,售价约4539元

    2、继获得联通5G合同后,诺基亚宣布再获百度和腾讯DCI订单

    3、华米科技与云之声战略合作,双方将围绕“云端芯”展开全方位合作

    4、国家能源集团:开启5G基建建设,推动港口智慧升级

    5、中国移动5G创新应用取得新突破,我国首台5G+氢燃料电动无人驾驶拖拉机落地洛阳

    文娱影游

    1、网易云音乐正式发布K歌App“音街”,网易CEO丁磊入驻

    2、王思聪旗下熊猫互娱394件拍品以13.8万元成交,所得款项将用于破产清算

    3、CBA复赛进展:12支球队使用全华班,季后赛首轮单败淘汰

    4、中国奥委会发起中国奥运选手在线加油会,6月23日上线

    5、第93届奥斯卡颁奖礼宣布推迟2个月,将于2021年4月25日举行

    金融财经

    1、360保险推出两款定期重疾险产品,宣布与复星联合健康、爱心人寿达成战略合作

    2、慧择与西财大数据研究院成立联合实验室,锚定数据智能发力“保险科技新基建”

    3、人保财险、太保财险等13家保险公司上支付宝开“办事处”,涵盖5大类80种消费保险

    4、湖北保险法人机构和分支机构免缴2020年度保险保障基金

    5、财险业高质量发展三年行动方案草案出炉,到2022年财险保费收入拟达1.7万亿元

    住房地产

    1、我爱我家推首期员工持股计划,认购资金不超过6000万元

    2、纪纲辞任蛋壳公寓董事,首席财务官张政接任

    3、招商局置地出资42.35亿与华发南京合作,共同开发秦淮项目

    4、金地与智能锁企业dormakaba达成战略合作,打造智慧社区

    5、武汉地产研究院正式挂牌成立,将组织院长级“学术天团”做房地产“科普”

    零售电商

    1、淘宝大学电商直播西南分校落户重庆,联手重报集团培养直播超级IP

    2、天猫超市“无忧菜篮”计划提供近5000吨粮油蔬菜,保障首都生活物资供应

    3、美团闪购目标1000亿元,同城零售大战升级

    4、京东快递:搭建“产地直销+物流运输”直供通道

    5、苏宁易购回应“退出618价格战”:全力加码“J-10%”,击碎一切谣言

    6、西贝莜面村战略投资快餐品牌小女当家,布局快餐赛道

    7、天虹升级顾客服务体验,无理由退换货覆盖全业态全渠道

    8、台州商务局与爱库存战略合作,助力特色品牌数字化升级

    9、中国旺旺2019财年营收超200亿,乳品及饮料占49%

    10、MUJI無印良品中国新世代MUJIcom在北京正式亮相

    汽车出行

    1、滴滴货运首批试点城市揭晓,23日起在成都、杭州上线

    2、高德打车在广深等8城发比价补贴,帮扶中小出行企业

    3、理想ONE第10000辆汽车交付用户,创下造车新势力最快交付10000辆纪录

    4、奇瑞汽车与大搜车达成新零售战略合作,推进汽车直销业务

    5、新宝骏、苏宁汽车、博泰开展战略合作,新宝骏E300苏宁首发

    6、易鑫集团:若易车完成私有化,腾讯将成为控股股东

    7、长城汽车与光束汽车签署框架协议,涉及交易金额超45亿元

    8、蔚来汽车宣布完成7200万股美国存托股票发行,募资逾4亿美元

    9、奔驰:北京三里屯体验店将于6月底停止营业

    10、Waymo自动驾驶算法挑战赛成绩公布,地平线五项挑战获四项第一

    教育培训

    1、北京市中小学6月17日起一律停止到校上课,培训机构继续暂停线下课程

    2、跟谁学6周年:遭遇第十次做空,股价逆袭上涨超20%

    3、VIPKID大米网校“超级大班”重磅上线,助力暑期课程体验全面升级

    4、东软教育向港交所二次提交上市申请,2019年营收9.58亿元

    5、民办教育集团爱立诚教育与雅力教育签署战略合作协议,并启动苏州阿德科特学校落地

    医疗健康

    1、京东联合彩虹育儿首发带状疱疹疫苗接种预约服务,618期间预约可享专属优惠

    2、医联发起慢病管理伙伴计划,携手医生共建线上慢病管理体系

    3、GE医疗与强联智创签署战略合作备忘录,推动脑血管疾病精准诊疗

    4、稳健医疗拟投资6亿元在深圳建设研发生产基地

    5、海吉亚医疗拟全球发售1.2亿股股份,引入高瓴资本等多家基石投资者

    旅游民宿

    1、腾讯云与海航集团、多尼卡战略合作,助力海南自贸港建设

    2、马蜂窝发力视频化攻略,七成核心商家已开展直播业务

    3、Airbnb携手快手推出“住进可爱中国”系列主题传播活动

    4、拓宽融资来源,建业地产文旅项目引入百瑞信托

    5、同程旅行:预测今年端午假期机票价格平均较去年便宜约30%

    区块链

    1、河北雄安新区将向企业开放20个区块链应用场景

    2、工行潍坊分行:依托跨境金融区块链融资支持外贸企业发展

    3、海南金融局与金融壹账通签订合作,推动法定数字货币应用探索

    4、美国农业巨头嘉吉在中国利用区块链提升童子鸡产品的供应链透明度

    5、英国伦敦工商会推出基于区块链的仲裁和调解平台

    国际视角

    1、苹果首次披露AppStore商业数据:中国区促成2460亿美元销售

    2、Facebook旗下WhatsApp正式上线支付服务Facebook Pay

    3、诺基亚宣布与博通合作开发5G芯片,包括定制处理器

    4、三菱电机宣布放弃液晶面板业务,2022年6月停止生产相关模组

    5、软银计划下周出售至多三分之二T-Mobile股份,交易额或高达200亿美元

    融资收购

    1、第三方独立云计算及数据服务提供商「七牛云」完成10亿元F轮融资,由中国国有企业结构调整基金、交银国际、宏兆基金共同投资,华兴资本担任独家财务顾问

    2、智能芯片设计公司「壁仞科技」完成11亿元A轮融资,由启明创投、IDG资本及华登国际中国基金领投,格力创投、松禾资本、云晖资本、国开装备基金、华映资本、广微控股、耀途资本等投资机构和产业方联合参投

    3、集成电路及功率器件研发商「比亚迪半导体」获得8亿元A+轮融资,投资方包括小米长江产业基金、联想长江科技产业基金、碧桂园创新投资、韩国SK集团、ARM中国、中芯国际、北汽产投、上汽产投、深圳华强集团、蓝海华腾、英威腾、瑞凌、天河星、招银国际、中信产业基金、深创投等30家战略投资者

    4、新派白酒品牌「开山」完成1亿元B轮融资,由元生资本领投,老股东高瓴创投、源码资本跟投,泰合资本担任独家财务顾问

    5、S2B2C家装产业服务平台「一品家居网」获得500万元天使轮融资,由家装产业天使投资人梁先生投资

    6、美国户外家居品牌「Outer」完成430万美元天使轮融资,投资方为梅花创投、险峰长青等,星涵资本和凌波资本担任财务顾问

    7、3D动画编程创作工具「Paracraft」获得500万元天使轮融资,由浙大教育(藕舫)基金投资

    展开全文
  • HTTP 请求和响应

    千次阅读 2019-08-29 20:37:31
    四、响应消息数据格式 1、响应行 2、响应头 3、响应空行 4、响应体 五、次完整http请求的过程 、HTTP 介绍 HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是浏览器服务器之间进行“...

     

    目录

    一、HTTP 介绍

    二、HTTP 特点

    三、请求消息数据格式

    1、请求行

    2、请求头

    3、请求空行

    4、请求体(正文)

    四、响应消息数据格式

    1、响应行

    2、响应头

    3、响应空行

    4、响应体

    五、一次完整http请求的过程 


    一、HTTP 介绍

    HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是浏览器和服务器之间进行“沟通”的一种规范,客户端通过请求服务器发送请求消息给服务器;服务器端通过响应发送响应消息给客户端,实现客户端和服务器端之间的通信。

    目前有1.0 和 1.1 两个版本,1.0 的版本每一次请求响应都会断开连接再建立新的连接,1.1 的版本可以服用链接

    二、HTTP 特点

    • 基于 TCP/IP 的高级协议
    • 无状态的协议:每次请求之间相互独立,不能交换数据
    • 默认端口号:80
    • 基于请求/响应模型的:一次请求对应一次响应

    三、请求消息数据格式

    1、请求行

    格式:请求方式 请求URL 请求协议/版本

    eg:GET /mySubmit.html HTTP/1.1

    • 请求方式:HTTP协议协议有 7 种请求方式,常用的有两种:GET 和 POST,他们的主要区别有:
      • GET:
        1. 请求参数在请求行中,在URL后
        2. 请求的URL长度有限
        3. 不太安全
      • POST:
        1. 请求的参数在请求体中
        2. 请求的URL没有长度限制
        3. 相对较安全

    2、请求头

    • 格式:请求头名称:请求头值

      Host: localhost:8080
      User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
      Accept-Encoding: gzip, deflate
      Referer: http://localhost:8080/mySubmit.html
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 11
      Connection: keep-alive
      Cookie: Idea-f4f5aed6=f93a91f4-613a-47ea-85c5-ab40a7eb0b35
      Upgrade-Insecure-Requests: 1
      Cache-Control: max-age=0
    • 常见的请求头:
      • User-Agent:浏览器告诉服务器,要访问所使用的浏览器的版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题
      • Referer:能够告诉服务器,当前请求从哪里来,作用:
        • 防止盗链
        • 统计工作

    3、请求空行

    空行,用于分隔 POST 请求的请求头和请求体的

    4、请求体(正文)

    封装 POST 请求消息的请求参数

    四、响应消息数据格式

    1、响应行

    格式:协议/版本 响应状态码 状态码描述

    • 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态,状态码都是三位数字,一般是1xx、2xx、3xx、4xx、5xx 这五类
      • 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码
      • 2xx:表示成功
      • 3xx:表示重定向
        • 302:重定向
        • 304:访问缓存
      • 4xx:客户端错误
        • 404:请求路径没有对应的资源
        • 405:请求的方式没有对应的doxxx方法
      • 5xx:服务器端错误
        • 500:服务器内部出现异常

    2、响应头

    • 格式:头名称:值
      HTTP/1.1 200 
      Accept-Ranges: bytes
      ETag: W/"147-1567070212093"
      Last-Modified: Thu, 29 Aug 2019 09:16:52 GMT
      Content-Type: text/html
      Content-Length: 147
      Date: Thu, 29 Aug 2019 09:21:17 GMT
    • 常见响应头
      • Content-Type:服务器告诉客户端本次响应数据格式以及编码格式
      • Content-disposition:服务器告诉客户端以什么格式打开响应体数据
        • in-line:默认值,在当前页面打开
        • attachment:以附件形式打开响应体,如文件下载

    3、响应空行

    4、响应体

    数据:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>LSTAR</title>
    </head>
    <body>
    我的世界!
    </body>
    </html>

    五、一次完整http请求的过程 

    在HTTP工作开始之前,客户端首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,该协议与 IP 协议共同构建 Internet,即著名的 TCP/IP 协议族,因此 Internet 又被称作是 TCP/IP 网络。HTTP 是比 TCP 更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立 TCP 连接,一般 TCP 连接的端口号是80。

    1. 进行DNS域名解析(浏览器缓存、系统缓存、hosts、DNS服务器)
    2. 建立 TCP 连接
    3. 客户端发送请求命令
      例如:GET /sample/hello.jsp HTTP/1.1
    4. 客户端发送请求头信息
      以头信息的形式向服务器发送一些的信息,之后客户端发送了一空白行来通知服务器,它已经结束了该头信息的发送
    5. 服务器应答
      例如: HTTP/1.1 200 OK
      响应的第一部分是协议的版本号和响应状态码
    6. 服务器返回响应头信息
      正如客户端会随同请求发送关于自身的信息一样,服务器也会随同响应向用户发送关于它自己的数据及被请求的文档;
    7. 服务器向客户端发送数据
      服务器向客户端发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以 Content-Type 响应头信息所描述的格式发送用户所请求的实际数据;
    8. 服务器关闭 TCP 连接

    一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接,然后如果客户端或者服务器在其头信息加入了这行代码 Connection:keep-alive ,TCP 连接在发送后将仍然保持打开状态,于是,客户端可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

    参考:https://blog.csdn.net/weixin_44367006/article/details/99768731#http__163

    展开全文
  • 基于vue的后台管理系统实现顶部一级菜单,左侧二级二级以下菜单 介绍 本人是在若依后台管理系统上修改的此功能 该功能实现的是顶部导航菜单左侧导航菜单进行响应,产生联动效果,而左侧的菜单是根据router获取...
  • jQuery响应式下拉导航菜单项是款使用CSS3动画来在鼠标滑过时显示子菜单项,并且在视口变小时会切换到列表树结构。
  • iOS之深入解析事件传递的响应

    万次阅读 2021-08-30 20:44:37
    、UIResponder App 使用响应者对象接收处理事件,只有继承 UIResponder 的类,才能处理事件。 UIApplication、UIView、...当 App 接收到个事件时,UIKit 自动引导事件到最合适的响应者对象,也叫做第一响应
  • 1.一级缓存属于 局部缓存 (操作时命中率低) 存放数据的形式:相互关联的持久化对象 缓存的范围:事务范围,每个事务都拥有单独的一级缓存 并发访问策略:由于每个事务都拥有单独的一级缓存不会出现并发...
  • 实现顶部一级菜单左侧二级菜单进行响应,选哪个一级菜单时,左侧菜单栏有相对应下的二级菜单,产生联动效果。然后选不同的二级菜单,主体内容区域展示对应内容。 二、效果图 三、具体操作实现 1、用 vue-...
  • (1)什么是响应式编程——响应式Spring的道法术器

    万次阅读 多人点赞 2018-03-06 10:54:22
    在开始讨论响应式编程(Reactive Programming)之前,先来看个我们经常使用的款堪称“响应式典范”的强大的生产力工具——电子表格。 举个简单的例子,某电商网站正在搞促销活动,任何单品都可以参加“满199减...
  • (2)响应式流——响应式Spring的道法术器

    万次阅读 多人点赞 2018-03-07 09:21:32
    本系列其他文章见:《响应式Spring的道法术器》。 前情提要: 什么是响应式编程 ...Web 应用具有I/O密集的特点,I/O阻塞会带来比较大的性能损失或资源浪费,我们需要种异步非阻塞的响应式的库,而Jav...
  • 抢占优先级和响应优先级,其实是个中断所包含的两个优先级,其中前者是对抢占优先级的级别划分,后者是相同抢占优先级的优先级别的划分。 比如:中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应...
  • 这是响应式的多级导航菜单jQuery插件。该多级导航菜单在大屏幕中以正常的导航菜单形式出现,当屏幕尺寸小于某个设定的值时,导航菜单会收缩为下拉菜单列表,非常适合用于制作响应式网站的菜单。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 385,356
精华内容 154,142
关键字:

一级响应和二级响应的区别