1.框架搭建-Model、View、Controller分离
项目整体采用mvc+三层架构方式搭建
在三层架构的基础上(view bll dal)将mvc的控制器(controller)、视图(view)和实体(model)分离成独立项目【mvc中使用area区域可对不同项目进行划分,但随着项目数量的增加会使得项目结构比较混乱,如下图所示原项目架构】
MVC中Model View Controller分离成独立项目学习借鉴于MVC4 Model
2.框架搭建-三层架构
在框架搭建-MVC分离中实现了mvc的Model、View、Controller分离,本文将在此基础上进行三层架构的搭建。项目解决方法图及BLL(业务逻辑层)、DAL(数据访问层)思维导图如下:
为便于理解需先了解温习几个概念
接口:接口定义了所有类继承接口时应遵循的语法合同,接口提供了派生类应遵循的标准结构。
派生类:当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,
4.新增/编辑页面基类-EditPageBase<T>
EditPageBase为泛型抽象类,继承自FuncPageBase
泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型及其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其某个形参的类型。允许对个别泛型的类型参数进行约...
5.DAL升级——Lambda表达式动态拼接生成
在框架搭建-三层架构关于DAL层数据操作中,BaseDAL提供了一些基础的增删改查操作,其操作的实现是根据直接提供的Lambda表达式。
直接提供Lambda表达式虽然方便但是对开发人员有技术要求(并非每个人都熟练掌握Lambda表达式)、Lambda表达式的书写易于出错且个人书写风格不同等,都表明动态拼接生成Lambda表达式是一种更好的选择。
以下是借鉴诸多网友并自己封装的一个Lamb...
PyQt4-入门学习(1)
PyQt4入门学习,案例整理
1. 程序图标:
程序图标就是一个小图片,通常显示在程序标题栏的左上角。在以下的示例中,我们将学习如何在PyQt 中使用程序图标,另外我们还将学习一些新的方法。
#!/usr/bin/python
# icon.py
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __in
Python基础学习(1)注释、变量、数据类型、条件语句、循环语句、运算符、格式化输出
1. 注释
1)单行注释:#
2)多行注释:“”“ ”“”, ‘’‘ ’‘’
2. 指定python执行路径,编码格式:
# ! /usr/bin/env python
# -*- coding:utf-8 -*-
3. import:导入其他python程序
4. import getpass # python自带的密码输入模块,密码输入时不可见
pwd
Python基础学习(2)基本数据类型、三元运算、深浅拷贝、函数式编程、参数、变量、lambda表达式、python内置函数、文件处理、上下文管理、递归、命名空间、闭包
1. 基本数据类型
1)数字
(1)int类型
常用功能:
.__add__()
bit_length()获取可表示的二进制的最短位数
2)字符串,str类型
常用方法:
a = 'bob'
(1)capitalize(),首字母大写
a.capitalize
(2)center,居中显示,第一个参数为位数,第二个参数为填充符号(默认为空格)
a.center(20
PyQt4-入门学习(2)
本文内容为个人学习时的材料整理,有许多书本上的内容,并非个人原创,但在测试时将原文编码有问题的地方进行了些需修改。水平不足,敬请谅解!
1. 对话框
1)简易对话框:对话框的调用者会把对话框中的各窗口部件全部设置为初始值,也可由对话框调用者直接获取各窗口部件的最终值。简易对话框不掌握各窗口部件中用于编辑和显示的数据。
# -*-coding: utf-8-*-
import sys
Python基础学习(3)装饰器,正则表达式,模块,hashlib,字符串格式化,生成器
1.冒泡排序
li1 = [33, 2, 10, 1]
print(li1)
def bubbleSort(li):
for i in range(1, len(li)):
for j in range(len(li) - i):
if li[j] > li[j + 1]:
temp = li[j]
Python基础学习(4)编程范式、反射、面向对象、接口、异常处理
面向过程:根据业务逻辑从上到下写代码
函数式:将某个功能代码封装到函数中,日后便无需重复填写,仅调用函数即可
面向对象:对函数进行分类和封装,让开发“更快更好更强···”
1. 反射
通过字符串的形式倒入模块
通过字符串的形式去模块中寻找指定函数,并执行
如果是类:只能找类里的成员
如果是反射:既可以找对象,也可以找类的成员
简单案例1:
# 根据用户输入的内容,导入模块
i
Python基础学习(5)网络编程socket套接字、文件上传、粘包问题、socketserver、IO多路复用、线程进程协程、进程池、线程池、上下文管理
1. socket套接字,
简单的Server与Client案例:
import socket
# Server
server = socket.socket()
server.bind(("127.0.0.1", 9999, ))
server.listen(5)
# 接收客户端的请求
# 连接客户端地址信息
while True:
conn, addr = server
机器学习(1)k最近邻算法、朴素贝叶斯算法、聚类算法、
k最近邻算法
1. 原理
数据映射到高维空间中的点找出k个最近的样本投票结构
2.如何衡量距离
数学中距离满足三个要求
必须为正数必须对称满足三角不等式
3.闵可夫斯基距离(Minkowski):
汉哈顿距离欧氏距离切比雪夫距离
公式:
q越大,差异越大的维度对最终距离影响越大
q = 1时为曼哈顿距离
q = 2时为欧式距离
q
Web基础(1)前端-HTML:简介、标签、HTML文档结构head、body及其内部标签
1. HTML简介
HTML,htyper text markup language,超文本标记语言
超文本:指页面内可以包含图片、链接,甚至音乐、程序等非文字元素
标记语言:标记(标签)构成的语言
网页=HTML文档,由浏览器解析,用来展示的
静态网页:静态的资源
动态网页:html代码是由某种开发语言根据用户请求动态生成的
2. 标签
什么是标签:
是由一对...
Web基础(2)网络基础
1. OSI7网络模型
应用层:应用程序及接口表示层:对数据进行转换、加密和压缩会话层:建立、管理和终止会话传输层:提供可靠的端到端的报文传输和差错控制网络层:将分组从源端传送到目的端;提供网络互联数据链路层:将分组数据封装成帧;提供节点到节点方式的传输物理层:在媒体上传输比特;提供机械的电气的规约
特点说明:
OSI模型每层都有自己的功能集层与层之间相互独立又相互依靠上层依
Web基础(4)JavaScript,常用操作及代码示例
1. JavaScript,是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写响应代码,浏览器可以解释并做出相应的处理。
1)DOM操作HTML、CSS--》对文档树进行操作
# 将文档树中的所有a标签替换成p标签
a. DOM找到所有的a标签
b. 把a标签替换成p标签(循环JavaScript)
2)JavaScript
Web基础(5)jQuery,基本操作及代码案例
完整的jquery中文文档请参见:jquery.cuishifeng.cn
1. JQuery的基本格式:
$(selector).action()
2.选择器
1)基本选择器
#id
element
.class
*
selector1, selector2, selector3
2)层级选择器
ancestor descendant 后代选择器
Web基础(6)Web框架初步认识
1. Web框架本质:对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端
import socket
def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n")
client.send("Hello
Web基础(7)Tornado、Cookie、Session、Ajax、文件上传
1. tornado框架的简单配置与应用# -*-coding:utf-8-*-
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
# self.write("Hello World")
self.re...
MySQL数据库:用户管理、基本数据类型、对数据库、表、表内容的操作、完整性约束条件、pymysql模块、视图、存储过程、触发器
1. MySQL用户和权限管理用户管理创建用户:create user "用户名"@"IP地址" identified by "密码";删除用户:drop user "用户名"@"IP地址";修改用户:rename user "用户名"@"IP地址"; to "新用户名"@"IP地址";修改密码:set password for
周排行