Tomcat 配置和spring-framework MVC配置簡介

Tomcat啟動時,先找系統變量CATALINA_BASE,如果沒有,則找CATALINA_HOME。然后找這個變量所指的目錄下的conf文件夾,從中讀取配置文件。最重要的配置文件:server.xml?。要配置tomcat,基本上了解server.xmlcontext.xmlweb.xml

Server.xml?--??tomcat主配置文件

Web.xml?--?servlet與其他適用于整個Web應用程序設置的配置文件,必須符合servlet規范的標準格式。

Context.xml?--?默認的context配置,應用于安裝了Tomcat的所有主機的所有部署內容。該文件的格式和標準的context?XML片段文件的格式完全相同。它應包含在context元素中,而且暗含元素應嵌套與Context中。即該文件中的配置是所有web.xml的全局配置。

applicationContext.xml?--?默認的spring框架全局配置信息

{servlet-name}-servlet.xml?--?Spring?MVC?Servlet的核心配置文件?

Server.xml

配置元素說明:

元素名

屬性

解釋

server

port

指定一個端口,這個端口負責監聽關閉tomcat?的請求

shutdown

指定向端口發送的命令字符串

service

name

指定service?的名字

Connector?(?表示客戶端和service之間的連接)

port

指定服務器端要創建的端口號,并在這個斷口監聽來自客戶端的請求

minProcessors

服務器啟動時創建的處理請求的線程數

maxProcessors

最大可以創建的處理請求的線程數

enableLookups

如果為true?,則可以通過調用request.getRemoteHost()進行DNS?查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS?查詢,而是返回其ip?地址

redirectPort

指定服務器正在處理http?請求時收到了一個SSL?傳輸請求后重定向的端口號

acceptCount

指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理

connectionTimeout

指定超時的時間數(?以毫秒為單位)

Engine?(?表示指定service?中的請求處理機,接收和處理來自Connector?的請求)

defaultHost

指定缺省的處理請求的主機名,它至少與其中的一個host元素的name?屬性值是一樣的

Context?(?表示一個web?應用程序,通常為WAR?文件,關于WAR?的具體信息見servlet?規范)

docBase

應用程序的路徑或者是WAR?文件存放的路徑

path

表示此web?應用程序的url?的前綴,這樣請求的url為http://localhost:8080/path/?****

reloadable

這個屬性非常重要,如果為true?,則tomcat?會自動檢測應用程序的/WEB-INF/lib?和/WEB-INF/classes?目錄的變化,自動裝載新的應用程序,我們可以在不重起tomcat?的情況下改變應用程序

host?(?表示一個虛擬主機?)

name

指定主機名

appBase

應用程序基本目錄,即存放應用程序的目錄

unpackWARs

如果為true?,則tomcat?會自動將WAR?文件解壓,否則不解壓,直接從WAR?文件中運行應用程序

Logger?(?表示日志,調試和錯誤信息)

className

指定logger?使用的類名,此類必須實現org.apache.catalina.Logger?接口

prefix

指定log?文件的前綴

suffix

指定log?文件的后綴

timestamp

如果為true?,則log?文件名中要加入時間,如下例:localhost_log.2001-10-04.txt

Realm?(?表示存放用戶名,密碼及role?的數據庫)

className

指定Realm?使用的類名,此類必須實現org.apache.catalina.Realm?接口

Valve?(?功能與Logger?差不多,其prefix和suffix?屬性解釋和Logger?中的一樣)

className

指定Valve?使用的類名,如用org.apache.catalina.valves.AccessLogValve?類可以記錄應用程序的訪問信息

directory

指定log?文件存放的位置

pattern

有兩個值,common?方式記錄遠程主機名或ip?地址,用戶名,日期,第一行請求的字符串,HTTP?響應代碼,發送的字節數。combined?方式比common?方式記錄的值更多

<Server>元素

代表整個容器,是Tomcat實例的頂層元素.org.apache.catalina.Server接口來定義。它包含一個<Service>元素,并且它不能做為任何元素的子元素。

示例:

?<?Server?port?="8005"?shutdown?="SHUTDOWN"?debug?="0"?>

屬性:

1.?className指定實現org.apache.catalina.Server接口的類.默認值為

org.apache.catalina.core.StandardServer

2.?port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出shutdown命令.該屬性是必須的

3.?shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串。該屬性必須設置。

<Service>元素

org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個

<Connector>,這些Connector元素共享用同一個Engine元素

示例:

<?Service?name?="Catalina"?>?

<?Service?name?="Apache"?>

???第一個<Service>處理所有直接由Tomcat服務器接收的web客戶請求.

???第二個<Service>處理所有由Apahce服務器轉發過來的Web客戶請求

屬性:

1.?className?指定實現org.apahce.catalina.Service接口的類.默認為

org.apahce.catalina.core.StandardService

2.?name定義Service的名字

<Engine>元素

每個Service元素只能有一個Engine元素,處理在同一個<Service>中所有<Connector>元素接收到的客戶請求。由org.apahce.catalina.Engine接口定義。<Engine>可包含如下元素<Logger>,?<Realm>,?<Value>,?<Host>

示例:

<?Engine?name?="Catalina"?defaultHost?="localhost"?debug?="0"?>

說明:

1.?className指定實現Engine接口的類,默認值為StandardEngine

2.?defaultHost指定處理客戶的默認主機名,在<Engine>中的<Host>子元素中必須定義這一主機

3.?name定義Engine的名字

<Host>元素

Host接口定義。一個Engine元素可以包含多個<Host>元素。每個<Host>的元素定義了一個虛擬主機,包含了一個或多個Web應用。<Host>元素中可包含如下子元素<Logger>,?<Realm>,?<Value>,?<Context>

示例:

<?Host?name?="localhost"?debug?="0"?appBase?="webapps"?unpackWARs?="true"?autoDeploy?="true"?>

屬性:

1.?className指定實現Host接口的類.默認值為StandardHost

2.?appBase指定虛擬主機的目錄,可指定絕對目錄,也可指定相對于<CATALINA_HOME>的相對目錄。如果沒有此項,默認為<CATALINA_HOME>/webapps

3.?autoDeploy如果此項設為true,表示Tomcat服務處于運行狀態時,能夠監測appBase下的文件,如果有新有web應用加入進來,會自運發布這個WEB應用

4.?unpackWARs如果此項設置為true,表示把WEB應用的WAR文件先展開為開放目錄結構后再運行。如果設為false將直接運行為WAR文件

5.?alias指定主機別名,可以指定多個別名

6.?deployOnStartup如果此項設為true,表示Tomcat服務器啟動時會自動發布appBase目錄下所有的Web應用。如果Web應用中的server.xml沒有相應的<Context>元素,將采用Tomcat默認的Context

7.?name定義虛擬主機的名字

<Context>元素

Context接口定義。是使用最頻繁的元素。每個<Context>元素代表了運行在虛擬主機上的單個Web應用。一個<Host>可以包含多個<Context>元素。每個web應用有唯一的一個相對應的Context代表web應用自身。?servlet容器為第一個web應用創建一個ServletContext對象。<Context>元素可包含如下元素<Logger>,?<Realm>,?<Resource>,?<ResourceParams>

示例:

<?Context?path?="/sample"?docBase?="sample"?debug?="0"?reloadbale?="true"?>

屬性:

1.?className指定實現Context的類,默認為StandardContext

2.?path指定訪問Web應用的URL入口,注意/myweb,而不是myweb

3.?reloadable如果這個屬性設為true,?Tomcat服務器在運行狀態下會監視在WEB-INF/classesWeb-INF/lib目錄CLASS文件的修改,如果監視到有class文件被更新,服務器自重新加載Web應用

4.?cookies指定是否通過Cookies來支持Session,默認值為true

5.?useNaming指定是否支持JNDI,默認值為了true

<Connector>元素

Connector接口定義。<Connector>元素代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客戶返回響應結果.

示例:

?<?Connector?port?="8080"?maxThread?="50"?minSpareThreads?="25"?maxSpareThread?="75"?

?enableLookups?="false"?redirectPort?="8443"?acceptCount?="100"?debug?="0"?

?connectionTimeout?="20000"?disableUploadTimeout?="true"?/>?

?<?Connection?port?="8009"?enableLookups?="false"?redirectPort?="8443"?debug?="0"?

?protocol?="AJP/1.3"?/>

第一個Connector元素定義了一個HTTP?Connector,它通過8080端口接收HTTP請求;第二個Connector元素定義了一個JD?Connector,它通過8009端口接收由其它服務器轉發過來的請求.

Connector元素共用屬性

1.?className指定實現Connector接口的類

2.?enableLookups如果設為true,表示支持域名解析,可以把IP地址解析為主機名.WEB應用中調用request.getRemoteHost方法返回客戶機主機名.默認值為true

3.?redirectPort指定轉發端口.如果當前端口只支持non-SSL請求,在需要安全通信的場命,將把客戶請求轉發至SSLredirectPort端口

HttpConnector元素的屬性

1.?className實現Connector的類

2.?port設定Tcp/IP端口,默認值為8080,如果把8080改成80,則只要輸入http://localhost?即可,因為TCP/IP的默認端口是80

3.?address如果服務器有二個以上ip地址,此屬性可以設定端口監聽的ip地址.默認情況下,端口會監聽服務器上所有的ip地址

4.?bufferSize設定由端口創建的輸入流的緩存大小.默認值為2048byte

5.?protocol設定Http協議,默認值為HTTP/1.1

6.?maxThreads設定在監聽端口的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數

.默認值為200

7.?acceptCount設定在監聽端口隊列的最大客戶請求數量,默認值為10.如果隊列已滿,客戶必須等待.

8.?connectionTimeout定義建立客戶連接超時的時間.如果為-1,表示不限制建立客戶連接的時間

JkConnector的屬性

1.?className實現Connector的類

2.?port設定AJP端口號

3.?protocol必須設定為AJP/1.3

web.xml

Web.xml?--?servlet與其他適用于整個Web應用程序設置的配置文件,必須符合servlet規范的標準格式。在Tomcat中,有兩處會用到web.xml:?1)?CATALINA_BASE/conf目錄;?2)?每個Web應用程序的./WEB-INF。這兩個文件共同定義Web應該程序的行為。其中CATALINA_BASE/conf/web.xml?是全局配置,適用于所有的Web應用程序。應用程序的./WEB-INF/web.xml?是針對各個Web應該程序的獨立配置,只對單個Web?Context有效。一般CATALINA_BASE/conf/web.xml?不需修改,采用Tomcat默認配置即可。

/WEB-INF/web.xml常見配置項

context-param?--?應用于整個Web應用程序(Context)的初始化參數。有多項,則分開。

filter?/?filter-mapping?--?共同配置Context的過濾規則。filter?配置過濾器;filter-mapping配置過濾規則和過濾器的映射關系。

Listener?--?配置整個Web的事件觸發器。

Servlet?/?servlet-mapping?--?配置servlet和servlet所處理的HTTP請求(servlet-mapping)

session-config?--?配置HTTP?session相關屬性。

welcome-file-list?--?配置歡迎頁。

示例:啟用?Spring?容器和?Spring?MVC?框架

復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"><!--  Spring 服務層的配置文件 --><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/classes/log4j.properties</param-value></context-param><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/application*.xml</param-value></context-param><filter><filter-name>CharacterFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param><init-param><param-name>force</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--  Spring 容器啟動監聽器 --><listener>             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--  Spring MVC 的Servlet,它將加載WEB-INF/testserver-servlet.xml 的配置文件,以啟動Spring MVC模塊--><servlet><servlet-name>testserver</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>testserver</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><session-config><!-- Default to 5 minute session timeouts --><session-timeout>10</session-timeout></session-config><welcome-file-list><welcome-file>/welcome.jsp</welcome-file></welcome-file-list>
</web-app>
復制代碼

tomcat的listener??--?servlet容器級(web.xml配置使用)全局事件處理器,繼承自?javax.servlet.ServletContextListener,實現全局數據加載。tomcat服務器啟動時,ServletContextListener?的?contextInitialized()方法被調用,初始化公共的全局數據。在每個servlet?context關閉之前,ServletContextListener?的?contextDestroyed()方法被調用,可實現servlet級別的操作,比如關閉超時HTTP鏈接。配置示例:

復制代碼
    <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>your.ContextListener</listener-class></listener>
復制代碼

api說明:?http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContextListener.html

Web應用程序布局和部署

應用程序布局目錄規范

./webapps/

./webapps/ROOT

./webapps/ROOT/index.html

./webapps/di

./webapps/di/META-INF

./webapps/di/META-INF/MANIFEST.MF

./webapps/di/WEB-INF

./webapps/di/WEB-INF/lib

./webapps/di/WEB-INF/di-servlet.xml

./webapps/di/WEB-INF/applicationContext.xml

./webapps/di/WEB-INF/classes

./webapps/di/WEB-INF/web.xml

其中,web.xml是核心配置文件。

部署

解包目錄的Web部署方式

服務提供者可將相應的classlib放在相應目錄下。優點:易于診斷故障;支持單jarclass文件更新。缺點:不好監控文件變更。

WAR文件部署方式

Java?servlet規范支持將整個Web目錄下的所有文件(配置、classjar)打包成WAR文件,以單個WAR文件方式部署Web應用程序。優點:容易監控WAR文件變更,有利于安全防護(防黑客攻擊)

Spring?MVC配置

org.springframework.web.context.ContextLoaderListener

ContextLoaderListener的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現了ServletContextListener這個接口,在web.xml配置這個監聽器,啟動容器時,就會默認執行它實現的方法。

ApplicationContext.xml這個配置文件部署:?如果在web.xml中不寫任何參數配置信息,默認的路徑是”/WEB-INF/applicationContext.xml,在WEB-INF目錄下創建的xml文件的名稱必須是applicationContext.xml。如果是要自定義文件名可在web.xml里加入contextConfigLocation這個context參數:

<context-param>?

<param-name>contextConfigLocation</param-name>?

<param-value>?

?/WEB-INF/classes/applicationContext-*.xml?

</param-value>?

</context-param>

<param-value>?</param-value>里指定相應的xml文件名;如果有多個xml文件,可寫在一起并一“,”號分隔。上面的applicationContext-*.xml采用通配符,比如這那個目錄下有applicationContext-ibatis-base.xmlapplicationContext-action.xmlapplicationContext-ibatis-dao.xml等文件,都會一同被載入。

由此可見applicationContext.xml的文件位置就可以有兩種默認實現:

第一種:直接將之放到/WEB-INF,并在web.xml中聲明一個listener

第二種:放到classpath下,且需在web.xml中加入<context-param>,用它來指明你的applicationContext.xml的位置以供web容器來加載。按照?Struts2?整合spring的官方給出的檔案,寫成:

<!--?Context?Configuration?locations?for?Spring?XML?files?-->?

<context-param>?

<param-name>contextConfigLocation</param-name>?

<param-value>/WEB-INF/applicationContext-*.xml,classpath:applicationContext-*.xml</param-value>?

</context-param>

*-servlet.xml?示例(可使用ContextLoaderListener載入的配置)

復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans><bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>/WEB-INF/classes/test.properties</value></list></property></bean><bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/gettest.do">getTestController</prop></props></property></bean><bean name="getTestController" class="com.test.service.diserviceDo" singleton="false"><property name="onlineIndex" ref="diIndex" /><property name="yearIndex" ref="yearIndex" /></bean><bean id="diIndex" class="com.di.service.MulSearch" singleton="true"><constructor-arg value="${di.dir}" /><constructor-arg value="${di.num}" /></bean><bean id="yearIndex" class="com.di.service.MulSearch" singleton="true"><constructor-arg value="${year.dir}" /><constructor-arg value="${year.num}" /></bean>
</beans>
復制代碼

Handler Interceptor攔截請求

Spring?MVC允許你通過處理攔截攔截web請求,進行前置處理和后置處理。處理攔截是在Springweb應用程序上下文中配置的,因此它們可以利用各種容器特性,并引用容器中聲明的任何Bean。處理攔截是針對特殊的處理程序映射進行注冊的,因此它只攔截通過這些處理程序映射的請求。每個處理攔截都必須實現HandlerInterceptor接口,它包含三個需要你實現的回調方法:preHandle(),postHandle()afterCompletion()。第一個和第二個方法分別是在處理程序處理請求之前和之后被調用的。第二個方法還允許訪問返回的ModelAndView對象,因此可以在它里面操作模型屬性。最后一個方法是在所有請求處理完成之后被調用的(如視圖呈現之后)。參見:spring MVC之用Handler Interceptor攔截請求

api說明:

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.html?

spring mvc的異常處理機制

spring mvc提供了:

org.springframework.web.servlet.HandlerExceptionResolver

接口用于處理異常,該接口需要開發者實現方法,根據異常類型和上下文數據,返回ModelAndView。見該類的javadoc

簡單使用示例(實現MyExceptionHandleResolver,*-servlet.xml?添加如下配置):

<bean id="myExceptionResolver" class="com.exception.resolver.MyExceptionHandleResolver" />

使用示例:映射錯誤頁面

http://marshal.easymorse.com/archives/1379

偽靜態配置:

web.xml

<filter>?
<filter-name>UrlRewriteFilter</filter-name>?
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>?
</filter>?
<filter-mapping>?
<filter-name>UrlRewriteFilter</filter-name>?
<url-pattern>/*</url-pattern>
</filter-mapping>

urlrewrite.xml

復制代碼
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite><rule>
<note>新聞</note>
<from>^/news/([0-9]+).html$</from>
<to>/newview.htm?id=$1</to>
</rule><rule>
<note>禮包</note>
<from>^/libao/([0-9]+).html$</from>
<to>/libaoview.htm?id=$1</to>
</rule><rule>
<note>游戲</note>
<from>^/youxi/([0-9]+).html$</from>
<to>/gameview.htm?gameid=$1</to>
</rule><rule>
<note>游戲列表</note>
<from>^/games_([0-9]+)_([0-9]+)_([0-9]+).html$</from>
<to>/games.htm?type=$1&amp;gametype=$2&amp;page=$3</to>
</rule><rule>
<note>資訊列表</note>
<from>^/news_([0-9]+)_([0-9]+).html$</from>
<to>/news.htm?type=$1&amp;page=$2</to>
</rule><rule>
<note>禮包列表</note>
<from>^/libaos_([0-9]+).html$</from>
<to>/libaos.htm?page=$1</to>
</rule></urlrewrite>
復制代碼

參考文章

Tomcat權威指南 - 第三章、第七章

tomcat配置文件server.xml詳解

使用 Spring 基于注解驅動的 Spring MVC



本文轉自 zhenjing 博客園博客,原文鏈接:?http://www.cnblogs.com/zhenjing/archive/2013/01/18/tomcat_spring.html? ,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256890.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256890.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SDL 庫 無法解析的外部符號 __imp__fprintf

VS2015 在鏈接器-》命令行 里加入legacy_stdio_definitions.lib 另外一個常見錯誤關于stderr的用 extern "C" { FILE __iob_func[3] { *stdin,*stdout,*stderr }; }轉載于:https://www.cnblogs.com/zhaogaojian/p/5646885.html

ultra edit ftp帳號管理導入導出方法

在更換電腦或ultra edit新安裝時往往需要將原來使用的ftp帳號導入過來&#xff0c;可以在高級-備份/恢復用戶定制-選中其他保存備份&#xff0c;拷貝出來然后再導入。 也可以在配置-ftp/sftp中保存&#xff0c;拷貝出來然后在安裝好后配置。 步驟1. 導出ftp帳號信息&#xff1a…

學習筆記(39):Python實戰編程-標簽

立即學習:https://edu.csdn.net/course/play/19711/343101?utm_sourceblogtoedu 標簽——文字標簽和圖片標簽 1.文字標簽 關鍵代碼&#xff1a; label_text tkinter.Label(root,text linlianqin.com, width "20",height "10",font (楷體,20),bg #1…

散列沖突與作為特征值的散列

緣起 寫這篇文章&#xff0c;源于這么一個問題&#xff1a;假設目前有一千萬個URL訪問記錄&#xff0c;請統計最熱門的10個查詢串。(見此文)。見到這個問題的第一想法使用hash解決&#xff0c;沒考慮hash沖突解決的問題(其實就沒想比較URL&#xff0c;不比較URL無法判斷沖突與否…

C++:getenv setenv -- 獲取設置系統環境變量

C&#xff1a;getenv & setenv -- 獲取&設置系統環境變量 1. getenv&#xff1a;取得環境變量內容 頭文件- #include<stdlib.h> 格式&#xff1a; char * getenv(const char *name); 意義&#xff1a; getenv()用來取得參數name環境變量的內容。 param name為環…

CSS單位和值

顏色值 在網頁中的顏色設置是非常重要&#xff0c;有字體顏色&#xff08;color&#xff09;、背景顏色&#xff08;background-color&#xff09;、邊框顏色&#xff08;border&#xff09;等&#xff0c;設置顏色的方法也有很多種&#xff1a; 1、英文命令顏色 前面幾個小節中…

學習筆記(40):Python實戰編程-文本

立即學習:https://edu.csdn.net/course/play/19711/343102?utm_sourceblogtoedu 文本——人機交互&#xff0c;文本輸入的地方&#xff08;tkinter.Text&#xff08;“需要顯示的文本”&#xff0c;屬性的設置&#xff09;組件類&#xff09; 知識點&#xff1a; 文本輸入 文…

嵌入式linux的調試技術

本章介紹了嵌入式linux的調試技術&#xff0c;例如&#xff0c;設置斷點、逐步跟蹤代碼、輸出調試信息等。 Printk函數用于打印內核調試信息&#xff0c;運行在內核空間&#xff0c;printf函數運行在用戶空間。Printk文件是一個簡單的有4個數字組成的文本文件。 雖然使用Printk…

constexpr的好處

constexpr的好處&#xff1a; 是一種很強的約束&#xff0c;更好地保證程序的正確語義不被破壞。編譯器可以在編譯期對constexpr的代碼進行非常大的優化&#xff0c;比如將用到的constexpr表達式都直接替換成最終結果等。相比宏來說&#xff0c;沒有額外的開銷&#xff0c;但更…

PHP中include()與require()的區別說明

123456789101112131415161718192021222324252627require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面&#xff0c;PHP 程序在執行前&#xff0c;就會先讀入 require 所指定引入的文件&#xff0c;使它變成 PHP 程序網頁的一部份…

電腦重裝系統重裝不了,老是藍屏,是不是硬盤燒壞了!

藍屏代碼是什么啊裝不了有時候是內存的問題以下內容為百度知道Ctangel個人總結&#xff0c;并非網絡復制&#xff0c;全是個人日常工作中遇到并且明確確定原因的。如需復制請注明出處。這里列舉幾個典型的藍屏故障的原因和解決辦法。一、0X0000000A 這個藍屏代碼和硬件無關&…

學習筆記(41):Python實戰編程-按鈕

立即學習:https://edu.csdn.net/course/play/19711/343103?utm_sourceblogtoedu 按鈕——用于指令的提交作用&#xff0c;如將文本中輸入的信息進行提交等 button tkinter.Button(root,text linlianqin,image photo,compound bottom) 創建了一個圖片按鈕&#xff0c;并且…

第八章讀后感

一&#xff0e;Linux驅動的代碼重用有很多的方法&#xff0c;可以采用標準的C程序的方法將要重用的代碼放在其他的文件&#xff08;在頭文件中聲明&#xff09;中。如果要使用某些功能&#xff0c;include相應的頭文件即可&#xff0c;也可以是另外一種動態重用的方式&#xff…

linux系統基礎優化小結

不用root&#xff0c; 添加普通用戶&#xff0c;通過sudo授權管理 更改默認的遠程ssh服務端口及禁止root用戶遠程登陸 定時自動更新服務器時間 ntpdate 配置yum更新源&#xff0c;從國內更新源下載安裝軟件&#xff0c;如啊里云&#xff0c;163等.http://mirrors.aliyun.com…

iOS8 【xcode6中添加pch全局引用文件】

前沿&#xff1a;xcode6中去掉了pch&#xff0c;為了一些瑣碎的頭文件引用&#xff0c;加快了 編譯速度&#xff01; xcode6之前的版本建項目就自動添加了是這樣的&#xff1a;xcode6后的版本要自己手動的添加步驟如下&#xff1a;1&#xff09; 2)3&#xff09; $(SRCROOT)/pc…

學習筆記(42):Python實戰編程-pyinstaller程序打包

將程序打包可以使得所有Windows帶有python虛擬機的電腦進行使用&#xff0c;打包的內容有代碼加外部資源&#xff08;如logo圖片等&#xff09; 步驟&#xff1a; 1&#xff09;創建程序的代碼 2&#xff09;生成配置文件——用于獲得打包的資源&#xff0c;將資源保存在運行程…

[js]BOM篇

一、什么是BOM BOM&#xff08;Browser Object Model&#xff09;即瀏覽器對象模型。BOM提供了獨立于內容 而與瀏覽器窗口進行交互的對象&#xff1b;由于BOM主要用于管理窗口與窗口之間的通訊&#xff0c;因此其核心對象是window&#xff1b;BOM由一系列相關的對象構成&#x…

透視校正

1、需要解決的問題&#xff1a; 怎么用圖像處理的辦法將梯形轉換為規則的矩形&#xff0c;進行一個視覺的透視校正 2、解決思路&#xff1a; 1&#xff09;先二值化圖像&#xff0c;提取其輪廓&#xff08;其中使用到填充&#xff0c;形態學知識&#xff09; 2&#xff09;…

雜項備忘

svn導出 export LANGzh_CN.UTF-8 && svn --username shuai --password shuai checkout svn://192.168.14.111/safe.qq.com /update/webapps/safe.qq.com mysqlsla --sortc_sum slow.log 本文轉自 liang3391 51CTO博客&#xff0c;原文鏈接:http://blog.51cto.com/liang…

安裝Pywin32后無法正常引用pyd文件

1. 首先在官方下載pywin32 2.下載完成后,無法正常引用pyd文件 3.解決方案: python安裝目錄\Lib\site-packages\pywin32_system32\* 至 C:\Windows\System32 轉載于:https://www.cnblogs.com/MonkeyKingK/p/4731960.html