自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (2)
  • 收藏
  • 关注

原创 PLSQL Oracle存储过程(实例分析)

1、结构.spc是包头文件 .bdy是包体文件 spc是bdy的声明spc文件实例:不带返回值的 PROCEDURE sp_gen_buylease_report ( i_operator IN pt.toper, i_address IN pt.taddress, i_func_no IN pt.t...

2019-10-09 16:49:46 954

原创 ORACLE执行计划

PLSQL执行计划F5一、Description 缩进判断:缩进最多执行 缩进相同的最上边先执行 通过箭头查看执行的顺序二、其中 TABLE ACCESS FULL是一种执行表访问的方式表的访问方式:1、TABLE ACCESS FULL 全表扫描 这种扫描类型从表中读取所有行,并过滤掉不符合选择条件的行。在全表扫描期间,扫描处于高水位标记下的表中的所有...

2020-04-14 16:58:43 551

原创 ORACLE :row_number() over (partition by order by )

1、格式row_number() over(partition by 列名1 order by 列名2 desc)2、解析表示根据列名1分组,然后在分组内部根据列名2排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计...

2019-10-09 10:37:46 676

原创 DQL、DML、DDL、DCL的概念与区别

SQL(Structure Query Language)语言是数据库的核心语言。SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称SEQUEL。1976年-----IBM公司的Sanjase研究所在研制RDBMS SYSTEM R时改为SQL。1979年-----ORACLE公司发表第一个基于SQL的商业化RDBMS...

2019-10-08 13:20:15 159

转载

BST树即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:BST树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;...

2019-09-20 11:12:43 87

原创 漫长刷题路:扑克牌顺子

从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的。 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。(大小王最多4张)思路:1、首先我们应该关注的是大小王等特殊字符,由于可以当成任意的数字,所有当成0处理。2、把数组排序,再统计数组中0的个数3、统计排序之后的数组中相邻数字之间的空缺总数。4、数组中的非0...

2019-09-12 17:35:03 84

原创 漫长刷题路:去除重复

Given nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.It doesn't matter what values are set...

2019-09-12 15:45:11 180

原创 漫长刷题路:twoSum系列

一、TwoSum返回下标Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0,1].(返回数组下标)思路:用哈希表降低时间复杂度class Solution{public: vector<int> twoSum(vector<in...

2019-09-12 15:05:59 123

原创 C++新特性

类型推导 Auto利用模板可以将不同类型的变量相加,之后用auto接收结果进行类型推导遍历容器时,原先的通过迭代器遍历现在可以通过一种新的方式来遍历空指针 nullptr之前的NULL空指针实质上是一个int型的0,现在C++11新增nullptr_t空值类型,它只有一个空值常量nullptrtypedef decltype(nullptr) null...

2019-09-11 15:25:08 207

转载 Guava官方文档-RateLimiter类

RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire()会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateL...

2019-09-03 15:36:03 104

原创 ORACLE:左连接 右连接 全连接 (+)

现在有A表 ,数据如下:现在有B表 ,数据如下:(1)左外连接(以左表为主,左表完全显示)(2)右外连接(以右表为主,右表完全显示)(3)全连接(4)(+)哪个表有加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接。...

2019-08-08 14:55:50 1951

原创 排序算法之冒泡排序

 void BubbleSort(int *arr,int len){ int i,j,tmp; bool flg; for(i = 0;i &lt; len-1;i++) { for(int j = 0;j &lt; len-1-i;j++) { if(arr[j] &gt; arr[j+1]) { tmp = arr[j]; arr[j...

2018-12-02 17:55:14 110

原创 排序算法之归并排序

 void Merge(int *arr,int *tmp,int start,int mid,int end){ int left = start; int right = mid+1; int index = start; while((left &lt; mid+1) &amp;&amp; (right &lt; end+1))//左右都不越界 { if(arr[...

2018-12-02 17:31:58 140

原创 线程安全的单例模式

线程安全的单例模式懒汉模式第一次调用GetInstance时会实例化对象,此后返回的都是该对象template&lt;class T&gt;class SingleTon{public: static T* GetInstance(){}private: SingleTon(){} SingleTon(const SingleTon &amp;){} SingleTo...

2018-12-02 16:30:16 269

原创 两个队列实现一个栈&两个栈实现一个队列

两个队列实现一个栈 //两队列实现一个栈class NewStack{public: void in(int c) { q1.push(c); } int pop() { int len1 = q1.size(); int c; for(int i = 0;i &lt; len1 - 1;i++) { q2.push(q1.front()...

2018-12-02 15:57:05 193

原创 排序算法之希尔排序

 void Shell(int *arr,int len,int gap){ int tmp,i,j; for(i = gap;i &lt;len;i++) { tmp = arr[gap]; for(j = i-gap;j &gt;= 0;j = j-gap) { if(arr[j] &lt;= tmp) { break; } els...

2018-12-01 17:13:33 125

原创 排序算法之堆排序

      void Adjust(int *arr,int start,int end){ int tmp = arr[start]; for(int i = 2*start+1;i &lt;= end;i = 2*i+1) { if((i+1 &lt;= end) &amp;&amp; (arr[i] &lt; arr[i+1])) { i...

2018-12-01 16:41:08 89

原创 客户端client 突然断电了,那么服务器如何快速的知道呢

(1)使用定时器(适合有数据流动的情况)。(2)使用socket选项SO_KEEPALIVE(适合没有数据流动的情况)。心跳包的发送,通常有两种技术:心跳包技术:心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。方法1:应用层自己实...

2018-11-22 00:14:50 2343

原创 线程与进程

线程产生的原因然而为使程序能并发执行,系统还必须进行以下的一系列操作:(1)创建进程。系统在创建进程时,必须为之分配其所必需的、除处理机以外的所有资源。如内存空间、I/0设备以及建立相应的PCB。(2)撤消进程。系统在撤消进程时,又必须先对这些资源进行回收操作,然后再撤消PCB。(3)进程切换。在对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中进程的CPU环境,为此需花...

2018-11-22 00:12:06 191

原创 i++与++i

i++与++i 谁的效率的高?表面上:++i就是i = i+1i++也是i =i+1,但是表达式的值是i+1之前的副本,由于要保存副本,因此效率低一点点。但是对于C++内置类型而言,大部分编译器会进行优化,因此效率没有什么区别,但是自定义类型上就未必有优化。汇编上:执行数目一样,效率没差别重载上://i++int operator(int){ i...

2018-11-21 22:41:39 124

原创 数据库三范式

1NF(列不可再分)        1NF:原子性,字段不可以再分2NF(不存在部分依赖)非键字段必须依赖于键字段         2NF:唯一性,可以把多种数据保存在同一张表中,即一张表只能保存“一种”数据。               Eg:(学号,姓名,年龄,课程名称,成绩,学分)这个表就是不符合2NF,因为它保存了多种数据类型。       存在一定的问题:    ...

2018-11-21 21:32:28 125

原创 Linux日志文件存放目录

RedHat Linux常见的日志文件详述如下◆/var/log/boot.log该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。◆/var/log/cron该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作是cron派生出一个调度进程的常见情况。REPLACE(替换...

2018-11-21 21:09:35 7623

转载 C++ STL中常见容器的时间复杂度

map, set, multimap, and multiset上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查看:O(logN)删除:O(logN)hash_map, hash_set, hash_multimap, and hash_multiset上述四种容器采用哈希表实现,不同操作的时间复杂度为:插入:O(1),...

2018-11-21 21:03:46 2111

原创 如何修改int类型的第二个字节

如何修改int类型的第二个字节?思路:重点在于分离int的四个字节,取出第二个字节,可以借助memmove来实现,因为memmove更安全,原因参考上一篇博客。首先使用memmove将int内存中的内容拷贝到字符数粗中,然后在数组中修改某个字节的值,然后再把数组中的值返回到int中。#include&lt;string.h&gt;#include&lt;iostream&gt;usi...

2018-11-21 21:02:27 663

原创 memmove和memcpy的区别

memcpy和memmove都是C语言的库函数,在头文件string.h中,作用是内存拷贝,原型如下“它们的作用都是内存拷贝,唯一的区别是,当内存发生局部重叠时,memmove保证了拷贝的结果是正确的,但是memcopy不一定是正确的。但是memcpy比memmove速度快。memcpymemcpy函数从src内存中拷贝了count字节到dest内存区域,但是src和dest的内存...

2018-11-21 20:13:05 3745

原创 C++默认函数与深浅拷贝

形参与实参形参:是函数声明时的参数,只说明参数名和类型,不是实际的参数,不能真正使用。实参:运行时传给函数的参数,是实际的变量,形参在这时真正地被分配空间,并且赋值了实参的值。一个函数的实参在内存中有自己固定的内存,直到函数执行结束才释放内存。而形参没有固定的内存,只在调用函数的时候有一个虚拟内存,等调用完毕就不再有内存。他们的关系是函数调用的时候,实参把值传给形参构造函数(1...

2018-11-19 19:49:52 134

原创 僵尸进程和孤儿进程

进程状态程序运行必须加载到内存中,当有过多的就绪态或者阻塞态进程在内存中没有运行,因为内存很小,有可能内存不足。系统需要把他们一定到内存外磁盘中,称为挂起状态。就绪状态的进程挂起就是挂起就绪状态,阻塞进程挂起就是阻塞挂起状态。每个进程的产生都有自己的唯一的ID号(pid),并且附带有一个它父进程的ID号(ppid)。进程死亡时,ID被回收。进程间靠优先级获得CPU资源,时间片段轮换...

2018-11-19 14:46:05 189

原创 TCP全解

网络模型TCP/IP协议族TCP协议简介TCP是一个面向连接的传输层协议,虽然TCP不属于ISO制定的协议集,但由于其在商业界和工业界的成功应用,它已成为事实上的网络标准,广泛应用于各种网络主机间的通信。作为一个面向连接的传输层协议,TCP的目标是为用户提供可靠的端到端连接,保证信息有序无误的传输。它除了提供基本的数据传输功能外,还为保证可靠性采用了数据编号、校验和计算...

2018-11-18 23:18:46 326

原创 TCP的流式服务与拆包粘包

TCP的流式服务客户端发送字节流时,tcp会保证服务器端按照顺序接受到全部的字节流,其他诸如数据包的大小等,tcp协议对我们来说是透明的,我们可以完全不考虑。我们发送数据和接受数据只用send或者recv函数,只需要关注其返回值,直到发送了多少数据或者接收到多少数据。其他的通通不管,在TCP通讯中,我们也不需要关心数据包的大小,个数,我们只需要在客户端建立一个缓冲区不断发送,在服务器端建立一个...

2018-11-18 17:29:49 743 4

转载 关于Linux TCP接收缓存以及接收窗口的一个细节解析

TCP窗口 关于TCP的接收缓存以及通告窗口,一般而言懂TCP的都能说出个大概,但是涉及到细节的话可能理解就不那么深入了。由于我最近的工作与TCP有关,顺便又想起了很久之前遇到的一个问题:明明在接收端有8192字节的接收缓存,为什么收了不到8000字节的数据就ZeroWindow了呢?当时我的解决方案是直接扩大接收缓存完事,然后就没有然后了。后来深挖了一下细节,发...

2018-11-18 17:02:01 1112

原创 Linux常用命令(持续更新......)

(1)查看80端口是否被占用    :netstat -anp|grep 80 (2)统计80端口的连接数:netstat -nat|grep -i "80"|wc -l(3)netstat命令各个参数说明如下:  -t : 指明显示TCP端口  -u : 指明显示UDP端口  -l : 仅显示监听套接字  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。 ...

2018-11-18 16:34:10 388

原创 send/recv与socket

send函数不论是客户端还是服务器端应用程序都用send函数来向TCP连接的另一端发送数据。客户端程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。当调用send函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区,如果len大于发送缓冲区的长度,该函数返回错误SOCKET_ERROR;如果len &lt;= s的发送缓冲区,那么s...

2018-11-18 16:31:34 391

原创 一致性哈希算法

为什么要用一致性哈希算法?首先我们先介绍哈希算法!哈希算法假如有三台服务器编号0、1,2,有三张图片分别是S0、S1、S2,现在为了分担缓存压力,想要三张图片均匀的缓存到三台服务器上。现在将缓存下来的键进行哈希算法:但是哈希算法也有缺点,假如现在增加服务器,从原来的的三台变成了四台,情况就会改变就是因为哈希算法的缺陷很大,所以有了一致性哈希算法一致性哈希算法...

2018-11-17 17:57:01 148

原创 解析mmap

文件映射简易图mmap图解mmap详解(一)进程启动映射过程,并且在虚拟内存空间为映射创建虚拟映射区域    1、进程调用库函数mmap    2、在当前进程的虚拟地址空间中寻找一段满足要求的空闲的连续的虚拟地址    3、为这个虚拟地址区分配一个vm_area_struct数据结构,并且对其进行初始化    4、将新建的虚拟区结构插进进程的虚拟地址区域链表或者...

2018-11-17 16:32:58 177

原创 哈希表全解

哈希表定义哈希表(Hash table),是根据关键码值(Key - value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。HashTable(key,value)就是把key通过一个固定的算法即哈希函数(散列函数)转换成一个整型数字,然后就将数字对数组的长度取余,把这个结果值作为...

2018-11-17 00:56:59 245

原创 LeetCode 2.1.8 3Sum

问题描述:Given an array S of n integers, are there elements a; b; c in S such that a + b + c = 0? Find all uniquetriplets in the array which gives the sum of zero.Note:• Elements in a triplet (a; b; c)...

2018-11-16 23:19:06 107

原创 LeetCode 2.1.7 Two Sum

问题描述:给定一个整数, 从里面找出两个数, 其和等于一个指定的整数. 程序返回这两个数在数组中的位置( 数组下标从1开始 ) , 且位置小的在前面. 问题分析:一开始想的定义两个指针p1和p2,分别指向数组的开始和结尾,num[p1] + num[p2]与key的大小,相等则返回,如果key小,p2--,否则p1++,循环条件是p1 &lt; p2。但是现在有一种更好的方法就是用哈希表存储,...

2018-11-16 22:34:07 75

原创 map与unordered_map的区别

内部的原理实现:map:【头文件为#include&lt;map&gt;】map内部是一颗红黑树(非严格平衡二叉树),红黑树有自动排序的功能,所以map内部的所有元素都是有序的,红黑树的每一个节点都代表这map的一个元素。因此对map进行插入、删除、查找等操作都是相当于对红黑树进行操作。最后根据树的中序遍历可以将键值按照大小顺序遍历出来。unordered_map:【头文件#include...

2018-11-16 20:47:05 3824

原创 详解TCP三次握手与四次挥手

一、TCP三次握手和socket详解1.TCP连接第一次:cli发送SYN包(SYN = j)到ser,并且进入SYN_SEND状态,等待服务器确认;第二次:ser收到SYN包,必须确认客户的SYN(ACK = j+1),同事自己也发送一个SYN包(SYN = k),即SYN+ACK,此时ser进入SYN_RECV状态;第三次:cli收到ser的SYN+ACK包,向ser发送确认包...

2018-11-15 22:50:42 296

原创 TCP与UDP编程区别

一、TCP编程流程(1)TCP服务器编程流程:(2)TCP客户端编程流程注意:a. 默认情况下(不改变socket选项)。当你调用close( or closesocket,下面说close不再反复)时。假设发送缓冲中还有数据,TCP会继续把数据发送完。b. 发送了FIN仅仅是表示这端不能继续发送数据(应用层不能再调用send发送),可是还能够接收数据。c. 应用层怎样...

2018-11-15 22:25:01 350

网上投票系统.zip

利用C语言和MySQL技术,在Linux平台下开发的网上投票系统,自己部署httpd服务器,进行投票计票。利用到多线程,简易版为最爱的明星投票吧!

2019-10-09

VC++6.0助手.zip

vc++的番茄助手,亲测有用!!!直接就是破解版 什么都不用干 解压就好

2019-10-09

空空如也

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

TA关注的人

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