自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

boke_fengwei

关于一个初学程序员的总结

  • 博客(108)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux三大剑客

awk是一种很棒的语言,适合文本处理和报表生成。使用方法awk ‘{pattern + action}’ {filenames}尽管操作可能会很复杂,但是语法总是这样,其中pattern表示AWK再数据中查找的内容,而action是再找到匹配内容时所执行的一系列命令,包括({})不需要再程序中始终出现,pattern就是要表示的正则表达式,用斜杠括起来。action可以有很多的语句,用;号隔开。参数-F参数:指定分隔符,可指定一个或多个-f:从脚本文件中读取awk命令-mf nnn and -

2020-08-14 16:08:13 327

原创 automake自动编译工具

automake自动编译生成makefile文件,使用automake,程序开发人员只需要写简单的宏文件,生成configure,再生成Makefile.in,最终生成一个惯例的makefiel文件。automake执行命令顺序autoscanaclocalautoconfautomake --add-missing./configuremake./exe创建文件并执行autoscan创建文件就不用说了吧,顺便创建一个c文件并且执行autoscan多出了autoscan

2020-08-13 19:59:22 499

原创 thrift编写服务端和客户端程序

文章目录Thrift的学习Thrift的安装Thrift的代码包目录介绍Thrift文件书写服务端的更改客户端的编写编译所遇到的问题Thrift的学习参考师兄wiki thrift基础Thrift的安装参考社区wiki linux下配置thriftThrift的代码包目录介绍在server和client中都使用到了其中的文件Thrift的类介绍Thrift的代码包目录介绍concurrrncy:并发和时钟管理方面的库processor:Processor相关类transport:t

2020-08-13 10:02:47 865

原创 shell脚本查询目录下代码的行数和空行数量

用shell编程查找目录下的对应文件代码的数量 1 #!/bin/bash 2 3 linesum=0 4 empty=0 5 dir=$1 #第一个参数就是输入的目录数 6 echo "$dir" 7 function sum(){ 8 if [ -d $1 ] 9 then 10 for file in ` ls $1 ` 11 do 12 if [[ $file = "." || $fi

2020-08-05 18:04:45 869

原创 利用thrift进行分布式系统搭建

Thriftrouter-简介基于thrift TFramedTransport、TBinaryProtocol的RPC的分发系统采用订阅&主动推送的模式- 消息订阅基于RPC的名字,即根据RPC的名字决定把一条RPC推送给那些接收方- 同一条RPC可被多个接收方订阅,同时转发给多个接收方- thrift router主动连接RPC接收方,主动将RPC推送过去消息是持久化的消息传递是可靠的帮助系统中的多个服务进行消息传递,减少服务间的耦合简化后台服务开发,省去开发者自己实现mas

2020-08-03 17:12:21 578

原创 认识thrift以及thrift的接口使用

thrift简介

2020-08-03 15:28:55 2521

原创 mysql---视图

视图是什么:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变 化会影响到基表,基表的数据变化也会影响到视图视图的基本使用创建视图create view 视图名 as select语句;案例:create view v_ename_dname as select ename, dname from EMP, DEPT where ...

2019-08-07 21:59:26 260

原创 mysql---事务管理

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MYSQL提供一种机制就是事务,保证我们达到这样的效果。举个例子:买票系统,当客户端1检查还有一张票的时候,将票卖掉,还没有执行更新数据库的时候,客户端检查了票数仍然是大于0.于是又卖了一次,然后A将票数更新回数据库,这时候就出现了同一张票被卖了多次。事务的基本操作例子:...

2019-07-23 21:49:19 177

原创 项目文件快速搜索神器

快速搜索神器项目代码:github地址1.调研实现背景在linux环境下有非常好用的find命令,查找文档非常的高效,但是在windows下文件夹框下是默认的暴力遍历查找,非常的慢。此搜索神器就是为了解决这个问题,为了快速的查找到查找的文件或者目录。2.项目实现目标以及框架实现目标就是为了查找文件或者目录能够快速地查找到,另外它能够支持拼音搜索,拼音首字母搜索,拼音汉字混合搜索...

2019-07-21 11:35:18 834

原创 mysql---数据库的索引特性

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。常见的索引分为:主键索引(primary key)唯一索引(unique)普通索引...

2019-07-18 10:47:45 219

原创 linux---select,poll,epoll的原理以及优缺点

多路转接IO(也叫IO多路复用)是一种处理高并发的IO事件监控,同时对大量的描述符进行时间监控,监控是否具备IO条件。就绪:包括了读就绪事件(就是有数据到来的时候),写就绪事件(缓冲区有空闲的空间),异常事件(发生异常)。对于服务器来说,很多时候我们都是监控的读事件,对于写事件和异常事件都只会在特定的情况下使用。selectselect模型:通过对几个事件集合中的描述符进行事件监控,当集合...

2019-07-12 17:13:49 822

原创 linux---五种高级IO模型

阻塞IO模型非阻塞IO模型信号驱动IO模型异步IO模型多路转接IO模型高级IO重要概念阻塞IO模型在内核将数据准备好,系统调用会一直等待,所有的套接字默认都是阻塞IO方式阻塞IO是最常见的IO模型非阻塞IO模型非阻塞IO往往需要程序员循环的方式反复尝试读取文件描述符,这个过程称为轮询,这对于cpu来说的话是较大的浪费,一般只有特定的场景下才能使用信号驱动IO...

2019-07-12 15:44:30 203

原创 mysql---表的增删改查(六)

6. 表的增删改查6.1 Create语法:INSERT [INTO] table_name[(column [, column] ...)]VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...案例:– 创建一张学生表**CREATE TABLE students (id IN...

2019-07-11 10:55:03 214

原创 银行家算法原理

银行家算法原理

2019-07-10 23:13:15 1877

原创 HTTP常见面试题

个人总结,请勿转载。URL统一资源定位符:就是标识网络中资源的路径。HTTP超文本传输协议。是一个基于TCP/IP通信协议来传递信息HTTP原理HTTP协议工作与客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。根据接收到的请求后,向客户端发送响应消息。HTTP默认端口是80,但是也可以进行更改。HTTP注意事项HTT...

2019-07-10 00:05:19 1133

原创 c++---菱形继承

单继承:一个子类只有一个父类时称为单继承多继承:一个子类有两个或者两个以上时这个继承关系为多继承菱形继承是多继承的一种特殊情况在继承中子类会继承父类的所有的成员,可以看出菱形继承有数据冗余和二义性的问题。Assistant中会有Person的两份数据。#include <iostream>#include <string>using namespace s...

2019-07-09 10:59:45 210

原创 c++---类型转换

C语言中的类型转换C++强制类型转换为什么需要强制类型转换RTTI一,C语言中的类型转换在C语言中分为了两种类型转换,一种是隐式类型转换,但是隐式类型转换是相邻类型之间才可以进行隐式类型转换,比如我们的char可以转为int,这两种都是表示数值的。第二种是强制类型转换,强制类型转换需要在前面声明我们需要转换的。比如将int类型转换为int*#include <iostream...

2019-07-07 10:32:16 177

原创 c++---模板(下)

非类型模板参数类模板的特化类型萃取模板的分离编译非类型模板参数模板参数分类类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:就是用常量作为类(函数)的一个参数,在类(函数)模板中可将该参数当成常量来使用namespace fw{ template<class T, size_t N = 10> class...

2019-07-06 22:45:44 135

原创 mysql---表的约束(五)

5. 表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。5.1 空属...

2019-07-06 17:31:37 2297

原创 mysql---数据库数据类型(四)

4. 数据类型4.1 数据类型分类4.2 数值类型4.2.1 tinyint类型数值越界测试:创建一张新表create table tt1(num tinyint);插入新的数据 insert into tt1 values(1);再插入一个越界的数据insert into tt1 values(128); -- 越界插入,报错会出现下面的错误ERROR 1264...

2019-07-02 15:57:24 475

原创 mysql---表的操作(三)

3. 表的操作3.1 创建表语法:CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype) character set 字符集 collate 校验规则 engine 存储引擎;说明:field 表示列名datatype 表示列的类型character set 字符集,如果没...

2019-07-02 15:27:16 114

原创 c++---stack和queue

stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用容器适配器一,stack的介绍和使用介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层...

2019-06-26 12:34:13 499

原创 设计模式---适配器模式

1

2019-06-26 12:19:46 265

原创 c++---deque的使用

deque的介绍deque的使用deque的应用一, deque的介绍及使用deque的介绍deque(发音类似“deck”),是双端队列不规则的首字母缩写,双端队列是动态大小的序列式容器,其可 以像两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过 随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,de...

2019-06-26 11:52:00 1515

原创 mysql---库的操作(二)

2. 库的操作2.1 创建数据库语法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collatio...

2019-06-25 23:28:24 127

原创 mysql---数据库的安装以及基础(一)

1. 数据库基础(重点)1.1 什么是数据库存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据 文件在程序中控制不方便数据库存储介质:磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的...

2019-06-24 22:06:01 244

原创 c++---list

list的介绍和使用list的模拟实现list和vector的对比list的介绍和使用list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于fo...

2019-06-23 21:34:09 156

原创 计算机网络---网络层

网络层的作用IP地址地址管理路由选择1.网络层的作用首先网络层是为了地址管理和路由选择,通过对地址的管理能够保证数据从一台主机上到另一台主机上,并且选择合适的路径进行传输。主机:就是PC,也就是我们的计算器或者服务器,或者是路由器路由器:实现中间数据转发的设备节点:再网络中每一个设备都是一个节点2.IP地址4位版本:就是我们选择的协议IPV4或者是IPV64位首部长度:就...

2019-06-23 20:58:04 303 2

原创 计算机网络---传输层(tcp协议,三次握手,四次挥手)

tcp报头三次握手四次挥手状态改变WIME_WAIT状态相关的问题tcp协议是面向连接,可靠传输,面向字节流的传输层协议,首先我们认识一下tcp的协议报头源/目的端口:表示数据是从哪个进程来,到哪个进程去,标志我们的数据发送的进程32序号和确认序号:这是保证了数据的可靠传输的(后面详细讲解)4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少4字节),所以TCP头...

2019-06-09 20:54:31 952

原创 计算机网络---传输层的udp协议

首先我们认识要在应用层对数据封装之后需要传输到传输层进行封装,但是在应用层只是对数据进行了处理,所以在传输层上需要对传输到那个进程进行设置,所以在传输层需要对port进行设置。所以port是标志一个进程,就是一个应用程序。一个端口能被一个应用程序所使用一个应用程序可以使用多个端口udp的协议格式16位源端口:标志发送数据的进程16位目的端口号:标志数据发送到的进程16位udp长度:表...

2019-06-06 11:23:14 256

原创 计算机网络---应用层以及HTTP协议

网络层是程序员接触最多的一个层级,应用层是层级体系中的最上层的一级,是我们做逻辑处理最多的。应用层的功能什么是urlhttp协议应用层的功能是程序员写的一个一个解决的实际的问题都是在应用层,是做逻辑运算和业务处理的地点。什么是url统一资源定位符。包括了协议名称://用户名:密码@服务器地址:服务器端口/资源路径/查询字符串/片段标识符https://blog.csdn.ne...

2019-06-06 10:48:07 388

原创 linux---tcp通信流程以及代码实现

TCP通信特性:(在网络版块详细讲解)面向连接可靠面向字节流TCP通信过程c++封装TCP通信 1 #include <iostream> 2 #include <arpa/inet.h> 3 #include <unistd.h> 4 #include <stdio.h> 5 #include <stdlib....

2019-06-02 16:31:21 1487

原创 linux---UDP代码通信

udp连接特性:无连接:可以不构成连接就进行通信不可靠:数据并不能保证可靠性面向数据报:每条数据有长度限制,整条数据发送整条数据接受,传输不灵活,但是不会存在粘包问题。原理在网络版块讲解udp通信流程c++封装udp接口,封装接口便于我们更好的实现 1 /* 2 *udp的封装接口 3 */ 4 #include <iostream> 5 #i...

2019-06-02 16:09:06 1906

原创 linux---套接字编程

一、Socket是什么1、 socket套接字:  socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现, socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).  说白了Socket是...

2019-06-02 15:38:11 238

原创 计算机网络---网络基础(TCP/IP五层模型,数据的封装和分用)

认识网络中常用的名词以及基本的概念熟悉OSI七层模型和TCP/IP五层模型理解网络通信的数据传输流程认识网络中常用的名词ip地址ip地址就是表示我们一台主机的因为数字不好记忆,通常使用点分十进制表示IP,每条数据都会包含源IP和目的IP,IP是标示我们通信的两台电脑,常用的ip地址:IPV4,32位,地址的范围是42亿9千,显然ip地址是不够我们的世界上所以的设备使用,这里通...

2019-05-30 10:19:48 3866

原创 c++---vector的使用

vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存...

2019-05-28 21:23:40 737

原创 c++---string类的使用

string容器的基本概念string容器的常用操作string小小练习string容器的基本概念c风格字符串(以空字符结尾的字符数组)太过于复杂难于掌握,不太适合大程序的开发,c++在标准库定义一种string类,定义在头文件中- string和c风格字符串对比char是一个指针,string是一个类,string封装了char,管理这个字符串,是一个char型的容器。str...

2019-05-28 20:55:10 320

原创 c++---类和对象(初始化列表,友元函数,友元类,static成员,内部类)

- 初始化列表- static成员- 友元函数- 友元类- 内部类1. 初始化列表在先前学习的构造函数不能叫做我们的类的初始化,只能叫做我们类的赋值。因为我们的初始化只能初始化一次,而构造函数可以进行多次赋值初始化列表语法初始化列表:以一个冒号开始,接着是一个以都好分隔的数据成员列表,每一个成员变量的后面跟着一个括号中的初始值或者表达式class Cat{public:C...

2019-05-26 23:54:14 870

原创 c++---类和对象(六大默认成员函数)

类中默认的六个成员函数构造函数析构函数拷贝构造函数赋值操作符重载取地址和const取地址操作符重载const成员函数1. 类中默认的六个成员函数首先看看下面代码class A{};int main(){ A a; return 0;}这个代码并没有报错,也能正常的运行,那为什么我们都没有写构造函数也能对我们的类实例化。这是因为在类中含有默认的六个成员函数,包括了...

2019-05-22 11:38:26 3481

原创 c++---模板初始以及模板使用

什么泛型编程,模板函数模板类模板什么是泛型编程怎样去用一个函数去int交换数据,也许你会说这是如此的so easy,你看我的void swap(int &a,int &b){ int c = a; a = b; b = a;}这不就写好了吗,但是如果让你写一个double类型的交换函数呢,你可能也会说简单,但是实现一个函数交换自定义类型呢,没办法了吧!...

2019-05-21 13:06:39 2525

eclipse和Tomcat绑定

eclipse和tomcat的连接,以及之间绑定的注意细节,以免在绑定是出错

2018-12-16

空空如也

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

TA关注的人

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