java面试(二十五)--(1)redis为什么读写速率快性能好(2)说说web.xml文件中可以配置哪些内容(3)和的区别(4)扑克牌顺子
1. redis為什么讀寫速率快性能好?
1.Redis將數據存儲在內存上,避免了頻繁的IO操作
2.Redis其本身采用字典的數據結構,時間復雜度為O(1),且其采用漸進式的擴容手段
3.Redis是單線程的,避免了上下文切換帶來的消耗,采用網絡IO多路復用技術來保證在多連接的時候,系統的高吞吐量。
2.說說web.xml文件中可以配置哪些內容?
web.xml用于配置Web應用的相關信息,如:監聽器(listener)、過濾器(filter)、Servlet、相關參數、會話超時時間、安全驗證方式、錯誤頁面等,下面是一些開發中常見的配置:
①配置Spring上下文加載監聽器,加載Spring配置文件并創建IoC容器:
②配置Spring的OpenSessionInView過濾器來解決延遲加載和Hibernate會話關閉的矛盾:
<filter><filter-name>openSessionInView</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter><filter-mapping><filter-name>openSessionInView</filter-name><url-pattern>/*</url-pattern> </filter-mapping>③配置會話超時時間為10分鐘:
<session-config><session-timeout>10</session-timeout> </session-config>④配置404和Exception的錯誤頁面:
<error-page><error-code>404</error-code><location>/error.jsp</location> </error-page><error-page><exception-type>java.lang.Exception</exception-type><location>/error.jsp</location> </error-page>⑤配置安全認證方式:
<security-constraint><web-resource-collection><web-resource-name>ProtectedArea</web-resource-name><url-pattern>/admin/*</url-pattern><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>admin</role-name></auth-constraint> </security-constraint><login-config><auth-method>BASIC</auth-method> </login-config><security-role><role-name>admin</role-name> </security-role>說明:對Servlet(小服務)、Listener(監聽器)和Filter(過濾器)等Web組件的配置,Servlet 3規范提供了基于注解的配置方式,可以分別使用@WebServlet、@WebListener、@WebFilter注解進行配置。
補充:如果Web提供了有價值的商業信息或者是敏感數據,那么站點的安全性就是必須考慮的問題。安全認證是實現安全性的重要手段,認證就是要解決“Are you who you say you are?”的問題。認證的方式非常多,簡單說來可以分為三類:
A. What you know? — 口令
B. What you have? — 數字證書(U盾、密保卡)
C. Who you are? — 指紋識別、虹膜識別
在Tomcat中可以通過建立安全套接字層(Secure Socket Layer, SSL)以及通過基本驗證或表單驗證來實現對安全性的支持。
3. &和&&的區別?
相同點:
&和&&都可以用作邏輯與的運算符,表示邏輯與(and)。
不同點:
(1)&&具有短路的功能,而&不具備短路功能。
(2)當&運算符兩邊的表達式的結果都為true時,整個運算結果才為true。而&&運算符第一個表達式為false時,則結果為false,不再計算第二個表達式。
(3)&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如:0x31 & 0x0f的結果為0x01。
4.撲克牌順子
LL今天心情特別好,因為他去買了一副撲克牌,發現里面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是順子…LL不高興了,他想了想,決定大\小 王可以看成任何數字,并且A看作1,J為11,Q為12,K為13。上面的5張牌就可以變成“1,2,3,4,5”(大小王分別看作2和4),“So Lucky!”。LL決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然后告訴我們LL的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0。
示例代碼:
public class Solution {public boolean isContinuous(int [] numbers) {} }思路:題干那么長,具體就是這樣的信息,0-13,一共14個數字,0可以充當任何數字,然后輸入是五個數字,判斷是不是順子連續的。
這里隱含信息就是如果連續,那肯定最大和最小差值為4,因為只有五個數字,加了0也不可能變出花來。
還有一點是,如果數字重復,那么返回錯誤即可。
最后就需要判斷0的個數,去除0以后的數組,進行排序,最大和最小的差值必須小于4即可(因為0可能充當頭尾數)。
實現代碼:
import java.util.HashMap; import java.util.Map; public class Solution {public boolean isContinuous(int [] numbers) {//determine the array lengthif(numbers.length!=5) return false;//determine whether there is a repeat numberMap<Integer,Integer> map=new HashMap<>();for(int i=0;i<numbers.length;i++){if(numbers[i]==0) continue;if(!map.containsKey(i)){map.put(i,numbers[i]);}else{return false;}}int zeroCount=0;//store non-zero elementint[] temp=new int[numbers.length];for(int i=0;i<numbers.length;i++){if(numbers[i]==0){zeroCount++;}else{temp[i]=numbers[i];}}int tempLength=0;int j=0;while(temp[j]!=0){tempLength++;j++;}//find the min element and max element by temp arrayint max=temp[0];int min=temp[0];for(int i=1;i<tempLength;i++){if(temp[i]<min){min=temp[i];}if(temp[i]>max){max=temp[i];}}//determine whether isContinuousif(max-min<=4){return true;}else{return false;}} }總結
以上是生活随笔為你收集整理的java面试(二十五)--(1)redis为什么读写速率快性能好(2)说说web.xml文件中可以配置哪些内容(3)和的区别(4)扑克牌顺子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: USB-CDC-ECM 类设备之USB2
- 下一篇: 【前端学习】------学习准备