个人开发知识点收集

个人开发知识点收集

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 6
    11.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

 浏览器录屏代码

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特殊字符

  < > & ' ",遇到以上字符,需要依次转换为 &lt; &gt; &amp; &apos; &quot;

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; }
posted @ 2017-03-20 16:04  _herbert  阅读(510)  评论(0编辑  收藏  举报