高并发异步日志系统设计实战

news2026/3/18 10:14:02
异步日志系统的设计与实现日志系统是软件开发中不可或缺的组成部分用于记录程序运行时的关键信息。在高并发或高性能场景下同步日志系统可能成为性能瓶颈。异步日志系统通过解耦日志记录与写入操作显著提升系统吞吐量。异步日志的核心思想异步日志系统将日志写入操作放入独立线程或队列中处理主线程仅负责生成日志消息并提交到缓冲区。这种设计避免了主线程因等待I/O操作而阻塞尤其适用于高频日志场景。缓冲区设计环形缓冲区是异步日志系统的常见选择其高效的内存复用特性适合高吞吐场景。以下是一个简单的环形缓冲区实现template typename T, size_t N class RingBuffer { public: bool push(const T item) { size_t next (head_ 1) % N; if (next tail_) return false; buffer_[head_] item; head_ next; return true; } bool pop(T item) { if (tail_ head_) return false; item buffer_[tail_]; tail_ (tail_ 1) % N; return true; } private: T buffer_[N]; size_t head_ 0; size_t tail_ 0; };多生产者单消费者模型典型异步日志系统采用多生产者多个业务线程单消费者日志写入线程模型。以下示例展示如何使用条件变量实现线程安全队列class AsyncLogQueue { public: void push(const std::string log) { std::unique_lockstd::mutex lock(mutex_); queue_.push(log); cond_.notify_one(); } bool pop(std::string log) { std::unique_lockstd::mutex lock(mutex_); cond_.wait(lock, [this]{ return !queue_.empty(); }); log queue_.front(); queue_.pop(); return true; } private: std::queuestd::string queue_; std::mutex mutex_; std::condition_variable cond_; };批量写入优化频繁的磁盘I/O会降低系统性能。通过批量写入策略可以合并多次日志操作void LogWorker::run() { std::vectorstd::string batch; batch.reserve(BATCH_SIZE); while (running_) { std::string log; if (queue_.pop(log)) { batch.push_back(std::move(log)); if (batch.size() BATCH_SIZE) { writeToFile(batch); batch.clear(); } } else if (!batch.empty()) { writeToFile(batch); batch.clear(); } } }日志格式化处理异步日志系统通常需要支持多种日志级别和格式化选项enum LogLevel { DEBUG, INFO, WARNING, ERROR }; void AsyncLogger::log(LogLevel level, const std::string message) { auto now std::chrono::system_clock::now(); auto time std::chrono::system_clock::to_time_t(now); std::stringstream ss; ss std::put_time(std::localtime(time), %Y-%m-%d %H:%M:%S); ss [ levelToString(level) ] message; queue_.push(ss.str()); }性能考量异步日志系统的性能关键指标包括吞吐量单位 生活的快乐源于从容与豁达培养内心的宁静与力量在风雨中也能活得精彩与鲜活。有梦就去追无惧一切阻碍让心灵丰盈在每一次努力中领悟成长的意义与价值。大海可以波涛汹涌人生同样会有风雨但心中有梦想便能在潮起潮落中迎接更大的晴空。成功是无数次努力的积累无论过程多么艰辛心中的信念能引领我们走向辉煌的未来。每一天都是新的开始勇敢拥抱生活中的变化才能在自我成长中实现力量的飞跃与成功。https://blog.csdn.net/2601_95555600/article/details/159162549https://blog.csdn.net/2601_95543276/article/details/159162554https://blog.csdn.net/eo754ca9/article/details/159162561https://blog.csdn.net/q1pqf1wc/article/details/159162564https://blog.csdn.net/z7dxmzsg/article/details/159162562https://blog.csdn.net/ocq4ongh/article/details/159162567https://blog.csdn.net/v3w5z2sy/article/details/159162565https://blog.csdn.net/ii4z77ub/article/details/159162571https://blog.csdn.net/2601_95555595/article/details/159162572https://blog.csdn.net/cal7r69p/article/details/159162575https://blog.csdn.net/kkyepfol/article/details/159162580https://blog.csdn.net/umtd1u82/article/details/159162576https://blog.csdn.net/2601_95555623/article/details/159162583https://blog.csdn.net/bb5kbc0v/article/details/159162586https://blog.csdn.net/jlvljp9v/article/details/159162587https://blog.csdn.net/2601_95555586/article/details/159162589https://blog.csdn.net/vg4sixuv/article/details/159162597https://blog.csdn.net/wg685l80/article/details/159162601https://blog.csdn.net/dnrrmblf/article/details/159162604https://blog.csdn.net/2601_95543277/article/details/159162605https://blog.csdn.net/2601_95555610/article/details/159162606https://blog.csdn.net/fu7n5bhn/article/details/159162613https://blog.csdn.net/fzpsk8rc/article/details/159162611https://blog.csdn.net/lzmhfib6/article/details/159162610https://blog.csdn.net/oxpo8175/article/details/159162614https://blog.csdn.net/ubeej63x/article/details/159162616https://blog.csdn.net/qh91ndf7/article/details/159162620https://blog.csdn.net/2601_95555630/article/details/159162581https://blog.csdn.net/amqr6q2a/article/details/159162617https://blog.csdn.net/2601_95555611/article/details/159162618https://blog.csdn.net/hb7m8dfy/article/details/159162625https://blog.csdn.net/ry09iyny/article/details/159162600https://blog.csdn.net/v3r7ip8r/article/details/159162633https://blog.csdn.net/vi3v1700/article/details/159162634https://blog.csdn.net/lpwu9ryw/article/details/159162636https://blog.csdn.net/zftqbyr6/article/details/159162641https://blog.csdn.net/xtbvkifk/article/details/159162642https://blog.csdn.net/l8gqq4wp/article/details/159162645https://blog.csdn.net/reue9gbw/article/details/159162646https://blog.csdn.net/s4z3khzd/article/details/159162650https://blog.csdn.net/uheyc503/article/details/159162653https://blog.csdn.net/2601_95555605/article/details/159162657https://blog.csdn.net/ydm60n0q/article/details/159162658https://blog.csdn.net/2601_95543284/article/details/159162662https://blog.csdn.net/lzmhfib6/article/details/159162664https://blog.csdn.net/ilnnf1qd/article/details/159162675https://blog.csdn.net/2601_95555595/article/details/159162695https://blog.csdn.net/r93ch71s/article/details/159162696https://blog.csdn.net/2601_95555605/article/details/159162701https://blog.csdn.net/a5me20es/article/details/159162704https://blog.csdn.net/xtbvkifk/article/details/159162715https://blog.csdn.net/sxh3rurd/article/details/159162716https://blog.csdn.net/ec7gwuv6/article/details/159162725https://blog.csdn.net/uu7rthqa/article/details/159162726https://blog.csdn.net/rylvugvp/article/details/159162728https://blog.csdn.net/xyrh5e86/article/details/159162730https://blog.csdn.net/mpde9txo/article/details/159162739https://blog.csdn.net/2601_95555582/article/details/159162740https://blog.csdn.net/f5jgym9c/article/details/159162747https://blog.csdn.net/ljlvbke0/article/details/159162752https://blog.csdn.net/fp8voe84/article/details/159162754https://blog.csdn.net/2601_95555586/article/details/159162750https://blog.csdn.net/dxsldql3/article/details/159162757https://blog.csdn.net/ry09iyny/article/details/159162770https://blog.csdn.net/2601_95555574/article/details/159162771https://blog.csdn.net/ubeej63x/article/details/159162772https://blog.csdn.net/2601_95555630/article/details/159162774https://blog.csdn.net/baln593e/article/details/159162777https://blog.csdn.net/2601_95555600/article/details/159162778https://blog.csdn.net/gih8escb/article/details/159162779https://blog.csdn.net/2601_95555576/article/details/159162780https://blog.csdn.net/ydm60n0q/article/details/159162781https://blog.csdn.net/2601_95544430/article/details/159162782https://blog.csdn.net/2601_95543276/article/details/159162783https://blog.csdn.net/ptxc49di/article/details/159162785https://blog.csdn.net/dgunn7kj/article/details/159162787https://blog.csdn.net/pcrymbrq/article/details/159162786https://blog.csdn.net/l8gqq4wp/article/details/159162790https://blog.csdn.net/reue9gbw/article/details/159162791https://blog.csdn.net/z7dxmzsg/article/details/159162793https://blog.csdn.net/zlgt4odd/article/details/159162797https://blog.csdn.net/2601_95555577/article/details/159162796https://blog.csdn.net/q1pqf1wc/article/details/159162795https://blog.csdn.net/ilnnf1qd/article/details/159162799https://blog.csdn.net/fqlttpow/article/details/159162798https://blog.csdn.net/umtd1u82/article/details/159162800https://blog.csdn.net/kkyepfol/article/details/159162801https://blog.csdn.net/v3r7ip8r/article/details/159162804https://blog.csdn.net/s6mokpqf/article/details/159162806https://blog.csdn.net/2601_95555591/article/details/159162807https://blog.csdn.net/2601_95555611/article/details/159162792https://blog.csdn.net/jlvljp9v/article/details/159162808https://blog.csdn.net/fu7n5bhn/article/details/159162809https://blog.csdn.net/bb5kbc0v/article/details/159162812https://blog.csdn.net/gtym99fe/article/details/159162817https://blog.csdn.net/cal7r69p/article/details/159162815https://blog.csdn.net/oxpo8175/article/details/159162820https://blog.csdn.net/fzpsk8rc/article/details/159162819https://blog.csdn.net/2601_95555575/article/details/159162818https://blog.csdn.net/2601_95543269/article/details/159162822https://blog.csdn.net/2601_95555609/article/details/159162824https://blog.csdn.net/2601_95543277/article/details/159162827https://blog.csdn.net/n9a076ix/article/details/159162829https://blog.csdn.net/a67xnplu/article/details/159162831https://blog.csdn.net/2601_95555610/article/details/159162832https://blog.csdn.net/bakbjwcb/article/details/159162833https://blog.csdn.net/ii4z77ub/article/details/159162834https://blog.csdn.net/2601_95555587/article/details/159162840https://blog.csdn.net/gosjen3p/article/details/159162844https://blog.csdn.net/2601_95543284/article/details/159162836https://blog.csdn.net/i3avy142/article/details/159162845https://blog.csdn.net/2601_95555623/article/details/159162846https://blog.csdn.net/gkyq0ynj/article/details/159162849https://blog.csdn.net/2601_95543274/article/details/159162850https://blog.csdn.net/lpwu9ryw/article/details/159162852https://blog.csdn.net/s4z3khzd/article/details/159162853https://blog.csdn.net/qh91ndf7/article/details/159162858https://blog.csdn.net/2601_95555579/article/details/159162873https://blog.csdn.net/wg685l80/article/details/159162888https://blog.csdn.net/uheyc503/article/details/159162894https://blog.csdn.net/gosjen3p/article/details/159162898https://blog.csdn.net/2601_95555615/article/details/159162899https://blog.csdn.net/amqr6q2a/article/details/159162903https://blog.csdn.net/hb7m8dfy/article/details/159162907https://blog.csdn.net/2601_95555573/article/details/159162913https://blog.csdn.net/vg4sixuv/article/details/159162917https://blog.csdn.net/v3w5z2sy/article/details/159162919https://blog.csdn.net/bgu8qnzq/article/details/159162923https://blog.csdn.net/dnrrmblf/article/details/159162928https://blog.csdn.net/eo754ca9/article/details/159162929https://blog.csdn.net/2601_95555754/article/details/159163016https://blog.csdn.net/2601_95555748/article/details/159163017https://blog.csdn.net/jvi62nr6/article/details/159163018https://blog.csdn.net/ywt0zzwj/article/details/159163021https://blog.csdn.net/m0fye0kn/article/details/159163029https://blog.csdn.net/2601_95555799/article/details/159163033https://blog.csdn.net/kd94k8xh/article/details/159163035https://blog.csdn.net/jrj4swsm/article/details/159163037https://blog.csdn.net/sh1iiqns/article/details/159163038https://blog.csdn.net/ivwosn6b/article/details/159163039https://blog.csdn.net/r5v9xzma/article/details/159163040https://blog.csdn.net/jubdsyfy/article/details/159163042https://blog.csdn.net/jl4j1olz/article/details/159163044https://blog.csdn.net/h7mntms2/article/details/159163045https://blog.csdn.net/dyjyriem/article/details/159163052https://blog.csdn.net/cuqlk1z9/article/details/159163055https://blog.csdn.net/ti1niriy/article/details/159163058https://blog.csdn.net/w5av9bjt/article/details/159163059https://blog.csdn.net/2601_95555760/article/details/159163061https://blog.csdn.net/qtfe41ok/article/details/159163062https://blog.csdn.net/ijcajcqi/article/details/159163065https://blog.csdn.net/xzs16ffo/article/details/159163067https://blog.csdn.net/2601_95555753/article/details/159163073https://blog.csdn.net/j0z5pk8q/article/details/159163083https://blog.csdn.net/2601_95555775/article/details/159163086https://blog.csdn.net/jsgi4f2t/article/details/159163088https://blog.csdn.net/o4y65aeb/article/details/159163090https://blog.csdn.net/na50ew37/article/details/159163089https://blog.csdn.net/2601_95555748/article/details/159163091https://blog.csdn.net/axis11j2/article/details/159163093https://blog.csdn.net/2601_95555776/article/details/159163100https://blog.csdn.net/z3om9ffv/article/details/159163099https://blog.csdn.net/quo9bz4q/article/details/159163098https://blog.csdn.net/itdwzttu/article/details/159163103https://blog.csdn.net/2601_95555754/article/details/159163106https://blog.csdn.net/in8i5nbq/article/details/159163104https://blog.csdn.net/wacyvuo2/article/details/159163108https://blog.csdn.net/gyiy7ls9/article/details/159163102https://blog.csdn.net/oka5um24/article/details/159163109https://blog.csdn.net/vd0sb5ti/article/details/159163111https://blog.csdn.net/zw4ovwhj/article/details/159163082https://blog.csdn.net/mt7362r6/article/details/159163113https://blog.csdn.net/2601_95555793/article/details/159163116https://blog.csdn.net/qz6em0lc/article/details/159163119https://blog.csdn.net/2601_95555730/article/details/159163120https://blog.csdn.net/q59elce4/article/details/159163122https://blog.csdn.net/2601_95555774/article/details/159163124https://blog.csdn.net/wncnm1q3/article/details/159163125https://blog.csdn.net/ww8tgkcg/article/details/159163126https://blog.csdn.net/2601_95555791/article/details/159163127https://blog.csdn.net/jvi62nr6/article/details/159163131https://blog.csdn.net/2601_95555838/article/details/159163132https://blog.csdn.net/h4ke7iek/article/details/159163133https://blog.csdn.net/2601_95555786/article/details/159163134https://blog.csdn.net/2601_95555794/article/details/159163130https://blog.csdn.net/2601_95555772/article/details/159163137https://blog.csdn.net/jdxm6zy0/article/details/159163139https://blog.csdn.net/2601_95555789/article/details/159163138https://blog.csdn.net/atnsn53w/article/details/159163141https://blog.csdn.net/a21o3iaf/article/details/159163142https://blog.csdn.net/l2cllx9t/article/details/159163145https://blog.csdn.net/buff83ex/article/details/159163146https://blog.csdn.net/ikaf73t7/article/details/159163150https://blog.csdn.net/nyubjr0h/article/details/159163151https://blog.csdn.net/2601_95555806/article/details/159163153https://blog.csdn.net/fcbbory8/article/details/159163154https://blog.csdn.net/2601_95555821/article/details/159163152https://blog.csdn.net/m0fye0kn/article/details/159163156https://blog.csdn.net/jb9wc2pf/article/details/159163158https://blog.csdn.net/m7pvysil/article/details/159163157https://blog.csdn.net/nyi627j9/article/details/159163160https://blog.csdn.net/bqifbzk8/article/details/159163162https://blog.csdn.net/hvawwu05/article/details/159163164https://blog.csdn.net/pf0zqkrc/article/details/159163166https://blog.csdn.net/yzkg9p56/article/details/159163163https://blog.csdn.net/2601_95555803/article/details/159163167https://blog.csdn.net/rcwyj5yw/article/details/159163161https://blog.csdn.net/y7srviaq/article/details/159163168https://blog.csdn.net/2601_95555802/article/details/159163169https://blog.csdn.net/zow5qht6/article/details/159163172https://blog.csdn.net/sqmb54i9/article/details/159163147https://blog.csdn.net/gozsf05v/article/details/159163176https://blog.csdn.net/2601_95555807/article/details/159163180https://blog.csdn.net/jj6wv0k2/article/details/159163178https://blog.csdn.net/2601_95555801/article/details/159163174https://blog.csdn.net/2601_95555808/article/details/159163182https://blog.csdn.net/opx84xf7/article/details/159163183https://blog.csdn.net/xyv3sp3a/article/details/159163185https://blog.csdn.net/oadwvztw/article/details/159163186https://blog.csdn.net/u44jqouk/article/details/159163187https://blog.csdn.net/2601_95555804/article/details/159163191https://blog.csdn.net/2601_95555762/article/details/159163192https://blog.csdn.net/2601_95555777/article/details/159163194https://blog.csdn.net/ovjn8ow0/article/details/159163197https://blog.csdn.net/2601_95555809/article/details/159163196https://blog.csdn.net/2601_95555778/article/details/159163198https://blog.csdn.net/2601_95555829/article/details/159163199https://blog.csdn.net/p0fmpyyt/article/details/159163200https://blog.csdn.net/l9w3aslk/article/details/159163205https://blog.csdn.net/kd94k8xh/article/details/159163208https://blog.csdn.net/2601_95555716/article/details/159163209https://blog.csdn.net/w0trbykq/article/details/159163210https://blog.csdn.net/qgh7l6uh/article/details/159163211https://blog.csdn.net/2601_95555728/article/details/159163213https://blog.csdn.net/2601_95555782/article/details/159163212https://blog.csdn.net/d0ndc2s5/article/details/159163214https://blog.csdn.net/ivwosn6b/article/details/159163216https://blog.csdn.net/2601_95555724/article/details/159163217https://blog.csdn.net/uhd3vfre/article/details/159163218https://blog.csdn.net/xoyvxc45/article/details/159163221https://blog.csdn.net/2601_95555722/article/details/159163219https://blog.csdn.net/utoyxvui/article/details/159163222https://blog.csdn.net/2601_95555720/article/details/159163225https://blog.csdn.net/2601_95555729/article/details/159163226https://blog.csdn.net/2601_95555776/article/details/159163230https://blog.csdn.net/n0awdu1b/article/details/159163228https://blog.csdn.net/z70813h9/article/details/159163232https://blog.csdn.net/jl4j1olz/article/details/159163233https://blog.csdn.net/r5v9xzma/article/details/159163234https://blog.csdn.net/ontxyhyz/article/details/159163236https://blog.csdn.net/sxccauxd/article/details/159163237https://blog.csdn.net/2601_95555735/article/details/159163240https://blog.csdn.net/u6co2uod/article/details/159163243https://blog.csdn.net/hyn3zgnd/article/details/159163244https://blog.csdn.net/2601_95555725/article/details/159163245https://blog.csdn.net/pnhuf7ag/article/details/159163249https://blog.csdn.net/2601_95555736/article/details/159163250https://blog.csdn.net/cgq8o3eh/article/details/159163253https://blog.csdn.net/axis11j2/article/details/159163248https://blog.csdn.net/gnfhy4ba/article/details/159163258https://blog.csdn.net/2601_95555743/article/details/159163262https://blog.csdn.net/2601_95555717/article/details/159163263https://blog.csdn.net/tnnl8nvv/article/details/159163265https://blog.csdn.net/u1v9jp82/article/details/159163269https://blog.csdn.net/ns87ewf7/article/details/159163270https://blog.csdn.net/sh1iiqns/article/details/159163276https://blog.csdn.net/buafzlon/article/details/159163277https://blog.csdn.net/saz3c0gq/article/details/159163279https://blog.csdn.net/jrj4swsm/article/details/159163281https://blog.csdn.net/ovln1ss6/article/details/159163285https://blog.csdn.net/qsqkgf5c/article/details/159163289https://blog.csdn.net/w36pnbai/article/details/159163287https://blog.csdn.net/ty2h5jim/article/details/159163291https://blog.csdn.net/n5v70bxg/article/details/159163292https://blog.csdn.net/aetke0y0/article/details/159163293https://blog.csdn.net/qykzj6nd/article/details/159163299https://blog.csdn.net/z87vpy0n/article/details/159163303https://blog.csdn.net/l93kzmi0/article/details/159163304https://blog.csdn.net/vyr4mylf/article/details/159163309https://blog.csdn.net/2601_95555735/article/details/159163311https://blog.csdn.net/qf1ubgcg/article/details/159163318https://blog.csdn.net/aetke0y0/article/details/159163335https://blog.csdn.net/qf1ubgcg/article/details/159163350https://blog.csdn.net/n0awdu1b/article/details/159163366https://blog.csdn.net/2601_95555743/article/details/159163369https://blog.csdn.net/j0z5pk8q/article/details/159163371https://blog.csdn.net/gyiy7ls9/article/details/159163374https://blog.csdn.net/2601_95555782/article/details/159163375https://blog.csdn.net/2601_95555760/article/details/159163377https://blog.csdn.net/ns87ewf7/article/details/159163378https://blog.csdn.net/zw4ovwhj/article/details/159163379https://blog.csdn.net/jsgi4f2t/article/details/159163381https://blog.csdn.net/2601_95555774/article/details/159163382https://blog.csdn.net/cgq8o3eh/article/details/159163383https://blog.csdn.net/uhd3vfre/article/details/159163384https://blog.csdn.net/oka5um24/article/details/159163394https://blog.csdn.net/2601_95555829/article/details/159163396https://blog.csdn.net/rcwyj5yw/article/details/159163397https://blog.csdn.net/hvawwu05/article/details/159163398https://blog.csdn.net/gozsf05v/article/details/159163399https://blog.csdn.net/q59elce4/article/details/159163401https://blog.csdn.net/2601_95555793/article/details/159163403https://blog.csdn.net/2601_95555762/article/details/159163405https://blog.csdn.net/2601_95555806/article/details/159163413https://blog.csdn.net/2601_95555809/article/details/159163422https://blog.csdn.net/wncnm1q3/article/details/159163423https://blog.csdn.net/m7pvysil/article/details/159163424https://blog.csdn.net/2601_95555789/article/details/159163426https://blog.csdn.net/2601_95555728/article/details/159163429https://blog.csdn.net/jb9wc2pf/article/details/159163432https://blog.csdn.net/itdwzttu/article/details/159163434https://blog.csdn.net/mt7362r6/article/details/159163438https://blog.csdn.net/na50ew37/article/details/159163439https://blog.csdn.net/bqifbzk8/article/details/159163441https://blog.csdn.net/u44jqouk/article/details/159163442https://blog.csdn.net/atnsn53w/article/details/159163444https://blog.csdn.net/e85pcf86/article/details/159163447https://blog.csdn.net/wacyvuo2/article/details/159163449https://blog.csdn.net/jj6wv0k2/article/details/159163448https://blog.csdn.net/yzkg9p56/article/details/159163452https://blog.csdn.net/oadwvztw/article/details/159163453https://blog.csdn.net/2601_95555838/article/details/159163455https://blog.csdn.net/sqmb54i9/article/details/159163457https://blog.csdn.net/l2cllx9t/article/details/159163458https://blog.csdn.net/ww8tgkcg/article/details/159163459https://blog.csdn.net/2601_95555821/article/details/159163460https://blog.csdn.net/ikaf73t7/article/details/159163462https://blog.csdn.net/nyi627j9/article/details/159163464https://blog.csdn.net/zow5qht6/article/details/159163463https://blog.csdn.net/2601_95555803/article/details/159163468https://blog.csdn.net/2601_95555794/article/details/159163466https://blog.csdn.net/xyv3sp3a/article/details/159163469https://blog.csdn.net/fcbbory8/article/details/159163471https://blog.csdn.net/2601_95555801/article/details/159163472https://blog.csdn.net/2601_95555799/article/details/159163474https://blog.csdn.net/2601_95555802/article/details/159163475https://blog.csdn.net/pf0zqkrc/article/details/159163483https://blog.csdn.net/buff83ex/article/details/159163484https://blog.csdn.net/2601_95555808/article/details/159163486https://blog.csdn.net/2601_95555807/article/details/159163489https://blog.csdn.net/hyn3zgnd/article/details/159163488https://blog.csdn.net/2601_95555720/article/details/159163490https://blog.csdn.net/2601_95555724/article/details/159163491https://blog.csdn.net/z3om9ffv/article/details/159163492https://blog.csdn.net/l9w3aslk/article/details/159163494https://blog.csdn.net/in8i5nbq/article/details/159163493https://blog.csdn.net/h7mntms2/article/details/159163495https://blog.csdn.net/n5v70bxg/article/details/159163496https://blog.csdn.net/a21o3iaf/article/details/159163498https://blog.csdn.net/y7srviaq/article/details/159163499https://blog.csdn.net/ty2h5jim/article/details/159163500https://blog.csdn.net/opx84xf7/article/details/159163503https://blog.csdn.net/2601_95555786/article/details/159163504https://blog.csdn.net/2601_95555791/article/details/159163507https://blog.csdn.net/qgh7l6uh/article/details/159163508https://blog.csdn.net/2601_95555775/article/details/159163510https://blog.csdn.net/2601_95555716/article/details/159163509https://blog.csdn.net/vyr4mylf/article/details/159163512https://blog.csdn.net/2601_95555717/article/details/159163513https://blog.csdn.net/ontxyhyz/article/details/159163514https://blog.csdn.net/xoyvxc45/article/details/159163515https://blog.csdn.net/z87vpy0n/article/details/159163517https://blog.csdn.net/olbtnjrv/article/details/159163518https://blog.csdn.net/jdxm6zy0/article/details/159163520https://blog.csdn.net/buafzlon/article/details/159163523https://blog.csdn.net/qykzj6nd/article/details/159163529https://blog.csdn.net/2601_95555729/article/details/159163527https://blog.csdn.net/2601_95555772/article/details/159163528https://blog.csdn.net/2601_95555730/article/details/159163531https://blog.csdn.net/xzs16ffo/article/details/159163532https://blog.csdn.net/utoyxvui/article/details/159163537https://blog.csdn.net/u1v9jp82/article/details/159163540https://blog.csdn.net/ovln1ss6/article/details/159163543https://blog.csdn.net/nyubjr0h/article/details/159163544https://blog.csdn.net/cuqlk1z9/article/details/159163551https://blog.csdn.net/pnhuf7ag/article/details/159163555https://blog.csdn.net/ovjn8ow0/article/details/159163556https://blog.csdn.net/2601_95555804/article/details/159163558https://blog.csdn.net/o4y65aeb/article/details/159163557https://blog.csdn.net/sxccauxd/article/details/159163563https://blog.csdn.net/d0ndc2s5/article/details/159163565https://blog.csdn.net/saz3c0gq/article/details/159163566https://blog.csdn.net/w36pnbai/article/details/159163569https://blog.csdn.net/2601_95555778/article/details/159163570https://blog.csdn.net/2601_95555736/article/details/159163571https://blog.csdn.net/qz6em0lc/article/details/159163573https://blog.csdn.net/fl5lhhdt/article/details/159163575https://blog.csdn.net/quo9bz4q/article/details/159163577https://blog.csdn.net/u6co2uod/article/details/159163581https://blog.csdn.net/dyjyriem/article/details/159163591https://blog.csdn.net/2601_95555753/article/details/159163592https://blog.csdn.net/vd0sb5ti/article/details/159163572https://blog.csdn.net/tnnl8nvv/article/details/159163599https://blog.csdn.net/w0trbykq/article/details/159163598https://blog.csdn.net/gnfhy4ba/article/details/159163603https://blog.csdn.net/z70813h9/article/details/159163594https://blog.csdn.net/ijcajcqi/article/details/159163608https://blog.csdn.net/2601_95555725/article/details/159163611https://blog.csdn.net/w5av9bjt/article/details/159163613https://blog.csdn.net/jubdsyfy/article/details/159163616

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…