跟福哥学编程吧~~
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码功能的第一步——验证用户信息。因为用户数据表里userName和userEmail都是唯一的,它们都可以作为忘记密码的验证手段。而userEmail是需要登录后进行绑定邮箱才会产生的,也就是说它不一定是存在的。综上所述,福哥决定userName和userEmail都要验证,只要其中一...
介绍介绍福哥今天要带着大家完成TFUMS系统的忘记密码功能地第二步——身份验证方式选择的开发。身份验证方式指的是我们要确定这个“忘记密码”的人是不是账号的所有人,既然他不知道密码就只能通过其他方式验证了。前面我们有要求用户设置绑定邮箱,绑定邮箱是账号所有人的私有邮箱,如果“忘记密码”的人可以收到寄到绑定邮箱里的邮件,则证明他就是账号的...
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码里面的第一种重置方式——通过绑定邮箱重置密码的前半部分功能的开发。思路是这样的,我们先要知道哪个用户忘记了自己的密码,得到用户名之后判断用户名是否有绑定过邮箱。如果有绑定邮箱的话,我们就向这个绑定邮箱里发生一封邮件,邮件里面包含一个网址,网址携带一个验证码。如果用户可以接收到这封邮件...
介绍介绍福哥今天带着大家完成了通过绑定邮箱重置密码的后一部分功能——重置密码功能。这一部分功能的思路是这样的,首先点开发到邮箱里的邮件正文里面的重置链接,这是一个重置密码的表单页面,用户可以直接设置一个新密码。不过,这里面会校验传入的验证码是否有效,如果验证码有效的话才可以完成密码的重置操作。并且,如果密码重置成功后,验证码会被记录到...
介绍介绍福哥今天带着大家完成TFUMS系统的忘记密码功能的使用安全问题重置密码的前一部分功能的开发。使用安全问题重置密码相对比较简单了,我们只需要将用户设置过的安全问题的题目和答案取出来给用户答,如果用户能完全答对就表示用户是账号的所有者,我们就允许他来重置用户的登录密码了。验证安全问题需要注意几个问题:必须将三个问题都调出来给用户来...
介绍介绍福哥带着大家完成TFUMS的忘记密码功能的通过安全问题重置密码的后一部分功能的开发。这一部分的功能和通过绑定邮箱重置密码基本一样,福哥就不详细介绍了。大家可以对照着看【20201224】的介绍了解设计思路,基本上都是一样的设计。通过安全问题重置密码功能开发完成之后,我们的忘记密码功能就算全部完成了。随着忘记密码功能的竣工,我们...
介绍介绍从今天起福哥将带着大家开发一套基于Java语言的web框架。早期的Java框架类似PHP,使用的是java+jsp的组合实现模块和页面功能的,后来由于jsp这种模式的可维护性和性能远远不及php程序(因为即便是jsp也是需要编译后才能运行的,也就是说jsp首次运行会很慢,但是人家php就没有这个问题),索性全部使用java来实...
介绍介绍福哥今天带着大家来继续开发我们的TFSpring框架,今天要将的是Java开发的基础设计对象——实体(Entity)。所谓实体其实就是相对于面向对象开发模式来说的,Java语言是彻头彻尾的面向对象的编程语言,在Java程序里无论是控制器、模型、配置信息、包括数据结构都是使用对象来实现的。我们设计一个系统的模型结构的时候会抽象出...
介绍介绍福哥带着大家花费了将近40天的时间终于完成了TFUMS系统的开发。这个TFUMS系统是福哥带着大家完成的第二个PHP语言的项目,第一个PHP语言的项目是TFPHP框架。并且这个TFUMS系统是基于我们前面开发的TFPHP框架开发的。福哥想问问大家,这种从零开始的感觉是不是很爽啊?一般人带着做项目都是基于一些开源的框架进行的,而...
介绍介绍福哥今天带着大家给TFPHP框架添加一个非常重要的功能模块——TFHttpClient。在很多情况下,我们的控制器需要通过远程的方式调用接口上的数据或者功能,因为这些接口可能属于其他系统或者其他服务,从本地无法直接访问。这种通过远程方式访问接口就需要借助可以模拟浏览器进行网站访问工具对象来完成,因为网站或者平台是遵循HTTP协...
介绍介绍今天福哥带着大家来给我们的TFSpring框架增加针对日期和时间的处理功能。在Java语言里面日期和时间的相关对象包括Calendar、Date、Timestamp几个对象,在不同的场合下会将某一个时间对象转换成需要的类型。所以说,我们要创建一个日期和时间的操作对象,它可以满足将这三个时间对象来回转换的功能。另外,我们要根据系...
介绍介绍前几课福哥带着大家完成了安全模块的绑定邮箱功能和安全问题功能,这两个功能一般情况下是不能修改的。但是,我们在开发完这两个功能之后并没有进行“锁定”处理。也就是说,重新进入绑定邮箱表单依然可以重新操作绑定邮箱,再次进入设置安全问题表单依然可以重新操作设置安全问题。这显然是一个问题,需要我们采取一些措施。要“锁定”安全模块的表单功...
介绍介绍今天福哥要带着大家给TFSpring框架增加的功能模块是MD5编码和Base64编码,这两个编码函数在PHP语言里面就是三个函数,不过由于Java是强类型语言,又涉及到字符编码的问题,我们还是要好好的学习一番了。MD5是一种不可逆的哈希算法,可以将任意输入数据经过抽样计算获得一个32位的固定长度字符串,在Java里面可以使用D...
介绍介绍今天福哥带着大家来给TFSpring框架添加一个AES算法的功能对象。AES算法是一种可逆的无损加密算法,和Base64不同之处在于,AES可以通过设置私钥提高安全性,而Base64算法就没有办法设置私钥。很多即时通软件的通讯都是采用AES算法进行密文传输的,比如我们熟知的微信公众号、微信小程序等等。在一些激活链接的功能设计里...
介绍介绍在linux操作系统下面,可能会有非常多的web服务器,运行PHP程序的apache,运行java程序的tomcat。除此之外还有很多成品B/S架构的软件,如:监控软件zabbix,图标软件grafana,持续集成工具jekins,代码管理工具gitlab等等。这些web服务器和软件工具通常情况下都会使用自己的端口发布出来,很...
介绍介绍今天福哥要带着大家给TFSpring框架增加的功能模块是SHA1编码和URL编码,这两个编码函数在PHP语言里面就是三个函数,不过由于Java是强类型语言,又涉及到字符编码的问题,我们还是要好好的学习一番了。SHA1是一种不可逆的哈希算法,可以将任意输入数据经过抽样计算获得一个32位的固定长度字符串,在Java里面可以借助Me...
介绍介绍今天福哥带着大家给TFPHP框架的TFDO对象增加两个新方法——fetchTotal和fetchPart。这个fetchTotal方法用来获得输入SQL语句查询结果的记录集总数,而fetchPart方法用来从输入SQL语句查询结果的记录集里提取一部分记录出来。一般情况下这两个方法可以用来实现功能列表的数据分页功能,这个数据分页...
介绍介绍今天福哥带着大家给TFPHP框架增加一个新对象——TFDataPage,使用这个对象可以用来计算功能列表的分页参数。分页是一项技术,用来对功能列表里面的众多条数据记录进行分页处理。其原理是这样的,首先全部数据记录数量就是记录总数(Total);将全部数据记录根据一个固定数字进行等分处理,这个固定数字就是页长度(Page siz...
介绍介绍今天福哥带着大家给TFUMS系统增加一个jQuery控件——table,使用这个控件可以完成列表功能的前端,包括AJAX方式的数据请求,还有视图模板的渲染处理。这个控件设计相对比较简单,使用前端控件时候传入的列表数据接口载入列表数据,然后再提供三个回调方法给前端程序,这三个回调方法用来渲染数据列表的界面内容。福哥曾经想过实现一...
介绍介绍Docker是一个容器(Container)服务,用来管理容器。容器就是一个运行环境,可以部署任何软件运行环境,且环境内只包含最小的操作系统所需要的系统文件,轻量级的运行环境保证了系统的性能,干净的系统环境保证了系统的安全。容器可以有自己的IP地址,可以有自己的service系统,可以有自己的hosts,可以有自己的cront...
介绍介绍所谓注解就是Spring框架的一种编程语法,注解的语法特点是以“@”开通后面根这一个名称,注解一般出现在class定义、对象属性定义、对象方法定义、方法参数定义的场合。使用注解实现如下一些特殊功能:可以告知编译器何时调用class对象可以告知编译器何时调用对象方法可以告知编译器对象属性的值从何而来可以告知编译器方法参数的值从何...
介绍介绍福哥今天带着同学们给我们的TFSpring框架增加RedisTemplate的功能。和JdbcTemplate一样,福哥只是简单的把它配置起来而已。RedisTemplate是Java语言操作Redis数据库的主流工具对象,它借助Jedis驱动实现了操作Redis数据库的功能。RedisTemplate包括很多种数据类型的操作...
介绍介绍福哥今天带着大家给TFSpring框架增加一个类似TFPHP框架的核心对象TFPHP的对象——TFJava对象。不过,在Java里面获取输入数据的方式和PHP区别还是很大的,在PHP里所有的输入数据都可以在几大全局数组($_GET、$_POST、$_FILES、$_SERVER、$_COOKIE)里面找到,而在Java里面这些...
介绍介绍福哥今天要带着大家给TFPHP框架的TFModel对象进行一次大的改造,福哥要给TFModel的数据读取环节增加一个缓存层,通过这一层缓存提高系统的整体运行效率。缓存层,其实就是数据副本,在开发里面我们称之为冗余数据,它就是将数据库里的数据取出来之后放到一个高速读写介质里面存储一份。这样以后再读取数据的时候可以优先从高速读写介...
介绍介绍今天福哥带着大家给TFPHP框架的TFDO对象添加一个很棒的方法——upsert。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解一下upsert的最终目的,它的最终目的就是要保证数据表当...
介绍介绍今天福哥带着大家给TFPHP框架的TFModel对象添加一个很棒的方法——upsert。看过前一课的童鞋应该已经了解了,这里福哥再介绍一下。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解...
介绍介绍福哥今天要给大家分享一个基于urllib3的http客户端请求对象,大家都知道urllib库是Python用来模拟HTTP请求的,通过urllib库可以使用HTTP协议的GET/POST/PUT/DELETE等等请求。模拟POST请求时候,可以传入POST数据,支持表单提交方式(application/x-www-form-u...
介绍介绍今天福哥要带着大家学习关于开源协议的知识,了解了开源协议的知识之后可以避免自己在使用第三方程序代码的时候不会吃官司,也可以通过开源协议将自己的程序代码加上一层保护。开源协议的程序就意味着代码必须公开,虽然听起来有点霸道,但是你要知道一个问题,只要你的程序会流到网络上面,就一定可以被剽窃到源代码(C/C++程序除外),所以选择一...
介绍介绍福哥今天要给大家讲一讲关于Python语言对于函数参数默认值的设计。不可否认,在函数参数默认值设计方面Python真的是太帅了!这种设计思路真的是要把其他弱类型语言按在地上摩擦了!这个主要体现在Python在对函数进行传值的时候支持的独特方式“定向传值”,它的设计让调用函数的人感觉舒服极了!函数参数无默认值在函数所有参数都没有...
介绍介绍今天福哥带着大家学习如何安装非常好用的Java编辑器,也就是大名鼎鼎的IDEA编辑器。IDEA是是jetbrans开发的一款专门用来编写Java程序的编辑器,它的自动补全、代码联想、框架支持、插件支持以及高效的反应速度使其在大部分人用户心中替代了Eclipse成为了编写Java程序的首选编辑器。IDEA的全名叫做Intelli...