美文网首页
知识补全

知识补全

作者: 海绵宝宝LLL | 来源:发表于2019-03-04 20:35 被阅读0次

主要记录自己遗漏或者遗忘的知识点,更新ing。

数据库存储过程简介

SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

生成可执行文件

假设C源文件为file.c,且在/tmp目录下,则在命令行下依次执行:

cd /tmp

gcc -o file file.c

多线程访问hashmap遇到的问题

并发环境下的rehash过程可能会带来循环链表,导致死循环致使线程挂掉。

因此并发环境下,建议使用Java.util.concurrent包中的ConcurrentHashMap以保证线程安全。

至于HashTable,它并未使用分段锁,而是锁住整个数组,高并发环境下效率非常的低,会导致大量线程等待。

同样的,Synchronized关键字、Lock性能都不如分段锁实现的ConcurrentHashMap。

FLOOD攻击

1.SYN FLOOD攻击

SYN-FLOOD是一种常见的DDos攻击,拒绝服务攻击。通过网络服务所在的端口发送大量伪造原地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻止其他用户进行访问。

它的数据报特征是大量syn包,并且缺少最后一步的ACK回复。

原理:攻击者首先伪造地址,对服务器发起syn请求,服务器回应syn+ACK,而真实的IP会认为我没有发送请求,不做回应,而服务端没有收到回应,服务器就不知道是否发送成功,默认情况下重试5次 syn_retries,这样的话,对于服务器内存和带宽有很大的消耗。

2.解决SYN FLOOD方法

(1).无效连接监控

不停监视半开连接和不活动连接,当半开连接数和不活动连接数到达一定值时候,就释放系统资源。

伤敌1000,自损8000

(2).延缓TCB方法

SYN FLOOD的关键是利用了,syn数据报一到,系统就分配TCB资源。

那么我们有两种方法资源问题

Syn cache

这种技术在收到Syn时不急着分配TCB,而是先回应一个ACK报文,并在一个专用的HASH表中保存这种连接,直到收到正确的ACK,才分配TCB。

Syn Cookie

用一种特殊的算法生成sequence number,算法考虑到对方的信息和己方信息,收到对方的ACK报文后,验证之后才决定是否生成TCB

TCP和UDP对应的各种应用层协议和应用如下图示:

CMS收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。它而非常符合在注重用户体验的应用上使用。

从名字中的Mark Sweep这两个词可以看出,CMS收集器是一种 “标记-清除”算法实现的。

主要优点:并发收集、低停顿。但是它有下面三个明显的缺点:

对CPU资源敏感;

无法处理浮动垃圾;

它使用的回收算法-“标记-清除”算法会导致收集结束时会有大量空间碎片产生。

G1收集器

G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.

G1收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的Region(这也就是它的名字Garbage-First的由来)。这种使用Region划分内存空间以及有优先级的区域回收方式,保证了GF收集器在有限时间内可以尽可能高的收集效率(把内存化整为零)。

被视为JDK1.7中HotSpot虚拟机的一个重要进化特征。它具备一下特点:

并行与并发

- 分代收集

- 空间整合

- 可预测的停顿

DNS解析完整流程

第一步:本地客户机提出域名解析请求,查找本地HOST文件后将该请求发送给本地的域名服务器。

第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

第三步:如果本地DNS缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。

第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。

第五步:重复第四步,直到找到正确的纪录。

第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

CAS

CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 -- 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。在 Java 中,Java 并没有直接实现 CAS,CAS 相关的实现是通过 C++ 内联汇编的形式实现的。Java 代码需通过 JNI 才能调用。

CAS核心代码

if (A==V)

    {

      V = B

      return B;

    } 

     else

      return V;

相关文章

  • 知识补全

    主要记录自己遗漏或者遗忘的知识点,更新ing。 数据库存储过程简介 SQL语句需要先编译然后执行,而存储过程(St...

  • 论文精读-Knowledge Transfer for Out-

    IJCAI 2017文章简介:知识库补全(Knowledge base completion)预测知识库中缺少的信...

  • 详解IntelliJ IDEA代码补全

    IntelliJ IDEA 代码补全 代码补全的方式有: Basic completion 基本补全 :Ctrl+...

  • Android知识学习

    Java知识储备 本知识点不做重点讲解:对于有基础的同学推荐看《Java编程思想》,巩固基础,查漏补全,了解并熟悉...

  • 我是如何自学 Android 的?

    1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看《Java编程思想》,巩固基础,查漏补全,了...

  • 如何自学Android

    1. Java知识储备 本知识点不做重点讲解:对于有基础的同学推荐看《Java编程思想》,巩固基础,查漏补全,了解...

  • CentOS7_热键

    持续更新中 1. 双击【Tab】 具有命令补全和目录补齐功能 指令补全 目录补全 指令参数补全 2.【Ctrl】+...

  • 线程知识补全(大厂必问)

    ThreadLocal定义 线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。ThreadLocal可以让...

  • 并发基础知识补全和CAS基本原理

    并发基础知识补全 Callable、Future和FutureTask 在前文(线程基础、线程之间的共享与协作)中...

  • Android学习资料

    Java知识储备本知识点不做重点讲解:对于有基础的同学推荐看《Java编程思想》,巩固基础,查漏补全,了解并熟悉更...

网友评论

      本文标题:知识补全

      本文链接:https://www.haomeiwen.com/subject/vnrwuqtx.html