【史上最全】前端难点知识汇总(不定期更新)

2 篇文章 0 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏

1.JS垃圾回收机制

标记清除
  当变量进入环境(例如,在函数中声明一个变量)时,将这个变量标记为 “进入环境” 。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为我们在这个环境中可能随时会用到它们。当变量离开环境时,则将其标记为 “离开环境”。
  垃圾收集器(GC)在运行的时候会给存储在内存中的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的标记。而在此之后再被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,GC完成内存清除工作,销毁那些带标记的值,并回收它们所占用的内存空间。
引用计数
  跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型值赋给该变量时,这个值的引用次数就是 1。如果同一个值又被赋值给另一个变量,则引用次数加 1。相反,如果保存对该值引用的变量被其他值给覆盖了,则引用次数减 1。当这个值的引用次数变为 0 时,说明已经没法再访问这个值了,因此可以将其占用的内存回收了。
  引用计数策略有一个很严重的问题:循环引用。所以不常用。
  如果对象 A 中包含一个指针指向对象 B,而对象 B 中也包含一个指针指向对象 A。那么这两个对象引用次数都是 2,但实际上已经可以回收了。若这种函数被反复多次调用,会导致大量内存得不到回收。

2.浏览器缓存机制

  浏览器的缓存机制指的是通过在一段时间内保留已接收到的 web 资源的一个副本,如果在资源的有效时间内,发起了对这个资源的再一次请求,那么浏览器会直接使用缓存的副本,而不是向服务器发起请求。使用 web 缓存可以有效地提高页面的打开速度,减少不必要的网络带宽的消耗。
  web 资源的缓存策略一般由服务器来指定,可以分为两种,分别是强缓存策略协商缓存策略
  使用强缓存策略时,如果缓存资源有效,则直接使用缓存资源,不必再向服务器发起请求。强缓存策略可以通过两种方式来设置,分别是 http 头信息中的 Expires 属性和 Cache-Control 属性。
  服务器通过在响应头中添加 Expires 属性,来指定资源的过期时间。在过期时间以内,该资源可以被缓存使用,不必再向服务器发送请求。这个时间是一个绝对时间,它是服务器的时间,因此可能存在这样的问题,就是客户端的时间和服务器端的时间不一致,或者用户可以对客户端时间进行修改的情况,这样就可能会影响缓存命中的结果。
  Expires 是 http1.0 中的方式,因为它的一些缺点,在 http 1.1 中提出了一个新的头部属性就是 Cache-Control 属性,它提供了对资源的缓存的更精确的控制。它有很多不同的值,常用的比如我们可以通过设置 max-age 来指定资源能够被缓存的时间的大小,这是一个相对的时间,它会根据这个时间的大小和资源第一次请求时的时间来计算出资源过期的时间,因此相对于 Expires来说,这种方式更加有效一些。常用的还有比如 private ,用来规定资源只能被客户端缓存,不能够代理服务器所缓存。还有如 no-store ,用来指定资源不能够被缓存,no-cache 代表该资源能够被缓存,但是立即失效,每次都需要向服务器发起请求。
  一般来说只需要设置其中一种方式就可以实现强缓存策略,当两种方式一起使用时,Cache-Control 的优先级要高于 Expires 。
  使用协商缓存策略时,会先向服务器发送一个请求,如果资源没有发生修改,则返回一个 304 状态,让浏览器使用本地的缓存副本;如果资源发生了修改,则返回修改后的资源。协商缓存也可以通过两种方式来设置,分别是 http 头信息中的 Etag 和 Last-Modified 属性。
  服务器通过在响应头中添加 Last-Modified 属性来指出资源最后一次修改的时间,当浏览器下一次发起请求时,会在请求头中添加一个 If-Modified-Since 的属性,属性值为上一次资源返回时的 Last-Modified 的值。当请求发送到服务器后服务器会通过这个属性来和资源的最后一次的修改时间来进行比较,以此来判断资源是否做了修改。如果资源没有修改,那么返回 304 状态,让客户端使用本地的缓存。如果资源已经被修改了,则返回修改后的资源。使用这种方法有一个缺点,就是 Last-Modified 标注的最后修改时间只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,那么文件已将改变了但是 Last-Modified 却没有改变,
这样会造成缓存命中的不准确。
  因为 Last-Modified 的这种可能发生的不准确性,http 中提供了另外一种方式,那就是 Etag 属性。服务器在返回资源的时候,在头信息中添加了 Etag 属性,这个属性是资源生成的唯一标识符,当资源发生改变的时候,这个值也会发生改变。在下一次资源请求时,浏览器会在请求头中添加一个 If-None-Match 属性,这个属性的值就是上次返回的资源的 Etag 的值。服务接收到请求后会根据这个值来和资源当前的 Etag 的值来进行比较,以此来判断资源是否发生改变,是否需要返回资源。通过这种方式,比 Last-Modified 的方式更加精确。
  当 Last-Modified 和 Etag 属性同时出现的时候,Etag 的优先级更高。使用协商缓存的时候,服务器需要考虑负载平衡的问题,因此多个服务器上资源的 Last-Modified 应该保持一致,因为每个服务器上 Etag 的值都不一样,因此在考虑负载平衡时,最好不要设置 Etag 属性。
  强缓存策略和协商缓存策略在缓存命中时都会直接使用本地的缓存副本,区别只在于协商缓存会向服务器发送一次请求。它们缓存不命中时,都会向服务器发送请求来获取资源。在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。

3.Vue生命周期钩子

(1)beforeCreate在实例初始化之后,在数据监听和event/watcher事件配置之前触发。因此在这个事件中我们是获取不到 data 数据的。
(2)created在实例创建完成后触发,此时可以访问 data、methods 等属性。但这个时候组件还没有被挂载到页面中去,所以这个时候访问不到 $el 属性。一般我们可以在这个函数中进行一些页面初始化的工作,比如通过 ajax 请求数据来对页面进行初始化。
(3)beforeMount在挂载到页面之前触发。在 beforeMount 之前,会找到对应的 template,并编译成 render 函数。
(4)mounted组件挂载到页面之后触发。此时可以通过 DOM API 获取到页面中的 DOM 元素。
(5)beforeUpdate数据更新时触发,发生在虚拟 DOM 重新渲染和打补丁之前,这个时候我们可以对可能会被移除的元素做一些操作,比如移除事件监听器。
(6)updated 钩子函数,虚拟 DOM 重新渲染和打补丁之后调用。
(7)beforeDestroy实例销毁之前调用。一般在这一步我们可以销毁定时器、解绑全局事件等。
(8)destroyed实例销毁之后调用,调用后,Vue 实例中的所有指令都会解绑,所有的事件监听器会被移除,所有的子实例也会被销毁。

4.手撕promise

const PENDING = "pending";
const RESOLVED = "resolved";
const REJECTED = "rejected";

function MyPromise(fn) {
  // 保存初始化状态
  var self = this;

  // 初始化状态
  this.state = PENDING;

  // 用于保存 resolve 或者 rejected 传入的值
  this.value = null;

  // 用于保存 resolve 的回调函数
  this.resolvedCallbacks = [];

  // 用于保存 reject 的回调函数
  this.rejectedCallbacks = [];

  // 状态转变为 resolved 方法
  function resolve(value) {
    // 判断传入元素是否为 Promise 值,如果是,则状态改变必须等待前一个状态改变后再进行改变
    if (value instanceof MyPromise) {
      return value.then(resolve, reject);
    }

    // 保证代码的执行顺序为本轮事件循环的末尾
    setTimeout(() => {
      // 只有状态为 pending 时才能转变,
      if (self.state === PENDING) {
        // 修改状态
        self.state = RESOLVED;

        // 设置传入的值
        self.value = value;

        // 执行回调函数
        self.resolvedCallbacks.forEach(callback => {
          callback(value);
        });
      }
    }, 0);
  }

  // 状态转变为 rejected 方法
  function reject(value) {
    // 保证代码的执行顺序为本轮事件循环的末尾
    setTimeout(() => {
      // 只有状态为 pending 时才能转变
      if (self.state === PENDING) {
        // 修改状态
        self.state = REJECTED;

        // 设置传入的值
        self.value = value;

        // 执行回调函数
        self.rejectedCallbacks.forEach(callback => {
          callback(value);
        });
      }
    }, 0);
  }

  // 将两个方法传入函数执行
  try {
    fn(resolve, reject);
  } catch (e) {
    // 遇到错误时,捕获错误,执行 reject 函数
    reject(e);
  }
}

MyPromise.prototype.then = function(onResolved, onRejected) {
  // 首先判断两个参数是否为函数类型,因为这两个参数是可选参数
  onResolved =
    typeof onResolved === "function"
      ? onResolved
      : function(value) {
          return value;
        };

  onRejected =
    typeof onRejected === "function"
      ? onRejected
      : function(error) {
          throw error;
        };

  // 如果是等待状态,则将函数加入对应列表中
  if (this.state === PENDING) {
    this.resolvedCallbacks.push(onResolved);
    this.rejectedCallbacks.push(onRejected);
  }

  // 如果状态已经凝固,则直接执行对应状态的函数

  if (this.state === RESOLVED) {
    onResolved(this.value);
  }

  if (this.state === REJECTED) {
    onRejected(this.value);
  }
};

5.JS异步机制

  第一种最常见的是使用回调函数的方式,使用回调函数的方式有一个缺点是,多个回调函数嵌套的时候会造成回调地狱,上下两层的回调函数间的代码耦合度太高,不利于代码的可维护。
  第二种是 Promise 的方式,使用 Promise 的方式可以将嵌套的回调函数作为链式调用。但是使用这种方法,有时会造成多个 then 的链式调用,可能会造成代码的语义不够明确。
  第三种是使用 generator 的方式,它可以在函数的执行过程中,将函数的执行权转移出去,在函数外部我们还可以将执行权转移回来。当我们遇到异步函数执行的时候,将函数执行权转移出去,当异步函数执行完毕的时候我们再将执行权给转移回来。因此我们在 generator 内部对于异步操作的方式,可以以同步的顺序来书写。使用这种方式我们需要考虑的问题是何时将函数的控制权转移回来,因此我们需要有一个自动执行 generator 的机制,比如说 co 模块等方式来实现 generator 的自动执行。
  第四种是使用 async 函数的形式,async 函数是 generator 和 promise 实现的一个自动执行的语法糖,它内部自带执行器,当函数内部执行到一个 await 语句的时候,如果语句返回一个 promise 对象,那么函数将会等待 promise 对象的状态变为 resolve 后再继续向下执行。因此我们可以将异步逻辑,转化为同步的顺序来书写,并且这个函数可以自动执行。

6.diff算法如何比较节点

在这里插入图片描述

(1)新虚拟DOM和老虚拟DOM进行diff,算出应该如何最小量更新,最后反映到真正的DOM上。
(2)h函数用来得到虚拟DOM(带有“sel”,“data”,“text",“children”等属性)patch函数用来用来执行diff算法。
(3)DOM如何变为虚拟DOM属于模板编译原理范畴,本节暂不提及
(4)在这里插入图片描述

(5)diff算法的子节点更新策略
(如果顺序比较会有很多种情况比如更新一个节点/新增一个节点/删除一个节点会很混乱)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web前端开发技术有哪些.pdf
11-16
Web前端开发技术有哪些.pdf
史上最全前端资源汇总
05-27
史上最全前端资源汇总 这份汇总整理,很程度上参考了GitHub最全前端资源汇总;云集前端教程、开发资源、免费书籍、手册规范、求职面试等等,旨在为前端学习 & 技能提升提供方便。当然,并不期望这成为一个前端武学...
前端开发技术难点汇总(三)
qw2319205chu的博客
01-21 565
1.每隔数位添加字符 // 每隔三位数加 ',' FormatNum(str) { var num = "" + str var newNum = "" var count = 0 if (num.indexOf(".") == -1) { for (var i = num.length - 1; i >=...
前端面试项目细节重难点(已工作|做分享)想(八)
weixin_49062485的博客
06-06 552
最后,定位到了原因:浏览器在渲染页面展示数据时,根据用户输入值肯定匹配到两个value值,不知道哪一个要渲染出来,所以导致用户在搜索David该值时,不知道该匹配id为5的value值还是匹配id为6的value值,就出现了搜索下拉框页面卡死问题。首先,既然定位到数据出了问题,不是前端导致的问题,那肯定要找上级领导反馈问题,让数据处理这个问题,一个value不能有重复出现的情况。答:我的回答:该项目的实现过程中我确实遇到了问题:【我会给大家整理回答思路和角度,那那么遇到这样的问题也可借鉴这种思路进行阐述】
史上最全js面试题
m0_60676278的博客
07-16 2316
对象字面量:var obj = {};构造函数:var obj = new Object();Object是JavaScript中所有对象的父对象数据封装类对象:Object、Array、Boolean、Number和String其他对象:Function、Arguments、Math、Date、RegExp、Error闭包就是能够读取其他函数内部变量的函数。
1 | 史上最全大数据笔记-HDFS
m0_61696517的博客
05-27 1129
最近几年,IT行业最火的名词中,少不了"大数据"、"人工智能"、"云计算"、"物联网"、"区块链"等等这些名词。针对于"大数据"这个名词,现在更是全国老百姓,老少皆知的一个词语。但是什么是大数据,除了IT行业的专业人士外,其他人乃至其他行业的人,除了能说出"数据量大"之外,好像真的不能再更深层次的解释了。维基百科:数据规模巨大到无法通过人工在合理的时间内达到截取,管理,处理并整理成为人类所解读的信息。麦肯锡全球研究所:一种规模大到在获取、存储、管理、分析方面都大大超出了传统数据库软件工具能力范围的数据集合。
一个程序员的编年史(作者:鲁那西)
deartear1的博客
04-05 871
诗人问:“你见到过凌晨四点钟的太阳吗?程序员:“见到过啊,那时候我通常刚下班。怎么了?诗人无言以对。我做软件开发已经15年了,从小鲁到鲁工,到鲁经理,再到鲁总监。有些公司,做着做着就没了;有些项目,做着做着就黄了;有些团队,做着做着就散了。社会的浪潮汹涌澎湃,我们都是浪花中的一粒水珠,随着这个大潮起起伏伏。
深度学习基础知识整理
热门推荐
kwame211的博客
07-23 3万+
本文是在七月的BAT机器学习面试1000题系列进行修改。  前言     July我又回来了。     之前本博客整理过数千道微软等公司的面试题,侧重数据结构、算法、海量数据处理,详见:微软面试100题系列,今17年,近期和团队整理BAT机器学习面试1000题系列,侧重机器学习、深度学习。我们将通过这个系列索引绝大部分机器学习和深度学习的笔试面试题、知识点,它将更是一个足够庞大的机器学习和深...
JavaScript知识
weixin_30314793的博客
12-22 231
Day 01 1、Javascript 概述 1、什么是Javascript (JS) Javascript 是一种运行于 JS解释器/引擎 中的解释型脚本语言 JS解释器/引擎 :JS运行环境 1、独立安装的解释器 NodeJS 2、浏览器内核中嵌入的JS解释器 PC机,手机,平板,电视 。。。。 解释性脚本语言: 解释型:运行之前不会编译 编译型:运...
PHP 高级工程面试题汇总
lxw1844912514的博客
07-30 1061
PHP高级工程面试题汇总(2018.05) 1、给你四个坐标点,判断它们能不能组成一个矩形,如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形。 勾股定理,矩形是对角线相等的四边形。只要任意三点不在一条直线上,任选一点,求这一点到另外三点的长度的平方,两个短的之和如果等于最长的,那么这就是矩形。 2、写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P...
史上最详细的项目管理开发流程架构及说明【实例】
qq_40307352的博客
01-31 2523
客户验收与体验的过程中,如果提出体验优化项,需要评估优化的内容是否在项目范围内的,如果在范围内,则排期优化,若不在范围内,则根据优化内容的复杂程度与工作量,确认是否需要重新修改合同与人力预算,然后再排期优化。项目背景、项目目标、项目范围、项目组织结构与职责、项目验收标准与验收流程、项目里程碑计划、项目开发计划、技术架构、项目问题管理、项目变更、项目交付件与移交流程等;根据产品/项目的特性,设定专项测试类型:如可靠性测试、性能测试(流畅性、稳定性、功耗、内存性能等)、兼容性测试、权限相关、数据相关等等;
史上最全前端学习思维导图
03-15
"史上最全前端学习思维导图"是一个集大成者,它涵盖了从基础到高级的各种前端技术,帮助开发者构建完整的知识框架。以下是对每个文件名称所对应的知识点的详细解释: 1. **项目类面试题.xmind** 这个思维导图...
前端面试题总结史上最全
07-27
前端面试题总结史上最全
史上最全的技术知识图谱秘籍
09-13
1.1 架构师图谱 1.2 Java架构师图谱 1.3 微服务架构秘籍 1.4 一致性图谱 1.5 互联网大流量的方法 ...5.3 前端技能图谱 5.4 容器技能图谱 5.5 嵌入式开发技能图谱 5.6 开发语言宝典 5.7 移动端测试图谱 5.8 运维技能图谱
史上最全前端资源案例大汇总_附Demo.rar
03-18
本资源压缩包“史上最全前端资源案例大汇总_附Demo.rar”显然是一个非常宝贵的工具,专为前端开发者设计,提供了大量实例和代码示例,帮助开发者提升技能,快速实现各种功能。 首先,让我们探讨一下“前端”这个...
面试集 - 收藏集 - 掘金
weixin_34008805的博客
05-17 353
Excuse me?这个前端面试在搞事! - 前端 - 掘金金三银四搞事季,前端这个近年的热门领域,搞事气氛特别强烈,我朋友小伟最近就在疯狂面试,遇到了许多有趣的面试官,有趣的面试题,我来帮这个搞事 boy 转述一下。 以下是我一个朋友的故事,真的不是我。 ... javascript array js 缓存算法,数组去重、数组随机抽取、...
【React 】开发环境搭建详细指南
lph159的博客
07-24 1245
无论你是刚刚开始学习 React,还是希望在现有项目中采用 React 技术,搭建一个高效的开发环境都是至关重要的。本文将详细介绍如何从零开始搭建 React 开发环境,涵盖所需的工具和最佳实践,帮助你快速启动并顺利进行开发。Visual Studio Code(VS Code)是目前最流行的代码编辑器之一,提供了丰富的扩展和强大的功能。如果你希望对项目的配置有更多的控制,可以选择手动配置 React 项目。下载并安装最新版本的 Node.js,安装 Node.js 后,npm 会自动安装。
在Vue程序中,如何检测用户的登录状态并跳转到对应页面
最新发布
exlink2012的专栏
07-25 397
通过以上步骤,你可以在Vue应用程序中检测用户的登录状态,并在用户尝试访问受保护页面时跳转到登录页面。同时,在用户登录和登出后,你可以根据需要跳转到相应的页面。
史上最全前端八股文来了
03-22
前端八股文是指前端开发者在面试过程中常被问到的一些基础知识点和常见问题的总结。下面是一个史上最全前端八股文的概述: 1. HTML基础: - HTML元素和标签的区别是什么? - HTML语义化的作用是什么? 2. CSS基础: - 什么是CSS?CSS3有哪些新特性? - CSS选择器有哪些?它们的优先级是如何计算的? - 盒模型是什么?有哪些不同的盒模型? 3. JavaScript基础: - 什么是JavaScript?它与Java有什么区别? - 数据类型有哪些?如何判断一个变量的数据类型? - 闭包是什么?有什么作用? 4. 前端框架和库: - 介绍一下React/Vue/Angular框架的特点和使用场景。 - 什么是虚拟DOM?它的工作原理是什么? - 什么是单页面应用(SPA)?它与传统多页面应用的区别是什么? 5. 前端性能优化: - 什么是懒加载和预加载?它们的作用是什么? - 如何减少HTTP请求的数量? - 什么是CDN?它的作用是什么? 6. 前端工程化: - 什么是模块化开发?常见的模块化规范有哪些? - 介绍一下Webpack的基本配置和常用插件。 - 什么是ESLint?它的作用是什么? 7. 前端跨域解决方案: - 什么是同源策略?为什么会存在跨域问题? - 常见的跨域解决方案有哪些? - JSONP的原理是什么? 8. 前端安全性: - 什么是XSS攻击和CSRF攻击?如何防范这些攻击? - 什么是HTTPS?它的工作原理是什么? - 什么是CSP?它的作用是什么?
写文章

热门文章

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法 4673
  • 【史上最全】前端难点知识汇总(不定期更新) 4424
  • 【机器学习小白入门】【最新版本】windows10+Anaconda3(2019.07)+OpenCV4.1安装 1106
  • Tensorboard打不开(最新解决方案包含No dashboards are active for the current data set.问题) 1080
  • 新手如何区分正反斜杠 675

分类专栏

  • 前端 2篇
  • 浏览器 1篇
  • Anaconda 1篇
  • 人工智能 2篇
  • tensorflow 1篇
  • vue 1篇

最新评论

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法

    guess_li: 电脑语言区域设置里面选择一下Beta版,然后重启应该就ok了

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法

    来了又走327: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 81: invalid continuation byte 我也是这个问题,请问怎么解决呢

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法

    小史不吃香菜: 你解决了吗

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法

    qq_28256951: 你解决了吗

  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法

    Ronnie Tedder: 您好,这个问题您现在解决了吗?

最新文章

  • 新手如何区分正反斜杠
  • 【2020最新】关于better-scroll插件无法滚动的问题解决方法
  • IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None. 解决方法
2021年3篇
2020年2篇
2019年1篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司锦州专业网站优化推广胶南快速优化网站汕头网站优化排名哪家好网站排名优化先询火25星推西昌网站优化找哪家连州网站关键词优化软件攀枝花网站搜索优化优化网站的有哪些网站产品优化很好火26星至富阳企业网站优化推广网站嫁接能起到优化作用吗五常网站推广优化网站产品优化描述徐州襄阳网站运营优化公司网站优化是怎么做深圳海外网站优化最好的方法东光网站页面优化罗定专业网站优化临沧网站优化策划网站优化工程师累吗网站seo优化要怎么做大型网站优化工作网站修改描述影响优化 不网站优化文章如何写佛山外贸网站关键词优化多少钱网站快速优化就选vs火19星肥西网站关键词优化芝罘网站优化报价网站优化的几大误区萧山区网站优化公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化