
2010年10月29日
此問題是由于升級 macos sonoma 14.2.1 引起的
解決辦法,重新安裝xcode
rm -rf /Library/Developer/CommandLineTools
xcode-select --install
posted @
2024-02-04 13:57 一凡 閱讀(52) |
評論 (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
流程圖位置
- 流程圖xml
和png
需放在resources/processes
下
## Test
- Test Case
都可執行,包括:
- 流程查詢
- 流程部署
- 流程啟動
- 流程拾取、完成操作
## Mysql
- 需要啟動Mysql8
- 數據庫名Activiti7
- activiti
會版建表
posted @
2023-11-10 15:56 一凡 閱讀(97) |
評論 (0) |
編輯 收藏
1、打開my.cnf 加入 skip-grant-tables2、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) |
編輯 收藏
posted @
2021-06-22 17:46 一凡 閱讀(84) |
評論 (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) |
編輯 收藏
- 新增中間件cors
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()
}
}
- 在router里增加cors,必須在group之前,全局設置
r.Use(gin.Logger(), gin.Recovery(), cors.Cors())
- 測試代碼,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>
- 請求的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 一凡 閱讀(326) |
評論 (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 一凡 閱讀(146) |
評論 (0) |
編輯 收藏
處理1W條復雜json數據性能對比
- golang
./go_extract_json 0.95s user 0.12s system 99% cpu 1.081 total
- shell
bash segment.sh 0.64s user 0.07s system 101% cpu 0.695 total
- perl
perl extract.pl 39.57s user 0.54s system 98% cpu 40.579 total
posted @
2019-09-20 18:13 一凡 閱讀(221) |
評論 (0) |
編輯 收藏
- 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 一凡 閱讀(130) |
評論 (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 一凡 閱讀(135) |
評論 (0) |
編輯 收藏
http://www.iteye.com/news/32119
posted @
2017-02-10 18:57 一凡 閱讀(142) |
評論 (0) |
編輯 收藏
http://www.iteye.com/news/31877
posted @
2016-10-11 15:26 一凡 閱讀(168) |
評論 (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 一凡 閱讀(354) |
評論 (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_8aff16bf46c832f44260abcc951c58eawget http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin\?AuthParam=1416809306_8aff16bf46c832f44260abcc951c58ea
注意:紅色,由于?是通配符,需要轉義一下。
posted @
2014-11-24 14:09 一凡 閱讀(226) |
評論 (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.
class1.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.
class1.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 一凡 閱讀(251) |
評論 (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 一凡 閱讀(325) |
評論 (0) |
編輯 收藏
curl -A "android;15;default" -d "detail=aaaaa" "http://test.com/"
posted @
2013-12-18 11:07 一凡 閱讀(278) |
評論 (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 一凡 閱讀(747) |
評論 (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 一凡 閱讀(270) |
評論 (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 一凡 閱讀(319) |
評論 (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 一凡 閱讀(221) |
評論 (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 一凡 閱讀(283) |
評論 (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 一凡 閱讀(946) |
評論 (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 一凡 閱讀(241) |
評論 (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;;
0) exit;;
*) menu;;
esac
done
}
menu
posted @
2012-10-17 11:25 一凡 閱讀(266) |
評論 (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 一凡 閱讀(1449) |
評論 (0) |
編輯 收藏
sed -i "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 一凡 閱讀(787) |
評論 (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 一凡 閱讀(5305) |
評論 (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 一凡 閱讀(1390) |
評論 (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 *T = 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 *T = 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 一凡 閱讀(303) |
評論 (0) |
編輯 收藏
2011年最后一天,總結一下過去的一年
最開心的事:我的寶貝女兒出生了(2011.2.15),給我帶來了很多快樂,小家伙到今天已10個月零16天了,在學著走路,很可愛,希望她能快樂成長
最沖動的事:換了一輛車,科魯茲1.8se --> 新邁騰2.0至尊型,有點沖動,不過家里添了一個小公主,大空間的車也是必要的啊,哈哈
最不解的事: 家庭生活中雞毛事,家里人為這些生氣,不開心值得嗎?不解又躲不開,先從自己做起吧,改造自己
最大的感悟:自從為人父母后,深刻的體會到了做父母的不易,以后要更加孝敬老人、照顧老人
工作上的事,還是很平穩,工資比去年多了些,但在行業同水平里還是偏底的,畢業到現在換了不少公司了,不想再換了,如果不出什么意外,我想把現在公司做為我最后打工公司。今年負責的產品比較穩定,在技術上沒有什么突破,感覺對什么都是三分鐘熱度,看不下去,鉆不進去,明年計劃在技術方面要加強學習,爭取有所突破。
就寫這么多了,這個叫流水體吧^_^比去年寫的多了點.....
posted @
2011-12-31 16:16 一凡 閱讀(292) |
評論 (0) |
編輯 收藏
#encode
quote("客戶")
#decode
print urllib.unquote('%CF%CA%BB%A8')
#utf8編碼的解碼方法,其中ignore參數可忽略不正確的數據
print de(str).decode("utf8","ignore")
#gbk編碼的解碼方法,其中ignore參數可忽略不正確的數據
print de(str).decode("utf8","ignore")
posted @
2011-12-29 16:53 一凡 閱讀(207) |
評論 (0) |
編輯 收藏
dir /tc /o-d /a-d *.* >d:\allfiles.txt
posted @
2011-10-21 17:17 一凡 閱讀(960) |
評論 (0) |
編輯 收藏
查看系統環境是否設置了“LD_LIBRARY_PATH”
辦法一:
如沒有設置,就將你的so路徑設置為LD_LIBRARY_PATH:
export LD_LIBRARY_PATH="your so path"
或將上面命令添加到~/.bashrc里,執行:
source ~/.bashrc
辦法二:
如沒設置,將你的so拷至LD_LIBRARY_PATH路徑下并執行:
/sbin/ldconfig -v
通過以上兩種辦法之一就能解決此問題,當然還可以修改/etc/ld.so.conf,但需要root權限,總之辦法不止這兩種,大家靈活應用吧。
posted @
2011-09-13 18:12 一凡 閱讀(333) |
評論 (0) |
編輯 收藏
在linux a上執行:
$ssh-keygen -t rsa #不需要任何輸入,一路回車
$scp ~/.ssh/id_rsa.pub to linux B
在liunx b上執行:
$cat id_rsa.pub >>~/.ssh/authorized_keys
posted @
2011-09-07 12:18 一凡 閱讀(315) |
評論 (0) |
編輯 收藏
如下代碼:
private long testTime = 60 * 24 * 3600 * 1000;
testTime應該等于5184000000,但實際值為889032704,造成了int數據溢出。
開發中要牢記。
posted @
2011-08-31 11:30 一凡 閱讀(202) |
評論 (0) |
編輯 收藏
可以通過加編譯參數encoding gbk,執行時加-Dfile.encoding="GBK"的辦法來解決,具體命令行:
javac -encoding gbk TTT.java
java -Dfile.encoding="GBK" TTT
posted @
2011-06-24 15:38 一凡 閱讀(312) |
評論 (0) |
編輯 收藏
http://woodpecker.org.cn/diveintopython/toc/index.html
posted @
2011-03-16 16:39 一凡 閱讀(268) |
評論 (0) |
編輯 收藏
春節過完了,也該總結一下我的2010了,這一年我過的很糾結,在辭職自己干和繼續打工之間糾結,在年過30的恐慌中,對自己未來職業規劃的迷茫中渡過,不管怎么說這一年算是過來了。這一年收獲的不少,工作上很平穩,按部就班的,生活上我們也有了小寶寶(快要來到我們身邊了),我很期待。
2011年我還得堅持,為了我們的小寶再打工一年......
不多寫了,也不細寫了,哈哈
posted @
2011-02-12 13:37 一凡 閱讀(248) |
評論 (0) |
編輯 收藏
gcc test_get_ad.c -o test_get_ad -ldl
posted @
2010-11-03 13:06 一凡 閱讀(277) |
評論 (0) |
編輯 收藏
摘自:http://edu.codepub.com/2009/0929/15909.php
應用舉例
(1) 判斷int型變量a是奇數還是偶數
a&1 = 0 偶數
a&1 = 1 奇數
(2) 取int型變量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1
(3) 將int型變量a的第k位清0,即a=a&~(1 < <k)
(4) 將int型變量a的第k位置1, 即a=a ¦(1 < <k)
(5) int型變量循環左移k次,即a=a < <k ¦a>>16-k (設sizeof(int)=16)
(6) int型變量a循環右移k次,即a=a>>k ¦a < <16-k (設sizeof(int)=16)
(7)整數的平均值
對于兩個整數x,y,如果用 (x+y)/2 求平均值,會產生溢出,因為 x+y 可能會大于INT_MAX,但是我們知道它們的平均值是肯定不會溢出的,我們用如下算法:
int average(int x, int y) //返回X,Y 的平均值
{
return (x&y)+((x^y)>>1);
}
(8)判斷一個整數是不是2的冪,對于一個數 x >= 0,判斷他是不是2的冪
boolean power2(int x)
{
return ((x&(x-1))==0)&&(x!=0);
}
(9)不用temp交換兩個整數
void swap(int x , int y)
{
x ^= y;
y ^= x;
x ^= y;
}
(10)計算絕對值
int abs( int x )
{
int y ;
y = x >> 31 ;
return (x^y)-y ; //or: (x+y)^y
}
(11)取模運算轉化成位運算 (在不產生溢出的情況下)
a % (2^n) 等價于 a & (2^n - 1)
(12)乘法運算轉化成位運算 (在不產生溢出的情況下)
a * (2^n) 等價于 a < < n
(13)除法運算轉化成位運算 (在不產生溢出的情況下)
a / (2^n) 等價于 a>> n
例: 12/8 == 12>>3
(14) a % 2 等價于 a & 1
(15) if (x == a) x= b;
else x= a;
等價于 x= a ^ b ^ x;
(16) x 的 相反數 表示為 (~x+1)
實例
功能 ¦ 示例 ¦ 位運算
----------------------+---------------------------+--------------------
去掉最后一位 ¦ (101101->10110) ¦ x >> 1
在最后加一個0 ¦ (101101->1011010) ¦ x < < 1
在最后加一個1 ¦ (101101->1011011) ¦ x < < 1+1
把最后一位變成1 ¦ (101100->101101) ¦ x ¦ 1
把最后一位變成0 ¦ (101101->101100) ¦ x ¦ 1-1
最后一位取反 ¦ (101101->101100) ¦ x ^ 1
把右數第k位變成1 ¦ (101001->101101,k=3) ¦ x ¦ (1 < < (k-1))
把右數第k位變成0 ¦ (101101->101001,k=3) ¦ x & ~ (1 < < (k-1))
右數第k位取反 ¦ (101001->101101,k=3) ¦ x ^ (1 < < (k-1))
取末三位 ¦ (1101101->101) ¦ x & 7
取末k位 ¦ (1101101->1101,k=5) ¦ x & ((1 < < k)-1)
取右數第k位 ¦ (1101101->1,k=4) ¦ x >> (k-1) & 1
把末k位變成1 ¦ (101001->101111,k=4) ¦ x ¦ (1 < < k-1)
末k位取反 ¦ (101001->100110,k=4) ¦ x ^ (1 < < k-1)
把右邊連續的1變成0 ¦ (100101111->100100000) ¦ x & (x+1)
把右起第一個0變成1 ¦ (100101111->100111111) ¦ x ¦ (x+1)
把右邊連續的0變成1 ¦ (11011000->11011111) ¦ x ¦ (x-1)
取右邊連續的1 ¦ (100101111->1111) ¦ (x ^ (x+1)) >> 1
去掉右起第一個1的左邊 ¦ (100101000->1000) ¦ x & (x ^ (x-1))
判斷奇數 (x&1)==1
判斷偶數 (x&1)==0
例如求從x位(高)到y位(低)間共有多少個1
public static int FindChessNum(int x, int y, ushort k)
{
int re = 0;
for (int i = y; i <= x; i++)
{
re += ((k >> (i - 1)) & 1);
}
return re;
}
posted @
2010-10-29 12:21 一凡 閱讀(1469) |
評論 (0) |
編輯 收藏