Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

时间:2022-10-29 11:33:20

          Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

                                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.基于用户的访问控制概述

认证质询:
  WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码

认证:
  Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源

认证方式两种:
  basic:
    明文认证,不过可以配合https进行加密传输问题也不大。
  digest:
    消息摘要认证,兼容性差,有的浏览器可能不支持哟~

安全域:
  需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因

用户的账号和密码
  虚拟账号:
    仅用于访问某服务时用到的认证标识
  存储:
    文本文件,SQL数据库,ldap目录存储,nis等

二.基于basic认证配置实战案例

1>.创建测试数据

[root@node101.yinzhengjie.org.cn ~]# mkdir /var/www/html/admin
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo "/var/www/html/admin/index.html" > /var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /var/www/html/admin
total
-rw-r--r-- root root Dec : index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/index.html
/var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#

2>.提供账号和密码存储(文本文件)

使用专用命令完成此类文件的创建及用户管理
  htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
  常用选项:
    -c:
      自动创建文件,仅应该在文件不存在时使用
    -p:
      明文密码
    -d:
      CRYPT格式加密,默认
    -m:
      md5格式加密
    -s:
      sha格式加密
    -D:
      删除指定用户 具体使用案例如下图所示。
[root@node101.yinzhengjie.org.cn ~]# htpasswd -c /etc/httpd/conf.d/httpdpasswd jason          #创建第一个用户时需要使用"-c"选项创建的用户的同时会自动创建文件,若文件已经存在则清空文件所有内容重新写入咱们新创建的用户。
New password:
Re-type new password:
Adding password for user jason
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw-r--r-- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# date
Mon Dec :: CST
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# htpasswd -s /etc/httpd/conf.d/httpdpasswd jay            #创建第二个用户时千万别在使用"-c"选项哟,不过咱们可以使用-s指定加密算法为sha格式加密哟~
New password:
Re-type new password:
Adding password for user jay
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# chmod /etc/httpd/conf.d/httpdpasswd                 #为了安全起见,可以将文件权限改小点。
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
[root@node101.yinzhengjie.org.cn ~]#

htpasswd命令使用案例

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

3>.修改httpd的配置文件

[root@node101.yinzhengjie.org.cn ~]# ll /var/www/html/admin/
total
-rw-r--r-- root root Dec : index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/index.html
/var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
AuthType Basic                          #指明验证方式
AuthName "Welecon to Login"                  #指定客户端验证时的提示信息
AuthUserFile "/etc/httpd//conf.d/httpdpasswd"       #指定账号验证文件,一定要确认httpd运行用户是否对该文件有执行权限哟~
Require user jason                        #此处我们只写了允许jason用户访问,若果想要jay用户也可以访问则输入"Require user jason jay",如果允许帐号验证文件中所有用户登录访问则这里可以写"Require valid-user"
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -t
Syntax OK
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#

4>.浏览器访问页面并使用jason用户登录

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

5>.用户名密码验证成功就可以访问成功啦~(如果不能访问的话,错误原因可以自行查看错误日志信息哟~)

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

6>.使用jay用户访问并不会成功,因为咱们在httpd的配置文件中配置的是"Require user jason" 表示只允许jason用户访问

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

7>.在配置文件中定义一个".htaccess"隐藏文件

[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
  AllowOverride AuthConfig      #除了AuthConfig的其它指令都无法覆盖,即允许使用权限验证功能。
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/.htaccess      #将之前的验证信息直接写在这里的隐藏文件即可
AuthType Basic
AuthName "Welecon to Login"
AuthUserFile "/etc/httpd//conf.d/httpdpasswd"
Require user jason jay        #此处我们允许jason和jay用户访问,若允许账号验证文件的所有用户均有权限访问可直接写"Require valid-user"即可。
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

8>.为什么".htaccess"文件客户端看不到呢?(如下图所示,那是因为以".ht*"开头的文件都被拒绝啦~)

[root@node101.yinzhengjie.org.cn ~]# grep -C  htaccess /etc/httpd/conf/httpd.conf
# for more information.
#
Options Indexes FollowSymLinks #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None --
<IfModule dir_module>
DirectoryIndex index.html
</IfModule> #
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
[root@node101.yinzhengjie.org.cn ~]#

[root@node101.yinzhengjie.org.cn ~]# grep -C 5 htaccess /etc/httpd/conf/httpd.conf        #查看匹配到"htaccess"内容的前后5行

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

三.基于组账号进行认证实战案例

1>.创建用户账号和组账号文件

[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# htpasswd /etc/httpd/conf.d/httpdpasswd jerry
New password:
Re-type new password:
Adding password for user jerry
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
jerry:$apr1$NC0Az6Ga$2ers2ZQZttbW.DPNrie.n0
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# vim /etc/httpd/conf.d/httpdgroup
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdgroup      #每一行定义一个组,组中的用户用空格分开
testgroup: jason jerry
[root@node101.yinzhengjie.org.cn ~]#

2>.定义安全域

[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
AllowOverride AuthConfig
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# vim /var/www/html/admin/.htaccess
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/.htaccess
AuthType Basic
AuthName "Welecon to Login"
AuthUserFile "/etc/httpd//conf.d/httpdpasswd"
AuthGroupFile "/etc/httpd/conf.d/httpdgroup"
Require group testgroup
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -t
Syntax OK
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#

3>.使用jerry用户访问

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

4>.jerry用户访问成功

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

5>.远程客户端和用户验证的控制

Satisfy ALL|Any
  ALL:
    客户机IP和用户验证都需要通过才可以
  Any:
    客户机IP和用户验证,有一个满足即可 示例:
  Require valid-user        #这种写法是httpd2.2版本的写法,在httpd2.4推荐使用Require all granted
  Order allow,deny
  Allow from 192.168.
  Satisfy Any

四.认证时需要启动认证模块(默认是启动的)

1>.禁用基本认证模块

[root@node101.yinzhengjie.org.cn ~]# grep auth_basic_module /etc/httpd/conf.modules.d/-base.conf       #禁用基本的身份验证模块,只需要在前面添加"#"号注释即可。
#LoadModule auth_basic_module modules/mod_auth_basic.so
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -M | grep basic                              #若没有输出说明动态模块被咱们禁用了
[root@node101.yinzhengjie.org.cn ~]#

2>.禁用认证模块后用户将无法使用认证功能

[root@node101.yinzhengjie.org.cn ~]# tail -10f /var/log/httpd/error_log                       #错误日志出现如下的报错信息哟~
......
[Mon Dec ::58.813900 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding module
[root@node101.yinzhengjie.org.cn ~]#

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

3>.启用基本认证模块

[root@node101.yinzhengjie.org.cn ~]# grep auth_basic_module /etc/httpd/conf.modules.d/-base.conf       #"auth_basic_module"是基本的身份验证的模块,默认是开启的。
LoadModule auth_basic_module modules/mod_auth_basic.so                                 #加载模块的指令使用的是LoadModule,加载模块的名称为"auth_basic_module",该模块在磁盘上存放的位置是"modules/mod_auth_basic.so"
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/modules/mod_auth_basic.so                    #根据上面指定的位置咱们的确可以找到该模块哟~
-rwxr-xr-x root root Aug : /etc/httpd/modules/mod_auth_basic.so
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -M | grep basic                              #该动态模块已经被加载啦
auth_basic_module (shared)
[root@node101.yinzhengjie.org.cn ~]#

五.客户端验证失败原因

1>.查看错误日志

[root@node101.yinzhengjie.org.cn ~]# tail  /var/log/httpd/access_log
172.30.1.254 - - -- :: "-" - "-" "-"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
[root@node101.yinzhengjie.org.cn ~]#

[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/access_log

[root@node101.yinzhengjie.org.cn ~]# tail  /var/log/httpd/error_log
[Mon Dec ::58.813900 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding mod
ule[Mon Dec ::57.638316 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding mod
ule[Mon Dec ::08.559118 ] [mpm_worker:notice] [pid :tid ] AH00297: SIGUSR1 received. Doing graceful restart
[Mon Dec ::08.567627 ] [lbmethod_heartbeat:notice] [pid :tid ] AH02282: No slotmem from mod_heartmonitor
[Mon Dec ::08.567967 ] [mpm_worker:notice] [pid :tid ] AH00292: Apache/2.4. (CentOS) configured -- resuming normal operations
[Mon Dec ::08.567977 ] [core:notice] [pid :tid ] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Mon Dec ::20.795627 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::22.947555 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::34.561196 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::18.925494 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#

[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/error_log

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

2>.错误原因分析

[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd         #错误原因可能会是客户端输入了错误密码,但是从上面的日志分析可以看出来应该是权限被拒绝,于是查看该文件发现果不其然,的确是没有权限访问的。
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#

3>.解决方案

[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd          
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ps aux | grep httpd                          #需要查明httpd服务是被哪个用户启用的,不难发现是apache用户在运行httpd服务。
root 0.0 0.0 ? Ss : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? S : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
root 0.0 0.0 pts/ S+ : : grep --color=auto httpd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# setfacl -m u:apache:r /etc/httpd/conf.d/httpdpasswd       #于是我们需要为httpd服务添加ACL权限
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw-r-----+ root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# getfacl /etc/httpd/conf.d/httpdpasswd               #再次确认一下httpd的验证文件是否有权限哟~确认有访问权限后再使用浏览器访问就可以成功啦,如下图所示。
getfacl: Removing leading '/' from absolute path names
# file: etc/httpd/conf.d/httpdpasswd
# owner: root
# group: root
user::rw-
user:apache:r--
group::---
mask::r--
other::--- [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制的更多相关文章

  1. Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机

    Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...

  2. Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面

    Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.status功能概述 status页 ...

  3. Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项

    Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ServerSignature指令概述 ...

  4. Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享

    Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.实现用户家目录的http共享前提 在配置家目录共 ...

  5. Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名

    Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.创建测试数据 [root@node101.yinzhengj ...

  6. Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集

    Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看生产环境中使用的字符集案例 1>.查看腾讯设置的默认 ...

  7. Httpd服务入门知识-Httpd服务常见配置案例之日志设定

    Httpd服务入门知识-Httpd服务常见配置案例之日志设定 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志类型 [root@node101.yinzhengjie.org ...

  8. Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Options  1>.OPTIONS指 ...

  9. Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置

    Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.定义站点主页面 [root@node101.yi ...

随机推荐

  1. &lbrack;转载&rsqb; Ubuntu 16&period;04 LTS 一键安装VNC

    安装 X11VNC: sudo apt install x11vnc -y 配置访问密码: sudo x11vnc -storepasswd /etc/x11vnc.pass 创建服务: vi /li ...

  2. Spring 中的页面重定向

    在写 java 程序设计实践作业的时候遇到了重定向页面的需求,因为还没学到 java web 开发,所以自己就在网上搜了一下相关的代码,总结出了一些小小的经验,希望在下学期学 java web 的时候 ...

  3. 20145129 《Java程序设计》第1周学习总结

    20145129 <Java程序设计>第1周学习总结 教材学习内容总结 在第一章学习后初步了解了Java历史及发展,以及JCP,JSR,JVM的相关知识了解.JCP是一个开放性国际组织,由 ...

  4. Deepin Linux 安装JDK

    最近在自己的笔记本上安装了Deepin Linux,虽然使用过程中发现一些bugs,但是总体感觉还不错,准备把她作为开发系统使用.系统自带的JDK是Open JDK,但是在做JAVA开发的时候通常需要 ...

  5. Matlab与外部接口:MAT文件基础

    MAT 文件MAT文件是MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存 ...

  6. &lbrack;Python Study Notes&rsqb;with的使用

    在 Python 2.5 中, with 关键字被加入.它将常用的 try ... except ... finally ... 模式很方便的被复用.看一个最经典的例子: with open('fil ...

  7. Unity3d跨平台原理

    知乎的一个提问:unity3d跨平台原理 一些资料: IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe ...

  8. &lbrack;深入理解Android卷一全文-第四章&rsqb;深入理解zygote

    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的所有内容. ...

  9. java上传图片到数据库,涉及压缩文件zip&sol;rar上传等

    项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...

  10. &lbrack;洛谷P1029&rsqb;最大公约数与最小公倍数问题 题解(辗转相除法求GCD)

    [洛谷P1029]最大公约数与最小公倍数问题 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P, ...