Mysql_Learning_Notes_mysql系统结构_2

三层体系结构,启动方式,日志类型及解析方法,mysql 升级

连接层

  • 通信协议处理\线程处理\账号认证(用户名和密码认证)\安全检查等
  • tcp/ip 连接 网络+端口号
    • mysql -h x.x.x.x -uroot -pxxxx -P3306

      • ERROR 1129 (HY000): Host 'mysql02' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
      • 错误原因:同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞(超过mysql数据库max_connection_errors的最大值)
      • 解决办法:mysqladmin flush-hosts
    • 尽可能不在命令里出现,可以使用mysql --loginpath 的方式登录.
      • mysql_config_editor set -G p3507 -S /tmp/mgr_mysql3507.sock -p
      • mysql --login-path=p3507
  • Unix socket
  • Name pipe (win 不常用)
  • share memory(win 不常用)

    登录认证注意:

    mysql -hlocalhost -uroot 认证的是localhost
    mysql -h127.1 -uroot 认证的是ip地址

    SQL层

  • 权限判断(鉴权)、查询解析、优化器&缓存、查询执行&返回等

    SQL解析没有软解析,每次都是硬解析,但硬解析损耗很小.
  • 为什么不用QC ? 单看查询缓存来说,是有积极作用,但从并发来说,如果实例在频繁的更新,会导致等待(锁),性能并不理想,所只适合不频繁更新的实例.5.7开始默认是关闭的,8.0直接禁了.
  • Select sql_no_cache count(*) from users; 通过'sql_no_cache'方式指定某一条SQL不走QC

储存层

数据目录结构:

请求日志\错误日志\二进制日志\中继日志
- 存储引擎(基于磁盘):Innodb、MyISAM、TokuDB 存储引擎API接口
- 存储引擎(基于内存):MEMORY/HEAP
- 存储引擎(基于网络):NDB(不推荐)
特别的文件:

  • auto.cnf 常于用存储server-uuid,当复制从库时需要注意,避免server-uuid重复(重复时需要删除此文件,再重新启动会产生新的).
  • relay-bin.000001 relay log(中继日志)主要用于存储主库传过来的binlog
  • mysql-bin.000001 binlog 主要存储实例修改日志
  • ib_logfile0 innodb redo log files
  • error.log 错误日志文件排错非常有用的文件
  • *.ibd 表数据文件,没有备份并drop表后,数据恢复时的关键文件

    配置文件

  • 读取位置顺序:
    • /etc/my.cnf
    • /etc/mysql/my.cnf
    • usr/local/mysql/etc/my.cnf
    • ~/.my.cnf
  • my.cnf 配置文件的主要部分
    • client 所有客户端及相关程序(如:mysql mysqladmin mysqldump等)
    • mysql 只管"mysql"客户端
    • mysqldump 只管"mysqldump"客户端
    • mysql_multi 多版本启动的配置
    • mysqld mysql服务的配置
  • 多实例配置在同一个文件:
    my.cnf
    [mysqld]
    通用参数
    [mysqld3306]
    3306端口实例的参数
    [mysqld3307]
    3306端口实例的参数

    启动方式

  • mysqld (5.7默认,格式:mysqld --defaults-file=/data/mysql3306/my3306.cnf&)
  • mysql_safe (5.6默认)
  • mysqld_multi (多版本启动)

日志类型及解析方法

日志文件 选项(配置文件中) 文件名/表名 应用程序
错误 log-error=error.log error.log n/a
常规 general_log/ general_log_file=general.log general.log或mysql.general表 pt-query-digest
慢速查询 slow_query_log=slow.log&long-query_time=x slow.log或mysql.slow_log表 mysqldumpslow或pt-query-digest
二进制 log-bin=/path/mybinlog&expire-logs-days mybinlog.000001 mysqlbinlog或pt-query-digest
审计 audit_log&audit_log_file audit.log N/A

mysql 升级

  • mysql_upgrade -f (小版本)
  • 大版本:
    • 全备并查阅官方升级文档
    • innodb脏页比例innodb_max_dirty_pages_pct设置为0
    • innodb_fast_shutdown=0
    • shutdown
    • mysql_upgrade -f
  • [root@db211_07:07:13 /data/57mysql/mysql3507]
    ''#tree
    .
    ├── data
    │ ├── 3506binlog
    │ ├── auto.cnf
    │ ├── backup-my.cnf
    │ ├── error.log
    │ ├── ib_buffer_pool
    │ ├── ib_logfile0
    │ ├── ib_logfile1
    │ ├── ib_logfile2
    │ ├── innodb_status.12888
    │ ├── master.info
    │ ├── mysql
    │ │ ├── columns_priv.frm
    │ │ ├── columns_priv.MYD
    │ │ ├── columns_priv.MYI
    │ │ ├── db.frm
    │ │ ├── db.MYD
    │ │ ├── db.MYI
    │ │ ├── db.opt
    │ │ ├── engine_cost.frm
    │ │ ├── engine_cost.ibd
    │ │ ├── event.frm
    │ │ ├── event.MYD
    │ │ ├── event.MYI
    │ │ ├── func.frm
    │ │ ├── func.MYD
    │ │ ├── func.MYI
    │ │ ├── general_log.CSM
    │ │ ├── general_log.CSV
    │ │ ├── general_log.frm
    │ │ ├── gtid_executed.frm
    │ │ ├── gtid_executed.ibd
    │ │ ├── help_category.frm
    │ │ ├── help_category.ibd
    │ │ ├── help_keyword.frm
    │ │ ├── help_keyword.ibd
    │ │ ├── help_relation.frm
    │ │ ├── help_relation.ibd
    │ │ ├── help_topic.frm
    │ │ ├── help_topic.ibd
    │ │ ├── innodb_index_stats.frm
    │ │ ├── innodb_index_stats.ibd
    │ │ ├── innodb_table_stats.frm
    │ │ ├── innodb_table_stats.ibd
    │ │ ├── ndb_binlog_index.frm
    │ │ ├── ndb_binlog_index.MYD
    │ │ ├── ndb_binlog_index.MYI
    │ │ ├── plugin.frm
    │ │ ├── plugin.ibd
    │ │ ├── proc.frm
    │ │ ├── proc.MYD
    │ │ ├── proc.MYI
    │ │ ├── procs_priv.frm
    │ │ ├── procs_priv.MYD
    │ │ ├── procs_priv.MYI
    │ │ ├── proxies_priv.frm
    │ │ ├── proxies_priv.MYD
    │ │ ├── proxies_priv.MYI
    │ │ ├── server_cost.frm
    │ │ ├── server_cost.ibd
    │ │ ├── servers.frm
    │ │ ├── servers.ibd
    │ │ ├── slave_master_info.frm
    │ │ ├── slave_master_info.ibd
    │ │ ├── slave_relay_log_info.frm
    │ │ ├── slave_relay_log_info.ibd
    │ │ ├── slave_worker_info.frm
    │ │ ├── slave_worker_info.ibd
    │ │ ├── slow_log.CSM
    │ │ ├── slow_log.CSV
    │ │ ├── slow_log.frm
    │ │ ├── tables_priv.frm
    │ │ ├── tables_priv.MYD
    │ │ ├── tables_priv.MYI
    │ │ ├── time_zone.frm
    │ │ ├── time_zone.ibd
    │ │ ├── time_zone_leap_second.frm
    │ │ ├── time_zone_leap_second.ibd
    │ │ ├── time_zone_name.frm
    │ │ ├── time_zone_name.ibd
    │ │ ├── time_zone_transition.frm
    │ │ ├── time_zone_transition.ibd
    │ │ ├── time_zone_transition_type.frm
    │ │ ├── time_zone_transition_type.ibd
    │ │ ├── user.frm
    │ │ ├── user.MYD
    │ │ └── user.MYI
    │ ├── performance_schema
    │ │ ├── accounts.frm
    │ │ ├── cond_instances.frm
    │ │ ├── db.opt
    │ │ ├── events_stages_current.frm
    │ │ ├── events_stages_history.frm
    │ │ ├── events_stages_history_long.frm
    │ │ ├── events_stages_summary_by_account_by_event_name.frm
    │ │ ├── events_stages_summary_by_host_by_event_name.frm
    │ │ ├── events_stages_summary_by_thread_by_event_name.frm
    │ │ ├── events_stages_summary_by_user_by_event_name.frm
    │ │ ├── events_stages_summary_global_by_event_name.frm
    │ │ ├── events_statements_current.frm
    │ │ ├── events_statements_history.frm
    │ │ ├── events_statements_history_long.frm
    │ │ ├── events_statements_summary_by_account_by_event_name.frm
    │ │ ├── events_statements_summary_by_digest.frm
    │ │ ├── events_statements_summary_by_host_by_event_name.frm
    │ │ ├── events_statements_summary_by_program.frm
    │ │ ├── events_statements_summary_by_thread_by_event_name.frm
    │ │ ├── events_statements_summary_by_user_by_event_name.frm
    │ │ ├── events_statements_summary_global_by_event_name.frm
    │ │ ├── events_transactions_current.frm
    │ │ ├── events_transactions_history.frm
    │ │ ├── events_transactions_history_long.frm
    │ │ ├── events_transactions_summary_by_account_by_event_name.frm
    │ │ ├── events_transactions_summary_by_host_by_event_name.frm
    │ │ ├── events_transactions_summary_by_thread_by_event_name.frm
    │ │ ├── events_transactions_summary_by_user_by_event_name.frm
    │ │ ├── events_transactions_summary_global_by_event_name.frm
    │ │ ├── events_waits_current.frm
    │ │ ├── events_waits_history.frm
    │ │ ├── events_waits_history_long.frm
    │ │ ├── events_waits_summary_by_account_by_event_name.frm
    │ │ ├── events_waits_summary_by_host_by_event_name.frm
    │ │ ├── events_waits_summary_by_instance.frm
    │ │ ├── events_waits_summary_by_thread_by_event_name.frm
    │ │ ├── events_waits_summary_by_user_by_event_name.frm
    │ │ ├── events_waits_summary_global_by_event_name.frm
    │ │ ├── file_instances.frm
    │ │ ├── file_summary_by_event_name.frm
    │ │ ├── file_summary_by_instance.frm
    │ │ ├── global_status.frm
    │ │ ├── global_variables.frm
    │ │ ├── host_cache.frm
    │ │ ├── hosts.frm
    │ │ ├── memory_summary_by_account_by_event_name.frm
    │ │ ├── memory_summary_by_host_by_event_name.frm
    │ │ ├── memory_summary_by_thread_by_event_name.frm
    │ │ ├── memory_summary_by_user_by_event_name.frm
    │ │ ├── memory_summary_global_by_event_name.frm
    │ │ ├── metadata_locks.frm
    │ │ ├── mutex_instances.frm
    │ │ ├── objects_summary_global_by_type.frm
    │ │ ├── performance_timers.frm
    │ │ ├── prepared_statements_instances.frm
    │ │ ├── replication_applier_configuration.frm
    │ │ ├── replication_applier_status_by_coordinator.frm
    │ │ ├── replication_applier_status_by_worker.frm
    │ │ ├── replication_applier_status.frm
    │ │ ├── replication_connection_configuration.frm
    │ │ ├── replication_connection_status.frm
    │ │ ├── replication_group_members.frm
    │ │ ├── replication_group_member_stats.frm
    │ │ ├── rwlock_instances.frm
    │ │ ├── session_account_connect_attrs.frm
    │ │ ├── session_connect_attrs.frm
    │ │ ├── session_status.frm
    │ │ ├── session_variables.frm
    │ │ ├── setup_actors.frm
    │ │ ├── setup_consumers.frm
    │ │ ├── setup_instruments.frm
    │ │ ├── setup_objects.frm
    │ │ ├── setup_timers.frm
    │ │ ├── socket_instances.frm
    │ │ ├── socket_summary_by_event_name.frm
    │ │ ├── socket_summary_by_instance.frm
    │ │ ├── status_by_account.frm
    │ │ ├── status_by_host.frm
    │ │ ├── status_by_thread.frm
    │ │ ├── status_by_user.frm
    │ │ ├── table_handles.frm
    │ │ ├── table_io_waits_summary_by_index_usage.frm
    │ │ ├── table_io_waits_summary_by_table.frm
    │ │ ├── table_lock_waits_summary_by_table.frm
    │ │ ├── threads.frm
    │ │ ├── users.frm
    │ │ ├── user_variables_by_thread.frm
    │ │ └── variables_by_thread.frm
    │ ├── relay-bin.000020
    │ ├── relay-bin.000021
    │ ├── relay-bin.000022
    │ ├── relay-bin.000023
    │ ├── relay-bin.index
    │ ├── relay-log.info
    │ ├── slow.log
    │ ├── sys
    │ │ ├── db.opt
    │ │ ├── host_summary_by_file_io.frm
    │ │ ├── host_summary_by_file_io_type.frm
    │ │ ├── host_summary_by_stages.frm
    │ │ ├── host_summary_by_statement_latency.frm
    │ │ ├── host_summary_by_statement_type.frm
    │ │ ├── host_summary.frm
    │ │ ├── innodb_buffer_stats_by_schema.frm
    │ │ ├── innodb_buffer_stats_by_table.frm
    │ │ ├── innodb_lock_waits.frm
    │ │ ├── io_by_thread_by_latency.frm
    │ │ ├── io_global_by_file_by_bytes.frm
    │ │ ├── io_global_by_file_by_latency.frm
    │ │ ├── io_global_by_wait_by_bytes.frm
    │ │ ├── io_global_by_wait_by_latency.frm
    │ │ ├── latest_file_io.frm
    │ │ ├── memory_by_host_by_current_bytes.frm
    │ │ ├── memory_by_thread_by_current_bytes.frm
    │ │ ├── memory_by_user_by_current_bytes.frm
    │ │ ├── memory_global_by_current_bytes.frm
    │ │ ├── memory_global_total.frm
    │ │ ├── metrics.frm
    │ │ ├── processlist.frm
    │ │ ├── ps_check_lost_instrumentation.frm
    │ │ ├── schema_auto_increment_columns.frm
    │ │ ├── schema_index_statistics.frm
    │ │ ├── schema_object_overview.frm
    │ │ ├── schema_redundant_indexes.frm
    │ │ ├── schema_table_lock_waits.frm
    │ │ ├── schema_table_statistics.frm
    │ │ ├── schema_table_statistics_with_buffer.frm
    │ │ ├── schema_tables_with_full_table_scans.frm
    │ │ ├── schema_unused_indexes.frm
    │ │ ├── session.frm
    │ │ ├── session_ssl_status.frm
    │ │ ├── statement_analysis.frm
    │ │ ├── statements_with_errors_or_warnings.frm
    │ │ ├── statements_with_full_table_scans.frm
    │ │ ├── statements_with_runtimes_in_95th_percentile.frm
    │ │ ├── statements_with_sorting.frm
    │ │ ├── statements_with_temp_tables.frm
    │ │ ├── sys_config.frm
    │ │ ├── sys_config.ibd
    │ │ ├── sys_config_insert_set_user.TRN
    │ │ ├── sys_config.TRG
    │ │ ├── sys_config_update_set_user.TRN
    │ │ ├── user_summary_by_file_io.frm
    │ │ ├── user_summary_by_file_io_type.frm
    │ │ ├── user_summary_by_stages.frm
    │ │ ├── user_summary_by_statement_latency.frm
    │ │ ├── user_summary_by_statement_type.frm
    │ │ ├── user_summary.frm
    │ │ ├── version.frm
    │ │ ├── wait_classes_global_by_avg_latency.frm
    │ │ ├── wait_classes_global_by_latency.frm
    │ │ ├── waits_by_host_by_latency.frm
    │ │ ├── waits_by_user_by_latency.frm
    │ │ ├── waits_global_by_latency.frm
    │ │ ├── x@0024host_summary_by_file_io.frm
    │ │ ├── x@0024host_summary_by_file_io_type.frm
    │ │ ├── x@0024host_summary_by_stages.frm
    │ │ ├── x@0024host_summary_by_statement_latency.frm
    │ │ ├── x@0024host_summary_by_statement_type.frm
    │ │ ├── x@0024host_summary.frm
    │ │ ├── x@0024innodb_buffer_stats_by_schema.frm
    │ │ ├── x@0024innodb_buffer_stats_by_table.frm
    │ │ ├── x@0024innodb_lock_waits.frm
    │ │ ├── x@0024io_by_thread_by_latency.frm
    │ │ ├── x@0024io_global_by_file_by_bytes.frm
    │ │ ├── x@0024io_global_by_file_by_latency.frm
    │ │ ├── x@0024io_global_by_wait_by_bytes.frm
    │ │ ├── x@0024io_global_by_wait_by_latency.frm
    │ │ ├── x@0024latest_file_io.frm
    │ │ ├── x@0024memory_by_host_by_current_bytes.frm
    │ │ ├── x@0024memory_by_thread_by_current_bytes.frm
    │ │ ├── x@0024memory_by_user_by_current_bytes.frm
    │ │ ├── x@0024memory_global_by_current_bytes.frm
    │ │ ├── x@0024memory_global_total.frm
    │ │ ├── x@0024processlist.frm
    │ │ ├── x@0024ps_digest_95th_percentile_by_avg_us.frm
    │ │ ├── x@0024ps_digest_avg_latency_distribution.frm
    │ │ ├── x@0024ps_schema_table_statistics_io.frm
    │ │ ├── x@0024schema_flattened_keys.frm
    │ │ ├── x@0024schema_index_statistics.frm
    │ │ ├── x@0024schema_table_lock_waits.frm
    │ │ ├── x@0024schema_table_statistics.frm
    │ │ ├── x@0024schema_table_statistics_with_buffer.frm
    │ │ ├── x@0024schema_tables_with_full_table_scans.frm
    │ │ ├── x@0024session.frm
    │ │ ├── x@0024statement_analysis.frm
    │ │ ├── x@0024statements_with_errors_or_warnings.frm
    │ │ ├── x@0024statements_with_full_table_scans.frm
    │ │ ├── x@0024statements_with_runtimes_in_95th_percentile.frm
    │ │ ├── x@0024statements_with_sorting.frm
    │ │ ├── x@0024statements_with_temp_tables.frm
    │ │ ├── x@0024user_summary_by_file_io.frm
    │ │ ├── x@0024user_summary_by_file_io_type.frm
    │ │ ├── x@0024user_summary_by_stages.frm
    │ │ ├── x@0024user_summary_by_statement_latency.frm
    │ │ ├── x@0024user_summary_by_statement_type.frm
    │ │ ├── x@0024user_summary.frm
    │ │ ├── x@0024wait_classes_global_by_avg_latency.frm
    │ │ ├── x@0024wait_classes_global_by_latency.frm
    │ │ ├── x@0024waits_by_host_by_latency.frm
    │ │ ├── x@0024waits_by_user_by_latency.frm
    │ │ └── x@0024waits_global_by_latency.frm
    │ ├── sysbench_testdata
    │ │ ├── db.opt
    │ │ ├── sbtest10.frm
    │ │ ├── sbtest10.ibd
    │ │ ├── sbtest1.frm
    │ │ ├── sbtest1.ibd
    │ │ ├── sbtest2.frm
    │ │ ├── sbtest2.ibd
    │ │ ├── sbtest3.frm
    │ │ ├── sbtest3.ibd
    │ │ ├── sbtest4.frm
    │ │ ├── sbtest4.ibd
    │ │ ├── sbtest5.frm
    │ │ ├── sbtest5.ibd
    │ │ ├── sbtest6.frm
    │ │ ├── sbtest6.ibd
    │ │ ├── sbtest7.frm
    │ │ ├── sbtest7.ibd
    │ │ ├── sbtest8.frm
    │ │ ├── sbtest8.ibd
    │ │ ├── sbtest9.frm
    │ │ └── sbtest9.ibd
    │ ├── wenyz
    │ │ ├── db.opt
    │ │ ├── t2.cfg
    │ │ ├── t2.frm
    │ │ └── t2.ibd
    │ ├── xtrabackup_binlog_info
    │ ├── xtrabackup_binlog_pos_innodb
    │ ├── xtrabackup_checkpoints
    │ ├── xtrabackup_info
    │ └── xtrabackup_logfile
    ├── logs
    │ ├── mysql-bin.000001
    │ ├── mysql-bin.000002
    │ ├── mysql-bin.000003
    │ ├── mysql-bin.000004
    │ ├── mysql-bin.000005
    │ ├── mysql-bin.000006
    │ ├── mysql-bin.000007
    │ ├── mysql-bin.000008
    │ └── mysql-bin.index
    ├── my3506.cnf
    └── tmp

Mysql_Learning_Notes_mysql系统结构_2的更多相关文章

  1. 深入解析Windows操作系统笔记——CH2系统结构

    2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...

  2. linux 文件系统结构及命令

    1.linux 文件系统结构 / 根目录 root |--mnt/ | |--sdcard/  挂载点 | |--usb0 | |--cdrom |--home | |--soft01 <- 用 ...

  3. Linux系统结构

        Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图 ...

  4. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...

  5. [转]WCDMA系统结构及关键技术

    本文转自:http://blog.csdn.net/lele52141/article/details/8498951 WCDMA系统结构: CN指核心网,UTRAN接入网,UE用户设备. UTRAN ...

  6. Linux 系统结构

    Linux的系统结构一般由四部分组成 内核 1)内核 操作系统的核心,具有最基本的功能:内存管理.进程管理.设备驱动管理.文件系统管理,网络管理 内核版本(kernel)查看的三种方法 cat /pr ...

  7. Linux 系统结构详解

    Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...

  8. Linux菜鸟学习笔记--Linux系统结构

      什么是Linux? Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.严格来讲,Linux这个词本身只表示Linux内核,但实际上人 ...

  9. 操作系统基本概念(内核态与用户态、操作系统结构)-by sixleaves

    内核态与用户态(为什么存在这种机制.程序应处于哪个状态.如何判断当前所处状态.哪些功能需要内核态.如何实现这种机制) 1.首先我们应该思考清楚为什么会有内核态和用户态?(为什么存在这种机制) 因为计算 ...

随机推荐

  1. Nginx在Linux上的安装和配置

    链接:http://www.cnblogs.com/wbyp/p/7737224.html

  2. 【BZOJ1029】建筑抢修(贪心)

    [BZOJ1029]建筑抢修(贪心) 题面 BZOJ 洛谷 题解 感觉自己已经不会贪心了. 很明显的一个想法是按照终止时间排序,然后能选则选. 但是这样子可能会因为前面选择了一个修理时间很长的,导致现 ...

  3. 【转】高手带你深入理解ucos任务堆栈

    首先,我们来理解一下两个概念: 1.堆栈就是一段连续的空间.用于存储数据的,在c计算机中有很多应用,比如发生中断时保存现场,c语言函数调用时保存现场和临时变量. 2.堆栈指针就是一个数据指针.有时候计 ...

  4. Android Studio多Module使用 aar 依赖包 丢包解决

    FAQ: AAR打包引用丢包问题, jar, aar, dependency 嵌套层级依赖的丢失 问: aar包中,如何包含第三方依赖库? 如果直接作为module 依赖是没有问题的,但是如果打包成a ...

  5. Luogu 1063 能量项链(动态规划)

    Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...

  6. jsp中的js中获取项目路径的方法

    在jsp中加上 <% String path = request.getContextPath(); String basePath = request.getScheme()+":/ ...

  7. Head内常用标签

    一.标签分类 1.1 自闭和标签 自闭和标签只有开头没有结尾,自动闭合: <meta> 标签 <link> 标签 1.2主动闭合标签 有开头也有结尾,是主动闭合的,称为主动闭合 ...

  8. 关于RESTful的理解

    如何更好的理解RESTful? (转自https://sanwen8.cn/p/54czrEO.html) 在测试开发中,我们经常接触到API,在调用API时候特别是第三方API时候,我们常常陷入以下 ...

  9. Java泛型底层源码解析-ArrayList,LinkedList,HashSet和HashMap

    声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包 ...

  10. 《剑指offer》面试题28:字符串的排列(牛客网版本) java

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输 ...