CentOS下apache配置支持PHP
Intro在CentOS 8.3中用yum安装完apache2.4.37和PHP7.4.16之后,配置文件满天飞。需要修改apache底下的httpd.conf文件才能让我们的PHP项目完成在apache服务器上的部署。
配置位置的修改主要是修改/etc/httpd/conf/httpd.conf这个文件。
端口冲突如果之前装过Nginx的话两个的端口都是80,需要避免端口冲突,如果选apache回避的话需要修改:
12+ Listen 81- Listen 80
导入PHP模块找到LoadModule的位置加入:
123456789101112# Dynamic Shared Object (DSO) Support## To be able to use the functionality of a module which was built as a DSO you# have to place corresponding `LoadModule' lines at this location so the# directives contained in it ar ...
HTML5入门
参考教程B站:遇见狂神说
什么是HTMLHyper Text Markup Language:超文本标记语言
HTML基本结构
<body>、</body>等成对的标签分别叫开放标签和闭合标签。
单独呈现的标签(空元素),如<hr/>:意为用/来关闭空元素。
网页基本信息1234567891011121314151617181920<!-- DOCTYPE:告诉浏览器,要使用什么规范 --><!DOCTYPE html><!-- html:总的标签,所有html代码必须在这个标签里面 --><html lang="en"><!-- head标签代表网页头部 --><head> <!-- meta:描述性标签,用来描述网站的一些信息 --> <!-- meta一般用来做SEO(搜索引擎优化) --> <meta charset="UTF-8"> <meta name ...
MapReduce详解
MapReduce作业涉及的实体MapReduce作业执行涉及4个独立的实体:
客户端(client):编写MapReduce程序,配置作业,提交作业,这就是程序员完成的工作;
JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;
TaskTracker:保持与JobTracker的通信,在分配的数据片段上执行Map或Reduce任务,TaskTracker和JobTracker的不同有个很重要的方面,就是在执行任务时候TaskTracker可以有n多个,JobTracker则只会有一个(JobTracker只能有一个,就和HDFS里namenode一样存在单点故障)
HDFS:保存作业的数据、配置信息等等,最后的结果也是保存在HDFS上面
Map函数和Reduce函数的输入输出
函数
输入
输出
说明
Map
<k1,v1> (如: <行号,”a b c”>)
List(<k2,v2>) (如:<“a”,1> <“b”,1> <“c”,1>)
1.将小 ...
Nginx入门知识点总结
参考教程遇见狂神说:Nginx入门视频
什么是Nginx?Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
其特点是占有内存少,并发能力强。
Nginx是一个安装非常的简单、 配置文件非常简洁(还能够支持peri语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7 *24不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达50,000个并发连接数的响应。
Nginx作用反向代理
正向代理(代理客户端/前端)
反向代理(代理服务端/后端)
负载均衡两种策略:内置策略和扩展策略
内置策略:轮询、加权轮询、Ip hash
轮询:
加权轮询:
iphash(对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题):
扩展策略:天马行空
动静分离在我们的软件开发中,有些请求是需要后台处理的,有些请求是不 ...
Hive数据倾斜
什么是数据倾斜数据倾斜在MapReduce编程模型中十分常见。用最通俗易懂的话来说,数据倾斜无非就是大量的相同key被partition分配到一个分区里,造成了“一个人累死,其他人闲死”的情况。这种情况违背了并行计算的初衷。一个节点要承受着巨大的压力,而其他节点计算完毕后要一直等待这个忙碌的节点,拖累了整体的计算时间。效率是十分低下的。
MapReduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀地分配到各个reduce中,就是解决数据倾斜的根本所在。
举例:在执行shuffle操作的时候,按照shuffle的原理是按照key来进行values的数据的输出、拉取和聚合的。同一个key的values,一定是分配到一个reduce task进 ...
Java知识点总结——并发部分
参考Java Guide
进程与线程概念进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。
在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。
线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
Java 程序天生就是多线程程序,一个 Java 程序的运行是 main 线程和多个其他线程同时运行。
从JVM角度说进程与线程的区别总结一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (JDK1.8 之后的元空间)**资源,但是每个线程有自己的程序计数器、虚拟机栈和本地方法栈**。
线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进 ...
Java知识点总结——容器部分
参考Java Guide
集合概述结构框架在 Java 中除了以 Map 结尾的类之外, 其他类都实现了 Collection 接口。
并且,以 Map 结尾的类都实现了 Map 接口。
List,Set,Map 三者的区别
List(对付顺序的好帮手):存储的元素是有序的、可重复的。
Set(注重独一无二的性质):存储的元素是无序的、不可重复的。
Map(用 Key 来搜索的专家):使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x”代表 key,”y”代表 value,Key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
集合框架的底层数据结构List
Arraylist: Object[]数组
Vector:Object[]数组
LinkedList: 双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)
Set
HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素。
LinkedHashSet:LinkedHashSet 是 HashSet 的子类,并且 ...
Leetcode刷题——动态规划专题
参考刷题指南labuladong动态规划系列(官网)、微信公众号文章
动态规划答疑
子序列子序列问题解题模板参考labuladong教程:子序列解题模板
思路1:一个一维的 dp 数组在子数组array[0..i]中,以array[i]结尾的目标子序列的长度是dp[i]。
思路2:一个二维的 dp 数组思路2.1:涉及两个字符串/数组时在子数组arr1[0..i]和子数组arr2[0..j]中,我们要求的子序列长度为dp[i][j]。
思路2.2:只涉及一个字符串/数组时在子数组array[i..j]中,我们要求的子序列(最长回文子序列)的长度为dp[i][j]。
300. 最长递增子序列参考labuladong教程:从最长递增子序列学会如何推状态转移方程
dp[i]: 表示以 nums[i] 这个数结尾的最长递增子序列的长度。
base case:所有dp[i]的 初始值均为 1,因为以 nums[i] 结尾的最长递增子序列起码要包含它自己。
状态转移关系:nums[i] = x,既然是递增子序列,我们只要找到前面那些结尾比 x 小的子序列,然后把 x 接到最后,就可以形成一个新 ...
Java知识点总结——基础部分
参考Java Guide
基本功概念与常识Java和C++的区别
都是面向对象的语言,都支持封装、继承和多态
Java 不提供指针来直接访问内存,程序内存更加安全
Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存
在 C 语言中,字符串或字符数组最后都会有一个额外的字符'\0'来表示结束。但是,Java 语言中没有结束符这一概念。 参考博文
JDK、JRE、JVM
JDK 是 Java Development Kit 缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。
JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM ...
Leetcode刷题——哈希表&nSum专题
参考刷题指南GitHub-CyC2018/Leetcode题解之哈希表
1. 两数之和暴力遍历法:
123456789101112class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ return new int[]{i,j}; } } } return new int[]{}; }}
哈希表法,令元素值作为key映射到相应的作为value的索引,当元素值这个key存在且不是num[i] ...