個人開發知識點收集
個人開發知識點收集
1.java
- tomcat遠程調試
set CATALINA_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527
或者 ./catalina.sh jpda start
- 打包class jar -cvf xxx.jar xxx文件名
- 查詢任務管理器命令行信息
wmic process where caption="java.exe" get caption,commandline,ProcessId /value
- 比較字符串內容是否相等,需要使用方法 boolean java.lang.String.equals(Object arg0),直接使用 == 判斷的是兩個串的地址是否相等。

- jvm加載jar是按照文件名排序后加載的,加載一次后不會重復加載。也就是說程序目錄lib中同時存在 TestJar1.jar 和 TestJar2.jar,運行時加載的是TestJar1.jar

- ojdbc 與 Oracle 版本 https://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#01_01
-
Oracle Database version JDBC Jar files specific to the release 18.3 ojdbc8.jar with JDK8, JDK9, JDK10, JDK11 12.2 or 12cR2 ojdbc8.jar with JDK 8 12.1 or 12cR1 ojdbc7.jar with JDK 7 and JDK 8
ojdbc6.jar with JDK 611.2 or 11gR2 ojdbc6.jar with JDK 6, JDK 7, and JDK 8
(Note: JDK7 and JDK8 are supported in 11.2.0.3 and 11.2.0.4 only)
ojdbc5.jar with JDK 5 - Chrome Source 面板中找不到js代碼, 在<script> //@ sourceURL=xxx.js </script> xxx.js是在調試時顯示的文件名,可以隨意取名。
2.javaScript
- ''==0 返回為true ,用全等返回false,對于喜歡用if(xxx){}這種方式,或者喜歡使用三目運算符,需要考慮這些特殊情況。

- replace 是一個很好用的方法,并且支持正則
如果替換內容是一個正則表達式,函數中每一個分組會生成一個參數
dom offsetWidth clientWidth 區別是后者不包含 border


- 鼠標對象 MouseEvent 中 clientX,offsetx,pagex,screenx區別 https://blog.csdn.net/lzding/article/details/45437707
瀏覽器錄屏代碼
async function beginRecord() {
var stream = await navigator.mediaDevices.getDisplayMedia({
video: true
});
var mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9") ? "video/webm; codecs=vp9" : "video/webm";
var mediaRecorder = new MediaRecorder(stream,{
mimeType: mime
});
//錄制
var chunks = [];
mediaRecorder.addEventListener('dataavailable', function(e) {
chunks.push(e.data)
})
//停止
mediaRecorder.addEventListener('stop', function() {
var blob = new Blob(chunks,{
type: chunks[0].type
});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'video.webm';
a.click();
})
//手動啟動
mediaRecorder.start()
}
在開發者工具console調用
3.C#
- linq是一個很好的語法模式,不過語法有時很難記住,如果通過linq查詢一個DataTable,下邊是一個Linq的分組查詢
4.PL/SQL
- 數字類型千分位 格式 'FM999,999,999,999,999,990.00'

- 樹形抽數
SELECT f_Parentnodeid, f_externalunitid, LEVEL lvl FROM tb_base_externalunit START WITH f_externalunitid = v_F_EXTERNALUNITID CONNECT BY PRIOR f_Parentnodeid = f_externalunitid
查詢oralce字符集
SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'
防止Select INTO出現找不到數據異常
select count(*) ,max(id) into a, b from xx ;
然后通過 a =0 判斷是否有數據,省去找不到數據的異常捕獲
substr拆分字符
select substr('abc',level,1) from dual connect by level <= 3
特殊字符分隔拆分
select regexp_substr('0,0,3,4,5,0,7,8,9,10,11,12','[^,]+',1,level)
from dual connect by level<= 12;

查找對象鎖sessionId
-- 判斷是否存在鎖
select * from V$DB_OBJECT_CACHE where name='BUDGET_CONTROL' and locks!='0';
-- 得到SID
select /*+ rule*/ SID from V$ACCESS WHERE object='BUDGET_CONTROL';
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='723';
select a.SID,a.SERIAL#,b.SPID,a.STATUS from v$session a,v$process b where a.SID=723 and a.PADDR=b.ADDR;
alter system kill session '723';
使用listagg 替換wm_concat
select min(m.f_status),
listagg(m.f_planeno, '或') WITHIN group(order by m.f_planetype)
into mStatus, mMoudleName
from tb_production_reportmain m
where m.f_year = mMainData.f_Year
and (m.f_planeno = '飛機參數表' or m.f_planeno = '運力投入計劃表');
PLSQL 導入腳本包含&,會認為是變量,可以在sql腳本執行之前執行
set define off;
PLSQL導入腳本,插入數據是日期格式,且值為字符串類型,此時導入腳本要求使用to_date轉換為日期類型,可以在sql腳本執行之前執行
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
ORACE 閃回查詢
select * from agent as of timestamp sysdate-1
5.BASH
- %~dp0,%cd% 都表示當前bat運行目錄

- 0 表示標準輸入 1 表示標準輸出 2 表示標準錯誤輸出,若bat中出現 2>&1,表示將運行命令中的錯誤信息,顯示到控制臺中。符號 < 表示輸入,如,cat<1.txt 表示讀取1.txt中的內容。 符號 > 表示輸出,如: ls>1.txt 表示把ls中數據的內容保存到1.txt中,符號 >> 表示追加,如 ls>>1.txt 表示向文件1.txt中追加本次ls輸出內容。
- %0 表示bat文件路徑,%~nx0,表示去bat文件名和文件后綴
- 復制文件保持目錄結構
- echo F|xcopy ".\old\apps_res\wewe\bbfkdcxtjb.html" ".\new\apps_res\wewe\bbfkdcxtjb.html" /C /Y /Q
- 查找文件占用進程
- 資源監視器,cpu頁簽,通過關聯句柄查詢占用文件名,獲取到PID,改PID可能是一個子進程,需要查找父進程
- 通過命名 wmic process where processid=上一步得到的PID get parentprocessid
4.SqlServer
- 樹形結構查詢
with TreeDisplay([ObjectID] ,[JobCode],[SuperiorPostID],[CategoryID],Name,level) as (select ObjectID,[JobCode],[SuperiorPostID],[CategoryID],Name,0 as level from [dbo].[OT_OrgPost] where ObjectID= 'dcd2dee1-c861-474b-9b2c-cc2882f4a858'--開始查詢條件 union all --遞歸條件 select a.ObjectID ,a.[JobCode],a.[SuperiorPostID],a.[CategoryID],a.Name,b.level+1 from [dbo].[OT_OrgPost] a inner join TreeDisplay b on (a.ObjectID=b.[SuperiorPostID])) select * from cte_child;
5.JSON 特殊字符
\n \b \r \t / \,遇到以上字符需要做轉義替換處理。
6.XML特殊字符
< > & ' ",遇到以上字符,需要依次轉換為 < > & ' "
7.CSS兼容性
IE瀏覽器都可以識別符號 \9 ,IE6和IE7可識別 * ,IE6還可以是識別 _ ,CSS從上往下,由此可以為不同的瀏覽器設置不同的樣式;
.className{
background:blue; /*非IE瀏覽器背景變藍色*/
background:red \9; /*IE8 背景變紅色*/
*background:black; /*IE7 背景變黑色*/
_background:orange; /*IE6 背景變橘色*/
}
8.SVN 合并兩個倉庫
1. 使用vsrsionServer 導出項目dump
2. 建立新倉庫,并規劃目錄
3. 使用命令svnadmin導入到子目錄 svnadmin load --parent-dir 新倉庫子目錄 新倉庫 < 備份dump
VsrsionServer 3.9 以后突破15人限制,直接找到 Repositories\htpasswd 文件,用記事本打開,添加一行數據,再修改密碼即可
9.完整復制eclipse主題
找到被復制項目空間,將目錄中 .metadata\.plugins\org.eclipse.core.runtime\.settings 所有文件復制到目標空間相同位置
10.excel生成字母序列
使用公式 CHAR(ROW(A1)+64) ,然后使用鼠標拖動填充
11.Java亂碼處理方案

11. 一個數字存儲table行和列
int row=3,col=2,rowNum=5; int temp = row*rowNum+col; row = temp/rowNum; // int 類型相除是不會得到小數的,獲取準確值,需要轉換成 浮點數 col = remp%rowNum;
12.請求偽造ip
x-forwarded-for: 127.0.0.1
x-remote-IP: 127.0.0.1
x-remote-ip: 127.0.0.1
x-client-ip: 127.0.0.1
x-client-IP: 127.0.0.1
X-Real-IP: 127.0.0.1
client-IP:127.0.0.1
x-originating-IP:127.0.0.1
x-remote-addr:127.0.0.1
RFC3986 保留關鍵字符 空格 " # < > \ ^ ` { | }
if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 60 || i == 62 || i == 92 || i == 94 || i == 96 || i == 123 || i == 124 || i == 125) { IS_NOT_REQUEST_TARGET[i] = true; }
- 轉載請注明來源
- 作者:楊瀚博
- QQ:464884492

浙公網安備 33010602011771號