预编译

JavaWeb - JDBC,DriverManager,Connection,Statement,ResultSet,sql的注入和防止

拟墨画扇 提交于 2019-12-02 23:49:01
转载请注明出处: https://blog.csdn.net/mythmayor/article/details/72781525 1、JDBC的简介 1.1 jdbc:Java DataBase Connectivity,java数据库的连接 1.2 比如有一台电脑,想在电脑上安装显卡,需要显卡的驱动,由显卡生产厂商提供 1.3 要想使用java对数据库进行操作,需要使用由数据库提供的数据库驱动 1.4 一个程序,使用java操作数据库,掌握java代码,除了掌握java代码之外,需要掌握数据库驱动的代码, 很多的数据库,比如mysql、oracle,对于程序员来讲,需要掌握每种数据库的代码,对于程序员压力很大 1.5 sun公司针对这种情况,开发出一套标准接口,各个数据库只需要实现这个接口就可以了,程序员只需要掌握这套 接口就可以了,这套标准的接口就是jdbc 1.6 如果想要使用jdbc对数据库进行操作,首先安装数据库的驱动,不同的数据库提供驱动使用jar的形式提供的, 需要把jar包放到项目里面,相当于安装了数据库的驱动。 1.7 导入jar到项目中(使用到开发工具 myeclipse10.x版本) 首先创建一个文件夹 lib,把jar包复制到lib里面,选中jar包右键点击build path -- add to build path, jar包前面的图标变成了“奶瓶

AOP 的一些理解

僤鯓⒐⒋嵵緔 提交于 2019-12-02 16:01:46
https://www.cnblogs.com/beliefbetrayal/archive/2012/02/03/2337522.html (java) https://www.cnblogs.com/landeanfen/p/4782370.html AOP 的解释:(Aspect-Oriented Programming,面向切面的编程)它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。它是一种新的方法论,它是对传统OOP编程的一种补充。 例如 mvc 中的 过滤器Filter,它里面的异常捕捉可以通过 FilterAttribute,IExceptionFilter 去处理,这两个对象的处理机制内部原理应该就是AOP 来源: https://www.cnblogs.com/whl4835349/p/11753219.html

mysql--预编译语句

风流意气都作罢 提交于 2019-12-02 05:06:37
MySQL执行预编译分为如三步: 执行预编译语句,例如:prepare myfun from ‘select * from t_book where bid=?’; 设置变量,例如:set @str=‘b1’ 执行语句,例如:execute myfun using @str 如果需要再次执行myfun,那么就不再需要第一步,即不需要再编译语句了: 设置变量,例如:set @str=‘b2’ 执行语句,例如:execute myfun using @str 来源: https://blog.csdn.net/qq_33638017/article/details/102719343

PHP7预编译mysqli查询操作

こ雲淡風輕ζ 提交于 2019-12-01 22:48:33
   //连接数据库    $mysqli = new mysqli("localhost", "root", "root", "mobilemoms"); !$mysqli->connect_error or die("CONNECT SQL ERROR".$mysqli->connect_error); $mysqli->query("set names utf8");    //sql预编译    $sql = "select tally_name,machine_no from device_member where mobile_no=? and mobile_pwd=? limit 1"; $mysqli_stmt = $mysqli->prepare($sql); //绑定参数 $mysqli_stmt->bind_param("ss",$mobileno,$pwd);//绑定查询参数 $mysqli_stmt->bind_result($tally_name,$machine_no);//绑定结果参数 也就是将查询结果直接给某参数 //处理查询结果 $mysqli_stmt->execute(); if(!$mysqli_stmt->fetch()){ //没有内容 wrong("No User"); }else{//有内容 echo "success"; } 来源

1、Spark预编译版本下载安装与启动

混江龙づ霸主 提交于 2019-12-01 12:56:24
1、下载 预编译 spark-2.2.0-bin-hadoop2.7.tgz 源码编译 略 2、安装 解压 tar -xzvf spark-2.2.0-bin-hadoop2.7.tgz 移动 mv spark-2.2.0-bin-hadoop2.7 /usr/soft/ 配置环境变量 export SPARK_HOME=/usr/soft/spark-2.2.0-bin-hadoop2.7 export PATH=$PATH:$SPARK_HOME/bin 运行 spark-shell spark-shell local[4] spark-shell --master local[4] 3、hadoop maxtemp wordCount 4、spark-shell sc: SparkContext scala> val file = sc.textFile("/root/aa.txt") file: org.apache.spark.rdd.RDD[String] = /root/aa.txt MapPartitionsRDD[1] at textFile at <console>:24 scala> file.count() res0: Long = 11 scala> file.first() res1: String = hello dkfdf 5、Resilient

JavaScript --- 预编译

旧街凉风 提交于 2019-11-30 23:54:30
今天复习了关于JavaScript预编译这一块的知识点,很基础也很重要。 关于预编译 函数声明整体提升(如果你写一个函数声明,不管你写在哪里,系统总会把函数的声明提到逻辑的最前面) 变量 声明提升 eg: var a = 123; 那么 变量声明就会提升到最前面(进行拆分): var a a = 123 预编译发生在函数执行的前一刻 1. 暗示全局变量(imply global): 即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。 eg: a = 123; eg: var a = b = 123; 先把123赋给b,再把b的值赋给a 2. 一切声明的全局变量,全是window的属性 eg:var a = 123; =====> window.a = 123; 那么在预编译的过程中发生了什么呢? 首先创建了 GO 和 AO 对象 。 1. 创建AO对象 ----- Activation Object(执行器上下文) 2. 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined 3. 将实参值和形参统一 4. 在函数体里面找函数声明,值赋予函数体 来源: https://www.cnblogs.com/lovekiku123/p/11645139.html

关于 Mybatis 中的 StatementType 知识点

流过昼夜 提交于 2019-11-30 18:01:25
来自 https://blog.csdn.net/qq_26496877/article/details/78258317 要实现动态传入表名、列名,需要做如下修改 添加属性statementType=”STATEMENT” 同时sql里的属有变量取值都改成${xxxx},而不是#{xxx} < delete id = "deleteTableData" parameterType = "java.util.Map" statementType = "STATEMENT" > <![CDATA[ delete from ${table} where ${col} < ${date}]]> </ delete > 1 2 3 4 5 statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。这里显然不能使用预编译,要改成非预编译。 x x x x : xxxx: 将传入的数据直接显示生成在sql中,对于字符串数据,需要手动加上引号。 String dateStr = DateFormatUtils. format ( date .getTime(), "yyyy-MM-dd

预编译语句(Prepared Statements)介绍,以MySQL为例

*爱你&永不变心* 提交于 2019-11-30 11:09:46
#和$的区别 Mybatis中参数传递可以通过#和$设置。它们的区别是什么呢? # Mybatis在解析SQL语句时,sql语句中的参数会被预编译为占位符问号? $ Mybatis在解析SQL语句时,SQL语句中的参数会被当做字符串拼接SQL。 使用#能够防止SQL注入攻击。 那么什么是预编译? 什么是预编译 通常,一条sql在db接收到最终执行完毕返回需要经历三个阶段: 词法和语义解析 优化sql语句,制定执行计划 执行并返回结果 但是如果同样一条SQL,如果只是参数值变了,不需要每次都语法语义解析、优化、制定执行计划, 所以可以将这类SQL语句中的值用占位符替代,不需要每次编译,可以直接执行 执行的时候,直接将每次请求的不同的值设置到占位符的位置。 可以视为将sql语句模板化或者说参数化。 如果觉得不好理解,可以看看 MySQL的预编译功能 预编译的优势 预编译可以缓存SQL,重复利用, 可以优化SQL的执行 预编译的缺点(什么场景不适合) 传入表名等数据库对象时,无法使用#,因为使用#占位符,会将表名加上引号,无法执行。 其他场景,能使用#占位符就尽量使用 参考: 预编译语句(Prepared Statements)介绍,以MySQL为例 # 与 $ 区别以及 sql 预编译 来源: https://www.cnblogs.com/wozixiaoyao/p/11580823

深入理解include预编译原理

我怕爱的太早我们不能终老 提交于 2019-11-29 15:54:52
你了解 #include 某个 .h 文件后,编译器做了哪些操作么? 你清楚为什么在 .h文件中定义函数实现的话需要在函数前面加上 static 修饰么?你知道 #ifndef……#define……#endif 这种防止头文件重复包含的精髓所在么?本文就是来探讨这些问题,并给出我的理解和思考,欢迎大家留言交流。 1. #include 命令的作用 1.1 什么情况不使用 include //a.c文件 void test_a() { return; } //b.c文件 void test_a(); // 函数声明 void test_b() { test_a(); // 由于上面已经声明了,所以可以使用 } 其实,这样的工程,可以不用使用 include 预编译命令。 1.2 什么情况使用 include 如果工程里面的函数特别多,那么按照上面的做法,则必须在每一个 .c 文件的开头列出所有本文件调用过的函数的声明,这样很不高效,而且一旦某个函数的形式发生变化,又得一个一个改 .c 开头的函数声明。 因此,#include 预编译命令诞生。 //a.c文件 void test_a() { return; } //a.h文件 void test_a(); //b.c文件 #include "a.h" // 包含含有 test_a() 函数声明的头文件 void test_b() {

关于预编译和宏定义部分说明

筅森魡賤 提交于 2019-11-28 16:46:21
From: http://www.neu.edu.cn/cxsj/pointchart/c11/index.html #pragma指令 TAG: 预编译和宏定义,ANSI C,# pragma TEXT: 其语法格式如下: # pragma token-sequence 此指令的作用是触发所定义的动作。如果token- sequence存在,则触发相应的动作,否则忽略。此指令一般为编译系统所使用。例如在Visual C++.Net 中利用# pragma once 防止同一代码被包含多次。 #line指令 TAG: 预编译和宏定义,ANSI C,#line TEXT: 此命令主要是为强制编译器按指定的行号,开始对源程序的代码重新编号,在调试的时候,可以按此规定输出错误代码的准确位置。 形式1 语法格式如下: # line constant “filename” 其作用是使得其后的源代码从指定的行号constant重新开始编号,并将当前文件的名命名为filename。例如下面的程序如下: #include "stdio.h" void Test(); #line 10 "Hello.c" int main(int argc, char* argv[]) { #define CONST_NAME1 "CONST_NAME1" printf("%s\n",CONST_NAME1);