1.Linux下的源码源码Meltdown攻击实践(含代码)
2.ä½ä»£ç å¼å
3.druid源码学习笔记9_testOnBorrow&testOnReturn&testWhileIdl
4.å°ç¨åºä½ä»£ç å¼åå¹³å°ï¼
Linux下的Meltdown攻击实践(含代码)
北京时间年月日,Google Project Zero公开了Meltdown(熔毁)漏洞,网仿指出该漏洞能够影响几乎所有的互站Intel CPU和部分的ARM CPU,于是源码源码相关的侧信道攻击方式由此开始走进大众的视野。
Meltdown攻击是网仿一种直接针对底层硬件机制(CPU的乱序执行机制、Cache机制和异常处理机制)的互站通达信原因揭密源码时间侧信道攻击,它的源码源码基本原理如下所示:
这里对上图及上述条件作简单解释:从顶层程序的角度来看,指令A、网仿B和C应该是互站顺序执行的,且由于指令A访问了非法地址的源码源码数据会触发异常,故指令B和C的网仿操作不会被执行;然而,从底层硬件的互站角度来看,指令A、源码源码B和C满足乱序执行的网仿条件,于是互站在下一指令所需要的数据准备完成后就可以立即开始下一指令的执行。在图中指令A的飞碟直播源码“阶段A_1”结束后,指令B由于所需要的数据已经准备完成故可立即开始执行;在图中指令B的“阶段B_1”结束后,指令C由于所需要的数据已经准备完成故可立即开始执行。若“阶段A_2”的执行时间大于“阶段B_1”的执行时间和“阶段C_1”的执行时间之和,则非法数据能够经过运算产生合法地址,且该合法地址的数据能够被放入L3_Cache中;若在指令A的“阶段A_2”结束后,检查出非法访问所引起的回滚冲刷不影响L3_Cache,则与非法数据相关的合法数据依然存在于L3_Cache中。最后,通过遍历访问合法地址的数据,并对访问时间进行计时,能够找到某个访问时间明显较短的合法数据,该数据的合法地址即为指令B中由非法数据经过运算后所得到的值,从而可以反推出原非法数据,于是间接地得到了非法地址中的数据。
随后将详细说明完整的儿童监护源码Meltdown攻击是如何具体实施的,文中攻击实践的操作系统平台为虚拟机中的Ubuntu。此前,在虚拟机中的Ubuntu和某服务器中的某操作系统上也能够成功实施该Meltdown攻击,只是某些具体的实施步骤和本文有细微差别。
简单写一个字符设备驱动程序,该驱动程序运行在操作系统内核态,私有存储空间内有一段秘密信息。这里只实现了它的IOCTL函数、OPEN函数和READ函数,其中主要关注如下所示的READ函数(带注释的完整源代码已上传至Github):
该READ函数能够将内核空间中的秘密信息的存储地址反馈给用户空间中的一般用户程序,于是一般用户程序可通过直接调用该函数得到秘密信息的存储地址。然而,对于一般用户程序来说,通过该READ函数读取到的地址是一个不可访问的非法地址,其中的索尼相机源码数据对一般用户程序不可见,也就是说一般用户程序无法通过正常的访问流程来获取该秘密信息。但是,随后的Meltdown攻击的对象即为该驱动程序,这一侧信道攻击方式可绕过操作系统的隔离间接地窃取到该秘密信息。
首先,编译该驱动程序的源代码,生成可加载的内核模块:
在加载编译生成的内核模块之前,先看一下操作系统中已经加载的内核模块,以作对比:
接下来,加载编译生成的内核模块;然后,再次查看操作系统中已经加载的内核模块:
对比以上两图,可以看出"Module"一列的第一行新增了内核模块"memdev",说明OS内核模块加载成功。
最后,在内核模块加载完成的freeswitch源码优化基础上,还需要在/dev目录下创建对应的设备节点文件,从而一般用户程序可以通过该文件访问内核模块:
尝试调用该内核模块(带注释的完整源代码已整合进Meltdown攻击代码中并上传至Github):
至此,作为攻击对象的目标驱动程序已经被加载成为内核模块,且能够被一般用户程序正常调用。
首先,通过操作系统自带的文件查看是否存在Meltdown漏洞:
其次,通过Github上的spectre-meltdown-checker程序来查看是否存在Meltdown漏洞:
接下来,通过添加内核参数"nopti"以关闭操作系统的Meltdown补丁:
重启操作系统后再次查看是否存在Meltdown漏洞:
最后,通过运行Github上的meltdown-exploit程序来查看操作系统是否真的能够被Meltdown攻击窃取一些秘密信息:
至此,操作系统的Meltdown补丁已经被关闭,此时可通过Meltdown攻击窃取其中的部分秘密信息。
首先,分析Meltdown攻击的源代码(带注释的完整源代码已上传至Github):
1. 主函数内主要包括五个运行步骤,具体说明分别如下:
2. 主函数内最关键的函数为attack函数,其中主要包括四个步骤,具体说明分别如下:
3. attack函数内的核心部分是attack_core函数,该部分也即是整个Meltdown攻击的硬件机制缺陷利用点所在:
其中值得注意的是上述汇编代码的第八行、第九行和第十一行。第八行:对目标地址进行非法访问,将其中的字节数据放入寄存器al(寄存器rax的低8位);第九行:将寄存器rax左移位,相当于乘上(该乘数至少为一个Cache_Line的大小,否则攻击中使用的相邻存储地址会相互影响);第十一行:将非法访问的数据作为新地址的一部分,再访问新地址(rbx+rax*0x1)中的数据以将其载入Cache。在第八行的指令执行完后,以顺序执行的角度来看,由于第八行的指令进行了非法访问,故CPU会产生异常阻止接下来的指令执行;然而,由于乱序执行机制的存在,第九行和第十一行的指令会在第八行的指令的异常处理完成之前就开始执行,且CPU异常处理的回滚机制并不会改变L3_Cache中的内容,于是第九行的指令将秘密信息混入合法地址中,第十一行的指令将合法地址的信息混入L3_Cache中。在异常处理函数中简单地完成对相应异常的处理后,即可通过L3_Cache利用典型的"Flush+Reload"Cache攻击来反推出原秘密信息。
最后,编译并执行Meltdown文件,得出的Meltdown攻击结果如下所示:
至此,Meltdown攻击的具体实践成功完成。
以上三条防护措施只是所有可能的防护措施的一部分,也存在其它有效的针对Meltdown攻击的防护措施。
第1、2条防护措施需要对底层的硬件做出改动,对成本和性能的影响较大,在实际工程中难以接受其带来的负面作用;第3条防护措施是操作系统层面的漏洞修补,对成本和性能的影响相对较小,目前以各操作系统补丁的形式被实施(KAISER/KPTI)。
meltdownattack.com/
Meltdown: Reading Kernel Memory from User Space
github.com/paboldin/mel...
2. Linux驱动相关:
paper.seebug.org//
/article--1...
4. x汇编相关:
ibiblio.org/gferg/ldp/G...
blog.csdn.net/littlehed...
blog.chinaunix.net/uid-...
en.wikibooks.org/wiki/X...
5. 本文源代码相关:
github.com/hahaha...
ä½ä»£ç å¼å
ä½ä»£ç å¼åæçæ¯ä¸ç§ç¨äºå¿«é设计åå¼å软件系ç»ï¼ä¸æå代ç éæå°çæ¹æ³ï¼å®å¯ä»¥å¸®å©æ¨æ´å¿«ãæ´å¯é å°æä¾ä»·å¼ãéè¿å¨å¯è§å设计å¨ä¸ï¼ä»¥ææ½çæ¹å¼å¿«éæ建åºç¨ç¨åºï¼æ¨å¯ä»¥è·³è¿åºç¡æ¶æ以åå¯è½ä¼è®©æ¨é·å ¥å°å¢çææ¯ç»èï¼ç´æ¥è¿å ¥ä¸ä¸å¡éæ±ç´§å¯ç¸å ³çå·¥ä½ãå½è°å°ä½ä»£ç å¼åæ¶ï¼è½¯ä»¶å¼å人åæé误çæ³æ³ãç±äºä½ä»£ç çå¯è§åãææ¾å¼ç¼ç¨æ¹æ³ï¼å®ç»å¸¸è¢«ä¸åä¸ç¨æ·æå ¬æ°å¼å人åç¸å ³èãèè¿ç§å£°èªå¯¼è´è®©è®¸å¤å¼å人åæçæ¯å¦å°å ¶å¼å ¥å·¥ä½æµç¨ï¼ä½éçä¼ä¸å éæ°åå转åï¼ä»ä»¬å¯è½å«æ éæ©ãæ ¹æ®ç¸å ³æ°æ®æ¾ç¤ºï¼ä½ç å¹³å°æ£è¿ éæ为许å¤ç»ç»çæ åã以ä¸ä»ç»ä¸ªä½ä»£ç 解å³æ¹æ¡ï¼å®ä»¬æ¯å¦è½å¤è®©ç¨åºååå¼åè æ´å é«æï¼
Appianï¼Appiançå¹³å°å°ä½ä»£ç å¼åçé度ä¸æµç¨ç®¡çç强大åè½ç¸ç»åï¼ççãå®å 许å¢éä»ç°æç³»ç»ä¸å¿«éæ建ç»ä¸çä¸å¡ä¿¡æ¯è§å¾ï¼å¹¶è®©ä»ä»¬å建ä¼åçæµç¨æ¥ç®¡çå交äºæ°æ®ãç¨æ·è¿å¯ä»¥å¨ä»»ä½å°æ¹é¨ç½²ä»ä»¬çä¼ä¸çº§åºç¨ï¼åªéç¹å»ä¸ä¸å³å¯ã对äºç¨æ·ä½éªè®¾è®¡ï¼æµç¨è®¾è®¡ï¼è§å设计çå个æ¹é¢çåºç¨å¼åéæ±ï¼éè¿ææ¾ï¼å£°æå¼ï¼å¯è§åå¼åçæ¹å¼æ¥éä½ä»£ç ã
Konyï¼å¨ä½ä»£ç æ¹é¢ï¼Kony AppPlatformæ¯å¼å¾ä¿¡èµçåçåå ¬è®¤çé¢å è ãAppPlatformå¯æ¯«ä¸å¦¥åå°æä¾é度ï¼éè¿å¯éå¤ä½¿ç¨çç»ä»¶åå®æ¶åä½å·¥å ·å éå¼åï¼ä»¥ä¿æ项ç®æ£å¸¸è¿è¡å¹¶ä¸å¢éæåä¿æä¸è´ãéä¸å¼ä»£ç åºä¸ºææ设å¤åæä½ç³»ç»æä¾æ¯æï¼ä¸ï¼ çæ¬å°æä½ç³»ç»éæï¼å®ç°çæ£çæ¬å°åä½éªï¼åæ¶ç®åæ¯æ并æ大é度å°åå°ç»´æ¤ãKonyä¸çåºç¨ç¨åºä¸ºåæ°æä¾äºé¢åæªæ¥çåºç¡ï¼å¹¶å¯çµæ´»å°æ ç¼éææ°å ´ææ¯ï¼å æ¬AIï¼å¢å¼ºç°å®ï¼æºå¨äººï¼ç©èç½ï¼NLPï¼å¯ç©¿æ´è®¾å¤çã
OutSystemsï¼OutSystemsæ¯å¿«éåºç¨å¼åç头å·ä½ä»£ç å¹³å°ï¼å¹¶ä¸æ¯å¹´Gartneré«ç产åå¹³å°å³æå¡éå象éçé¢å¯¼è ãOutSystemsæ¯å°ä½ä»£ç åè½ä¸é«çº§ç§»å¨åè½ç¸ç»åçå¯ä¸è§£å³æ¹æ¡ï¼æ¯ææ´ä¸ªåºç¨ç¨åºç»åçå¯è§åå¼åï¼å¯è½»æ¾ä¸ç°æç³»ç»éæã
Alpha Software Corporationï¼Alpha软件æä¾å¯ä¸çç»ä¸ç§»å¨åWebå¼ååé¨ç½²å¹³å°ï¼å ·æç¬ç¹çâæ ç âåâä½ç â模å¼ã该平å°éè¿å 许ï¼LOBï¼ä¸å¡ä¸ä¸äººåä¸ITå¼å人å并è¡å·¥ä½ï¼æ建èªå·±æéçæºè½ææºåºç¨ç¨åºï¼ä»è大大åå°äºä¼ ç»ä¸ç§»å¨åºç¨ç¨åºå¼åç¸å ³çç¶é¢ï¼ä»è大大å å¿«äºæ°åå转åã
AgilePointï¼AgilePoint NXæ¯ä¸ä¸ªä½ä»£ç å¼åå¹³å°ï¼å®å 许å¼å人ååâèªç±ç¨åºåâè½»æ¾å°å°è·¨èè½/è·¨ç»ç»çä¸å¡åºç¨ç¨åºé¨ç½²å°è·¨å¤ä¸ªç¯å¢åäºå¹³å°çæµç¨ä¸ãå®çâä¸æ¬¡æ建åå¤æ¬¡éç¨âç¹æ§ä¸ºåºç¨ç¨åºå¼åå®ä¹äºä¸ä¸ªæ°æ¦å¿µãéçç»ç»çæ°åå转åè¿ç¨ä¸ä¸å¡éæ±çåå±ï¼ç¸åçå ³é®ä¸å¡åºç¨ç¨åºå¯ä»¥èªéåºå°ä»¥åæ ·çé度åå±ã
Betty Blocksï¼Betty Blocksçç®æ æ¯å°å¹´ï¼ä»»ä½äººé½å¯ä»¥æ建ä¸ä¸ªåºç¨ç¨åºã 'å¦ä½æè½è®©äºæ åå¾æ´è½»æ¾'æ¯Betty Blocksæåçä¸åçåºç¡ãéè¿å¯è§å建模快éç´è§å°å¼ååºç¨ç¨åºï¼%çå¨äºï¼å¤è®¾å¤å跨平å°ä¸ççµæ´»UIæ建设计ãèææè¿äºé½æ²¡æä»»ä½ä»£ç ã
Caprizaï¼Caprizaéè¿ä½¿ç¨ç°æä¸å¡åºç¨ä¸ºç§»å¨è®¾å¤ä¸ç管ç人åå¿«éæä¾ç®åï¼æ´åçä½éªï¼ä»èæ¹åå ¬å¸å®¡æ¹çæ¹å¼ãéè¿è¿æ ·åï¼ç®¡ç人åå¯ä»¥éæ¶éå°ååºææºçä¸å¡å³çï¼å¹¶æé«ä¸å¡ææ·æ§ã
Caspioï¼Caspioå å ¶æç¨æ§ï¼å¿«éä¸å¸åä¼ä¸çº§åè½èæ·±åä¸å¡å¼å人åçéçã使ç¨å¯è§åç¹å»å·¥å ·ï¼ä¸å¡å¼å人åå¯ä»¥æ§è¡æ´ä¸ªåºç¨ç¨åºç设计ï¼å¼ååé¨ç½²æµç¨ï¼ä»è使ä»ä»¬è½å¤å¿«é交ä»æå°å¯è¡äº§åï¼å¹¶ç»§ç»æç §å¸åºéæ±è¿è¡è¿ä»£ã该平å°è¿æä¾å ç½®çå®å ¨æ§å¶ï¼æ²»çååè§æ§ - å¦HIPAAï¼FERPAï¼FIPS -2å欧çéç¨æ°æ®ä¿æ¤æ¡ä¾ï¼ä½¿å ¶ç¹å«éç¨äºå¤§åä¼ä¸åé«åº¦ç管çè¡ä¸ã
æ´å°Boomiï¼æ´å°Boomiæ¯äºéæåå·¥ä½æµç¨èªå¨å软件çä¾åºåï¼ä½¿ç¨æ´å°Boomiè¡ä¸é¢å çä½ä»£ç iPaaSå¹³å°ï¼ç»ç»å¯ä»¥è¿æ¥ä»»ä½æ¸ éï¼è®¾å¤æå¹³å°çä»»ä½å°æ¹ï¼å¹¶ä¸æææ¸ éï¼è®¾å¤æå¹³å°è¿è¡äºå¨ãBoomiç»ä¸å¹³å°å æ¬Boomi Flowï¼ä½ä»£ç å·¥ä½æµç¨èªå¨åä¸äºåçéæï¼ç¨äºæ建åé¨ç½²ç®åèå¤æçå·¥ä½æµç¨ï¼ä»èææå°æ¨å¨ä¸å¡åå±ã
Kintoneï¼å¢éå¯ä»¥è¿è¡ï¼æµè¯åè¿ä»£æµç¨ï¼å¹¶éè¿Kintoneçæ 代ç å·¥ä½æµèªå¨åå·¥å ·é«æå°ç®¡çä»»å¡ã该平å°å ·æåæ¯å¼å·¥ä½æµç¨ï¼æ 代ç åºç¨ç¨åºæ建ååºäºè§¦åå¨çéç¥ï¼å¹¶ä¸å¨æ¯ä¸æ¥ä¸é½å ç½®äºåä½ãå¢éå¯ä»¥å¿«éæ¹ä¾¿å°å¯¼èªæ°æ®åºï¼ä½¿ç¨æäºä½¿ç¨åå¿«éé ç½®çè§å¾ï¼è¿æ»¤å¨åæ¥åæ¥æ·±å ¥åææ°æ®ãå¼å人åè¿å¯ä»¥ä½¿ç¨Kintoneçå¼æ¾å¼APIåJavaå°åºç¨ç¨åºå®å¶åå·¥ä½æµèªå¨åæåå°ä¸ä¸ªæ°çæ°´å¹³ã
K2ï¼K2æä¾äºä¸ä¸ªå¨ç§»å¨ï¼å·¥ä½æµç¨åæ°æ®æ¹é¢åè¶çæ¢å®å¹³å°ãK2çæ ¸å¿ä¼å¿æ¯æ¯ææ建å å«ç§»å¨è®¾å¤ï¼å·¥ä½æµç¨åæ°æ®çå¤æåºç¨ç¨åºãè¯¥å ¬å¸æä¾äºä¸ä¸ªæ°æ®å»ºæ¨¡ç¯å¢ï¼å 许å¼å人åå建èææ°æ®è§å¾ï¼å°å¤ä¸ªè®°å½ç³»ç»éä¸å°ä¸ä¸ªè§å¾ä¸ãè¿å 许å¼å人åå建æ°æ®çæ½è±¡è§å¾ã
Magic EdTechï¼Magic EdTechæä¾é«çº§ç§»å¨è§£å³æ¹æ¡ï¼å¹¶æ¥æå é¨ä¸ä¸ç¥è¯ï¼å¯å¨ç§»å¨é¢åå®æ½æä½³åææ°çææ¯å®è·µãå¯å¸®å©æ¨å¿«éå¼å符åå½å®¶åå½å®¶æ åçé«è´¨éå 容ã
Mendixï¼Mendixæ¯ä¸ä¸ªä½ä»£ç ï¼é«ç产ççå¹³å°ï¼å¯ä»¥å¸®å©ä¼ä¸æ¹åä»ä»¬çåæ°æ¹å¼ãéè¿ä½¿ç¨å¯è§å模åï¼å¨Mendixä¸æ建åºç¨ç¨åºé常ç®åï¼å¿«éä¸ç´è§ï¼å¯ä½¿å¼å人ååä¸å¡åæ人åçä¼å¤äººåæ建强大çåºç¨ç¨åºï¼èæ éç¼å代ç ãåå©æ¨¡å驱å¨å¼åï¼ä¸å¡é¢å¯¼è åITé¨é¨å¯ä»¥å ±äº«è¯è¨æ¥å¿«éæ建åºç¨ç¨åºã
微软PowerAppsï¼å¾®è½¯ä½¿ç¨æ·è½å¤ä½¿ç¨å ¶PowerApps解å³æ¹æ¡å建èªå®ä¹ä¸å¡åºç¨ç¨åºãPowerAppså ·æææ¾å¼âå ¬æ°å¼å人åâä¸ç¨è§£å³æ¹æ¡ï¼æ¨å¨éè¿Microsoft Common Data Serviceæ建åºç¨ç¨åºãPowerAppså¯ä¸å ¬å¸çèªå¨åå·¥ä½æµè§£å³æ¹æ¡Microsoft Flowä¸èµ·ä½¿ç¨ï¼ç¨äºæ°æ®éæãç¨åºç¨ç¨åºè®¾è®¡çç¹å»å¼æ¹æ³å¿«éæ建åºç¨ç¨åºãä»å¤§é模æ¿ä¸è¿è¡éæ©æä»ç©ºç½ç»å¸å¼å§ãè½»æ¾å°å°æ¨çåºç¨ç¨åºè¿æ¥å°æ°æ®å¹¶ä½¿ç¨ç±»ä¼¼Excelç表达å¼è½»æ¾æ·»å é»è¾ãå°æ¨çåºç¨åå¸å°webï¼iOSï¼AndroidåWindows ã
Nintexï¼Nintex帮å©ä¼ä¸èªå¨åï¼åè°åä¼åä¸å¡æµç¨ãååè¯¥å ¬å¸çæºè½æµç¨èªå¨åï¼IPAï¼è§£å³æ¹æ¡ï¼ITä¸ä¸äººååä¸å¡çº¿åå·¥ä¾é Nintexå¹³å°å°æå¨æåºäºçº¸å¼ çæµç¨è½¬å为é«æçèªå¨åå·¥ä½æµç¨ï¼å¹¶å建æ°å表åï¼ç§»å¨åºç¨ç¨åºçã
Oracle Autonomous Visual Builder Cloudï¼éè¿å¨æ¯æOracle SaaSåºç¨ç¨åºçåä¸ä¼ä¸çº§äºå¹³å°ä¸åºäºç´è§çåºäºæµè§å¨çå¯è§åå¼åï¼å éå¼ååæ管Webå移å¨åºç¨ç¨åºãå建ä¸å¡å¯¹è±¡ï¼æ·»å æµç¨èªå¨åï¼éæå¤é¨ç³»ç»ï¼å¹¶å¨éè¦æ¶å©ç¨æ åçJavaæ¥æ´å¿«å°å建åºè²çåºç¨ç¨åºã
Pegasystemsï¼Pegaä½ç åºç¨ç¨åºå¼åå¹³å°æä¾çåºç¨ç¨åºæ¯ä¼ ç»æ¹æ³æ´å¿«ãä¸å¡åITå®æ¶åä½ï¼ä½¿ç¨è§è§æ¨¡åæ¥ææä¸å¡éæ±ï¼å¿«éè¿ä»£å缩æ¾åºç¨ç¨åºï¼åæ¶ç¡®ä¿å¨ç¼è¯è¿ç¨ä¸ä¸ä¼ä¸¢å¤±ä»»ä½å 容ãPegaèªå¨çæåºç¨ç¨åºåå ¶ææ¡£å®¡æ ¸è®°å½ï¼ææè¿äºé½å°å¯¼è´å¼åææ¬éä½ï¼ ã
Quick Baseï¼Quick Baseæ¯é¢å çæ 代ç åºç¨ç¨åºå¼åå¹³å°ãè¶ è¿å®¶å®¢æ·ä½¿ç¨ï¼å æ¬è´¢å¯å¼ºä¼ä¸ä¸çä¸åï¼Quick Baseæ¨å¨å¸®å©ç¨æ·è§£å³ä¸å¡é¾é¢ï¼åæ¶ä¸ä¼å½±åITæ²»çãForresterè¿å°Quick Baseå为年åä¸å¼å人åä½ä»£ç å¹³å°çé¢å¯¼è ï¼è¯¥å¹³å°æ¯å¯ä¸ä¸ä¸ªéè¿å «é¡¹è¯ä¼°æ åè·å¾å·®å¼è¯ä¼°çææ¯ã
Salesforceï¼Salesforceæ¯éç¨äºæ管ä½ä»£ç åºç¨ç¨åºå¼åå¹³å°çæ大ä¾åºåä¹ä¸ã Lightning Platforméå®äºè¿ä¸ªä½ä»£ç 客æ·ç¾¤ï¼å¹¶å å«äºHerokuåSalesforce DXçå·¥å ·ä»¥åä¸ä»£ç ç¼å¶äººåçåä½ä¼ä¼´å ³ç³»ï¼è¿ç»äº¤ä»å·¥å ·ä¾åºåï¼ãSalesforceç移å¨ä½ä»£ç å¹³å°å¯å¸®å©å®¢æ·æ©å±ç±ä¾åºåç软件å³æå¡ï¼SaaSï¼CRMåºç¨ç¨åºç®¡çç客æ·æ°æ®ï¼åæ¶å°å ¶ä¸å ¶ä»è®°å½ç³»ç»çæ°æ®æ··å并æ±æ»ã
Senchaï¼Sencha Ext JSæä¾å¼å人åå¼åæ°æ®å¯éåWebåºç¨ç¨åºæéçä¸åã该æ¡æ¶å å«ä¸ªç»è¿é¢æµè¯ï¼éæåä¸ä¸æ¯æçç»ä»¶åå·¥å ·ç强大åºï¼ä»¥ç®ååå éWebåºç¨ç¨åºå¼åè¿ç¨ã
ServiceNowï¼ç°å¨çå¹³å°éè¿ä½¿ä»»ä½äººè½å¤å¿«éæ建ï¼æµè¯åé¨ç½²è½å¤å¨æ´ä¸ªä¼ä¸ä¸èªå¨åå·¥ä½çåºç¨ç¨åºï¼å éæå¨ä¸å¡æµç¨çæ°ååãç¦å¸æ¯å ¨ç强ä¼ä¸ä¸æè¿å®¶å ¬å¸ä½¿ç¨å®æ¥å éå ¶æ°åå转å计åãå®è¿æ¯æææç¨äºITæå¡ç®¡çï¼ITSMï¼çServiceNowäºæå¡ï¼SaaSåºç¨ç¨åºï¼ï¼å®å ¨æä½ï¼å®¢æ·æå¡ç®¡çï¼äººåèµæºæå¡äº¤ä»ä»¥åç±åä½ä¼ä¼´å客æ·å¼åçæºè½åºç¨ç¨åºã
Xojoï¼Xojoæ¯ä¸æ¬¾è·¨å¹³å°å¼åå·¥å ·ï¼ç¨äºä¸ºæ¡é¢ï¼ç½é¡µï¼ç§»å¨åæ èæ´¾æ建åçåºç¨ç¨åºãXojoåºç¨ç¨åºç¼è¯ä¸ºæºå¨ä»£ç 以æé«æ§è½åå®å ¨æ§ãå®ä½¿ç¨åçæ§ä»¶ï¼å æ¤åºç¨ç¨åºå¨æ¯ä¸ªå¹³å°ä¸çå¤è§åæè§é½å¾å¥½ãç±äºå¯ä»¥ä½¿ç¨ä¸ç»æºä»£ç æ¥æ¯æå¤ä¸ªå¹³å°ï¼å æ¤å¼åé度æ¯ä¼ ç»å·¥å ·å¿«åãXojoæä¾äºä¸ä¸ªææ¾ç¨æ·çé¢æ建å¨åä¸ä¸ªç®åçå¼åç¼ç¨è¯è¨ã
druid源码学习笔记9_testOnBorrow&testOnReturn&testWhileIdl
druid源码中,关于testOnBorrow、testWhileIdle和testOnReturn的属性配置值得重点关注。在1.2.9版本后,这些属性的默认值与早期wiki中的记录有所不同。testOnBorrow的默认值从true变为false,而testWhileIdle的默认值则从false变为true。这表明代码在年后可能进行了更新,但wiki尚未同步更新。 testOnBorrow主要在getConnectionDirect方法中起作用,当设置为true时,获取连接后会执行validationQuery检查连接是否可用。如果连接不可用,将重新获取。而testWhileIdle则在连接空闲时间达到timeBetweenEvictionRunsMillis时执行验证,同样用于检查连接状态。 testWhileIdle与testOnBorrow互斥,如果两者都为true,仅执行testOnBorrow。计算空闲时间的规则涉及checkExecuteTime、lastKeepTimeMillis和当前时间的比较。 testOnReturn属性在DruidPooledConnection#close()方法,即归还连接时被调用。当设置为true时,回收连接后会检查其状态,如连接未关闭,会执行validationQuery。如果连接不可用,会关闭并计数,否则继续归还操作。 总结如下:testOnReturn在连接归还时检查,默认为false。
testOnBorrow和testWhileIdle在连接借用时检查,早期testOnBorrow为true,testWhileIdle为false,但新版本可能出于性能考虑进行了调整。
å°ç¨åºä½ä»£ç å¼åå¹³å°ï¼
è·ªæ±ä½ä»£ç å¼åæåªäºï¼
å¹´å½å 家ä¼ç§ä½ä»£ç å¼åå¹³å°æ±æ»çç¹ï¼
1ãå®æââé¿é
å®ææ¯é¿éå·´å·´èªç çä½ä»£ç åºç¨æ建平å°ï¼å¯æ大æé«å¼åæçãäºå¹´3æä¸çº¿ï¼ç¨æ·å¯ä»¥å¨å¯è§åçé¢ä¸ä»¥æææ½çæ¹å¼ç¼è¾åé 置页é¢ã表ååæµç¨ï¼å¹¶ä¸é®åå¸å°PCåææºç«¯ã
2ãç»ä¿¡Informatââåºç³åä½
ç»ä¿¡Informatæ¯é¢åä¸å¡äººåçä½/é¶ä»£ç å¹³å°ï¼å ·æé«åº¦çµæ´»çâæ°æ®+æé+æµç¨âå¨æä¿¡æ¯ç®¡ç模åï¼ç¨æ·ä¸éè¦ä¾èµä»£ç å¼åï¼å¯ä»¥éè¿èªä¸»é ç½®çæ¹å¼ï¼å¿«éæ建ä¼ä¸è¿è¥æéçå类管çç³»ç»ï¼äº®ç¹æ¯æä¾æ°¸ä¹ å è´¹çè¯ç¨ã
3ãç±éæââç¾åº¦
ç±éææ¯ç¾åº¦æºè½äºæ¨åºçä½ä»£ç å¼åå¹³å°ï¼æ¯æå¤ç§åºç¨é¡µé¢æ建形å¼åæ°æ®æ¥é©³æ¹å¼ï¼æ¢å¯èªå»ºæ°æ®æ¨¡åï¼ä¹å¯çµæ´»æ¥é©³å®¢æ·å·²ææ°æ®æºæ对æ¥å¤é¨APIï¼æ¯ææµ·éåè½ç»ä»¶ï¼å¹¶æ¯æèªå®ä¹ä»£ç ãç³»ç»åéåæ¥å£éé è½åï¼çµæ´»åº¦åª²ç¾ä»£ç å¼åã
4ãè½»èââç½æ
ç½æè½»èæ¯ç½ææ¨åºçä½ä»£ç å¹³å°ï¼ä»¥æ¨¡å驱å¨çæ¹å¼ï¼æ¯æææ½å³å¯æ建ä¸å¡æ¨¡åï¼æµç¨å¼æï¼æ¯æææ½çææ ååä¸å¡æµç¨ãæ¯æå¤å±æ¬¡ãç»ç²åº¦èµäº§å¤ç¨ï¼ä¸æ¬¡å¼åï¼å¤å¤ä½¿ç¨ï¼åºäºäºåçåºåº§ï¼ä¸é®åå¸ï¼èªå¨åé¨ç½²è¿ç»´ã
5ãå¾®æââè ¾è®¯
è ¾è®¯äºå¾®æä½ä»£ç 以äºå¼åä½ä¸ºåºå±æ¯æï¼éè¿è¡ä¸å模æ¿ãææ½å¼ç»ä»¶åå¯è§åé 置快éæ建å¤ç«¯åºç¨ï¼å°ç¨åºãH5ãPCWebåºç¨çï¼ï¼å å»äºä»£ç ç¼åå·¥ä½ï¼åºäºè ¾è®¯ççæé¾ï¼å®å¯ä»¥éæä¼ä¸å¾®ä¿¡ãé¾æ¥è ¾è®¯SaaSçæãå¿«éæ建å°ç¨åºã
6ãIVXå¹³å°ââäºå¨åç§æ
0代ç å¯è§åç¼ç¨å·¥å ·ï¼å¯ä»¥å¿«éçæç½ç«ï¼æ¬æºAPPåå®å ¨éæçâ微信å°ç¨åºâå¼åç¯å¢ãæ¨ä¹å¯ä»¥ç´æ¥çææºä»£ç ã带æ¥äºç¼ç¨æ¹æ³åç¼ç¨è¯è¨çå级ã
7ãæ´»åæ ¼ââè¡èå
æ´»åæ ¼å ·ææ´å¼ºçå¼æ¾æ§åæ©å±è½åï¼å ç½®æ°æ®åºéæãWebAPIéæã串å£éæåç¼ç¨æ©å±è½åï¼å¯ä¸è¿è¡å¨å±åç½çå类软件ã硬件以åææ°çäºèç½æå¡æ ç¼éæï¼ä¸ºæéç°æ软硬件ï¼æ建ä¼ä¸æ°ååå¹³å°æä¾åå®çææ¯ä¿éã
8ãç®éäºââå¸è½¯
ç®éäºæ¯ä¸ä¸ªçµæ´»ä¸æäºä½¿ç¨çåºç¨ç¨åºæ建平å°ï¼å æ¬èªå®ä¹è¡¨åï¼èªå®ä¹æ¥åï¼èªå®ä¹æµç¨å¼æï¼æ¶æ¯æéåå ¶ä»æ¨¡åãæ é代ç ï¼æ¨å¯ä»¥å¿«éèçµæ´»å°æ建ä¸å¡ç®¡çç³»ç»ï¼ä»¥æ»¡è¶³ä¼ä¸ç个æ§å管çã
9ãæéäºââä¸ä¼æé
ç¨æ·ä¸éè¦ä»£ç å¼åå°±è½å¤æ建åºç¨æ·ä½éªä¸ä½³çéå®ãè¿è¥ã人äºãéè´çæ ¸å¿ä¸å¡åºç¨ï¼æéä¼ä¸å é¨æ°æ®ï¼ä¹è½å¤éè¿APIåWebhookåå ¶ä»ç³»ç»å¯¹æ¥ãå¹³å°å çèªå¨åå·¥ä½æµè¿å¯ä»¥å®ç°å®¡æ¹ãå¡«åçæ§å¶æµç¨åä¸å¡èªå¨åï¼å¦æç¨æ·ä¼ä¸ä½¿ç¨ééæä¼ä¸å¾®ä¿¡ï¼ä¹å¯ä»¥å°å¹³å°å æ建çåºç¨ç´æ¥å¯¹æ¥å°å·¥ä½å°ä¸ã
ãäºè¡¨ââä¹é软件
äºè¡¨æ¯ä¸ä¸ªåºäºäºç«¯çé¢åæç»ç¨æ·çä¿¡æ¯ç³»ç»è®¾è®¡ä¸è¿è¡å¹³å°ï¼åºäºWeb表åçæ¦å¿µå¼åçæ建表åçåè½é常快éä¸æäºä½¿ç¨ï¼é¢åä¸å¡ï¼éç¨è¡¨æ ¼å¼ç¼ç¨æ¹æ³ï¼è®¾è®¡è ä¸åéè¦å¦ä¹ ä¼ ç»ä»£ç ç¼ç¨åæ°æ®åºè®¾è®¡ã
ãææäºââä¹ç« ä¿¡æ¯
ææäºæ¯ä¸ä¸ªä½ä»£ç åºç¨ç¨åºå¹³å°ï¼è¯¥å¹³å°å°ä¼ä¸çå端åå端è¿æ¥èµ·æ¥ãå¯ä»¥èªå®ä¹åç§ä¼ä¸åºç¨ç¨åºå¹¶å°å ¶ç¨äºäºå¸æ·ï¼å¹¶ä¸å¯ä»¥å®æ¶å¨çº¿è¿è¡è°æ´ãå¼å人åè¿å¯ä»¥éè¿ä»£ç èªç±å¼åã
ãJePaaSââå¯ç¹ä¼ä¸
JEPaaSæ¯å½å å®ç¨çä½ä»£ç å¿«éå¼åå¹³å°ï¼å ·æå¹´çææ¯æ²æ·ï¼å¯è§åå¼åç¯å¢ï¼ä½ä»£ç ææ¾é ç½®å¼å以åæå ¶ç®åçæä½ï¼å¯ä»¥æ大å°å¸®å©å ¬å¸åå°äººå·¥åæ¶é´ææ¬ã
ãåçéæ¹ââåç软件
åçéæ¹åæ°ç使ç¨é ç½®æ件æ¥æè¿°ä¸å¡æ¨¡ååä¸å¡åè½ãå¼å人ååªéè¦ç¼åç®åçé ç½®æ件å³å¯æ建ä¼ä¸çº§åºç¨ç¨åºãå¯ä»¥éè¿è®¾ç½®åæ°æ¥é ç½®æ°ç¾ä¸ªç³»ç»åè½ã
ãAPICloudââç¨å软件
é¢å ç移å¨åºç¨ç¨åºäºæå¡å¹³å°ä¸ºå¼å人åæä¾äºåç§APPå¼åå·¥å ·ï¼éç¹æ¯ç§»å¨APPå¼åï¼ç§»å¨APPç产çã
ãè½»æµââææ ¡ä¿¡æ¯
å¨çº¿ä¸å¡æµç¨ç³»ç»å¯ä»¥éè¿è½»æµè¿è¡å®å¶ãéè¿äººåï¼æµç¨åæ°æ®ç管çï¼å¢å¼ºä¼ä¸ä»·å¼æµï¼éè¿å¨çº¿åä½ï¼å ±äº«ï¼ä¸å¡æ²éï¼å建âæ°ä¸ä»£âä¼ä¸å¨ææ°æ®åºãå¼åçé¢è¶äºå¹´è½»åã
ãéæ¹ç½è¡¨ââéæ¹æä¹
Excelåºäºè¡¨åçå¼åå·¥å ·ï¼æ为å®å¶çæ°æ®åºåºç¨ç¨åºï¼å¹¶æä¾äºæ éçä¸å¡æ建åºç¨ç¨åºå¹³å°çèªç±ãå¨æ¯å¤©çå®æ½å¨æä¸ï¼Excelå°æ建åºç¨ç¨åºä»¥åæ建å®æ½åæä½éæã
ãClickPaaså¹³å°ââç±æ¹æ¯ç§æ
å´ç»å建è ï¼è¿æ¥å¨åé«å¼ºåº¦åºå±è¿ä¸ä¸ªæ¨¡åå¿«éæ建系ç»ååºç¨ç¨åºã模å驱å¨çå¼åæ¯è®¾è®¡æ¦å¿µï¼å æ¬æ¦å¿µæ¨¡åï¼æ°æ®æ¨¡åï¼é¡µé¢æ¨¡åï¼è¿ç¨æ¨¡åçã
ãJeecgBootââå½ç¬ä¿¡æ¯
JeecgBootæ¯ä¸æ¬¾åºäºBPMçä½ä»£ç 产åï¼æ¯æå¾®æå¡ãåè½å ¨é¢ï¼å¯ä¸é®çæåå端代ç ï¼ç®ååè½ä¹å¯å®å ¨å¨çº¿å®æãæ¢è½å¿«éæé«æçï¼èçç åææ¬ï¼åæ¶åä¸å¤±çµæ´»æ§ã
ãæ°äºââ奥å²
è·é¿éææï¼èé é¿é强å¿åå±ï¼ééåæ级å®å¶æå¡åï¼æä¾è¡¨åãæµç¨å¼æï¼æ¥è¡¨çåè½ã积æ¨å¼åºç¨æ建ï¼åæ¶å ·å¤ä»£ç å¼ååå¤é¨ç³»ç»éæè½åãä¸éééæï¼æ¯æPC端ä¸ç§»å¨ç«¯ä½¿ç¨ã
ãJ2PaaSââåé¼ç§æ
J2PaaSæ¯åé¼ç§æåºäºå¹´ææ¯æ²æ·å项ç®ç»éªèç åï¼æ©å¨å¹´å°±è·å¾å ç¼ç å½å®¶åæä¸å©ï¼ç®åç»è¿5次çæ¬è¿ä»£ï¼è¦ç软件项ç®éæ±åæã设计ãå¼åãæµè¯ãè¿è¡ãç»´æ¤ä¸ç®¡ççå ¨è¿ç¨ãJ2PaaSå¹³å°æ常è§éè¦ç¨åºåå®æçåè½éæå¨æ¡æ¶ä¸ï¼å°è£ 为å大åæ°ï¼å¼å人ååªéå ³æ³¨ä¸å¡é»è¾ï¼é¡µé¢ç»è£ åæµç¨è®¾è®¡çç¸å ³åè½å·²ç»å ç½®å®æï¼æ¯ä¸æ¬¾ä¼ä¸çº§ä½ä»£ç å¹³å°ã
ãå为äºAppCube
åºç¨éæ¹AppCubeï¼ç®ç§°AppCubeï¼æ¯ä¸æ¬¾ä½ä»£ç åºç¨å¼åå¹³å°ï¼æºäºå为åºç¨å¼ååæ°åå转åçå®è·µï¼æä¾äºäºä¸æ ç åãä½ç åãæ¯æå¤ç åçåºç¨å¼å模å¼ï¼å±è½äºææ¯çå¤ææ§ï¼æåäºä¼ä¸å¼åçæçãåæ¶æä¾åºç¨èµäº§çå¼åæ ååå¾®æå¡æ¡æ¶ï¼å©åä¼ä¸ä¸ææ²æ·å¯å¤å¶çå¥ä»¶ï¼å éåºç¨çå®å¶ï¼å¹¶éè¿å¼æ¾ççæï¼å®ç°å¥ä»¶èµäº§çåä¸åç°ã
ãé£ä¹¦å¤ç»´è¡¨æ ¼ââåè
åèè·³å¨é£ä¹¦å¤ç»´è¡¨æ ¼æ¯ä¸æ¬¾ä»¥è¡¨æ ¼ä¸ºåºç¡çæ°ä¸ä»£æçåºç¨ãå®å ·å¤è¡¨æ ¼çè½»çåä¸å¡ç³»ç»ç强大ï¼èåäºå¨çº¿åä½ãä¿¡æ¯ç®¡çåå¯è§åè½åï¼è½å¤èªéåºå¢éæç»´åä¸å¡åå±éæ±ï¼æ¯å ·å¤ä¸ªæ§åè½åçä¸å¡ç®¡çå·¥å ·ã
ãéè¶äºè穹ââéè¶è½¯ä»¶
éè¶äºè穹çå¼åæå¡äºæ¯åºäºéè¶ç¬åç第å代å¨æé¢å模å(KDDM)ï¼å¼åæå¡äºæä¾å¨æå»ºæ¨¡å·¥å ·ï¼æ¯æå¯è§åé ç½®ãä½ä»£ç å¼åï¼è½»æ¾æ建åºäºå¾®æå¡æ¶æçèªå®ä¹åºç¨ã为äºåºç¨(SaaSæå¡)çå¼åãé¨ç½²ãè¿è¡åè¿è¥æä¾ä¸ç³»åæå¡å管çå·¥å ·ï¼æ¶µçå¾®æå¡ç»ä»¶ãå¼åæå¡ãè¿è¡æå¡ãæå¡ç®¡çãAPIæå¡æ¡æ¶ãåºç¨å»ºæ¨¡ãäºæ¯ææå¡ä¸è¿ç»´æå¡çãéè¶äºÂ·è穹å¼åæå¡äºåºäºå¨æé¢å模åæä¾å¨æå»ºæ¨¡å·¥å ·ï¼æ¯æå¯è§åé ç½®ãä½ä»£ç å¼åï¼è½»æ¾æ建åºäºå¾®æå¡æ¶æçèªå®ä¹åºç¨ã
ãæ³å¾®ä½ä»£ç ââæ³å¾®
æ³å¾®ä»¥âç»ç»æéå¼æã建模å¼æãæµç¨å¼æãéæå¼æãå 容å¼æãé¨æ·ä»¥åæ¶æ¯å¼æâç7大å¼æ为æ¯æï¼å¸®å©ç»ç»æé å¼æ¾å ±äº«çä½ä»£ç åºç¨æ建平å°ãå¿«éæ建è½åæ¯æ³å¾®ä½ä»£ç æ建平å°çéè¦ç¹æ§ï¼ç»ç»éè¿åå°å¼æé ç½®æ¹å¼ï¼æææ½å³å¯æ建个æ§ååºç¨åºæ¯ãçµæ´»ç表å设计ãæµç¨æ建åè½ï¼è¿æå¨çº¿è°è¯ãæºè½ä¿®æ¹åè½ï¼è®©åºç¨æ建æ´å æ¹ä¾¿ãæºè½ãæ³å¾®ä½ä»£ç å¹³å°å®ç°äºå é¨ååï¼ç¡®ä¿å é¨æµç¨ãé¨æ·ãææ¡£ãæ°æ®ãè§è²ä¹é´çååå ³èï¼ç¹å»ä»»ä½ä¸ä¸ªå段ï¼å³å¯è¿½æº¯ä¸ä¹ç¸å ³çæ°æ®åå·¥ä½å 容ï¼äºè§£ä¸å¡å ¨è²ãéè¿æ³å¾®ä½ä»£ç ä¸å¡æ建平å°ï¼ç»ç»å¯ä»¥å¨ä¸ä¸ªå¹³å°è¿æ¥ãæ©å±åéæERPãCRMãHRMãSRMçåºç¨ã
ãiGIXââ浪潮
浪潮iGIXä¼ä¸æ°ååè½åå¹³å°ï¼å å«ææ¯ãæ°æ®ãä¸å¡ä¸å¤§ä¸å°ï¼åºäºäºåçææ¯ï¼å¾®æå¡æ¶æï¼èåå¼¹æ§è®¡ç®ãæºè½ç©èã大æ°æ®æ²»çãæºå¨å¦ä¹ ã认ç¥æå¡ãæ°åæ°æ®å¹³å°çåºç¡ææ¯ï¼æä¾ä½ä»£ç å¼åãDevOpsãæ··åäºéæãçæå¼æ¾çåºç¨åæ°å éè½åï¼å ç½®æ°æ®èµäº§ç®¡çä¸ä¸°å¯çæ°æ®æå¡ï¼æç ´æ°æ®å£åï¼å ¨é¢æ´åä¼ä¸æ°æ®èµæºï¼æ建åºäºæ°æ®çåæ°è½åï¼æ²æ·å ±äº«ä¸å¡æå¡ï¼æ建ä¸å¡æå¡è½åã浪潮iGIXæ¯æä¼ä¸ææ¯ãä¸å¡ãæ°æ®ä¸åä¸èååæ°ï¼èµè½ä¼ä¸æ建æ°ååä¸å°ï¼ä¸ºä¼ä¸å»ºç«æ´å ·åæ°çµæ´»çä¸å°ç»ç»æºå¶åä¸å¡æºå¶ï¼ä½¿åå°ä¸å¡æ´ææ·ãæ´å¿«éçéåºå¿«éå¤åçåä¸ç¯å¢ï¼å éä¼ä¸å®ç°æ°åå转åã浪潮iGIXæ¨å¨æé ä¸ä¸ªå®æ´çä¼ä¸åºç¨çæç³»ç»ï¼æ¢æ¯æµªæ½®äºERPGSCloudçåºç¡æ¯æå¹³å°ï¼ä¹æ¯é¢åä¼ä¸ä¿¡æ¯ä¸å¿/å ¬å¸ãåä½ä¼ä¼´ãç¬ç«è½¯ä»¶å¼ååï¼ISVï¼ççæèµè½å¹³å°ï¼æ¿åä¼ä¸æç»çæ°åååæ°è½åã
ãæ鲸äºââçé»çå¨
çé»çå¨æ鲸äºæ¯é¢å çä½ä»£ç åBPMPaaSæå¡åä¹ä¸ï¼äº§ååè½å·²è¦çä½ä»£ç ãæºè½æµç¨ãéæã移å¨ãä¸å¡è§åå¨å çPaaSè½åï¼æ¯ææ°åå转åä¸ååå±çº§å«çè½åè¦æ±ã产åå¸å±ä¸æä¾é¢å大ä¸åç»ç»çAWSPaaSä½ä»£ç å¼åå¹³å°åé¢åæé¿åç»ç»çæ鲸äºä½/æ 代ç äºåºç¨å¹³å°ï¼å¸®å©ç¨æ·å éæ°åå转ååè¿è¥åæ°ãæ æç¨æ·è¦çåå·¥ãéèãæ¿åºãæè²ãçµåé¶å®ãè½æºåå·¥ãå·¥ç¨å»ºççåç´è¡ä¸ãå¹´è·éå±±åå ¬A+è½®æç¥æèµï¼å ±å»ºææ¡£åä½+ä½ä»£ç PaaSåçæï¼æ»¡è¶³ä¸åè§æ¨¡ãä¸åé¢åç¨æ·å¯¹æ°åå转åçéæ±ã
ãèåä½ä»£ç ââèå软件
èå软件æ¯å½å ç¥åçç¥è¯ç®¡çãååOAæå¡åçãå¨åååå ¬å¸åºåé åºè¾é«çç¥å度ï¼ä¹æ¯ææ©ä¸äºèç½TOBçæèµ°çæè¿çèçååååãå¹´èå软件ä¸ééè¾¾ææç¥åä½ï¼ç´è³å¹´éé注èµï¼èå软件ä¸ééçæå¼å§ç´§å¯ç»åï¼ç±äºå ¶è¿å¾ç大é大客æ·é¡¹ç®ç»éªå产åæå¡ç积累ï¼èå软件å¨åºäºå¤§å®¢æ·çâè¡¨æ ¼+æµç¨+æ°æ®âçä½ä»£ç æå¡é¢åæçä¸å®çå åä¼å¿ï¼å½¢æäºå¯¹ééçæçå¸åºè¡¥å ãèå软件水桶å产åç¹å¾æ¯è¾çªåºï¼ä½ä¸ºä¸ä¸ªèçååOAåçï¼èå软件å°ä½ä»£ç ä½ä¸ºè½åä¹ä¸è¾åºç»å®¢æ·çå¾åæ´æµï¼å¦ä½å®ä½/平衡âä½ä»£ç âç产ååè·¯å¾å°æ¯èåçææä¹ä¸ã
ãä¼ä¼´äºââä¼ä¼´æºæ §
ä¼ä¼´äºï¼æ¯ç±æç年以ä¸è®ºå软件å¼ååä¸å°ä¼ä¸æå¡ç»éªçåDiscuz!å¢éæé çï¼åç»âä¼ä¼´äºè¡¨æ ¼âãâä¼ä¼´åå ¬âï¼éæ¥å级为ä¸ä¸ªä¸ºä¼ä¸ç»è¥æå¡çæ°æ®å¯è§åå¹³å°ï¼ä¸ºä¼ä¸çå ¨æµç¨è¿è¥ç®¡çä¸ç»è¥æ ¸ç®æä¾æ´ä½è§£å³æ¹æ¡ãéè¿å¼ºå¤§çæ°æ®åºå¼æåæéæ¶æï¼æé å¯çµæ´»å®å¶çæµç¨å¼æä¸å¤§æ°æ®åæå¼æï¼é åä¸å®¶çº§ç»è¥é¡¾é®ä¸æå¡ï¼æé å ¨æµç¨ãå®æ¶å¯è§åçç»è¥æ ¸ç®ä½ç³»ï¼ä¸ºä¼ä¸æ建起ä¸ä¸åå¿çç»è¥ä¼ä¼´å ³ç³»ï¼å®ç°åå·¥æç»æé¿ãç»ç»æç»åé©ãä¸ç»©æç»æé«ã
ãè½»éªå µââéç°ä»£
è½»éªå µä½ä»£ç å¼åå¹³å°ï¼HussarLCDPï¼æ¯ä¸æ¬¾éç°ä»£å»ºè®¾äºåä½å¹´çå¼åå¹³å°äº§åã使ç¨è¯¥äº§åå¯æ éç¼ç ï¼é¶ä»£ç ï¼æéè¿å°é代ç å°±å¯ä»¥å¿«éçæé«ä½éªçåºç¨ç¨åºãå¯è§ç¼ç¨ï¼æè§æå¾ï¼å¯è§åUIå¸å±æ¹æ¡ï¼æè§å³æå¾çå¼åä½éªï¼ä¸ç²¾äºä¸å¡æ°æ®ä¸å°çä¿¡æ¯èåçæ°æ®å¯è§åï¼éè¿å¾å½¢çé¢è½»æ¾æ建ä¸ä¸çå¯è§ååºç¨ï¼æ»¡è¶³æ¨æ¥å¸¸ä¸å¡çæ§ãè°åº¦ãä¼å±æ¼ç¤ºçå¤åºæ¯éæ±ã
ãæ°ç¿æ°æ®ââå京æ°ç¿
æ°ç¿æ°æ®æ¯ä¸å®¶æ°æ®é©±å¨çä¼ä¸çº§æ 代ç 软件平å°åï¼ä»¥â让人人尽享æ°æ®ä»·å¼â为ä¼ä¸æ¿æ¯ï¼â让天ä¸æ°æ®å¿«é使ç¨â为使å½ï¼å¤å¹´æ¥éè¿èªèº«ææ¯ä¼å¿å åèå大æ°æ®åè¡ä¸ä¸å¡ç§¯ç´¯ï¼å¸®å©ä¼ä¸æ大åæ°æ®ä»·å¼ï¼ä»¥åæ°ç软件å¼å模å¼ï¼å¼å¯è½¯ä»¶æºè½å¶é æ°é©å½ï¼ä¸ºä¸å½ä¼ä¸çæ°æºå转åæéãå ¶ç¬æçåå模åï¼è½å¤å®æ´è¦çæ°æ®ãåæã管çãè¿è¥å个é¢åï¼æ¶å客æ·è¡¨åãæµç¨ãæç´¢ãéæãåæçå ¨ä¸å¡çå½å¨æã
个平å°å ¨é¨çç¹å®æ¯ï¼å¸æ对大家ææ帮å©å~
æåªäºæ¯è¾å¥½ç¨çä½ä»£ç å¼åå¹³å°ï¼
æ¯è¾å¥½ç¨çä½ä»£ç å¼åå¹³å°æå®å¤©è½¯ä»¶ãå®æãç®éäºçã
ä½ä»£ç å¼åå¹³å°çæ ¸å¿ä»·å¼è§æ¯ä¸ºäºæé«åºç¨ç¨åºå¼åçæçï¼ä½ä»£ç å¼åå¹³å°ä¸»è¦ç使ç¨è æ¯ç¨åºåï¼ç¨åºåéè¿ä½¿ç¨ä½ä»£ç å¹³å°æé«äºå·¥ä½æçåå°äºIT积åãå¼åç³»ç»çæ ¸å¿ç®çæ¯ä¸ºäºæåæçï¼å轻人工çå·¥ä½éãå æ¤å¿ ç¶è¦å¤çå¾å¤å¤æçä¸å¡é»è¾ãæ¯å¦å¼åååä»æ¬¾ç®¡ççæ¶åè¯å®è¦è®¡ç®å·²ä»æ¬¾ãæªä»æ¬¾ãå¼åç©åç´ç¨çæ¶åè¦æ£é¤åºåï¼è¿äºé½éè¦ç¼åä¸å¡é»è¾ä»£ç ãæççä½ä»£ç å¼åå¹³å°ï¼åºè¯¥æä¾å®æ´çå ¥å£ï¼è®©å¼å人åå¯ä»¥ç¼ååç§ä¸å¡é»è¾ãä½ä»£ç å¼åå¹³å°éè¿é ç½®åçæ¹å¼æ建系ç»ååï¼ä¸è¾¹æ建ä¸è¾¹è¿è¡çææï¼æ ¹æ®ææéæ¥è°æ´åå®åãå¾å¿«å°±å¯ä»¥æ建åºç³»ç»ååãå³ä½¿ç³»ç»æ£å¼ä¸çº¿ï¼ä¹å¯ä»¥éæ¶æç §å®¢æ·çéæ±ï¼å¿«éä¿®æ¹ç³»ç»é ç½®ã
æ³äºè§£æ´å¤å ³äºä½ä»£ç çç¸å ³ä¿¡æ¯ï¼æ¨èå¨è¯¢å®å¤©è½¯ä»¶ãå®å¤©è½¯ä»¶ç»è¿å¹´çææ¯ä¸é¡¹ç®ç§¯ç´¯ï¼bpmç¸å ³åè½å·²ç»é常å®åï¼å¤§åå¤æçä¸å¡éæ±é½æ对åºçé 置项ï¼ä¸ææä½ï¼ç»ç«¯å®æ½äººåå¯ä»¥é ç½®å®ç°%çåºç¨ä¸æµç¨éæ±ï¼å°éä¼ä¸ä¸ªæ§åéæ±å¯ä»¥ç±å¼å人åå¨çº¿éæå¼åå¿«éå®ç°ï¼æ¢æ»¡è¶³ä¼ä¸ä½ææ¬å¿«é交ä»éæ±ï¼å满足ä¼ä¸ä¸ªæ§åéæ±ãã欢è¿ç¹å»å¨è¯¢å®å¤©è½¯ä»¶ï¼ã
ä¸è¬ä¼ä¸çº§ä½ä»£ç å¼åå¹³å°ï¼é½æåªäºå ·ä½åè½ï¼ä¼æå¨ç¥ï¼æ¯å®¶å ¬å¸å¨åå±è¿ç¨ä¸é½éè¦æ建大éçå é¨ç³»ç»ï¼å¦è¿è¥ä½¿ç¨çç¨æ·ç®¡çåå°ï¼éå®çº¿ç´¢åå°ï¼ååä¸æ´»å¨åå°çã许å¤å ¬å¸å é¨ä¹ä¼è请ä¸ä¸çç åå¢éè´è´£å¼ååç±»åå°åå é¨å·¥å ·ï¼å¤§éçå ¬å¸ä¸ºæ¤ä»åºäºé«é¢çææ¬ï¼å·¥ç¨å¸ä¹å éæ±é大åå¤æ建åºç¡ä»£ç ï¼å¹¶å¨è¿ç§éå¤é è½®åçè¡ä¸ºä¸ç£¨çäºåé ççæ ãé£ä¹ä¸æ¬¾ä½ä»£ç çåºç°ï¼å°±æ¾å¾å¼¥è¶³çè´µäºï¼é常æ¹ä¾¿ã
ä¸ãä½éªè¿ç¨
大è´æµç¨æä½éªè¿äºï¼æ们å æ¥ççå®å ·ä½æåªäºå¼å亮ç¹ï¼æ¹ä¾¿åé¢åç»åã
éé¢è³å°å å«è¡¨å建模ãæµç¨è®¾è®¡ãæ¥è¡¨å¯è§åã代ç çæå¨ãç³»ç»ç®¡çãå端UIçç»ä»¶ã
åä¸é¢è¿äºåè½ï¼å¯ä»¥ç´æ¥å¼ç¨ï¼æä»¬å°±æ²¡å¿ è¦éæ°é è½®åï¼ä» éæ©åéçç»ä»¶è¿è¡éæåäºæ¬¡å¼åï¼å³å¯èªä¸»å¼åä¸ä¸ªä½ä»£ç å¹³å°ã
ãè¿æ¥æ°æ®æº
æ¯æè¿æ¥å¤æ°æ®æºï¼å¸®å©åºç¨å¿«éä¸ç¬¬ä¸æ¹ç³»ç»å®ææ°æ®æ´åï¼å°ç¬¬ä¸æ¹ç³»ç»æ°æ®æ´åå¨å¹³å°éãæ¯æå æ¬ä¸»æµæ°æ®åºSQLServerãMySQLãOracleãPostgreSQLï¼åæ¶å ¼å®¹å½äº§æ°æ®åºè¾¾æ¢¦ã人大éä»çã
ã设计表å
å ç½®è¾ä¸ºä¸°å¯ä¾¿æ·ç表åå¼æï¼ææ½æ建å³å¯ï¼å®ç½æ¾ç¤ºæ¯ææä½ç§æ§ä»¶ï¼åæ¯å¯ä»¥æ»¡è¶³å¤ç§ä¸å¡åºæ¯ä¸çæ建éæ±ã
PC端设计好表ååï¼æ¯æ移å¨ç«¯åæ¥è®¾è®¡ï¼ä¸é®åå¸è³APPãå°ç¨åºãH5ç移å¨å¹³å°ä¸ï¼è¾ä¸ºé«æçå°±å®æäºå¤ç«¯èªå¨éé ï¼å®ç°ä¿¡æ¯äºèäºéã
ãæµç¨è®¾è®¡
强大æµç¨å®ä¹åè½ï¼èç¹å®¡æ¹ãåæµç¨ãæ¡ä»¶åæ¯ãéæ©åæ¯ã并åæ¯ãå®æ¶å¨çï¼ï¼ä¸å¡é»è¾ç®å好ç解ãä¸å¡æµç¨æ¢³çå¿«æ·æäºï¼åæ¶æ¯æä¸è¡¨åå¤æµç¨ç设置ã
å°è£ 大éå ·æä¸å½ç¹è²çæµç¨å¨ä½ï¼æ»¡è¶³å®¡æ¹éæ±ï¼å æ¬æé设置ãä¼ç¾ãæç¾ãé审ã转审ãå¬åãæ¤åãå ç¾ç审æ¹å¨ä½ã
ãå¾è¡¨åç°
éè¿ç®æé ç½®å³å¯èªå¨çæåç§ç±»åçæ¥è¡¨ï¼å 置大éå¯è§åæ§ä»¶ææï¼éè¿OLAPå¤ç»´åæåè½ï¼å¸®å©æ´å¯è§£å³æ°æ®èåçé®é¢ã
åæ¶æ¯æéææ°æ®ãæ°æ®åºåAPIçå¤ç§æ°æ®æºæ¥å ¥æ°æ®ï¼å¯æ»¡è¶³å¤å åçæ°æ®æ´åéæ±ã
ãç»ç»æ¶æ设置
JNPFæ¯æå¤ç§æ·æ¨¡å¼ï¼å¯æ ¹æ®ç®¡ç模å¼å·®å¼è¿è¡ä¸å¡ååºåºç¨ï¼æ¯æåæ¥ç®¡çå¤ä¸ªèµå·¥ä½åºç¯å¢ï¼å®ç°ååå·¥ä½åºçæ¥å¸¸ä½¿ç¨äºä¸å¹²æ°ã
å½ç¶ï¼ä¸ç¨æ å¿çæ¯ï¼ä¸åçååå ¬å¸å®ä¹æ¯æåå«å¯¹æ¥ä¼å¾®åééæ¶æã
äºãæçè¯ä»·
ææå®ç°ãæ´ä¸ªè¿ç¨æµç ï¼åºæ¬æ å¡é¡¿ï¼æäºç解åè°è¯ã
å¤ç«¯å¼åãPC端设置好表åå移å¨ç«¯åæ¥çæï¼å¾ä¾¿æ·ã
æç®åçåè½é ç½®ï¼ä¹æå¯ç¨äºé ç½®å¤æçåºæ¯ãåè ï¼å¯è½å¯¹äºä¸å¡äººåç¬ç«å¼åä¸è¦ä¸ç¹å夫ï¼ä½å¹¶ä¸å½±åå®çå ¨è½æ§ã
ä¸ãå°ç»
对äºæ´ä¸ªåºç¨å¼åæµç¨ä½éªå®æåã个人认为å®ç综å使ç¨æåå¸åºæ§ä»·æ¯ç®æ¯ä¸éçãåéå®æä¸ä¸ªåºç¡åºç¨ï¼2-3å°æ¶å°±è½æ¸æ¸ æ´å¥ç³»ç»ç使ç¨æµç¨ååºæ¬åè½çä½ç½®ï¼äº§åçåè½éæåæä½å¤æ平衡ä¹è¾ä¸ºåçã