php 伪静态是什么意思,路由与伪静态

## 路由与伪静态

### 路由

>[info] 字面上解释,路是线路,道路;由,缘由,指意,表示规则;所以意思就是按照什么规则,或者意义,被指派到什么地方去。

所以路由是指线路分发,在后端web中一般都是指访问url的映射规则,比如什么样的url访问,经过路由规则映射到什么模块,什么控制器,什么方法,或者是类,或者是闭包,或者是别的,总之它是起分发的作用。

### 伪静态

>[info] 伪静态字面上的意思就是伪造,静态。

**(补充:伪静态就是让动态的URL地址看起来是静态的地址,伪静态是最终的目的,而不是技术。实现伪静态有很多方式去实现,利用主机的URL重写可以实现,利用程序本身的路由配置也可以实现,比如tp5和wordpress中可以自由的配置URL规则。前者需要有管理主机的权限,而后者比较灵活。但是要隐藏入口需要pathinfo或url重写的支持)**

web2.0的世界里面,很多页面都是动态的,比如很多 index.php/a/…… 或者 index.php?a=1&…… 这样的,这样的动态地址不怎么好看,对搜索引擎不友好,所需需要借助一些技术手段来将这些动态的url地址伪装成静态的url地址,这就是伪静态。

所以伪静态指的是利用一些技术将动态地址转换成静态地址并可照常访问的解决方案,并不是指某一种技术。

那么来看下实现伪静态需要用到哪些技术:

1. **web主机rewrite模块**(URL重写,rewrite翻译成中文为重写,但很多人也常称伪静态)

2. **pathinfo** (主机支持的一种技术,index.php/path,再利用url重写可以隐藏入口)

3. **程序的路由**(可以美化,缩短url,变得更人性化,更有语义)

> 补充:还有一个很重要的一点没提到的就是【加后缀】,这个不算是什么技术,所以没列到上面的技术列表中,加后缀可以在上面每一步都能完成,程序中就是控制url生成时加后缀就可以了。并且后缀有时候设计API时还很有用,必须后缀可以代表返回的数据格式(参考:REST设计风格)。

**分析:**

1. 第一种方案优点是功能强大(利用重写模块规则支持正则匹配等特性),可以实现任意的url重写,但缺点是需要配置很多复杂的url重写规则(多多返利程序就是利用这方式做伪静态,如果开启伪静态,则程序会生成伪静态规则的url,并且需要主机同时手动配置相应的url重写规则),需要有主机管理的权限,如果是在主机上修改的配置则需要重启web服务器(支持.htaccess则不需要重启)。

2. 这个需要web主机的支持,支持PATHINFO的主机可以支持 index.php/home/index/index 这样的url访问,这样web语言中就可以获得值(比如PHP程序可以得到 `$_SERVER['PATH_INFO'] = '/home/index/index'` )。根据这个特性,**利用URL重写**,只需要一条简单的[URL重写规则](#pathinfo),将所有参数都重写到入口文件的后面,这样就能实现隐藏入口文件了,当然这只是隐藏入口文件,在thinkphp中如果主机不支持PATHINFO(比如低版本的nginx)那么使用[兼容模式(?s=/m/c/a)](#compatible)也能模拟实现pathinfo从而实现隐藏入口文件index.php

3. 可以说是程序里面的url重写(上面提到的rewrite是主机的URL重写),设计参考了主机的url重写,所以路由规则也和主机url重写规则差不多。优点是功能强大,规则配置灵活;缺点就是解析的性能问题(就这一个缺点,其它都是优点)。(WordPress自定义url其实就是用的自定义路由)

**总结:**

一般主机都能开启rewrite模块/功能支持URL重写,这很关键,这样实现隐藏入口文件了,这是第一步,再利用pathinfo(或者兼容模式),还有程序的路由,这样配合起来就能够实现简洁明了的URL地址了,也就是实现我们所说的伪静态。

参见:[伪静态](http://baike.baidu.com/link?url=S-5KttfY-Ky0BaRR3Y6m15kz5Yw9yyN73qH8vTgzr9vRaW5N8W1d1paaJwXATsQw0IW3bzLd3qxjjlDlAqEzPODxMMA0N6qDn_HCA9b0W75_D0Kxy5hS12F4OGNuEZBQ)

## 扩展知识

原始的 `index.php?m=home&c=index&a=index` 实在是太难看了,所以即使不全伪静态,不用路由,也最好抛弃这种原始的地址,因为有些接口开发中已经不支持使用这类url地址了,所以务必使用 `pathinfo` 的形式:`index.php/home/index/index `,在隐藏入口,再加个后缀 `home/index/index.html` 就完美了,如果是做API或者有特殊用途的话还可以带上特定的后缀,比如看云、github仓库克隆时代`.git`后缀的仓库地址。

想要了解【URL/PATHINFO/路由】的更多信息可以继续阅读:[URL模式之分析](http://www.kancloud.cn/xiak/php-node/228772)

其实如果你的入口是index.php,使用兼容模式也可以隐藏入口的,直接?s=/m/c/a,?m=home&c=index&a=index 因为大多主机默认配置的有默认访问文件/入口。

下面分析nginx的部分配置:

**主配置:/usr/local/nginx/conf/nginx.conf**

~~~

user www www;

worker_processes auto;

error_log /data/wwwlogs/error_nginx.log crit;

pid /var/run/nginx.pid;

worker_rlimit_nofile 51200;

events {

use epoll;

worker_connections 51200;

multi_accept on;

}

http {

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 1024m;

sendfile on;

tcp_nopush on;

keepalive_timeout 120;

server_tokens off;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

#Gzip Compression

gzip on;

gzip_buffers 16 8k;

gzip_comp_level 6;

gzip_http_version 1.1;

gzip_min_length 256;

gzip_proxied any;

gzip_vary on;

gzip_types

text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml

text/javascript application/javascript application/x-javascript

text/x-json application/json application/x-web-app-manifest+json

text/css text/plain text/x-component

font/opentype application/x-font-ttf application/vnd.ms-fontobject

image/x-icon;

gzip_disable "MSIE [1-6]\.(?!.*SV1)";

#If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.

open_file_cache max=1000 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 2;

open_file_cache_errors on;

######################## default ############################

server {

listen 80;

server_name _;

access_log /data/wwwlogs/access_nginx.log combined;

root /data/wwwroot/default;

index index.html index.htm index.php;

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

location ~ [^/]\.php(/|$) {

#fastcgi_pass remote_php_ip:9000;

fastcgi_pass unix:/dev/shm/php-cgi.sock;

fastcgi_index index.php;

include fastcgi.conf;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {

expires 30d;

access_log off;

}

location ~ .*\.(js|css)?$ {

expires 7d;

access_log off;

}

}

########################## vhost #############################

include vhost/*.conf;

}

~~~

**每一个虚拟主机在虚拟主机配置目录都有一个对应的配置文件**

~~~

[root@iZuf6fvttmu9vkdbnencgpZ vhost]# ls

dingtalk.uogo8.com.conf lipin.uogo8.com.conf tv.uogo8.com.conf

gj.uogo8.com.conf test.uogo8.com.conf www.uogo8.com.conf

~~~

**`虚拟主机配置文件:/usr/local/nginx/conf/vhost/www.uogo8.com.conf`**

~~~

server {

listen 80;

server_name www.uogo8.com uogo8.com;

access_log /data/wwwlogs/www.uogo8.com_nginx.log combined;

index index.html index.htm index.php;

include /usr/local/nginx/conf/rewrite/www.uogo8.com.conf;

root /data/wwwroot/www.uogo8.com;

if ($host != www.uogo8.com) {

rewrite ^/(.*)$ $scheme://www.uogo8.com/$1 permanent;

}

location ~ \.php {

#fastcgi_pass remote_php_ip:9000;

fastcgi_pass unix:/dev/shm/php-cgi.sock;

fastcgi_index index.php;

include fastcgi_params;

set $real_script_name $fastcgi_script_name;

if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {

set $real_script_name $1;

#set $path_info $2;

}

fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;

fastcgi_param SCRIPT_NAME $real_script_name;

#fastcgi_param PATH_INFO $path_info;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {

expires 30d;

access_log off;

}

location ~ .*\.(js|css)?$ {

expires 7d;

access_log off;

}

}

~~~

**伪静态单独放一个目录,需要时被虚拟主机配置文件引入,这样方便管理**

~~~

[root@iZuf6fvttmu9vkdbnencgpZ vhost]# cd ../rewrite/

[root@iZuf6fvttmu9vkdbnencgpZ rewrite]# ls

none.conf thinkphp.conf www.uogo8.com.conf

~~~

>[info] 伪静态是一种效果,准确的说这是主机的URL重写规则/配置文件。但一般大家也习惯性称之为伪静态配置、伪静态文件,开启伪静态,伪静态模块,伪静态功能了,其实伪静态只是最终实现的效果。

**thinkphp程序的伪静态配置文件:/usr/local/nginx/conf/rewrite/thinkphp.conf**

~~~

location / {

if (!-e $request_filename) {

# 不支持pathinfo,那就使用url重写,重写成兼容模式,来达到隐藏入口的效果

rewrite ^(.*)$ /index.php?s=$1 last;

break;

}

}

~~~

**thinkphp伪静态配置文件.htaccess(Apache环境)**

~~~

Options +FollowSymlinks -Multiviews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

# 直接利用url重写,重写成 pathinfo 模式

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

~~~

**`uogo8的伪静态配置文件:/usr/local/nginx/conf/rewrite/www.uogo8.com.conf`**

~~~

location / {

if (!-e $request_filename) {

rewrite ^/(.*)$ /index.php/$1 last;

break;

}

}

~~~

~~~

#######################################################################

# OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+ #

# For more information please visit https://oneinstack.com #

#######################################################################

Your domain: www.uogo8.com

Virtualhost conf: /usr/local/nginx/conf/vhost/www.uogo8.com.conf

Directory of: /data/wwwroot/www.uogo8.com

Rewrite rule: /usr/local/nginx/conf/rewrite/thinkphp.conf

~~~

相关阅读:

- [nginx下支持PATH_INFO详解](http://www.nginx.cn/426.html)

- [nginx支持.htaccess文件实现伪静态的方法分享](http://www.jb51.net/article/59376.htm)

- [php官方手册 隐藏 PHP](http://php.net/manual/zh/security.hiding.php)

- [WordPress 伪静态规则(IIS/Apache/Nginx)](https://www.wpdaxue.com/wordpress-rewriterule.html)

- [Wordpress固定链接伪静态的设置方法](http://www.jb51.net/cms/73962.html)

- [WordPress 查看网站的所有伪静态 Rewrite 规则](https://www.wpdaxue.com/rewrite-rules-inspector.html)

>[info] WordPress 本身只需要一条服务器重写规则就能让固定链接正常功能,这条规则就是把所有不存在的文件请求指向 index.php,然后它再通过 PHP 匹配请求的网址,得出最终的请求结果,注入到主循环之中。

- [v8伪静态规则在哪,如何开启伪静态功能](http://bbs.duoduo123.com/forum.php?mod=viewthread&tid=114920&highlight=%CE%B1%BE%B2%CC%AC)

>[info] 这个比WordPress的复杂一点,利用了重写,程序根据网站后台设置中是否开启伪静态,来决定生成什么样的URL,并没有用到pathinfo和路由。这样的缺点就是每次都要手动配置主机的伪静态规则,且规则多容易出错。

### 其他应当注意的问题

任何时候要考虑兼容性,并不是所有环境都支持PATH_INFO的,比如下面的代码就能体现出来这个思想:

```php

$input->SetNotify_url(SITE_URL . '/index.php/Home/Payment/notifyUrl/pay_code/weixin');

```

这个代码在Apache上没有问题,但是在Nginx上面就出问题了,即使Nginx设置了这样的URL重写:

~~~

location / {

if (!-e $request_filename) {

rewrite ^(.*)$ /index.php?s=$1 last;

break;

}

}

~~~

也没用有,Nginx不支持PATH_INFO,并且也不满足上面的URL重写规则(如果文件不存在就映射到s参数上面),所以上面的代码可以说没有兼容性。

上面的代码只要改成

```php

$input->SetNotify_url(SITE_URL . '/Home/Payment/notifyUrl/pay_code/weixin');

```

就好了,就不会有问题了(在不支持PATH_INFO的Nginx上面满足URL重写规则),这样代码在不同环境下面都能以期望的结果运行,就具有兼容性了。

* * * * *

### 扩展

附:

多多返利程序的Nginx的URL重写规则:nginx.txt

```shell

location / {

rewrite /mall/list-(.*)-(\d+).html$ /index.php?mod=mall&act=list&cid=$1&page=$2 last;

rewrite /mall/list-(.*).html$ /index.php?mod=mall&act=list&cid=$1 last;

rewrite /mall/list.html$ /index.php?mod=mall&act=list last;

rewrite /mall/view-(\d+)-(.*)-(\d+).html$ /index.php?mod=mall&act=view&id=$1&do=$2&page=$3 last;

rewrite /mall/view-(\d+)-(.*).html$ /index.php?mod=mall&act=view&id=$1&do=$2 last;

rewrite /mall/view-(\d+).html$ /index.php?mod=mall&act=view&id=$1 last;

rewrite /mall/goods-(.*)-(\d+)-(\d+)-(\d+)-(\d+)-(.*)-(\d+).html$ /index.php?mod=mall&act=goods&merchantId=$1&order=$2&start_price=$3&end_price=$4&list=$5&q=$6&page=$7 last;

rewrite /mall/goods-(.*).html$ /index.php?mod=mall&act=goods&q=$1 last;

rewrite /mall/goods.html$ /index.php?mod=mall&act=goods last;

rewrite /article/index.html$ /index.php?mod=article&act=index last;

rewrite /article/$ /index.php?mod=article&act=index last;

rewrite /article$ /index.php?mod=article&act=index last;

rewrite /article/list-(.*)-(\d+).html$ /index.php?mod=article&act=list&cid=$1&page=$2 last;

rewrite /article/list-(.*).html$ /index.php?mod=article&act=list&cid=$1 last;

rewrite /article/list.html$ /index.php?mod=article&act=list last;

rewrite /article/view-(\d+).html$ /index.php?mod=article&act=view&id=$1 last;

rewrite /huodong/list-(\d+)-(\d+).html$ /index.php?mod=huodong&act=list&cid=$1&page=$2 last;

rewrite /huodong/list-(\d+).html$ /index.php?mod=huodong&act=list&page=$1 last;

rewrite /huodong/list.html$ /index.php?mod=huodong&act=list last;

rewrite /huodong/view-(\d+).html$ /index.php?mod=huodong&act=view&id=$1 last;

rewrite /huan/list-(\d+)-(\d+).html$ /index.php?mod=huan&act=list&cid=$1&page=$2 last;

rewrite /huan/list-(\d+).html$ /index.php?mod=huan&act=list&cid=$1 last;

rewrite /huan/list-(.*).html$ /index.php?mod=huan&act=list&cid=$1 last;

rewrite /huan/list.html$ /index.php?mod=huan&act=list last;

rewrite /huan/view-(\d+).html$ /index.php?mod=huan&act=view&id=$1 last;

rewrite /tao/index.html$ /index.php?mod=tao&act=index last;

rewrite /tao/$ /index.php?mod=tao&act=index last;

rewrite /tao$ /index.php?mod=tao&act=index last;

rewrite /tao/list-(.*)-(.*)-(\d+)-(\d+).html$ /index.php?mod=tao&act=list&cid=$1&q=$2&list=$3&page=$4 last;

rewrite /tao/list-(.*)-(\d+).html$ /index.php?mod=tao&act=list&cid=$1&page=$2 last;

rewrite /tao/list-0-(.*).html$ /index.php?mod=tao&act=list&cid=0&q=$1 last;

rewrite /tao/list-(.*).html$ /index.php?mod=tao&act=list&cid=$1 last;

rewrite /tao/list.html$ /index.php?mod=tao&act=list last;

rewrite /tao/view-(.*)-(.*)-(.*).html$ /index.php?mod=tao&act=view&iid=$1&promotion_price=$2&promotion_endtime=$3 last;

rewrite /tao/view-(.*).html$ /index.php?mod=tao&act=view&iid=$1 last;

rewrite /tao/shop-(.*)-(\d+).html$ /index.php?mod=tao&act=shop&nick=$1&list=$2 last;

rewrite /tao/shop-(.*).html$ /index.php?mod=tao&act=shop&nick=$1 last;

rewrite /tao/zhe-(.*)-(\d+)-(\d+).html$ /index.php?mod=tao&act=zhe&q=$1&cid=$2&page=$3 last;

rewrite /tao/zhe-(.*).html$ /index.php?mod=tao&act=zhe&q=$1 last;

rewrite /tao/zhe.html$ /index.php?mod=tao&act=zhe last;

rewrite /shop/list-(\d+)-(\d+)-(\d+)-(\d+)-(.*)-(\d+).html$ /index.php?mod=shop&act=list&cid=$1&start_level=$2&end_level=$3&type=$4&nick=$5&page=$6 last;

rewrite /shop/list-(.*)-(\d+).html$ /index.php?mod=shop&act=list&cid=$1&page=$2 last;

rewrite /shop/list-(.*).html$ /index.php?mod=shop&act=list&cid=$1 last;

rewrite /shop/list.html$ /index.php?mod=shop&act=list last;

rewrite /baobei/list-0-(.*)-(\d+).html$ /index.php?mod=baobei&act=list&cid=0&q=$1&page=$2 last;

rewrite /baobei/list-0-(.*).html$ /index.php?mod=baobei&act=list&cid=0&q=$1 last;

rewrite /baobei/list-(.*)-(\d+)-(\d+).html$ /index.php?mod=baobei&act=list&sort=$1&cid=$2&page=$3 last;

rewrite /baobei/list-(.*)-(\d+).html$ /index.php?mod=baobei&act=list&cid=$1&page=$2 last;

rewrite /baobei/list-(.*).html$ /index.php?mod=baobei&act=list&cid=$1 last;

rewrite /baobei/list.html$ /index.php?mod=baobei&act=list last;

rewrite /baobei/user-(\d+)-(\d+)-(\d+).html$ /index.php?mod=baobei&act=user&uid=$1&xs=$2&page=$3 last;

rewrite /baobei/user-(\d+)-(\d+).html$ /index.php?mod=baobei&act=user&uid=$1&xs=$2 last;

rewrite /baobei/user-(\d+).html$ /index.php?mod=baobei&act=user&uid=$1 last;

rewrite /baobei/view-(\d+).html$ /index.php?mod=baobei&act=view&id=$1 last;

rewrite /tuan/list-(\d+)-(\d+)-(\d+)-(.*)-(\d+).html$ /index.php?mod=tuan&act=list&cid=$1&mall_id=$2&city_id=$3&sort=$4&page=$5 last;

rewrite /tuan/list-(\d+)-(\d+)-(.*).html$ /index.php?mod=tuan&act=list&cid=$1&city_id=$2&sort=$3 last;

rewrite /tuan/list-(\d+)-(\d+).html$ /index.php?mod=tuan&act=list&cid=$1&page=$2 last;

rewrite /tuan/list-(.*)-(\d+).html$ /index.php?mod=tuan&act=list&q=$1&page=$2 last;

rewrite /tuan/list-(\d+).html$ /index.php?mod=tuan&act=list&cid=$1 last;

rewrite /tuan/list-(.*).html$ /index.php?mod=tuan&act=list&q=$1 last;

rewrite /tuan/list.html$ /index.php?mod=tuan&act=list last;

rewrite /tuan/view-(\d+).html$ /index.php?mod=tuan&act=view&id=$1 last;

rewrite /help/index-(\d+).html$ /index.php?mod=help&act=index&cid=$1 last;

rewrite /help/index.html$ /index.php?mod=help&act=index last;

rewrite /help/$ /index.php?mod=help&act=index last;

rewrite /help$ /index.php?mod=help&act=index last;

rewrite /about/index-(\d+).html$ /index.php?mod=about&act=index&id=$1 last;

rewrite /about/index.html$ /index.php?mod=about&act=index last;

rewrite /about/$ /index.php?mod=about&act=index last;

rewrite /about$ /index.php?mod=about&act=index last;

rewrite /paipai/index.html$ /index.php?mod=paipai&act=index last;

rewrite /paipai/$ /index.php?mod=paipai&act=index last;

rewrite /paipai$ /index.php?mod=paipai&act=index last;

rewrite /paipai/list-(\d+)-(.*)-(\d+)-(.*)-(\d+)-(\d+)-(\d+)-(\d+).html$ /index.php?mod=paipai&act=list&cid=$1&q=$2&sort=$3&property=$4&begPrice=$5&endPrice=$6&list=$7&page=$8 last;

rewrite /paipai/list-(.*).html$ /index.php?mod=paipai&act=list&q=$1 last;

rewrite /paipai/list.html$ /index.php?mod=paipai&act=list last;

rewrite /tbimg/(.*).jpg$ /comm/showpic.php?pic=$1 last;

rewrite /sitemap/index.html$ /index.php?mod=sitemap&act=index last;

rewrite /index.html$ /index.php last;

}

```

* * * * *

[ThinkPHP5路由全程图解 · 看云](https://www.kancloud.cn/ldkt/tp5_route)

update time : 2018-1-14 15:50:54

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框——属性页对话框。 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面。另外,我…

Linux用户与“最小权限”原则

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 作为一个Linux用户来说,我们并不需要特别关心下面的机制。但是,当我们去编写一个Linux应用程序的时候,就要注…

js urlencode 20 php,js实现php函数urlencode

本文介绍了php函数urlencode的js实现方法并比较js和php各编码函数的区别。 通常form表单的enctype类型为 application/x-www-form-urlencoded, 当表单提交后,提交的数据自动被编码, 规则为 除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两…

.NET CORE在ubuntu1604上运行

本文主要描述.NET CORE在Ubuntu上“自包含应用”不一来.NET SDK发布(类似于golang的方式) 1.用rider或者直接用dotnet new方式创建一个项目;可以看到产生了两个文件 dotnet new 会创建一个最新的 project.json 文件,其中包含生成控…

php代码审计靶场,代码审计 | Wavsep靶场审计防御

—————— 昨日回顾 ——————红日安全出品|转载请注明来源文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!(来源:红日安全)—————— ——…

Python 爬虫抓取代理IP,并检测联通性

帮朋友抓了一些代理IP,并根据测试联的通性,放在了不通的文件夹下。特将源码分享 注意: 1,环境Python3.5 2,安装BeautifulSoup4 requests 代码如下: 123456789101112131415161718192021222324252627282930313233343536…

php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)

我用GPS-DG16测得某地的经纬度,然后想将该经纬度转换为80坐标系的经纬。1.看你的精度要求,如果厘米级的,则需要至少3个已知点,这3个点上要有80坐标系的经纬度,另外你再去用gps-dg16采集这三个点的wgs84经纬度&#xff…

java初始化顺序

原文地址http://blog.sina.com.cn/s/blog_4cc16fc50100bjjp.html对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通…

php审批流设计思路,审批流设计器-字段说明

1.允许转发:勾选,则在信息中心处理此审批动作对应的待处理任务时,可以将此任务转发给其他用户;不勾选,则在信息中心的待处理任务不支持转发功能,点击转交提示:审批动作设置为不允许转发。2.允许…

第一百二十六节,JavaScript,XPath操作xml节点

第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准DOM去查找XML中的节点方式,大大降低了查找难度,方便…

matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现

实验一、BP算法的MATLAB实现一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、加深对BP算法的理解和掌握二、实验内容1、MATLAB基本指令和语法。2、BP算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入…

电力电子技术 matlab仿真指导,在_电力电子技术_课程教学中展开Matlab仿真训练_唐贤伦...

教学改革广角中国电力教育2009年10月上 总第146期 “电力电子技术”是电气工程及其自动化等专业的重要专业基础课,也是实用性、工程性和综合性很强的课程。作为自动化、电气工程及其自动化等专业的学生,学好这门课程将为后续专业课的学习和今后的工作打下…

Python补充01 序列的方法

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 在快速教程中,我们了解了最基本的序列(sequence)。回忆一下,序列包含有定值表(tuple)和表(list)。此外,字符串…

java socketchannel api,SocketChannel API

Netty是当前非常流行的网络通讯框架,当程序对网络数据处理时,需要保证高并发和高可靠,底层就可以用Netty支撑。本套课程详细讲解了Netty核心技术点,同时进行底层机制和源码剖析,并编写了大量的应用实例。通过学习可以快…

CLR via C# 阅读 笔记

初读  CLR Via C# 有一些 名词需要记忆: 1、CLR: Common Language Runtime (公共语言运行时) 可有多种编程语言使用的Runtime. 其核心功能是: 内存管理、 程序集加载、 安全性、 异常处理和线程同步等; 2、 Managed Module (托管模块) 托管模…

php异步轮询如何实现,深入剖析JavaScript异步之事件轮询

本篇文章给大家带来的内容是关于深入剖析JavsScript异步之事件轮询,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。JavsScript 是一门单线程的编程语言,这就意味着一个时间里只能处理一件事,也就是说 …

ECMAScript 实现继承的几种方式

1. 原形链 function Father() { this.fatherName "licus"; } function Children() { this.chidrenName "king"; } Children.prototype new Father(); 2.借用构造函数 function Father() { this.fatherName "licus"; } function Children() {…

微信小程序php实现登陆的代码,微信小程序实现微信登录

步骤:1.调用wx.login得到code返回的结果示例:{code:"051nI5Pa1XJkDs0773Pa1OWYOa1nI5PF"errMsg:"login:ok"}2.拿code换取session_key与openid这里使用服务端来请求,以php为例$code $this->input->post(code);$jso…

《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)

1.派生类构造函数的要点: 首先创建基类对象; 应通过成员初始化列表将基类的初始化信息传递给基类的构造函数; 派生类构造函数应初始化新增的数据成员 2.首先执行派生类的析构函数,然后自动调用基类的析构函数. 3.基类指针可以在不进行显式类型转换的情况下指向派生类对象,基类引…

php实际应用小例子,PHP4实际应用经验篇(6)

现在,你已经明白PHP允许你嵌套条件语句。然而,如果你再看看那个用来示范此概念的例子时你将同意那是既复杂又令人感到可怕。--------------------------------------------------------------------------------if($day"Thursday"){if($time&q…