Redis持久化:redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的;持久化分为rdb(快照持久化)和aof(精细持久化);快照持久化,是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据;当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5分钟有1
多线程介绍、列举线程池和业务场景:1).什么是多线程1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务进程车间,线程车间工人多线程技术可以提高程序的执行效率比如同时开启3条线程分别下载3个文件2).多线程的原理同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)如果CPU调度线程的时间足够快,就造成了多线程
购物车及订单支付(redis):关于购物车,我们当时考虑到怕水军来回CRUD(增读更删)购物车,对数据库造成巨大压力,当时决定采用redis来做这个购物车。这个购物车当时想到了两种情况一种是淘宝的模式就是在用户在未登录状态下,可以查看商品,当在详情页点击“加入购物车”或者“查看购物车”的时候我们会判断用户是否登录,如果没有登录我们会弹出一个弹框,让用户先登录,成功后跳转到登录页面,并且把商品的信息
什么是单例多例单例:就是所有的请求都用一个对象来处理,service和dao层的对象通常都是单例的, 之所以用单例,是因为没必要每个请求都新建一个对象,这样子 既浪费CPU又浪费内存;单例就是该类只能返回一个实例。单例所具备的特点:1.私有化的构造函数2.私有的静态的全局变量3.公有的静态的方法多例:指每个请求用一个新的对象来处理,比如action; 之所以用多例,是为了防止并发问题;即一个
堆和栈的区别 堆内存用来存放由new创建的对象和数组,通过new关键字和构造器创建的对象放在堆空间,大量的对象都是放在堆空间,整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用栈里面存放的是所有基本数据类型和引用数据类型,我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间,栈空间操作最快但是也很小arrayList和linkedList的区别我们知道A
前言 spring技术可以说是java企业开发里最重要的技术,不过真的理解spring的作用和意义还真是一件麻烦的事情,很多人对spring理解其实都是停留在使用阶段(例如:声明式事务很好用等等),当今的spring技术生态环境里可谓是蔚为壮观,spring已经包罗万象,它的内容之多完全不亚于它的本源java语言了,而spring这么大的框都是建立在ioc和aop技术之上,只有深入理解了这两个技
mongoDB的应用场景mongodb是非关系型数据库,他的存储数据可以超过上亿条(老版本的mongodb有丢数据的情况,新版本不会有,网上说的),mongodb适合存储一些量大表关系较简单的数据,例如用户信息,用户注册信息,公司注册信息,留言,评论,操作日志,mongodb还能用分布式文件存储信息,我们主要用mongodb来存储我们项目里面的操作日志(银行的付款转账记录,角色权限的变动日志),
购物车实现cookie+redis一、未登录状态下添加商品到购物车1、在不登陆的情况下也可以添加购物车。把购物车信息写入cookie。优点:1、不占用服务端存储空间2、用户体验好。3、代码实现简单。缺点:1、cookie中保存的容量有限。最大4k2、把购物车信息保存在cookie中,更换设备购物车信息不能同步实现思路:(1)从cookie中获取商品列表信息(单独提出来写成个通用的方法
产生背景在整个项目中实现商品搜索功能电商项目中,因为用户有时候不是多么清楚他所需要的东西的名称或者商店的名称,有时候仅仅是只知道他所需要的商品是干嘛用的,又或者是有多个要求,为了满足用户的诸多需求更准确的查询到用户所需要的商品,所以就用到了Solr搜索引擎简介solr是一个基于Lucene的全文搜索服务器,相比Lucene更高效、使用更便捷,在进行模糊匹配的时候,他可以用来替代数据库中的lik
dubbo和zookeeper怎样实现session共享(在消费端)我们的消费者只有一个模块,所有的请求首先都是进入这个模块里面,生产者有多个模块,session都在消费者这个action里面,所有的请求都是首先进入这个项目里面,我们的生产者有多个模块。如果有多个消费者的情况下,会存在session共享问题,我们可以将session的id作为key值,用户对象作为value值存储到redis里面。
MySQL数据库的搜索引擎MYISAM:支持3中存储方式:静态型,动态型,压缩型优点:占用的空间小,存储的速度快缺点:不支持事务和并发innoDB:优点:提供事务的支持,回滚,支持崩溃修复能力和并发控制,多版本事务并发控制缺点:读写效率较差,占用的数据库空间较大Memory:内存中对数据创建表,数据全部存储在内存缺点:生命周期短优点:读写速度非常快,对数据的安全性要求比较低的时候可以选择memor
Autowired和Resource的区别@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。不同点@Autowired@Auto
多线程的作用发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了**。多核CPU上的多线程才是真正的多线程
Zookeeper 队列管理(文件系统、通知机制)两种类型的队列:1、同步队列,当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。2、队列按照 FIFO 方式进行入队和出队操作。第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号。在特定的目录下创建PERSISTENT_SEQUENTI
所创建的临时目录节点被删除,
Spring中用到的设计模式简单工厂模式Spring 中的 BeanFactory 就是简单工厂模式的体现。根据传入一个唯一的标识来获得 Bean 对象,但是在传入参数后创建还是传入参数前创建,要根据具体情况来定。工厂模式Spring 中的 FactoryBean 就是典型的工厂方法模式,实现了 FactoryBean 接口的 bean是一类叫做 factory 的 bean。其特点是,sprin
Spring事务的隔离级别ISOLATION_DEFAULT(isolation_default):这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应2.ISOLATION_READ_UNCOMMITTED(isolation_uncommitted):这是事务最低的隔离级别,它充许令外一个事务可以看到这个事
redis常用的数据类型Redis的数据类型主要有:string:字符串类型,可以包含任何数据。包括jpg图片或者序列化的对象。里面的incr方法可以实现网站计数器功能,每次访问一个就可以进行加1操作。降低了数据库的压力。list:是一个双向链表,通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。比如可以获取最新添加的10个商品,获取最新的登陆的
Mysql事务的特性事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(https://www.baidu.com/s?wd=ACID&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3uA7WnHmLmWIWuyPbPWN0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT
Memcache缓存机制以及分布式Memcache缓存机制Memcached是一个高性能的分布式内存对象缓存系统。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库(http://lib.csdn.net/base/mysql)的压力,通过在内在里维护一个统一的巨大的的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,简单的说就是将数据调用到内
List和Map、Set的区别结构特点List和Set是存储单列数据的集合,Map是存储键和值这样的双列数据的集合;List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,Set中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的hashcode决定,位置是固定的(Set集合根据hashcode来进行数据的存储,所以位置是固
Hibernate缓存概述一级缓存(session级别缓存)也叫事务级别的缓存二级缓存(sessionFactory缓存)也叫应用级缓存三级缓存(查询缓存)区别:一级缓存的生命周期和session的生命周期保持一致,hibernate默认就启用了一级缓存,不能将其关闭,可以通过session.clear()和session.evict(object)来管理一级缓存。其中get,load,itera
get和post的区别从表面现像上面看GET和POST的区别:请求数据格式GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。POST把提交的数据则放置在是HTTP包的包体中。数据大小GET方式提交的数据最多只能是1024字节,理论上POST没有限
项目中直播实现的原理解析最近项目中涉及到了直播这快的内容,所以针对平时开发中的问题以及采用的技术做一波分享,希望对大家有所帮助。1、直播视频从技术架构角度主要分为三个部分:直播视频采集SDK=直播CDN(也即直播流分发加速)=》直播视频播放器SDK2、音视频处理的一般流程:数据采集→数据编码→数据传输(流媒体服务器)→解码数据→播放显示1、数据采集:摄像机及拾音器收集视频及音频数据,此时得到的为原
数据缓存这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的
如何理解面向对象OOP设计理念OOP三大特点1、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。2、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者
关于Session你需要了解这些session共享:1.各种web框架早已考虑到这个问题,比如asp.net,是支持通过配置文件修改session的存储介质为sqlserver的,所有机器的会话数据都从同一个数据库读,就不会存在不一致的问题;2.以cookie加密的方式保存在第三方应用端.优点是减轻服务器端的压力,缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小
Hibernate对象的三种状态瞬时态:一个Java对象创建之后,还没新增到数据库之前的状态特点:(1)不和Session实例关联(2)在数据库中没有和瞬时对象关联的记录持久态:当调用save()或者是saveOrUpdate()方法之后的状态,保存到数据库的状态特点:(1)和Session实例关联(2)在数据库中有和持久对象关联的记录游离态:当调用session的Close方法或者清空sessi
对称加密与非对称加密对称加密与解密使用的是同样的密钥,但由于需要将密钥在网络传输,所以安全性不高非对称加密使用了一对密钥,公钥与私钥,把以安全性高,但加密与解密速度慢解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通对称加密(SymmetricCryptography)对称加密是最快速、最简单的一种加
CSRFCSRF(Crosssiterequestforgery)也被称为oneclickattack或者sessionriding,中文全称是叫\跨站请求伪造\。一般来说,通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。者利用网站对请求的验证漏洞而实现这样的行为,网站能够确认请求
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号