返回顶部
首页 > 资讯 > 数据库 >mycat学习01-- mycat我带你入门
  • 550
分享到

mycat学习01-- mycat我带你入门

2024-04-02 19:04:59 550人浏览 泡泡鱼
摘要

请耐心读完整篇文章,过程中出现的错误点在文章结尾都有总结和解决办法。服务器架构安装MySQL创建mysql用户groupadd Mysqluseradd -r -g mysql -s /bin/false

请耐心读完整篇文章,过程中出现的错误点在文章结尾都有总结和解决办法。

服务器架构


mycat学习01-- mycat我带你入门

mycat学习01-- mycat我带你入门

安装MySQL

创建mysql用户

groupadd Mysql

useradd -r -g mysql -s /bin/false mysql

安装MySQL

yum install -y libaio

cd /usr/local/src/

wget Http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

tar -zxf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

cp -rf mysql-5.7.17-linux-glibc2.5-x86_64 /data/app/mysql-3306

cp -rf mysql-5.7.17-linux-glibc2.5-x86_64 /data/app/mysql-3307

chown -R mysql:mysql /data/app/mysql-3306

chown -R mysql:mysql /data/app/mysql-3307

/data/app/mysql-3306/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql-3306 --datadir=/data/app/mysql-3306/data

/data/app/mysql-3307/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql-3307 --datadir=/data/app/mysql-3307/data

修改my.cnf

需要修改的参数: 

·        server-id:保证每个配置文件唯一

·        两台master的自增长ID必须不同

linux-node2

master

cat > /data/app/mysql-3306/my.cnf<<EOF

[client]

port = 3306

Socket = /data/app/mysql-3306/mysql.sock

[mysqld]

 

port = 3306

user = mysql

server-id = 1

bind-address = 0.0.0.0

basedir = /data/app/mysql-3306

datadir = /data/app/mysql-3306/data

socket = /data/app/mysql-3306/mysql.sock

pid-file = /data/app/mysql-3306/mysql.pid

log-error = /data/app/mysql-3306/mysqld.log

 

skip-name-resolve

log_bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 1

 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

EOF

chown mysql.mysql /data/app/mysql-3306/my.cnf

slave

cat > /data/app/mysql-3307/my.cnf<<EOF

[client]

port = 3307

socket = /data/app/mysql-3307/mysql.sock

[mysqld]

 

port = 3307

user = mysql

server-id = 11

bind-address = 0.0.0.0

basedir = /data/app/mysql-3307

datadir = /data/app/mysql-3307/data

socket = /data/app/mysql-3307/mysql.sock

pid-file = /data/app/mysql-3307/mysql.pid

log-error = /data/app/mysql-3307/mysqld.log

 

skip-name-resolve

log_bin = mysql-bin

 

 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

EOF

chown mysql.mysql /data/app/mysql-3307/my.cnf

linux-node3

master

cat > /data/app/mysql-3306/my.cnf<<EOF

[client]

port = 3306

socket = /data/app/mysql-3306/mysql.sock

[mysqld]

 

port = 3306

user = mysql

server-id = 2

bind-address = 0.0.0.0

basedir = /data/app/mysql-3306

datadir = /data/app/mysql-3306/data

socket = /data/app/mysql-3306/mysql.sock

pid-file = /data/app/mysql-3306/mysql.pid

log-error = /data/app/mysql-3306/mysqld.log

 

skip-name-resolve

log_bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 2

 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

EOF

chown mysql.mysql /data/app/mysql-3306/my.cnf

slave

cat > /data/app/mysql-3307/my.cnf<<EOF

[client]

port = 3307

socket = /data/app/mysql-3307/mysql.sock

[mysqld]

 

port = 3307

user = mysql

server-id = 22

bind-address = 0.0.0.0

basedir = /data/app/mysql-3307

datadir = /data/app/mysql-3307/data

socket = /data/app/mysql-3307/mysql.sock

pid-file = /data/app/mysql-3307/mysql.pid

log-error = /data/app/mysql-3307/mysqld.log

 

skip-name-resolve

log_bin = mysql-bin

 

 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

EOF

chown mysql.mysql /data/app/mysql-3307/my.cnf

启动MySQL

启动服务

linux-node2和linux-node3都执行如下命令

touch /data/app/mysql-3306/mysqld.log && chown mysql.mysql /data/app/mysql-3306/mysqld.log

sed -i 's#/usr/local/mysql#/data/app/mysql-3306#g' /data/app/mysql-3306/bin/mysqld_safe

/data/app/mysql-3306/bin/mysqld_safe --defaults-file=/data/app/mysql-3306/my.cnf --basedir=/data/app/mysql-3306 --datadir=/data/app/mysql-3306/data --user=mysql &

 

 

touch /data/app/mysql-3307/mysqld.log && chown mysql.mysql /data/app/mysql-3307/mysqld.log

sed -i 's#/usr/local/mysql#/data/app/mysql-3307#g' /data/app/mysql-3307/bin/mysqld_safe

/data/app/mysql-3307/bin/mysqld_safe --defaults-file=/data/app/mysql-3307/my.cnf --basedir=/data/app/mysql-3307 --datadir=/data/app/mysql-3307/data --user=mysql &

检查端口

ss -lntup |egrep '3306|3307'

tcp    LISTEN     0      80                     *:3306                  *:*      users:(("mysqld",19973,22))

tcp    LISTEN     0      80                     *:3307                  *:*      users:(("mysqld",20537,22))

配置双主

配置主从

linux-node2

master

cd /data/app/mysql-3306/

./bin/mysql -uroot -p -S mysql.sock -P 3306

mysql> CREATE USER 'repl'@'192.%' IDENTIFIED BY 'mysql';

Query OK, 0 rows affected (0.05 sec)

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.%';

Query OK, 0 rows affected (0.00 sec)

 

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      613 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

slave

cd /data/app/mysql-3307/

./bin/mysql -uroot -p -S mysql.sock -P 3307

mysql> CHANGE MASTER TO MASTER_HOST='192.168.56.12',

    ->                  MASTER_PORT=3306,

    ->                  MASTER_USER='repl',

    ->                  MASTER_PASSWord='mysql',

    ->                  MASTER_LOG_FILE='mysql-bin.000001',

    ->                  MASTER_LOG_POS=613;

Query OK, 0 rows affected, 2 warnings (0.04 sec)

 

mysql> start slave;

Query OK, 0 rows affected (0.02 sec)

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.56.12

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

          Read_Master_Log_Pos: 613

               Relay_Log_File: linux-node2-relay-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

linux-node3

master

cd /data/app/mysql-3306/

./bin/mysql -uroot -p -S mysql.sock -P 3306

mysql> CREATE USER 'repl'@'192.%' IDENTIFIED BY 'mysql';

Query OK, 0 rows affected (0.05 sec)

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.%';

Query OK, 0 rows affected (0.00 sec)

 

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      613 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

slave

cd /data/app/mysql-3307/

./bin/mysql -uroot -p -S mysql.sock -P 3307

mysql>

CHANGE MASTER TO MASTER_HOST='192.168.56.13',

                 MASTER_PORT=3306,

                 MASTER_USER='repl',

                 MASTER_PASSWORD='mysql',

                 MASTER_LOG_FILE='mysql-bin.000001',

                 MASTER_LOG_POS=613;

Query OK, 0 rows affected, 2 warnings (0.04 sec)

 

mysql> start slave;

Query OK, 0 rows affected (0.02 sec)

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.56.13

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

          Read_Master_Log_Pos: 613

               Relay_Log_File: linux-node2-relay-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

配置双主

masterbinlog位置

linux-node2 master

d /data/app/mysql-3306/

./bin/mysql -uroot -p -S mysql.sock -P 3306

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      613 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

linux-node3 master

cd /data/app/mysql-3306/

./bin/mysql -uroot -p -S mysql.sock -P 3306

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      613 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

linux-node2 master配置跟linux-node3 master同步

mysql> CHANGE MASTER TO MASTER_HOST='192.168.56.13',

                 MASTER_PORT=3306,

                 MASTER_USER='repl',

                 MASTER_PASSWORD='mysql',

                 MASTER_LOG_FILE='mysql-bin.000001',

                 MASTER_LOG_POS=613;

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

 

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.56.13

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

          Read_Master_Log_Pos: 613

               Relay_Log_File: linux-node2-relay-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes        

linux-node3 master配置跟linux-node2 master同步

mysql> CHANGE MASTER TO MASTER_HOST='192.168.56.12',

                 MASTER_PORT=3306,

                 MASTER_USER='repl',

                 MASTER_PASSWORD='mysql',

                 MASTER_LOG_FILE='mysql-bin.000001',

                 MASTER_LOG_POS=613;

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

 

mysql>

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.56.12

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

          Read_Master_Log_Pos: 613

               Relay_Log_File: linux-node3-relay-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

验证

linux-node2上验证

linux-node2 master上创建数据

mysql> create database test;

Query OK, 1 row affected (0.01 sec)

 

mysql> use test;

Database changed

 

mysql> create table temp(id int,name varchar(64));

Query OK, 0 rows affected (0.11 sec)

 

mysql> insert into temp values(1,'aaa');

Query OK, 1 row affected (0.28 sec)

 

mysql> CREATE TABLE temp2(id INT PRIMARY KEY  NOT NULL AUTO_INCREMENT ,nname VARCHAR(64));

Query OK, 0 rows affected (0.01 sec)

 

mysql> insert into temp2(nname) values('bbb');

Query OK, 1 row affected (0.01 sec)

 

mysql> select * from test.temp;

+------+------+

| id   | name |

+------+------+

|    1 | aaa  |

+------+------+

1 row in set (0.01 sec)

linux-node2 slave上查看数据

mysql> select * from test.temp;

+------+------+

| id   | name |

+------+------+

|    1 | aaa  |

+------+------+

1 row in set (0.00 sec)

linux-node3 master上查看数据

mysql> select * from test.temp;

+------+------+

| id   | name |

+------+------+

|    1 | aaa  |

+------+------+

1 row in set (0.00 sec)

linux-node3 slave上查看数据

mysql> select * from test.temp;

+------+------+

| id   | name |

+------+------+

|    1 | aaa  |

+------+------+

1 row in set (0.00 sec)

linux-node3上验证

linux-node3 master上创建数据

mysql> use test;

 

mysql> insert into temp2(nname) values('DDD');

Query OK, 1 row affected (0.02 sec)

mysql>  insert into temp2(nname) values('fff');

Query OK, 1 row affected (0.00 sec)

 

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

+----+-------+

linux-node3 slave上查看数据

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

+----+-------+

3 rows in set (0.00 sec)

linux-node2 master上查看数据

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

+----+-------+

3 rows in set (0.00 sec)

linux-node2 slave上查看数据

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

+----+-------+

3 rows in set (0.00 sec)

结论

·        在任意一个master端更新数据,其他任意端都可以更新数据

·        两台服务器配置了间隔自增长,数据不同冲突

linux-node1上安装mycat

安装mycat

cd /usr/local/src

wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

mv mycat /data/app/mycat-1.6

ln -s /data/app/mycat-1.6 /data/app/mycat

修改schema.xml

·        balance="1"
全部的readHost与stand by writeHost参与select语句的负载均衡

·        writeType="0"
所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties

·        switchType="1"
默认值为1,自动切换

cd /data/app/mycat

cp conf/schema.xml conf/schema.xml.bak

cat > conf/schema.xml <<EOF

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>

    <dataNode name="dn1" dataHost="node1" database="test" />

    <dataHost name="node1" maxCon="10" minCon="5" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1">

        <heartbeat>select user()</heartbeat>

        <writeHost host="master1" url="192.168.56.12:3306" user="root" password="mysql">

            <readHost host="slave2" url="192.168.56.13:3307" user="root" password="mysql" />

        </writeHost>

        <writeHost host="master2" url="192.168.56.13:3306" user="root" password="mysql">

            <readHost host="slave2" url="192.168.56.13:3307" user="root" password="mysql" />

        </writeHost>

    </dataHost>

</mycat:schema>

EOF

启动mycat

./bin/mycat start

ss -lntup |egrep  '(8066|9066)'  

tcp    LISTEN     0      100                   :::8066                 :::*      users:(("java",16546,79))

tcp    LISTEN     0      100                   :::9066                 :::*      users:(("java",16546,75))

验证mycat服务是否正常

linux-node2-master端配置mycat连接账号

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'192.%' IDENTIFIED BY 'mysql';

Query OK, 0 rows affected, 1 warning (0.07 sec

mycat服务器上安装mysql服务,但是不启动

步骤省略,详细内容可以参考上面的MySQL安装

使用mysql的客户端连接mycat

cd /data/app/mysql/

./bin/mysql -uroot -p -P 8066 -h 192.168.56.11 ##连接mycat,初始密码123456

mysql> show databases;

+----------+

| DATABASE |

+----------+

| TESTDB   |

+----------+

1 row in set (0.00 sec)

 

mysql> use TESTDB;

 

mysql> insert into temp2(nname) values('eee');

Query OK, 1 row affected (0.09 sec)

mysql> insert into temp2(nname) values('ggg');

Query OK, 1 row affected (0.01 sec)

linux-node3 slave端查看数据是否同步

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

|  5 | eee   |

|  7 | ggg   |

+----+-------+

5 rows in set (0.00 sec)

结果发现数据写入到了linux-node2 slave端

测试

服务自动迁移

关闭linux-node2 masterMySQL服务

mysql> shutdown;

Query OK, 0 rows affected (0.01 sec)

 

shell > ss -lntup |grep 3306

mycat端插入新的数据查看数据是否同步

mysql> insert into temp2(nname) values('mmmm');

Query OK, 1 row affected (0.07 sec)

 

mysql> insert into temp2(nname) values('nnnn');

Query OK, 1 row affected (0.01 sec)

linux-node3 slave端查看数据是否同步

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

|  5 | eee   |

|  7 | ggg   |

|  8 | mmmm  |

| 10 | nnnn  |

+----+-------+

7 rows in set (0.00 sec)

linux-node2 slave端查看数据是否同步

mysql> select * from test.temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

|  5 | eee   |

|  7 | ggg   |

+----+-------+

5 rows in set (0.00 sec)

 发现因为linux-node2的master端已经挂了,数据不能同步了

数据访问是否正常

登录到mycat服务器上执行如下命令:

mysql> select * from temp2;

+----+-------+

| id | nname |

+----+-------+

|  1 | bbb   |

|  2 | ddd   |

|  4 | fff   |

|  5 | eee   |

|  7 | ggg   |

|  8 | mmmm  |

| 10 | nnnn  |

+----+-------+

7 rows in set (0.00 sec)

执行多次发现结果一样,说明在一台master端挂掉的情况下,其连接的slave端也被剔除,因此数据完整性可以保证

故障汇总

第一次配置的时候maser端没有配置log-slave-updates,导致node3-slave上没有node2-master端的数据。
解释:
从库开启log-bin参数,如果直接往从库写数据,是可以记录log-bin日志的,但是从库通过I0线程读取主库二进制日志文件,然后通过SQL线程写入的数据,是不会记录binlog日志的。也就是说从库从主库上复制的数据,是不写入从库的binlog日志的。所以从库做为其他从库的主库时需要在配置文件中添加log-slave-updates参数。

解决办法:

[mysqld]

log-slave-updates


您可能感兴趣的文档:

--结束END--

本文标题: mycat学习01-- mycat我带你入门

本文链接: https://lsjlt.com/news/40977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mycat学习01-- mycat我带你入门
    请耐心读完整篇文章,过程中出现的错误点在文章结尾都有总结和解决办法。服务器架构安装MySQL创建mysql用户groupadd mysqluseradd -r -g mysql -s /bin/false ...
    99+
    2024-04-02
  • mycat自学整理入门
    因为51博客写作格式问题,以后文档都以有道文档连接为主,已整理到有道云笔记,目前笔记有云计算运维大数据运维,应用运维,DBA,测试,小白想学的可以加我qq:936172842,,请注明51学友,无备注一律不...
    99+
    2024-04-02
  • 一篇文章带你学习Mybatis-Plus(新手入门)
    目录Mybatis-Plus1.快速入门地址:安装 | MyBatis-Plus (baomidou.com)2.创建数据库mybatis-plus3.创建springboot项目,...
    99+
    2024-04-02
  • 我的学习经历——Linux系统入门教程
    我想把最近学习Linux的经验和过程分析出来,当时是在上大三,是学生一枚,以前对开源也没有什么特殊的认识,只觉得很高深,不明觉厉的东西,在当时因为学校要参加职业技能大赛,其中有一团体性质的比赛,几个同学组成一个团队,比如几个同学负责基础网络...
    99+
    2023-06-05
  • Python基础学习教程_Python学习路线_我是Python小白,怎么入门Python
    Python基础学习教程_Python学习路线_我是Python小白,怎么入门Python人生苦短,我用Python!!!短短几个字,现在在各大编程学习类平台随处可见,短短几个字,足以见Python今日的地位!为什么Python总被提起,为...
    99+
    2023-06-02
  • Linux快速入门打开你的学习之道
    相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢?首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣,有的人是因为Linux比较好找工作,兴趣...
    99+
    2023-06-05
  • 一篇文章带你深入学习Python函数
    目录函数的特性:函数是对象:函数可以删除:总结函数的特性: 函数是对象函数可以删除函数名字和函数本身完全是分开的函数因为是对象,可以结合数据结构使用函数因为是对象,可以作为函数参数函...
    99+
    2024-04-02
  • python入门学习之自带help功能初步使用示例
    目录python help使用moduleskeywordssymbolspython help使用 C:\Users\wusong>python Python 3.8.2r...
    99+
    2023-03-24
    python自带help功能 python help
  • 深入浅出带你学习IIS中间件常见漏洞
    前言 在渗透过程中我们经常会思考如何去进行渗透,假如给了我们一个有很多中间件的网站我们要如何进行渗透呢?于是本人准备写一些包含常见中间件漏洞攻击的总结,希望可以帮到大家在面临不同渗透环境时会有渗透思路...
    99+
    2023-09-13
    学习 中间件 php
  • Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。要写出 Pythonic(优雅的、地道的、整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀的源代码值得阅读,比如:requests...
    99+
    2023-06-02
  • python学习VSCode使用技巧带你进入高效开发模式
    目录1. 查看日志2. 打开VSCode的配置文件settings.json3. 查看连接远端时的日志4. VSCode背景配置为豆沙绿5. 设置远端默认安装的插件6. 把本地的指定...
    99+
    2024-04-02
  • 【Spring(十一)】万字带你深入学习面向切面编程AOP
    文章目录 前言AOP简介AOP入门案例AOP工作流程AOP切入点表达式AOP通知类型AOP通知获取数据总结 前言   今天我们来学习AOP,在最初我们学习Spring时说过Spring...
    99+
    2023-09-02
    spring 学习 java
  • 为什么要学HTML5大前端?这套教程免费带你入门
    互联网的崛起,让这个世界重新被认知,5G、人工智能、大数据分析、云计算等。凭借先进的机器学习、数据处理技术,人类正在以全新的维度在平行时空里思考,这一切最终都将在终端中实现。HTML5作为万维网的核心语言标准,赋予了所有终端前所未有的兼容性...
    99+
    2023-06-03
  • 想学习ASP、大数据、Linux?这些教程将助你成功入门!
    随着信息技术的不断发展和应用,越来越多的人开始关注和学习ASP、大数据和Linux技术。这些技术在各个行业和领域都有着广泛的应用,而对于初学者来说,如何入门学习这些技术是一个重要的问题。本文将为大家介绍一些优秀的ASP、大数据和Linux...
    99+
    2023-11-07
    大数据 教程 linux
  • Node.js Promises 学习路线图:从入门到高手,你的成长路径
    1. 入门 Promises 是一个 JavaScript 对象,表示一个异步操作的状态,可以是成功或失败。Promises 可以被用来处理异步操作,例如网络请求、文件读取、数据库查询等。 要使用 Promises,首先需要创建一个 P...
    99+
    2024-02-13
    Node.js Promises 异步编程 JavaScript
  • 想学习Java和Linux?这些重定向技巧能帮助你更快入门!
    Java和Linux是现在非常热门的技术,它们都在不同的领域中被广泛使用。学习它们不仅能让你在工作中更加得心应手,还能够提高自己的技术水平。在学习Java和Linux的过程中,重定向技巧是非常重要的一部分。在本文中,我们将会介绍一些重定向...
    99+
    2023-06-04
    linux 教程 重定向
  • 从零开始学习 go npm git 教程:这个指南将帮助你快速入门!
    作为一名程序员,学习新技能是必不可少的。在这个不断发展的技术世界中,Go、npm和Git是三个非常重要的工具。本文将带你从零开始学习这三个工具的入门教程,通过本文的指导,相信你能够轻松掌握这三个工具的使用方法。 一、Go语言 Go语言是由...
    99+
    2023-10-16
    npm git 教程
  • 零基础学习 Go Path 打包:从入门到精通,你需要知道的一切!
    Go语言是一门高效、简洁、安全的编程语言,越来越多的人开始学习和使用它。在使用Go语言时,我们经常需要打包和引用各种第三方库和模块。而Go Path就是用来管理这些库和模块的工具。在本文中,我们将学习如何从零基础开始学习Go Path打包,...
    99+
    2023-08-24
    path 教程 打包
  • 你需要知道的PHP文件框架学习笔记:入门指南和最佳实践
    PHP是一种强大的开源编程语言,被广泛应用于Web开发。PHP文件框架是一种基于PHP的Web应用程序框架,它提供了一种结构化的方法来构建Web应用程序。这篇文章将介绍PHP文件框架的学习笔记,包括入门指南和最佳实践。 入门指南 选择一个框...
    99+
    2023-10-23
    文件 框架 学习笔记
  • 从入门到精通,这份 PHP 数组学习笔记教程能让你轻松掌握!
    作为一门流行的编程语言,PHP 在 Web 开发中扮演着重要的角色。在 PHP 中,数组是一种非常重要的数据类型,经常被用于存储和操作数据。本文将深入讲解 PHP 数组的相关知识,从入门到精通。 一、什么是 PHP 数组? PHP 数组是...
    99+
    2023-08-07
    数组 学习笔记 教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作