<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一點(diǎn)一滴,編程人生

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      69 隨筆 :: 0 文章 :: 25 評(píng)論 :: 0 Trackbacks

    2012年10月9日 #

    今天為了這個(gè)問(wèn)題了忙乎了一整天,特此記錄下,希望對(duì)有遇到同樣問(wèn)題的同學(xué)有幫助。事情的經(jīng)過(guò)是這樣的,原先使用atomikos一直把數(shù)據(jù)源用jndi配置到tomcat的context.xml下,一直這么用沒(méi)有出現(xiàn)問(wèn)題,配置如下
        <Resource name="jdbc/cms" auth="Container"
            type
    ="com.atomikos.jdbc.AtomikosDataSourceBean" factory="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory"
            uniqueResourceName
    ="jdbc/cms" xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"
            xaProperties.URL
    ="xxxx"
            xaProperties.user
    ="xxxx" xaProperties.password="xxxx"
            xaProperties.pinGlobalTxToPhysicalConnection
    ="true" maxLifetime="60" poolSize="4" />

    最近項(xiàng)目要遷移到maven下,所以把context.xml的數(shù)據(jù)源配置挪到了spring.xml下,配置如下
        <bean id="myDataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
           
    <property name="uniqueResourceName" value="masterDB" />
           
    <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>  <!-- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]  -->  
           
    <property name="poolSize" value="0" /> 
           
    <property name="minPoolSize" value="0"/>    
           
    <property name="maxPoolSize" value="9"/>    
           
    <property name="borrowConnectionTimeout" value="60"/>    
           
    <property name="reapTimeout" value="20"/>    
           
    <property name="maxIdleTime" value="60"/>    
           
    <property name="maintenanceInterval" value="60"/>    
           
    <property name="loginTimeout" value="60"/>
           
    <property name="xaProperties">  
                
    <props>
                    
    <prop key="url">xxxx</prop>  
                    
    <prop key="user">xxxx</prop>
                    
    <prop key="password">xxxx</prop>
                
    </props>
            
    </property>  
        
    </bean>
    因?yàn)樯厦孢@個(gè)配置我是照搬網(wǎng)上的,所以覺(jué)得沒(méi)有問(wèn)題,可是項(xiàng)目啟動(dòng)后,用此數(shù)據(jù)源提交事務(wù)時(shí)確報(bào)以下錯(cuò)誤:

    Raised -5: invalid arguments were given for the XA operation 或 XAER_INVAL: Invalid arguments (or unsupported command)

    一開(kāi)始我以為maven配置的mysql-connector-java驅(qū)動(dòng)版本不對(duì),或是atomikos版本不對(duì),可是不管如何換版本都不行,就快要瘋了的時(shí)候,我看到了原先jndi方式中有這么一行代碼
    xaProperties.pinGlobalTxToPhysicalConnection="true"
    就因?yàn)槿鄙偕厦孢@句話(huà)導(dǎo)致了問(wèn)題,上網(wǎng)查資料,據(jù)說(shuō)是mysql xa bug,有興趣的可以看如下連接,最后配置如下:
           <property name="xaProperties">  
                
    <props>
                    
    <prop key="pinGlobalTxToPhysicalConnection">true</prop>  <!-- mysql必須配置此參數(shù),要不然無(wú)法提交事務(wù) -->
                    
    <prop key="url">xxxx</prop>  
                    
    <prop key="user">xxx</prop>
                    
    <prop key="password">xxxx</prop>
                
    </props>
            
    </property> 



    posted @ 2017-06-28 19:32 writegull 閱讀(2485) | 評(píng)論 (0)編輯 收藏

    事情描述:
    本人在阿里云上創(chuàng)建了一個(gè)linux服務(wù)器,跑了一個(gè)自己的測(cè)試web項(xiàng)目。搭建了redis。想方便測(cè)試用,就沒(méi)有對(duì)redis進(jìn)行任何安全防護(hù)并暴露在了公網(wǎng)上。期間阿里云發(fā)現(xiàn)了此問(wèn)題,還發(fā)短信提醒我,由于最近在公司一直加班也沒(méi)有時(shí)間理會(huì),沒(méi)想到就在今天真的被黑了,事后心想多虧是個(gè)測(cè)試服務(wù)器,如果是正式環(huán)境,也真危險(xiǎn),這個(gè)黑客也沒(méi)有停下腳步,通過(guò)redis強(qiáng)大的能力在/root/.ssh目錄下面上傳了公鑰,徹底攻破了服務(wù)器,免密碼登錄服務(wù)器,一般黑客到這步也就看看有沒(méi)有興趣的數(shù)據(jù),這個(gè)黑客一看這就是個(gè)沒(méi)有價(jià)值的測(cè)試服務(wù)器,所以心一橫,在我這上面裝了個(gè)DDOS攻擊軟件,把我的機(jī)器當(dāng)起肉雞。

    1.這就是黑完后留下的公鑰/私鑰,刪除authorized_keys,id_rsa, id_rsa.pub這三個(gè)文件吧,除非還想讓他繼續(xù)黑下去。。。。


    2.通過(guò)redis的key *命令可以看到有個(gè)叫crackit的key。這就是黑客在入侵后留下來(lái)的,原先set的值是公鑰,入侵成功之后就改成這個(gè)了,把這個(gè)key也刪除掉吧。


    3.修改redis默認(rèn)端口吧,不讓黑客利用6379端口。在redis安裝目錄中,修改redis.config文件。修改完了別忘了重啟redis服務(wù),

    # redis-server /etc/redis/redis.conf 開(kāi)啟

    # redis-cli shutdown 關(guān)閉



    4.重啟后查看redis是否運(yùn)行
    ps -x | grep redis
    5.通過(guò)指定端口訪(fǎng)問(wèn)redis。
    redis-cli -p 6666

    6.給redis設(shè)置密碼或者干脆設(shè)置成只能內(nèi)網(wǎng)訪(fǎng)問(wèn)

    7.通過(guò)top命令發(fā)現(xiàn)了幾個(gè)可疑的程序



    8.minerd這個(gè)程序是個(gè)用來(lái)挖掘萊特幣的,這個(gè)黑客看來(lái)干了不少壞事啊。。我們用命令 ps -ef|grep minerd 查找一下這個(gè)進(jìn)程,殺掉這個(gè)進(jìn)程kill -9 18267,并且去/tmp目錄刪除minerd目錄


    9.黑客在tmp目錄留下了一個(gè)叫1.sh的腳本,是用來(lái)下載挖掘萊特幣程序的。也把它kill掉吧。以下是腳本內(nèi)容。


    10.通過(guò)cat /etc/passwd命令可以看到有一個(gè)叫作syss的非法用戶(hù),權(quán)限還很高,跟root一樣,刪掉他吧,這是黑客入侵后方便進(jìn)入的。使用命令userdel -f syss 強(qiáng)制刪除一個(gè)用戶(hù),哪怕他正在登錄。


    11.去/mnt目錄上,可以看到黑客掛載了很多程序,刪除他們吧。


    12.通過(guò)nethogs軟件可以按進(jìn)程實(shí)時(shí)統(tǒng)計(jì)網(wǎng)絡(luò)帶寬利用率,這個(gè)用來(lái)看是否存在DDOS攻擊最好不過(guò)了。

    13.暫時(shí)解決對(duì)外DDOS攻擊,最快的辦法就是用防火墻,這個(gè)阿里云提供的腳本幫了大忙。直接上傳到服務(wù)器上,運(yùn)行一下世界就清靜了。下載地址:
    https://help.aliyun.com/knowledge_detail/5973920.html?spm=5176.7618386.5.1.H8H33f

     
    posted @ 2015-12-15 01:13 writegull 閱讀(4122) | 評(píng)論 (4)編輯 收藏

    今天在修改server.xml調(diào)試程序時(shí),遇到下面這個(gè)問(wèn)題,clean,重啟都不好使。

                    Removing obsolete files from server..
                   Could not clean server of obsolete files: null
                    java.lang.NullPointerException
    解決方法是把.metadata\.plugins\org.eclipse.wst.server.core這個(gè)目錄下面的tmp0刪除掉,再clean下就可以了。可能是緩存問(wèn)題。
    posted @ 2015-01-03 16:58 writegull 閱讀(7283) | 評(píng)論 (0)編輯 收藏

    有時(shí)候需要手動(dòng)地去禁用一個(gè)uibutton,使用button.enabled = NO的時(shí)候雖然能夠達(dá)到目的但也會(huì)帶來(lái)副作用,那就是按鈕變的半透明了。有時(shí)候應(yīng)用不需要這種副作用,可以嘗試使用button.userInteractionEnabled = NO來(lái)達(dá)到這個(gè)目的,在禁用按鈕的同時(shí)也不會(huì)使得按鈕變得半透明。
    posted @ 2013-12-23 10:29 writegull 閱讀(600) | 評(píng)論 (0)編輯 收藏

    裝win8后發(fā)現(xiàn)cpu占用率50%-60%,而且磁盤(pán)瘋狂讀寫(xiě),是com surrogate這個(gè)程序,還有幾個(gè)服務(wù)造成的,之后我把com surrogate結(jié)束進(jìn)程了cpu使用率直接降低到10%以下,我就郁悶了。
    解決方案:
    1,在“更多電腦設(shè)置”那里的“用戶(hù)”改為“本地用戶(hù)”。
    2,“離開(kāi)”家庭組(一般都是它的原因)
    3,“同步設(shè)置”關(guān)
    4,一般“共享”什么的不到需要都是“關(guān)”的狀態(tài)。
    5,做完以上幾點(diǎn)都不行,就真幫不了你了。
    posted @ 2013-03-18 22:47 writegull 閱讀(399) | 評(píng)論 (0)編輯 收藏

    這個(gè)問(wèn)題似乎只有在手動(dòng)改變系統(tǒng)狀態(tài)欄級(jí)別的情況才會(huì)出現(xiàn)

    例如:self.window.windowLevel = UIWindowLevelStatusBar+1;

    這樣設(shè)置的話(huà)相當(dāng)于影響了彈出短信或郵件控制器頁(yè)面window的級(jí)別,所以造成不顯示鍵盤(pán)問(wèn)題(不過(guò)此問(wèn)題在ios6以下沒(méi)有)

    解決方法:在當(dāng)前視圖控制器中加入下面的代碼,即可解決

    - (void) viewDidAppear:(BOOL)animated {

        [super viewDidAppear:animated];

        self.window.windowLevel = UIWindowLevelNormal;

    }

    posted @ 2012-10-30 21:08 writegull 閱讀(1575) | 評(píng)論 (1)編輯 收藏

    原文地址:http://blog.csdn.net/pjk1129/article/details/7255163

    最近在做Apple的IOS開(kāi)發(fā),有開(kāi)發(fā)靜態(tài)庫(kù)的需求,本身IOS的開(kāi)發(fā),只允許靜態(tài)庫(kù)或者Framework。在Xcode上沒(méi)有找到允許編譯,如同Android上的*.so和Win32上的dll這樣的說(shuō)法。不過(guò)Framework這樣的框架,估計(jì)也是類(lèi)似動(dòng)態(tài)庫(kù)的實(shí)現(xiàn),不過(guò)沒(méi)有具體研究過(guò),后續(xù)繼續(xù)深入研究。

    我這個(gè)文檔的靜態(tài)庫(kù)的開(kāi)發(fā)是基于Xcode4.2和iOS SDK5.0編寫(xiě)的。Xcode4跟之前的Xcode3還是有不少的差別的。

    下面就簡(jiǎn)單寫(xiě)一個(gè)靜態(tài)庫(kù)和一個(gè)調(diào)用靜態(tài)庫(kù)的例子。

    靜態(tài)庫(kù)的編寫(xiě):

    1.靜態(tài)庫(kù)工程的建立:

    Xcode New一個(gè)新的project,選擇IOS下面的Framework&Library,下面有一個(gè)Cocoa Touch Static Library。直接next去建立一個(gè)Print這樣的工程。


    2.工程建立

    我們添加很簡(jiǎn)單的"- (void)printA;"和"+ (void)printB;"的方法,這個(gè)方法的實(shí)現(xiàn)也是很簡(jiǎn)單的,在*.m文件中的實(shí)現(xiàn)就是一個(gè)"NSLog(@“”);"這樣我們編譯出來(lái)的libstaticlib就可以被其他的IOS工程進(jìn)行調(diào)用了。這塊注意一下,目前我們的Print->iOS Device



    3.編譯前準(zhǔn)備

    這里分release與debug版本,需要設(shè)置一下


    4.OK,編譯

    我們可以在Products下面找到我們編譯生成的libstaticlib.a這個(gè)文件。

    注意未編譯前為紅色:左                             編譯后為黑色: 右

           

    5.ok

    在右邊 這個(gè)文件上右鍵Open In Finder。這時(shí)候我們打開(kāi)了一個(gè)文件夾,里面有一個(gè)libPrint.a。后面我們繼續(xù)編寫(xiě)一個(gè)調(diào)用這個(gè)libPrint.a的App。但是這個(gè)App在編譯時(shí)候會(huì)出錯(cuò),通過(guò)這個(gè)錯(cuò)誤的解決,說(shuō)明Xcode的一些編譯相關(guān)的東西。這里,我們?cè)赾ommand下面根據(jù)路徑找到這個(gè)文件,用這個(gè)非常重要的命令查看一下這個(gè)lib的信息!

    打開(kāi)終端寫(xiě)入如下命令:這是什么?這就是所在的路徑 

    以下均是在自己的mac上的路徑。你需要將/Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/ 替換成你的路徑。

    cd /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/  

    我們手動(dòng)打開(kāi)這個(gè)路徑:可以看到如下信息:Release-iphoneos


    這個(gè)是給真機(jī)用的,那我們要給模擬器和真機(jī)封裝的靜態(tài)庫(kù)應(yīng)該都能用才好。這個(gè)下面介紹!!!!!  


    然后再在終端 打開(kāi)這個(gè)文件:cd /Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products/Debug-iphoneos

    命令是:lipo -info libPrint.a,可以看到顯示的結(jié)果是:Arch是  Arm7。下面我會(huì)具體介紹一下。


    6.建立一個(gè)調(diào)用這個(gè)libPrint.a的應(yīng)用

    應(yīng)用就很簡(jiǎn)單了,我們添加剛才libPrint.a的*.h文件。 然后在這個(gè)工程的Build Phases的Link Binary With Library里面添加我們剛才拷貝出來(lái)的那個(gè)libPrint.a。



    7.插入了h和a文件后

    我們就可以在control里面調(diào)用這個(gè)libPrint.a 函數(shù)了。

    #import "AstroDiskAppDelegate.h"

    #import "Print.h"


    @implementation AstroDiskAppDelegate


    @synthesize window = _window;


    - (void)dealloc

    {

        [_window release];

        [_viewController release];

        [super dealloc];

    }


    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

        

        //調(diào)用libPrint.a

        [Print printB];

        Print  *print = [[[Print alloc] init] autorelease];

        [print printA];


        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

        [self.window makeKeyAndVisible];

        return YES;

    }


    8.OK,編譯運(yùn)行這個(gè)應(yīng)用程序。

    編譯出現(xiàn)錯(cuò)誤了。這個(gè)就是這篇文檔的關(guān)鍵了。主要就是為了介紹編譯靜態(tài)庫(kù)相關(guān)的東西。



    9.可以看到undefine symbols for architecture i386這樣的錯(cuò)誤。

    其實(shí)這個(gè)錯(cuò)誤原因很簡(jiǎn)單,就是因?yàn)椋覀冇缅e(cuò)了編譯出來(lái)的libUITab.a lib,在模擬器里面,我們需要的是基于i386構(gòu)架編譯的static lib,但是這個(gè)a文件,大家還記得前面說(shuō)的arm6 arm7構(gòu)架的么。這個(gè)a其實(shí)是在iphone這個(gè)arm構(gòu)架上運(yùn)行的代碼。其實(shí)show in finder指向的是一個(gè)ios device的庫(kù),并不是i386模擬器下的庫(kù)。那如何編譯i386的庫(kù)呢?看見(jiàn)第二張圖片的Print>IOS Device了么?我們將這個(gè)iOS Device修改成iPhone5.0 Simulator。在進(jìn)行編譯,這樣就可以編譯出i386下面的庫(kù)。這個(gè)時(shí)候我們show in finder打開(kāi)的文件夾還是ios device下的庫(kù)。我們最好自己去那個(gè)目錄下看一下。這里我們用command去查看了一下目錄情況,如下:可以看到一個(gè)iphoneos的目錄和一個(gè)simulator的目錄。


    然后我們?cè)倏纯催@個(gè)目錄與第4條所示的目錄有什么不同! 同樣也有一個(gè)libPrint.a文件。



    10.錯(cuò)誤原因分析

    Release-iphoneos里面的是基于arm6 arm7編譯出來(lái)的庫(kù)文件。Release-iphonesimulator文件夾下面的是基于i386編譯出來(lái)的文件。

    11.合并.a文件,制作通用靜態(tài)庫(kù)

    這二個(gè)庫(kù)一個(gè)是用于真機(jī)運(yùn)行的一個(gè)是用于模擬器運(yùn)行的.其實(shí)我們可以利用lipo將這二個(gè)文件打包成一個(gè)通用的a文件。命令如下:

    /Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替換成你的路徑。 

    /Users/user/Desktop/libPrint.a替換成合并后的路徑。 

    lipo -create /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphonesimulator/libPrint.a  /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphoneos/libPrint.a  -output /Users/pjk1129/Desktop/libPrint.a


    12.打包以后的庫(kù)文件,我們查看信息

    然后打入如下命令:lipo -info /Users/pjk1129/Desktop/libPrint.a 

    可以看到如下信息:


    如上,你已經(jīng)看到了,它具備了i386和arm7的條件。 現(xiàn)在我們這個(gè)靜態(tài)庫(kù),支持的構(gòu)架已經(jīng)是armv7 i386了。


    13.ok,經(jīng)過(guò)上述步驟后

    這個(gè)通用庫(kù)生成后,我們將原來(lái),調(diào)用這個(gè)庫(kù)進(jìn)行替換一下,在進(jìn)行編譯,成功編譯,運(yùn)行結(jié)果如下所示:


    posted @ 2012-10-09 18:14 writegull 閱讀(647) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 久久亚洲精精品中文字幕| 久久久久亚洲AV无码专区桃色| 亚洲精品视频在线免费| 亚洲视频在线观看免费| 亚洲一区综合在线播放| 中文字幕成人免费视频| 亚洲精品福利网站| 狼群影院在线观看免费观看直播| 67pao强力打造67194在线午夜亚洲 | 国产午夜亚洲精品国产成人小说| 欧亚一级毛片免费看| 国产a不卡片精品免费观看| 在线91精品亚洲网站精品成人| 免费一级肉体全黄毛片| 国产99久久久国产精免费| 亚洲精品无码MV在线观看| 免费无码毛片一区二区APP| 亚洲国产人成在线观看| 成人性生活免费视频| 黄人成a动漫片免费网站| 337p日本欧洲亚洲大胆裸体艺术| 免费黄网站在线观看| 亚洲导航深夜福利| 麻豆国产VA免费精品高清在线| 一级毛片**免费看试看20分钟 | 一级做受视频免费是看美女| 在线观看国产区亚洲一区成人| 久久国产精品免费观看| 亚洲av成人一区二区三区| 国产免费观看青青草原网站| 成在线人视频免费视频| 亚洲精品韩国美女在线| 成在线人永久免费视频播放| 国产性生大片免费观看性| 亚洲性69影院在线观看| 免费看国产精品麻豆| 成全视频免费观看在线看| 亚洲熟妇AV乱码在线观看| 亚洲午夜日韩高清一区| 久久www免费人成看片| 国产亚洲男人的天堂在线观看|