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

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

          posted @ 2023-11-10 15:56 一凡 閱讀(101) | 評(píng)論 (0)編輯 收藏
          1、打開(kāi)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';

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

          64e696 綠色
          5a97ff 藍(lán)色
          ffdb5a 黃色
          ff8b64 橙色
          ff5a65 紅色
          e00b5d 粉紅
          666666 深灰
          3cc7f5 淺藍(lán)
          f5863c 淺橙
          b00072 枚紅
          674ea7 紫色
          999999 灰色
          posted @ 2021-06-22 17:46 一凡 閱讀(88) | 評(píng)論 (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 一凡 閱讀(167) | 評(píng)論 (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中文轉(zhuǎn)碼
          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 一凡 閱讀(191) | 評(píng)論 (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 一凡 閱讀(188) | 評(píng)論 (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}),不需要的用(.*)匹配,總之所有需要或不需要部分都用()括起來(lái)
          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 一凡 閱讀(299) | 評(píng)論 (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)
            }
            // 處理請(qǐng)求
            c.Next()
            }
            }
          3. 在router里增加cors,必須在group之前,全局設(shè)置
            r.Use(gin.Logger(), gin.Recovery(), cors.Cors())
          4. 測(cè)試代碼,header設(shè)置不能多于cors設(shè)置
            <!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跨域測(cè)試">
            </body>
            </html>
          5. 請(qǐng)求的headers數(shù)量、名稱與cors里的設(shè)置需要嚴(yán)格對(duì)應(yīng),不然報(bào)錯(cuò)如下
            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 一凡 閱讀(330) | 評(píng)論 (0)編輯 收藏
          1、在main函數(shù)中增加全局配置,其中@name就是你確定的鑒權(quán)參數(shù)名,我的是token,    @in header 說(shuō)明參數(shù)放在header,你的鑒權(quán)代碼需要從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對(duì)應(yīng),切記不要修改
          // @Security ApiKeyAuth

          3、swagger頁(yè)面如下:


          4、添加token后,后續(xù)所有有鑒權(quán)接口的header里自動(dòng)攜帶token
          posted @ 2019-12-23 16:08 一凡 閱讀(1998) | 評(píng)論 (0)編輯 收藏
          posted @ 2019-11-19 16:41 一凡 閱讀(151) | 評(píng)論 (0)編輯 收藏
           處理1W條復(fù)雜json數(shù)據(jù)性能對(duì)比

          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 一凡 閱讀(224) | 評(píng)論 (0)編輯 收藏
          1.  Invalid bound statement (not found)
            在接口名稱及方法名稱對(duì)應(yīng)OK的情況下,在application.properties中添加:
          mybatis.mapperLocations=classpath:mapper/*Mapper.xml   
          mybatis.typeAliasesPackage=com.willpower.entity
          posted @ 2019-04-03 21:41 一凡 閱讀(135) | 評(píng)論 (0)編輯 收藏
          推薦:
          https://github.com/wming3/.vimToIDE
          posted @ 2017-05-08 16:33 一凡 閱讀(228) | 評(píng)論 (0)編輯 收藏

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

          Guice OKHttp Retrofit 
          posted @ 2017-03-02 17:36 一凡 閱讀(137) | 評(píng)論 (0)編輯 收藏
          http://www.iteye.com/news/32119
          posted @ 2017-02-10 18:57 一凡 閱讀(147) | 評(píng)論 (0)編輯 收藏
          http://www.iteye.com/news/31877
          posted @ 2016-10-11 15:26 一凡 閱讀(172) | 評(píng)論 (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 一凡 閱讀(359) | 評(píng)論 (0)編輯 收藏

              http://www.oracle.com/

              wget下載方法:
              1、在打開(kāi)瀏覽器的開(kāi)發(fā)者工具
              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
          注意:紅色,由于?是通配符,需要轉(zhuǎn)義一下。
          posted @ 2014-11-24 14:09 一凡 閱讀(229) | 評(píng)論 (0)編輯 收藏
          set hlsearch                  "高亮度反白
          set backspace=2               
          "可隨時(shí)用倒退鍵刪除
          set autoindent                 "自動(dòng)縮排
          set ruler                      
          "可顯示最后一行的狀態(tài)
          set showmode                 "左下角那一行的狀態(tài)
          set nu                        
          "可以在每一行的最前面顯示行號(hào)
          set bg=dark                   "顯示不同的底色色調(diào)
          syntax on                     
          "進(jìn)行語(yǔ)法檢驗(yàn),顏色顯示
          set wrap                      "自動(dòng)折行
          set shiftwidth=4
          set tabstop=4
          set softtabstop=4
          set expandtab                  
          "將tab替換為相應(yīng)數(shù)量空格
          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 一凡 閱讀(281) | 評(píng)論 (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 一凡 閱讀(309) | 評(píng)論 (0)編輯 收藏
          pasting

          log4j.properties 使用
          一.參數(shù)意義說(shuō)明
          輸出級(jí)別的種類
          ERROR、WARN、INFO、DEBUG
          ERROR 為嚴(yán)重錯(cuò)誤 主要是程序的錯(cuò)誤
          WARN 為一般警告,比如session丟失
          INFO 為一般要顯示的信息,比如登錄登出
          DEBUG 為程序的調(diào)試信息
          配置日志信息輸出目的地
          log4j.appender.appenderName = fully.qualified.name.of.appender.class
          1.org.apache.log4j.ConsoleAppender(控制臺(tái))
          2.org.apache.log4j.FileAppender(文件)
          3.org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
          4.org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)
          5.org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
          配置日志信息的格式
          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(包含日志信息的級(jí)別和信息字符串),
          4.org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)
          控制臺(tái)選項(xiàng)
          Threshold=DEBUG:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
          Target=System.err:默認(rèn)情況下是:System.out,指定輸出控制臺(tái)
          FileAppender 選項(xiàng)
          Threshold=DEBUF:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
          File=mylog.txt:指定消息輸出到mylog.txt文件。
          Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。
          RollingFileAppender 選項(xiàng)
          Threshold=DEBUG:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
          File=mylog.txt:指定消息輸出到mylog.txt文件。
          Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。
          MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達(dá)該大小時(shí),將會(huì)自動(dòng)滾動(dòng),即將原來(lái)的內(nèi)容移到mylog.log.1文件。
          MaxBackupIndex=2:指定可以產(chǎn)生的滾動(dòng)文件的最大數(shù)。
          log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
          日志信息格式中幾個(gè)符號(hào)所代表的含義:
           -X號(hào): X信息輸出時(shí)左對(duì)齊;
           %p: 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL,
           %d: 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
           %r: 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
           %c: 輸出日志信息所屬的類目,通常就是所在類的全名
           %t: 輸出產(chǎn)生該日志事件的線程名
           %l: 輸出日志事件的發(fā)生位置,相當(dāng)于%C.%M(%F:%L)的組合,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main (TestLog4.java:10)
           %x: 輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中。
           %%: 輸出一個(gè)"%"字符
           %F: 輸出日志消息產(chǎn)生時(shí)所在的文件名稱
           %L: 輸出代碼中的行號(hào)
           %m: 輸出代碼中指定的消息,產(chǎn)生的日志具體信息
           %n: 輸出一個(gè)回車換行符,Windows平臺(tái)為"/r/n",Unix平臺(tái)為"/n"輸出日志信息換行
           可以在%與模式字符之間加上修飾符來(lái)控制其最小寬度、最大寬度、和文本的對(duì)齊方式。如:
           1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,默認(rèn)的情況下右對(duì)齊。
           2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,"-"號(hào)指定左對(duì)齊。
           3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大于30的話,就會(huì)將左邊多出的字符截掉,但小于30的話也不會(huì)有空格。
           4)%20.30c:如果category的名稱小于20就補(bǔ)空格,并且右對(duì)齊,如果其名稱長(zhǎng)于30字符,就從左邊較遠(yuǎn)輸出的字符截掉。
          二.文件配置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 輸出 一天一個(gè)文件,輸出路徑可以定制,一般在根路徑下
          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配置文件實(shí)現(xiàn)了輸出到控制臺(tái),文件,回滾文件,發(fā)送日志郵件,輸出到數(shù)據(jù)庫(kù)日志表,自定義標(biāo)簽等全套功能。
          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
          三.高級(jí)使用
          實(shí)驗(yàn)?zāi)康模?br /> 1.把FATAL級(jí)錯(cuò)誤寫(xiě)入2000NT日志
           2. WARN,ERROR,F(xiàn)ATAL級(jí)錯(cuò)誤發(fā)送email通知管理員
           3.其他級(jí)別的錯(cuò)誤直接在后臺(tái)輸出
          實(shí)驗(yàn)步驟:
           輸出到2000NT日志
           1.把Log4j壓縮包里的NTEventLogAppender.dll拷到WINNT/SYSTEM32目錄下
           2.寫(xiě)配置文件log4j.properties
          # 在2000系統(tǒng)日志輸出
           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.調(diào)用代碼:
           Logger logger2 = Logger.getLogger("NTlog"); //要和配置文件中設(shè)置的名字相同
           logger2.debug("debug!!!");
           logger2.info("info!!!");
           logger2.warn("warn!!!");
           logger2.error("error!!!");
           //只有這個(gè)錯(cuò)誤才會(huì)寫(xiě)入2000日志
           logger2.fatal("fatal!!!");
          發(fā)送email通知管理員:
           1. 首先下載JavaMail和JAF, 
            http://java.sun.com/j2ee/ja/javamail/index.html
            http://java.sun.com/beans/glasgow/jaf.html
           在項(xiàng)目中引用mail.jar和activation.jar。
           2. 寫(xiě)配置文件
           # 將日志發(fā)送到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.調(diào)用代碼:
           //把日志發(fā)送到mail
           Logger logger3 = Logger.getLogger("MailLog");
           logger3.warn("warn!!!");
           logger3.error("error!!!");
           logger3.fatal("fatal!!!");
          在后臺(tái)輸出所有類別的錯(cuò)誤:
           1. 寫(xiě)配置文件
           # 在后臺(tái)輸出
           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.調(diào)用代碼
           Logger logger1 = Logger.getLogger("console");
           logger1.debug("debug!!!");
           logger1.info("info!!!");
           logger1.warn("warn!!!");
           logger1.error("error!!!");
           logger1.fatal("fatal!!!");
          --------------------------------------------------------------------
           全部配置文件:log4j.properties
           # 在后臺(tái)輸出
           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系統(tǒng)日志輸出
           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
          # 將日志發(fā)送到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
            
          /* 
            * 創(chuàng)建日期 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"); 
             //在后臺(tái)輸出 
             Logger logger1 = Logger.getLogger("console"); 
             logger1.debug("debug!!!"); 
             logger1.info("info!!!"); 
             logger1.warn("warn!!!"); 
             logger1.error("error!!!"); 
             logger1.fatal("fatal!!!");
          //在NT系統(tǒng)日志輸出 
             Logger logger2 = Logger.getLogger("NTlog"); 
             //NTEventLogAppender nla = new NTEventLogAppender(); 
             logger2.debug("debug!!!"); 
             logger2.info("info!!!"); 
             logger2.warn("warn!!!"); 
             logger2.error("error!!!"); 
             //只有這個(gè)錯(cuò)誤才會(huì)寫(xiě)入2000日志 
             logger2.fatal("fatal!!!");
          //把日志發(fā)送到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 一凡 閱讀(207) | 評(píng)論 (0)編輯 收藏
          mac :   lsof -i:8080

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

          "set tabstop=4
          "set shiftwidth=4
          set ts=4
          set sw=4
          set expandtab
          "自動(dòng)tab

           

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


          "根據(jù)文件類型自動(dòng)插入文件頭
          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 
          "新建文件后自動(dòng)定位至文件末尾
          autocmd BufNewFile * normal G
          "F2去空行
          nnoremap <F2> :g/^\s*$/d<CR>
          posted @ 2013-10-25 21:24 一凡 閱讀(323) | 評(píng)論 (0)編輯 收藏
          訪問(wèn)mysql出現(xiàn)如下error:
          ERROR 1045 (28000): Access denied for user 'root'@'121.39.50.24' (using password: YES)
          時(shí),用root登錄到數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行:
          set password for 'root'@'%'=PASSWORD('abc123');
          注:有時(shí)grant授權(quán)后也不行,必須再執(zhí)行如上命令
          posted @ 2013-10-25 11:36 一凡 閱讀(223) | 評(píng)論 (0)編輯 收藏
          1、查看java證書(shū)的別名:
          >keytool -list -keystore test.jks -v
          執(zhí)行命令后找到別名
          2、下載jks2pfx:http://www.willrey.com/support/jks2pfx.rar
          3、解壓jks2pfx后,進(jìn)入此目錄
          D:\jks2pfx>JKS2PFX.bat ../tmp/test.jks pass mykey store C:\Program Files\Java\jdk1.7.0_05\bin
                                                 要轉(zhuǎn)的jks       密碼  別名    導(dǎo)出文件名   jdk路徑


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

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

          太平洋電腦網(wǎng)IP查詢接口:
          http://whois.pconline.com.cn/?ip=0.0.0.0
          把0.0.0.0換成IP地址,頁(yè)面上還有其他無(wú)關(guān)內(nèi)容,這些內(nèi)容是告訴我們哪些接口可以調(diào)用、接口調(diào)用參數(shù)和使用方法等

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

          身份證查詢接口:
          返回XML數(shù)據(jù):http://www.youdao.com/smartresult-xml/search.s?type=id&q=身份證號(hào)
          返回JSON數(shù)據(jù):http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=id&q=身份證號(hào)
          */
          echo file_get_contents("接口網(wǎng)址和參數(shù)");
          ?>
          posted @ 2013-05-14 12:10 一凡 閱讀(830) | 評(píng)論 (1)編輯 收藏
          iconv -f from-encoding -t to-encoding inputfile
          如:iconv -f GBK -t UTF8 test.txt
          posted @ 2013-05-08 18:53 一凡 閱讀(224) | 評(píng)論 (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 一凡 閱讀(560) | 評(píng)論 (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 一凡 閱讀(285) | 評(píng)論 (0)編輯 收藏
          >>> 
          >>> print urllib.quote("測(cè)試abc")
          %E6%B5%8B%E8%AF%95abc
          >>> 
          >>> 
          >>> print urllib.unquote("%E6%B5%8B%E8%AF%95abc")
          測(cè)試abc
          >>> 
          posted @ 2013-03-05 09:57 一凡 閱讀(949) | 評(píng)論 (0)編輯 收藏
           find . -name *.php  -exec grep 總記錄數(shù) {} -H \;
          posted @ 2013-02-22 11:36 一凡 閱讀(317) | 評(píng)論 (0)編輯 收藏
          • 200 - 請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。
          • 206 - 服務(wù)器已經(jīng)成功處理了部分 GET 請(qǐng)求
          • 301 - 被請(qǐng)求的資源已永久移動(dòng)到新位置
          • 302 - 請(qǐng)求的資源現(xiàn)在臨時(shí)從不同的 URI 響應(yīng)請(qǐng)求
          • 400 - 錯(cuò)誤的請(qǐng)求。當(dāng)前請(qǐng)求無(wú)法被服務(wù)器理解
          • 401 - 請(qǐng)求未授權(quán),當(dāng)前請(qǐng)求需要用戶驗(yàn)證。
          • 403 - 禁止訪問(wèn)。服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它。
          • 404 - 文件不存在,資源在服務(wù)器上未被發(fā)現(xiàn)。
          • 500 - 服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無(wú)法完成對(duì)請(qǐng)求的處理。
          • 503 - 由于臨時(shí)的服務(wù)器維護(hù)或者過(guò)載,服務(wù)器當(dāng)前無(wú)法處理請(qǐng)求。

          HTTP 協(xié)議狀態(tài)碼定義可以參閱:Hypertext Transfer Protocol -- HTTP/1.1

          posted @ 2013-01-05 12:11 一凡 閱讀(247) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 贵南县| 庆元县| 和平区| 施秉县| 孝昌县| 民丰县| 黑龙江省| 临高县| 西畴县| 苗栗市| 江安县| 老河口市| 连云港市| 修武县| 武强县| 临武县| 昌邑市| 裕民县| 浠水县| 彰化县| 泰和县| 巴林右旗| 县级市| 延吉市| 长白| 桐柏县| 赫章县| 金平| 定州市| 仪陇县| 松江区| 宁波市| 泰和县| 东乡县| 岳西县| 文登市| 乌拉特中旗| 遂川县| 巴彦县| 仲巴县| 柳州市|