session

一致性哈希实现负载均衡

丶灬走出姿态 提交于 2020-02-11 01:47:35
一致性哈希实现负载均衡 1 为什么需要哈希算法 解决同一个用户访问服务器是,访问的是不同的服务器的问题 场景:集群造成的session没有同步 当一个用户访问服务器A的时候,该台服务器A会保存这台服务器的session,但是当下次再访问的时候,被负载均衡算法可能算到了不同的服务器B,服务器B中没有用户的session,会要求用户再次登录。 解决: 加入redis,将session存到redis中 Tomcat同步session 一致性哈希算法 2 什么是一致性哈希算法 服务器集群接收到一次请求调用时,可以根据请求的信息,比如客户端的ip地址,或请求路径与请求参数等信息进行哈希,可以得出一个哈希值,特点是对于相同的ip地址,或请求路径和请求参数哈希出来的值是一样的,只要能再增加一个算法,能够把这个哈希值映射成一个服务端ip地址,就可以使用相同的请求(相同的ip地址,或请求路径和请求参数)落到同一服务器上。 因为客户端发起的请求是无穷无尽的(客户端地址不同,请求参数不同等等),所以对于的哈希值也是无穷大的,所以我们不能把所有的哈希值都进行映射到服务端ip上,所有这里需要用到 哈希环 。 3 虚拟节点 解决一个服务器挂掉造成的服务不均匀问题 使得哈希环更加平滑 当时当一台服务器挂掉的话,会造成服务器服务不均匀的情况 会发现,ip3和ip1直接的范围是比较大的,会有更多的请求落到ip1上

Oracle dump 特定的buffer block

非 Y 不嫁゛ 提交于 2020-02-10 21:51:17
dump 特定的buffer block alter session set events ‘immediate trace name set_tsn_p1 level ts#’; alter session set events ‘immediate trace name buffers level level#’; 其中, ts#=relative_file#+1 relative_file# in(select dbms_rowid.rowid_relative_fno(rowid) relative_file#,dbms_rowid.rowid_object(rowid) obj#,dbms_rowid.rowid_block_number(rowid) block#,id from wangxin.t); level#=select dbms_utility.make_data_block_address(relative_file#,block#) from dual; block# in (select dbms_rowid.rowid_relative_fno(rowid) relative_file#,dbms_rowid.rowid_object(rowid) obj#,dbms_rowid.rowid_block_number(rowid) block#,id

【Hibernate 一对多】

只谈情不闲聊 提交于 2020-02-10 21:10:59
OneToMany public class OneToMany { @Test public void testAdd1() { SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); Customer customer = new Customer(); customer.setCustName("顾客1"); customer.setCustLevel("vip"); customer.setCustSource("网络"); customer.setCustPhone("138"); customer.setCustMobile("999"); LinkMan linkman = new LinkMan(); linkman.setLkm_name("联系人1"); linkman.setLkm_gender("男"); linkman.setLkm_phone("109"); customer

Django面试集锦(1-50)

僤鯓⒐⒋嵵緔 提交于 2020-02-10 18:06:39
目录 1、Django ORM查询中select_related和prefetch_related的区别? 2、only与defer的用法? 3、Django ORM是什么? 4、Django创建项目命令? 5、Django创建项目后,项目文件下的组成部分?(对MVT的理解) 6、对MVC,MTV模型的理解? 6、Django中models利用ORM对Mysql进行查表的语句? 7、Django中间件的使用? 8、Django生命周期流程图? 9、谈一下对uWSGI和nginx的理解? 10、说一下nginx和uWISG服务器之间如何配合工作的? 11、Django开发中数据库做过什么优化? 12、验证码过期时间怎么设置? 13、python中三大框架各自的应用场景? 14、Django如何提升性能(高并发)? 15、什么是restful api,谈谈你的理解? 16、如何设计符合RESTful风格的API? 16、Django关闭浏览器,怎么清除cookies和session? 17、简述Django下的缓存机制? 18、对cookie和session的了解?他们能单独使用吗? 19、Django中QuerySet的get和filter方法的区别? 20、Django对数据查询结果排序的做法? 21、数据库的迁移命令? 22、uWSGI与uwsgi区别? 23

SecureCRT连接服务器的一些问题

妖精的绣舞 提交于 2020-02-10 17:58:31
参考: https://blog.csdn.net/han0373/article/details/81352663 https://www.cnblogs.com/mafeng/p/11313676.html 一、连接断开问题 如果在进行深度学习训练,此时断开就很尴尬。解决方法使用screen命令 screen常用操作 创建会话(-m 强制): screen -dmS session_name # session_name session名称 关闭会话: screen -X -S [session # you want to kill] quit 查看所有会话: screen -ls 进入会话: screen -r session_name 二、there is no screen to be resumed matching screen -r session_name换成screen -D -r session_name 分析:-D -r 先删除前一用户再登陆。 来源: CSDN 作者: kupe87826 链接: https://blog.csdn.net/kupe87826/article/details/104246515

JWT token心得

允我心安 提交于 2020-02-10 08:19:40
token的组成 token串的生成流程。 token在客户端与服务器端的交互流程 Token的优点和思考 参考代码:核心代码使用参考,不是全部代码 JWT token的组成 头部(Header),格式如下: { “typ”: “JWT”, “alg”: “HS256” } 由上可知,该token使用HS256加密算法,将头部使用Base64编码可得到如下个格式的字符串: eyJhbGciOiJIUzI1NiJ9 1 有效载荷(Playload): { “iss”: “Online JWT Builder”, “iat”: 1416797419, “exp”: 1448333419, ……. “userid”:10001 } 有效载荷中存放了token的签发者(iss)、签发时间(iat)、过期时间(exp)等以及一些我们需要写进token中的信息。有效载荷也使用Base64编码得到如下格式的字符串: eyJ1c2VyaWQiOjB9 1 签名(Signature): 将Header和Playload拼接生成一个字符串str=“eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyaWQiOjB9”,使用HS256算法和我们提供的密钥(secret,服务器自己提供的一个字符串)对str进行加密生成最终的JWT,即我们需要的令牌(token),形如:str.”签名字符串”。

[laravel]用户异地登录后踢掉之前的登录

最后都变了- 提交于 2020-02-10 08:09:41
不同用户和服务器之间由一个唯一的session来区分,但是一般情况下不同的session对应的用户model可以是同一个。 为了实现只能同时在一个地方登陆,可以在用户的字段里增加一个last_session来表示该用户model最近登录使用的session,每当用户进行了一次登陆操作后,把last_session重置为当前的session。然后增加一个中间件,判断每个请求使用的session是否是最近登陆的session,如果不是,返回登录页面,表示你已经被踢了。同时页面上也增加一个定时执行的ajax来判断当前的登录状态是否还有效,如果被踢了,提示并且返回登录页面。 1)重置last_session 这是登录时用的函数: protected function attemptLogin(Request $request) { if ($this->guard()->attempt($this->credentials($request), $request->has('remember'))){ return $this->guard()->attempt($this->credentials($request), $request->has('remember')); } } 登录的函数在LoginController里,但是在这个函数里重置last_session是没用的。

Flask_0x03 Web表单

。_饼干妹妹 提交于 2020-02-10 02:57:47
0x1 Flask-WTF git checkout 4a 1.1 CSRF保护 Flask-WTF可以处理表单 (venv) $ pip install flask-wtf Flask-WTF 使用程序设置的秘钥生成加密令牌,验证表单数据真伪实现CSRF保护 设置密钥方法:hello.py:设置Flask-WTF app = Flask(__name__) app.config['SECRET_KEY'] = 'hard to guess string' app.config用来存储框架、扩展和程序本身的配置变量 SECRET_KEY配置变量是通用密钥 1.2 表单类 WTForms:http://wtforms.readthedocs.io/en/latest/ 使用Flask-WTF时,每个Web表单都由一个继承自Form的类表示 hello.py:Web表单,包括一个文本字段和一个提交按钮 from flask_wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required class NameForm(Form): name = StringField('What is your name?', validators=[Required

2020/2/8学习总结

江枫思渺然 提交于 2020-02-09 18:38:05
今天学习了session和cookie的相关内容 一、会话技术 一次会话过程指的是会从打开浏览器到关闭浏览器的过程,在此过程中包含多次请求和响应,会话指的就是这些请求和响应。 由于HTTP是无状态的协议,每一次的请求和响应都是相互独立的。而在实际的操作中,完成一些比较复杂的功能时需要在多次不同的请求和响应之间交互。所以为了使不同请求和响应之间能够交互,便产生了会话技术。 会话技术主要有两类: cookie cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自客户端浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就可以从自己保存的cookie里面获取一些有用信息。 session session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的session中取出数据为用户服务。 二、cookie的简单使用 cookie是客户端会话技术,将数据保存到客户端。 cookie就是一串字符串,格式就是键值对,用分号隔开。使用cookie时,调用Java自带的相应的API即可。 使用cookie的步骤如下: 创建cookie对象,绑定数据

越权访问漏洞

不打扰是莪最后的温柔 提交于 2020-02-09 18:31:49
越权访问漏洞,又可以分为平行越权访问漏洞与垂直越权访问漏洞两类。 平行越权访问漏洞,指的是权限平级的两个用户之间的越权访问。 比如,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽未对信息进行增删改查的时候进行一个判断,判断所需要操作的信息是否属于对应的用户,因此,导致用户A可以操作其他人的信息。​ 垂直越权访问漏洞,指的是权限不等的两个用户之间的越权访问。 一般都是,低权限的用户可以直接访问高权限的用户的信息。 比如,在论坛中,你是一个普通用户,有一天,你通过burpsuite抓包修改了自己的用户ID为管理员的用户ID,一不小心,成功登陆了管理员的账号。 此时,你就相当于管理员了。 对于此类型的漏洞,我提供以下几点安全建议: 1、 用户登录之后,将用户的个人信息存入session中 2、 当后续程序中出现增删改查语句的时候,通过session来唯一确定权限 3、 用户退出之后,记得清理session,设置cookie等 来源: https://www.cnblogs.com/windclouds/p/5413254.html