1. //继承了ServletRequest接口,给servlet提供Request请求信息,servlet 容器会创建以后HttpServletRequest对象
  2. //并把它作为一个参数给service函数
  3. public interface HttpServletRequest extends ServletRequest {
  4.  
  5. /**
  6. * String identifier for Basic authentication. Value "BASIC"
  7. */
  8. public static final String BASIC_AUTH = "BASIC";
  9. /**
  10. * String identifier for Form authentication. Value "FORM"
  11. */
  12. public static final String FORM_AUTH = "FORM";
  13. /**
  14. * String identifier for Client Certificate authentication. Value "CLIENT_CERT"
  15. */
  16. public static final String CLIENT_CERT_AUTH = "CLIENT_CERT";
  17. /**
  18. * String identifier for Digest authentication. Value "DIGEST"
  19. */
  20. public static final String DIGEST_AUTH = "DIGEST";
  21.  
  22. /**
  23. * Returns the name of the authentication scheme used to protect
  24. * the servlet. All servlet containers support basic, form and client
  25. * certificate authentication, and may additionally support digest
  26. * authentication.
  27. * If the servlet is not authenticated <code>null</code> is returned.
  28. * <p>Same as the value of the CGI variable AUTH_TYPE.
  29. */
  30. //返回验证符,BASIC_AUTH、FORM_AUTH、 CLIENT_CERT_AUTH、 DIGEST_AUTH
  31. public String getAuthType();
  32. /**
  33. * Returns an array containing all of the <code>Cookie</code>
  34. * objects the client sent with this request.
  35. * This method returns <code>null</code> if no cookies were sent.
  36. * @return an array of all the <code>Cookies</code>
  37. * included with this request, or <code>null</code>
  38. * if the request has no cookies
  39. */
  40. //返回一个包含所有cookie的数组
  41. public Cookie[] getCookies();
  42. /**
  43. * Returns the value of the specified request header
  44. * as a <code>long</code> value that represents a
  45. * <code>Date</code> object. Use this method with
  46. * headers that contain dates, such as
  47. * <code>If-Modified-Since</code>.
  48. * <p>The date is returned as
  49. * the number of milliseconds since January 1, 1970 GMT.
  50. * The header name is case insensitive.
  51. * <p>If the request did not have a header of the
  52. * specified name, this method returns -1. If the header
  53. * can't be converted to a date, the method throws
  54. * an <code>IllegalArgumentException</code>.
  55. * @param name a <code>String</code> specifying the
  56. * name of the header
  57. * @return a <code>long</code> valuerepresenting the date specified
  58. in the header expressed as the number of milliseconds since January 1, 1970 GMT,
  59. * or -1 if the named header was not included with the
  60. */
  61. //返回name的时间请求头部,没有值返回-1
  62. public long getDateHeader(String name);
  63. /**
  64. * Returns the value of the specified request header
  65. * as a <code>String</code>. If the request did not include a header
  66. * of the specified name, this method returns <code>null</code>.
  67. * If there are multiple headers with the same name, this method
  68. * returns the first head in the request.
  69. * The header name is case insensitive. You can use
  70. * this method with any request header.
  71. * @param name a <code>String</code> specifying the header name
  72. * @return a <code>String</code> containing the value of the requested
  73. * header, or <code>null</code>if the request does not have a header of that name
  74. */
  75. //返回头部name的信息
  76. public String getHeader(String name);
  77. /**
  78. * Returns all the values of the specified request header
  79. * as an <code>Enumeration</code> of <code>String</code> objects.
  80. * <p>Some headers, such as <code>Accept-Language</code> can be sent
  81. * by clients as several headers each with a different value rather than
  82. * sending the header as a comma separated list.
  83. * <p>If the request did not include any headers
  84. * of the specified name, this method returns an empty
  85. * <code>Enumeration</code>.
  86. * The header name is case insensitive. You can use
  87. * this method with any request header.
  88. * @param name a <code>String</code> specifying the
  89. * header name
  90. * @return an <code>Enumeration</code> containing
  91. * the values of the requested header. If
  92. * the request does not have any headers of
  93. * that name return an empty
  94. * enumeration. If
  95. * the container does not allow access to
  96. * header information, return null
  97. */
  98. //返回头部name的枚举
  99. public Enumeration getHeaders(String name);
  100. /**
  101. * Returns an enumeration of all the header names
  102. * this request contains. If the request has no
  103. * headers, this method returns an empty enumeration.
  104. * <p>Some servlet containers do not allow
  105. * servlets to access headers using this method, in
  106. * which case this method returns <code>null</code>
  107. * @return an enumeration of all the
  108. * header names sent with this
  109. * request; if the request has
  110. * no headers, an empty enumeration;
  111. * if the servlet container does not
  112. * allow servlets to use this method,
  113. */
  114. //所有头部的name枚举
  115. public Enumeration getHeaderNames();
  116. /**
  117. * Returns the value of the specified request header
  118. * as an <code>int</code>. If the request does not have a header
  119. * of the specified name, this method returns -1. If the
  120. * header cannot be converted to an integer, this method
  121. * throws a <code>NumberFormatException</code>.
  122. * <p>The header name is case insensitive.
  123. * @param name a <code>String</code> specifying the name of a request header
  124. * @return an integer expressing the value of the request header or -1 if the request doesn't have a header of this name
  125. * @exception NumberFormatException If the header value can't be converted to an <code>int</code>
  126. */
  127. //头部name作为int返回
  128. public int getIntHeader(String name);
  129. /**
  130. * Returns the name of the HTTP method with which this
  131. * request was made, for example, GET, POST, or PUT.
  132. * Same as the value of the CGI variable REQUEST_METHOD.
  133. * @return a <code>String</code>
  134. * specifying the name
  135. * of the method with which
  136. * this request was made
  137. */
  138. //返回方法get,post,put
  139. public String getMethod();
  140. /**
  141. * Returns any extra path information associated with
  142. * the URL the client sent when it made this request.
  143. * The extra path information follows the servlet path
  144. * but precedes the query string and will start with
  145. * a "/" character.
  146. * <p>This method returns <code>null</code> if there
  147. * was no extra path information.
  148. * <p>Same as the value of the CGI variable PATH_INFO.
  149. * @return a <code>String</code>, decoded by the
  150. * web container, specifying
  151. * extra path information that comes
  152. * after the servlet path but before
  153. * the query string in the request URL;
  154. * or <code>null</code> if the URL does not have
  155. * any extra path information
  156. */
  157. //返回路径信息
  158. public String getPathInfo();
  159. /**
  160. * but before the query string, and translates it to a real
  161. * path. Same as the value of the CGI variable PATH_TRANSLATED.
  162. * <p>If the URL does not have any extra path information,
  163. * this method returns <code>null</code> or the servlet container
  164. * cannot translate the virtual path to a real path for any reason
  165. * (such as when the web application is executed from an archive).
  166. * The web container does not decode this string.
  167. * @return a <code>String</code> specifying the
  168. * real path, or <code>null</code> if
  169. * the URL does not have any extra path
  170. * information
  171. */
  172. //
  173. public String getPathTranslated();
  174. /**
  175. *
  176. * Returns the portion of the request URI that indicates the context
  177. * of the request. The context path always comes first in a request
  178. * URI. The path starts with a "/" character but does not end with a "/"
  179. * character. For servlets in the default (root) context, this method
  180. * returns "". The container does not decode this string.
  181. * @return a <code>String</code> specifying the
  182. * portion of the request URI that indicates the context
  183. * of the request
  184. */
  185.  
  186. public String getContextPath();
  187. /**
  188. *
  189. * Returns the query string that is contained in the request
  190. * URL after the path. This method returns <code>null</code>
  191. * if the URL does not have a query string. Same as the value
  192. * of the CGI variable QUERY_STRING.
  193. * @return a <code>String</code> containing the query
  194. * string or <code>null</code> if the URL
  195. * contains no query string. The value is not
  196. * decoded by the container.
  197. */
  198. //请求中的参数值
  199. public String getQueryString();
  200. /**
  201. * Returns the login of the user making this request, if the
  202. * user has been authenticated, or <code>null</code> if the user
  203. * has not been authenticated.
  204. * Whether the user name is sent with each subsequent request
  205. * depends on the browser and type of authentication. Same as the
  206. * value of the CGI variable REMOTE_USER.
  207. * @return a <code>String</code> specifying the login
  208. * of the user making this request, or <code>null</code>
  209. * if the user login is not known
  210. */
  211. //远程用户
  212. public String getRemoteUser();
  213. /**
  214. * Returns a boolean indicating whether the authenticated user is included
  215. * in the specified logical "role". Roles and role membership can be
  216. * defined using deployment descriptors. If the user has not been
  217. * authenticated, the method returns <code>false</code>.
  218. * @param role a <code>String</code> specifying the name
  219. * of the role
  220. * @return a <code>boolean</code> indicating whether
  221. * the user making this request belongs to a given role;
  222. * <code>false</code> if the user has not been
  223. * authenticated
  224. */
  225. //用户角色判断
  226. public boolean isUserInRole(String role);
  227. /**
  228. * Returns a <code>java.security.Principal</code> object containing
  229. * the name of the current authenticated user. If the user has not been
  230. * authenticated, the method returns <code>null</code>.
  231. * @return a <code>java.security.Principal</code> containing
  232. * the name of the user making this request;
  233. * <code>null</code> if the user has not been
  234. * authenticated
  235. */
  236. //
  237. public java.security.Principal getUserPrincipal();
  238. /**
  239. * Returns the session ID specified by the client. This may
  240. * not be the same as the ID of the current valid session
  241. * for this request.
  242. * If the client did not specify a session ID, this method returns
  243. * @return a <code>String</code> specifying the session
  244. * ID, or <code>null</code> if the request did
  245. * not specify a session ID
  246. * @see #isRequestedSessionIdValid
  247. */
  248. //获得客户端请求产生的session id
  249. public String getRequestedSessionId();
  250. /**
  251. * Returns the part of this request's URL from the protocol
  252. * name up to the query string in the first line of the HTTP request.
  253. * The web container does not decode this String.
  254. * For example:
  255. * <table summary="Examples of Returned Values">
  256. * <tr align=left><th>First line of HTTP request </th>
  257. * <th> Returned Value</th>
  258. * <tr><td>POST /some/path.html HTTP/1.1<td><td>/some/path.html
  259. * <tr><td>GET http://foo.bar/a.html HTTP/1.0
  260. * <td><td>/a.html
  261. * <tr><td>HEAD /xyz?a=b HTTP/1.1<td><td>/xyz
  262. * </table>
  263. * <p>To reconstruct an URL with a scheme and host, use
  264. * {@link HttpUtils#getRequestURL}.
  265. * @return a <code>String</code> containing
  266. * the part of the URL from the
  267. * protocol name up to the query string
  268. * @see HttpUtils#getRequestURL
  269. */
  270. //获得请求URI
  271. public String getRequestURI();
  272. /**
  273. * Reconstructs the URL the client used to make the request.
  274. * The returned URL contains a protocol, server name, port
  275. * number, and server path, but it does not include query
  276. * string parameters.
  277. * <p>Because this method returns a <code>StringBuffer</code>,
  278. * not a string, you can modify the URL easily, for example,
  279. * to append query parameters.
  280. * <p>This method is useful for creating redirect messages
  281. * and for reporting errors.
  282. * @return a <code>StringBuffer</code> object containing
  283. * the reconstructed URL
  284. */
  285. //返回URL,不包括之前URL中的参数
  286. public StringBuffer getRequestURL();
  287. /**
  288. * Returns the part of this request's URL that calls
  289. * the servlet. This path starts with a "/" character
  290. * and includes either the servlet name or a path to
  291. * the servlet, but does not include any extra path
  292. * information or a query string. Same as the value of
  293. * the CGI variable SCRIPT_NAME.
  294. * <p>This method will return an empty string ("") if the
  295. * servlet used to process this request was matched using
  296. * the "/*" pattern.
  297. * @return a <code>String</code> containing
  298. * the name or path of the servlet being
  299. * called, as specified in the request URL,
  300. * decoded, or an empty string if the servlet
  301. * used to process the request is matched
  302. * using the "/*" pattern.
  303. *
  304. */
  305. //获得URL中servlet路径部分
  306. public String getServletPath();
  307. /**
  308. * Returns the current <code>HttpSession</code>
  309. * associated with this request or, if there is no
  310. * current session and <code>create</code> is true, returns
  311. * a new session.
  312. * <p>If <code>create</code> is <code>false</code>
  313. * and the request has no valid <code>HttpSession</code>,
  314. * this method returns <code>null</code>.
  315. * <p>To make sure the session is properly maintained,
  316. * you must call this method before
  317. * the response is committed. If the container is using cookies
  318. * to maintain session integrity and is asked to create a new session
  319. * when the response is committed, an IllegalStateException is thrown.
  320. * @param create <code>true</code> to create
  321. * a new session for this request if necessary;
  322. * <code>false</code> to return <code>null</code>
  323. * if there's no current session
  324. * @return the <code>HttpSession</code> associated
  325. * with this request or <code>null</code> if
  326. * <code>create</code> is <code>false</code>
  327. * and the request has no valid session
  328. * @see #getSession()
  329. */
  330. //获得httpSession,如果没有并且create为true则新建一个session
  331. public HttpSession getSession(boolean create);
  332. /**
  333. * Returns the current session associated with this request,
  334. * or if the request does not have a session, creates one.
  335. * @return the <code>HttpSession</code> associated
  336. * with this request
  337. * @see #getSession(boolean)
  338. */
  339. //获得当前session,如果没有new
  340. public HttpSession getSession();
  341. /**
  342. * Checks whether the requested session ID is still valid.
  343. * @return <code>true</code> if this
  344. * request has an id for a valid session
  345. * in the current session context;
  346. * <code>false</code> otherwise
  347. * @see #getRequestedSessionId
  348. * @see #getSession
  349. * @see HttpSessionContext
  350. */
  351. //判断session id是否还有效
  352. public boolean isRequestedSessionIdValid();
  353. /**
  354. * Checks whether the requested session ID came in as a cookie.
  355. * @return <code>true</code> if the session ID
  356. * came in as a
  357. * cookie; otherwise, <code>false</code>
  358. * @see #getSession
  359. */
  360. //session id 来自cookie
  361. public boolean isRequestedSessionIdFromCookie();
  362. /**
  363. * Checks whether the requested session ID came in as part of the
  364. * request URL.
  365. * @return <code>true</code> if the session ID
  366. * came in as part of a URL; otherwise,
  367. * <code>false</code>
  368. * @see #getSession
  369. */
  370. //session id 作为请求URL的一部分
  371. public boolean isRequestedSessionIdFromURL();
  372. /**
  373. * @deprecated As of Version 2.1 of the Java Servlet
  374. * API, use {@link #isRequestedSessionIdFromURL}
  375. * instead.
  376. */
  377. public boolean isRequestedSessionIdFromUrl();
  378. }
  1. public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest {
  2.  
  3. /**
  4. * Constructs a request object wrapping the given request.
  5. * @throws java.lang.IllegalArgumentException if the request is null
  6. */
  7. public HttpServletRequestWrapper(HttpServletRequest request) {
  8. super(request);
  9. }
  10.  
  11. private HttpServletRequest _getHttpServletRequest() {
  12. return (HttpServletRequest) super.getRequest();
  13. }
  14.  
  15. /**
  16. * The default behavior of this method is to return getAuthType()
  17. * on the wrapped request object.
  18. */
  19.  
  20. public String getAuthType() {
  21. return this._getHttpServletRequest().getAuthType();
  22. }
  23.  
  24. /**
  25. * The default behavior of this method is to return getCookies()
  26. * on the wrapped request object.
  27. */
  28. public Cookie[] getCookies() {
  29. return this._getHttpServletRequest().getCookies();
  30. }
  31.  
  32. /**
  33. * The default behavior of this method is to return getDateHeader(String name)
  34. * on the wrapped request object.
  35. */
  36. public long getDateHeader(String name) {
  37. return this._getHttpServletRequest().getDateHeader(name);
  38. }
  39.  
  40. /**
  41. * The default behavior of this method is to return getHeader(String name)
  42. * on the wrapped request object.
  43. */
  44. public String getHeader(String name) {
  45. return this._getHttpServletRequest().getHeader(name);
  46. }
  47.  
  48. /**
  49. * The default behavior of this method is to return getHeaders(String name)
  50. * on the wrapped request object.
  51. */
  52. public Enumeration getHeaders(String name) {
  53. return this._getHttpServletRequest().getHeaders(name);
  54. }
  55.  
  56. /**
  57. * The default behavior of this method is to return getHeaderNames()
  58. * on the wrapped request object.
  59. */
  60.  
  61. public Enumeration getHeaderNames() {
  62. return this._getHttpServletRequest().getHeaderNames();
  63. }
  64.  
  65. /**
  66. * The default behavior of this method is to return getIntHeader(String name)
  67. * on the wrapped request object.
  68. */
  69.  
  70. public int getIntHeader(String name) {
  71. return this._getHttpServletRequest().getIntHeader(name);
  72. }
  73.  
  74. /**
  75. * The default behavior of this method is to return getMethod()
  76. * on the wrapped request object.
  77. */
  78. public String getMethod() {
  79. return this._getHttpServletRequest().getMethod();
  80. }
  81.  
  82. /**
  83. * The default behavior of this method is to return getPathInfo()
  84. * on the wrapped request object.
  85. */
  86. public String getPathInfo() {
  87. return this._getHttpServletRequest().getPathInfo();
  88. }
  89.  
  90. /**
  91. * The default behavior of this method is to return getPathTranslated()
  92. * on the wrapped request object.
  93. */
  94.  
  95. public String getPathTranslated() {
  96. return this._getHttpServletRequest().getPathTranslated();
  97. }
  98.  
  99. /**
  100. * The default behavior of this method is to return getContextPath()
  101. * on the wrapped request object.
  102. */
  103. public String getContextPath() {
  104. return this._getHttpServletRequest().getContextPath();
  105. }
  106.  
  107. /**
  108. * The default behavior of this method is to return getQueryString()
  109. * on the wrapped request object.
  110. */
  111. public String getQueryString() {
  112. return this._getHttpServletRequest().getQueryString();
  113. }
  114.  
  115. /**
  116. * The default behavior of this method is to return getRemoteUser()
  117. * on the wrapped request object.
  118. */
  119. public String getRemoteUser() {
  120. return this._getHttpServletRequest().getRemoteUser();
  121. }
  122.  
  123. /**
  124. * The default behavior of this method is to return isUserInRole(String role)
  125. * on the wrapped request object.
  126. */
  127. public boolean isUserInRole(String role) {
  128. return this._getHttpServletRequest().isUserInRole(role);
  129. }
  130.  
  131. /**
  132. * The default behavior of this method is to return getUserPrincipal()
  133. * on the wrapped request object.
  134. */
  135. public java.security.Principal getUserPrincipal() {
  136. return this._getHttpServletRequest().getUserPrincipal();
  137. }
  138.  
  139. /**
  140. * The default behavior of this method is to return getRequestedSessionId()
  141. * on the wrapped request object.
  142. */
  143. public String getRequestedSessionId() {
  144. return this._getHttpServletRequest().getRequestedSessionId();
  145. }
  146.  
  147. /**
  148. * The default behavior of this method is to return getRequestURI()
  149. * on the wrapped request object.
  150. */
  151. public String getRequestURI() {
  152. return this._getHttpServletRequest().getRequestURI();
  153. }
  154. /**
  155. * The default behavior of this method is to return getRequestURL()
  156. * on the wrapped request object.
  157. */
  158. public StringBuffer getRequestURL() {
  159. return this._getHttpServletRequest().getRequestURL();
  160. }
  161.  
  162. /**
  163. * The default behavior of this method is to return getServletPath()
  164. * on the wrapped request object.
  165. */
  166. public String getServletPath() {
  167. return this._getHttpServletRequest().getServletPath();
  168. }
  169.  
  170. /**
  171. * The default behavior of this method is to return getSession(boolean create)
  172. * on the wrapped request object.
  173. */
  174. public HttpSession getSession(boolean create) {
  175. return this._getHttpServletRequest().getSession(create);
  176. }
  177.  
  178. /**
  179. * The default behavior of this method is to return getSession()
  180. * on the wrapped request object.
  181. */
  182. public HttpSession getSession() {
  183. return this._getHttpServletRequest().getSession();
  184. }
  185.  
  186. /**
  187. * The default behavior of this method is to return isRequestedSessionIdValid()
  188. * on the wrapped request object.
  189. */
  190.  
  191. public boolean isRequestedSessionIdValid() {
  192. return this._getHttpServletRequest().isRequestedSessionIdValid();
  193. }
  194.  
  195. /**
  196. * The default behavior of this method is to return isRequestedSessionIdFromCookie()
  197. * on the wrapped request object.
  198. */
  199. public boolean isRequestedSessionIdFromCookie() {
  200. return this._getHttpServletRequest().isRequestedSessionIdFromCookie();
  201. }
  202.  
  203. /**
  204. * The default behavior of this method is to return isRequestedSessionIdFromURL()
  205. * on the wrapped request object.
  206. */
  207. public boolean isRequestedSessionIdFromURL() {
  208. return this._getHttpServletRequest().isRequestedSessionIdFromURL();
  209. }
  210.  
  211. /**
  212. * The default behavior of this method is to return isRequestedSessionIdFromUrl()
  213. * on the wrapped request object.
  214. */
  215. public boolean isRequestedSessionIdFromUrl() {
  216. return this._getHttpServletRequest().isRequestedSessionIdFromUrl();
  217. }
  218.  
  219. }

Java-HttpServletRequest的更多相关文章

  1. java HttpServletRequest和HttpServletResponse詳解

    這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 java HttpServletRequest和HttpS ...

  2. Java HttpServletRequest中getAttribute()方法和getParameter()区别

    一.ServletRequest接口 HttpServletRequest接口继承了ServletRequest接口,实现类通常代表一个实际的Http Request. Servlet容器负责创建一个 ...

  3. JAVA+HttpServletRequest文件上传

    public Result fileUp(HttpServletRequest request) { RowsVo vo = new RowsVo(); MultipartHttpServletReq ...

  4. java HttpServletRequest 重复流读取

    在用reset接口的时候,常常会使用request.getInputStream()方法,但是流只能读取一次,一旦想要加上一个过滤器用来检测用户请求的数据时就会出现异常.   在过滤器中通过流读取出用 ...

  5. java HttpServletRequest 重复流读取

    在用reset接口的时候,常常会使用request.getInputStream()方法,但是流只能读取一次,一旦想要加上一个过滤器用来检测用户请求的数据时就会出现异常.   在过滤器中通过流读取出用 ...

  6. Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化

    Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化 大段内容务必要替换转义换行符号1 提交务必使用utf编码,否则解码后的可能缺失,是web serv ...

  7. 前端安全系列(二):如何防止CSRF攻击?

    前端安全系列(二):如何防止CSRF攻击?   背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XS ...

  8. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  9. java web学习总结(十) -------------------HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  10. java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决

    jetty 9 嵌入式开发时,启动正常,但是页面一浏览就报错如下: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest ...

随机推荐

  1. XListView下拉刷新和上拉加载更多详解

    转载本专栏每一篇博客请注明转载出处地址,尊重原创.博客链接地址:小杨的博客 http://blog.csdn.net/qq_32059827/article/details/53167655 市面上有 ...

  2. GDAL库进度信息编写示例

    GDAL进度信息编写 GDAL库中的算法以及读写数据的时候一般都会提供两个与进度信息相关的参数,下面分别进行描述: GDALProgressFunc pfnProgress void * pProgr ...

  3. 深入解读XML解析

    一.XML是什么?有什么用? XML是指.作为配置文件存在 二.XML的基本语法 1.文档声明:很重要 在编写XML文档时,需要先使用文档声明来声明XML文档.且必须出现在文档的第一行. 作用:告知解 ...

  4. Ubuntu和ROS一起愉快玩耍

    Ubuntu和ROS重要的两个中文网址: Ubuntu:http://cn.ubuntu.com/ROS:http://wiki.ros.org/cn Robots and drones on Ubu ...

  5. [Mysql]Innodb 独立表空间和共享表空间

    innodb有2中表空间方式: 共享表空间 和 独立表空间 查询数据的设置: show variables like '%per_table'; 默认是共享表空间,独立表空间在配置文件中添加 inno ...

  6. UNIX环境高级编程——创建孤儿进程

    /* 创建孤儿进程 父进程终止后,向子进程发送挂断信号,又接着发送继续信号. */ #include <stdio.h> #include <stdlib.h> #includ ...

  7. unity使用ugui自制调色面板

    突然想实现一个调色面板,然后开工... 首先找找有没有什么接口可调,木有找到,找到一些调用win32实现的本地颜色面板的调用,感觉不科学,反正多平台肯定是搞不定的. 既然没找到,还是老老实实的自己写吧 ...

  8. 微信公众平台开发者中心服务器配置Token验证失败问题

    微信发展如火如荼,没有哪家的企业营销能避开微信不谈的,那像我们这种给客户实施项目的多多少少会涉及微信端的开发,本文只要给从未做过微信开发的人做一些简单的演示,行家里手们可以呵呵一下该干嘛干嘛去了. 微 ...

  9. Android回调事件传播-android学习之旅(四十五)

    概念简介 代码演示 package peng.liu.test; import android.app.ActionBar; import android.app.Activity; import a ...

  10. 【一天一道LeetCode】#292. Nim Game

    一天一道LeetCode 从今天开始,调整规律,不按顺序做,从easy开始! 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 ...