自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python基础---布尔表达式

布尔表达式只有两种取值:True/False一、布尔表达式中的等号1、布尔表达式中一个等号代表赋值,两个等号代表判断相等print(1==2)#结果为Falseprint(1==1)#结果为Trueprint('a' == 'A')#结果为False,字符之间的比较一般比较的是字符的ASCII码值print('aA' == 'Aa')#结果为False,字符串之间比较时,之比较第一位,如果第一位相同则继续比较,第一位不同直接返回ifalseprint('a' >= 'A.

2021-02-01 17:39:24 12605 2

原创 python基础---列表与元组

一、列表(一)基本概念列表:类似与java中的数组,但是它比Java更加强大,因为它可以储存任意数据类型,如下所示:list = [111,'ashdud',[20,30],(11,22),{'A','apqiw'}]列表属于可变列表,可以通过下标修改某个位置的值例:list = [10,20,30,40,50]list [0] = 99print(list)这样我们就可以得到结果为:list = [99,20,30,40,50](二)列表的增删查改1、添加列表

2021-02-01 16:13:52 246

原创 【软件测试】如何在笔试中设计一个好的测试用例

测试用例的重要性如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。软件测试是有组织性、步骤性和计划性的,为了能将软件测试的行为转换为可管理的、具体量化的模式,需要创建和维护测试用例测试用例是测试工作的指导,是软件测试的必须遵守的准则,更是软件测试质量稳定的根本保障。良好测试的特征可以最大程度地找出软件隐藏的缺陷可以最高效率的找出软件缺陷可以最大程度地满足测试覆盖要求 既不过分复杂、也不能过分简单使软件缺陷的表现可以

2020-09-04 17:51:37 817

原创 【软件测试】软件测试过程--单元测试、集成测试和系统测试

为什么要进行测试?为什么要进行测试呢?测试可能会伴随一个程序员的一生,那么到底是为什么要进行测试呢,主要从以下五个方面来分析:1、程序员的难题开发的模块出现问题,很难定位,已经熬了几个通宵了刚改正了一个BUG,过没几天,又发现了新问题程序总在出问题,联调了几个月,还是问题不断2、高质量程序高质量的设计规范的编码有效的测试3、程序员的职责程序员可能会有一个疑问,我是程序员,除了编码我还需要做些什么?(1)传统的开发观念开发人员的任务是完成编程,让系统正确运行起来。程序调试

2020-09-03 22:05:21 4514

原创 【软件测试】软件测试方法之黑盒测试方法和白盒测试

白盒测试方法一、概念白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。它可以形象得用下图表示:二、白盒测试方法应该遵循的原则保证一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试真 (true) 和假 (false) 两种情况。检查程序的内部数据结构,保证其结构的有效性。在上下边界及可操作范围内运行所有循环。白盒测试主要是检查程序内部的逻辑结构,也就是对所有逻辑路径进行测试,是一种穷举路径的测试

2020-09-03 16:10:33 9900

原创 根据前序和中序、中序和后序构建二叉树

1、根据前序和后序构建二叉树思路:在二叉树的前序遍历序列中,第一个数字总是树的根节点的值。但在中序遍历序列中,根节点的值在序列的中间,左子树的节点的值位于根节点的值得左边,而右子树的节点的值位于根节点的值的左边。所以需要扫描中序遍历,才能找到根节点的值。既然已经分别找到了左、右子树的前序序列和中序遍历,我们可以用同样的方法去构建左右子树。我们可以用递归实现:struct TreeNode* Buynode(){ struct TreeNode* s = (struct Treenode*)mall

2020-08-10 20:34:06 1652

原创 二叉树的层次遍历

二叉树的层次遍历树的层次遍历如下图所示:依次打印[A B G C D H E F]算法描述:要想实现层次遍历,我们需要借助另一个数据结构「 队列 」。因为队列的特点是先进先出。利用这个特点,我们可以将已经访问过的结点的子节点存进队列里,实现每个层次的顺序不变。先是根节点入队,如果根节点不为空,就打印根节点。接着入根节点的左孩子和右孩子(先入左孩子,再入右孩子)。如上图所示,先入A,队列不为空就打印A,再入B和G,队列不为空,就打印B。接着入C和D。然后打印G。然后将H入队。C的左右子

2020-08-06 20:47:28 211

原创 前中后序遍历二叉树

前序遍历二叉树算法描述:是通过中序遍历二叉树算法描述:先访问这棵树,如果树为空,就跳出。如果树不为空,然后再访问这棵树的左孩子,如果左孩子为空,就退回到访问这棵树的父节点,然后再访问这棵树的右结点,如果右结点为空就回退到这棵树的父节点,然后接着向上后退。直到它的左右孩子都为空时就打印这个结点。我们就用到栈这个数据结构。比如一颗二叉树如下所示:我们先将这棵树的A结点入栈,然后访问它的左孩子B结点,然后将B结点入栈,接着访问B的左孩子C,将C入栈,访问C的左孩子,发现C的左孩子为空,我们就将C出栈,然

2020-08-05 20:41:21 2203

原创 【Linux】linux经典面试题目---其他类

一、程序加载到内存上有哪些段,运行时的临时变量放在哪?1、.text段指令段:通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。2、.data段数据段:通常是指用来存放程序中已始化且不为0的全局变量和静态变量的一块内存区域。数据段属于静态内存分配。常量也放在这个区域。3、.bss段数据段:通常是指用来存放程序中未初始化或者初始化为0的全

2020-08-03 19:51:54 138

原创 Linux经典面试题目---系统类

一、虚拟内存是什么为了防止内存不足导致死机,系统会在硬盘上开辟一块空间,linux是一个固定的分区,windows是一个文件,就叫作虚拟内存。系统会按照某种策略在适当的时候将物理内存中的部分数据移动到虚拟内存中,以节省物理内存。linux是当物理内存不够用的时候,使用虚拟内存。windows会将长时间未使用的数据移动到虚拟内存。二、用户态和内核态能解释一下吗1、当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代

2020-08-01 20:23:56 290

原创 【Mysql】Mysql数据库的存储引擎和事务的简单解释

一、数据库的存储引擎分为以下四种1、MyISAM2、InnoDB3、MOMERY4、ARCHIVE二、下面我们简单说明这几个存储引擎的特点1、MyISAM不支持事务、支持全文索引,但是对于一些在线分析处理操作速度快。文件组成由myd存放数据的。myi存放索引的。2、InnoDB支持事务,主要是面向在线事务处理方面的应用,特点是行锁设计,并支持外键。InnoDB采用聚集索引的方式。没有主键,没有唯一键,为每一行生产一个6字节的行id作为主键。3、MOMERY将数据放在内存中,如果数据库

2020-07-31 17:28:52 238

原创 【Linux】Linux经典面试题---网络部分

一、 OSI 七层网络协议模型和 TCP/IP 四层网络协议模型二、tcp 三次握手,四次挥手,为什么是三次?为什么是四次?time_wait 出现 在什么时候,它的作用是什么?TIME_WAIT 状态持续多长时间?三次握手,哪一个 阶段会抛出异常详见博客:TCP的三报文握手和四报文挥手相关面试题三、 http长连接和短连接的区别1、短连接连接->传输数据->关闭连接HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。也可以这样说:短连

2020-07-30 20:54:57 823

原创 【Mysql】mysql数据库的查询语句

单表查询1、普通查询(1)命令:select * from <表名>;//通匹(2)命令:select <要查询的字段> from <表名>;2、去重查询(distinct)命令:select distinct <要查询的字段> from <表名>3、排序查询(order by)升序:asc降序:desc降序排列命令:select <要查询的字段名> from <表名> order by <要查询的字

2020-07-29 16:54:42 18256

原创 【Mysql】mysql数据库的一些常用命令

一、启动与退出1、进入MySQL:输入命令:mysql -u root -p直接输入安装时的密码即可。此时的提示符是:mysql>2、退出MySQL:quit或exit3、数据库清屏命令:system clear;二、库操作1、创建数据库命令:create database <数据库名>例如:建立一个名为stu的数据库mysql> create database stu ;2、显示所有的数据库命令:show databases (注意:最后有个s)mysq

2020-07-28 17:59:57 2080

原创 【C++】关联容器map的简单使用

map容器一、map容器的定义map是STL的一个关联容器,它是一个单映射容器。它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射比如一个班级中

2020-07-27 15:48:04 160

原创 【Linux】Linux面试经典题目---进程和线程部分

一、 进程和线程的区别进程与资源分配有关,进程有自己的独立地址空间,程序更加健壮,但是通信较麻烦,线程是资源调度的最小单位,是共享进程中的数据的,开销更小,通信更加便利。它们二者之间的区别为:1、进程与资源分配有关,进程有自己的独立地址空间,程序更加健壮,但是通信较麻烦,线程是资源调度的最小单位,是共享进程中的数据的,开销更小,通信更加便利。2、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)3、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表

2020-07-26 21:11:11 717

原创 【C++】关联容器之set的简单使用

set容器set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为R

2020-07-26 17:05:00 323

原创 【Linux】Linux面试的经典题目总结---命令部分

一、怎么查看都有哪些进程占用了端口?1、lsof -i用来显示符合条件的进程情况。lsof(list open files)是一个列出当前系统打开文件的工具。在root用户来执行lsof -i命令,如下图所示:lsof输出各列信息的意义如下:COMMAND:进程的名称PID:进程标识符USER:进程所有者FD:文件描述符,应用程序通过文件描述符识别该文件,如cwd、txt等TYPE:文件类型,如DIR、REG等DEVICE:指定磁盘的名称SIZE:文件的大小NODE:索引节点

2020-07-25 20:43:22 382

原创 【C++】STL之deque容器的简单实现

deque容器一、deque容器是C++标准模版库STL中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。二、deque容器的底部是一个双端队列。双端队列的好处就是两端都可以进行插入和删除。但deque容器的底层确实一个受限的双端队列,也就是,如果在头部进行插入的话尾部就只能进行删除操作。如果在头部进行删除的话尾部就只能进行插入的操作。也就是头部只

2020-07-25 16:34:59 1651

原创 【C++】标准模板库STL的详解以及vector容器

概念库是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性,而模板为通用性带来了不可估量的前景。STL库是C++中最有特色最实用的部分之一。STL中包含的东西我们将STL划分为6个组件。一、容器类我们又将容器划分为三个部分1、顺序容器(1)vector容器。它是一个矢量容器,它的底部是一个数组。是对顺序表进行了封装。头文件:#include(2)list容器。它也是双向链表容器。它的底部是一个双向链表(环状)。所以它的底部是一个双向循环列表。头文

2020-07-23 17:33:11 255

原创 单链表面试题之判断两个链表是否相交

题目描述:思路:如果head1 ==head1,直接返回head1 .否则,分别从head1,head2开始遍历两个链表分别获得长度lenA和lenB如果lenA >= lenB那么指针p由head开始向后移动lenA-lenB步。指针q=head2,接着p和q每次向后前进一步并比较p和q是否相等。如果相等就返回该结点。 否则两个链表没有交点代码实现:struct ListNode *getIntersectionNode(struct ListNode *headA, stru

2020-07-21 20:57:15 165

原创 【C++】智能指针(二)--unique_ptr、shared_ptr和wear_ptr

unique_ptr一、unique_ptr的引出我们知道auto_ptr通过复制构造或者通过赋值后,原来的auto_ptr对象就报废了。所有权转移到新的对象中去了。如果我们不想像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,这个时候就需要用到unique_ptr指针。二、unique_ptr的思想unique_ptr是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该

2020-07-20 20:16:45 267

原创 【C++】智能指针(一)---auto_ptr指针

智能指针的思想1、智能指针的引出在代码编写过程中,我们不可避免的带入一些bug,某个指针过期失效后,并没有及时将对应的内存释放,这样就造成了内存泄漏,如何避免类似问题的出现,除了代码编写过程中注意,其次可以通过智能指针帮我们做一些类似的工作。这就是智能指针的引出。2、智能指针的思想将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。智能指针的分类智能指针分为四种:1、auto_ptr(C++98)2、uni

2020-07-19 20:25:18 245 1

原创 C++中的设计模式之---工厂模式

工厂模式的分类1、核心功能:根据“需求”生产“产品”。不需要关注对象的生成过程。简化名称,便于使用。2、分类:实际上根据业务情景不同分为不同的实现方式。一般分3种:简单工厂模式(不属于23中模式中的一种)、工厂方法模式、抽象工厂模式。简单工厂模式1、核心思想:同一个“工厂”中生产多个“产品”。比如我们现在要得到苹果,香蕉,梨这三种水果。我们可以让他们在同一工厂中进行生产。只需要给他们对应得编号。1代表苹果,2代表香蕉,3代表梨。如下图所示:2、代码实现:class Fruit{public

2020-07-18 19:42:09 120

原创 用两个栈实现一个队列和用两个队列实现一个栈

用两个栈实现一个队列我们都知道栈的特点是”后进先出“,队列的特点是”先进先出“。两个栈实现一个队列也就是利用两个栈来实现队列的先进先出特点。思路:定义两个栈,stack1和stack2.将队列中的元素“abcd”压入stack1中,此时stack2为空;将stack1中的元素pop进stack2中,此时pop一下stack2中的元素,就可以达到和队列删除数据一样的顺序了;当stack2只pop了一个元素a时,satck1中可能还会插入元素e,这时如果将stack1中的元素e插入stack2中

2020-07-17 22:06:22 242

原创 【Linux】Linux系统下libevent库的安装

1、首先进行libevent版本的下载。可以去libevent的官网进行下载。地址为:https://libevent.org/2、将下载的libevent拖拽到linux系统的桌面3、在linux中进入到桌面,因为我们将这个库放在了桌面。cd Desktop4、进行解压tar zxf 下载的库名由于我下载的是2.0.19的版本,所以他出来的是2.0.19的版本。(版本名称尽量不要自己输入,有可能会输入错误,当输入libevent时它会自动弹出与libevent有关的文件,只要按t

2020-07-17 17:47:15 1347 2

原创 【Linux】高性能服务器程序框架

服务器解构的分类服务器解构主要分为如下三个主要模块:1、I/O处理单元。接收客户端发送的数据都属于I/O处理单元。2、逻辑单元。接收到数据之后进行的一些处理都属于逻辑单元。3、存储单元。如下图所示(服务器编程框架):服务器模型的分类1、C/S模型C就是客户端,S就是服务器。所以这个模型也称客户端/服务器模型。C/S模型如下图所示:现在大多数的公司用的都是C/S模型。也就是一组服务器,所有的客户端要上网的时候都要访问这个服务器。C/S模型的逻辑C/S模型的逻辑很简单,服务器启动后,

2020-07-17 16:32:49 346

原创 【Linux】线程池以及利用线程池实现TCP服务器程序

线程池的引入多进程多线程创建的时机是事件就绪后,为处理这个就绪事件创建子进程或者函数线程。结束的时机是将事件处理完成之后结束相应的子进程或者函数线程。这个时候服务器就会有很严重的效率问题,当服务器运行起来之后频繁得创建和结束对系统的负担是很重的。问题如下:是需要消耗时间和系统资源的。而且当系统运行起来之后就会有不可预知的崩溃。对于客户端的响应速度相对较慢。事件就绪和处理事件之间存在创建进程或者线程的过程。如果服务器的系统上存在大量的进程或者线程,就需要不断的进行进程或者线程的切换,从而致使

2020-07-16 17:24:17 434

原创 【C++】内存池的实现

一、内存池概念内存池是一种自主的内存管理机制。就是将我们的内存管理放在了应用程序端。那么它的简单处理做了什么事呢?首先,我们从堆上分配出一块很大的内存块。接着我们按照划分将其划分成每个不同的小组。这个每个小组存储一个数据块。针对于每个小组的组内来说就是一个简单的数据结构。这个数据结构我们将其分为两个部分,这两部分代表分别存储数据的数据域和找到下一个指针的指针域。划分好之后我们用一个标志来标志它的起始位置。最后形成一个静态链表的组织方式,将第一个内存单元的指针域指向第二个内存单元。第二个内存单元指向下

2020-07-15 17:34:58 775

原创 【Linux】epoll的LT触发模式和ET触发模式

概念LT模式:内核如果检测到就绪事件并将其通知给应用程序后,应用程序可以不立即处理该事件,因为下次调用epoll_wait时,还会将此事件通知给应用程序。(不会重复触发事件)ET模式:内核如果检测就绪事件并将其通知给应用程序后,应用程序必须立即处理该事件,否则下次调用epoll_wait时,不会将此事件再通知给应用程序。(同一事件会被触发多次)实例分析客户端模型发送11字节的数据到服务端,ET模式只触发一次,而LT模式要触发3次。再次证明了ET模式要比LT模式触发的次数少很多。Linux系统下写的

2020-07-06 16:45:12 537

原创 I/O复用之select、poll、epoll的使用和区别

I/O复用I/O复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的读写操作。I/O复用适用如下场合:1、当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。2、当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。3、如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。4、如果一个服务器即要处理TCP,又

2020-07-05 17:34:50 235

原创 在eclipse的Server里找不到Apache tomcat的解决方案

我们在创建Dynamic Web Project时在新界面一栏中,Target runtime一栏是空,没有可选择的tomcat.点击右侧的New Runtime后看到如图没有对应的Apache.同样我们在上面的windows->preference(首选项)->server->runtime Envronment->add也找不到apache tomcat,如下图所示:解决方案是:去网上下载插件,下载地址为:http://download.eclipse.org/re

2020-07-02 23:04:37 7023 2

原创 exclipse中没有javaEE视图的解决方案

exclipse与myexclipse最大的不同之处就是exclipse的很多插件是需要自己去添加的。比如我们刚装上的exclipse,它一般默认的是java模式。也可以在最右上角查看。如下所示:但是如果我们要进行dynamic web project项目的创建就都切换到javaEE视图下。如果没有javaEE就得去网上下载。下载地址为:http://download.eclipse.org/releases然后选择最自己exclipse匹配的版本,点进去。然后将地址复制出来。回到exclips

2020-07-02 22:20:27 4655 3

原创 【C++】C/C++之内存分布

一、基本知识C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。1、栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。2、堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉, 那么在程序结束后,操作系统会自动回收。3、自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的, 不过它是用free来结束

2020-06-30 17:13:15 271

原创 【计算机网络】HTTP协议的相关请求方法和HTTP协议状态码

HTTP的请求方法1、GET:申请获取资源,而不对服务器产生任何其他影响。2、HEAD:和GET方法类似,不过仅要求服务器返回头部信息,而不需要传输任何实际内容。3、POST:客户端向服务器提交数据的方法。这种方法会影响服务器:服务器可能根据收到的数据动态创建新的资源,也可能更新原有的资源。4、PUT:上传某个资源。5、DELETE:删除某个资源。6、TRACE:要求目标服务器返回原始HTTP请求的内容。它可以用来查看中间服务器(比如代理服务器)对HTTP请求的影响。7、OPTIONS:查看服

2020-06-26 17:38:48 249

转载 HTTP协议和TCP协议相关面试题

一、浏览器地址栏输入 URL 回车之后发生了什么?1、DNS 解析按顺序依次查找,找到就返回。浏览器缓存操作系统缓存路由器缓存ISP DNS 缓存根域名服务器查询2、TCP 连接(三次握手)3、TLS 握手4、发送 HTTP 请求5、HTTP 服务器处理请求6、浏览器解析 HTML 和 CSS7、浏览器渲染页面二、介绍一下 TCP/IP 四层模型?应用层应用层一般是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。应用层协议有如:FTP

2020-06-26 16:29:46 892

原创 【C++】string类的写时拷贝

深拷贝和浅拷贝1、深拷贝:资源只是简单的共享,会造成资源的浪费2、浅拷贝:多个对象拥有共同的资源。所谓的写时拷贝就是在写之前进行浅拷贝,在写的时候进行深拷贝。在最后一个对象销毁时才释放资源。那么为什么有了引用计数器以后为什么还有写时拷贝呢?因为当有两个String类s1,s2都是指向同一块空间“hello”,当想将s1修改成“hello”时,只想将s1指向的空间修改,而不想将s2修改,显然引用计数器不能解决这个问题,所以就有了写时拷贝。string类的写时拷贝#icnlude<iostr

2020-06-25 17:26:18 248

原创 【C++】运算符的重载

一、运算符的引出先看一段代码class CIntint main(){ int arr[] = {1,321}; int len = sizeof(arr)/sizeof(arr[0]); for(CInt i = 0; i < len; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0;}这段代码的第六行中的i < len比较的时候。我们

2020-06-18 16:14:02 172

原创 邮件营销的相关内容

一、什么是邮件营销简单点就是指使用邮件做营销复杂点就是邮件营销是在用户事先许可的前提下,通过电子邮件的方式向目标用户传递有价值信息的一种网络营销手段。二、邮件列表获取的方法1、充分利用网站的推广功能2、合理挖掘现有用户的资源3、提供部分奖励措施4、可以向朋友、同行推荐5、其它网站或邮件列表的推荐6、为邮件列表提供多订阅渠道7、内部产生8、互联网搜集9、购买通过向邮件列表服务商进行购买但需要甄别三、邮件标题的注意事项1、简单明了,说清楚事情微阅读时代,35个字符的邮件标题打开率

2020-05-31 11:36:06 536

原创 企业网站建设的优化和推广

一、什么是企业网站建设企业网站建设是将企业网站建设成为一个优质网站首先要考虑,网站建设方案能反应出网站的建设构想,初步形态及网站推广计划。企业网站建设方案适合中小型企业,它有自己独特的风格设计。风格设计主要体现在企业个性特点的凸显,结合企业经营行业市场分析,了解客户群体活动习性以及活动规律,分析策划并制定出一套适合企业自身的网站建设的设计风格方案。设计首页要求列出最吸引客户的产品信息以及服务信息,用最精炼的语言表达出客户想了解的信息,一般网站首页由企业简介,企业新闻,企业资质,产品展示,在线留言,联系方式

2020-05-31 10:57:21 802

空空如也

空空如也

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

TA关注的人

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