数据库

介绍三种Session存储方式

放肆的年华 提交于 2020-03-30 20:47:45
简单来说,Session就是服务器给客户端的一个编号,当一台web服务器运行时,可能 是有多个用户都在浏览这台服务器上的网站,当每个用户首次与这台服务器建立连接时,它就与这个服务器建立了一个Session,同时服务器就会自动为其分 配一个SessionId,用以标识这个用户的唯一身分,这个Session就是有服务器随机产生的一个由24个字符组成的字符串。 这个唯一的SessionId还是有很大的实际意义,当一个用户提交表单时,浏览器就会将用户的SessionId自动附加在HTTP头信息中,当服务器 处理完这个表单后,就会将结果返回给SessionId所对应的用户。 如下是Web.config如何配置Session的: <configuration> <system.web> <sessionState mode=" Off | InProc | StateServer | SQLServer " cookieless=" true | false " timeout=" number of minutes " stateConnectionString=" tcpip=server:port " sqlConnectionString=" sql connection string " stateNetworkTimeout=" number of seconds " /> <

sqlmap和dvwa-SQL Injection

霸气de小男生 提交于 2020-03-30 17:49:48
Sqlmap -支持的SQL注入方式 1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。 2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。 3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 4、联合查询注入,可以使用union的情况下的注入。 5、堆查询注入,可以同时执行多条语句的执行时的注入。 -支持的数据库: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB - 检测注入 -基本格式 :sqlmap -u “http://www.vuln.cn/post.php?id=1” -u [目标url] 默认使用一级检测,级别对应返回的信息详细情况(控制加-level n, eg:-level 4) -其他 跟随302跳转 Cookie注入(-level 2) 从post包注入 -常见注入参数Eg 获取当前数据库: python sqlmap.py -u “http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie =

mvc分层的原理

人走茶凉 提交于 2020-03-30 16:51:02
首先这是现在最基本的分层方式,结合了SSH架构。1.modle层就是对应的数据库表的实体类。2.Dao层是使用了hibernate连接数据库、操作数据库(增删改查)。3.Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。4.Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。以上的Hibernate,Struts,都需要注入到spring的配置文件中,Spring把这些联系起来,成为一个整体。 一般 Java 都是三层架构 数据访问层(dao) 业务逻辑层(biz 或者services) 界面层(ui)。 1.action 是业务层的一部分,是一个管理器 (总开关)(作用是取掉转)(取出前台界面的数据,调用biz方法,转发到下一个action或者页面) 2.模型成(model)一般是实体对象(把现实的的事物变成java中的对象)作用是一暂时存储数据方便持久化(存入数据库或者写入文件)而是 作为一个包裹封装一些数据来在不同的层以及各种java对象中使用 3. dao是数据访问层 就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中) 1.Dao主要做数据库的交互工作 2.Modle 是模型 存放你的实体类 3.Service

pg 常用操作指令

非 Y 不嫁゛ 提交于 2020-03-30 16:42:07
pg操作命令: 切换用户: \c - test 切换数据库: \c testdb 列出用户信息: \du 列出数据库信息: \l 列出当前数据库的所有表: \d 查看表字段: \d tablename 查看指定表的基本情况: \d+ tablename 查询当前连接信息: \conninfo 查看sql命令的解释: \h 如:\h select 查看psql命令列表: \? 连接服务: psql -U user -d database 创建用户: create user test with password '123'; 赋予权限: alter user test createdb; 创建数据库: create database testdb owner test; 赋权限: grant all privileges on database testdb to test; 删除用户: drop user username; 如果用户下面有数据库,删除的时候会报如下错误: ERROR: role "test" cannot be dropped because some objects depend on it 查看当前用户: select user; / select * from current_user; 来源: 51CTO 作者: lych528 链接: https:/

人生就是一个数据,一张表格组成的

别来无恙 提交于 2020-03-30 15:03:40
人,从一出生就起就有了一个代表身份的数据,就是“身份证号码”。相当于你的唯一标识,数据库也有唯一标识。人的姓名,年龄,性别,身高我们统称为对象,人就称为具体的类。可能我写的有点懵,也不太具体。咱们换一个对象举例吧!简单一点说就是班级是一个类,里面的学生就是对象。 这是我画的一个图方便大家理解: 六年级好比是一个类,里面的数据ID、姓名、性别就是一个对象,这就是类和对象的关系。后面的活动“今天下午两点考试,每一个人提前10分钟进考场”这是一个方法。 生活中还有很多这样的例子,我就不一一列举了。 数据就是一个个表格组成的 论证一下这个观点: 关于类和对象,可以理解为表结构对应着类,而一行数据对应着对象。所谓表结构就是字段,根据这些字段,我们可以不断地添加新的记录。当然,除了字段以外还可以添加方法。 在有了类的模板之后就可以建对象了,就相当于新加一行记录。数据库中的数据会通过程序来进行读取,同样,也可以将外部录入的数据写入到表格里,这样,就是实现了与数据库的交互操作。以后大家建立的所有项目都有数据库。这样就明白了表结构对应类结构,一行数据对应一个对象。 表格是用来存储数据的,对象也是用来存储数据的,所以表格与对象存在对应关系,不过,需要注意的是,对象里可以新增方法,而表格是没有方法的,表格只能够存储固定的数据。 对于数据的理解就可以通过数据库,简单的说,数据库就是一个存放数据的仓库

NoSQL数据库介绍、memcached安装

烂漫一生 提交于 2020-03-30 13:57:47
NoSQL数据库 什么是NoSQL数据库? 非关系型数据库就是NoSQL,关系型数据库代表MySQL; 关系型数据库,是需要吧数据存储到库、表、行、字段中,查询需要根据条件一行行的匹配,需要从磁盘中检索,耗费时间和资源; NoSQL数据库,存储原理简单(数据类型为K-V),数据可以存储在内存里,查询速度非常快;扩展非常容易,支持分布式; 常见的NoSQL数据库 k-v形式:memcached、redis适合存储用户信息,比如回话、配置文件、参数、购物车等等。这些信息一般与ID(键)挂钩,这种情景下键值数据库是很好的选择; 文档数据库:mongodb将数据以文档的形式存储; 列存储:Hbase 图:Neo4j、Infinite Graph、OrientDB memcached介绍 特点:缓存数据库查询结果,减少数据库访问次数,恻然提高动态web站点性能; 官网:www.memcached.org 数据结构简单(k-v),数据存放在内存中;重启数据会丢失,重启前必须将数据保存到硬盘中; 多线程; 基于c/s架构,协议简单; 基于libevent的时间处理; 自主内存存储处理(slab allowcation) 数据过期方式:Lazy Expiration 和LRU ~~ 安装memcached 源码包 yum install -y libmemcached libevent yum

MYSQL的几个常用命令

爷,独闯天下 提交于 2020-03-30 13:30:35
一、连接MYSQL。 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql> 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令: exit (回车) 二、修改密码。 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用户。(注意:和上面不同

NHibernate总结

南楼画角 提交于 2020-03-30 12:13:07
1.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。 2.NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。 3.常用对象:Configuration:配置文件和模型初始化;ISessionFactory:处理数据库所有操作;ISession:一次数据库操作;IStatelessSession:同ISession,差异是执行完操作马上关闭,不会有延迟加载数据;ITransaction:事务。 4.外连接抓取: 对一个特定关联来说,通过在XML映射文件中设置outer-join属性可以控制是否开启抓取功能。 设置hibernate.use_outer_join为false将禁用全局的外连接抓取,设置为true将启用所有一对一(one-to-one)和多对一(many to one)关联中的外连接抓取默认情况下,它被设置为auto,即自动外连接。但是,一对多关联和集合永远不会使用外连接抓取,除非对每个特定的管理进行明确声明

Flask web开发之路九

纵饮孤独 提交于 2020-03-30 08:48:57
flask_scripts介绍 项目结构如下: flask_script_demo.py文件: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(debug=True) db_scripts.py文件: from flask_script import Manager DBManager = Manager() @DBManager.command def init(): print('数据库初始化完成') @DBManager.command def migrate(): print('数据库迁移成功') manage.py文件: from flask_script import Manager from flask_script_demo import app from db_scripts import DBManager manager = Manager(app) #和数据库相关的文件,都放在一起 @manager.command def runserver(): print('服务器跑起来了') manager.add_command('db'

查询oracle数据库的数据库名、实例名、ORACLE_SID

假装没事ソ 提交于 2020-03-30 08:44:01
连接ORACLE 数据库 SQL> conn risenet/1@//192.168.130.99:1521/risenet 或 sqlplus anxintg/anxintg@//10.7.82.122:1521/orcl 查询表 select * from ESSENWEB.T_ANXINMALL_TG; 数据库名、实例名、数据库域名、全局数据库名、服务名 , 这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。 一、数据库名 什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下: DB_NAME=myorcl ... 在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。 数据库名的作用