2 忽晴忽雨江湖

尚未进行身份认证

暂无相关描述

等级
博文 96
排名 5w+

幂等性验证思想

引入:这段时间在做新渠道的接入,把以前的核心拿过来copy一份进行改造,在进行代码重读的时候,发现了一个好玩的东西,在申请入件的时候,需要经过一步校验,注释上写的是,对于短时间重复提交的验证。当时我就很好奇点了进去,看一看到底是什么东西,然后点开之后大吃一惊,里面做的操作是:取到这笔件的身份证信息,使用其作为标识去查询有没有这个标识的线程,如果有则返回失败,这笔件短时间内重复提交了,如果没有...

2019-06-05 16:45:25

【操作系统】内存碎片产生原因及终极解决办法

内存碎片通常分为内部碎片和外部碎片:1.内部碎片是由于采用固定大小的内存分区,当一个进程不能完全使用分给它的固定内存区域时就产生了内部碎片,通常内部碎片难以完全避免;2.外部碎片是由于某些未分配的连续内存区域太小,以至于不能满足任意进程的内存分配请求,从而不能被进程利用的内存区域。现在普遍采用的段页式内存分配方式就是将进程的内存区域分为不同的段,然后...

2019-05-04 21:22:35

【C++】关于vector<bool>

vector&lt;T&gt;标准库模版类应该是绝大多数c++程序员使用频率比较高的一个类了。不过vector&lt;bool&gt;也许就不那么被程序员所了解。关于vector&lt;bool&gt;不尝试研究一番,一般还不太容易知道其中蕴含的问题。首先得明确一点,那就是vector&lt;bool&gt;是vector&lt;T&gt;的特化版。这个特化版本要解决的问题就是存储容量的问题。...

2019-05-04 20:40:16

【C++】构造函数、析构函数抛出异常的问题

转自:http://www.cnblogs.com/fly1988happy/archive/2012/04/11/2442765.html1.抛出异常1.1抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,...

2019-04-28 21:50:42

【计算机网络】cookie和session的区别

一、cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当...

2019-04-22 20:00:56

【操作系统】系统调用的概念

“操作系统”通常包含以下两种含义:1、表示完整的软件包,包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,诸如命令行解释器、图形用户界面、文件操作工具和文本编辑器等;2、狭义上的操作系统是指管理和分配计算机资源(如CPU、RAM和设备)的核心层软件。内核负责管理分配计算机资源,作为计算机和用户之间的沟通桥梁而存在。因此就有内核态和用户态的概念。执行硬件指令可以在两种状态间...

2019-04-20 13:01:30

【算法】对于大数的操作

1.大数相加voidAdd(string&amp;s1,string&amp;s2){ intlen1=s1.size(); intlen2=s2.size(); stringret;//保存结果 reverse(s1.begin(),s1.end());//反转以后比较好算 reverse(s2.begin(),s2.end()); ...

2019-03-22 21:03:25

【C++】构造函数中必须通过初始化列表来进行初始化情况

1、类成员为const类型2、类成员为引用类型#include&lt;iostream&gt;usingnamespacestd;classA{public:A(int&amp;v):i(v),p(v),j(v){}voidprint_val(){cout&lt;&lt;"hello:"&lt;&lt;i&lt;&lt...

2019-03-20 18:37:11

【Linux】多线程和多进程 及其应用场景

一.两者区别进程是分配资源的基本单位;线程是系统调度和分派的基本单位。属于同一进程的线程,堆是共享的,栈是私有的。属于同一进程的所有线程都具有相同的地址空间。多进程的优点:①编程相对容易;通常不需要考虑锁和同步资源的问题。②更强的容错性:比起多线程的一个好处是一个进程崩溃了不会影响其他进程。③有内核保证的隔离:数据和错误隔离。对于使用如C/C++这些语言编写的本地代码,...

2019-03-10 14:57:35

【C++】const 指针与指向const的指针

最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~1.const指针的定义:  const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:type*const指针名称;  声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含...

2019-03-06 11:52:35

【C++】常见的内存泄漏及解决方法

之所以撰写这篇文章是由于前段时间花费了非常大的精力在已经成熟的代码上再去处理memoryleak问题。写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这种问题,由于当你对着一大片的代码再去处理此类的问题,此时无疑添加了解决的成本和难度。准确的说属于补救措施了。一. 什么是内存泄漏(memoryleak)? 指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内...

2019-02-26 18:19:47

一次完整的HTTP请求是怎样的??

写完了HTTP服务器项目,但是对于一个完整的HTTP请求还不是很懂,在这里总结一下,当然这里的总结只是将每个过程进行简化,并没有去深入讲解(实属小弟实力不足啊)  我们都知道,如果我们打开浏览器/www.baidu.com/几秒后就会跳转出百度的首页,接下来就讲解一下这个过程!!1.解析URL  首先浏览器会检测这个url是否正确存在,如果不合法,将会返回一个默认的搜索引擎。...

2019-02-26 17:49:24

【Linux】线程安全的单例模式以及计算密集型线程和IO密集型线程

一.单例模式1.含义一个类只能实例化出一个对象2.单例模式实现的两种方式饿汉模式我们在程序运行之初就将对象创建好,就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。是以空间换时间的做法。这样程序运行中想要调用这个实例时都可以直接使用。举个例子:就像是一个人在吃完饭后立刻就去将碗洗了,这样以便于在下一次开饭的时候可以马上吃到饭。...

2019-02-16 15:04:25

【linux】send和recv函数解析

1. send函数int send( SOCKET s, const char FAR *buf, int len, int flags );  不论是客户端还是服务器端应用程序都用send函数来向TCP连接的另一端发送数据。客户端程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的:第一个参数指定发送端套接字描述符;第二个参...

2019-02-15 20:52:38

【C】堆区和栈区的区别

 一.程序内存的区域​二.堆和栈的区别一.程序内存的区域                                      1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的...

2019-01-26 12:43:45

【C++】智能指针(后续)

上篇文章我们讲了几种智能指针原理以及实现方法,这篇文章我们主要讲一下shared_ptr的线程安全问题和循环引用问题。目录 一.线程安全问题 二.循环引用一.线程安全问题shared_ptr的线程安全问题存在两方面1.由于shared_ptr的原理是多个对象共用引用计数,那么在两个线程的智能指针同时进行++或者--操作时就会出现问题。假设引用计数的初始值是1,在两个线...

2019-01-19 16:26:53

【C++】面向对象的三大特性

封装:封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。继承:  继承来源于现实世...

2019-01-15 18:13:07

【C++】const修饰的成员函数

在日常学习中总是碰到const修饰的成员函数,自己也总是稀里糊涂的,只能是靠着编译器来区分const和非const成员函数的相互调用关系,今天在这里总结以下。一.const修饰成员函数的格式在成员函数的后边加上constvoiddisplay()const { swap(5); cout&amp;lt;&amp;lt;&quot;display()&quot;&amp;lt;&amp;lt;endl;...

2019-01-14 15:43:37

【C++】智能指针

目录一.什么是智能指针?二.为什么需要智能指针??三.思维导图​ 四.模拟实现三个智能指针1.auto_ptr 2.unique_ptr3.shared_ptrshared_ptr的线程安全问题和循环引用的解决方法下篇文章在做分享一.什么是智能指针?   智能指针包括两部分:   1.RAII      RAII(Resou...

2019-01-13 17:34:17

【Linux】vim的简单配置

vim是从vi发展出来的一个文本编辑器。功能丰富,在程序员中被广泛使用,而且可以根据自己需要对其进行配置,下面我们来介绍一些vim的基本配置。 首先将你的Linux切换到超级用户,输入命令su,输入密码再回车切换到root用户,cd进入当前用户主工作目录,输入vim.vimrc进行vim配置. 以下是我的配置文件,值得说明的一点是最后一个设置setfiletype=c是设置默认...

2018-12-09 19:12:45
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得