1. initServerConfig 初始化服务配置

总结:你能想到的一些基础配置都在这里实现
#define C_OK                    0
#define C_ERR                   -1/* Static server configuration */
#define CONFIG_DEFAULT_DYNAMIC_HZ 1             /* Adapt hz to # of clients.*/
#define CONFIG_DEFAULT_HZ        10             /* Time interrupt calls/sec. */
#define CONFIG_MIN_HZ            1
#define CONFIG_MAX_HZ            500
#define MAX_CLIENTS_PER_CLOCK_TICK 200          /* HZ is adapted based on that. */
#define CONFIG_DEFAULT_SERVER_PORT        6379  /* TCP port. */
#define CONFIG_DEFAULT_TCP_BACKLOG       511    /* TCP listen backlog. */
#define CONFIG_DEFAULT_CLIENT_TIMEOUT       0   /* Default client timeout: infinite */
#define CONFIG_DEFAULT_DBNUM     16
#define CONFIG_MAX_LINE    1024
#define CRON_DBS_PER_CALL 16
#define NET_MAX_WRITES_PER_EVENT (1024*64)
#define PROTO_SHARED_SELECT_CMDS 10
#define OBJ_SHARED_INTEGERS 10000
#define OBJ_SHARED_BULKHDR_LEN 32
#define LOG_MAX_LEN    1024 /* Default maximum length of syslog messages.*/
#define AOF_REWRITE_PERC  100
#define AOF_REWRITE_MIN_SIZE (64*1024*1024)
#define AOF_REWRITE_ITEMS_PER_CMD 64
#define AOF_READ_DIFF_INTERVAL_BYTES (1024*10)
#define CONFIG_DEFAULT_SLOWLOG_LOG_SLOWER_THAN 10000
#define CONFIG_DEFAULT_SLOWLOG_MAX_LEN 128
#define CONFIG_DEFAULT_MAX_CLIENTS 10000
#define CONFIG_AUTHPASS_MAX_LEN 512
#define CONFIG_DEFAULT_SLAVE_PRIORITY 100
#define CONFIG_DEFAULT_REPL_TIMEOUT 60
#define CONFIG_DEFAULT_REPL_PING_SLAVE_PERIOD 10
#define CONFIG_RUN_ID_SIZE 40
#define RDB_EOF_MARK_SIZE 40
#define CONFIG_DEFAULT_REPL_BACKLOG_SIZE (1024*1024)    /* 1mb */
#define CONFIG_DEFAULT_REPL_BACKLOG_TIME_LIMIT (60*60)  /* 1 hour */
#define CONFIG_REPL_BACKLOG_MIN_SIZE (1024*16)          /* 16k */
#define CONFIG_BGSAVE_RETRY_DELAY 5 /* Wait a few secs before trying again. */
#define CONFIG_DEFAULT_PID_FILE "/var/run/redis.pid"
#define CONFIG_DEFAULT_SYSLOG_IDENT "redis"
#define CONFIG_DEFAULT_CLUSTER_CONFIG_FILE "nodes.conf"
#define CONFIG_DEFAULT_CLUSTER_ANNOUNCE_IP NULL         /* Auto detect. */
#define CONFIG_DEFAULT_CLUSTER_ANNOUNCE_PORT 0          /* Use server.port */
#define CONFIG_DEFAULT_CLUSTER_ANNOUNCE_BUS_PORT 0      /* Use +10000 offset. */
#define CONFIG_DEFAULT_DAEMONIZE 0
#define CONFIG_DEFAULT_UNIX_SOCKET_PERM 0
#define CONFIG_DEFAULT_TCP_KEEPALIVE 300
#define CONFIG_DEFAULT_PROTECTED_MODE 1
#define CONFIG_DEFAULT_LOGFILE ""
#define CONFIG_DEFAULT_SYSLOG_ENABLED 0
#define CONFIG_DEFAULT_STOP_WRITES_ON_BGSAVE_ERROR 1
#define CONFIG_DEFAULT_RDB_COMPRESSION 1
#define CONFIG_DEFAULT_RDB_CHECKSUM 1
#define CONFIG_DEFAULT_RDB_FILENAME "dump.rdb"
#define CONFIG_DEFAULT_REPL_DISKLESS_SYNC 0
#define CONFIG_DEFAULT_REPL_DISKLESS_SYNC_DELAY 5
#define CONFIG_DEFAULT_SLAVE_SERVE_STALE_DATA 1
#define CONFIG_DEFAULT_SLAVE_READ_ONLY 1
#define CONFIG_DEFAULT_SLAVE_IGNORE_MAXMEMORY 1
#define CONFIG_DEFAULT_SLAVE_ANNOUNCE_IP NULL
#define CONFIG_DEFAULT_SLAVE_ANNOUNCE_PORT 0
#define CONFIG_DEFAULT_REPL_DISABLE_TCP_NODELAY 0
#define CONFIG_DEFAULT_MAXMEMORY 0
#define CONFIG_DEFAULT_MAXMEMORY_SAMPLES 5
#define CONFIG_DEFAULT_LFU_LOG_FACTOR 10
#define CONFIG_DEFAULT_LFU_DECAY_TIME 1
#define CONFIG_DEFAULT_AOF_FILENAME "appendonly.aof"
#define CONFIG_DEFAULT_AOF_NO_FSYNC_ON_REWRITE 0
#define CONFIG_DEFAULT_AOF_LOAD_TRUNCATED 1
#define CONFIG_DEFAULT_AOF_USE_RDB_PREAMBLE 1
#define CONFIG_DEFAULT_ACTIVE_REHASHING 1
#define CONFIG_DEFAULT_AOF_REWRITE_INCREMENTAL_FSYNC 1
#define CONFIG_DEFAULT_RDB_SAVE_INCREMENTAL_FSYNC 1
#define CONFIG_DEFAULT_MIN_SLAVES_TO_WRITE 0
#define CONFIG_DEFAULT_MIN_SLAVES_MAX_LAG 10
#define NET_IP_STR_LEN 46 /* INET6_ADDRSTRLEN is 46, but we need to be sure */
#define NET_PEER_ID_LEN (NET_IP_STR_LEN+32) /* Must be enough for ip:port */
#define CONFIG_BINDADDR_MAX 16
#define CONFIG_MIN_RESERVED_FDS 32
#define CONFIG_DEFAULT_LATENCY_MONITOR_THRESHOLD 0
#define CONFIG_DEFAULT_SLAVE_LAZY_FLUSH 0
#define CONFIG_DEFAULT_LAZYFREE_LAZY_EVICTION 0
#define CONFIG_DEFAULT_LAZYFREE_LAZY_EXPIRE 0
#define CONFIG_DEFAULT_LAZYFREE_LAZY_SERVER_DEL 0
#define CONFIG_DEFAULT_ALWAYS_SHOW_LOGO 0
#define CONFIG_DEFAULT_ACTIVE_DEFRAG 0
#define CONFIG_DEFAULT_DEFRAG_THRESHOLD_LOWER 10 /* don't defrag when fragmentation is below 10% */
#define CONFIG_DEFAULT_DEFRAG_THRESHOLD_UPPER 100 /* maximum defrag force at 100% fragmentation */
#define CONFIG_DEFAULT_DEFRAG_IGNORE_BYTES (100<<20) /* don't defrag if frag overhead is below 100mb */
#define CONFIG_DEFAULT_DEFRAG_CYCLE_MIN 5 /* 5% CPU min (at lower threshold) */
#define CONFIG_DEFAULT_DEFRAG_CYCLE_MAX 75 /* 75% CPU max (at upper threshold) */
#define CONFIG_DEFAULT_DEFRAG_MAX_SCAN_FIELDS 1000 /* keys with more than 1000 fields will be processed separately */
#define CONFIG_DEFAULT_PROTO_MAX_BULK_LEN (512ll*1024*1024) /* Bulk request max size */#define ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP 20 /* Loopkups per loop. */
#define ACTIVE_EXPIRE_CYCLE_FAST_DURATION 1000 /* Microseconds */
#define ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC 25 /* CPU max % for keys collection */
#define ACTIVE_EXPIRE_CYCLE_SLOW 0
#define ACTIVE_EXPIRE_CYCLE_FAST 1/* Instantaneous metrics tracking. */
#define STATS_METRIC_SAMPLES 16     /* Number of samples per metric. */
#define STATS_METRIC_COMMAND 0      /* Number of commands executed. */
#define STATS_METRIC_NET_INPUT 1    /* Bytes read to network .*/
#define STATS_METRIC_NET_OUTPUT 2   /* Bytes written to network. */
#define STATS_METRIC_COUNT 3void initServerConfig(void) {int j;pthread_mutex_init(&server.next_client_id_mutex,NULL);pthread_mutex_init(&server.lruclock_mutex,NULL);pthread_mutex_init(&server.unixtime_mutex,NULL);updateCachedTime();getRandomHexChars(server.runid,CONFIG_RUN_ID_SIZE);server.runid[CONFIG_RUN_ID_SIZE] = '\0';changeReplicationId();clearReplicationId2();server.timezone = timezone; /* Initialized by tzset(). */server.configfile = NULL;server.executable = NULL;server.config_hz = CONFIG_DEFAULT_HZ;server.dynamic_hz = CONFIG_DEFAULT_DYNAMIC_HZ;server.arch_bits = (sizeof(long) == 8) ? 64 : 32;server.port = CONFIG_DEFAULT_SERVER_PORT;server.tcp_backlog = CONFIG_DEFAULT_TCP_BACKLOG;server.bindaddr_count = 0;server.unixsocket = NULL;server.unixsocketperm = CONFIG_DEFAULT_UNIX_SOCKET_PERM;server.ipfd_count = 0;server.sofd = -1;server.protected_mode = CONFIG_DEFAULT_PROTECTED_MODE;server.dbnum = CONFIG_DEFAULT_DBNUM;server.verbosity = CONFIG_DEFAULT_VERBOSITY;server.maxidletime = CONFIG_DEFAULT_CLIENT_TIMEOUT;server.tcpkeepalive = CONFIG_DEFAULT_TCP_KEEPALIVE;server.active_expire_enabled = 1;server.active_defrag_enabled = CONFIG_DEFAULT_ACTIVE_DEFRAG;server.active_defrag_ignore_bytes = CONFIG_DEFAULT_DEFRAG_IGNORE_BYTES;server.active_defrag_threshold_lower = CONFIG_DEFAULT_DEFRAG_THRESHOLD_LOWER;server.active_defrag_threshold_upper = CONFIG_DEFAULT_DEFRAG_THRESHOLD_UPPER;server.active_defrag_cycle_min = CONFIG_DEFAULT_DEFRAG_CYCLE_MIN;server.active_defrag_cycle_max = CONFIG_DEFAULT_DEFRAG_CYCLE_MAX;server.active_defrag_max_scan_fields = CONFIG_DEFAULT_DEFRAG_MAX_SCAN_FIELDS;server.proto_max_bulk_len = CONFIG_DEFAULT_PROTO_MAX_BULK_LEN;server.client_max_querybuf_len = PROTO_MAX_QUERYBUF_LEN;server.saveparams = NULL;server.loading = 0;server.logfile = zstrdup(CONFIG_DEFAULT_LOGFILE);server.syslog_enabled = CONFIG_DEFAULT_SYSLOG_ENABLED;server.syslog_ident = zstrdup(CONFIG_DEFAULT_SYSLOG_IDENT);server.syslog_facility = LOG_LOCAL0;server.daemonize = CONFIG_DEFAULT_DAEMONIZE;server.supervised = 0;server.supervised_mode = SUPERVISED_NONE;server.aof_state = AOF_OFF;server.aof_fsync = CONFIG_DEFAULT_AOF_FSYNC;server.aof_no_fsync_on_rewrite = CONFIG_DEFAULT_AOF_NO_FSYNC_ON_REWRITE;server.aof_rewrite_perc = AOF_REWRITE_PERC;server.aof_rewrite_min_size = AOF_REWRITE_MIN_SIZE;server.aof_rewrite_base_size = 0;server.aof_rewrite_scheduled = 0;server.aof_last_fsync = time(NULL);server.aof_rewrite_time_last = -1;server.aof_rewrite_time_start = -1;server.aof_lastbgrewrite_status = C_OK;server.aof_delayed_fsync = 0;server.aof_fd = -1;server.aof_selected_db = -1; /* Make sure the first time will not match */server.aof_flush_postponed_start = 0;server.aof_rewrite_incremental_fsync = CONFIG_DEFAULT_AOF_REWRITE_INCREMENTAL_FSYNC;server.rdb_save_incremental_fsync = CONFIG_DEFAULT_RDB_SAVE_INCREMENTAL_FSYNC;server.aof_load_truncated = CONFIG_DEFAULT_AOF_LOAD_TRUNCATED;server.aof_use_rdb_preamble = CONFIG_DEFAULT_AOF_USE_RDB_PREAMBLE;server.pidfile = NULL;server.rdb_filename = zstrdup(CONFIG_DEFAULT_RDB_FILENAME);server.aof_filename = zstrdup(CONFIG_DEFAULT_AOF_FILENAME);server.requirepass = NULL;server.rdb_compression = CONFIG_DEFAULT_RDB_COMPRESSION;server.rdb_checksum = CONFIG_DEFAULT_RDB_CHECKSUM;server.stop_writes_on_bgsave_err = CONFIG_DEFAULT_STOP_WRITES_ON_BGSAVE_ERROR;server.activerehashing = CONFIG_DEFAULT_ACTIVE_REHASHING;server.active_defrag_running = 0;server.notify_keyspace_events = 0;server.maxclients = CONFIG_DEFAULT_MAX_CLIENTS;server.blocked_clients = 0;memset(server.blocked_clients_by_type,0,sizeof(server.blocked_clients_by_type));server.maxmemory = CONFIG_DEFAULT_MAXMEMORY;server.maxmemory_policy = CONFIG_DEFAULT_MAXMEMORY_POLICY;server.maxmemory_samples = CONFIG_DEFAULT_MAXMEMORY_SAMPLES;server.lfu_log_factor = CONFIG_DEFAULT_LFU_LOG_FACTOR;server.lfu_decay_time = CONFIG_DEFAULT_LFU_DECAY_TIME;server.hash_max_ziplist_entries = OBJ_HASH_MAX_ZIPLIST_ENTRIES;server.hash_max_ziplist_value = OBJ_HASH_MAX_ZIPLIST_VALUE;server.list_max_ziplist_size = OBJ_LIST_MAX_ZIPLIST_SIZE;server.list_compress_depth = OBJ_LIST_COMPRESS_DEPTH;server.set_max_intset_entries = OBJ_SET_MAX_INTSET_ENTRIES;server.zset_max_ziplist_entries = OBJ_ZSET_MAX_ZIPLIST_ENTRIES;server.zset_max_ziplist_value = OBJ_ZSET_MAX_ZIPLIST_VALUE;server.hll_sparse_max_bytes = CONFIG_DEFAULT_HLL_SPARSE_MAX_BYTES;server.stream_node_max_bytes = OBJ_STREAM_NODE_MAX_BYTES;server.stream_node_max_entries = OBJ_STREAM_NODE_MAX_ENTRIES;server.shutdown_asap = 0;server.cluster_enabled = 0;server.cluster_node_timeout = CLUSTER_DEFAULT_NODE_TIMEOUT;server.cluster_migration_barrier = CLUSTER_DEFAULT_MIGRATION_BARRIER;server.cluster_slave_validity_factor = CLUSTER_DEFAULT_SLAVE_VALIDITY;server.cluster_require_full_coverage = CLUSTER_DEFAULT_REQUIRE_FULL_COVERAGE;server.cluster_slave_no_failover = CLUSTER_DEFAULT_SLAVE_NO_FAILOVER;server.cluster_configfile = zstrdup(CONFIG_DEFAULT_CLUSTER_CONFIG_FILE);server.cluster_announce_ip = CONFIG_DEFAULT_CLUSTER_ANNOUNCE_IP;server.cluster_announce_port = CONFIG_DEFAULT_CLUSTER_ANNOUNCE_PORT;server.cluster_announce_bus_port = CONFIG_DEFAULT_CLUSTER_ANNOUNCE_BUS_PORT;server.cluster_module_flags = CLUSTER_MODULE_FLAG_NONE;server.migrate_cached_sockets = dictCreate(&migrateCacheDictType,NULL);server.next_client_id = 1; /* Client IDs, start from 1 .*/server.loading_process_events_interval_bytes = (1024*1024*2);server.lazyfree_lazy_eviction = CONFIG_DEFAULT_LAZYFREE_LAZY_EVICTION;server.lazyfree_lazy_expire = CONFIG_DEFAULT_LAZYFREE_LAZY_EXPIRE;server.lazyfree_lazy_server_del = CONFIG_DEFAULT_LAZYFREE_LAZY_SERVER_DEL;server.always_show_logo = CONFIG_DEFAULT_ALWAYS_SHOW_LOGO;server.lua_time_limit = LUA_SCRIPT_TIME_LIMIT;unsigned int lruclock = getLRUClock();atomicSet(server.lruclock,lruclock);resetServerSaveParams();appendServerSaveParams(60*60,1);  /* save after 1 hour and 1 change */appendServerSaveParams(300,100);  /* save after 5 minutes and 100 changes */appendServerSaveParams(60,10000); /* save after 1 minute and 10000 changes *//* Replication related */server.masterauth = NULL;server.masterhost = NULL;server.masterport = 6379;server.master = NULL;server.cached_master = NULL;server.master_initial_offset = -1;server.repl_state = REPL_STATE_NONE;server.repl_syncio_timeout = CONFIG_REPL_SYNCIO_TIMEOUT;server.repl_serve_stale_data = CONFIG_DEFAULT_SLAVE_SERVE_STALE_DATA;server.repl_slave_ro = CONFIG_DEFAULT_SLAVE_READ_ONLY;server.repl_slave_ignore_maxmemory = CONFIG_DEFAULT_SLAVE_IGNORE_MAXMEMORY;server.repl_slave_lazy_flush = CONFIG_DEFAULT_SLAVE_LAZY_FLUSH;server.repl_down_since = 0; /* Never connected, repl is down since EVER. */server.repl_disable_tcp_nodelay = CONFIG_DEFAULT_REPL_DISABLE_TCP_NODELAY;server.repl_diskless_sync = CONFIG_DEFAULT_REPL_DISKLESS_SYNC;server.repl_diskless_sync_delay = CONFIG_DEFAULT_REPL_DISKLESS_SYNC_DELAY;server.repl_ping_slave_period = CONFIG_DEFAULT_REPL_PING_SLAVE_PERIOD;server.repl_timeout = CONFIG_DEFAULT_REPL_TIMEOUT;server.repl_min_slaves_to_write = CONFIG_DEFAULT_MIN_SLAVES_TO_WRITE;server.repl_min_slaves_max_lag = CONFIG_DEFAULT_MIN_SLAVES_MAX_LAG;server.slave_priority = CONFIG_DEFAULT_SLAVE_PRIORITY;server.slave_announce_ip = CONFIG_DEFAULT_SLAVE_ANNOUNCE_IP;server.slave_announce_port = CONFIG_DEFAULT_SLAVE_ANNOUNCE_PORT;server.master_repl_offset = 0;/* Replication partial resync backlog */server.repl_backlog = NULL;server.repl_backlog_size = CONFIG_DEFAULT_REPL_BACKLOG_SIZE;server.repl_backlog_histlen = 0;server.repl_backlog_idx = 0;server.repl_backlog_off = 0;server.repl_backlog_time_limit = CONFIG_DEFAULT_REPL_BACKLOG_TIME_LIMIT;server.repl_no_slaves_since = time(NULL);/* Client output buffer limits */for (j = 0; j < CLIENT_TYPE_OBUF_COUNT; j++)server.client_obuf_limits[j] = clientBufferLimitsDefaults[j];/* Double constants initialization */R_Zero = 0.0;R_PosInf = 1.0/R_Zero;R_NegInf = -1.0/R_Zero;R_Nan = R_Zero/R_Zero;/* Command table -- we initiialize it here as it is part of the* initial configuration, since command names may be changed via* redis.conf using the rename-command directive. */server.commands = dictCreate(&commandTableDictType,NULL);server.orig_commands = dictCreate(&commandTableDictType,NULL);populateCommandTable();server.delCommand = lookupCommandByCString("del");server.multiCommand = lookupCommandByCString("multi");server.lpushCommand = lookupCommandByCString("lpush");server.lpopCommand = lookupCommandByCString("lpop");server.rpopCommand = lookupCommandByCString("rpop");server.zpopminCommand = lookupCommandByCString("zpopmin");server.zpopmaxCommand = lookupCommandByCString("zpopmax");server.sremCommand = lookupCommandByCString("srem");server.execCommand = lookupCommandByCString("exec");server.expireCommand = lookupCommandByCString("expire");server.pexpireCommand = lookupCommandByCString("pexpire");server.xclaimCommand = lookupCommandByCString("xclaim");server.xgroupCommand = lookupCommandByCString("xgroup");/* Slow log */server.slowlog_log_slower_than = CONFIG_DEFAULT_SLOWLOG_LOG_SLOWER_THAN;server.slowlog_max_len = CONFIG_DEFAULT_SLOWLOG_MAX_LEN;/* Latency monitor */server.latency_monitor_threshold = CONFIG_DEFAULT_LATENCY_MONITOR_THRESHOLD;/* Debugging */server.assert_failed = "<no assertion failed>";server.assert_file = "<no file>";server.assert_line = 0;server.bug_report_start = 0;server.watchdog_period = 0;/* By default we want scripts to be always replicated by effects* (single commands executed by the script), and not by sending the* script to the slave / AOF. This is the new way starting from* Redis 5. However it is possible to revert it via redis.conf. */server.lua_always_replicate_commands = 1;
}

(一)initServerConfig 初始化服务配置相关推荐

  1. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    转载自  微服务配置中心实战:Spring + MyBatis + Druid + Nacos 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid ...

  2. Linux下LAMP服务配置

    1. httpd-2.2.6.tar.gz  2. mysql-5.0.45-linux-i686-glibc23.tar.gz ( 这个版本是已编译好的压缩包,解压后稍做配置即可使用 )  3. p ...

  3. oracle 数据库基础配置,Oracle数据库网络服务配置基础、SQL编程详解-Oracle

    Oracle数据库是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.Oracle数据库的主要内容包括:表空间.用户权限.四种约束等基础概念,DDL ...

  4. mongodb服务配置

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 想在笔记本电脑上尝试 MongoDB?只需执行一个命令,你就会有一个轻量级的.独立的沙箱.完成后可以删除你所做的所有痕迹 ...

  5. Centos7.9最小化安装与初始化环境配置

    Centos7.9最小化安装与初始化环境配置 镜像源下载地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ (CentOS-7.9.20 ...

  6. 邮件服务配置(虚拟域虚拟用户)

    邮件服务配置(虚拟域&虚拟用户) 本文首发:https://www.somata.net/2019/virtual_mail_server_config_with_mariadb.html 现 ...

  7. 手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心

    SpringCloud Alibaba全集文章目录: 零.手把手教你搭建SpringCloudAlibaba项目 一.手把手教你搭建SpringCloud Alibaba之生产者与消费者 二.手把手教 ...

  8. Nacos之服务配置中心

    不管学习什么技术,官网永远是第一选择. 官网: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html Nacos服务配置比之前服务多了一个 ...

  9. 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写

    bootloader原理和开发-->kernel构建-->文件系统/根文件系统(filesystem/rootfs) APP 一.配置交叉编译环境(可参考嵌入式Linux移植与驱动开发co ...

最新文章

  1. Java Robot对象实现服务器屏幕远程监视
  2. java 链表 实现
  3. android里面这个动画不动了,android,AnimationDrawable 在ListView里不动的分析及解决办法。...
  4. codeforces 476B.Dreamoon and WiFi 解题报告
  5. SPOJ Problem 6219:Edit distance
  6. Java 基础知识总结(下)-王者笔记《收藏版》
  7. 毕马威_【毕马威快讯】毕马威发布个人信息保护法(草案)概览
  8. dubbo学习总结三 消费端
  9. MySQL知识树 集合操作
  10. mysql foundrows 并发_MySQL 中的 FOUND_ROWS() 函数
  11. linux下文件编码的查看与转换(转)
  12. 三台服务器的时间同步-Linux
  13. 【行空板教程】手写输入法
  14. 哈佛幸福课 24种人格力量测试
  15. 计算机兆的符号是什么意思,一兆等于多少kb流量?B,MB,KB,GB分别是什么意思?
  16. python 自动化发送邮件_Python自动化必备发送邮件报告脚本详解
  17. python3 工作上一些正则表达式
  18. js自定义打印网页内容
  19. 【4022】有些KPI的完成,╮(╯▽╰)╭
  20. 计算机软件系统的组成

热门文章

  1. php开发环境搭建套件,PHP开发环境套件与自定义安装方法介绍
  2. springboot项目创建全局唯一id生成器
  3. containerd导入本地镜像
  4. 网络服务器(硬件+软件)
  5. C语言 | 算法时间复杂度
  6. div 隐藏和显示方式
  7. 成功升级iPhone固件到2.1版
  8. unity模型黑色的问题
  9. 基于 Spring Boot + Vue 实现的可视化拖拽编辑的大屏项目
  10. ETH智能合约开发手把手入门教程|猿创征文