session

关于spring MVC的面试题

混江龙づ霸主 提交于 2020-03-27 07:30:26
MVC设计模式 M model 模型 model包括service处理业务逻辑,entity实体类封装数据,dao操作数据库,utils工具类 service层主要用来处理业务逻辑,service层的一些公共处理可以使用spring框架的AOP来完成,比如,日志信息,事物的处理 Spring是一个框架,结合了java中多种优秀设计模式形成的一个企业级解决方案 IOC :控制反转,将对象的创建与属性的赋值交给Spring框架完成,将控制权由程序员交给Spring框架这就是控制反转,IOC主要运用的是Java中的工厂设计模式,将要创建对象的类交给Spring工厂,需要时直接去工厂中取 DI: DI和IOC本质相同说法不同,DI依赖注入,通过属性的set方法或者类的构造方法为属性赋值 AOP:面向切面编程,是对OOP面向对象编程的一种补充,主要运用的是Java中代理设计模式,代理设计模式又分为静态代理和动态代理 静态代理和动态代理的区别:静态代理在代码编译时代理类就产生了,动态代理是在代码运行期才会产生代理类,在运行期JDK底层会动态的生成代理类,并创建代理对象 Spring的事务处理: 事务处理由Spring框架的声明式事务处理完成 Spring框架创建对象的创建次数 : Bean标签的scope属性可以设置对象的创建次数,为singleton时这个对象时单例的只会创建一次

ActiveMQ安装与使用

[亡魂溺海] 提交于 2020-03-27 06:40:31
一 .安装运行ActiveMQ: 1.下载activemq wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz 2.解压 tar -xf apache-activemq-5.9.0-bin.tar.gz [zcw@g1 ~]$ cd apache-activemq-5.9.0 [zcw@g1 apache-activemq-5.9.0]$ cd bin/ 3.运行: [zcw@g1 bin]$ activemq start 三种运行方式: (1)普通启动 ./activemq start (2)启动并指定日志文件 ./activemq start >tmp/smlog (3)后台启动方式nohup ./activemq start >/tmp/smlog 前两种方式下在命令行窗口关闭时或者ctrl+c时导致进程退出,采用后台启动方式则可以避免这种情况 管理后台为: http://ip:8161/admin/ 4.检查已经启动 ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检验是否已经成功启动ActiveMQ服务。 打开端口:nc -lp 61616 & 查看哪些端口被打开

MyBatis映射器(转载)

心已入冬 提交于 2020-03-27 02:29:19
<div class="post-content" itemprop="articleBody"> <h2>什么是MyBatis映射器?</h2><p>MyBatis框架包括两种类型的XML文件,一类是配置文件,即mybatis-config.xml,另外一类是映射文件,例如XXXMapper.xml等。在<a href="http://www.mybatis.cn/680.html" target="_blank">MyBatis的配置文件mybatis-config.xml</a>包含了<mappers></mappers>节点,这里就是MyBatis映射器。</p><h2>1、MyBatis映射器发展历史简介</h2><p>映射器是MyBatis中最核心的组件之一,在MyBatis 3之前,只支持XML映射器,所有的SQL语句都必须在XML文件中配置。而从MyBatis 3开始,开始支持接口映射器,其底层利用的是接口绑定技术(注:面试中经常会问到的一个知识点,见下文5.1项介绍)。另外,接口映射器允许通过注解定义SQL语句,用以替代XML文件配置SQL。</p><h2>2、MyBatis映射器分类</h2><h3>MyBatis映射器分为三类,如下所示:</h3><p>(1)纯xml映射器,利用SqlSession的各种方法实现增删改查。例如:</p><pre><code

Spring02——Spring 中 Bean 的生命周期及其作用域

早过忘川 提交于 2020-03-27 00:00:11
在前一篇文章中,我们已经介绍了 Spring IOC 的相关知识,今天将为个位介绍 Spring 中 Bean 的相关知识。关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点。 Bean 的生命周期 Spring 生命周期有四个阶段,分别是: 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 实例化 通过构造器或工厂方法创建 Bean 实例,也就是我们常说的给自己 new 一个对象。 属性赋值 为 Bean 的属性设置值和对其他 Bean 的引用,主要涉及以下几个方面的内容: IOC 依赖注入 :按照 Spring 上下文对实例化的 Bean 进行配置,也就是 IOC 注入; setBeanName 实现 :如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String)方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值; BeanFactoryAware 实现 :如果这个 Bean 已经实现了 BeanFactoryAware 接口,会调用它实现的 setBeanFactory,setBeanFactory(BeanFactory)传递的是 Spring 工厂自身

django中设置session过期时间

霸气de小男生 提交于 2020-03-26 20:19:00
Django session用到了settings中的这两个东西(默认django项目是已有的)。 settings.py文件后面添加(根据情况添加) # session 设置 SESSION_COOKIE_NAME = "key" # Session的cookie保存在浏览器上时的key SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认) SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(数字为秒数)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 是否关闭浏览器使得Session过期(默认) SESSION_SAVE_EVERY_REQUEST = True # 是否每次请求都保存Session,默认修改之后才保存(默认) ESSION_SAVE_EVERY_REQUEST = True 和

Django 会话session

只谈情不闲聊 提交于 2020-03-26 19:26:55
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的、独立的。通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户。对于静态网站,这可能不是个问题,而对于动态网站,尤其是京东、天猫、银行等购物或金融网站,无法识别用户并保持用户状态是致命的,根本就无法提供服务。可以尝试将浏览器的cookie功能关闭,会发现将无法在京东登录和购物。 为了保持连接状态,网站会通过用户的浏览器在用户机器内被限定的硬盘位置中写入一些数据,也就是所谓的Cookie。通过Cookie可以保存一些诸如用户名、浏览记录、表单记录、登录和注销等各种数据。但是这种方式非常不安全,因为Cookie保存在用户的机器上,如果Cookie被伪造、篡改或删除,就会造成极大的安全威胁,因此,现代网站设计通常将Cookie用来保存一些不重要的内容,实际的用户数据和状态还是以Session会话的方式保存在服务器端。 Session就是在服务器端的‘Cookie’,将用户数据保存在服务器端,远比保存在用户端要安全、方便和快捷得多。 Session依赖Cookie!但与Cookie不同的地方在于Session将所有的数据都放在服务器端,用户浏览器的Cookie中只会保存一个非明文的识别信息,比如哈希值。 Session是大多数网站都需要具备的功能

HTTP 5 确保Web安全的HTTPS、确认用户身份的认证

若如初见. 提交于 2020-03-26 18:54:37
7. 在HTTP协议中有可能存在信息窃听或身份伪装等安全问题。使用HTTPS通信机制可以有效地防止这些问题。 HTTP的缺点: 通信使用明文(不加密),内容可能会被窃听。 不验证通信方的身份,因此有可能遭遇伪装。 无法证明报文的完整性,所以有可能已遭篡改。 加密处理防止窃听:分通信的加密、内容的加密 通信的加密: HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。 用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)或HTTP over SSL。 内容的加密: 还有一种将参与通信的内容本身加密的方式。由于HTTP协议中没有加密机制,那么就对HTTP协议传输的内容本身加密。即把HTTP报文里所含的内容进行加密处理。 这种情况下,客户端需要对HTTP报文进行加密处理后再发送请求。 为了做到有效的内容加密,前提是要求客户端和服务器同时具备加密和解密机制。 不验证对方通信的身份: HTTP协议的实现本身非常简单,不论是谁发送过来的请求都会返回响应,因此不确认通信方,会存在以下各种隐患:

Cowboy 开源 WebSocket 网络库

馋奶兔 提交于 2020-03-26 11:36:07
Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Protocol) 协议标准,并部分实现了 RFC 7692 (Compression Extensions for WebSocket) 协议标准。 WebSocket 可理解为建立在 TCP 连接通道上的更进一步的握手,并确定了消息封装格式。 通过定义控制帧 (Control Frame) 和数据帧 (Data Frame) 来控制通道内的通信和数据传输,下图用使用 ABNF 格式描述了帧头部的格式。 Cowboy.WebSockets 中对于 WebSocket 的 Client/Server 分别做了实现,分别对应代码中的: AsyncWebSocketClient AsyncWebSocketServer Cowboy.WebSockets 的内部实现是基于 Cowboy.Sockets 中的 TAP 模式的 AsyncTcpSocketServer 和 AsyncTcpSocketClient 。关于 Cowboy.Sockets 可以参考文章《 C#高性能TCP服务的多种实现方式 》。 可通过 NuGet 查找 Cowboy 来获取 nuget 包。 WebSocket

sqlalchemy ORM

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-26 07:45:38
orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。 在Python中,最有名的ORM框架是SQLAlchemy。 一、安装 pip3 install SQLAlchemy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 二、sqlalchemy基本使用 创建表 # -*- coding:utf-8 -*- # Author:Brownyangyang import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String #建立连接,echo=True是打印创建过程,root是用户,mysql是密码,liyang是表空间 #

python SQLAlchemy

折月煮酒 提交于 2020-03-26 07:42:35
这里我们记录几个python SQLAlchemy的使用例子: 如何对一个字段进行自增操作 user = session.query(User).with_lockmode('update').get(1) user.age += 1 session.commit() 对多条数据进行删除操作: session.query(User).filter(or_(User.id == 1, User.id == 2, User.id == 3)).delete() 各种连接表,并进行多表操作: from sqlalchemy import distinct from sqlalchemy.orm import aliased Friend = aliased(User, name='Friend') print session.query(User.id).join(Friendship, User.id == Friendship.user_id1).all() # 所有有朋友的用户 print session.query(distinct(User.id)).join(Friendship, User.id == Friendship.user_id1).all() # 所有有朋友的用户(去掉重复的) print session.query(User.id).join