- 《CPython Internals》阅读笔记:p151-p151
python
《CPythonInternals》学习第9天,p151-p1510总结,总计1页。一、技术总结无。二、英语总结(生词:1)1.marshal(1)marshalingMarshallingormarshaling(USspelling)istheprocessoftransformingthememoryrepresentationofanobjectintoadataformsuitablef
- Electron 开发者的 Tauri 2.0 实战指南:窗口管理与系统集成
作为Electron开发者,我们已经习惯了使用BrowserWindow来管理窗口,以及通过各种内置模块来实现系统集成。在Tauri2.0中,这些功能虽然概念类似,但实现方式有所不同。本文将帮助你快速掌握Tauri的窗口管理和系统集成功能。窗口管理基础窗口操作Electron方式//main.jsconst{BrowserWindow}=require('electron')//创建窗口const
- Gitlab流水线配置
由于格式和图片解析问题,为了更好阅读体验可前往阅读原文流水线的流程是,提交代码后,gitlab会检测项目根目录里的.github-ci.yml文件,根据文件中的流水线自动构建,配置文件格式正确性可以在gitlab进行文件校验,格式使用yaml文件格式,一个yaml文件就是一个流水线,里面会定义多个作业示例stages:-install-build-deployinstall_job:stage:i
- MYSQL数据库表的设计
qq_45849275
java
一、https://blog.csdn.net/jasonhui512/article/details/53134054页面原型需求分析表结构的设计数据库设计案例elasticSearchpostgresqlmongodbRedisneo4jfastDFSmemcachemavengitsvnluencemybatismybatisplusspringspringMVCspringbootspri
- Vue 开发者的 React 实战指南:部署与持续集成篇
作为Vue开发者,在迁移到React开发时,除了开发过程中的差异,部署和持续集成的策略也需要相应调整。本文将详细介绍React项目的部署流程和持续集成最佳实践。构建流程对比Vue的构建流程在Vue项目中,我们通常使用:VueCLI或Vite构建工具npmrunbuild生成生产环境代码输出目录通常是dist#VueCLInpmrunbuild#输出到dist目录#Vitenpmrunbuild#输
- ComfyUI - 基于节点流程的 AI 绘图操作界面
小众AI
AI开源人工智能AI编程
为Windows和macOS设计的桌面客户端,它提供了一键安装的便利性,并拥有全新的用户界面。用户可以通过加入等待名单来获得早期访问权限。这款软件的主要优点在于它的易用性和现代化的界面设计,旨在提高用户的工作效率。ComfyUI不仅是一个用户界面(UI),还是一个具有强大功能和高度模块化设计的系统,其GitHub页面描述它为“最强大且模块化的稳定扩散GUI、API和后端,带有图形/节点界面”。Co
- 百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide
后端
20180415-Spring核心IOC容器及依赖注入原理ClassPathXmlApplicationContext//存储注册信息的BeanDefinition//传说已久的IOC容器privatefinalMapbeanDefinitionMap=newConcurrentHashMapTdoGetBean(finalStringname,@NullablefinalClassrequire
- 打造高效客户关系管理:销售易、用友、白码CRM的优势特色及企业适用性分析
程序员机器学习算法
销售易CRM优势特色移动化与社交化优势:销售易CRM在移动CRM领域具有领先地位,其移动应用功能丰富,支持iOS、Android等主流操作系统,销售人员可以随时随地访问客户信息、更新销售进度、创建任务等,极大地提高了销售团队的工作效率和灵活性。同时,销售易CRM还具备社交化功能,能够整合企业内部的社交网络,促进员工之间的协作与沟通,实现信息的快速共享与传播,有助于团队更好地协作完成销售任务.AI与
- Google Firebase ANE 使用教程
lilili啊啊啊
移动开发googlefirebaseadobeairaneadmobanegoogleanalysis
GooleFirebaseANE使你可以轻松的在app里面集成google统计和admob到adobeair制作的游戏和应用中您可以使用它与AiriOS和AndroidApp使用相同的actionscript代码,不需要任何更改,不需要java或者ocFirebaseANE适用于AdobeAIR功能-[x]支持Firebase分析-[x]支持Admob准备firebase资源文件1.从[Fireb
- 雷池社区版WAF 容器常用环境变量说明
常用环境变量说明此处列举了一些容器的常用环境变量WAF版本>=7.4.0safeline-mgt变量名称默认值说明MGT_PGpostgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disablePG地址LUIGI_HOSTsafeline-luigiluigi服务的host地址CHAOS_SERVE_
- webpack多页面打包的一次尝试
初始化cd项目名webpackinit创建第二页面与其头文件touchpage2.htmltouchsrc/page2.js修改page2.jsconsole.log("success")修改webpack.config.js添加page2.html至plugins项,添加src/page2.js至entry项最终模板:constpath=require('path');constHtmlWebp
- 百万架构师第八课:设计模式:设计模式容易混淆的几个对比|JavaGuide
后端
设计模式容易混淆的几个对比.md1、代理模式跟委派模式混淆委派就是说全权代理代理只参与某一个环节,委派参与整个环节委派可以说是一个静态代理Porxy传一个接口,传实现类不行吗?Java核心思想:面向接口编程OOP:用代码来解释生活接口:只是一种规范,做任何事前以前先思考好以后,再去动手(制定好规范),三思而后行实现类:必须先有接口,开发顺序天生决定了中介:租房子代理人(专业化),要租房子的人,也
- ASP.NET Core--环境搭建和命令行CLI入门
sufengmarket
NETCOREasp.netcore安装cli命令行
文章目录.NETCore安装命令行dotnetrestoredotnetbuilddotnetrundotnetpackdotnetpublishdotnettest.NETCore.NETCore是开放源代码的通用开发平台(是一个“平台”),基于这个开放平台我们可以开发像ASP.NETCore应用程序,Windows10通用Windows平台(UWP),Tizen等等,而我们系列教程就是用.NE
- 百万架构师第六课:设计模式:策略模式及模板模式
后端
策略模式举例:比较器旅行路线固定算法策略(封装)买东西结算支付场景:根据用户的需求处理数据时候需要对算法做出选择,固定的一些算法(不再发生变化的算法),扩展。(算法会变的时候,不建议用策略模式)客户本身就知道要采用什么样的算法去计算。(有选择的权利)==assets/支付的策略模式.png==策略模式代码:Order.classpublicclassOrder{privateStringuId;p
- 解决uniapp安卓打包targetSdkVersion报错
解决GooglePlay版本检查问题的实用方案。Error:GooglePlayrequiresthatappstargetAPIlevel33orhigher.[ExpiredTargetSdkVersion]问题描述打包时遇到以下错误:Error:GooglePlayrequiresthatappstargetAPIlevel33orhigher.[ExpiredTargetSdkVersio
- nodejs创建ws服务器,前端浏览器用websocket接收信息和发送信息给服务端
cdcdhj
nodejs服务器前端websocket
首页是用nodejs建立服务器端//wsserver.jsconstWebSocket=require('ws');constwss=newWebSocket.Server({port:8080});wss.on('connection',functionconnection(ws){ws.on('error',console.error);//接收客户端发送过来的信息ws.on('message
- nodejs获取git信息
在一个长期维护的项目中,为了更好排查之前已上线或使用的版本的问题,我们可以在浏览器控制台中打印出git信息,如:git号、git提交时间、打包时间等,也可以生成一个git信息文件,方便后续排查问题。上代码constexecSync=require('child_process').execSync;constfs=require('fs');constpath=require('path');//
- 快速开发平台 WebBuilder 10 震撼发布:重塑快速开发新时代!
在这个瞬息万变的数字化时代,企业对高效、灵活的应用开发需求日益增长。为了响应这一市场需求,经过无数日夜的匠心研发,我们自豪地宣布——WebBuilder10,这一划时代的快速开发平台,今日正式全球发布!WebBuilder10不仅继承了前代产品的强大功能,更在用户体验、开发效率、以及技术创新上实现了全面飞跃,旨在为企业级应用开发带来前所未有的便捷与高效。官网:https://www.geejing
- 快手后端面试,被面试官秒挂了!
你好,我是Guide。很久没有分享凉经了,今天来分享一位西北工业大学的读者面试快手,一面就直接秒挂的面经。快手一面主要会问一些基础问题,也就是比较简单且容易准备的常规八股,通常不会问项目或者问的比较少。到了二面,会开始问项目,各种问题也挖掘的更深一些。很多同学觉得这种基础问题的考查意义不大,实际上还是很有意义的,这种基础性的知识在日常开发中也会需要经常用到。例如,线程池这块的拒绝策略、核心参数配置
- NetScaler Console Release 13.1 Build 56.18 - 集中管理 NetScaler
http
NetScalerConsoleRelease13.1Build56.18(ESXi,Hyper-V,KVM,Xen)-集中管理NetScalerNetScalerConsoleRelease13.1Build56.18(ESXi,Hyper-V,KVM,Xen)FormerlyknownasNetScalerADM-集中管理NetScaler请访问原文链接:https://sysin.org/b
- 【iOS】常见异常问题解决方案合集
error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)出现该报错提示往往是一些配置问题,以下是可能情况:OtherLinkerFlags配置错误可能原因:OtherLinkerFlags中缺少必要的标志,例如-framework、-l。多余或错误的标志导致链接失败。解决办法:1.打开BuildSettings,搜索OtherLink
- 什么是虚拟DOM?
古老的渲染方式(innerHTML)在虚拟DOM出现之前,我们创建页面UI最常用的方式就是innerHTML,但是它有一个很大的问题,就是会导致很多不必要的性能开销。看下面这段代码,这是个很经典的渲染服务器返回的列表数据到HTML中:constdataList=[{label:'Lorem,ipsum.',value:112.7},{label:'Praesentium,facere.',valu
- API接口设计的未来趋势:探索技术方向与实践方案
摘要随着技术的发展,API接口设计从最初的单一请求响应模式逐渐演化为多样化的架构模式和高效的传输协议。从REST到GraphQL,从API网关到服务网格,API接口设计正向着更高效、更安全、更可扩展的方向发展。本文将探讨未来API设计的新趋势,深入分析API网关和服务网格的应用场景及技术优势,并通过ArkUI和ArkTS实现简单的API交互示例。引言API(ApplicationProgrammi
- 关于Elementui中el-select自动展开
项目需求:el-table带行编辑。开发中遇到一旦行编辑过多,页面就变得奇卡无比。然后就做了假的输入框代替,后来又遇到需要二次点击才能正常聚焦,客户很不满意。呵呵呵。。。思路:点击模拟框时自动聚焦//在main.js中注册一个全局自定义指令`v-focus`Vue.directive('focus',{//当被绑定的元素插入到DOM中时……inserted:function(el){console
- SwiftUI Release 引入的辅助焦点管理
前言SwiftUIRelease引入了强大的新功能,其中之一是辅助焦点管理。这个新功能使得在SwiftUI中处理辅助技术(如VoiceOver和SwitchControl)的焦点状态变得更加轻松。本文将介绍如何使用@FocusState属性包装器来在SwiftUI中管理和移动辅助焦点。使用@FocusState属性包装器在SwiftUIRelease中,我们获得了一整套特殊工具来更有效地处理辅助焦
- SwiftUI Release 引入的辅助焦点管理
前言SwiftUIRelease引入了强大的新功能,其中之一是辅助焦点管理。这个新功能使得在SwiftUI中处理辅助技术(如VoiceOver和SwitchControl)的焦点状态变得更加轻松。本文将介绍如何使用@FocusState属性包装器来在SwiftUI中管理和移动辅助焦点。使用@FocusState属性包装器在SwiftUIRelease中,我们获得了一整套特殊工具来更有效地处理辅助焦
- 在 SwiftUI 中实战使用 MapKit API
前言SwiftUI与MapKit的集成在今年发生了重大变化。在之前的SwiftUI版本中,我们将MKMapView的基本功能封装到名为Map的SwiftUI视图中。幸运的是,事情发生了变化,SwiftUI引入了与MapKit集成的新API。本篇文章我们将学习如何在SwiftUI的最新版本中使用可用的新功能丰富的API与MapKit集成。正如我之前所说,在SwiftUI框架的早期版本中,我们有一个M
- H5跳转到 React Native App
H5在浏览器跳转到App配置URLSchemesIOSInfo.plistCFBundleURLTypesCFBundleTypeRoleEditorCFBundleURLSchemesxxxxAndroidAndroidManifest.xmlh5跳转通过window.location.href=xxxxx的方式跳转constopenApp=(isIOS,extinfo?:string)=>{i
- iOS - 底层实现中涉及的类型
Batac_蝠猫
iOS底层原理ios
1.基本类型定义//基础类型typedefunsignedlonguintptr_t;//指针大小的无符号整数typedeflongptrdiff_t;//指针差值类型typedefunsignedintuint32_t;//32位无符号整数typedefunsignedlonglonguint64_t;//64位无符号整数//掩码类型typedefuintptr_tmask_t;//用于位掩码操
- axum--代码案例
rustweb
最简单的demo#[tokio::main]asyncfnmain(){//buildourapplicationwitharouteletapp=Router::new().route("/",get(handler));//runitletlistener=tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap();printl
- 算法 单链的创建与删除
换个号韩国红果果
c算法
先创建结构体
struct student {
int data;
//int tag;//标记这是第几个
struct student *next;
};
// addone 用于将一个数插入已从小到大排好序的链中
struct student *addone(struct student *h,int x){
if(h==NULL) //??????
- 《大型网站系统与Java中间件实践》第2章读后感
白糖_
java中间件
断断续续花了两天时间试读了《大型网站系统与Java中间件实践》的第2章,这章总述了从一个小型单机构建的网站发展到大型网站的演化过程---整个过程会遇到很多困难,但每一个屏障都会有解决方案,最终就是依靠这些个解决方案汇聚到一起组成了一个健壮稳定高效的大型系统。
看完整章内容,
- zeus持久层spring事务单元测试
deng520159
javaDAOspringjdbc
今天把zeus事务单元测试放出来,让大家指出他的毛病,
1.ZeusTransactionTest.java 单元测试
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import
- Rss 订阅 开发
周凡杨
htmlxml订阅rss规范
RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)。
RSS
- 分页查询实现
g21121
分页查询
在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。
按实现形式分前台分页和服务器分页:
前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。
服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据
- spring jms异步消息处理
510888780
jms
spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
- highCharts柱状图
布衣凌宇
hightCharts柱图
第一步:导入 exporting.js,grid.js,highcharts.js;第二步:写controller
@Controller@RequestMapping(value="${adminPath}/statistick")public class StatistickController { private UserServi
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
springmvcSpring 教程spring3 教程Spring 入门
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
- TLS java简单实现
antlove
javasslkeystoretlssecure
1. SSLServer.java
package ssl;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
import
- Zip解压压缩文件
百合不是茶
Zip格式解压Zip流的使用文件解压
ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
&n
- underscore.js 学习(一)
bijian1013
JavaScriptunderscore
工作中需要用到underscore.js,发现这是一个包括了很多基本功能函数的js库,里面有很多实用的函数。而且它没有扩展 javascript的原生对象。主要涉及对Collection、Object、Array、Function的操作。 学
- java jvm常用命令工具——jstatd命令(Java Statistics Monitoring Daemon)
bijian1013
javajvmjstatd
1.介绍
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务
- 【Spring框架三】Spring常用注解之Transactional
bit1129
transactional
Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力,如下是@Transactional注解的定义:
/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version
- 我(程序员)的前进方向
bitray
程序员
作为一个普通的程序员,我一直游走在java语言中,java也确实让我有了很多的体会.不过随着学习的深入,java语言的新技术产生的越来越多,从最初期的javase,我逐渐开始转变到ssh,ssi,这种主流的码农,.过了几天为了解决新问题,webservice的大旗也被我祭出来了,又过了些日子jms架构的activemq也开始必须学习了.再后来开始了一系列技术学习,osgi,restful.....
- nginx lua开发经验总结
ronin47
使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下 1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报 too long pa
- java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
bylijinnan
java
import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Revers
- 正确理解Linux内存占用过高的问题
cfyme
linux
Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上:
Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers
Swap: 6127608k total,&nb
- [JWFD开源工作流]当前流程引擎设计的一个急需解决的问题
comsci
工作流
当我们的流程引擎进入IRC阶段的时候,当循环反馈模型出现之后,每次循环都会导致一大堆节点内存数据残留在系统内存中,循环的次数越多,这些残留数据将导致系统内存溢出,并使得引擎崩溃。。。。。。
而解决办法就是利用汇编语言或者其它系统编程语言,在引擎运行时,把这些残留数据清除掉。
- 自定义类的equals函数
dai_lm
equals
仅作笔记使用
public class VectorQueue {
private final Vector<VectorItem> queue;
private class VectorItem {
private final Object item;
private final int quantity;
public VectorI
- Linux下安装R语言
datageek
R语言 linux
命令如下:sudo gedit /etc/apt/sources.list1、deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/ 2、deb http://dk.archive.ubuntu.com/ubuntu hardy universesudo apt-key adv --keyserver ke
- 如何修改mysql 并发数(连接数)最大值
dcj3sjt126com
mysql
MySQL的连接数最大值跟MySQL没关系,主要看系统和业务逻辑了
方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可
方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppass
- 单一功能原则
dcj3sjt126com
面向对象的程序设计软件设计编程原则
单一功能原则[
编辑]
SOLID 原则
单一功能原则
开闭原则
Liskov代换原则
接口隔离原则
依赖反转原则
查
论
编
在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有
- POJO、VO和JavaBean区别和联系
fanmingxing
VOPOJOjavabean
POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被
- SpringSecurity3.X--LDAP:AD配置
hanqunfeng
SpringSecurity
前面介绍过基于本地数据库验证的方式,参考http://hanqunfeng.iteye.com/blog/1155226,这里说一下如何修改为使用AD进行身份验证【只对用户名和密码进行验证,权限依旧存储在本地数据库中】。
将配置文件中的如下部分删除:
<!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密-->
- mac mysql 修改密码
IXHONG
mysql
$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在-
- 设计模式--抽象工厂模式
kerryg
设计模式
抽象工厂模式:
工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类,
- 评"高中女生军训期跳楼”
nannan408
首先,先抛出我的观点,各位看官少点砖头。那就是,中国的差异化教育必须做起来。
孔圣人有云:有教无类。不同类型的人,都应该有对应的教育方法。目前中国的一体化教育,不知道已经扼杀了多少创造性人才。我们出不了爱迪生,出不了爱因斯坦,很大原因,是我们的培养思路错了,我们是第一要“顺从”。如果不顺从,我们的学校,就会用各种方法,罚站,罚写作业,各种罚。军
- scala如何读取和写入文件内容?
qindongliang1922
javajvmscala
直接看如下代码:
package file
import java.io.RandomAccessFile
import java.nio.charset.Charset
import scala.io.Source
import scala.reflect.io.{File, Path}
/**
* Created by qindongliang on 2015/
- C语言算法之百元买百鸡
qiufeihu
c算法
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?
代码如下:
#include <stdio.h>
int main()
{
int cock,hen,chick; /*定义变量为基本整型*/
for(coc
- Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode
wyz2009107220
NameNode
正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。
1. Secondary NameNode
原理:Secondary NN会定期的从NN中读取editlog,与自己存储的Image进行合并形成新的metadata image
优点:Hadoop较早的版本都自带,