1. 程式人生 > 實用技巧 >tp5.1 order函式排序無效和orderRaw自定義處理排序

tp5.1 order函式排序無效和orderRaw自定義處理排序

  1. jdk和jre的區別
    (1). jdk:全稱Java Development Kit,java開發的類庫,工具包
    (2). jre:全稱Java Runtime Environment,java執行時的環境,包含了java虛擬機器,java基礎類庫
  2. 離開了jdk 只有jre可以執行專案嗎
    JRE只有java,即直譯器,而直譯器只能對位元組碼解釋執行。所以只安裝了JRE,是不能執行java程式的。需先用jdk的javac編譯器對原始碼編譯為class檔案才行。
    摘自知乎:https://zhuanlan.zhihu.com/p/62504600
    所以如果java檔案沒有被編譯成class檔案則需要jdk 如果已經編譯成了jdk則不需要
  3. final關鍵字
    final意為不可變的,常與static一同使用,一般分為四個場景
    (1). 修飾變數(成員變數,區域性變數):只能被賦值一次且無法被改變
    (2). 修飾方法:表示方法不可被重寫
    (3). 修飾方法引數:表示在變數的生存期中它的值不能被改變
    (3). 修飾類:表示類不可被繼承
  4. Map和list的區別
    (1). List中的物件按照索引位置排序,可以有重複物件,允許按照物件在集合中的索引位置檢索物件
    (2). Map中的每一個元素包含一個鍵物件和值物件,它們成對出現。鍵物件不能重複,值物件可以重複。
    也就是說區別是,list有索引所以資料可以重複,map是k-v鍵值對,key是鍵所以不能重複但value可以
  5. hashMap和hashTable的區別
    (1). HashMap是非執行緒安全的,只是用於單執行緒環境下,多執行緒環境下可以採用concurrent併發包下的concurrentHashMap。
    Hashtable也是JDK1.0引入的類,是執行緒安全的,能用於多執行緒環境中。
  6. java 字串兩端有空格如何去重
//去除首位空格
str.trim()
//去除所有空格
str.replaceAll(" ","")
//去除空白字元不限於空格
 str.replaceAll("\\s*","")
  1. 為什麼要序列化
    物件的序列化技術,實現的手段是通過Object流,是將物件轉換為容易傳輸的格式的過程
    若在網路上物件需要傳輸,那麼就需要序列化,保證了物件的傳輸性和一致性,傳遞方序列化(序列化成流) 接收方反序列化(從該流重新構造物件)
  2. 什麼是sql注入
    SQL注入(SQLi)是一種注入攻擊,可以執行惡意SQL語句。它通過將任意SQL程式碼插入資料庫查詢,使攻擊者能夠完全控制Web應用程式後面的資料庫伺服器
    樣例
select * from student where name='' and pwd=''

這時pwd這一項填入
’ OR ‘1’='1後

select * from student where name='' and pwd='' OR '1'='1'

這樣密碼就永遠是true成功登入

  1. 如何防止sql注入
    (1). 在原生開發裡可以用PreparedStatement來接sql
conn =ForumUtil.getConnection();
			String sql = "select * from student where name='' and pwd=''";
			ps =conn.prepareStatement(sql);

這中方法就是先把sql語句來編譯好 先確定了sql結構 ,就不會出現注入問題
在mybatis裡Like關鍵字也要使用CONCAT來拼接,做到防止sql注入

report_time LIKE CONCAT(#{nowTime},'%')

mybatis裡字串使用#{}非字串使用${}

    1. RabbitMQ,ActiveMQ和Kafka的區別
      ActiveMQ:底層是用java寫的對JMS支援最好,採用多執行緒併發,資源消耗比較大
      Kafka:為大資料開發的有著叢集,負載均衡的支援
      RabbitMQ:受眾廣,AMQP協議,支援多種場景
    2. JMS跟ActiveMQ的關係
      JMS:全稱Java Message Service 是JavaEE的訊息規範
      ActiveMQ是JMS的一種落地實現
    3. 集合
      1. Set:
        TreeSet:支援有序性操作。但是查詢效率不高
        HashSet:支援快速查詢,但不支援有序性操作。
        LinkedHashSet:具有 HashSet 的查詢效率,並且內部使用雙向連結串列維護元素的插入順序。
      2. List:
        ArrayList:基於動態陣列實現,支援隨機訪問。
        Vector:和 ArrayList 類似,但它是執行緒安全的。
        LinkedList:基於雙向連結串列實現,只能順序訪問,但是可以快速地在連結串列中間插入和刪除元素。
    4. spring中最重要的兩個功能是什麼
      IOC:依賴注入,控制反轉
      AOP: 面向切面程式設計
    5. 如何使用執行緒
      1. 實現runable介面中的run方法
      2. 實現 Callable 介面
      3. 繼承 Thread類
    6. 什麼是IOC?
      控制反轉(IOC)就是把原先我們程式碼裡面需要實現的物件建立、依賴的程式碼,反轉給容器來幫忙實現。那麼必然的我們需要建立一個容器,同時需要一種描述來讓容器知道需要建立的物件與物件的關係。這個描述最具體表現就是我們可配置的檔案。IOC容器最主要是完成了物件的建立和依賴的管理注入等。

    7. Spring AOP
      AOP即面向切面程式設計。可以說是OOP(Object Oriented Programming,面向物件程式設計)的補充和完善。OOP引入封裝、繼承、多型等概念來建立一種物件層次結構,用於模擬公共行為的一個集合。AOP技術利用一種稱為"橫切"的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到一個可重用模組,並將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複程式碼,降低模組之間的耦合度,並有利於未來的可操作性和可維護性。

      AOP把軟體系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關係不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處基本相似,比如許可權認證、日誌、事物。AOP的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

    8. Java設計模式

      1、工廠模式:客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。缺點是當產品修改時,工廠類也要做相應的修改。如:如何建立及如何向客戶端提供。

      2,單例模式
      確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項單例模式。單例模式只應在有真正的“單一例項”的需求時才可使用。

      3,介面卡模式
      介面卡模式:把一個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據引數返還一個合適的例項給客戶端。

      4,代理模式
      代理模式:代理模式給某一個物件提供一個代理物件,並由代理物件控制對源物件的引用。代理就是一個人或一個機構代表另一個人或者一個機構採取行動。某些 情況下,客戶不想或者不能夠直接引用一個物件,代理物件可以在客戶和目標物件直接起到中介的作用。客戶端分辨不出代理主題物件與真實主題物件。代理模式可 以並不知道真正的被代理物件,而僅僅持有一個被代理物件的介面,這時候代理物件不能夠建立被代理物件,被代理物件必須有系統的其他角色代為建立並傳入。