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

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

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

    隨筆-204  評論-90  文章-8  trackbacks-0
      2011年12月31日
    此問題是由于升級 macos sonoma 14.2.1 引起的
    解決辦法,重新安裝xcode  
    rm -rf /Library/Developer/CommandLineTools
    xcode
    -select --install
    posted @ 2024-02-04 13:57 一凡 閱讀(53) | 評論 (0)編輯 收藏
    # Springboot整合activiti
    源代碼:https://gitee.com/yifan88899/acttest

    ## 版本說明
    - springboot 2.4.2
    - activiti 7.1.0.M6
    - mysql 8.0.28
    ## 插件安裝
    - Activiti BPMN visualizer
    ## Bpmn流程圖位置
    - 流程圖xmlpng需放在resources/processes
    ## Test
    - Test Case 都可執行,包括:
    - 流程查詢
    - 流程部署
    - 流程啟動
    - 流程拾取、完成操作
    ## Mysql
    - 需要啟動Mysql8
    - 數據庫名Activiti7
    - activiti會版建表

    posted @ 2023-11-10 15:56 一凡 閱讀(98) | 評論 (0)編輯 收藏
    1、打開my.cnf 加入 skip-grant-tables
    2、mysql.service stop && mysql.service start
    3、清空root密碼 并 退出
        update mysql.user set authentication_string='' where user='root';  
    4、mysql.service stop && mysql.service start
    5、mysql -root   免密登錄并修改root密碼
        alter user 'root'@'%' identified by 'pass$123';
        alter user 'root'@'localhost' identified by 'pass$123';

    確定是否支持遠程登錄,host中有%的記錄即支持
    select host, user, authentication_string, plugin from user;
    posted @ 2021-08-05 18:06 一凡 閱讀(203) | 評論 (0)編輯 收藏

    64e696 綠色
    5a97ff 藍色
    ffdb5a 黃色
    ff8b64 橙色
    ff5a65 紅色
    e00b5d 粉紅
    666666 深灰
    3cc7f5 淺藍
    f5863c 淺橙
    b00072 枚紅
    674ea7 紫色
    999999 灰色
    posted @ 2021-06-22 17:46 一凡 閱讀(85) | 評論 (0)編輯 收藏
    #!/usr/bin/expect
    ####################
    set pass xxxx
    set user yyyy
    ####################
    spawn ssh -p 35000 -o StrictHostKeyChecking=no "${user}@xgrelay.xxxx.com"
    expect {
      -re ".*Dkey.*" { gets stdin dkey; send "$dkey\r"; exp_continue}
      -re "Option>:"  { send "1\r" ;}
      -re "Password>:" { send "$pass\r" ; exp_continue }
      -re "password:" { send "$pass\r" ; exp_continue }
    }
    posted @ 2021-01-18 11:35 一凡 閱讀(163) | 評論 (0)編輯 收藏
    -- data export csv   其中 $1=$1 如果不加指定分隔符不生效
    mysql -uadmin -ptest -h127.0.0.1 -P3306 -e "select * from test where create_time > unix_timestamp('2020-09-10 00:00:00'and status = 99| awk '{OFS=","}{$1=$1;print $0}'

    #csv中文轉碼
    tmpfn="exempt-update-3.30.csv";iconv -c -s -f UTF-8 -t GBK $tmpfn > /tmp/$tmpfn && mv /tmp/$tmpfn .
    posted @ 2020-09-10 22:08 一凡 閱讀(187) | 評論 (0)編輯 收藏
    #!/bin/bash

    for f in "$@"do
        if [ -f "$f" ]; then
            iconv -s -c -f UTF8 -t GBK "$f" > /tmp/$f.tmp
            mv /tmp/$f.tmp "$f"
        fi
    done
    posted @ 2020-04-20 10:03 一凡 閱讀(186) | 評論 (0)編輯 收藏
    # -*- coding: utf-8 -*-
    #
    !/usr/bin/python

    import re
    import io
    import sys

    # obj = re.compile(r'(?P<ip>.*?)- - \[(?P<time>.*?)\] "(?P<request>.*?)" (?P<status>.*?) (?P<bytes>.*?) "(?P<referer>.*?)" "(?P<ua>.*?)"')
    #
     example:xxxx"id":2640914,"orderId":144115188137125591xxxx"state":10xxxxx"
    # 日志整行都需要匹配,需要用的用具體正則匹配,如(\d{7}),不需要的用(.*)匹配,總之所有需要或不需要部分都用()括起來
    obj = re.compile(r'(.*"id":)(\d{7})(.*"orderId":)(\d{18})(.*"state":)(\d{2})(.*)')

    def load_log(path):
    # 讀取文件
        with io.open(path, mode="r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()
                parse(line)

    def stdin():
    # 讀取管道輸入
        for line in sys.stdin:
            parse(line)

    def parse(line):
    # 解析單行nginx日志
        try:
            result = obj.match(line)
            print(result.group(2,4,6))
        except:
            pass

    if __name__ == '__main__':
        # load_log("/tmp/227.log")
        stdin()
    posted @ 2020-02-29 02:10 一凡 閱讀(295) | 評論 (0)編輯 收藏
    1. 新增中間件cors
    2. func Cors() gin.HandlerFunc {
      return func(c *gin.Context) {
      method := c.Request.Method

      c.Header("Access-Control-Allow-Origin", "*") //必選
           c.Header("Access-Control-Allow-Headers", "*") //可選 如果request有header, 必選
           //c.Header("Access-Control-Allow-Credentials", "true") //可選
      //c.Header("Access-Control-Allow-Methods", "*") //可選
      //c.Header("Access-Control-Expose-Headers", "*") //可選

      //放行所有OPTIONS方法
      if method == "OPTIONS" {
      c.AbortWithStatus(http.StatusOK)
      }
      // 處理請求
      c.Next()
      }
      }
    3. 在router里增加cors,必須在group之前,全局設置
      r.Use(gin.Logger(), gin.Recovery(), cors.Cors())
    4. 測試代碼,header設置不能多于cors設置
      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title>Title</title>
      </head>
      <link type="test/css" href="css/style.css" rel="stylesheet">
      <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
      <script type="text/javascript">
      $(function(){
      $("#cors").click(
      function(){
      $.ajax({
      headers:{
      "Content-Type":"application/json;charset=UTF-8",
      "Access":"adsad",
      "Access-Token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJwYXNzd29yZCI6InRlc3QxMjM0NTYiLCJleHAiOjE1NzczMzY3MTIsImlzcyI6Imdpbi1ibG9nIn0.wMlQXqZO2V0LR-FIgDh45LWI0OYMYi6an_NvRmF0Nug"
      },
      url:"http://127.0.0.1:8000/api/v1/articles",
      success:function(data){
      console.log("start");
      console.log(data);
      }
      })
      });
      });
      </script>
      <body>
      <input type="button" id="cors" value="core跨域測試">
      </body>
      </html>
    5. 請求的headers數量、名稱與cors里的設置需要嚴格對應,不然報錯如下
      Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/v1/articles' from origin 'http://localhost:9999' has been blocked by CORS policy: Request header field access is not allowed by Access-Control-Allow-Headers in preflight response.
    posted @ 2019-12-26 11:17 一凡 閱讀(327) | 評論 (0)編輯 收藏
    1、在main函數中增加全局配置,其中@name就是你確定的鑒權參數名,我的是token,    @in header 說明參數放在header,你的鑒權代碼需要從header中獲取

    // @title gin-blog API
    // @version 0.0.1
    // @description This is a gin blog example
    // @securityDefinitions.apikey ApiKeyAuth
    // @in header
    // @name token
    // @BasePath /

    2、在具體的handler里添加如下注釋,此處的ApiKeyAuth和main中的apike對應,切記不要修改
    // @Security ApiKeyAuth

    3、swagger頁面如下:


    4、添加token后,后續所有有鑒權接口的header里自動攜帶token
    posted @ 2019-12-23 16:08 一凡 閱讀(1992) | 評論 (0)編輯 收藏
    posted @ 2019-11-19 16:41 一凡 閱讀(148) | 評論 (0)編輯 收藏
     處理1W條復雜json數據性能對比

    1. golang

      ./go_extract_json  0.95s user 0.12s system 99% cpu 1.081 total    
    2. shell
      bash segment.sh  0.64s user 0.07s system 101% cpu 0.695 total
    3. perl
      perl extract.pl  39.57s user 0.54s system 98% cpu 40.579 total
    posted @ 2019-09-20 18:13 一凡 閱讀(222) | 評論 (0)編輯 收藏
    1.  Invalid bound statement (not found)
      在接口名稱及方法名稱對應OK的情況下,在application.properties中添加:
    mybatis.mapperLocations=classpath:mapper/*Mapper.xml   
    mybatis.typeAliasesPackage=com.willpower.entity
    posted @ 2019-04-03 21:41 一凡 閱讀(131) | 評論 (0)編輯 收藏
    推薦:
    https://github.com/wming3/.vimToIDE
    posted @ 2017-05-08 16:33 一凡 閱讀(224) | 評論 (0)編輯 收藏

    http://www.iteye.com/news/32170

    Guice OKHttp Retrofit 
    posted @ 2017-03-02 17:36 一凡 閱讀(136) | 評論 (0)編輯 收藏
    http://www.iteye.com/news/32119
    posted @ 2017-02-10 18:57 一凡 閱讀(143) | 評論 (0)編輯 收藏
    http://www.iteye.com/news/31877
    posted @ 2016-10-11 15:26 一凡 閱讀(169) | 評論 (0)編輯 收藏
     //mysql
     mysql -uroot -proot -h127.0.0.1 testdb -e " select a, b, c, d from t_test where a='xxxx'" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/xxxxx.csv
    posted @ 2015-01-22 18:55 一凡 閱讀(355) | 評論 (0)編輯 收藏

        http://www.oracle.com/

        wget下載方法:
        1、在打開瀏覽器的開發者工具
        2、在network里找到類似http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin?AuthParam=1416809306_8aff16bf46c832f44260abcc951c58ea


    wget http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin\?AuthParam=1416809306_8aff16bf46c832f44260abcc951c58ea
    注意:紅色,由于?是通配符,需要轉義一下。
    posted @ 2014-11-24 14:09 一凡 閱讀(227) | 評論 (0)編輯 收藏
    set hlsearch                  "高亮度反白
    set backspace=2               
    "可隨時用倒退鍵刪除
    set autoindent                 "自動縮排
    set ruler                      
    "可顯示最后一行的狀態
    set showmode                 "左下角那一行的狀態
    set nu                        
    "可以在每一行的最前面顯示行號
    set bg=dark                   "顯示不同的底色色調
    syntax on                     
    "進行語法檢驗,顏色顯示
    set wrap                      "自動折行
    set shiftwidth=4
    set tabstop=4
    set softtabstop=4
    set expandtab                  
    "將tab替換為相應數量空格
    set smartindent
    "phpcomplete
    filetype plugin on
    autocmd FileType php set omnifunc=phpcomplete#CompletePHP
    "php-doc
    source /home/qiaoy/sf/php-doc.vim
    inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
    nnoremap <C-P> :call PhpDocSingle()<CR>
    vnoremap <C-P> :call PhpDocRange()<CR>

    "neocomplcache
    if &term==
    "xterm"
        set t_Co=8
        set t_Sb=^[[4%dm
        set t_Sf=^[[3%dm
    endif
    let g:neocomplcache_enable_at_startup = 1

    "autoload .vimrc
    autocmd! bufwritepost .vimrc source %
    posted @ 2014-09-17 14:27 一凡 閱讀(280) | 評論 (0)編輯 收藏
    #!/bin/bash
     for((i=0; i<100; i++));do
         curl -i -H "xxx -H "Accept:application/json" -H "Content-Type:application/json" -sd '{"xxx": 563,"xxx": 1,"xxx": 0,"xxx": "{\"xxx\":0,\"xxx\":\"xxx\"}"}' -H "Cookie: JSESSIONID=4F8F7834CEABB668BE84BD3B61AEBE9E" http://test.com;
    done
    posted @ 2014-08-20 13:23 一凡 閱讀(306) | 評論 (0)編輯 收藏
    pasting

    log4j.properties 使用
    一.參數意義說明
    輸出級別的種類
    ERROR、WARN、INFO、DEBUG
    ERROR 為嚴重錯誤 主要是程序的錯誤
    WARN 為一般警告,比如session丟失
    INFO 為一般要顯示的信息,比如登錄登出
    DEBUG 為程序的調試信息
    配置日志信息輸出目的地
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    1.org.apache.log4j.ConsoleAppender(控制臺)
    2.org.apache.log4j.FileAppender(文件)
    3.org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
    4.org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
    5.org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)
    配置日志信息的格式
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    2.org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
    3.org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
    4.org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)
    控制臺選項
    Threshold=DEBUG:指定日志消息的輸出最低層次。
    ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
    Target=System.err:默認情況下是:System.out,指定輸出控制臺
    FileAppender 選項
    Threshold=DEBUF:指定日志消息的輸出最低層次。
    ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
    File=mylog.txt:指定消息輸出到mylog.txt文件。
    Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
    RollingFileAppender 選項
    Threshold=DEBUG:指定日志消息的輸出最低層次。
    ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
    File=mylog.txt:指定消息輸出到mylog.txt文件。
    Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
    MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1文件。
    MaxBackupIndex=2:指定可以產生的滾動文件的最大數。
    log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
    日志信息格式中幾個符號所代表的含義:
     -X號: X信息輸出時左對齊;
     %p: 輸出日志信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
     %d: 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
     %r: 輸出自應用啟動到輸出該log信息耗費的毫秒數
     %c: 輸出日志信息所屬的類目,通常就是所在類的全名
     %t: 輸出產生該日志事件的線程名
     %l: 輸出日志事件的發生位置,相當于%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main (TestLog4.java:10)
     %x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。
     %%: 輸出一個"%"字符
     %F: 輸出日志消息產生時所在的文件名稱
     %L: 輸出代碼中的行號
     %m: 輸出代碼中指定的消息,產生的日志具體信息
     %n: 輸出一個回車換行符,Windows平臺為"/r/n",Unix平臺為"/n"輸出日志信息換行
     可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:
     1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,默認的情況下右對齊。
     2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,"-"號指定左對齊。
     3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大于30的話,就會將左邊多出的字符截掉,但小于30的話也不會有空格。
     4)%20.30c:如果category的名稱小于20就補空格,并且右對齊,如果其名稱長于30字符,就從左邊較遠輸出的字符截掉。
    二.文件配置Sample1
    log4j.rootLogger=DEBUG,A1,R
    #log4j.rootLogger=INFO,A1,R
    # ConsoleAppender 輸出
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
    # File 輸出 一天一個文件,輸出路徑可以定制,一般在根路徑下
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=blog_log.txt
    log4j.appender.R.MaxFileSize=500KB
    log4j.appender.R.MaxBackupIndex=10
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
    文件配置Sample2
    下面給出的Log4J配置文件實現了輸出到控制臺,文件,回滾文件,發送日志郵件,輸出到數據庫日志表,自定義標簽等全套功能。
    log4j.rootLogger=DEBUG,CONSOLE,A1,im 
    #DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
    log4j.addivity.org.apache=true
    ################### 
    # Console Appender 
    ################### 
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
    log4j.appender.Threshold=DEBUG 
    log4j.appender.CONSOLE.Target=System.out 
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
    ##################### 
    # File Appender 
    ##################### 
    log4j.appender.FILE=org.apache.log4j.FileAppender 
    log4j.appender.FILE.File=file.log 
    log4j.appender.FILE.Append=false 
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 
    # Use this layout for LogFactor 5 analysis
    ######################## 
    # Rolling File 
    ######################## 
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender 
    log4j.appender.ROLLING_FILE.Threshold=ERROR 
    log4j.appender.ROLLING_FILE.File=rolling.log 
    log4j.appender.ROLLING_FILE.Append=true 
    log4j.appender.ROLLING_FILE.MaxFileSize=10KB 
    log4j.appender.ROLLING_FILE.MaxBackupIndex=1 
    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    #################### 
    # Socket Appender 
    #################### 
    log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender 
    log4j.appender.SOCKET.RemoteHost=localhost 
    log4j.appender.SOCKET.Port=5001 
    log4j.appender.SOCKET.LocationInfo=true 
    # Set up for Log Facter 5 
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout 
    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
    ######################## 
    # Log Factor 5 Appender 
    ######################## 
    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender 
    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
    ######################## 
    # SMTP Appender 
    ####################### 
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
    log4j.appender.MAIL.Threshold=FATAL 
    log4j.appender.MAIL.BufferSize=10 
    log4j.appender.MAIL.From=chenyl@yeqiangwei.com
    log4j.appender.MAIL.SMTPHost=mail.hollycrm.com 
    log4j.appender.MAIL.Subject=Log4J Message 
    log4j.appender.MAIL.To=chenyl@yeqiangwei.com
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout 
    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    ######################## 
    # JDBC Appender 
    ####################### 
    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 
    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test 
    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver 
    log4j.appender.DATABASE.user=root 
    log4j.appender.DATABASE.password= 
    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') 
    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout 
    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 
    log4j.appender.A1.File=SampleMessages.log4j 
    log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' 
    log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
    ################### 
    #自定義Appender 
    ################### 
    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    log4j.appender.im.host = mail.cybercorlin.net 
    log4j.appender.im.username = username 
    log4j.appender.im.password = password 
    log4j.appender.im.recipient = corlin@yeqiangwei.com
    log4j.appender.im.layout=org.apache.log4j.PatternLayout 
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    三.高級使用
    實驗目的:
     1.把FATAL級錯誤寫入2000NT日志
     2. WARN,ERROR,FATAL級錯誤發送email通知管理員
     3.其他級別的錯誤直接在后臺輸出
    實驗步驟:
     輸出到2000NT日志
     1.把Log4j壓縮包里的NTEventLogAppender.dll拷到WINNT/SYSTEM32目錄下
     2.寫配置文件log4j.properties
    # 在2000系統日志輸出
     log4j.logger.NTlog=FATAL, A8
     # APPENDER A8
     log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
     log4j.appender.A8.Source=JavaTest
     log4j.appender.A8.layout=org.apache.log4j.PatternLayout
     log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
    3.調用代碼:
     Logger logger2 = Logger.getLogger("NTlog"); //要和配置文件中設置的名字相同
     logger2.debug("debug!!!");
     logger2.info("info!!!");
     logger2.warn("warn!!!");
     logger2.error("error!!!");
     //只有這個錯誤才會寫入2000日志
     logger2.fatal("fatal!!!");
    發送email通知管理員:
     1. 首先下載JavaMail和JAF, 
      http://java.sun.com/j2ee/ja/javamail/index.html
      http://java.sun.com/beans/glasgow/jaf.html
     在項目中引用mail.jar和activation.jar。
     2. 寫配置文件
     # 將日志發送到email
     log4j.logger.MailLog=WARN,A5
     #  APPENDER A5
     log4j.appender.A5=org.apache.log4j.net.SMTPAppender
     log4j.appender.A5.BufferSize=5
     log4j.appender.A5.To=chunjie@yeqiangwei.com
     log4j.appender.A5.From=error@yeqiangwei.com
     log4j.appender.A5.Subject=ErrorLog
     log4j.appender.A5.SMTPHost=smtp.263.net
     log4j.appender.A5.layout=org.apache.log4j.PatternLayout
     log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
     3.調用代碼:
     //把日志發送到mail
     Logger logger3 = Logger.getLogger("MailLog");
     logger3.warn("warn!!!");
     logger3.error("error!!!");
     logger3.fatal("fatal!!!");
    在后臺輸出所有類別的錯誤:
     1. 寫配置文件
     # 在后臺輸出
     log4j.logger.console=DEBUG, A1
     # APPENDER A1
     log4j.appender.A1=org.apache.log4j.ConsoleAppender
     log4j.appender.A1.layout=org.apache.log4j.PatternLayout
     log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
     2.調用代碼
     Logger logger1 = Logger.getLogger("console");
     logger1.debug("debug!!!");
     logger1.info("info!!!");
     logger1.warn("warn!!!");
     logger1.error("error!!!");
     logger1.fatal("fatal!!!");
    --------------------------------------------------------------------
     全部配置文件:log4j.properties
     # 在后臺輸出
     log4j.logger.console=DEBUG, A1
     # APPENDER A1
     log4j.appender.A1=org.apache.log4j.ConsoleAppender
     log4j.appender.A1.layout=org.apache.log4j.PatternLayout
     log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
    # 在2000系統日志輸出
     log4j.logger.NTlog=FATAL, A8
     # APPENDER A8
     log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
     log4j.appender.A8.Source=JavaTest
     log4j.appender.A8.layout=org.apache.log4j.PatternLayout
     log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
    # 將日志發送到email
     log4j.logger.MailLog=WARN,A5
     #  APPENDER A5
     log4j.appender.A5=org.apache.log4j.net.SMTPAppender
     log4j.appender.A5.BufferSize=5
     log4j.appender.A5.To=chunjie@yeqiangwei.com
     log4j.appender.A5.From=error@yeqiangwei.com
     log4j.appender.A5.Subject=ErrorLog
     log4j.appender.A5.SMTPHost=smtp.263.net
     log4j.appender.A5.layout=org.apache.log4j.PatternLayout
     log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
    全部代碼:Log4jTest.java
      
    /* 
      * 創建日期 2003-11-13 
      
    */ 
     package edu.bcu.Bean; 
     import org.apache.log4j.*; 
     //import org.apache.log4j.nt.*; 
     
    //import org.apache.log4j.net.*; 
     /** 
      * 
    @author yanxu 
      
    */ 
     public class Log4jTest 
     { 
      public static void main(String args[]) 
      { 
       PropertyConfigurator.configure("log4j.properties"); 
       //在后臺輸出 
       Logger logger1 = Logger.getLogger("console"); 
       logger1.debug("debug!!!"); 
       logger1.info("info!!!"); 
       logger1.warn("warn!!!"); 
       logger1.error("error!!!"); 
       logger1.fatal("fatal!!!");
    //在NT系統日志輸出 
       Logger logger2 = Logger.getLogger("NTlog"); 
       //NTEventLogAppender nla = new NTEventLogAppender(); 
       logger2.debug("debug!!!"); 
       logger2.info("info!!!"); 
       logger2.warn("warn!!!"); 
       logger2.error("error!!!"); 
       //只有這個錯誤才會寫入2000日志 
       logger2.fatal("fatal!!!");
    //把日志發送到mail 
       Logger logger3 = Logger.getLogger("MailLog"); 
       //SMTPAppender sa = new SMTPAppender(); 
       logger3.warn("warn!!!"); 
       logger3.error("error!!!"); 
       logger3.fatal("fatal!!!"); 
      } 
     }
    posted @ 2014-07-17 11:10 一凡 閱讀(204) | 評論 (0)編輯 收藏
    mac :   lsof -i:8080

    linux : netstat -anltp | grep 8080
    posted @ 2014-07-15 14:20 一凡 閱讀(5464) | 評論 (1)編輯 收藏
    openssl rand 16 -base64
    posted @ 2014-06-16 16:48 一凡 閱讀(252) | 評論 (0)編輯 收藏
    打開多個文件:
    一、vim還沒有啟動的時候:
    1.在終端里輸入 
    vim file1 file2 ... filen便可以打開所有想要打開的文件
    2.vim已經啟動
    輸入
    :e file
    可以再打開一個文件,并且此時vim里會顯示出file文件的內容。
    3.同時顯示多個文件:
    :sp         //水平切分窗口
    :vsplit     //垂直切分窗口
    二、在文件之間切換:
    1.文件間切換
    Ctrl+6  //兩文件間的切換
    :bn      //下一個文件
    :bp      //上一個文件
    :ls       //列出打開的文件,帶編號
    :b1~n  //切換至第n個文件
    對于用(v)split在多個窗格中打開的文件,這種方法只會在當前窗格中切換不同的文件。
    2.在窗格間切換的方法
    Ctrl+w+方向鍵——切換到前/下/上/后一個窗格
    Ctrl+w+h/j/k/l ——同上
    Ctrl+ww——依次向后切換到下一個窗格中
    posted @ 2014-02-19 18:34 一凡 閱讀(33874) | 評論 (2)編輯 收藏
    find . ! -wholename '*.svn*' ! -wholename '*template_c*' -type f -exec grep -H test {} --color \;
    posted @ 2014-02-18 17:19 一凡 閱讀(326) | 評論 (0)編輯 收藏
    curl -A "android;15;default" -d "detail=aaaaa" "http://test.com/"
    posted @ 2013-12-18 11:07 一凡 閱讀(279) | 評論 (0)編輯 收藏
    update test set create_time=concat('2013-10-01 ', floor(10+rand()*10),':',floor(10+rand()*49),':',floor(10+rand()*49))  where create_time='0000-00-00 00:00:00'
    posted @ 2013-12-05 16:51 一凡 閱讀(748) | 評論 (1)編輯 收藏
    load data infile '/tmp/test.txt' into table test character set utf8 (col1,col2,col3);
    綠色部分在mysql參考手冊中都沒有描述,坑爹啊!!!!!!!!
    posted @ 2013-12-02 14:52 一凡 閱讀(607) | 評論 (0)編輯 收藏
    #17點至23點
    ls -l xxxx.log.20131117{1[7-8],2[0-3]}
    posted @ 2013-11-20 18:26 一凡 閱讀(198) | 評論 (0)編輯 收藏
    ctrl鍵組合
    ctrl+a:光標移到行首。
    ctrl+b:光標左移一個字母
    ctrl+c:殺死當前進程。
    ctrl+d:退出當前 Shell。
    ctrl+e:光標移到行尾。
    ctrl+h:刪除光標前一個字符,同 backspace 鍵相同。
    ctrl+k:清除光標后至行尾的內容。
    ctrl+l:清屏,相當于clear。
    ctrl+r:搜索之前打過的命令。會有一個提示,根據你輸入的關鍵字進行搜索bash的history
    ctrl+u: 清除光標前至行首間的所有內容。
    ctrl+w: 移除光標前的一個單詞
    ctrl+t: 交換光標位置前的兩個字符
    ctrl+y: 粘貼或者恢復上次的刪除
    ctrl+d: 刪除光標所在字母;注意和backspace以及ctrl+h的區別,這2個是刪除光標前的字符
    ctrl+f: 光標右移
    ctrl+z : 把當前進程轉到后臺運行,使用’ fg ‘命令恢復。比如top -d1 然后ctrl+z ,到后臺,然后fg,重新恢復
    esc組合
    esc+d: 刪除光標后的一個詞
    esc+f: 往右跳一個詞
    esc+b: 往左跳一個詞
    esc+t: 交換光標位置前的兩個單詞。
    posted @ 2013-11-07 14:04 一凡 閱讀(271) | 評論 (0)編輯 收藏
    set nocompatible "關閉vi兼容
    set enc=utf-8
    "set number "顯示行號
    filetype plugin on 
    "文件類型
    set history=500 "歷史命令
    syntax on 
    "語法高亮
    "set autoindent "ai 自動縮進
    "set smartindent "智能縮進
    set showmatch "括號匹配
    set ruler 
    "右下角顯示光標狀態行
    set nohls "關閉匹配的高亮顯示
    set incsearch 
    "設置快速搜索
    set foldenable "開啟代碼折疊
    "set fdm=manual "手動折疊
    set foldmethod=syntax 
    "自動語法折疊
    set modeline "自動載入模式行
    "自動插入modeline
    func! AppendModeline()
    let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :",
    \ &tabstop, &shiftwidth, &textwidth)
    let l:modeline = substitute(&commentstring, "%s", l:modeline, "")
    call append(line("$"), l:modeline)
    endfunc
    "按\ml,自動插入modeline
    nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
    "空格展開折疊
    nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

    "set tabstop=4
    "set shiftwidth=4
    set ts=4
    set sw=4
    set expandtab
    "自動tab

     

    if has(
    "autocmd")
    filetype plugin indent on
    endif
    autocmd filetype python setlocal et sta sw=4 sts=4


    "根據文件類型自動插入文件頭
    autocmd BufNewFile *.py,*.sh exec ":call SetTitle()"
    func SetTitle()
    if &filetype == 'sh'
    call setline(1"\#!/bin/bash")
    call append(line("."), "\# Author:itxx00@gmail.com")
    call append(line(".")+1"")
    else
    call setline(1"\#!/bin/env python")
    call append(line("."), "\#coding:utf-8")
    call append(line(".")+1"\#Author:itxx00@gmail.com")
    call append(line(".")+2"")
    endif
    endfunc 
    "新建文件后自動定位至文件末尾
    autocmd BufNewFile * normal G
    "F2去空行
    nnoremap <F2> :g/^\s*$/d<CR>
    posted @ 2013-10-25 21:24 一凡 閱讀(320) | 評論 (0)編輯 收藏
    訪問mysql出現如下error:
    ERROR 1045 (28000): Access denied for user 'root'@'121.39.50.24' (using password: YES)
    時,用root登錄到數據庫服務器,執行:
    set password for 'root'@'%'=PASSWORD('abc123');
    注:有時grant授權后也不行,必須再執行如上命令
    posted @ 2013-10-25 11:36 一凡 閱讀(220) | 評論 (0)編輯 收藏
    1、查看java證書的別名:
    >keytool -list -keystore test.jks -v
    執行命令后找到別名
    2、下載jks2pfx:http://www.willrey.com/support/jks2pfx.rar
    3、解壓jks2pfx后,進入此目錄
    D:\jks2pfx>JKS2PFX.bat ../tmp/test.jks pass mykey store C:\Program Files\Java\jdk1.7.0_05\bin
                                           要轉的jks       密碼  別名    導出文件名   jdk路徑


    posted @ 2013-06-19 19:05 一凡 閱讀(1960) | 評論 (0)編輯 收藏
    摘自:http://www.oschina.net/code/snippet_1030827_21294
    <?php
    /*
    新浪的IP查詢接口:
    新浪的:http://counter.sina.com.cn/ip?ip=IP地址
    返回Js數據,感覺不是很精確,可以把問號后面的去掉,直接返回本機對應的IP所在地

    有道的IP查詢接口:
    返回XML數據:http://www.yodao.com/smartresult-xml/search.s?type=ip&q=0.0.0.0
    返回JSON數據:http://www.yodao.com/smartresult-xml/search.s?jsFlag=true&type=ip&q=0.0.0.0
    把0.0.0.0換成需查詢的IP地址即可,這個應該是用純真的數據庫

    太平洋電腦網IP查詢接口:
    http://whois.pconline.com.cn/?ip=0.0.0.0
    把0.0.0.0換成IP地址,頁面上還有其他無關內容,這些內容是告訴我們哪些接口可以調用、接口調用參數和使用方法等

    查詢手機號碼歸屬地接口:
    返回XML數據:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13888880000
    返回JSON數據:http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13888880000

    身份證查詢接口:
    返回XML數據:http://www.youdao.com/smartresult-xml/search.s?type=id&q=身份證號
    返回JSON數據:http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=id&q=身份證號
    */
    echo file_get_contents("接口網址和參數");
    ?>
    posted @ 2013-05-14 12:10 一凡 閱讀(827) | 評論 (1)編輯 收藏
    iconv -f from-encoding -t to-encoding inputfile
    如:iconv -f GBK -t UTF8 test.txt
    posted @ 2013-05-08 18:53 一凡 閱讀(222) | 評論 (0)編輯 收藏
    /usr/local/mysql55/bin/mysql --defaults-file=/usr/local/mysql55/var/my.cnf -uroot -pdev -e "select * from report.appcontent into outfile '/tmp/appcontent.csv' fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"
    posted @ 2013-05-08 18:21 一凡 閱讀(556) | 評論 (0)編輯 收藏
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
    -DDEFAULT_CHARSET=gbk \
    -DDEFAULT_COLLATION=gbk_chinese_ci \
    -DWITH_EXTRA_CHARSETS:STRING=gbk,gb2312,utf8 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql55/mysql.sock \
    -DSYSCONFDIR=/usr/local/mysql55/conf \
    -DMYSQL_DATADIR=/var/mysql/data

    make
    make install
    posted @ 2013-03-13 11:24 一凡 閱讀(284) | 評論 (0)編輯 收藏
    >>> 
    >>> print urllib.quote("測試abc")
    %E6%B5%8B%E8%AF%95abc
    >>> 
    >>> 
    >>> print urllib.unquote("%E6%B5%8B%E8%AF%95abc")
    測試abc
    >>> 
    posted @ 2013-03-05 09:57 一凡 閱讀(947) | 評論 (0)編輯 收藏
     find . -name *.php  -exec grep 總記錄數 {} -H \;
    posted @ 2013-02-22 11:36 一凡 閱讀(313) | 評論 (0)編輯 收藏
    • 200 - 請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
    • 206 - 服務器已經成功處理了部分 GET 請求
    • 301 - 被請求的資源已永久移動到新位置
    • 302 - 請求的資源現在臨時從不同的 URI 響應請求
    • 400 - 錯誤的請求。當前請求無法被服務器理解
    • 401 - 請求未授權,當前請求需要用戶驗證。
    • 403 - 禁止訪問。服務器已經理解請求,但是拒絕執行它。
    • 404 - 文件不存在,資源在服務器上未被發現。
    • 500 - 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。
    • 503 - 由于臨時的服務器維護或者過載,服務器當前無法處理請求。

    HTTP 協議狀態碼定義可以參閱:Hypertext Transfer Protocol -- HTTP/1.1

    posted @ 2013-01-05 12:11 一凡 閱讀(242) | 評論 (0)編輯 收藏
    Shell 調用系統時間變量 

    獲取今天時期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 
    獲取昨天時期:`date -d yesterday +%Y%m%d` 
    獲取前天日期:`date -d -2day +%Y%m%d` 
    依次類推比如獲取10天前的日期:`date -d -10day +%Y%m%d` 
    或n天前的 `date -d "n days ago" +%y%m%d` 
    明天:`date -d tomorrow +%y%m%d` 
    注意以上中間有空格 

    時間域 
    % H 小時(00..23) 
    % I 小時(01..12) 
    % k 小時(0..23) 
    % l 小時(1..12) 
    % M 分(00..59) 
    % p 顯示出AM或PM 
    % r 時間(hh:mm:ss AM或PM),12小時 
    % s 從1970年1月1日00:00:00到目前經歷的秒數 
    % S 秒(00..59) 
    % T 時間(24小時制)(hh:mm:ss) 
    % X 顯示時間的格式(%H:%M:%S) 
    % Z 時區 日期域 
    % a 星期幾的簡稱( Sun..Sat) 
    % A 星期幾的全稱( Sunday..Saturday) 
    % b 月的簡稱(Jan..Dec) 
    % B 月的全稱(January..December) 
    % c 日期和時間( Mon Nov 8 14:12:46 CST 1999) 
    % d 一個月的第幾天(01..31) 
    % D 日期(mm/dd/yy) 
    % h 和%b選項相同 
    % j 一年的第幾天(001..366) 
    % m 月(01..12) 
    % w 一個星期的第幾天(0代表星期天) 
    % W 一年的第幾個星期(00..53,星期一為第一天) 
    % x 顯示日期的格式(mm/dd/yy) 
    % y 年的最后兩個數字( 1999則是99) 
    % Y 年(例如:1970,1996等) 
    注意:只有超級用戶才有權限使用date命令設置時間,一般用戶只能使用date命令顯示時間。
    posted @ 2012-11-05 15:32 一凡 閱讀(4974) | 評論 (0)編輯 收藏
    #/bin/bash

    del_user() {
        echo "請輸入用戶名:" 
        read user
        echo "請確認是否刪除(y/n)?"
        read isDel
        if [ $isDel = 'y' ]; then
            userdel -r  $user
            echo -e "\t\t\t\t|------------------------------|"
            echo -e "\t\t\t\t|------- 用戶 '$user' 已刪除 ------|"
            echo -e "\t\t\t\t|------------------------------|"
        fi
    }

    add_user() {
        echo "請輸入用戶名:" 
        read user
        useradd $user -d /work/$user
        passwd $user
        echo -e "\t\t\t\t|------------------------------|"
        echo -e "\t\t\t\t|------- 用戶 "$user" 已創建 ------|"
        echo -e "\t\t\t\t|------------------------------|"
    }

    menu() {
        while :
        do
            echo "1.添加用戶"
            echo "2.刪除用戶"
            echo "0.退出"
            echo -e "\n請選擇:"
            read choice
            case $choice in
                1) add_user;;
                2) del_user;;
                0exit;;
                *) menu;;
            esac
        done
    }

    menu
    posted @ 2012-10-17 11:25 一凡 閱讀(267) | 評論 (0)編輯 收藏
    git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

    打開vim,執行如下命令:
    :BundleInstall
    :BundleSearch
    :BundleClean

    .vimrc

    " For vundle
    set nocompatible
    filetype off
    set rtp+=~/.vim/bundle/vundle/
    call vundle#rc()
    Bundle 'gmarik/vundle'
    " vim-scripts repos
    Bundle 
    'bash-support.vim'
    Bundle 
    'perl-support.vim'
    filetype plugin indent on

    "let g:winManagerWindowLayout = "FileExplorer" 
    let g:winManagerWindowLayout = 
    "FileExplorer|TagList"
    map <c-w><c-f> :FirstExplorerWindow<cr>
    map <c-w><c-b> :BottomExplorerWindow<cr>
    map <c-w><c-t> : WMToggle<cr>
    let g:persistentBehaviour=0
    let g:winManagerWidth=30
    nmap <silent><F8> :WMToggle<cr>
    posted @ 2012-08-24 18:23 一凡 閱讀(1450) | 評論 (0)編輯 收藏
    sed -"s/zhangsan/lisi/g" `grep -l zhangsan zzzzz_*`
    posted @ 2012-08-10 17:40 一凡 閱讀(215) | 評論 (0)編輯 收藏
    1、修改機器名
    $sudo vi /etc/hostname
    2、修改時區
    $rm /etc/localetime
    $ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localetime
    posted @ 2012-07-12 11:33 一凡 閱讀(788) | 評論 (1)編輯 收藏

    引自:http://blog.csdn.net/lyuan13141234/article/details/5667570

    在linux下,編譯鏈接的時候,經常會遇到這樣一個問題,undefined reference to.....,引起這個問題的原因在于在鏈接的時候缺少選項。下面舉幾個例子,并給出解決辦法。

    1、undefined reference to `dlerror'
         undefined reference to `dlopen'
         undefined reference to `dlerror'

        解決辦法:在makefile的LDFLAGS后面把選項 -ldl 添加上即可。

    2、undefined reference to `main'

        解決辦法:在makefile的LDFLAGS后面添加 -nostartfiles 選項。

    3、undefined reference to `pthread_setspecific'
         undefined reference to `pthread_key_delete'
         undefined reference to `pthread_key_create'

        解決辦法:在makefile的LDFLAGS后面添加 -lpthread 選項。

    4、undefined reference to `clock_gettime'

        解決辦法:在makefile的LDFLAGS后面添加 -lrt 選項。

     

    不過要注意的是,如果undefined reference to后面的內容是在自己的文件中聲明或定義的東西,就不能用這種方法來解決了。這時就需要檢查一下自己的makefile涉及到源文件、頭文件的地方是否出錯了,也有可能是其他的原因。

    posted @ 2012-07-04 17:29 一凡 閱讀(5306) | 評論 (1)編輯 收藏
    注意:如果找不到google.protobuf,在protobuf目錄下執行
    $ find . -name *.egg
    ./python/setuptools-0.6c11-py2.7.egg
    ./python/dist/protobuf-2.4.1-py2.7.egg
    將這兩個文件加用戶環境
    export PYTHONPATH=$SRC_DIR/protobuf-2.3.0-py2.5.egg:$SRC_DIR/setuptools-0.6c9-py2.5.egg

    protocol buffer的安裝
    $ wget "http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.bz2"
    $ tar jxvf protobuf-2.4.1.tar.bz2
    $ cd protobuf-2.4.1
    $ ./configure
    $ make
    $ make check
    $ make install

    protocol buffer對python的支持

    $ cd python/
    $ python setup.py test
    $ python setup.py install
    python需2.5以上版本
    1、下載最新版:http://www.python.org/download/
    2、安裝
    $./configure
    $make
    $make install

    與google Ad Exchange 代表處索取requester.tar.gz
    $tar zxvf requester.tar.gz
    $cd requester
    $make
    $python2.7 requester.py  --url=http://127.0.0.1:8000 --max_qps=1 --requests=1
    posted @ 2012-07-03 15:27 一凡 閱讀(1391) | 評論 (0)編輯 收藏
    代碼如下:(說明:在車東代碼的基礎上加了ie和firefox兼容部分及html)
    測了幾款手機:
    小米:: 自帶瀏覽器:支持  
    iphone4s:: safari:不支持  QQ瀏覽器:不支持 UC8.3.1:不支持
    NOKIA5238::自帶瀏覽器:支持 UC8.3:不支持

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script defer language="javascript" type="text/javascript">
    document.onclick 
    = clickStat;
    function clickStat() {
        
    // 創建空html標簽
        e=arguments[0]||window.event;
        
    var image=document.createElement("img");
        
    //image.alt="abc";
        image.height=0;
        image.width
    =0;
        x
    =e.clientX;
        y
    =e.clientY;
        
    //記錄點擊坐標
        image.src="http://localhost:8080/r?width=" + screen.width + "&x=" + x + "&y=" + y;
        
    //向服務器發送數據
        document.body.insertBefore(image);
        
    return true;
    }
    </script>
    </head>
    <body>
    測試abc
    </body>
    </html>
    posted @ 2012-04-26 17:01 一凡 閱讀(3828) | 評論 (1)編輯 收藏
    本文實現二叉樹的遞歸創建、遍歷及深度計算。即輸入:abd##e##cf###(按二叉樹結構輸入)
    二叉樹:
    返回結果如下:


    完整代碼如下:
     #include <stdio.h>
    //樹結構
     typedef struct tree {
         
    char data;
        
    struct tree *lchild, *rchild;
     } tree;

     
    //創建樹
     struct tree* create_tree() {
         
    char node_data;
        scanf(
    "%c"&node_data);
        
    if(node_data == '#') {
            
    return NULL;
        } 
    else {
            
    struct tree *= NULL;
            T 
    = (struct tree*)malloc(sizeof(struct tree));
            T
    ->data = node_data;
            T
    ->lchild = create_tree();
            T
    ->rchild = create_tree();
            
    return T;
        }
     }

     
    //先序遍歷
     void pre_traverse(struct tree *T) {
         
    if(T == NULL) {
            
    return;
        } 
    else {
            printf(
    "%c\t", T->data);
            pre_traverse(T
    ->lchild);
            pre_traverse(T
    ->rchild);
        }
     }
     
    //中序遍歷
     void mid_traverse(struct tree *T) {
         
    if(T == NULL) {
            
    return;
        } 
    else {
            mid_traverse(T
    ->lchild);
            printf(
    "%c\t", T->data);
            mid_traverse(T
    ->rchild);
            
        }
     }
     
    //后序遍歷
     void aft_traverse(struct tree *T) {
         
    if(T == NULL) {
            
    return;
        } 
    else {
            aft_traverse(T
    ->lchild);
            aft_traverse(T
    ->rchild);
            printf(
    "%c\t", T->data);
        }
     }
    //深度
    int tree_deepth(struct tree *T) {
        
    int i,j;
        
    if(!T) {
            
    return 0;
        } 
    else {
            
    if(T->lchild)
                i 
    = tree_deepth(T->lchild);
            
    else 
                i 
    = 0;

            
    if(T->rchild)
                j 
    = tree_deepth(T->rchild);
            
    else
                j 
    = 0;
        
    return i > j ? (i + 1) : (j + 1);
        }
    }

     
    int main(int argc, char **argv) {
         
    struct tree *= create_tree();
        
    if(T) {
            printf(
    "%s\n""先序:");
            pre_traverse(T);
            printf(
    "\n%s\n""中序:");
            mid_traverse(T);
            printf(
    "\n%s\n""后序:");
            aft_traverse(T);
            printf(
    "\n%s\n""深度:");
            
    int deepth = tree_deepth(T);
            printf(
    "%d\n", deepth);
            printf(
    "\n");
        }
         
    return 0;
     }

    posted @ 2012-04-09 17:19 一凡 閱讀(305) | 評論 (0)編輯 收藏
    2011年最后一天,總結一下過去的一年
    • 生活上的事
    最開心的事:我的寶貝女兒出生了(2011.2.15),給我帶來了很多快樂,小家伙到今天已10個月零16天了,在學著走路,很可愛,希望她能快樂成長
    最沖動的事:換了一輛車,科魯茲1.8se --> 新邁騰2.0至尊型,有點沖動,不過家里添了一個小公主,大空間的車也是必要的啊,哈哈
    最不解的事: 家庭生活中雞毛事,家里人為這些生氣,不開心值得嗎?不解又躲不開,先從自己做起吧,改造自己
    最大的感悟:自從為人父母后,深刻的體會到了做父母的不易,以后要更加孝敬老人、照顧老人
    • 工作上的事
    工作上的事,還是很平穩,工資比去年多了些,但在行業同水平里還是偏底的,畢業到現在換了不少公司了,不想再換了,如果不出什么意外,我想把現在公司做為我最后打工公司。今年負責的產品比較穩定,在技術上沒有什么突破,感覺對什么都是三分鐘熱度,看不下去,鉆不進去,明年計劃在技術方面要加強學習,爭取有所突破。

    就寫這么多了,這個叫流水體吧^_^比去年寫的多了點.....

     
    posted @ 2011-12-31 16:16 一凡 閱讀(292) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 永久免费av无码网站大全| 四虎成人精品国产永久免费无码| 久久丫精品国产亚洲av不卡| 在线亚洲精品福利网址导航| 亚洲精品无码你懂的网站| 亚洲一区二区精品视频| 亚洲国产一区二区视频网站| 亚洲精品成人a在线观看| 亚洲一区无码精品色| 久久久久亚洲av成人无码电影| 久久亚洲高清综合| 亚洲理论电影在线观看| 亚洲国产天堂在线观看| 亚洲高清视频免费| 色老板亚洲视频免在线观| 亚洲中文字幕AV每天更新| 99亚洲精品卡2卡三卡4卡2卡| 精品特级一级毛片免费观看| 4hu四虎免费影院www| a毛片免费观看完整| 最近中文字幕无免费| 免费电影在线观看网站| 日本免费无遮挡吸乳视频电影| 亚洲午夜福利精品久久| 国产v亚洲v天堂无码网站| 亚洲精品午夜视频| 亚洲欧美国产欧美色欲| 特色特黄a毛片高清免费观看| 成在人线av无码免费高潮喷水| 中文字幕成人免费视频| 午夜视频免费成人| 久久久久亚洲av成人无码电影 | 久久久免费精品re6| 无码日韩精品一区二区免费 | 日韩精品极品视频在线观看免费| 亚洲国产精品免费观看| 又大又黄又粗又爽的免费视频| 夜夜春亚洲嫩草影院| 亚洲欧洲春色校园另类小说| 亚洲成a人无码亚洲成www牛牛| 岛国岛国免费V片在线观看 |