Entry

Spring web.xml详解

谁都会走 提交于 2021-02-16 23:40:07
  web.xml文件是Java Web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个Java Web项目没有web.xml文件也是照样能跑起来的。 1. web.xml各版本区别   首先来看一下Tomcat官网的Servlet和JSP规范规范与的Apache Tomcat版本之间的对应关系,如图:   从中可以清晰的看到不同版本的web.xml文件要使用相应版本的Tomcat服务器。   下面是各版本的web.xml配置的头部声明: servlet 2.3 <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > < web-app > </ web-app > servlet 2.4 <? xml version="1.0" encoding="UTF-8" ?> < web-app xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001

request接收表单提交数据及其中文参数乱码问题

时光总嘲笑我的痴心妄想 提交于 2021-02-16 11:20:00
一、request接收表单提交数据: getParameter (String)方法 (常用) getParameterValues (String name)方法 (常用) getParameterMap()方法 (编写框架时常用) 比如现在有如下的form表单 1 <% @ page language = " java " import = " java.util.* " pageEncoding = " UTF-8 " %> 2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > 3 < html > 4 < head > 5 < title >Html的Form表单元素 </ title > 6 </ head > 7 < fieldset style ="width:500px;" > 8 < legend >Html的Form表单元素 </ legend > 9 <!-- form表单的action属性规定当提交表单时,向何处发送表单数据,method属性指明表单的提交方式,分为get和post,默认为get --> 10 < form action ="${pageContext.request.contextPath}/servlet/RequestDemo03" method =

Django之ORM

前提是你 提交于 2021-02-16 10:10:34
概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。ORM在业务逻辑层和数据库层之间充当了桥梁的作用 优势 ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。让软件开发人员专注于业务逻辑的处理,提高了开发效率 劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了。ORM用多了SQL语句就不会写了,关系数据库相关技能退化... ORM与数据库的关系 Django 项目使用MySQL数据库 1.在Django项目的settings.py文件中,修改数据库配置信息 DATABASES = { ' default ' : { ' ENGINE ' : ' django.db.backends.mysql ' , #引擎 ' NAME ' : ' orm ' , #数据库名字 ' HOST ' : ' 127.0.0.1 ' , #IP

Searching the Web UVA

筅森魡賤 提交于 2021-02-15 17:12:08
  The word “search engine” may not be strange to you. Generally speaking, a search engine searches the web pages available in the Internet, extracts and organizes the information and responds to users’ queries with the most relevant pages. World famous search engines, like GOOGLE, have become very important tools for us to use when we visit the web. Such conversations are now common in our daily life: “What does the word like ∗ ∗ ∗ ∗ ∗∗ mean?” “Um. . . I am not sure, just google it.”   In this problem, you are required to construct a small search engine. Sounds impossible, does it? Don’t worry

kvm和qemu交互处理io流程

瘦欲@ 提交于 2021-02-15 10:57:50
1、IO虚拟化的分类 (1)全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统。 QEMU模拟I/O的情况下,当客户机中的设备驱动程序(device driver)发起I/O操作请求之时,KVM模块中的I/O操作捕获代码会拦截这次I/O请求,然后经过处理后将本次I/O请求的信息存放到I/O共享页,并通知用户控件的QEMU程序。QEMU模拟程序获得I/O操作的具体信息之后,交由硬件模拟代码来模拟出本次的I/O操作,完成之后,将结果放回到I/O共享页,并通知KVM模块中的I/O操作捕获代码。最后,由KVM模块中的捕获代码读取I/O共享页中的操作结果,并把结果返回到客户机中。当然,这个操作过程中客户机作为一个QEMU进程在等待I/O时也可能被阻塞。 另外,当客户机通过 DMA ( Direct Memory Access ) 【DMA外接设备可以不用CPU干预,直接把数据传输到内存的技术,尽量减少CPU干预的输入/输出操作方式。(使用连续物理内存,kmalloc分配)。否则外设一有数据就要中断通知CPU,CPU去读,如果频繁就时间浪费在处理中断,IO速度慢】访问大块I/O之时,QEMU模拟程序将不会把操作结果放到I/O共享页中,而是通过内存映射的方式将结果直接写到客户机的内存中去

django进阶

≡放荡痞女 提交于 2021-02-14 23:17:16
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') cursor = db.cursor() cursor.execute(sql) data = cursor.fetchall() db.close() return data def GetSingle(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') cursor = db.cursor() cursor.execute(sql) data = cursor.fetchone() db.close() return data    django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM)。   PHP:activerecord   Java:Hibernate

Dockerfile构建镜像

时光毁灭记忆、已成空白 提交于 2021-02-14 16:50:45
构建镜像 构建镜像指令:docker build或docker image build Dockerfile 初识: cat >>Dockerfile<<end FROM python:2.7-slim WORKDIR /app ADD . /app RUN pip install -r requirements.txt EXPOSE 80 ENV NAME World CMD ["python", "app.py"] end yum install python2-pip 配置pip国内源 mkdir -p /root/.pip cat >> /root/.pip/pip.conf<<end [global] trusted-host=mirrors.aliyun.com index-url=http://mirrors.aliyun.com/pypi/simple/ end cat >>requirements.txt<<end Flask Redis end cat >> app.py<<end from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0,

Django——Model

不羁岁月 提交于 2021-02-14 12:55:13
一、 ORM 在 MVC 或者说 MTV 设计模式中,模型(M)代表对数据库的操作。那么如何操作数据库呢? 我们可以在 Python 代码中嵌入 SQL 语句。 但是问题又来了,Python 怎么连接数据库呢?可以使用类似 pymysql 这一类的第三方模块(针对不同的数据库,有不同的模块)。 如果你有很多的数据库操作,并且你的 Python 程序员不是专业的 DBA,写的 SQL 语句很烂,甚至经常写错,怎么办? 聪明的人想出了一个办法:用 Python 语法来写,然后使用一个中间工具将 Python代码翻译成原生的 SQL 语句。这个中间工具就是所谓的 ORM(对象关系映射)! ORM(object—relationship--mapping)将一个 Python 的对象映射为数据库中的一张关系表。它将 SQL 封装起来,程序员不再需要关心数据库的具体操作,只需要专注于自己本身代码和业务逻辑的实现。 于是,整体的实现过程就是:Python 代码,通过 ORM 转换成 SQL 语句,再通过pymysql 去实际操作数据库。 最典型的 python ORM 就是 SQLAlchemy 了,如果你的 Web 框架自身不带 ORM 系统,那么你可以安装使用它。 Django 自带 ORM 系统,不需要额外安装别的 ORM。当然,也可以安装并使用其它的 ORM,比如 SQLAlchemy

django之ORM

荒凉一梦 提交于 2021-02-14 09:29:48
前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM: Object Relational Mapping(关系对象映射) 类名对应------》数据库中的表名 类属性对应---------》数据库里的字段 类实例对应---------》数据库表里的一行数据 obj.id obj.name.....类实例对象的属性 Django orm的优势: Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据的字符编码) 由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库 create database day70 default character set utf8

Synchronized解析——如果你愿意一层一层剥开我的心

狂风中的少年 提交于 2021-02-14 09:18:21
前言 synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。 Synchronized的使用场景 synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图: 接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法 。 synchronized作用于代码块 public class SynchronizedTest { public void doSth(){ synchronized (SynchronizedTest.class){ System.out.println("test Synchronized" ); } } } 反编译,可得: 由图可得,添加了synchronized关键字的代码块,多了两个指令 monitorenter、monitorexit 。即JVM使用monitorenter和monitorexit两个指令实现同步,monitorenter、monitorexit又是怎样保证同步的呢?我们等下剥第二层继续探索。 synchronized作用于方法 public synchronized void doSth(){ System.out.println("test