自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Oracle创建用户、角色、授权、建表

https://www.cnblogs.com/roger112/p/7685307.html

2021-10-24 20:25:19 298

原创 文件IO

简介文件IO://常用五大函数:open、read、write、lseek、close,称之为不带缓存的I/O不带缓存:指的是每个read和write都调用内核中的一个系统调用

2020-03-03 16:38:35 190

原创 socket网络编程之常用地址API

通用socket地址  socket网络编程接口中表示socket地址的是结构体sockaddr,定义:  sa_family成员是地址族类型(sa_family_t)的变量。地址族类型通常与协议族类型对应。常见的协议族(protocol family,也称domain)和对应的地址族如下:  宏PF_*和AF_*都定义在bits/socket.h头文件中,且后者与前者有完全相同的值,所...

2020-01-03 21:38:29 361

转载 MySQL之group_concat函数

2019-12-30 16:17:42 104

原创 跨库分页

一、需求缘起分页需求互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息(2)京东下单过多时,拉取第N页订单(3)浏览58同城,查看第N页帖子这些业务场景对应的消息表,订单表,帖子表分页拉取需求有这样一些特点:(1)有一个业务主键id, 例如msg_id, order_id, tiezi_id(2)分页排序是按照非业务主键id来排序的,业务中经常按照时间...

2019-12-27 21:37:18 98

原创 kettle表数据比较

使用合并记录组件:其中tab_in_1和tab_in_2代表两个数据源,合并记录:新旧数据源可随意指定,获取需要对比的字段此处为了对比将比较记录先放在file中identical:比较的所有字段相同deleted:旧字段数据(旧数据源表有,新数据源表没有)new:新字段数据(旧数据源表没有的,新数据源表有)也可以再加一个switch/case组件,将对应的记录分开存放:...

2019-12-26 20:29:07 6995 2

原创 远程(ssh)连接docker里面的容器系统(ubuntu)

一般登陆容器需要在宿主机执行如下命令docker exec -it xxxx /bin/bash才能进入到容器内。下面介绍怎么通过远程直接登陆docker内的容器:宿主机系统为centos7。首先:下载ubuntu镜像//直接下载最新的就行docker pull ubuntu启动容器:其中8888为空闲的宿主机端口,22为容器的ssh端口docker run -d -nam...

2019-12-23 17:46:07 2116

原创 socket之创建、命名、监听、连接、关闭

  创建socket时,指定了地址族,但是并未指定使用该地址族中的那个具体socket地址。将一个socket与socket地址绑定称为给socket命名。在服务器程序中,我们通常要命名socket,因为只有命名后客户端才能知道该如何连接它。客户端通常不需要命名socket,而是采用匿名方式,即使用操作系统自动分配的socket地址。  命名的socket的系统调用是bind,定义如下:  ...

2019-12-18 21:41:15 1998

原创 kettle表连接解决单片表和分片表联合查询只能查到相同分片上的数据

需求:select a.CHANNEL_ID CHANNEL_ID,a.serv_id count_num,sum(b.AMOUNT-b.PRESENT_AMOUNT) amount from AGENT_ADSL_CL a , acct_item_1100 b where a.serv_id = b.prod_inst_id;其中AGENT_ADSL_CL为单片表,放在29分片上,acct...

2019-12-14 11:17:58 748

原创 kettle实现循环方法二(不使用js)

需求循环取结果集中的一行,再根据单个结果进行处理此处实例:从test库取id字段结果集,循环存储到txt文件中方法一(使用js):https://blog.csdn.net/weixin_44135544/article/details/103498124前提test表数据:具体步骤首先,整个流程需要一个转换,一个作业1.set转换:用于获取需要循环的字段get:是一个表输...

2019-12-13 11:04:01 1461

原创 Docker容器和主机如何互相拷贝传输文件

docker cp :用于容器与主机之间的数据拷贝。语法docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATHOPTIONS说明:-L :保持源目标中的链接实例将主机./rlwrap-0.37.tar.gz拷贝到容器b6的/home/ora...

2019-12-12 10:53:57 98

原创 kettle循环取结果集进行处理方法一(使用js)

需求循环取结果集中的一行,再根据单个结果进行处理此处实例:从test库取id字段结果集,存储(id,2 x id)到set_value表中前提test表:set_value表:具体步骤第一步:新建转换get_id_rows:第二步:新建作业:按图所示连接各个组件第一个js:var prevRow=previous_result.getRows(); # 获取上一步...

2019-12-11 19:38:29 6438 5

原创 创建socket

创建socket  UNIX/linux的一个哲学是:所有东西都是文件。socket就是可读、可写、可控制、可关闭的文件描述符。  创建socket的API:  domain:告诉系统使用哪个底层协议。例如对于TCP/IP协议族而言,为AF_INET或AF_INET6。  type:指定服务类型。主要有SOCK_STREAM服务(流服务,对TCP/IP协议族而言表示传输层使用TCP协议)...

2019-12-09 17:19:59 436

原创 TCP详解之拥塞控制

概述  TCP模块还有一个重要任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是所谓的拥塞控制。  拥塞控制的四个部分:慢启动、拥塞避免、快速重传、快速恢复。拥塞控制算法在Linux下有多种实现,比如reno、vegas和cubic算法,他们部分或全部实现了上述四个部分。/proc/sys/net/ipv4/tcp_congestion_control文件指示机器...

2019-12-05 10:22:06 468

原创 TCP协议详解之带外数据

 ; 有些传输层协议具有带外数据的概念,用于迅速通告对方本端发生的重要事件。因此带外数据比普通数据有更高的优先级,它应该总是立即被发送,而不论发送缓冲区中是否有排队等待发送的普通数据。带外数据的传输可以使用一条独立的传输层连接,也可以映射到传输普通数据的连接中。 ; UDP没有实现带外数据传输,TCP也没有真正的带外数据。TCP是利用其头部中的紧急指针标志和紧急指针两个字段,给应用程序提供了一种...

2019-12-04 09:23:56 486

原创 TCP协议详解之交互数据流和成块数据流

  TCP报文段所携带的应用程序数据按照长度分为两种:交互数据和成块数据。  交互数据仅包含很少的字节。使用交互数据的应用程序或协议对实时性要求高。  成块数据的长度则通常为TCP报文段允许的最大数据长度。使用成块数据的应用程序对传输效率要求高。TCP交互数据流  客户端对服务器返回的数据所发送的确认报文段都不携带任何应用程序数据,而服务器每次发送的确认数据报都包含它需要发送的应用程序数据...

2019-12-03 16:56:08 286

原创 TCP协议详解之TCP复位报文段

  在某些特殊条件下,TCP连接的一端回向另一端发送携带RST标志的报文段,即复位报文段,以通知对方关闭连接或重新建立连接。访问不存在的端口  当客户程序访问一个不存在的端口时,目标主机将给他发送一个复位报文段。收到复位报文段的一端应该关闭连接或者重新连接,而不能回应这个复位报文段。异常终止连接  正常的终止方式:数据交换完成之后,一方给另一方发送结束报文段。  TCP提供了异常终止连接...

2019-12-02 09:33:09 204

原创 TCP协议详解之TCP连接的建立和关闭

三次握手和四次挥手  第一个TCP报文段包含SYN标志,因此它是一个同步报文段,即左边客户机向右边服务器发起连接请求。同时,该同步报文段包含一个ISN值为535734930的序号。  第二个TCP报文段也是同步报文段,表示服务器同意与客户机建立连接。同时它发送自己的ISN值为2159701207的序号,并对第一个同步报文段进行确认。确认值是535734931,即第一个同步报文段的序号值加一。...

2019-12-01 10:57:38 536

原创 大小端判断(使用联合)

大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。int checkSystem(){ union check { int i; char ch; } c; c.i = 1; return (c.ch == 1);//大端返...

2019-12-01 10:54:05 120

原创 TCP协议详解之TCP状态转移

状态转移综述  TCP连接的任意一端在任意时刻都处于某种状态,当前状态可以通过netsata命令查看。完整的状态转移图,描绘了所有的TCP状态以及可能的状态转换。  服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开。服务器一旦监听到某个连接请求(收到同步报文段),就将该连接放入内核等待队列中,并向客户端发送带SYN标志的确认报文段。此时该连...

2019-11-30 10:51:44 320

原创 TCP详解之TCP头部结构

TCP头部结构  TCP头部信息出现在每个TCP报文段,用于指定通信的源端端口,目的端口,管理TCP连接等。TCP固定头部结构  16位端口号:告知主机该报文段是来自哪里(源端端口)以及传给哪个上层协议或应用程序(目的端口)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号(所有知名端口号定义在/etc/services文件中)。  ...

2019-11-29 16:37:58 885

原创 IP协议详解之IPv6头部结构简介

  IPv6协议是网络层技术发展的必然趋势,因为它不仅解决了IPv4地址不够用的情况,还做了很大的改进,比如,增加了多播和流的功能,为网络上多媒体内容的质量提供精细的控制,引入自动配置功能,是的局域网管理更加方便,增加了专门的网络安全功能。IPv6固定头部结构  由40字节的固定头部和可变长的扩展头部组成。  4位版本号指定IP协议的版本。对于IPv6来说,其值是6。  8位.通信类型指...

2019-11-28 09:26:38 6917

原创 IP协议详解之IP转发

  不是发送给本机的IP数据报将有数据报转发子模块来处理。路由器都能执行数据报的转发操作,而主机一般只发送和接受数据报,这是因为主机上/proc/sys/net/ipv4/ip_forward内核参数默认被设置为0。可以修改该值来使能主机的数据报转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward  对于允许IP数据报转发的系统(设置的主机或路由器)...

2019-11-28 09:23:54 792

原创 TCP、UDP简介

  传输层协议主要有两个:TCP协议和UDP协议。  TCP协议相对于UDP协议的特点是:面向连接、字节流、和可靠传输。字节流服务:  发送端执行的写操作次数和接收端执行的读操作之间没有任何数量关系,取决于缓冲区的大小,TCP属于字节流服务。数据报服务:  发送端执行的写操作次数和接收端执行的读操作次数相同,UDP属于数据报服务。  TCP传输是可靠的。TCP协议采用发送应答机制...

2019-11-27 17:48:21 75

原创 IP协议详解之IP重定向之ICMP重定向

ICMP重定向报文  ICMP报文头部有三个固定字段:8位类型、8位代码和16位校验和。  ICMP重定向报文的类型值是5,代码字段有4个可选值,用来区分不同的重定向类型。主机重定向的代码值为1。  ICMP的数据部分提供了两个信息:1、引起重定向的IP数据报的源端IP地址。2、应该使用的路由器的IP地址。  接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由来转...

2019-11-27 11:25:15 2474

原创 IP协议详解之路由

简介  IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径。  路由指的就是IP数据报应该发送至哪个下一跳路由或者目标机器,以及经过哪个网卡来发送。IP模块工作流程  当IP模块接收到来自数据链路层的IP数据报时,它首先对该数据报的头部做CRC校验,无误后分析其头部信息。  如果该IP数据报的头部设置了源站选路选项(就是松散源路由选择或者严格源路由选择),则IP模块...

2019-11-26 18:04:31 536

原创 IP协议详解之IP分片

IP分片:  当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发送在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。  IP的分片和重组需要的信息由头部的三个字段提供:数据报标识、标志、偏移。一个IP数据报的每个分片都具有自己的IP头部,他们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片...

2019-11-25 10:55:49 1953

原创 IP协议详解之头部结构

IP头部信息:  出现在每个IP数据报中,用于指定IP通信的源端IP地址,目的端IP地址,指导IP分片和重组,以及指定部分通信行为。IP数据报的路由和转发:  发生在除目标机器之外的所有主机和路由器上。它们决定数据报是否应该转发以及如何转发。IP服务的特点  IP协议是TCP/IP协议族的动力,他为上层协议提供无状态、无连接、不可靠的服务。无状态:  是指IP通信双方不同步传输数据的...

2019-11-24 22:34:58 7923

原创 Qt5.13.1版本编译MySQL驱动

@qt开源社区,原文链接:http://www.qter.org/portal.php?mod=view&aid=4374

2019-11-21 19:35:25 452

原创 深入理解内联函数

文章目录简介旧标准的内联新标准的内联正确地使用内联简介  内联函数,看起来像是函数,运作起来像是函数,比宏要好得多(宏没有错误检查等缺点),使用时还不需要承担函数调用的开销。基本思想:  将每个函数调用以它的代码来替换。  但这种做法很可能会增加整个目标代码的体积。在一台内存有限的计算机里,过分地使用内联所产生的程序会因为有太大的体积导致可用空间不够。即使可以使用虚拟内存,内联造成的代码...

2019-11-19 17:28:50 177

原创 TCP/IP中的分用过程

  上一篇讲到数据经过多级封装后为帧,在物理媒介上传输。当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。  以太网帧的分用过程:  帧通过上述分用步骤后,最终将封装前的原始数据送至目标服务(ARP服务或RARP服务或ICMP服务)或应用程序。这样,在顶层目标服务看来,封装和分用就...

2019-11-18 11:07:41 308

原创 TCP/IP协议中的封装理解

简介  上层协议如何使用下层协议?其实就是通过封装实现的。  应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递,每层协议都将在上层数据的基础上加上自己的头部信息(有时还有尾部信息),以实现该层的功能,这个过程就称为封装。  经过TCP封装后的数据称为TCP报文段。TCP协议为通信双方维持一个连接,并且在内核中存储相关数据,这部分数据中的TCP头部信息和TCP内核缓冲区(发送...

2019-11-15 20:47:37 1879

原创 TCP/IP协议族简介

文章目录1.简介1.简介TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,而且通过若干协议来实现,上层协议使用下层协议提供的服务。...

2019-11-14 10:02:57 288

原创 MySQL之事务处理

事务特性:原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency) 事务前后数据的完整性必须保持一致。隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。持久性(Durability) 持久性...

2019-11-13 12:05:13 81

原创 深入理解C++迭代器

文章目录1.简介1.简介迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(间接访问)和成员访问(直接访问)。因此,迭代器最重要的编程工作就是对operator* 和operator->进行重载工作。...

2019-11-05 21:47:43 371

原创 哈希表的基本原理和实现方法(Java)

哈希表的基本原理和实现方法(Java)  散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。其逻辑图如下所示:演示题目:  有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…)...

2019-11-04 10:34:31 975

原创 实现自己的operator new和operator delete以及实现一个简单的内存池管理类

为什么有必要写自己的operator new和operator delete?为了效率。缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。当调用operator new来分配对象时,得到的内存可能要比存储这个对象所需的要多。因为operator new和operator delete之间需要传递信息...

2019-11-03 18:32:07 158

原创 C++之set_new_handler函数(Effective C++ 条款7)

作用预先准备好内存不足的情况。当内存分配请求不能满足时,调用你预先指定的一个出错处理函数。这个方法基于一个常规,即当 operator new 不能满足请求时,会在抛出异常之前调用客户指定的一个出错处理函数——一般称为 new-handler 函数。定义和解析指定出错处理函数时要用到 set_new_handler 函数,它在头文件里大致是象下面这样定义的:typedef void...

2019-11-02 11:44:36 449

原创 C++之简单实现stack

简介stack是配接器:一种用来修饰容器(containers)或仿函式(functors)或迭代器(iterators)接口的东西stack在源码中底层是deque,由于deque还没写,刚写了list,就用list来实现stack。环境:VS2017list迭代器#pragma once#include <iostream>using std::cout;...

2019-11-01 10:03:06 331

原创 MySQL之索引

MYSQL索引  优点:提高查询效率,不必查询所有数据,节约查询时间,降低CPU消耗  缺点:占用空间,降低更新表的速度分类:  单值,唯一,复合||全文(myisam),空间(myisam)创建:  声明主键时,自动创建唯一索引create index 索引名称 on table(columu,...);删除:drop index 索引名称 on table;explai...

2019-11-01 09:59:25 76

空空如也

空空如也

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

TA关注的人

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