当前位置: 首页 > news >正文

电子商务网站建设规划说明书搜索引擎关键词优化技巧

电子商务网站建设规划说明书,搜索引擎关键词优化技巧,电子商务网站建设的参考文献,seow是什么意思mysql存储引擎 存储引擎:定义数据的存储方式,以及数据读取的实现逻辑 在以前数据库5.5默认MyISAM引擎,之后默认InnoDB引擎 MyISAM引擎的数据和索引是分开存储的,InnoDb将索引和文件存储在同一个文件。 MyISAM不支持事务&#…

mysql存储引擎

存储引擎:定义数据的存储方式,以及数据读取的实现逻辑

在以前数据库5.5默认MyISAM引擎,之后默认InnoDB引擎

MyISAM引擎的数据和索引是分开存储的,InnoDb将索引和文件存储在同一个文件。

MyISAM不支持事务,InnoDB支持事务

MyISAM只支持表锁,InnoDB支持表锁,行锁等

(补充:表锁和行锁)

表锁粒度更粗的锁,锁定整个数据表,其他事务不能对该表进行任何读写操作。并发低不会死锁

行锁粒度更细的锁,锁定数据表中的特定行,其他事务只能对该表的其他行进行读写操作,并发高,会死锁。

MyISAM不支持外键,InnoDB支持外键

如果大部分表操作是查询-->选用MyISAM,反之若是需要支持事务,使用InnoDB

ArrayList和LinkedList的区别

都是List接口下的两个实现类

1.内部实现

ArrayList使用的是数组的实现,通过索引访问元素,支持快速随机访问

LinkedList使用的是双向链表,每个元素都包含指向前一个元素和后一个元素的引用,适合插入删除操作

2.数据访问的时间复杂度不同

ArrayList时间复杂度为O(1),LinkedList需要从头部或者尾部开始遍历链表直到找到元素,故为O(n)

3.空间占用

ArrayList基于数组实现,占用空间是连续的,可能产生内存碎片;LinkedList通过链表连接元素,每个元素都包含前后节点的引用,占用的空间比较大

线程安全的集合有哪些

1.Vector 相当于 ArrayList 的翻版,是长度可变的数组,Vector的每个方法都加了 synchronized 修饰符,是线程安全的。

2.Hashtable是一个线程安全的集合,是单线程集合,它给几乎所有public方法都加上了synchronized关键字

3.ConcurrentHashMap 采用了分段锁(Segment),并非锁住整个方法,而是通过原子操作局部加锁的方法保证了多线程的线程安全,且尽可能减少了性能损耗。

设计模式

单例模式

1.提供有且仅有一个单例的实例

2.私有化它的构造方法,不让外部通过构造方法创建单例类的实例

3.提供一个公共方法给外界获取这个实例

代理模式

工厂模式

1.工厂方法模式

抽象工厂实现类只生产单一产品

2.抽象工厂(超级工厂)

抽象工厂实现类可以生产某一类的产品

观察者模式

可以理解为:我发朋友圈,其他人(观察者)可以自动立刻看到我发送的内容。

使用场景

List 元素去重 ?

该问题可以分为去重是否考虑顺序

去重不考虑顺序

1.使用循环去重,判断集合中该元素是否存在,不存在才添加

2.使用循环去重,判断集合中该元素是否有相等的,有的话则remove删除

3.使用set去重(最简单),先装进hashSet,再装进ArrayList集合

去重考虑顺序

1.使用LinkedHashSet

2.使用Stream流的distinct方法去重

判断元素是否在List里面

可以使用contains()方法来检查一个元素是否存在于一个List

线程之间通信方式 ?

1.使用volatile和synchronized关键字

volatile:告诉程序,任何对于该变量的访问都需要从共享内存中获取,并且它们的改变必须同步刷新到共享内存里面,即可保证所有线程对该变量访问的可见性

synchronized:同步方法或代码块,确保同一时间只有一个线程可以执行某个特定区域的代码。

2.等待/通知机制

等待通知机制

一个线程修改对应的一个值,另外一个线程可以感知到变化,进行相应的操作

线程是抢占式执行的,无法预知线程之间的执行顺序。但有时程序员也希望能合理协调多个线程的执行顺序。因此,在 Java 中使用了等待(wait)和通知(notify)机制,用于在应用层面上干预多个线程的执行顺序。

3.管道pipe输入/输出流

和文件/网络 输入/输出流的区别在于,主要用于线程之间的数据传输,传输的媒介是内存

4.Thread.join

用于让一个线程A等待另一个线程B执行完。

5.ThreadLocal

可以通过set方法设置值,也能通过get方法获得set的值

Mybatis一级缓存和二级缓存 ?

一级缓存:是sqlSession级别的缓存也叫本地缓存,每个用户执行查询时,都需要使用sqlSession来执行,为了避免每一次都去查询数据库,mybatis把查询出来的数据缓存到sqlSession的本地缓存里面,后续sql如果命中缓存,就可以直接从本地缓存中读取数据。

二级缓存:当多个用户在查询数据时,只要有任何一个sqlSession拿到了数据就会放入到二级缓存里面,其他的sqlSession就可以直接从二级缓存里面去加载数据。

每个sqlSession都有自己的一级缓存,不共享

二级缓存是由每个sqlSession放入组成的,共享

MyBatis的一级缓存是基于SqlSession的,也就是说,在一个SqlSession内部,如果多次查询相同的数据,MyBatis会首先从一级缓存中查找。如果一级缓存中有数据,则直接返回结果;如果没有,则查询数据库,并将结果放入一级缓存。

然而,如果有多个SqlSession都需要查询相同的数据,那么一级缓存就无法满足需求了,因为每个SqlSession都有自己的一级缓存,它们之间不共享数据。为了解决这个问题,MyBatis引入了二级缓存。二级缓存是基于mapper的namespace的,这意味着多个SqlSession可以共享同一个mapper的二级缓存。当多个SqlSession都需要查询相同的数据时,MyBatis会先检查二级缓存,如果有数据,则直接返回;如果没有,则查询数据库,并将结果放入二级缓存。

Redis为什么是单线程 ?

Redis最大的两个特点基于内存单线程模型

这个问题要先明白,redis的单线程指代的是什么

单线程指的是,如图,接收命令1,返回结果1,执行命令,接受命令2,返回结果2,这些所有的步骤,都是由1个线程来完成的。

为什么要设计成单线程:

1.单线程简化设计,避免了多线程常见问题,如锁,并发控制,单线程不存在这些问题。

2.避免锁的开销,多线程环境为了保证数据的一致性,需要使用锁来同步不同线程的操作,但是对于锁会产生额外的开销,如获取锁,释放锁,死锁

3.降低cpu的消耗,避免上下文切换

http://www.yayakq.cn/news/326598/

相关文章:

  • 中山市哪家公司做网站机场网站建设需求
  • js网站记住密码怎么做公司文化墙设计模板
  • 浙江网站建设dyfwzx电脑清理优化大师
  • 网站建设的技术支持织梦生成网站地图
  • 网站开发怎样盐城seo优化
  • 英文网站定制哪家好互联网信息服务
  • 网站建设技术人员工作总结动易网站默认密码
  • 购物网站建设计划书Wordpress怎么上传html文件
  • 个人网站有什么内容北京专业网页制作公司
  • 食品网站的建设背景3d图在线制作
  • 建设网站时 首先要解决两个问题 一是什么耒阳网站建设
  • 做网站订单ps网站怎么做滑动背景
  • 网站维护的内容主要包括北京做vr网站
  • 网站开发php教程wordpress是什么写的
  • 天津河北做网站的公司额尔古纳网站建设价格
  • 石家庄网站建设就找企行家泰安人才市场官网
  • 中小型企业网站优化价格o2o系统软件
  • 机场建设相关网站网站开发后端怎么开发
  • 制作网站需要注意的细节必应搜索引擎入口官网
  • 昆山网站建设怎么样黄骅市天气预报最新
  • 泰州住房城乡建设网站哪家网络公司做网站
  • vs2015做网站的后端兰州市政建设集团网站
  • WordPress文章 溢出网络优化的基本流程
  • 怎么做网站后端小程序制作材料
  • 企业门户网站需求分析wordpress 数据库连接错误
  • 赣榆网站建设wordpress 重装界面
  • 花钱让别人做的网站版权是谁的百度上怎么免费开店
  • php外贸网站建设科技类网站设计
  • 上海网站排名优化公司网站下载端口建设
  • logo灵感网站创建网站哪个好