Quantcast
Channel: 优发娱乐wwwyoufa8|优发娱乐平台|优优发娱乐pt客户端下载
Viewing all 18262 articles
Browse latest View live

【SOS】nginx无法解析php文件?

$
0
0

(优发娱乐平台)

已经在服务器上装了nginx和php,php-fpm(监听9000端口)
可以正常显示html,但是每当输入url打开一个php时,无法正常解析,导致变成下载模式

nginx.conf如下

现在打开php直接变成404…Orz

干脆贴出来吧,估计是这一段的问题,搞了好久都没进展….

location ~ .php$ { fastcgi_split_path_info ^.+.php/.+$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;
} 

这样写试一下 用nginx -t命令检查你的nginx配置文件是否有错误
location /index.php {

 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;

}

我以前也有过,当时是centos6,后来换成7了。
之后绑定好域名就好了

还能显示nginx的画面
问题是我用域名安装源码怎么就显示404
用ip安装弹出php文件的下载,php我也运行了啊。
网站默认主目录我也已经定位到www.38934.tech上面了。
苦恼啊!
2016-10-26 09:33:34
管理员
请您确保以下3个设置:

  1. 域名解析到服务器IP

  2. Nginx网站管理里有配置这个域名

  3. 修改完配置后有重载或重启Nginx
    目前已为你修正配置。

第一步 nginx.conf的配置

location / { if !-e $request_filename { rewrite ^/.*$ /index.php/$1 last; break; } } location ~ ^/s-[0-9a-z]+-.* { rewrite ^/s-[0-9a-z]+-.* /shtmls/$1/$2 last; break; } location ~ .+.php$|/ { set $script $uri; set $path_info "/"; if $uri ~ "^.+.php/.+" { set $script $1; set $path_info $2; } fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME $document_root/$script; fastcgi_param SCRIPT_NAME $script; }

第二步 sudo vim /etc/php5/fpm/pool.d/www.conf
将 ;listen = /var/run/php5-fpm.sock
改成 listen = 127.0.0.1:9000

你的代码直接放在/root里么?你改过之后的完成配置也发一下吧。


网站应用集成微信登录,回调地址redirect_uri为什么不能是ip地址形式????

$
0
0

(优优发娱乐pt客户端下载)

在开放平台申请网站应用开发审核通过后,在浏览器访问
https://open.weixin.qq.com/co…(我是按这个做的拼接url)
总是提示

最近刚好在做微信公众号。
测试的话是可以用ip:port这种形式的,正式就必须是域名了。

国家法规问题, 必须备案。

分布式计算:C+MPI,实现动态进程管理,该怎么换语言

$
0
0

(优发娱乐wwwyoufa8)

大家好,我是一名本科生,正在做一些分布式计算的小型科研项目。之前我们是想实现一种新的机器学习算法,后来导师想把这个算法转到service的层面上来实现。一个重要特征就是容错性(Fault-tolerance),也是我目前要解决的棘手问题。

但捉急的是,我之前用的是C + OpenMPI的组合去写的代码,但MPI有个很要命的地方就是他不能增删节点的数目,而且一个进程死整个job就死了。

现在我也在考虑怎么转的问题,但自己本身是学数学的,尤其对于网络这方面没有太多经验,所以想请教一下大家该怎么改换自己目前的编程语言,谢谢。

PS:我发现似乎MPI-2标准中有一些可以支持动态进程管理,现在正在学socket编程,导师告诉我java是可以做的,但先让我看看mpi有没有办法解决。

webpack问题,这个path.join干啥用的,直接写相对路径不行?

$
0
0

(优发娱乐wwwyoufa8)

output: { path: path.join__dirname, ./dist, filename: [name].js, publicPath: /dist/ },

写成./dist,为何这么写(下面是我的写法)

var path = requirepath;
// 定义路径
var ROOT_PATH = path.resolve__dirname;
var APP_PATH = path.resolveROOT_PATH, app;
var BUILD_PATH = path.resolveROOT_PATH, build; module.exports = { // 项目的文件夹 entry: ./src/app.js, // 输出的文件名 合并以后的js会命名为bundle.js module: { // 加载器 loaders: [{ test: /.css$/, loader: style-loader!css-loader }, { test: /.png|jpg|gif$/, loader: url-loader?limit=8192 }, ] }, output: { path: BUILD_PATH, filename: [name].js },
};

Webpack 文档在此:http://webpack.github.io/docs…

主要还是为了容错。

如果你只是单单写了

output: { path: ./build, filename: [name].js
}

你觉得这个相对的./build指的是哪个目录?到底是相对“谁”啊?

其实相对的不是你期望的当前脚本所在目录,而是相对于你在哪个目录执行的webpack命令,就是cli里常说的current working directory。所以如果当你执行命令的目录和webpack.config.js在同一个目录时,没有任何问题。不过要是换个目录执行,你试试看嘛^^

java如何写一个自动匹配的方法,高效的:匹配一个键值对象和实体类,返回一个新的实体类

$
0
0

(优发娱乐wwwyoufa8)

例如:

现在从前端数据获取到了键值对的对象:params 如下

params:{"userName":"的风格的风格发","password":"sdfdsfsdfsdfsd","cellPhone":"5214654165465","email":"sfsdfds@163.com"}

实体类:

 public UserString userName, String password, String cellPhone, String email { this.userName = userName; this.password = password; this.cellPhone = cellPhone; this.email = email; }

怎么写一个高效的自动匹配的对应到实体类的,最后返回一个新的User呢?

比如工具类的方法:

 /** * * @param o 需要转换的键值对对象 * @param s 转换的实体类类型 * @param <S> * @return 生成一个新的实体类 */ public <S extends T>S parse2DomainObject o,S s { return s; }

这个问题已被关闭,原因:与已有问题重复

这种事情最好还是交给第三方的JSON解析库, 如Google 的 GSON, 阿里巴巴的Fastjson都很不错。

fastjson一般这两个方法用的挺多

 public static String beanToJsonObject obj { return JSON.toJSONStringobj, SerializerFeature.WriteMapNullValue, SerializerFeature.UseISO8601DateFormat; } @SuppressWarnings"unchecked" public static <T> T jsonToBeanString json, Class<?> clazz { return T JSON.parseObjectjson, clazz; }

java父子类之间是否存在重载的现象?

$
0
0

(优发娱乐平台)

java的父子类之间是否存在重载呢?

public class A
{ public void aint x{}
} public class B extends A
{ public void aObject x{}
} public class Main
{ public static void mainString args[] { B b = new B ; b.a2 ; b.anew Object ; }
}

如果不存在那么对于A和B中的a方法怎么解释呢?


我现在也有点乱了, 大家的观点都不一样…但是大家的意思是这肯定不是父子类之间的重载, 而且有提到覆盖. 我之间学习的过程中, 一直把重载就当作覆盖来看, 但是看样子我的理解是错的, 那么什么是覆盖呢?

关于前两位的回答有以下说明和补充:
1.首先这不叫覆盖(Override)。类B继承了类A的方法a,且类B定义了一个新的方法a,两个方法参数不同,所以是两个不同的方法。
2.是否是重载(Overload)仍存在争论。
观点一:是重载,是发生在同一类中的重载。
【继承来的属性和方法尽管是隐式的,但仍是类B的属性和方法。】所以类B有两个方法,包括继承自a的方法,属于重载。
观点二:不是重载,重载只发生在同一类中,而类B继承类A方法的途径是通过查找调用(如上)。
、、、话说还有觉得是跨类重载的、、、但是这个和定义矛盾哈、、、

综上,此问题争议较多,个人比较倾向于观点一,【】内容来自baidu,下面是运行结果及代码。

关于覆盖和重载的区别:
1.覆盖,又称重写(Override)。发生在子类与父类之间。
子类是可以继承父类的某些方法的,当父类的方法对子类不适用时,需要在子类中写一个和父类一样的方法(当然方法内的程序块是不一样的),此处“一样”指方法名必须一样、返回值类型互相兼容、参数个数顺序类型必须一致等等。此时如果子类要用这一方法,就会直接调用覆盖过的方法,而当没有检测到重写时,才会调用从父类继承下来的方法。
举我学习时的例子:

因为不同动物的叫声和食物都不同,所以要将父类中的方法覆盖掉。

2.重载(Overload)。一般发生在同一类的不同方法间。
重载要求两个方法返回类型一样,方法名一样,参数列表不一样(类型、顺序、个数等)。
这样两个方法间互为不同的方法,调用哪一个时由参数决定。
举例:
class A{
void aint i, float j{}
void afloat i, int j{}//两个方法接收的参数类型顺序不同,所以是两个不同的方法
}
class B{
void bint i{}
void b{}//参数个数不同,第二个方法无参数
}
class C{
void cint i{}
void cfloat i{}//参数类型不同
}

  • 首先,你提到的这种情况不叫重载,是隐藏(之前有写错成覆盖)

  • 其次,重载的一个定义就是不能“跨域”,显然这两个方法在不同的两个类中

父类的方法在子类中因为有在子类中有重名而不可见,但是父类这个方法仍然存在的,当你使用b对象调用a方法时,它会首先从B类中调用,当B类中不存在对应参数的a方法时,才会想父类查找调用。

你可以试试下面这段代码会报错,应该有助于你理解重载和覆盖

class B extends A
{ @Override public void aObject x{ System.out.printlnx; }
}

重载只发生在同一类中,你这个即不属于重载,也不属于重写,因为方法名和方法参数确定一个方法。aint xaObject o属于两个方法,所以子类B继承了父类Aaint x方法。

就是重载啊,java继承机制里,子类会开辟空间用来保存继承的父类成员,因为继承过来就和父类不是同一个了。例如B类里的a(int x)方法是和父类不一样的,可以在父类这个方法里打印一下当前类名,当子类调用时显示的会是子类名。

覆盖了,你可以在父类中用关键字指明权重

Java,在构造器里调用多态方法

$
0
0

(优发娱乐wwwyoufa8)

class Glyph { void draw { System.out.println"Glyph.draw"; } Glyph { System.out.println"Glyph before draw"; draw; System.out.println"Glyph after draw"; }
}
class RoundGlyph extends Glyph { private int radius = 1; RoundGlyphint r { radius = r; System.out.println"RoundGlyph.RoundGlyph, radius = " + radius; } void draw { System.out.println"RoundGlyph.draw, radius = " + radius; } void superDraw{ super.draw; } }
public class PolyConstructors { public static void mainString[] args { RoundGlyph rg = new RoundGlyph5; rg.superDraw; }
}

这样一段代码,执行结果是这样的:
Glyph before draw
RoundGlyph.draw, radius = 0
Glyph after draw
RoundGlyph.RoundGlyph, radius = 5
Glyph.draw

Thinking In Java中有一句话

Glyph.draw方法设计将要被覆盖,这种覆盖是在RoundGlyph中发生的。(这里都OK)但是Glyph构造器会调用这个方法,结果导致了对RoundGlyph.draw的调用。

这句话我就不太明白了,①为什么Glyph的构造器会去调用子类的draw方法而不去调用自己的draw方法呢?重写明明是在子类中发生的呀,父类中的draw方法并没有被重写吧(看我后来又调了super.draw,结果也是父类中的draw方法)。
常见的多态代码是向上转型,把一个子类的实例赋值给父类的引用,这时候产生多态,这个我知道。但是②这个多态是怎么产生的呢?
主要就是①②这两个问题

如果题主看过《java 虚拟机规范》这个问题就很简单了。

首先,要明白类的实例化过程。当执行 new 指令时,”一个以此为类型的对象将会分配到 GC 堆中,并且所有的实例变量都会进行初始化为响应类型的初始值。“此时实例完成了默认初始化,之后虚拟机调用类的 <init> 方法进行《Thinking in Java》所说的指定初始化、构造初始化的过程,另外 <init> 方法的调用是递归的一直到 Object 的 <init> 方法为止。

所以 RoundGlyph 的实例化过程是这样的:

 1. Object 的默认初始化 2. Glyph 的默认初始化 3. RoundGlyph 的默认初始化 4. Glyph 构造器中的内容,也就是 System.out.println"Glyph before draw"; draw; 这些 5. RoundGlyph 中剩下的初始化代码

很明显就可以看到,当构造过程到第四步时 Glyph、RoundGlyph 都只进行了默认初始化,因此此时执行 draw 方法时 radius 的值只可能是 0,不会是 1或者 5。到这里已经解释为什么 radius == 0,但还没有解释,为什么调用的是子类的 draw 方法而不是父类的。

这时,需要明白重写在字节码中是如何实现的。对于 java 的非构造、非私有、非静态、非接口等方法,在字节码中是通过 invokevirtual 指令调用的,invokevirtual 调用方法需要一个实例引用作为参数,这个实例引用是那个类型,invokevirtual 的方法。比如说:

Son 继承自 Father,他们都有 public void eat 方法:

Father people = new Son;
people.eat;

此时 people 运行的是 Son 的 eat 方法,其实 Java 的运行时绑定实际上是通过 invokevirtual 指令来实现的,而传入的实例引用实际上决定了 invokevirtual 调用的哪一个方法。

对于题主的例子,draw 方法既不是构造方法也不是私有方法也不是静态方法,在编译过程中会被指定为 invokevirtual 指令调用,所以调用 Glyph 的 draw 还是 RoundGlyph 的 draw 方法实际上是由传入的实例引用决定的

由于这是由 new RoundGlyph 引发的指令,所以传递的是 RoundGlyph 的实例引用。因此在 RoundGlyph 的实例化过程的第四步的 draw 应该调用 RoundGlyph 的 draw 方法。上面说过,到第四步时只进行了默认初始化因此 radius 的值为 0. 输出的是: RoundGlyph.draw, radius = 0

第四步执行完了之后到第五步,RoundGlyph 实例会进行指定初始化,radius 的值变为1,再进行构造初始化,radius 的值变为 5。

之后执行 rg.superDraw,rg 是 RoundGlyph 的实例引用,但是由于使用了 super.draw,在编译过程中调用私有方法、父类方法会使用 invokespecial 指令,invokespecial 是在编译期指定好的,因此即使传入的是 RoundGlyph 引用,它依旧调用的是 Glyph 的 draw 方法。所以可以这样理解,invokespecial 指令实现了静态绑定的语义,invokevitual 指令实现了动态绑定的语义。

写了这么多,检验一下题主理解了没,把 Glyph 的 draw 改成 private 修饰,会输出什么?

————————————— 补充评论中的问题 ——————————————-

语句 RoundGlyph rg = new RoundGlyph5; 的字节码是这样的:

NEW com/kyle/RoundGlyph
DUP
ICONST_5
INVOKESPECIAL com/kyle/RoundGlyph.<init> IV

其中 new 指令创建出了 RoundGlyph 的实例应用,然后和常数 5 一起进入 <init> 的栈帧。其实我在答案开头就说过,规范规定当执行 new 指令时,”一个以此为类型的对象将会分配到 GC 堆中,并且所有的实例变量都会进行初始化为响应类型的初始值。“所以,RoundGlyph 的实例应用是在 new 指令中创建,比 <init> 方法早得多。

一般的函数覆盖的实现可以想象成类里面有一个指向函数的指针或者引用函数的引用。在派生类中,覆盖了相同签名的函数,就跟指针/引用所指向/引用的函数是另一个函数差不多。

  1. 为什么Glyph的构造器会去调用子类的draw方法而不去调用自己的draw方法呢?…
    RoundGlyph rg = new RoundGlyph5; 这段代码在构造函数里传了一个整型参数

  2. 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
    我认为你可以理解为不同类(父类、子类)里的构造函数会有不同的(构造)效果。

你可以理解成光调用方法其实本质上隐含了一个语义就是this.方法
你说的第二个问题没有看明白

你没理解java的方法解析.
你可以在父类的构造器第一行添加下面这行代码

System.out.printlnthis.getClass.getName;

然后看看输出结果, 你应该就明白了。

我在网上下载了几个java小游戏,用my eclipse打开了 却运行不了 提示的什么ant build请问怎样才能运行呢?

$
0
0

(优发娱乐wwwyoufa8)

不理解什么情况,不知道怎么办。。。请问怎样才能运行呢?

配置下本机ANT编辑环境即可。
ant 使用指南


mac系统上使用idea,但是svn一直连接不上公司的库,该怎么办?

$
0
0

(优发娱乐平台)

mac系统上使用idea,但是svn一直连接不上公司的库,该怎么办?

mac系统是10.11.16
svn是自带svn 1.7.22
idea是2016.2

看错误信息。环境跟你一样。没遇到这种情况。看svn库是否给你开权限。ip,用户名,密码都是否正确。

java使用poi导入excel数据到数据库,如何使用,思路是啥?怎么读取excel

一般怎么发布dubbo服务?

$
0
0

(优发娱乐平台)

是这样的。
发布dubbo服务一般有两种方式
1、打包成jar文件直接运行。
2、打包成war文件发布到tomcat等web容器。

我想知道一般用哪一种方式?他们的异同,优缺点又是什么?

两者皆可,第一种是内嵌web容器,也是现在流行的方式,无需任何依赖,也无需额外维护容器环境,而且也互相解耦。设想你有两个应用部署在同一个tomcat里面,怎么安全隔离?怎么用不同的IP?但如果是jar包形式,就可以用docker之类的技术隔离和使用不同IP了。

内嵌式有一个小弱点就是包比较大一点

引用dubbo用户手册中的一句话:

服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源。

jar文件运行性能好,比较简单,可以通过脚本去维护开启/关闭dubbo服务。

当然,如果你的项目本身就是一个web服务,就直接使用tomcat/jboss就好了,维护也方便

apache 怎么禁止某个ip?

$
0
0

(优优发娱乐pt客户端下载)

apache怎么禁止某个ip地址访问网站, 比如禁止23.84.9.9

如果要控制禁止某些非法IP访问,在Directory选项控制:

<Directory "/var/www/web/">
Order allow,deny
Allow from all
Deny from 23.84.9.9 #阻止一个IP
Deny from 192.168.0.0/24 #阻止一个IP段
</Directory>

或者配置.htaccess文件

Deny from 23.84.9.9 #阻止一个IP
Deny from 192.168.0.0/24 #阻止一个IP段

判断变量有没有值问题

$
0
0

(优优发娱乐pt客户端下载)

$name = $_POST[name];

前端提交一个 $name 变量,要是判断 $name 有没有值或者不存在一般怎么写?

是:

ifisset$name{}

还是:

if!empty$name{}

$name = isset$_POST[name] ? trim$_POST[name] : ; if$name{ //your code
}else{ // return false
} //
trim这个地方,有时如果应该接的值是string,但是传了array,会报错。要注意。

isset: //变量是否已经声明
empty: //变量是否为空

判断$name有没有值或者不存在 ifempty$name{}或者if!$name{},恩,以上

if!isset$_POST[name] || !$_POST[name]
{ //todo
}

引用PHP手册:

empty 本质上与 !isset$var || $var == false 等价。

一般我用if !isset$name || empty$name判断。

注意null,$arr=[name=>null];var_dumpisset$arr[name];//false

js实现图片裁切的效果后,如何将裁切的部分上传到服务器??

$
0
0

(优发娱乐wwwyoufa8)

js实现图片裁切的效果后,如何将裁切的图片上传到服务器??
由于js实现的裁切不过是一个效果而已,并没有对源文件做任何更改,且无法保存选取的部分到本地磁盘,那如何将用户裁切后的图片上传到服务器??

我的想法是:

  1. 上传源文件

  2. 上传裁切出来的图片的相关信息,包括相关坐标,裁切后图片的大小

  3. 通过php的gd函数库 对上传的原图片和相关信息进行实际的裁切,保存

不知道网络上,例如各种论坛上的头像设置等,是怎样实现的??

最近自己写了个图片裁剪,其实大多数裁剪都是这个流程啦:
上传-> 预览 -> 确定裁剪参数x,y,w,h,maxW,maxH->提交到服务端,服务端php处理后生成新的图片地址

插件地址,比较轻量级的 https://github.com/Vanthink-UED/jquery.core.image.upload

目前裁切都是服务端进行的。
前端能做的是记录要裁切的左上角坐标x,y和宽高w,h,然后在服务端根据这4个参数进行裁切和保存。

不考虑兼容性
1、通过canvas来获取剪切之后的图片数据
2、将图片数据上传到服务器

框架页面输出和在页面调用控制器中的方法输出的疑惑?

$
0
0

(优优发娱乐pt客户端下载)

右边红框圈中的地方就是页面上的数据操作的PHP代码,有100多行,而且在其他地方也有用到同样的代码块,或许有几个地方不太一样。这时候或许会有人问,这么一大段代码块,而且又在不同的页面中多次调用,为什么不封装起来呢?疑惑就在这里,,在页面上直接进行数据操作,和在页面中调用控制器中的方法进行数据操作的效率问题?

这里是个数据判断的代码块,也就是判断数据是否合格的,有可能有很多条数据,如果我调用控制器中的方法岂不是要调用几十次?

对于你的疑惑:没有效率问题,在哪儿执行效率都是一样的
对于你的代码本身:亲,这种东西随便用静态方法的方式封在哪里都行,但是就是不建议弄在控制器里,最好是专门写个Helper。
唉,如果你在我手底下,只凭缩略图里面的代码长度这一条你也过不了关。
封装很重要,封装到正确的地方更重要。


thinkPHP 的create() 方法,只是准备不添加吗?

$
0
0

(优发娱乐平台)

// 从User数据对象创建新的Member数据对象
$User = stdClass;
$User->name = ThinkPHP;
$User->email = ThinkPHP@gmail.com; $Member = M"Member";
$Member->create$User;

我看例子,怎么自己添加不上,得加个 add;
是我设置的有问题,还是 create 了 必须 添加 add 才能加上?

跑步回来,答一发。
1.M方法源码如下,其作用是实例化一个没有model文件的Model

/** * 实例化一个没有模型文件的Model * @param string $name Model名称 支持指定基础模型 例如 MongoModel:User * @param string $tablePrefix 表前缀 * @param mixed $connection 数据库连接信息 * @return ThinkModel */
function M$name=, $tablePrefix=,$connection= { static $_model = array; ifstrpos$name,: { list$class,$name = explode:,$name; }else{ $class = Think\Model; } $guid = is_array$connection?implode,$connection:$connection.$tablePrefix . $name . _ . $class; if !isset$_model[$guid] $_model[$guid] = new $class$name,$tablePrefix,$connection; return $_model[$guid];
}

2.create的源码如下:已经注释,只创建对象,做一些过滤和验证操作,不保存到数据库。

/** * 创建数据对象 但不保存到数据库 * @access public * @param mixed $data 创建数据 * @param string $type 状态 * @return mixed */ public function create$data=,$type= { // 如果没有传值默认取POST数据 ifempty$data { $data = Ipost.; }elseifis_object$data{ $data = get_object_vars$data; } // 验证数据 ifempty$data || !is_array$data { $this->error = L_DATA_TYPE_INVALID_; return false; } // 状态 $type = $type?:!empty$data[$this->getPk]?self::MODEL_UPDATE:self::MODEL_INSERT; // 检查字段映射 $data = $this->parseFieldsMap$data,0; // 检测提交字段的合法性 ifisset$this->options[field] { // $this->fieldfield1,field2...->create $fields = $this->options[field]; unset$this->options[field]; }elseif$type == self::MODEL_INSERT && isset$this->insertFields { $fields = $this->insertFields; }elseif$type == self::MODEL_UPDATE && isset$this->updateFields { $fields = $this->updateFields; } ifisset$fields { ifis_string$fields { $fields = explode,,$fields; } // 判断令牌验证字段 ifCTOKEN_ON $fields[] = CTOKEN_NAME, null, __hash__; foreach $data as $key=>$val{ if!in_array$key,$fields { unset$data[$key]; } } } // 数据自动验证 if!$this->autoValidation$data,$type return false; // 表单令牌验证 if!$this->autoCheckToken$data { $this->error = L_TOKEN_ERROR_; return false; } // 验证完成生成数据对象 if$this->autoCheckFields { // 开启字段检测 则过滤非法字段数据 $fields = $this->getDbFields; foreach $data as $key=>$val{ if!in_array$key,$fields { unset$data[$key]; }elseifMAGIC_QUOTES_GPC && is_string$val{ $data[$key] = stripslashes$val; } } } // 创建完成对数据进行自动处理 $this->autoOperation$data,$type; // 赋值当前数据对象 $this->data = $data; // 返回创建的数据以供其他调用 return $data; }

3.add方法源码如下:里面有几个insert的方法,就是往数据库里插入数据的。

/** * 新增数据 * @access public * @param mixed $data 数据 * @param array $options 表达式 * @param boolean $replace 是否replace * @return mixed */ public function add$data=,$options=array,$replace=false { ifempty$data { // 没有传递数据,获取当前数据对象的值 if!empty$this->data { $data = $this->data; // 重置数据 $this->data = array; }else{ $this->error = L_DATA_TYPE_INVALID_; return false; } } // 数据处理 $data = $this->_facade$data; // 分析表达式 $options = $this->_parseOptions$options; iffalse === $this->_before_insert$data,$options { return false; } // 写入数据到数据库 $result = $this->db->insert$data,$options,$replace; iffalse !== $result && is_numeric$result { $pk = $this->getPk; // 增加复合主键支持 if is_array$pk return $result; $insertId = $this->getLastInsID; if$insertId { // 自增主键返回插入ID $data[$pk] = $insertId; iffalse === $this->_after_insert$data,$options { return false; } return $insertId; } iffalse === $this->_after_insert$data,$options { return false; } } return $result; }

结论:M方法是实例化一个没有model文件model类。create方法只是准备数据,并没有插入。create方法往数据库插入数据。PS:这种问题可以直接看源码哦。

kanboard框架

$
0
0

(优发娱乐平台)

请问开源kanboard使用的是什么php框架开发的?谢谢

Kanboard自身就是一个框架

Kanboard 是一个简单的可视化任务板 Web 应用程序,它能使你的项目管理更加简单有效,它的灵感来自于 Kanban

什么可能造成sphinx搜索结果不准确?

$
0
0

(优发娱乐wwwyoufa8)

1、现象:
搜索的关键词,在要搜索的文章中根本没有出现。

2、可能原因:
索引没有及时更新,重建索引即可。
分词的问题?分词应该只影响分词效果,应该无关。
数据源查找出错,核实下没有。

其他?欢迎补充下。

还有种情况,该词没有,会分成一个个字,也会匹配到不存在改词的文章

能想到的其他可能原因:

  1. 重建索引之后 要执行下searchd 让查询结果也更新下 不知道lz执行了没

  2. sphinx设置的总共匹配数量偏小假如是5000条 导致要出现的文章本来要5001条才能出来 所以会看不到

基于注解的 Java WebSocket 服务如何启动?

$
0
0

(优优发娱乐pt客户端下载)

Google 了一圈,大部分只说了如何创建,并未提及如何启动。请问,这个 ws 服务如何启动?

代码如下:

@ServerEndpointvalue = "/chat-room-channel"
public class ChatRoomChannel { Logger logger = LoggerFactory.getLoggerChatRoomChannel.class; public static final Set<Session> SESSIONS = Collections.synchronizedSetnew HashSet<Session>; public static void notifyAllString message { synchronized SESSIONS { final Iterator<Session> i = SESSIONS.iterator; while i.hasNext { final Session session = i.next; if session.isOpen { session.getAsyncRemote.sendTextmessage; } } } } @OnOpen public void onConnectfinal Session session{ SESSIONS.addsession; HashMap<String, Object> msgMap = new HashMap<String, Object>; msgMap.putCommom.TYPE, Commom.ONLINE; msgMap.putCommom.MESSAGE, SESSIONS.size; String messgae = new JSONObjectmsgMap.toString; logger.debugmessgae; notifyAllmessgae; }
}

请使用tomcat8。。。这个ws是javaee7标准的只要支持javaee7的服务器就可以了。

试了tomcat8是可以用注解的websocket的。。

你的代码依赖我这边没有没法测试
测试的javaee代码是 http://www.oschina.net/translate/java-ee-html5-websocket-example
用的eclipse+tomcat8

urljoin 处理正则匹配结果时的错误

$
0
0

(优发娱乐wwwyoufa8)

问题:

将一个baseurl与正则匹配出来的href进行urljoin处理为A,将baseurl与文本href进行urljoin处理的结果为B,结果A与B不一致,A不符合需求。

代码:

# coding:utf-8 import re
from urlparse import urljoin pageUrl = http://exapmple.com/a/b/c.htm
itemContent = <p>
<a HrEf="/slash.html">slash</a>
<a HrEf="1.html">page</a>
<a hrEF="./2.html">1dot</a>
<a hrEF="../3.html">2dots</a>
<a hrEF="www.baidu.com/2.html">host</a>
<a hrEF="http://www.baidu.com/index.html">fullurl</a>
</p>
p = re.compiler[Hh][Rr][Ee][Ff]=["]?P<url>?![Hh][Tt][Tt][Pp][Ss]?://.*?["]
print re.subp, href=" + urljoinpageUrl, r1 + ", itemContent

输出:

<p>
<a href="http://exapmple.com/a/b//slash.html">slash</a>
<a href="http://exapmple.com/a/b/1.html">page</a>
<a href="http://exapmple.com/a/b/./2.html">1dot</a>
<a href="http://exapmple.com/a/b/../3.html">2dots</a>
<a href="http://exapmple.com/a/b/www.baidu.com/2.html">host</a>
<a hrEF="http://www.baidu.com/index.html">fullurl</a>
</p>

不明白的是:
如果将最后print语句中urljoin的第二个参数改为直接文本,则处理正常,例如若用:

print re.subp, href=" + urljoinpageUrl, /slash.html + ", itemContent

处理第一条url的结果会是符合需求的:

<a href="http://exapmple.com/slash.html">slash</a>

那么,这是为什么呢?

不知道为什么直接引用匹配组作为urljoin的参数不行,但是在匿名函数内调用urljoin并将匹配组传入urljoin是可以的,如下:

import re
from urlparse import urljoin pageUrl = http://exapmple.com/a/b/c.htm
itemContent = <p>
<a HrEf="/slash.html">slash</a>
<a HrEf="1.html">page</a>
<a hrEF="./2.html">1dot</a>
<a hrEF="../3.html">2dots</a>
<a hrEF="www.baidu.com/2.html">host</a>
<a hrEF="http://www.baidu.com/index.html">fullurl</a>
</p>
p = re.compilehref=["]?P<url>?!https?://.*?["], re.I
print p.sublambda x: href=" + urljoinpageUrl, x.group1 + ", itemContent

Viewing all 18262 articles
Browse latest View live




Latest Images