- 从零开始搭建Zabbix监控系统:安装配置全攻略,轻松掌握企业级监控利器
磐基Stack专业服务团队
Zabbixzabbixadb
#作者:stackofumbrella文章目录前提安装及配置开始安装设置mysql编码开始安装查询是否启动成功编译安装zabbix前提selinux关闭#vim/etc/selinux/configSELINUX=disabled#setenforce0关闭防火墙#systemctlstopfirewalldyum安装mysql检查系统是否安装其他版本的MYSQL#yumlistinstalled
- 练手代码之使用Python实现合并PDF文件
Wcowin
Pythonpythonpdf前端
如果你有合并PDF的需要,你会怎么办我们无所不能的程序员会选择写一个Python代码来实现(谁会这么无聊?是我),如果真的有PDF操作需要,我推荐你使用PDFExpert这个软件哈~话不多说直接上代码:importosimportPyPDF2fromtkinterimportTkfromtkinter.filedialogimportaskopenfilenamesdefcombine_pdfs(
- C++ 对txt文档进行编辑
阿波茨的鹅
C++语法
#includeusingnamespacestd;#includeFILE*stream;//定义一个文件类型的指针变量,以便接下来对文件操作errno_terr;//定义一个errno_t类型的变量,以便监视读取文件操作(open)是否成功(err=0/err=2)intmain(){//利用fopen(之前定义的FEIL类型的变量地址,|文件地址,|r/w)if((err=fopen_s(&
- Ubuntu,centos下源码安装cmake指定版本
你若盛开,清风自来!
ubuntucentoslinux
网址:Indexof/files/v3.23常规安装出错1.先把安装包cmake-3.12.4-Linux-x86_64.tar.gz复制到指定目录2.解压tar-zxvfcmake-3.12.4-Linux-x86_64.tar.gz3.进入解压之后的文件夹cdcmake-3.12.4-Linux-x86_64.tar.gz4.运行下面命令出错bash:./bootstrap:Nosuchfil
- 小程序中头像昵称填写
葱头的故事
小程序小程序
官方文档参考小程序用户头像昵称获取规则调整公告新的小程序版本不能通过wx.getUserProfile和wx.getUserInfo获取用户信息注意昵称填写,同时绑定了input和change事件(input是用户输入时触发,change是直接选择微信昵称时触发)getAvater(event){console.log(9,event);console.log('event',event.deta
- 端口映射/内网穿透方式及问题解决:warning: remote port forwarding failed for listen port
Davide~苏
Linux服务器运维内网穿透打洞端口映射
文章目录需求:A机器是内网机器,B机器是公网服务器,想要从公网,访问A机器的端口方式:端口映射,内网穿透,使用ssh打洞端口:遇到问题:命令执行成功,但是端口转发失败分析:目标服务器ssh配置问题解决:修改ssh配置需求:A机器是内网机器,B机器是公网服务器,想要从公网,访问A机器的端口方式:端口映射,内网穿透,使用ssh打洞端口:1:配置configvim~/.ssh/config输入Hostr
- javaweb文件上传:@MultipartConfig注解与Apache Commons FileUpload对比
yuren_xia
后端技术apachejavatomcat
在JavaWeb应用中处理文件上传时,可以选择使用@MultipartConfig注解或第三方库如ApacheCommonsFileUpload(通常简称为fileupload)。以下是两者的比较和建议:使用@MultipartConfig注解简介:@MultipartConfig是JavaServlet规范中用于处理multipart/form-data请求(通常是文件上传)的注解。它简化了在S
- 指定的服务已标记为删除
勤不了一点
windowswindows
同时也适合xampp下的apache、mysql等各个服务转发:https://www.iteye.com/blog/inexus-1608761想重新在windows里部署svn服务,所以第一步删除svn服务:管理员权限下运行cmd:“scdeletesvnserver”之后再部署svn的服务:“sccreatesvnserverbinpath="C:\ProgramFiles\Tortoise
- Linux查看磁盘命令df-h详解
小毛驴850
linux服务器运维
df-h是一个常用的Linux命令,用于查看文件系统的磁盘使用情况并以易于阅读的方式显示。以下是df-h命令的详细解释:-h:以人类可读的格式显示磁盘空间大小。例如,使用GB、MB、KB等单位代替字节。执行df-h命令后,将会显示如下输出:FilesystemSizeUsedAvailUse%Mountedon/dev/sda120G10G10G50%/tmpfs2.0G02.0G0%/dev/s
- 第五篇 普通人的编辑利器EmEditor——Vim的替代者(一)
weixin_34236497
开发工具
第五篇普通人的编辑利器EmEditor——Vim的替代者(一)这些天一直忙着整自己独立的博客,其他啥也没干。我就是这样,做一件事请就想不停地做下去,直到做好。现在polaris的博客基本搞定,原计划是接着完善它然后把之前的博文导进去(没有找到好的方法,只能一篇篇复制,调格式了),今天得知一位网友很“期待”文本编辑器序列的第五篇,于是决定停下其他的事情,钻心写这篇文章。1几点说明写这篇文章之前,po
- ike-scan
sweet poison
kalilinux常用工具翻译
用法ike-scan[options][hosts...]注意必须在命令行上指定目标主机,除非–file选项是给定,在这种情况下,将从指定文件读取目标。目标主机可以指定为IP地址或主机名。你也可以将目标指定为IPnetwork/bits(例如192.168.1.0/24),以指定所有主机在给定的网络中(包括网络和广播地址),或IPstartIPend(例如192.168.1.3-192.168.1
- 如何收集k8s pod的服务日志(rancher)
一方有点方
kubernetesrancher容器
一、环境情况说明当前环境是k8s+rancher+filebeat+es+kibana本文只讲解部署filebeat收集容器日志的过程、使用daemonset的方式部署filebeat,es+kibana+k8s已提前创建好的二、部署安装1、在已创建完成的k8s环境中,用kubectl先创建一个命名空间elk-log,新增一个filebeat目录,上传一下4个代码文件filebeat.daemon
- python dirname_os.path.dirname使用方法
演讲口才
pythondirname
importospath1=os.path.abspath(__file__)print(path1)#当前文件的绝对路径path2=os.path.dirname(os.path.abspath(__file__))print(path2)#当前文件的上一层目录的绝对路径path3=os.path.dirname(os.path.dirname(os.path.abspath(__file__)
- Deepseek开源周第四天:从 DualPipe 到 EPLB
deepseek开源
Deepseek开源周第四天:从DualPipe到EPLB前言上周deepseek宣布,将在本周陆续发布五个开源项目,这些库已经在生产环境中经过了记录、部署和实战测试。今天是deepseek开源周的第四天,deepseek发布了三个开源项目,分别是GitHub-deepseek-ai/DualPipeGitHub-deepseek-ai/eplbGitHub-deepseek-ai/profile
- 【Java】I/O 流篇 —— File 类与缓冲流
熬夜超级玩家
#Java基础java开发语言
目录File类File类构造方法常见成员方法判断与获取创建与删除获取并遍历缓冲流字节缓冲流构造方法代码示例原理字符缓冲流构造方法readLine()newLine()缓冲区File类File对象表示一个路径,可以是文件的路径,也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的绝对路径和相对路径的区别:绝对路径是指从根目录开始描述文件或目录位置的完整路径。无论你在系统中的哪个位置,使用绝对路
- DeepSeek超强搭档!这8款免费神器让你的效率翻倍
a小胡哦
Deepseekvscodegithub
作为AI领域的效率神器,DeepSeek凭借其强大的智能问答、文件解读和代码生成能力,已成为学习办公的必备工具。但如何让它发挥「1+1>2」的效果?我整理了8款免费软件,搭配DeepSeek让你的效率原地起飞!建议收藏⭐一、办公效率组合拳:告别加班,秒变职场达人WPSOffice推荐理由:免费+全功能办公套件,搭配DeepSeek的文档解析功能,可快速提取合同/报告重点,自动生成摘要。神级用法:用
- 【Linux基础】Linux下的C编程指南
Nebula嵌入式
#Linux基础linux嵌入式
目录一、前言二、Vim的使用2.1普通模式2.2插入模式2.3命令行模式2.4可视模式三、GCC编译器3.1预处理阶段3.2编译阶段3.3汇编阶段3.4链接阶段3.5静态库和动态库四、Gdb调试器五、总结一、前言在Linux环境下使用C语言进行编程是一项基础且重要的技能。本文将详细介绍在Linux下使用C语言编程的完整流程,包括代码编辑(使用vim)、编译(使用gcc)、调试(使用gdb)。对于大
- C语言综合案例:学生成绩管理系统
k要开心
c语言开发语言
C语言综合案例:学生成绩管理系统需求1.存储最多50名学生的信息(不使用结构体)2.每个学生包含:学号(字符数组)姓名(字符数组)3门课程成绩(一维数组)3.实现功能菜单:添加学生信息显示所有学生信息计算学生平均分查找最高分科目退出系统代码/*************************************************************************>FileN
- ansible.cfg配置文件
刘某的Cloud
Ansibleansiblelinux运维系统
#编辑默认配置文件vim/home/daboluo/ansible/ansible.cfg[defaults]collections_path=/home/daboluo/ansible/mycollection:/usr/share/ansible/collectionsask_pass=Falseinventory=/home/daboluo/ansible/inventoryremote_u
- 考证好像真的能改变一个人‼️
小猫椰椰
探潜数据分析数据分析职场和发展大数据
考完这些证书,我真的感觉自己变样了。BDA初级数据分析师、BDA中级数据分析师、CPBA商业分析师3个方向,文科生的我,原本没有听过这些证书,但进入职场才知道,多一项技能,多一份优势刚毕业的时候,我考了BDA初级数据分析师,那个时候就尝到了甜头,不仅让简历更漂亮了,自己也掌握了数据分析技能后来的几年,我又陆陆续续考了BDA中级数据分析师和CPBA商业分析师3个方向的证书,看着这些证真的有满满的成就
- Buildroot 添加自定义模块-内置文件到文件系统
ansondroider
Linuxbuildrootlinux
目录概述实现步骤1.创建包目录和文件结构2.配置Config.in3.定义cp_bin_files.mk4.添加源文件`install.sh``my.conf`5.配置与编译概述Buildroot是一个高度可定制和模块化的嵌入式Linux构建系统,适用于从简单到复杂的各种嵌入式项目.buildroot的源码中buildroot/package下面放着应用软件的配置文件,每个应用软件的配置文件有Co
- Python Cookbook-2.16 遍历目录树
我不会编程555
#Python学习python开发语言
任务需要检查一个“目录”,或者某个包含子目录的目录树,并根据某种模式迭代所有的文件(也可能包含子目录)。解决方案Python标准库模块os中的生成器(generator)os.walk对于这个任务来说完全够用了不过我们可以给它打扮打扮,将其封装为一个我们自己的函数:importos,fnmatchdefall_files(root,patterns='*',single_level=False,y
- 远程办公2.0:如何通过技术实现全球化团队协作?
远程办公2.0时代:从“被迫适应”到“主动进化”的未来工作革命——前沿技术与趋势预测全解析引言:一场不可逆的全球工作革命2020年的一场疫情,让全球职场人第一次大规模体验了远程办公的“生存模式”,而五年后的今天,远程办公已从“权宜之计”进化为“战略选择”。根据《2022年未来办公调研报告》,到2025年,全球53%的企业将永久开放远程办公选项。与此同时,技术的爆发式迭代正推动远程办公迈入2.0时代
- 清华大学:DeepSeek+DeepResearch 让科研像聊天一样简单(86 页 PDF)
伟贤AI之路
AI技术pdf
第一弹:《DeepSeek:从入门到精通(100页PDF)》第二弹:《DeepSeek如何赋能职场应用?从提示语技巧到多场景应用》第三弹:《普通人如何抓住DeepSeek红利?》现在是《DeepSeek+DeepResearch让科研像聊天一样简单》PDF阅读地址:https://tcnsnwj3d31i.feishu.cn/wiki/CkbJw0pm5i5uAEkiijrcGGHrnGhPDF中
- JAVA面试常见题_基础部分_Mysql调优
茂茂在长安
mysqlJAVAjava面试mysql
性能监控使用showprofile查询剖析工具,可以指定具体的type此工具默认是禁用的,可以通过服务器变量在绘画级别动态的修改setprofiling=1;当设置完成之后,在服务器上执行的所有语句,都会测量其耗费的时间和其他一些查询执行状态变更相关的数据。select*fromemp;在mysql的命令行模式下只能显示两位小数的时间,可以使用如下命令查看具体的执行时间showprofiles;执
- avue富文本编辑器如何保证上传图片正常
R-sz
java前端javascript
{label:"内容",prop:"content",component:'AvueUeditor',action:"/api/blade-resource/oss/endpoint/put-file",propsHttp:{res:"data",url:"link",},hide:true,viewDisplay:false,minRows:6,span:24,rules:[{required:
- Unity git 获取当前修改或者新增的文件列表
Term
unitygit游戏引擎
直接上代码usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.IO;usingSystem.Text.RegularExpressions;usingUnityEngine;publicclassGitFileStatusCheckerTools:MonoBehaviour{//获取Git变
- 掌握命名法:提升代码可读性的关键
我没想到原来他们都是一堆坏人
java
掌握命名法:提升代码可读性的关键命名规范的重要性命名规范是编程中的一个重要约定,它可以帮助开发者更清晰地理解代码的结构和意图。统一的命名规范可以减少代码的歧义,提高代码的可读性和可维护性。常用的命名法1.帕斯卡命名法/大驼峰命名法特点:每个单词的首字母都大写,单词之间没有分隔符。示例:CoreSize、UserProfile、HttpRequest。应用场景:通常用于类名、接口名、枚举类型等。2.
- C#识别图片数字
CallZhang210
c#
///选取图片按钮的代码/////////privatevoid选择图片_Click(objectsender,EventArgse){OpenFileDialogopenFileDialog=newOpenFileDialog();openFileDialog.Filter="JPGFiles(*.jpg)|*.jpg|PNGFiles(*.png)|*.png";openFileDialog.
- unity获取用户输入的信息
CallZhang210
unity
1.创建一个inputFile2.导入库3.创建一个text,把这个text作为映射,放到inputFile里面的onEndEdit选择text里面的text4.inputfilled里面contenttype改为decimalnumber5.从这个映射text中获得信息
- SQL的各种连接查询
xieke90
UNION ALLUNION外连接内连接JOIN
一、内连接
概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。
内连接(join 或者inner join )
SQL语法:
select * fron
- java编程思想--复用类
百合不是茶
java继承代理组合final类
复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书
一:组合语法:就是将对象的引用放到新类中即可
代码:
package com.wj.reuse;
/**
*
* @author Administrator 组
- [开源与生态系统]国产CPU的生态系统
comsci
cpu
计算机要从娃娃抓起...而孩子最喜欢玩游戏....
要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....
投入一些资金和资源,人力和政策,让游
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
商人shang
jvm内存
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
HotSpot虚拟机GC算法采用分代收
- 页面上调用 QQ
oloz
qq
<A href="tencent://message/?uin=707321921&Site=有事Q我&Menu=yes">
<img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a>
- 一些问题
文强chu
问题
1.eclipse 导出 doc 出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 .....
SQL:3.mysql * 必须得放前面 否则 select&nbs
- 生活没有安全感
小桔子
生活孤独安全感
圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明
- php 基础语法
aichenglong
php 基本语法
1 .1 php变量必须以$开头
<?php
$a=” b”;
echo
?>
1 .2 php基本数据库类型 Integer float/double Boolean string
1 .3 复合数据类型 数组array和对象 object
1 .4 特殊数据类型 null 资源类型(resource) $co
- mybatis tools 配置详解
AILIKES
mybatis
MyBatis Generator中文文档
MyBatis Generator中文文档地址:
http://generator.sturgeon.mopaas.com/
该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。
本文使用Markdown进行编辑,但是博客显示效
- 继承与多态的探讨
百合不是茶
JAVA面向对象 继承 对象
继承 extends 多态
继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:
在A类中定义属性和方法;
class A{
//定义属性
int age;
//定义方法
public void go
- JS的undefined与null的实例
bijian1013
JavaScriptJavaScript
<form name="theform" id="theform">
</form>
<script language="javascript">
var a
alert(typeof(b)); //这里提示undefined
if(theform.datas
- TDD实践(一)
bijian1013
java敏捷TDD
一.TDD概述
TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
- [Maven学习笔记十]Maven Profile与资源文件过滤器
bit1129
maven
什么是Maven Profile
Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息
Profile的激活机制
1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P
- 【Hive八】Hive用户自定义生成表函数(UDTF)
bit1129
hive
1. 什么是UDTF
UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集
2. 如何实现UDTF
继承org.apache.hadoop.hive.ql.udf.generic
- tfs restful api 加auth 2.0认计
ronin47
目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:
一是基于客户端的ip设置。这个比较容易实现。
二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。
现在重点介绍第二种方法实现思路。
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe
- jdk环境变量配置
byalias
javajdk
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:
1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe
2、安装jdk-7u79-windows-x64.exe
3、配置环境变量:右击"计算机"-->&quo
- 《代码大全》表驱动法-Table Driven Approach-2
bylijinnan
java
package com.ljn.base;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.uti
- SQL 数值四舍五入 小数点后保留2位
chicony
四舍五入
1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。
2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。
例如:
select cast(round(12.5,2) as numeric(5,2))  
- c++运算符重载
CrazyMizzz
C++
一、加+,减-,乘*,除/ 的运算符重载
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
在这里只写乘法的,加减除的写法类似
二、<<输出,>>输入的运算符重载
&nb
- hive DDL语法汇总
daizj
hive修改列DDL修改表
hive DDL语法汇总
1、对表重命名
hive> ALTER TABLE table_name RENAME TO new_table_name;
2、修改表备注
hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm
- jbox使用说明
dcj3sjt126com
Web
参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [
点击下载]
技术交流QQGroup:172543951 100521167
[2011-11-11] jBox v2.3 正式版
- [调整&修复] IE6下有iframe或页面有active、applet控件
- UISegmentedControl 开发笔记
dcj3sjt126com
// typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
// UISegmentedControlStylePlain, // large plain
&
- Slick生成表映射文件
ekian
scala
Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包
"com.typesafe.slick" %% "slick-codegen" % slickVersion
因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包
"com.typesa
- ES-TEST
gengzg
test
package com.MarkNum;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation
- 为何外键不再推荐使用
hugh.wang
mysqlDB
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。
在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
- 领域驱动设计
julyflame
VODAO设计模式DTOpo
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对
- 单例设计模式
hm4123660
javaSingleton单例设计模式懒汉式饿汉式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
&nb
- logback
zhb8015
loglogback
一、logback的介绍
Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class
- 整合Kafka到Spark Streaming——代码示例和挑战
Stark_Summer
sparkstormzookeeperPARALLELISMprocessing
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版
- spring-master-slave-commondao
王新春
DAOspringdataSourceslavemaster
互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。
为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数