fastDFS shiro权限校验 redis FreeMark页面静态化
| FastDFS是一个轻量级分布式文件系统, | |
| 使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务 | |
| FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。 | |
| 跟踪器主要做调度工作,在访问上起负载均衡的作用。 | |
| 存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。 | |
| 所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。 | |
| 文件metadata是文件属性列表,可以包含多个键值对。 | |
| 跟踪器和存储节点都可以由一台或多台服务器构成。(通常由两台老大跟踪器主机和备机和4台成对出现的小弟存储节点构成的)。 | |
| 跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。(热部署)可以根据服务器的压力情况随时增加或减少。 | |
| 具有了 冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能优点 | |
| shiro权限校验: | |
| Apache Shiro是Java的一个安全框架,相对于spring Security来说,功能削减了,但是入场不需要那么多的功能, | |
| 所以一般权限校验shiro足够了 | |
| 最简单的一个Shiro应用: | |
| 1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;而Shiro不提供维护用户/权限, | |
| 而是通过Realm让开发人员自己注入。 | |
| 2、所以我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。 | |
| Shiro的核心部分是SecurityManager,它负责安全认证与授权。Shiro本身已经实现了所有的细节,用户可以完全把它当做一个黑盒来使用。 | |
| SecurityUtils对象,本质上就是一个工厂类似Spring中的ApplicationContext。 | |
| Subject它是你目前所设计的需要通过Shiro保护的项目的一个抽象概念。通过令牌(token)与项目(subject)的登陆(login)关系,Shiro保证了项目整体的安全。 | |
| solr: | |
| solr是一个基于lucence的全文检索框架,不同于lucence是一堆jar,而solr是应用程序,是一个独立的企业级搜索应用服务器, | |
| solr整体上可以分为建立索引(将用户需要存储的词组或者段落进行分解成基本词元存储到solrhome中的data中)和搜索索引(通过用户搜索的词再solrhome中进行反向查询结果)的过程; | |
| 这种对外提供类似于webservice的api接口,可同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 | |
| 结合AK分词器,进行对中文的切分, | |
| 有效降低频繁访问数据库对数据库造成的压力。 | |
| redis: | |
| redis是一种key-value键值对形式的非关系型数据库, | |
| //redis是一个基于单进程单线的完全存在与内存中; | |
| //多余慢查询容易造成线程阻塞,因为是单线程所以采用轮巡机制进行处理多个客户端来的请求, | |
| //redis是一个基于单进程单线的完全存在与内存中;key-value键值对的缓存服务器; | |
| // 多余慢查询容易造成线程阻塞, | |
| // 因为是单线程所以采用轮训机制老保证同时处理多个客户端来的请求, | |
| redis有四种数据类型 | |
| String incr主键自增1 decr,主键自减1 在商品的添加时redis中就使用了这个 | |
| list 有序可重复 | |
| set 无序不可重复 hmset(商品sku存储是用到) treeset | |
| storeset 其中和set的区别是set无序,他有序 | |
| jedis的持久化 | |
| RDB和AOF | |
| 其中RDB是快照的形式进行备份的,快速,但是容易丢失两次备份中间的数据,服务器宕机时,容易丢失数据 | |
| AOF是一日志形式追加进去的备份的,速度相对慢,但是相对RDB数据安全性较高,即使服务器宕机,也不会造成较大的损失。 | |
| 优点: | |
| 1 由于是全内存操作,所以读写性能很好,可以达到10w/s的频率。公司有项目使用redis,目前的访问频率是80w/s,通过适当的部署,线上运行一切ok。 | |
| 2 支持数据持久化,支持AOF和RDB两种持久化方式 | |
| 3 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。 | |
| 4 数据结构丰富:除了支持string类型的value外还支持string、hash、set、sortedset、list等数据结构。 | |
| 缺点: | |
| 1 Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。 | |
| 2 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。 | |
| 3 redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响, | |
| 而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。 | |
| 4 Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。 | |
| FreeMark页面静态化 | |
| 相对于动态页面,静态页面具有页面跳转速度快,无延时等特点,能增加用户的体验,所有在开发是尽量使用静态页面,而不使用动态页面, | |
| 对于一些页面本来就是动态页面但是里面数据很少更改。比如电商中的商品详情页,一旦商品上架,一般不会进行更改,这个时候就可以考虑将其进行静态化处理, | |
| freemark采用的是 模板 + 数据模型 = 输出 的形式 , | |
| 将页面中所需要的样式写入到 FreeMarker模板文件中,然后将页面所需要的数据进行动态绑定并放入到Map中,然后通过FreeMarker的模板解析类process()方法完成静态页面的生成。 | |
| //流的写入过程 指定编码UTF-8 | |
| out = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); | |
| //利用配置文件指定模板路径 读取具体模板对象 | |
| Template template = conf.getTemplate("productDetail.html"); | |
| //将模板+对象进行静态化输出 | |
| template.process(root, out); | |
| 同步 重要在于共享数据的多线程访问: | |
| 同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息, | |
| 那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去; | |
| 异步是指进程不需要一直等下去, | |
| 而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。 | |
| 异步 Java AIO: | |
| Java NIO: | |
| NIO是基于块(Block)的,它以块为基本单位处理数据 (硬盘上存储的单位也是按Block来存储,这样性能上比基于流的方式要好一些) | |
| 为所有的原始类型提供(Buffer)缓存支持 | |
| 增加通道(Channel)对象,作为新的原始 I/O 抽象 | |
| 支持锁(我们在平时使用时经常能看到会出现一些.lock的文件,这说明有线程正在使用这把锁,当线程释放锁时,会把这个文件删除掉,这样其他线程才能继续拿到这把锁)和内存映射文件的文件访问接口 | |
| 提供了基于Selector的异步网络I/O | |
| 数据库死锁: |
fastDFS shiro权限校验 redis FreeMark页面静态化的更多相关文章
- freemark 页面静态化
1. 页面静态化是什么? 页面静态化有非常多含义,在WEB开发中.静态网页一般理解为站点中大部分超级链接所引用的页面是单独的HTML静态页面文件(如.htm..html等页面文件,html语言本身是静 ...
- 类Shiro权限校验框架的设计和实现(2)--对复杂权限表达式的支持
前言: 我看了下shiro好像默认不支持复杂表达式的权限校验, 它需要开发者自己去做些功能扩展的工作. 针对这个问题, 同时也会为了弥补上一篇文章提到的支持复杂表示需求, 特地尝试写一下解决方法. 本 ...
- php页面静态化技术;学习笔记
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- php&&页面静态化
页面静态化.主要是出于两个方面的考虑. 第一:訪问html页面的速度比訪问php页面的速度快.在訪问php页面时候.须要对php进行解析.訪问html时候,直接浏览器能够解析出来.特别是PV量 ...
- 使用nosql实现页面静态化的一个小案列
页面静态化,其实就是将动态生成的php页面,变成静态的HTML页面,让用户直接访问.有一下几方面好处: 1,首先就是访问速度,不需要去访问数据库,或者缓存来获取哪些数据,浏览器直接加载渲染html页即 ...
- 页面静态化技术Freemarker技术的介绍及使用实例.
一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...
- JSP页面静态化
Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
随机推荐
- soapUI系列之—-06 testrunner实现自动化测试
TestRunner为soapUI自带------testrunner.bat/testrunner.sh 实现步骤: 1. 使用soapUI,针对接口文件创建测试用例. 2. 将测试用例保存至本地, ...
- Intel为Google的物联网平台Brillo推出开发板Edison
Brillo* is a solution from Google* for building connected devices. Incorporating aspects of the Andr ...
- 《The Swift Programming Language》的笔记-第28页
页 本页里的主要内容是: 1 介绍swift语言里的各类数制,或者说某一整数的不同表示形式. 1)十进制,无前缀 的序列 3)八进制,以0o开头.后边是若干0~7的序列 进制,以0x开头.后是0~9. ...
- 有关java构造器的笔记
当程序中首次出现使用一个类A时, 无论是使用A的静态成员还是创建一个对象(声明一个A类对象不算), 那么类加载器就会首先对A进行加载, 在对A进行加载的过程中, 如果A有一个extends的父类B, ...
- FileWriter简单用法并记录日志
import java.io.*; import java.util.Date; /** * Created by Administrator on 2018/4/6. */ public class ...
- Apache Karaf配置远程调试
软件环境 apache-karaf-4.0.0 配置方法: 在 bin/karaf.bat 文件里,顶部增加 set KARAF_DEBUG=true 然后.重新启动karaf 启动之后.就可以看到例 ...
- HQL语句详解
4.3 使用HQL查询 Hibernate提供了异常强大的查询体系,使用Hibernate有多种查询方式.可以选择使用Hibernate的HQL查询,或者使用条件查询,甚至可以使用原生的SQL查询语句 ...
- transport transmission
运输层 transport layer 传输控制协议 transmission control protocol
- leetcode 664. Strange Printer
There is a strange printer with the following two special requirements: The printer can only print a ...
- POJ1458 Common Subsequence —— DP 最长公共子序列(LCS)
题目链接:http://poj.org/problem?id=1458 Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Tot ...