1.FCKeditorå¦ä½ä½¿ç¨
2.PostgreSQL · 源码分析 · 回放分析(一)
FCKeditorå¦ä½ä½¿ç¨
FCKEDITOR使ç¨è¯´æ-- :ä¸ãFCKEDITORç±»åè:
æé å¨:
FCKeditor( instanceName[,源码 width, height, toolbarSet, value] )
instanceName:ç¼è¾å¨çå¯ä¸å称(ç¸å½äºID)
WIDTH:宽度
HEIGHT:é«åº¦
toolbarSet:å·¥å ·æ¡éåçå称
value:ç¼è¾å¨åå§åå 容
å±æ§:
instanceName:ç¼è¾å¨å®ä¾å
width:宽度,é»è®¤å¼ä¸º%
height:é«åº¦,é»è®¤å¼æ¯
ToolbarSet:å·¥å ·éå称,åèFCKCONFIG.JS,é»è®¤å¼æ¯Default
value:åå§åç¼è¾å¨çHTML代ç ,é»è®¤å¼ä¸ºç©º
BasePath:ç¼è¾å¨çåºè·¯å¾,é»è®¤ä¸º/Fckeditor/æ件夹,注æ,å°½éä¸è¦ä½¿ç¨ç¸å¯¹è·¯å¾.æ好è½ç¨ç¸å¯¹äºç«ç¹æ ¹è·¯å¾ç表示æ¹æ³,è¦ä»¥/ç»å°¾
CheckBrowser:æ¯å¦å¨æ¾ç¤ºç¼è¾å¨åæ£æ¥æµè§å¨å ¼å®¹æ§,é»è®¤ä¸ºtrue
DisplayErrors:æ¯å¦æ¾ç¤ºæ示é误,é»ä¸ºtrue;
éå:
Config[Key]=value;
è¿ä¸ªéåç¨äºæ´æ¹é ç½®ä¸æä¸é¡¹çå¼,å¦
oFckeditor.Config["DefaultLanguage"]="pt-br";
æ¹æ³:
Create() 建ç«å¹¶è¾åºç¼è¾å¨
RepaceTextArea(TextAreaName) ç¨ç¼è¾å¨æ¥æ¿æ¢å¯¹åºçææ¬æ¡
äºãé ç½®FCKEDITOR
主é ç½®æ件å为Fckconfig.js
FCKEDITORæä¾äºä¸å¥ç¨äºå®å¶å ¶å¤è§,ç¹æ§åè¡ä¸ºç设置é.ä½ æ¢å¯ä»¥ç¼è¾ä¸»é ç½®æ件,ä¹å¯ä»¥èªå·±å®ä¹åç¬çé ç½®æ件.é ç½®æ件使ç¨JAVASCRIPTè¯æ³.
ä¿®æ¹å,å¨å»ºç«ç¼è¾å¨æ¶,å¯ä»¥ä½¿ç¨ä»¥ä¸è¯æ³:
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Config['CustomConfigurationsPath'] = '/myconfig.js' ;
oFCKeditor.Create() ;
æé:å½ä½ ä¿®æ¹é ç½®å,è¯·æ¸ ç©ºæµè§å¨ç¼å以æ¥çææ
é ç½®é项:
AutoDetectLanguage=true/false èªå¨æ£æµè¯è¨
BaseHref="" ç¸å¯¹é¾æ¥çåºå°å
ContentLangDirection="ltr/rtl" é»è®¤æåæ¹å
ContextMenu=å符串æ°ç»,å³é®èåçå 容
CustomConfigurationsPath="" èªå®ä¹é ç½®æ件路å¾åå称
Debug=true/false æ¯å¦å¼å¯è°è¯åè½,è¿æ ·,å½è°ç¨FCKDebug.Output()æ¶,ä¼å¨è°è¯çªä¸è¾åºå 容
DefaultLanguage="" 缺çè¯è¨
EditorAreaCss="" ç¼è¾åºçæ ·å¼è¡¨æ件
EnableSourceXHTML=true/false 为TRUEæ¶,å½ç±å¯è§åçé¢åæ¢å°ä»£ç 页æ¶,æHTMLå¤çæXHTML
EnableXHTML=true/false æ¯å¦å 许使ç¨XHTMLå代HTML
FillEmptyBlocks=true/false 使ç¨è¿ä¸ªåè½,å¯ä»¥å°ç©ºçå级å ç´ ç¨ç©ºæ ¼æ¥æ¿ä»£
FontColors="" 设置æ¾ç¤ºé¢è²æ¾åå¨æ¶æåé¢è²å表
FontFormats="" 设置æ¾ç¤ºå¨æåæ ¼å¼å表ä¸çå½å
FontNames="" åä½å表ä¸çåä½å
FontSizes="" åä½å¤§å°ä¸çåå·å表
ForcePasteAsPlainText=true/false 强å¶ç²è´´ä¸ºçº¯ææ¬
ForceSimpleAmpersand=true/false æ¯å¦ä¸æ&符å·è½¬æ¢ä¸ºXMLå®ä½
FormatIndentator="" å½å¨æºç æ ¼å¼ä¸ç¼©è¿ä»£ç 使ç¨çå符
FormatOutput=true/false å½è¾åºå 容æ¶æ¯å¦èªå¨æ ¼å¼å代ç
FormatSource=true/false å¨åæ¢å°ä»£ç è§å¾æ¶æ¯å¦èªå¨æ ¼å¼å代ç
FullPage=true/false æ¯å¦å 许ç¼è¾æ´ä¸ªHTMLæ件,è¿æ¯ä» å 许ç¼è¾BODYé´çå 容
GeckoUseSPAN=true/false æ¯å¦å 许SPANæ 记代æ¿B,I,Uæ è®°
IeSpellDownloadUrl=""ä¸è½½æ¼åæ£æ¥å¨çç½å
ImageBrowser=true/false æ¯å¦å 许æµè§æå¡å¨åè½
ImageBrowserURL="" æµè§æå¡å¨æ¶è¿è¡çURL
ImageBrowserWindowHeight="" å¾åæµè§å¨çªå£é«åº¦
ImageBrowserWindowWidth="" å¾åæµè§å¨çªå£å®½åº¦
LinkBrowser=true/false æ¯å¦å 许å¨æå ¥é¾æ¥æ¶æµè§æå¡å¨
LinkBrowserURL="" æå ¥é¾æ¥æ¶æµè§æå¡å¨çURL
LinkBrowserWindowHeight=""é¾æ¥ç®æ æµè§å¨çªå£é«åº¦
LinkBrowserWindowWidth=""é¾æ¥ç®æ æµè§å¨çªå£å®½åº¦
Plugins=object 注åæ件
PluginsPath="" æ件æ件夹
ShowBorders=true/false å并边æ¡
SkinPath="" ç®è¤æ件夹ä½ç½®
SmileyColumns= å¾ç¬¦çªåæ°
SmileyImages=å符æ°ç» å¾ç¬¦çªä¸å¾çæ件åæ°ç»
SmileyPath="" å¾ç¬¦æ件夹路å¾
SmileyWindowHeight å¾ç¬¦çªå£é«åº¦
SmileyWindowWidth å¾ç¬¦çªå£å®½åº¦
SpellChecker="ieSpell/Spellerpages" 设置æ¼åæ£æ¥å¨
StartupFocus=true/false å¼å¯æ¶FOCUSå°ç¼è¾å¨
StylesXmlPath="" 设置å®ä¹CSSæ ·å¼å表çXMLæ件çä½ç½®
TabSpaces=4 TABé®äº§ççç©ºæ ¼å符æ°
ToolBarCanCollapse=true/false æ¯å¦å 许å±å¼/æå å·¥å ·æ
ToolbarSets=object å 许使ç¨TOOLBARéå
ToolbarStartExpanded=true/false å¼å¯æ¯TOOLBARæ¯å¦å±å¼
UseBROnCarriageReturn=true/false å½å车æ¶æ¯äº§çBRæ è®°è¿æ¯Pæè DIVæ è®°
ä¸ãèªå®ä¹æ ·å¼å表
FckStyls.xmlæ¯é»è®¤çèªå®ä¹æ ·å¼å表æ件ã
FCKEDITORçæ ·å¼å·¥å ·æ ä¸æä¾äºé¢å®ä¹çæ ·å¼,æ ·å¼æ¯éè¿XMLæ件å®ä¹ç,é»è®¤çXMLæ ·å¼æ件åå¨äºFCkEditoræ ¹æ件夹ä¸çFckStyls.xmlæ件ä¸è¿ä¸ªXMLæ件çç»æåæå¦ä¸:
<?xml version="1.0" encoding="utf-8" ?>
<Styles >
<Style name="My Image" element="img">
<Attribute name="style" value="padding: 5px" />
<Attribute name="border" value="2" />
</Style >
<Style name="Italic" element="em" />
<Style name="Title" element="span">
<Attribute name="class" value="Title" />
</Style >
<Style name="Title H3" element="h3" />
</Styles>
æ¯ä¸ä¸ªSTYLEæ è®°å®ä¹ä¸ç§æ ·å¼,NAMEæ¯æ¾ç¤ºå¨ä¸æå表ä¸çæ ·å¼å,ELEMENTå±æ§æå®æ¤æ ·å¼æéç¨ç对象,å 为FCKEDITORä¸çæ ·å¼æ¯ä¸ä¸æææç,ä¹å°±æ¯è¯´,éæ©ä¸åç对象,ä» ä¼æ¾ç¤ºé对è¿ç±»å¯¹è±¡å®ä¹çæ ·å¼
åãæ¼åæ£æ¥
FCKEDITOR 带äºä¸¤ç§æ¼åæ£æ¥å·¥å ·,ä¸ç§æ¯ieSpell,é»è®¤æ åµä¸ä½¿ç¨è¿ç§,使ç¨è¿ç§æ¹å¼çæ¼åæ£æ¥,è¦æ±å®¢æ·ä¸è½½å¹¶å®è£ iespellè¿ä¸ªå°è½¯ä»¶,å¦å¤,ä¹æä¾ SpellPagerçæ¹å¼æ¥è¿è¡æ¼åæ£æ¥,ä¸è¿,ç±äºSPELLPAGERæ¯ç±PHPç¼åçæå¡å¨ç«¯èæ¬,å æ¤,è¦æ±ä½ çWEBæå¡å¨å¿ é¡»æ¯æPHPèæ¬è¯è¨æ¹å¯
æ´æ¹æ¼åæ£æ¥å¨çæ¹å¼è¯·åè§æå ³é ç½®æ件ç详ç»è¯´æ
äºãå缩èæ¬
为äºæä¾èæ¬è½½å ¥çæç,FCKEDITORéç¨ä»¥ä¸æ¹æ³å¯¹èæ¬å°½éå缩以åå°èæ¬å°ºå¯¸:
1,移é¤æèæ¬ä¸ç注é
2.移é¤æèæ¬ä¸æææ æä¹ç空ç½
å¦å¤,FCKEDITORè¿æä¾äºä¸ä¸ªä¸é¨ç¨äºå缩èæ¬çå·¥å ·ä»¥ä¾¿ ä½ å¨åå¸æ¶è½åå°æ件尺寸,ä½ å¯ä»¥å°_Packageræ件夹ä¸çFckeditor.Packager.exeå¤å¶å°FCKEDITORæ ¹æ件夹æ¥è¿è¡å¹¶å缩èæ¬
å ãæ¬å°åFCKEDITOR
å¦æFCKEDITOR没ææä¾æ¨æéè¦çè¯è¨(å®é ä¸å ¨æäº),ä½ ä¹å¯ä»¥èªè¡å¶ä½æ°çè¯è¨,ä½ åªéè¦å¤å¶åºEN.JS,ç¶åå¨å ¶åºç¡ä¸è¿è¡ç¿»è¯.å¦å¤,è¯è¨å称ä¸å¯¹åºçèæ¬æ件åå¿ é¡»éµå¾ªRFC æ å,ä½æ¯,éè¦å°å,ä¾å¦:Portuguess Language对åºçèæ¬æ件åå¿ é¡»ä¸ºpt.jså¦æéè¦é对æ个å½å®¶çæç§è¯ç³»,åå¯ä»¥å¨è¯ç³»ç¼©ååå ä¸æ¨ªçº¿åå½å®¶ç¼©åå³å¯
å¨ä½¿ç¨æ¶,ç³»ç»ä¼èªå¨ä¾¦æµå®¢æ·ç«¯è¯ç³»åå½å«èè¿ç¨éå½ççé¢è¯è¨.
å½å»ºç«ä¸ç§æ°çè¯è¨å,ä½ å¿ é¡»å¨"Edit/lang/fcklanguagemanager.js"ä¸ä¸ºå ¶å»ºç«ä¸ä¸ªæ¡ç®,å¦ä¸æ示:
FCKLanguageManager.AvailableLanguages =
{
en : 'English',
pt : 'Portuguese'
}
éè¦æéçæ¯,æä»¶å¿ é¡»ä¿å为UTF-8æ ¼å¼
å ãä¸ASP.NETæå¡å¨ç«¯èæ¬è¿è¡äº¤äº
1.æFCKEDITORæ·»ä¸å°å·¥å ·ç®±
2.ææ½FCKEDITORæ§ä»¶å°é¡µé¢
3.ä¸ºå ¶æå®å称
4.FCKEDITOR ç±»çææå±æ§ä¸å å¯ä»¥å¨ä»£ç ä¸ä½¿ç¨,èä¸å¯ä»¥ä½ä¸ºFCKEDITORæ§ä»¶çå±æ§ç´æ¥ä½¿ç¨,ä¾å¦,è¦æ¹åç®è¤,å¯ä»¥å¨UI页é¢ä¸æå®SkinPath= "/fckeditor/editor/skins/office"å³å¯,å ¶å®FCKEDITORçASP.NETçæ¬å¯ä»¥åå¾æ´å¥½,ä½ å¯ä»¥æ¾å° FCKEDITOR ASP.NET 2.1çæºæ件,ç¶åä¿®æ¹è¯¥æ§ä»¶ç设计,ä¸ºå ¶æ´é²æ´å¤æç¨çå±æ§,éæ°ç¼è¯å³å¯
5,POSTBACKåçæ°æ®,使ç¨FCKEDITORæ§ä»¶çvalueå±æ§è·å¾
6. ç±äºé»è®¤ç¶æä¸,ASP.NETä¸å 许æ交å«æHTMLåJAVASCRIPTçå 容,å æ¤,ä½ å¿ é¡»å°ä½¿ç¨FCKEDITORç页é¢ç ValidateRequest设为false.(<%@page validteRequest="false" %>å³å¯)
ä¸ã设置ä¸ä¼ æ件è¯è¨
æFCKeditoræ ¹ç®å½ä¸é¢çfckconfig.jsæ件é
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php
è¿ä¸¤è¡ä¸æ¹ææ¨æéè¦è°ç¨çç¼è¾å¨è¯è¨ï¼å¦ç¨asp.netåæ¹ä¸ºaspxï¼
å «ã解å³ä¸æçé®é¢:
å¨web.configä¸å å ¥:
<globalization requestEncoding="GB" responseEncoding="GB"/>
è¿æ ·è®¾ç½®åå¯ä»¥æ¾ç¤ºä¸æçæ件ï¼ä½URLå°åä¹æ¯ä¸æçï¼
å¦ææå¡å¨å¯¹ä¸æå°åç解æä¸å¥½ï¼å¯è½å¯¼è´å¾çæ æ³æµè§ï¼
æ以修æ¹ï¼editor\filemanager\browser\default\frmresourceslist.html
ä¸çOpenFileå½æ°ï¼æ
window.top.opener.SetUrl( fileUrl ) ;
ä¿®æ¹ä¸º:
window.top.opener.SetUrl( escape(fileUrl) ) ;
ä¹.设置ä¸ä¼ çç®å½ï¼
1:å¨web.configä¸è®¾ç½®:
<appSettings>
<add key="FCKeditor:UserFilesPath" value="/fck/UpLoad/" />
</appSettings>
2:å¨Sessionä¸è®¾ç½®:
å¨editor\filemanager\browser\default\connectors\aspx\connector.aspxä¸å å ¥ä»¥ä¸ä»£ç :
<script runat="server" language="C#">
protected override void OnInit(EventArgs e)
{
Session["FCKeditor:UserFilesPath"] = "/fck/UpLoad1/";
}
</script>
PostgreSQL · 源码分析 · 回放分析(一)
在数据库运行中,可能遇到非预期问题,源码如断电、源码崩溃。源码这些情况可能导致数据异常或丢失,源码影响业务。源码怎样在网上找到网站源码为了在数据库重启时恢复到崩溃前状态,源码确保数据一致性和完整性,源码我们引入了WAL(Write-Ahead Logging)机制。源码WAL记录数据库事务执行过程,源码当数据库崩溃时,源码利用这些记录恢复至崩溃前状态。源码
WAL通过REDO和UNDO日志实现崩溃恢复。源码REDO允许对数据进行修改,源码UNDO则撤销修改。源码REDO/UNDO日志结合了这两种功能。除了WAL,还有Shadow Pagging、WBL等技术,但WAL是主要方法。
数据库内部,源码编辑器源码画板怎么画日志管理器记录事务操作,缓冲区管理器负责数据存储。当崩溃发生,恢复管理器读取事务状态,回放已提交数据,回滚中断事务,恢复数据库一致性。ARIES算法是日志记录和恢复处理的重要方法。
长时间运行后崩溃,可能需要数小时甚至数天进行恢复。有ios的源码 生成安卓源码检查点技术在此帮助,将脏数据刷入磁盘,记录检查点位置,确保恢复从相对较新状态开始,同时清理旧日志文件。WAL不仅用于崩溃恢复,还支持复制、主备同步、时间点还原等功能。
在记录日志时,源码站的源码靠谱不WAL只在缓冲区中记录,直到事务提交时等待磁盘写入。LSN(日志序列号)用于管理,只在共享缓冲区中检查。XLog是事务日志,WAL是持久化日志。
崩溃恢复中,checkpointer持续做检查点,加快数据页面更新,提高重启恢复速度。微信小程序源码带后台源码在回放时,数据页面不断向前更新,直至达到特定LSN。
了解WAL格式和包含信息有助于理解日志内容。PG社区正在实现Zheap特性,改进日志格式。WAL文件存储在pg_wal目录下,大小为1GB,与时间线和LSN紧密关联。事务日志与WAL段文件相关联,根据特定LSN可识别文件名和位置。
使用pg_waldump工具可以查看日志内容,理解一次操作记录。日志类型包括Standby、Heap、Transaction等,对应不同资源管理器。PostgreSQL 包含种资源管理器类型,涉及堆元组、索引、序列号操作。
标准记录流程包括:读取数据页面到frame、记录WAL、进行事务提交。插入数据流程生成WAL,复杂修改如索引分裂需要记录多个WAL。
崩溃恢复流程从控制文件中获取检查点位置,严格串行回放至崩溃前状态。redo回放流程与记录代码高度一致。在部分写问题上,FullPageWrite(FPW)策略记录完整数据页面,防止损坏。WAL错误导致部分丢失不影响恢复,数据库会告知失败。磁盘静默错误和内存错误需通过冗余校验解决。
本文总结了数据库崩溃恢复原理,以及PostgreSQL日志记录和崩溃恢复实现。深入理解原理可提高数据库管理效率。下文将详细描述热备恢复和按时间点还原(PITR)方法。