自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

转载 分布式存储可靠性技术

在传统存储系统中,数据可靠性完全依赖本地RAID,即独立磁盘冗余阵列,其基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而提升本地数据可靠性,但是对于大规模数据中心、云计算等应用来说,数据如果仅本地可靠,阵列损坏时,会对用户数据造成不可估量的损失。数据副本放置策略、数据一致性。在分布式系统中,采用何种策略进行数据的保护,还需结合自身业务与场景进行评估。

2023-05-25 11:17:53 729

原创 MySQL之分区

分合思想技术不要拘泥于一点,重要的是编程思想,即思想是最重要的。当数据量大的时候,需要具有分的思想去细化粒度。当数据量太碎片的时候,需要具有合的思想来粗化粒度。表分区介绍InnoDB存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。段段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在InnoD...

2020-04-01 17:05:06 362

原创 复杂四则运算程序实现

# include<iostream>using namespace std;void removeSpace(char *str){ char *p1=str,*p2=str; while ((*p1=*p2++)) { if (*p1 != ' ') { p1++; } }}bool ...

2020-03-20 22:17:18 1385

原创 cookie,session,token

CookieCookie是服务器委托浏览器存储的一些数据。即Cookie是由服务器生成,然后发送给浏览器,浏览器把cookie以kv形式保存下来。下一次请求同一网站时会把该cookie发送给服务器。客户端可以设置cookie的以下选项: expires, domain, path, secure(只有在https协议的网页中, 客户端设置secure类型cookie才能生效), 但无法设置ht...

2020-03-06 10:02:36 200

go语言之RWMutex

参考文献

2020-02-26 10:24:33 1172

原创 go语言之Mutex

Mutex can be in 2 modes of operations: normal and starvation.In normal mode waiters are queued in FIFO order, but a woken up waiter does not own the mutex and competes with new arriving goroutines ov...

2020-02-25 16:29:24 455

原创 hash冲突解决方法

现象关键字keykeykey和元素存储位置ppp建立了一个对应关系HHH,使得p=H(key)p=H(key)p=H(key),H称为hash函数。而hash冲突:即数学中的多对一的场景,即对∀key1,key2且key1≠key2,有H(key1)=H(key2)\forall key1,key2且key1\ne key2,有H(key1)=H(key2)∀key1,key2且key1​=k...

2020-01-06 10:20:24 170

原创 web前端人生——html

为什么存在这么多浏览器——主要有利润可寻。浏览器内核分为两部分——渲染引擎和JS引擎。渲染引擎:负责取得网页的内容(html,xml、图像等等)、整理信息(例如加入css等),以及计算网页的显示方式,然后输出至显示器或打印机。不同的浏览器的内核对同一网页的语法解释会有所不同,所以渲染效果也不相同。JS引擎则是解析JavaScript语言,执行JavaScript语言来实现网页的动态效果。浏览...

2019-01-04 22:02:12 262

原创 前端人生——CSS(盒子,浮动,定位)

出现原因:样式写在骨架里面,会变得很复杂。应该达到——结构就应该写结构。外观就应该写外观。CSS:控制外观显示样式CSS书写位置内部样式表(样式与结构部分分离)&amp;amp;amp;amp;lt;head&amp;amp;amp;amp;gt; ... &amp;amp;amp;amp;lt;style&amp;amp;amp;amp;gt; 选择器{属性:值;} /*选择器----选择标签*/ th{color: skyblu

2019-01-04 22:02:02 2599 1

转载 分布式之数据库和缓存双写一致性方案解析

为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三...

2018-11-05 09:33:52 215

转载 从输入网址到最后浏览器呈现页面内容,中间发生了什么?

准备阶段当你在浏览器中输入网址(例如www.coder.com)并且敲了回车以后, 浏览器首先要做的事情就是获得coder.com的IP地址,具体的做法就是发送一个UDP的包给DNS服务器,DNS服务器会返回coder.com的IP, 这时候浏览器通常会把IP地址给缓存起来,这样下次访问就会加快。比如Chrome, 你可以通过chrome://net-internals/#dns来查看。有...

2018-10-30 14:51:32 225

原创 索引技术

索引技术索引是对数据库表中一个或多个列的值进行排序的结构。优点:大大加快检索速度;创建唯一性索引,保证数据库表中每一行数据的唯一性;加速表和表之间的连接;在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间——大大减少服务器需要扫描的数据量;帮助服务器避免排序和临时表;将所及I/O变为顺序I/O。但也有缺点:索引需要占用数据表以外的物理存储空间;创建索引和维护索引要花费一定的...

2018-10-25 19:12:05 1485

原创 全文索引

全文索引——非结构化数据

2018-10-25 19:11:42 163

转载 北大教授警告中老年人:千万不要死于无知!看看你做错多少

北大教授警告中老年人:千万不要死于无知!看看你做错多少演讲者:齐伯力(北京大学医学院附属医院内科主任)去年我才从美国回来,此前在斯坦福呆了六年。今天我要给大家介绍很多新东西。北京市普查工作结束,北京市得了两个冠军,一个是高血压冠军,一个是高血脂冠军,很遗憾。有文件下达了,要求各单位多听最新保健知识,我就是奔着这个目的来的现在,死亡率最高的是30至50岁的人。年龄不是个宝,血脂高很危险。大家...

2018-10-24 08:17:25 723

原创 C++智能指针

C++智能指针具体详细细节见https://www.cnblogs.com/lanxuezaipiao/p/4132096.htmlvoid remodel(std::string &amp; str){ std::string * ps = new std::string(str); ... if (weird_thing()) throw e...

2018-10-23 22:59:01 165

原创 C++内存常见错误

C++内存常见错误在系统开发过程中出现的bug相对而言是比较好解决的,花费在这个上面的调试代价不是很大,但是在系统集成后的bug往往是难以定位的bug(最好方式是打桩,通过打桩可以初步锁定出错的位置,如:进入函数前打印日志,离开时再次打印日志)。而这些难以定位的bug基本分为2类:内存错误和并非问题。本文总结的时内存错误。 内存泄露 果在堆栈上分配的内存使用完成后没有释放就会造成内存...

2018-10-23 19:52:50 330

原创 给出一个表达式,求取表达式的值

给出一个表达式,求取表达式的值#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;vector&gt;#include &lt;sstream&gt;#include &lt;stack&gt;using namespace std;/***思路:1.字符串预处理,针对可能出现的“{,},[,],-”等特殊...

2018-10-19 19:13:01 1142

原创 操作系统常问的面试题目

操作系统常问的面试题目 linux进程fork复制了父进程的哪些资源 fork采用了写时复制技术,而写时复制的核心是:只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。故刚开始只复制了父进程的页表以及给子进程创建进程描述符。具体详细细节见https://blog.csdn.net/hycxag/article/details/83048446 孤儿进程,...

2018-10-15 10:27:02 319

原创 网络相关的面试题

网络相关的面试题 服务器端不调用accept会发生什么 不调用accept时,也能建立连接,即三次握手完成。但不能进行API的控制,即不能进行继续通讯。以及建立好连接的队列大大小为:backlog。从而在Unix系统服务器中,若客户端调用 connect() ,客户端连接超时失败。而在Linux系统中,若客户端调用 connect()。TCP 的连接队列满后,Linux 服务器不会拒绝连...

2018-10-15 09:43:16 551

原创 深入理解tcp网络编程中的send和recv

深入理解tcp网络编程中的send和recv每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应 socket的接收缓冲区内。即不管进程是否读取socket,对端发来的数据都会...

2018-10-14 22:29:01 2149 1

原创 避免僵尸进程的方法

避免僵尸进程的方法何为僵尸进程如果父进程先退出,子进程自动被 init 进程收养,不会产生僵尸进程。 如果子进程先退出。父进程 wait() 处理(即父进程调用wait/waitpid方法来处理),则僵尸进程会被父进程清理;如果父进程不用 wait() 处理,则僵尸进程会在父进程退出之前一直存在。当然,父进程退出后,僵尸子进程会被 init 收养,init 进程会自动调用 wait() ...

2018-10-14 20:44:11 472

原创 fork,vfork,clone函数的区别及其联系

fork,vfork,clone函数的区别及其联系fork fork函数用于创建子进程,典型的调用一次,返回两次的函数,其中返回子进程的PID和0,其中调用进程返回了子进程的PID,而子进程则返回了0。当发出fork()系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程(把所有的资源复制给新创建的进程,,进程的pid号不一样)。但这种复制行为非常耗时,因为它需要:...

2018-10-14 19:16:21 618

原创 IP地址相关细节

IP地址相关细节在逻辑上标记一台唯一的电脑,用于更好的查找此电脑的位置。IPV4 ipv4的分类:4个字节(点分10进制表示) A类地址:0开头,接着7位网络号(共1个字节),后面24位主机号B类地址:10开头,接着14位网络号(共2个字节),后面16位主机号C类地址:110开头,接着21位主机号(共3个字节),后面8位主机号号D类地址:1110开头E类地址:11...

2018-10-12 13:46:15 779

原创 C++资源管理技术之RAII

C++资源管理技术RAII是“Resource Acquisition Is Initialization”的首字母缩写。也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。我们在C++中经常使用new申请了内存空间,但是却也经常忘记delete回收申请的空间,容易造成内存溢出,于是RAII技术就诞...

2018-10-10 18:48:50 205

原创 new/delete、malloc/free以及new[]/delete[]的区别和联系

new/delete、malloc/free以及new[]/delete[]的区别和联系 malloc函数 全称为memory allocation,原型为extern void *malloc(unsigned int num_bytes);用处:用来分配长度为num_bytes字节的内存块。如果分配成功则返回被分配内存的指针;若分配失败则返回空指针NULL。当内存不再私用时,...

2018-10-10 18:48:20 925

原创 构造函数、复制构造函数、赋值运算符的调用

构造函数、复制构造函数、赋值运算符的调用结合下面的例子来讨论三者的调用顺序#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;class Foo {public: Foo() { cout &lt;&lt; "Foo constructor" &lt;&lt; endl; } Foo(c...

2018-10-10 16:56:14 251

原创 C++中临时对象即返回值优化

C++中临时对象即返回值优化

2018-10-10 16:55:16 229

原创 常见的算法题目

常见的算法题目0-1背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 ,其价值为  。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?分析:思路1:dp[i][j]表示:在面对第 i 件物品,且背包容量为  j 时所能获得的最大价值 如果第i个物品不能放进背包,则从前i个物品中选出的最优子集的总价值等于从前i-1个物品中选出的最优子集的总...

2018-10-10 10:15:26 1029

原创 C/C++多态及其实现原理

C/C++多态及其实现原理多态的介绍多态含义为一个事物有多种形态。在C ++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。一般来说多态分为两种:静态多态:也称为编译时多态,主要包括参数多态,过载多态和强制多态。参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。如 C++语言中的函数模板和类模板属于参数多态。...

2018-10-09 14:40:59 3319 1

转载 STL的内存管理allocator

STL的内存管理allocator1. STL容器简介 STL提供了很多泛型容器,如vector,list和map。程序员在使用这些容器时只需关心何时往容器内塞对象,而不用关心如何管理内存,需要用多少内存,这些STL容器极大地方便了C++程序的编写。例如可以通过以下语句创建一个vector,它实际上是一个按需增长的动态数组,其每个元素的类型为int整型: stl::vector&lt...

2018-10-09 09:37:09 411

原创 TCP/IP网络编程深入认识

TCP/IP网络编程深入认识 TCP网络编程中connect()、listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:connect函数:对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用...

2018-10-08 22:25:20 215

原创 常见算法题

常见算法题 的位数,即求取的大小。 首先引入Stirling公式:证明:,先证存在极限:夹逼原理。故有:,由,故存在极限。求取极限,利用wallis公式:应用:的位数的位数,即求取的大小。,将1000带入有。又故结果为:,故结果为2568位。 计算某天星期几 利用公式:。公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于...

2018-10-08 18:36:08 697

原创 C/C++编译过程

C/C++编译过程编译过程主要分4个过程:编译预处理;编译、优化阶段、汇编阶段、链接程序。 编译预处理 读取c/cpp源程序,对其中的伪指令(以# 开头的指令)和特殊符号进行处理。1. 宏定义指令如#define Name TokenString,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的 Nam...

2018-10-08 16:56:56 802

转载 STL各种数据结构及其底层实现

STL各种数据结构及其底层实现vector:底层数据结构为数组 ,支持快速随机访问 。扩容规则为:当我们新建一个vector的时候,会首先分配给他一片连续的内存空间,如std::vector&lt;int&gt; vec,当通过push_back向其中增加元素时,如果初始分配空间已满,就会引起vector扩容,其扩容规则在gcc下以2倍方式完成:首先重新申请一个2倍大的内存空间;然后将原空间的...

2018-10-08 14:25:05 1416

原创 C/C++常见面试题目

C/C++常见面试题目与编译过程相关的问题 为什么在C++里面,一个类的成员函数不能既是 template 又是 virtual 的。 因为C++的编译与链接模型是"分离"的。一个C/C++程序就可以被分开编译,然后用一个linker链接起来。这种模型有一个问题,就是各个编译单元可能对另一个编译单元一无所知。 一个 function template最后到底会被 instantiat...

2018-10-08 14:22:33 274

原创 关于n!的位数的问题

首先引入Stirling公式:n!=2πn−−−√(ne)nn!=\sqrt{2\pi n}(\frac{n}{e})^n

2017-10-13 08:56:51 411

转载 C++中的转移字符

C++中转移字符顺序 描述 表示 \’ 单引号 字节0x27(ASCII编码) \” 双引号 字节0x22(ASCII编码) \? 问号 字节0x3f(ASCII编码) \ 反斜线 字节0x5c(ASCII编码) \a 可听见钟 字节0x07(ASCII编码) \b 退格 字节0x08(ASCII编码) \f 表单Feed - 新页面 字节0x0c(A

2017-09-29 22:31:37 534

转载 函数调用约定

函数调用约定了解后用于混合语言来开发项目 _cdecl __fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈。 2、_cdecl是C和C

2017-09-29 22:04:52 163

原创 C++类中相关概念

C++类中相关概念假设A为一个类: A a():表示声明一个A类型的对象 A b:声明并定义一个A类型对象,定义使调用无参数构造函数。

2017-09-29 21:44:39 285

转载 编译器对堆栈的使用

编译器对堆栈的使用生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,他的生长方向是向下的,是向着内存地址减小的方向增长。一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,

2017-09-29 20:45:54 997 1

车牌自动识别

从一张车辆图像识别出车牌号出来

2016-06-28

PLC及监控液压设计

PLC及监控液压设计包含有在CAD中绘制的电路图,绘制了PLC的梯形图,以及实现组态的监控

2016-01-15

PLC及监控运料小车

PLC及监控运料小车里面包含有CAD绘制的电路图,PLC编写的梯形图,以及组态软件来控制

2016-01-15

空空如也

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

TA关注的人

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