1.本系列文章的目的 实现一个小而美的产品级别php框架 自己动手实现一个新框架仅用于学习交流,不打算替代市面上现有的其他主流框架. 2. 我要一个怎样的PHP框架 简单实用,安全优雅,博采众长 安装简单,上手简单,扩展简单 不需要编译C扩展. 不需要知道什么是composer. 不需要改nginx.cnf .htaccess各种重写规则. 但支持各种环境,从最低端的虚拟空间到独立服务器,从单机xampp,phpstudy, 到各种云sae,bae,以及高大上的分布式架构部署方式.绿色无需安装,…
实现一个mysql数据库封装需要考虑的问题 使用方便性 采用直接sql语句操作方式.只要会写sql语句,那么将没有其他学习成本. uctphp框架提供的dba辅助封装类,用会之后将爱不释手. 使用前需要显示初始化并连接到数据库吗,当然不需要. 直到执行第一条sql语句之前,都不会去连接数据库,甚至不会new一个db对象. dba将会在合适的时机去连接数据库并执行初始化字符编码操作. 查询语句.不需要new一个查询构造器也不提供链式操作方式,那样复杂且低效. dba提供了以下的查询辅助函数. 1…
所有的外部输入参数都应该检查合法性. 未正确处理输入数据将可能导致sql注入等漏洞. 框架提供系列函数来取$_REQUEST中的值 requestInt requestString requestFloat requestBool ps:注意$_REQUEST中变量类型可能会是数组 如请求为 ?i[]=1,那么$_REQUEST['i'] 的值为array(1) 做校验的时候要考虑全面以防止php warning信息泄露 另外再介绍一下kv json格式的数据校验. 有时为了在项目中保留一定扩展…
1. 组织文件布局应该考虑什么问题 前后端分离 各业务模块分离但方便互相调用 上传文件安全性 方便接入第三方类库 如图所示 框架入口文件 uct/index.php 框架目录         uct/framework 业务目录         uct/app 文件上传目录  upload 第三方类库      uct/vendor 框架目录framework下和业务目录web下均有类似结构 control目录与model目录, 另外web下还有前端目录tpl和view.tpl用于放置后台管理页…
直接通过url参数访问业务模块($app)中控制器($ctl)里的函数($act) 我们支持3种路由模式 普通模式 _a=$app,     _u=$ctl.$act 最简单的方式,专注实现业务$act函数,不需要再写额外代码 为什么参数名前面要加下划线就不解释了 easy模式 _easy=$app.$tpl.$ctl.$act _easy=$app.$ctl.$act 在web开发中,通常我们在$act中输出一个前端页面, easy模式下,如果未实现$act处理函数,会自动寻找并显示对应的前端…
根据前一篇文章的设计原则,我们暂时把php文件分为3类,类名和文件名都遵守如下约定.   类名 文件名 路径 模型类m {$app}Mod  {$app}.mod.php {$app}/model   控制器类c {$app}Ctl {$app}.ctl.php {$app}/control 其他 {$app} {$app}.cls.php {$app}/class 可以实现一个简单的autoload函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18…
psr4自动加载规范https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 我们把第三方使用psr规范的类库放在vendor目录下 修改一下autoload函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22     //psr     if (!empty($GLOBALS['_UCT']['autoload_psr'])) {        …
2019 年起如何开始学习 ABP 框架系列文章-开篇有益 [[TOC]] 本系列文章推荐阅读地址为:52ABP 开发文档 https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp 本文的目的是为了让刚刚接触 ABP 框架的同学或者准备接触 ABP 框架的同学,能够理解和搞明白 ABP 框架到底是怎么回事,毕竟它发展了好几年的时间.社区中有很多人做 了 ABP 的资料和文章包括我自己也建立了 52ABP,社区中还有 ABPplus 等等的内…
Web框架之Django-20-基于mysql数据库的连接   想要连接mysql首先需要安装pymysql这个驱动     然后在app的init文件中引入驱动 import pymysql pymysql.install_as_MySQLdb() 最后在settings.py中配置数据库信息即可 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 采用mysql 'NAME': 'test', # 数据库名 '…
mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. 一.介绍 对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] 分表技术(水平分割.垂直分割) 读写[写: update/delete/add]分离 存储过程 [模块化编程,可以提高速度] 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] mysql服务器硬件升级…
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebService+WCF+ORM+EntLib ——三种开发方式的完美整合(Web项目.Winform项目与WCF中间件项目) 第一部分:EFW框架功能全面介绍 开篇从两个部分全面介绍了EFW框架的整体功能及适用项目,首先通过一个实例分别讲解怎么利用框架快速开发Web.Winform和WCF系统与WebServi…
目录: 从零开始编写自己的C#框架(1)——前言从零开始编写自己的C#框架(2)——开发前的准备工作从零开始编写自己的C#框架(3)——开发规范从零开始编写自己的C#框架(4)——文档编写说明从零开始编写自己的C#框架(5)——三层架构介绍从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍从零开始编写自己的C#框架(7)——需求分析从零开始编写自己的C#框架(8)——后台管理系统功能设计从零开始编写自己的C#框架(9)——数据库设计与创建从零开始编写自己的C#框架(10)——项目…
一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 表必须使用InnoDB存储引擎. 表必须使用“t_”开头命名. 表字符集选择UTF8. 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE.金额建议使用BIGINT. 建议使用UNSIGNED存储非负数值. 建议使用INT UNSIGNED存储IPV4. 整形定义中不添加长度,比如使用INT,而不是INT(4). 使用短数据…
随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息.起初的想法是读取文本文件取得mac地址实现自动化操作,但是此方法也是行不通的!所以这个功能暂时没有自动化操作.后来想到可以读取数据库的查询结果,这样一来,每次添加设备的mac都可以确保是服务器上存在的,且是在用户使用设备表中是不存在的就可以. 那么该如何实现呢? 思路: 打开数据库 查询表中用户没有…
import MySQLdbdef main(): try: conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='pass',db='auto',port=3306, charset='utf8') cur=conn.cursor() row=cur.execute('select * from tabletask') print('count=%s' % row) result=cur.fetchall() for r in re…
Django的数据库 1.在Django_test下的view.py里面model定义模型 from django.db import models # Create your models here. # 定义游戏模型类,继承models.Model class GameInfo(models.Model): gtitle = models.CharField(max_length=20, verbose_name='名称') game_date = models.DateField(verb…
hilo(高低位方式high low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值.保存hi值的表至少有一条记录(只与第一条记录有关),否则会出现错误.可以跨数据库. 创建表 & 字段,赋值: ## Hibernate的Hilo主键 create table hibernate_hilo(next_hi integer not null); ); hibernate 配置文件 : XXX.hbm.xml 的主键配置 <id name="rowId&quo…
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Article 前言 说到 Python 的单元测试框架,想必接触过 Python 的朋友脑袋里第一个想到的就是 unittest. 的确,作为 Python 的标准库,它很优秀,并被广泛用于各个项目.但你知道吗?其实在 Python 众多项目中,主流的单元测试框架远不止这一个. 本系列文章将为大家介绍目前流行的 P…
其实 Spring MVC 是一个基于请求驱动的 Web 框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器进行处理,具体工作原理见下图. 在这里,就不详细谈相关的原理和实现细节了,感兴趣的话,可以读一下这方面的书籍. 我在网上看到一篇不错的关于讲述怎么实现一个 MVC 框架的文章,在此,分享给各位读者,也许能帮助到你. 原文内容如下. 我今天主要带大家实现一个迷你版的 Spring MVC ,本项目将在一个干净的 web 工程开发,不引入 Spring,完全通…
SpringBoot是一种用来简化新Spring应用初始搭建及开发过程的框架,它使用特定方式来进行配置,使得开发人员不再需要定义样板化的配置.MyBatis是一个支持普通SQL查询.存储和高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手工配置以及对结果集的检索封装,可以使用简单的XML或注解用于配置和原始映射,将接口和Java的对象映射成数据库中的记录. 最近的项目有相关需求,集成SpringBoot和MyBatis框架后,进行Mysql数据库的数据访问,实现功能后总结于此博客,方…
Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析…
一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到不少相关介绍的文章,对我的学习提供了不少帮助.由于目前资料不是很丰富,所以学习过程中也走了不少弯路,本系列的文章主要记录我学习过程中的一些心得体会,并对一些细节会做详细的解释,希望能为机器学习零基础的同学提供一些帮助.(C#零基础可不行) 二.基本概念 1.什么是机器学习?定义:一个电脑程序要完成任…
作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [导学视频] [课程详细介绍] 以下是部分截图 介绍与自我介绍 作者:网名@傅猿猿 陕西 西安市 全栈工程师 能文能武(评论区留言有机会获取个人微信畅聊人生) 点兵软件CTO 联合创始人 擅长Android Linux PHP JavaScript Go 程序架构和框架设计. 以下是傅老师在慕课网上的介绍以及课程 下面开始来简单介绍下责编,…
MVC源码学习系列文章目录: MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理) MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码) MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则) MVC系列——MVC源码学习:打造自己的MVC框架(四:自定义视图) 出处:http://www.cnblogs.com/landeanfen/tag/mvc/…
上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 使用GTest编写测试程序,你必须先把GTest编译成一个库文件然后在你的测试程序中链接它.我们为主流的构建系统准备了一些现成的脚本:GTest根目录下的msvc/用于Visual Studio,xcode/用于Mac的Xcode,make/用于GNU make,codegear/用于Borland…
ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接) 代码自动生成:分享一个与ABP配套使用的代码生成器源码 ABP系列文章总目录: 1.ABP总体介绍  2.ASP.NET Boilerplate入门 3.ABP分层架构 4.ABP模块系统 5.ABP启动配置 6.ABP依赖注入 7.ABP Session管理8.ABP日志管理9.ABP设置管理10.ABP领域层…
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程序开发•系列文章四]模块化 [微信小程序开发•系列文章五]主界面 [微信小程序开发•系列文章六]生命周期和路由 整个微信小程序从打开到关闭,整个过程可以分为很多阶段或者说状态,这一整段的过程,我们称之为小程序的生命周期.而周期中的每种不同的状态,到另一个状态的过度和转化,是需要一个触发机制的,这种机…
1 什么是设计模式 设计模式是对在软件设计过程中重复出现的问题提出了一种比较好的解决方案.正如一位专家所说:设计模式是对程序设计人员经常遇到的设计问题的可再现的解决方案(The Smalltalk Companion).GOF设计模式通常被认为是其他设计模式的基础,随着业务复杂度的增大,会不断涌现新的设计模式,而这些新的设计模式一般会以GOF模式理论为参照. 2 为什么要学习设计模式 从个人职业规划来考虑.一位软件开发工程师随着编码量的增加,开发经验的增加,软件理论理解的加深,会不由自主地想一些…
前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想者的四步方面对IT从业者的技术路线做了阐述(见笔者文:IT从业者的学习规划 - 学习者系列文章开篇),从浅到深的对技术路线需要学习的内容做了叙述,后续会对学习者系列文章进行书写,本文就当做该系列文章的一个版图吧. 对于技术路线,笔者认为,在工作之余,就该自我主动的去学习技术和业务方面的知识.一方面是…
软件工程师要阅读的书籍估计是项目组内最多的.软件工程师处于项目组中最基础的人员储备阶层,与项目的关系最密切.当然,现在是大数据时代,我们无法全部看完所有相关的书籍,只能够先学习工作需要的知识,然后在项目过程中碰到相关的需要的内容时再进行补充学习.不过,按照笔者的项目管理经验,需要在项目过程中做一些相关的培训,相对来说,视频演示学习是最快的,然后才到书籍. 今天说说软件工程师要阅读的书籍.按照<IT软件人员的技术路线(写给技术迷茫中的你) - 项目管理系列文章>一文中提到的各个阶段要学习的知识.…