自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 未完待续。。。。

当一个目标站点被用户去访问时间,在渲染Html页面的过程中,出现了一些没有预期到的脚本指令,然后就会执行这些脚本指令,产生XSS的攻击。涉及三者:用户 攻击者 服务器攻击者通过各种各样的办法实现,当用户在访问一个页面的时候,插入一些自己的脚本,让用户在访问这个页面的时候就会执行那个被注入的脚本,攻击者通过注入的脚本执行,从而获取用户的一些私密信息,并且发送到自己的网站上,这就是跨站脚本攻击。而在一个不足够完美的web服务器上,漏洞是不可避免的,黑客就是在不断去寻找这些漏洞,然后注入一些脚本病毒。那么通

2021-10-12 17:11:14 1343

原创 编程珠玑----exit/return

exit() 是整个程序的结束。exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return() 是某个函数的结束,并返回结果。1.return返回函数值,是关键字; exit 是一个函数。2.return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。3.return是函数的退出(返回);exit是进程的退出。4.return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。5.return用于

2021-10-07 18:54:14 176

原创 SQL----数据库连接池问题

对于共享资源,有一个很著名的设计模式:资源池(resource pool)。该模式正是为解决资源频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个了,使用完毕后再放回去。我们可以通过设定连接池最大数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库连接使用数量,使用情况,为系统开发,测试以及性能调整提供依据。连接池的相关问题分析:1、并发问题。为了使连接管

2021-10-07 18:52:39 960

原创 Linux----关于Ubuntu镜像代号

4.10 Warty Warthog(长疣的疣猪)5.04 Hoary Hedgehog(灰白的刺猬)5.10 Breezy Badger(活泼的獾)6.06(LTS) Dapper Drake(整洁的公鸭)6.10 Edgy Eft(急躁的水蜥)7.04 Feisty Fawn(坏脾气的小鹿)7.10 Gutsy Gibbon(勇敢的长臂猿)8.04(LTS) Hardy Heron(耐寒的苍鹭)8.10 Intrepid Ibex (勇敢的野山羊)9.04 Jaunty Jackalo

2021-10-07 18:50:15 221

原创 ML----PCA主成分分析中的数据规范化

1.PCA中,为什么先对数据进行规范化主成分分析是一种常见的无监督学习方法,这一方法的作用在于可利用正交变换把由线性相关变量表示的观测数据转换为由少数几个线性无关变量表示的数据,而这个线性无关的变量就称之为主成分。PCA(主成分分析)所对应的数学理论是SVD(矩阵的奇异值分解)。而奇异值分解本身是完全不需要对矩阵中的元素做标准化或者去中心化的。但是对于机器学习,我们通常会对矩阵(也就是数据)的每一列先进行标准化。PCA通常是用于高维数据的降维,它可以将原来高维的数据投影到某个低维的空间上并使得其方差

2021-10-07 18:48:55 1390

原创 ML----感知机算法

1.编程实现感知机学习算法,并设计简单的线性可分数据 集和线性不可分数据集,观察优化过程# Perception感知机def sign(x): if x > 0: return 1 else: return -1# 训练数据1features = [[1, 2], [3, 3], [2, 1], [5, 2]]label = [1, 1, -1, -1]w = [0, 0]b = 0for i in range(9): flag

2021-10-07 18:47:41 195

原创 Linux----SignalReapChild

#define _GUN_SOURCE#include <string.h>#include <signal.h>#include <time.h>#include <sys/wait.h>#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>

2021-10-07 18:41:44 91

原创 Linux----信号阻塞代码

信号阻塞的代码片段//volatile是禁止CPU缓存,sig_atomic_t是一个原子操作的结构体//所以这里定义的静态全局变量gotSigquit是一个不会被CPU缓存的进行原子操作的全局变量static volatile sig_atomic_t gotSigquit = 0;#define errExit(msg) do{ preeor(msg); errExit(EXIT_FAILURE); }while(0)static void handler(int si

2021-10-07 18:39:26 158

原创 Linux----信号的阻塞

1. sigaction函数#include <signal.h>int sigaction(int signum, struct sigaction *act, struct sigaction * oldact) Return: 0 for OK, -1 on errorhandler_t *Signal(int signum, handler_t *handler){ struct sigaction action, old_action; acti

2021-10-07 18:37:59 188

原创 Linux----信号处理函数

//sigHandler函数处理一个信号#include <stdio.h>#include <unistd.h>#include <errno.h>static void sigHandler(int sig){ printf("Ouch!\n"); signal(SIGINT, SIG_DFL); /* restore setting for SIGINT */}int main(int argc, char *argv[]){

2021-10-07 18:37:04 451

原创 Linux----Signals

什么是信号?​ 其实在之前学习的任何一种编程结构当中,可以这样子去解释:当你在看到代码的时候你完全是可以推测这段代码的执行时序的,因为无非就是一些循环,或者选择这样子的语句存在于代码中。即便是学习了fork()或者线程库的一些关于条件变量的那些并发模型代码之后,在进程或者线程之间的代码执行时序仍然是可以预测的!这可以简单的理解为”伪并发“。​ 假设现在你在编写一个服务器代码,而用户在终端输入ctrl+c之后,会退出当前的进程。那么这种情况下,作为服务端而言是无法揣测客户端,客户的退出行为会在何时发生的!

2021-10-07 18:35:45 121

原创 Linux----进程组

ProcessGroup​ Linux系统一般都是作为服务器而存在,对于Linux系统而言,图形化界面不过是一个内核之外给“普通用户”增加使用体验感的一个道“道具”而已,这个“道具”和Windows系统一样,对于一个小白而言上手即可使用,只不过Windows的图形界面是内核之内的,而Linux系统的图新界面是内核之外的。由于设计的初衷不同,作为服务器的Linux系统,使用图形化界面是没有任何对服务器性能提升的作用的,所以摒弃图形化界面一个Linux使用者所要秉持的原则所以很多时候对Linux系统的使用常

2021-10-06 21:29:04 445

原创 Linux----临界区解释

关于临界区的一个简单的解释可以是这样子的:由一个大型的进程派生两个或者多个线程。假设有两个协同工作的线程存在,也许这两个线程是为了共同处理一个大型的文件,那么这两个线程极大程度上会共享一些全局变量的。但是这就会引发一系列不可避免要处理的问题出来!我们知道线程在执行必要的代码片段时,也许会获取并修改全局变量,(当然假设中会让这两个线程拥有类似的代码片段),线程的做法是:它会先把全局变量保存在自己的寄存器中(这个寄存器是线程在执行自己的代码片段时,CPU合理分配给它的),然后修改完全局变量之后再将寄存器中修改

2021-10-06 21:26:28 1774

原创 Linux----下查看指定目录的占存脚本

直接上脚本:#!/bin/bashDir=$1echo "需监控目录:"echo "$Dir"echo "$Dir目录存储写入DirSize.txt文件"du -s $Dir > $Dir/DirSize.txtecho "对文件赋权"chmod 777 $Dir/DirSize.txtecho "查看文件内容"cat $Dir/DirSize.txtecho "awk获取目录存储大小"size=`awk -F ' ' '{print $1} ' $Dir/DirSiz

2021-02-22 12:43:15 140

原创 DataStructure----二叉排序树(详细)

/*********************************************************************测试数据:二叉排序树为11 8 16 7 9 15 17 二叉排序树为11 8 16 7 10 9 15 17 11 11 / \ / \ 8 16

2020-10-10 23:32:08 251

原创 DataStructure----后续非递归(双栈)

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef char datatype;/*定义二叉树的数据结构*/typedef struct BiTreeNode{ datatype data; struct BiTreeNode *left; struct BiTreeNode *right;}BiTreeNode,*BiTree;/*定义一个用于非递归存储节点—栈的数据结构*/

2020-10-10 23:31:17 168

原创 DataStructure----中序非递归(完整算法)

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef char datatype;/*定义二叉树的数据结构*/typedef struct BiTreeNode{ datatype data; struct BiTreeNode *left; struct BiTreeNode *right;}BiTreeNode,*BiTree;/*定义一个用于非递归存储节点—栈的数据结构*/

2020-10-10 23:30:14 303

原创 DataStructure----先序非递归(详细)

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef char datatype;/*定义二叉树的数据结构*/typedef struct BiTreeNode{ datatype data; struct BiTreeNode *left; struct BiTreeNode *right;}BiTreeNode,*BiTree;/*定义一个用于非递归存储节点—栈的数据结构*/

2020-10-10 23:29:25 269

原创 DataStructure----二叉树递归算法

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100;/*二叉树的数据结构定义*/typedef struct BiTreeNode{ char data; struct BiTreeNode *left; struct BiTreeNode *right;}BiTreeNode,*BiTree;/*二叉树的建立--按照先序方式建立--录入数据--插入*/void CreateB

2020-10-10 17:31:28 230

原创 Linux----多线程全局变量互斥访问的几种机制简述

写在前面:为什么写这篇文章,本人开始对这三个量的理解非常之艰辛,啃了很久的《现代操作系统》,也看了很多博客,最后略有体会。这篇文章,是基于那本砖头书以及一些博客,加个人总结理解,希望对各位小伙伴有所帮助。(主要是怕我后面自己忘记了*-*)何为互斥访问?简而言之,当两个进程对一块共享内存区进行访问的时候,在A进入内存区的时候,B是不可以也不允许进入的,因为这样会引起不必要的混乱。那么如何防止这样的“抢进内存区”现象发生,我们需要互斥。机制1 互斥锁:我们知道进程间通信一个简单的解决办法就是使用互斥锁

2020-06-25 09:19:25 1957 2

原创 Linux----pthraed_join和pthread_detach看得懂的解释

说在前面:这篇解释文章,是关于上一篇tcp套接字实现的解释说明文章,同样也希望对你有一丝帮助。废话不多说,进入正文。1.关于join①join是三种同步线程的方式之一。另外两种分别是互斥锁(mutex)和条件变量(condition variable)。(这里的进程间通信问题,之后会给个传送门的。)②调用pthread_join()将阻塞自己,一直到要等待加入的线程运行结束。可以用pthread_join()获取线程的返回值。③一个线程对应一个pthread_join()调用,对同一个线程进行多次

2020-06-25 09:07:25 177

原创 Linux----多客户端套接字实验之线程响应

套接字原理讲解学习过计算机网络的同学,知道三次握手和四次挥手的同学可以略过下面的解释。何为套接字,你让一个人找到你家在哪,那么需要的就是地址,何为地址(哪个省 哪个市 哪个小区 哪一栋楼 哪个门牌号)。那么计算机网络通信世界中的套接字就是如此,这里记住它就是一个IP地址+端口号。不深究其原理,懂的意思就行,深究清出门左转,有更好的blog等着大家发掘。** 1.服务端的工作原理解释**①服务器端首先使用socket()函数创建套接字描述符,使用的是8000端口号监听以及自己的环回地址作为固定的服务端

2020-06-25 08:57:37 189

原创 DataStructure----直接插入法过程

加入一组测试数据:有点ugly的对齐序号i0 ----1 ---- 2 ---- 3 — 4 — 5 — 6 — 7 — 8 — 9 ---- 10初始为:哨兵 – 75 – 88 – 68 – 92 – 88 – 62 – 77 – 96 – 80 – 75(开始哨兵为空,即什么东西都没有)序号i 0 1 ...

2020-04-13 00:31:25 184

原创 DataStructure----解释二叉排序树

两组测试数据:#include <stdio.h>#include <stdlib.h>#define ENDKEY 0typedef int KeyType;typedef struct node{ KeyType key ; /*关键字的值*/ struct node *lchild,*rchild; /...

2020-04-10 17:18:12 152

原创 计算机小故事杂谈

1⃣️业界通常认为我国第一封电子邮件是北京计算机应用技术研究所研究员钱天白先生于1987年9月14日发出的。亦有称9月20日发出的。现从邮件记录来看,发出时间为9月14日,收到时间为9月20日,当时竟然走了6天“1987年9月,CANET在北京计算机应用技术研究所内正式建成中国第一个国际互联网电子邮件节点,并于9月14日发出了中国第一封电子邮件:“Across the Great Wall we...

2020-03-22 00:52:37 597

原创 Google浏览器搜索简述

说太专业了不懂。先简单的做一下比喻吧。我们的网页们在网上就像现实世界的一个个地址里的人家,但是要数字化的访问,可以把地址转换为编号,DNS就是把地址转换为统一的编号的装置。(至于Domain Name System域名系统的细致解释,之后陆续更新)对于搜索引擎而言:搜索引擎每过一段时间,就回去访问一个个人家,如果主人愿意(robots.txt里面写的),就把人家家里的家具统计一下,做好一个关键词...

2020-03-22 00:41:30 293

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除