编译程序

SQL注入详解

↘锁芯ラ 提交于 2020-03-11 17:02:08
今天跟大家分享SQL注入的知识。 前言 先来看一副很有意思的漫画: 相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊SQL注入相关的内容。 1 何谓SQL注入? SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。 SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。 这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。 多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。 SQL数据库操作示例: import sqlite3 连接数据库: conn = sqlite3 . connect ( 'test.db' ) 建立新的数据表: conn . executescript ( '' 'DROP TABLE IF EXISTS students ; CREATE TABLE

【大数据day09】—— Hadoop集群安装和配置(appache版本hadoop重新编译,Hadoop安装,配置三台虚拟机集群环境)

扶醉桌前 提交于 2020-03-11 10:12:29
Hadoop集群安装和配置 1、 Hadoop的介绍 2、hadoop的历史版本和发行版公司 2.1 Hadoop历史版本 2.2 Hadoop三大发行版公司 3、hadoop的架构模型 1.x的版本架构模型介绍 2.x的版本架构模型介绍 四种 4、appache版本hadoop重新编译 4.1为什么要编译hadoop 4.2编译环境的准备 4.2.1:准备linux环境 4.2.2:虚拟机联网,关闭防火墙,关闭selinux 4.2.3:安装jdk1.7 4.2.4:安装maven 4.2.5:安装findbugs 4.2.6:在线安装一些依赖包 4.2.7:安装protobuf 4.2.8、安装snappy 4.2.9:编译hadoop源码 5、Hadoop安装 第一步:上传apache hadoop包并解压 第二步:修改配置文件 修改core-site.xml 修改hdfs-site.xml 修改hadoop-env.sh 修改mapred-site.xml 修改yarn-site.xml 修改mapred-env.sh 修改slaves 第三步:配置hadoop的环境变量 第四步:启动集群 第五步:jps命令查看三台虚拟机的服务阶段状态 第四步:三个端口查看界面 安装包资料: 链接: https://pan.baidu.com/s

关于extern "C"(详细剖析)

本秂侑毒 提交于 2020-03-11 10:01:43
这是一篇讲得非常详细和完整的关于extern "C"的文章,值得推荐: 原文链接:https://www.cnblogs.com/TenosDoIt/p/3163621.html 【目录】 引言 extern “C”的前世今生 小心门后的未知世界 Q&A c++调用c的方法 c调用c++的方法 在你工作过的系统里,不知能否看到类似下面的代码。 这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。 你说的没错,如果你的头文件从来没有被任何C++程序引用过的话。 这与C++有什么关系呢? 看看__cplusplus( 注意前面是两个下划线 ) 的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所有的现代C++编译器都预先定义了它;而所有C语言编译器则不会。另外,按照规范__cplusplus的值应该等于1 9 9 7 1 1 L ,然而不是所有的编译器都照此实现,比如g++编译器就将它的值定义为1。 所以,如果上述代码被C语言程序引用的话,它的内容就等价于下列代码。 在这种情况下,既然extern "C" { }经过预处理之后根本就不存在,那么它和#include指令之间的关系问题自然也就是无中生有。 extern "C"的前世今生 在C++编译器里,有一位暗黑破坏神

[转帖]持续部署,并不简单!

巧了我就是萌 提交于 2020-03-11 07:45:49
持续部署,并不简单! https://coolshell.cn/articles/7657.html 2012年06月25日 马基雅弗利 评论 46 条评论 36,619 人阅读 【 感谢 @常新居士 投递此文 】 这几年,持续集成随着敏捷在国内的推广而持续走热,与之相伴的持续部署也一直备受关注。 自前两年,持续交付这个延续性概念又闯进了国内IT圈,慢慢开始在社区和会议中展露头角。许多不明真相的群众跟风哭着喊着要“上”,而许多前CI的半吊子玩家换件衣服就接着干,有的甚至衣服都来不及换…… 。国内的这些土财主如果不巧请了某些所谓的战略家,除了建了一堆持续集成环境,以及每天嚷嚷着要这个要那个,混乱的状况在根本上没有得到改善。本文无意费力探讨持续集成和持续交付的概念,而是打算谈谈对于大型软件企业,以持续集成为基础实现持续部署(交付)时,所要面对的问题以及可行的解决方案。地主老财们,夜黑风正猛,山高路又远,注意脚下…… And God Said, Let there be light: and there wa — GENSIS, Charpter 1, King James 一、起步 先来讲个故事…… 几年前,一对留美的夫妇通过朋友找到我,让我帮忙在国内组建一个开发团队,该团队负责为其开发一款基于社交网络的客户关系管理软件,(暂且称之为项目A)

MDK编译优化笔记

北战南征 提交于 2020-03-11 06:00:37
在一次使用MDk的编译优化等级比较高的时候发现编译不优化时功能正常,开了优化等级0 2就出现异常,调试中看了很多博客总结一下。 一个变量,如果你的主程序要用到,同时中断还要用到,要加volatile修饰。告诉编译器这个变量是可能随时发生变化的,使得编译器编译程序的时候,每次都从RAM里面读取数据,而不是使用之前缓存到寄存器里面的值。 对于多任务的程序,如果一个公共变量被多个任务用到也要加volatile修饰。 同时变量定义的时候用了关键字volatile修饰,但是在其他文件引用时不加volatile变量修饰一样会被编译器优化掉。现则反过来想想,原因还是很简单的,MDK编译多个文件时是分别编译,最后再用链接器链接,当编译的时候一个模块引用另外一个模块的变量,完全是靠的变量声明,如果声明都不加volatile,那么引用的模块肯定会把变量当成普通变量的,再反推一下,如果原变量没有加volatile,但是声明的时候加了volatile,是不是引用的模块会将这个变量当成volatile型变量呢   C编译器是以每个C文件作为基本编译单元的,称为模块,被编译为obj;而模块之间的函数或变量访问都是通过标号来实现的,标号本身没有任何属性,只是提供给链接器使用的一个符号名称而已,标号的属性完全就靠调用的地方的原型声明来决定的!因此,你在一个.C模块中定义为volatile,仅仅是在

Android平台的Swift—Kotlin

亡梦爱人 提交于 2020-03-10 23:44:06
WeTest 导读 Kotlin 已经出来较长一段时间了,有些同学已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,这篇文章的目的是让这些同学对Kotlin有一个系统全面的认识,让有兴趣的同学在之后学习的时候能更加的轻车熟路。 什么是kotlin? 一、一门静态编程语言 跟java,c一样的强类型语言,变量的数据类型在编译时确定。对比的JavaScript,python则是动态编程语言。 二、JetBrians开发设计 一家捷克的软件公司,是著名的IDE开发商,对很多的开发语言和平台都提供了相应的集成开发环境,比如Java的,OC的,JavaScript,PHP,C/C++等。而其中最著名的是IntelliJ IDEA ,Java的集成开发环境,被称为目前最好用的java IDE。而且Android Studio就是Google基于IntelliJ IDEA 开发的,由此可见Google和JetBrains的合作也是比较密切的。而从以上说明也可以看到JetBrains不仅实力强劲,这家公司对于语言设计更是有天然优势。Kotlin是集多家语言之大成。 三、Kotlin是开源的(基于Apache 2.0开源许可协议) 我们在GitHub上可以下载Kotlin的全部源代码。而且可以自己进行代码修改,再发布。

Android平台的Swift—Kotlin

∥☆過路亽.° 提交于 2020-03-10 23:43:10
WeTest 导读 Kotlin 已经出来较长一段时间了,有些同学已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,这篇文章的目的是让这些同学对Kotlin有一个系统全面的认识,让有兴趣的同学在之后学习的时候能更加的轻车熟路。 什么是kotlin? 一、一门静态编程语言 跟java,c一样的强类型语言,变量的数据类型在编译时确定。对比的JavaScript,python则是动态编程语言。 二、JetBrians开发设计 一家捷克的软件公司,是著名的IDE开发商,对很多的开发语言和平台都提供了相应的集成开发环境,比如Java的,OC的,JavaScript,PHP,C/C++等。而其中最著名的是IntelliJ IDEA ,Java的集成开发环境,被称为目前最好用的java IDE。而且Android Studio就是Google基于IntelliJ IDEA 开发的,由此可见Google和JetBrains的合作也是比较密切的。而从以上说明也可以看到JetBrains不仅实力强劲,这家公司对于语言设计更是有天然优势。Kotlin是集多家语言之大成。 三、Kotlin是开源的(基于Apache 2.0开源许可协议) 我们在GitHub上可以下载Kotlin的全部源代码。而且可以自己进行代码修改,再发布。

编译和链接——程序员的自我修养

半城伤御伤魂 提交于 2020-03-10 16:28:05
常用的开发环境如Visual Studio、Delphi,是 集成开发环境 ,在集成开发环境中,将编译链接合并到一起一步完成,其合并到一起的过程称为 构建 虽然集成开发环境及编译器提供的默认配置、编译与链接参数提供的功能足以强大,但其隐藏了软件运行背后的机制,可能会产生一些莫名其妙的错误 被隐藏的过程 编译过程可分解为四个步骤:预处理、编译、汇编、链接 预处理 如对一个main.c文件预处理 #-E:仅预处理 gcc -E main.c -o main.i #或 cpp main.c > main.i 预处理过程中处理源文件中以#开始的预编译指令,规则: 将“#define”删除并展开宏定义 处理所有条件预处理指令,如“#if”,"#endif","#ifdef","#elif","#else" “#include”,将被包含文件插入到预处理位置【递归进行】 删除所有注释://、/**/ 添加行号&文件名标识,用于编译时产生调试用的行号信息及出现错误/警告时的信息显示 保留“#pragma”编译器指令 在最后,main.i文件中所有的宏已经展开,后续过程中如果无法判断宏定义/头文件包含是否正确时可以来查看该文件 编译 将main.i文件进行词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化后产生的汇编代码文件【在编译原理课程中学习】 gcc -S main.i -o

Redis学习和搭建笔记

 ̄綄美尐妖づ 提交于 2020-03-10 13:27:08
redis是一种远程字典服务,尤其是用在缓存技术上,非常的方便和高效,是一种开源、可基于内存、可基于持久化日志、键值对数据库,并提供多种语言支持的API。 同样的,因为目前互联网技术大部分都采用了分布式结构的理念,redis也有主从服务之分,主从互为同步联合,避免出现单点运行的情况,与fastdfs的分布理念类似。 一. 准备内容 C++语言包:gcc-c++ 稳定版本的redis安装包 个人VM+CentOS7 二. 安装及配置 yum和传统编译模式安装   yum安装方式是我认为最快捷最简单的方式,只要准备好了服务器和Centos7系统,网络连接正常就可以进行安装,使用yum安装会自动将redis及其需要的依赖程序一并安装妥当,并且是自动按照依赖安装顺序进行安装,比如会先下载gcc-c++进行安装,然后下载redis进行安装,非常的方便快捷。   但相较于传统的编译安装模式,yum方式安装的程序进行卸载的时候,会同时把redis及一同安装的依赖程序都卸载,正如gcc-c++ 几乎所有的c语言编译的程序都依赖这个语言包,一旦使用yum remove,那么其他正常的程序也无法使用,而传统编译安装的程序,安装的内容都会释放到固定目录,卸载的时候只需要手动删除其安装目录即可,不会删除其他程序的共同依赖程序,同时卸载也非常干净,但是安装起来比较耗时,要考虑程序依赖性、安装顺序

Ubuntu18.04 vim8.2 Yomcompleteme clang 编译、安装及使用

南笙酒味 提交于 2020-03-10 12:16:47
简介 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环境: Ubuntu18.04.4 server版(desktop版应该也适用) 环境还原方式: 坚果云上保存: .vim 文件的压缩包,以免以后换环境时都得下载, 使用时直接解压至 ~/.vim GitHub上保存: .vimrc , .clang-format , .ycm_extra_conf.py 等配置文件, 地址: https://github.com/whuwzp/vim_config 主要参考网址如下, 基本上都是参照官方方法, 而不是在博客网站上拾人牙慧: vim源码编译: https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source llvm clang编译: https://llvhttps://m.org/docs/GettingStarted.html#getting-started-with-llvm youcompleteme编译使用: https://github.com/ycm-core/YouCompleteMe#linux-64-bit 其他c++插件: https:/