小编JDe*_*age的帖子

如何使用多态而不是instanceof?(为什么?)

如果我们采用以下代码:

Shape p1 = new Square();
Square c1;
if(p1 instanceof Square) {
  c1 = (Square) p1;
}
Run Code Online (Sandbox Code Playgroud)

偏好多态性是什么意思instanceof,顺便说一下,为什么它更好?

编辑: 我理解多态是什么; 我所缺少的是如何使用它而不是instanceof.

java polymorphism instanceof

14
推荐指数
1
解决办法
7484
查看次数

在PHP中,PDO如何防止SQL注入?准备好的陈述如何运作?

我理解通过使用预准备语句来保护数据库免受SQL注入的正确方法.我想了解准备语句如何保护我的数据库.

首先,准备好的语句与"参数化查询"相同吗?

作为一个例子,我粘贴在我的代码下面,以便在用户表中插入新用户.这样安全吗?PDO如何确保其安全?还有什么需要做的,以保护数据库免受注入?

在'Class_DB.php'中:

class DB {
 private $dbHost;
 private $dbName;
 private $dbUser;
 private $dbPassword;   
 function __construct($dbHost, $dbName, $dbUser, $dbPassword) {
  $this->dbHost=$dbHost;
  $this->dbName=$dbName;
  $this->dbUser=$dbUser;
  $this->dbPassword=$dbPassword;
 }
 function createConnexion() {
  return new PDO("mysql:host=$this->dbHost;dbName=$this->dbName", $this->dbUser, $this->dbPassword);
 }
}
Run Code Online (Sandbox Code Playgroud)

在'DAO_User.php'中:

require_once('Class_DB.php');

class DAO_User {
 private $dbInstance;
 function __construct($dbInstance){
  $this->dbInstance=$dbInstance;
 }
 function createUser($user){
  $dbConnection=$this->dbInstance->createConnexion();
  $query=$dbConnection->prepare("INSERT INTO users (userName, hashedPassword, userEmail) VALUES (?,?,?)");
  $query->bindValue(1, $user->userName);
  $query->bindValue(2, $user->hashedPassword);
  $query->bindValue(3, $user->userEmail);
  $query->execute();
 }
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

JDelage

php security pdo

13
推荐指数
1
解决办法
2万
查看次数

麻省理工学院计划和DrScheme对学习SICP的利弊

在尝试通过SICP(可能同时观看部分/全部MIT 6.001视频)的背景下,使用MIT Scheme与使用DrScheme的优缺点是什么?

scheme sicp racket

11
推荐指数
1
解决办法
6729
查看次数

何时在HTML表格中使用tbody,colgroup,thead等?

当我了解HTML表格时,我没有被告知tbody,thead,tfoot,colgroup.你应该什么时候使用它们?我去了W3Schools网站,我了解它们是如何工作的,但不知道何时使用或不使用它们.

html html-table

11
推荐指数
1
解决办法
1万
查看次数

为什么我的程序输出在Windows中闪烁并关闭?

我正在尝试为K&R"Hello,world"构建一个.exe文件.书中给出的代码是:

#include <stdio.h>  
main()  
{  
    printf("Hello, world!\n");  
}  
Run Code Online (Sandbox Code Playgroud)

当我从Code :: Blocks(在Windows XP下)构建和运行时,我得到带有"hello world"消息的提示窗口.它一直打开,直到我手动关闭它.但是,当我双击.exe文件时,提示只是闪烁并消失,为什么呢?

c windows console

10
推荐指数
2
解决办法
2万
查看次数

如何在Dia中绘制自我呼叫?

我刚开始使用Dia.我正在尝试构建一个序列图.我想代表自己的电话.如何在Dia中做到这一点?我无法弄清楚.

谢谢.

uml dia

10
推荐指数
1
解决办法
3706
查看次数

Header说UTF-8但口音没有正确显示 - 为什么?(PHP)

为清楚起见,我从更大的一组php文件中抽象出了标题.当我将它加载到Wampserver时,<p>é</p>尽管标题调用utf-8字符集,但在网站上显示为 .这份文件有什么问题?

(注意,我试图通过用utf-8替换iso-8859-1来修改编码,这没有帮助.)

header.php文件:

<?php
    header('Content-Type:text/html; charset=UTF-8');
    echo '<?xml version="1.0" encoding="iso-8859-1"?>'
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Blabla</title>
    </head>
    <body>
        <p>é</p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

html php encoding utf-8

9
推荐指数
2
解决办法
5万
查看次数

lastInsertId()如何用于没有自动递增字段的表?

如何lastInsertId()为没有自动递增字段的表工作?主键由2个字段组成的表怎么样?

(我正在使用MySQL)

php mysql

9
推荐指数
1
解决办法
695
查看次数

要在MySQL数据库中插入的PHP PDO代码失败

我在解决一些简单的PHP代码以在MySQL表中插入记录时遇到困难.

直接输入WAMP的代码工作正常:

INSERT INTO `users` (`userName`,`userEmail`) VALUES ('orange','orange@gmail.com')
Run Code Online (Sandbox Code Playgroud)

这个PHP代码不起作用:

<?php
    $dbHost="localhost";
    $dbName="project";
    $dbUser="admin";
    $dbPassword="abcd";
    $dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword);
    print_r($dbh);
    echo "</br>";
    print_r($dbh->errorInfo());

    $query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)");
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $query->bindValue(1, 'apple');
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $query->bindValue(2, 'apple@gmail.com');
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $inserted=$query->execute(); //True if succesful, False if not.
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());
    echo "</br>";
    if ($inserted){print_r("true");}else{print_r("false");}; …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

8
推荐指数
1
解决办法
3624
查看次数

小Schemer eqlist?功能 - 备用版本?

我正在阅读"Little Schemer"一书,并完成各种功能.一般来说,我最终得到与书籍相同的版本,但不是eqlist ?,这是一个测试两个列表相等的函数.

我已经尝试过测试我的版本,它会传递任何我抛出的东西.然而它与"Little Schemer"版本略有不同,我希望有人对我是否遗漏某些东西持有意见 - 我怀疑是这样的.

我的版本:

(define eqlist?
  (lambda (list1 list2)
    (cond
      ((and (null? list1)(null? list2))#t)
      ((or (null? list1)(null? list2))#f)
      ((and (atom? list1)(atom? list2))(eqan? list1 list2))
      ((or (atom? list1)(atom? list2)) #f)
      (else
        (and(eqlist? (car list1) (car list2))
            (eqlist? (cdr list1) (cdr list2)))))))
Run Code Online (Sandbox Code Playgroud)

这本书的版本:

(define eqlist2? ;This is Little Schemer's version
  (lambda (list1 list2)
    (cond
      ((and (null? list1)(null? list2)) #t)
      ((or (null? list1)(null? list2)) #f)
      ((and (atom? (car list1))(atom? (car list2)))
       (and (eqan? (car list1)(car list2))(eqlist2? (cdr list1)(cdr list2)))) …
Run Code Online (Sandbox Code Playgroud)

scheme the-little-schemer

7
推荐指数
1
解决办法
506
查看次数