跟福哥学编程吧~~
介绍介绍前面福哥已经带着大家学会了搭建PHP的运行环境了,今天我们来搭建一个数据库服务。福哥推荐使用MySQL数据库,它有着简单、轻便、速度快、维护容易的特点。MySQL提供了免费的社区版本,大家可以免费使用MySQL数据库开发自己的web应用。今天福哥就带着大家使用mysql:5.7-debian基础镜像来搭建MySQL数据库环境。...
介绍介绍之前福哥介绍过一个通过监听MySQL的binglog日志来实现实时获取数据增加、删除、修改的变化的工具php-mysql-replication,这个工具很棒,可惜的是只支持PHP语言。今天福哥要带着大家学习一个更棒的工具阿里巴巴的Canal项目,Canal分为服务器端和客户端,服务器端是Java实现的,而客户端支持主流编程语...
介绍介绍今天福哥要带着大家学习Rancher部署一个服务的方法,大家都知道通过docker部署一个服务需要定制很多参数,包括容器名称、主机名称、镜像、端口映射、磁盘映射、网络配置、启动命令等等。我们可以使用Dockerfile去简化这个操作,把这个敲命令变成编写配置文档,大大提高了可操作性。在Rancher里面我们可以通过“点点点”的...
介绍介绍福哥使用tfspring库包开发了一个项目,编译时候没有问题,但是启动的时候提示如下错误:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDa...
介绍介绍福哥在存储一个字符串的时候,程序报了如下错误:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8B H...' for column 'title' at row 1原因经过分析原因是因为字符串包含emoji表情,这个e...
介绍介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JDBC来实现的。JDBC是一个多数据库集中解决方案,而我们今天只讲如何通过JDBC操作MySQL数据库。Java的生态非常成熟,基本上是无框架不项目,无论做任何功能都一定会基于一个框架来开发。福哥选择的就是非常大众的非常普及的SpringBoo...
介绍介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲如何通过JdbcTemplate操作MySQL数据库。Java的生态非常成熟,基本上是无框架不项目,无论做任何功能都一定会基于一个框架来开...
介绍介绍福哥在使用pymysql查询数据的时候发现了一个奇怪的问题,就是MySQL数据库里面明明存储的是正常的中文,但是通过pymysql查出来之后就会报出如下错误:UnicodeDecodeError: 'utf-8' codec can't decode b...
介绍介绍福哥在配置MySQL的复制同步的功能的时候,发现这个同步数据的日志是存储在文件里面的,如果数据更新频次非常高的话,对磁盘性能是一个考验~~原因默认情况下master状态信息和slave状态信息都是以文件形式存储起来的,可以通过如下的方法查看。show variables like '%in...
介绍介绍福哥今天要带着大家给TFPHP框架的TFModel对象进行一次大的改造,福哥要给TFModel的数据读取环节增加一个缓存层,通过这一层缓存提高系统的整体运行效率。缓存层,其实就是数据副本,在开发里面我们称之为冗余数据,它就是将数据库里的数据取出来之后放到一个高速读写介质里面存储一份。这样以后再读取数据的时候可以优先从高速读写介...
介绍介绍今天福哥带着大家给TFPHP框架的TFDO对象添加一个很棒的方法——upsert。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解一下upsert的最终目的,它的最终目的就是要保证数据表当...
介绍介绍今天福哥带着大家给TFPHP框架的TFModel对象添加一个很棒的方法——upsert。看过前一课的童鞋应该已经了解了,这里福哥再介绍一下。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解...
介绍介绍福哥今天打算给大家讲一讲MySQL的Replication功能,使用Replication功能来实现双主机相互同步复制数据,可以大大提高系统的健壮性,两台主机都可以用来作为数据写入服务器使用。主主同步复制的配置难度远远超过主从同步复制,因为两台机器都会相互同步对方的用户提交的操作,一个不小心有可能会造成两边的机器的数据都被清空...
介绍介绍福哥今天打算给大家讲一讲MySQL的Replication功能,使用Replication功能来实现主机和从机同步复制数据,可以实现主机到从机的数据的实时同步,通过从机可以分担主机的读压力,提高系统性能。配置配置文件里面必须包含的参数包括:server_idlog-binlog-bin-indexbinlog-do-dbaut...
介绍介绍福哥今天带着同学们给我们的TFSpring框架增加JdbcTemplate的功能。虽然这么说,其实福哥并没有对JdbcTemplate进行封装,只是简单的把它配置起来而已。JdbcTemplate是Java语言操作数据库的主流工具对象,它不仅仅可以操作MySQL,还可以操作很多其他数据库引擎。JdbcTemplate可以通过e...
介绍介绍今天开始我们来学习Python操作MySQL数据库的技巧,Python操作MySQL是借助pymysql这个库来实现的。pymysql库区别于PDO和JdbcTemplate,它只能用来操作MySQL,不能用来操作其他数据库,这一点和早期的PHP的php_mysqli差不多。相信在不久的将来Python也会给出多数据库的集中解...
介绍介绍福哥在将数据库里的数据编码从utf8转为utf8mb4的时候得到了如下的错误:Specified key was too long; max key length is 3072 bytes这是怎么回事呢?怎么解决呢?原因从字面理解就是索引长度超限了,最大的长度是3072个字节。福哥的数据表的有一个字段是1000个字符长度的v...
介绍介绍福哥今天带着大家完成个人资料修改的功能。这个个人资料修改里面包括很多项目,包括昵称、性别、生日、学历、个人介绍几个项目。其中性别是一组单选项,而生日是两组下拉框,学历是一组下拉框,个人介绍是一个多行文本框,看起来个人资料表单包含了大部分表单元素内容了。这个表单里有个难点,就是要保存性别和学历的时候,表单里面是一个单词,而数据库...
介绍介绍今天我们和福哥一起来好好设计一下安全问题功能,安全问题用来识别账号的安全保护身份。用户在指定若干问题里面挑出三个问题,并提供这三个问题的自己的答案。在验证安全保护身份的时候,用户需要答出这三个问题的答案,且答案要一字不差。这种验证的安全系数是非常高的,即便是和用户本人非常熟悉的人也很难得出三个问题的正确答案。设置安全问题代码/...
介绍介绍今天福哥带着大家来实现用户模块user的设置绑定邮箱和修改密码功能。设置绑定邮箱属性修改数据库操作,所以在修改之前需要检查目标数据记录是不是存在。由于绑定邮箱是不能够有重复的,所以还要检查这个准备写入的邮箱地址是不是被其他人使用了。最后就是通过update方法更新绑定邮箱字段了。修改密码功能也属于修改数据库操作,在修改之前也需...
介绍介绍今天我们来建立TFUMS的第一个模块用户模块user,然后在这个模块里面实现添加用户和用户身份认证两个基础功能。添加用户就是向user表插入一条数据,只不过插入之前需要通过查询语句检查用户名是否已经被其他人使用了,因为用户名userName是约束键,就是说用户名userName不能有重复的情况。用户身份认证最简单的做法就是根据...
介绍介绍上一阶段福哥带着大家完成了TFUMS的视图模板的制作,根据这些模板上面的功能回头看看我们的数据表的字段,会发现很多功能用到的字段我们并没有设计进来。这是因为福哥在计划开这门《做个用户管理系统》课程之初没有想过要做这么复杂的一套系统,或者说第一版不打算做这么多功能,所以导致最初设计的数据表的字段过于简陋,不够支持项目的功能。当然...
介绍介绍昨天我们已经对TFUMS系统的需求进行了分析,今天福哥带着大家把TFUMS的数据表设计一下。根据我们的需求分析结果可以知道,TFUMS只有一个模块就是用户模块,该模块只有一个模型就是用户模型。而且用户模型的属性和功能已经设计好了,现在我们就根据这些设计好的内容进行数据库的设计了。数据库数据库名称自然就是tfums了,这个没有什...
介绍介绍福哥为了提高前面通过Dockerfile制作的镜像的通用性,把配置文件的位置整理出来了。一个软件包括三大部分,1)数据;2)日志;3)配置;前面福哥已经把数据和日志都整理出来了,可以通过数据卷将软件的数据和日志映射到宿主机上面,现在福哥再把软件的配置文件也映射到宿主机上面,这样一来镜像里面就只剩下软件的运行环境了,我们可以把软...
介绍介绍前面福哥已经教给大家使用Dockerfile安装各种服务器软件的方法了,今天福哥要带着大家把TFLinux服务器上的软件都转移到Docker容器里面。使用Docker容器搭建服务器环境是现如今部署服务器环境的主流方式,福哥顺应潮流将Docker这种部署方式教给大家,活到老学到老嘛~~这次福哥整理的服务器软件包括MySQL、Re...
介绍介绍大家根福哥学会了使用Dockerfile创建Docker镜像的技巧了,那么我们现在搭建服务器环境就不需要再去下载软件的源代码了,也不需要编译安装了,更加不用操心软件和操作系统的各种兼容问题了。今天福哥带着大家来安装mysql的环境,MySQL是数据库引擎,和php、python不同之处在于MySQL是不能简单地通过k8s进行负...
介绍介绍今天开始我们来学习各种语言操作数据库的技巧,根据福哥学习编程的顺序,我们先来将PHP语言操作数据库的技巧。因为相对强大又免费的数据库只有MySQL了,所以我们这里只讲解各种语言操作MySQL数据库的方法,其他数据库福哥会在后面给逐步给大家讲解。PHP有很多版本,在PHP4的时代大家一般是通过php_mysql库来操作MySQL...
介绍介绍福哥在使用Python的pymysql进行开发的时候发现了一个问题,如果在Python程序运行结束之前通过MySQL的控制台终端对数据库里面的数据进行了更新的话,再在Python里面去查询的时候发现数据竟然是更新之前的旧内容,这是怎么回事呢?事务机制InnoDB原来是因为默认情况下MySQL的数据库的引擎都是InnoDB类型的...
介绍介绍前面福哥给大家介绍了使用pymysql操作MySQL数据库的方法,使用pymysql查询数据使用fetchone或者fetchall方法,但是无论是fetchone还是fetchall得到的数据结果都是list类型的,里面并不包含字段名称。但是在实际的编程当中通过list的索引去定位字段值还是很不方便的,相比较还是dict类型...
介绍介绍福哥今天会带着大家完成网页蜘蛛的代码的最后一个部分,实现网页源代码内容写入MySQL数据库功能,实现网页信息写入ElasticSearch搜索引擎功能。这部分功能实现了之后,我们就可以转而去编写搜索引擎的前端UI功能的代码了。要实现写入ElasticSearch就需要先连接ElasticSearch,并且需要设置一个索引名称。...