- 博客(128)
- 资源 (31)
- 问答 (1)
- 收藏
- 关注
原创 TCP与IP协议
TCP与IP协议OSI的基本概念OSI是Open System Interconnect的缩写,意为开放式系统互联。 OSI七层参考模型的各个层次的划分遵循下列原则: 1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。 2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。 3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。 4、不同节点的同等层按
2017-09-04 18:56:51 5208
原创 内存溢出与泄漏
1.介绍内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致
2017-09-02 22:53:25 22106
原创 C++实现只能动态或者静态创建对象
C++如何实现类对象只能动态分配或只能静态分配C++中建立类的对象有两种方式: (1)静态建立,例如 A a; 静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,是直接调用类的构造函数。 (2)动态建立,例如 A* p = new A(); 动态建立一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator
2017-09-02 22:36:18 13028
原创 线程与进程
1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线
2017-09-02 18:51:36 5872
转载 stl-list
STL之list容器详解List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上头文件:#include;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using names
2017-09-02 14:35:51 4226
转载 stl-容器set和multiset
一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件: #include set和multiset都是定义在std空间里的类模板:template<class _Kty, class _Pr = less<_Kty>, class _Alloc = allocator<_Kty> >
2017-08-30 19:50:47 4351
转载 机器学习中的损失函数
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子: 其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的ΦΦ是正
2017-08-19 13:37:40 4505
转载 tensorflow相关基础总结
1.class tf.Variable 一个变量通过调用run() 方法维持图的状态。你通过构造variable 类的实例来添加一个变量到图中。 Variable() 构造器需要一个初始值,可以是任意类型和shape 的Tensor。初始值定义了变量的type和shape。构造完成之后,变量的type和shape 是固定的。可以使用assign 方法来修改变量的值。 如果你想修
2017-08-18 16:47:02 4657
原创 leetcode-9- Palindrome Number
难度easy描述Determine whether an integer is a palindrome. Do this without extra space.Some hints:Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, n
2017-07-28 19:34:24 5830
原创 leetcode-8- String to Integer (atoi)
难度medium描述Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible inp
2017-07-28 17:18:50 6050
原创 leetcode-7- Reverse Integer
难度easy描述Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321click to show spoilers.Have you thought about this?Here are some good questions to ask before coding.
2017-07-28 16:56:52 5962
原创 leetcode-6- ZigZag Conversion
难度medium描述The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L
2017-07-28 16:40:37 5907
原创 leetcode-5- Longest Palindromic Substring
难度medium描述Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000示例Input: "babad"Output: "bab"Note: "aba" is also a valid answer
2017-07-28 16:23:38 5922
原创 leetcode-4-Median of Two Sorted Arrays
难度hard描述There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).示例nums1 = [1, 3]nums2
2017-07-17 21:51:35 5805
原创 leetcode-3-Longest Substring Without Repeating Characters
难度medium描述Given a string, find the length of the longest substring without repeating characters.示例Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with th
2017-07-17 21:44:00 5712
原创 leetcode-2-Add Two Numbers
难度medium描述You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and
2017-07-17 21:41:25 5690
原创 leetcode-1-Two Sum
难度:easy描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use t
2017-07-17 21:36:26 5815
原创 stl-vector
简介①vector的数据安排以及操作方式与array相似,二者的唯一差别就是array是静态空间,一旦配置了就不能改变,而vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。方法 示例#include <vector>...vector<int> iv(2,9);cout<<"size="<<iv.size()<<endl; //2cout<<"capaci
2017-07-16 00:07:53 6181
原创 stl-hash_map
简介①hash_map的特性是所有的元素并不会自动排序,因为其底层是用hash_table。hash_table并没有自动排序的功能,这一点与map有区别,hash_map的所有元素都是pair,即key-value。 pair定义:template<class T1,class T2>struct pair{ typedef T1 first_type; typedef T2
2017-07-15 00:07:39 6259
原创 stl-map
简介①map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。 ②map的特性是所有的元素会根据元素的键值自动被排序,map的所有元素都是pair,即key-value。map不允许两个元素拥有相同的键值。 pair定义:template<class T1,class T2>struct pair{ typedef T1 fi
2017-07-15 00:06:39 6505
原创 设计模式-行为型软件设计模式(六)
状态模式介绍状态模式将不同状态下的行为封装在不同的类中,每个类代表一个状态。 (1)Context:定义了与客户程序的接口,它保持了一个ConcreteState的代表现在状态的实例。 (2)State:定义了状态接口,它的各个子类封装了在各种不同状态下的行为。 (3)ConcreteState子类:封装了在各种不同状态下的行为。示例开关有开和关两种状态public class Cont
2017-07-15 00:05:59 6156
原创 设计模式-行为型软件设计模式(五)
策略模式介绍策略模式定义了一系列的算法,将每一个算法封装起来,并且使它们之间可以相互替换,策略模式让算法的变化不会影响到使用算法的客户。 (1)Stragegy:定义了一个共同的接口。所有具体的算法类实现这个接口。环境类Context使用这个接口调用具体的算法类。 (2)ConcreteStragegy:封装了具体的算法,实现同一个接口。 (3)Context:环境类用于配置一个具体的算法
2017-07-15 00:05:42 5936
原创 设计模式-行为型软件设计模式(四)
中介者模式介绍中介者模式目的是将所有对象之间的交互细节抽象到一个独立的类中,这个类叫做中介者类,每个对象任然负责提供原来设计的服务,只是对象之间不再直接的交互,而是通过中介者类。 (1)Mediator:中介者接口。 (2)ConcreteMediator:具体的中介者类,可以有多个中介者。当只有一个中介者类时,Mediator可以省略。 (3)Colleague:参与者对象接口。 (4
2017-07-15 00:05:18 6013
原创 设计模式-行为型软件设计模式(三)
命令模式简介命令模式的目的是解除调用者和接受者之间的耦合。命令模式为相应客户请求的行动创建一个抽象,也就是设计一个命令接口类,用于声明一个共同的接口。该接口有一些具体的实现类,每个实现类代表一个不同类型的客户请求和相应的处理。 (1)客户类创建必要的接收器(Receiver)对象。 (2)客户类创建一个适当的命令(Command)对象并且将在步骤(1)创建的接收器对象配置给它。 (3)客户
2017-07-14 13:25:50 6239
原创 设计模式-行为型软件设计模式(一)
迭代器模式迭代器模式的关键思想是将对列表的访问和遍历从列表对象中分离出来,放入一个独立的迭代器当中。迭代器类定义了一个访问该列表元素的接口。迭代器类所提供的方法负责跟踪当前的元素,即它知道哪些元素已经遍历过了,哪些元素还没有被遍历。 迭代器模式能够提供一种方法按照顺序访问一个聚合对象中的所有元素,而又不需要暴露该对象的内部表示。 (1)aggregate:聚合接口,其实现子类将创建并且维持一个一
2017-07-14 12:39:16 7503
原创 设计模式-结构型软件设计模式(四)
桥接模式简介桥接模式使得系统可以沿着两个或者多个维度进行独立地增加或者变化,而这种变化又不会对现有的类产生影响。桥接模式将一个软件设计的抽象部分与实现部分分离,使它们都可以独立地变化。 (1)abstraction接口:定义抽象部分的接口,维持Implementor对象的一个参考(Reference)。 (2)RefinedAbstraction类:是一个实类,继承或者实现Abstraction
2017-07-14 12:38:13 7080
原创 设计模式-结构型软件设计模式(三)
外观模式简介外观模式用来隐藏一个软件系统的所有内部细节,只提供给客户类一个外观类,或者叫做接口类。客户类直接调用该外观类的方法即可,而不必担心这些方法对其他类的调用的内部细节。外观模式角色(1)外观角色:这是外观模式的核心,它被客户角色调用,因此它熟悉子系统的功能。其内部根据客户角色已有的的需求预定了几种功能组合。 (2)子系统角色:实现子系统的功能,对它而言,外观角色就和客户角色一样是未知的,它
2017-07-14 12:37:45 7049
原创 设计模式-行为型软件设计模式(二)
访问者模式模式简介访问者模式在处理数据结构较稳定,但是作用于其上的操作需要经常变化的问题时是非常有效的。 访问者模式是指作用于一个对象结构体上的元素的操作。访问者可以使用用户在不改变该结构体中的类的基础上定义一个新的操作。 (1)Visitor:为每个Element的类声明了一个访问操作。该访问操作的名字最好要包含被访问的类的名字,以便确认该访问操作是专门针对哪个具体的类。 (2
2017-07-13 22:41:43 5991
原创 设计模式-结构型软件设计模式(二)
适配器模式介绍在软件设计中,为了解决接口不一致的问题,两个软件模块之间往往也需要通过一个适配器类Adapter进行是适配。这样的模式叫做适配器设计模式。 适配器模式分为两种,一种是类适配器,一种是对象适配器模式。 (1)类适配器 (2)对象适配器 示例现在有一个类student,现在要在要添加一个功能read(); 类适配器class student{ public St
2017-07-13 20:07:02 7669
原创 设计模式-结构型软件设计模式(一)
组合模式简介组合模式允许一致的对待复杂和原始对象的接口,在面向对象编程技术中,组合对象是一个或者多个相似对象构成的对象,各个对象有相似的功能。关键的概念是客户类以相同的方式对待单独的对象与一组对象,即所谓的组合对象。 组合模式有时候又叫做部分-整体模式,在树形结构中模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 组合模式将
2017-07-13 18:58:01 7214
原创 设计模式-创建型软件设计模式(三)
单例模式简介单例模式是指确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。思路实现单例模式的思路:将构造方法声明为private。并且提供一个可以获得实例的方法,该方法必须是静态方法,并且确保无论客户调用该方法多少次,得到的始终是同一个对象。示例public class student{ private static student stu; public static Si
2017-07-13 17:04:22 6462
原创 设计模式-创建型软件设计模式(二)
生成器模式简介生成器模式与工厂方法模式二者有相似之处,二者都属于创建型设计模式,并且都将对象创建的任务交给一个单独的类去完成。 生成器模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式按照一个指定的过程逐步创建一个复杂的对象,他允许用户只通过指定复杂对象的类型和内容就可以构架它们,而不必知道内部的具体构建细节。生成器的主要思想是抽象出构建对象的步骤,使得这些步
2017-07-13 15:51:28 6647
原创 设计模式-创建型软件设计模式(一)
主要介绍下面的三个设计模式: (1)工厂模式与抽象工厂模式 (2)生成器模式 (3)单例模式工厂模式工厂模式可以分为简单工厂模式,工厂模式以及抽象工厂模式。简单工厂模式简单工厂模式的特点是仅仅有一个具体的创建者类,并且此类中包含一个静态的工厂方法factory().首先定义一个接口public interface food{ abstract String getInsurInfo
2017-07-13 14:30:57 7850
转载 TCP协议如何来保证传输的可靠性
TCP提供一种面向连接的、可靠的字节流服务。 面向连接:意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 TCP通过下列方式来提供可靠性: 1、应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。
2017-07-12 21:39:30 4674
转载 机器学习中的相似性度量
欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。(1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:(2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:(3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离: 也可以用表示成向量运算的
2017-07-05 19:37:31 28196
原创 排序算法总结
最近复习了一下排序算法,所以简单的做了一个整理。介绍首先,排序按照文件是否放在内存分为,内部排序和外部排序。 其中内部排序又分为选择排序,交换排序,插入排序,归并排序以及分配排序。 插入排序分为直接插入排序,希尔排序。 选择排序分为直接选择排序,堆排序。 交换排序分为冒泡排序,快速排序。插入排序直接插入排序基本思想:将待排序表看作左右两部分,其中左边为有序区,右边为无序区,整个排序过程就是将
2017-07-03 19:31:07 24042 1
转载 C++中使用内存映射文件存取struct,并用指针访问
#include <iostream>#include <Windows.h>#define OK 0#define MMF_FILE_SIZE (1024*512)const char* mmf_file_name = "d:\\mmf.txt";const char* mmf_share_name = "testmmf";//定义内存映射文件相关的全局变量HANDLE file_hand
2017-07-03 15:52:22 4551
转载 内存映射文件原理探索
原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间 中一块大小相同的区域之间的一一对应,如图1中过程1所示。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存在的。在内存映射的过程中,并没有实际的数据拷贝,文件没有被载入内存,只是逻辑上被放入了内存,具体到代码,就是建立
2017-07-03 15:46:57 4309
原创 C++内存处理
介绍C++中经常操作的内存可以分为五个部分。 (1)栈区(stack):由编译器自动分配和释放,存放函数的地址,函数参数,局部变量等。 (2)堆区(heap):一般由程序猿分配和释放,如果对分配的内存不释放,容易造成内存泄漏。 (3)全局区(静态区):全局变量和静态变量的存储放在一起。初始化的全局变量和静态变量放在一起,未初始化的全局变量和静态变量放在相邻的另一个块区域,程序结束后由系统释放。
2017-07-02 21:21:52 22264
对于一个C++项目,怎么用VS打开,没有sln文件
2016-09-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人