自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 vscode无识别已有的maven java项目(visual studio code not recognizing java project)

visual studio code not recognizing java project

2024-01-04 11:39:44 1356

原创 TCP

TCP 头TCP的包是没有IP地址的,IP层上才有。但是有源端口和目标端口。一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议。但因为这里只是说TCP协议,所以,这里我只说四元组。注意上图中的四个非常重要的东西:Sequence Number是包的序号,用来解决网络包乱序(reordering)问题。Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。W

2021-05-08 17:25:54 425

原创 1502. 判断能否形成等差数列

给你一个数字数组 arr 。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列。如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。示例 1:输入:arr = [3,5,1]输出:true解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。示例 2:输入:arr = [1,2,4]输出:false解释:无法通过重新排序得到等差数列。面试要求: 时间复杂度 o(

2021-04-01 21:13:17 288

原创 面试题_删除空格并返回空格数

遇到过的一个面试题题目用c语言写一个函数,把字符串里面的空格全部去掉,并返回删除的空格的个数,不允许新开辟空间,只能申请简单类型的自动变量。时间复杂度O(n)#include <iostream>#include <string>using namespace std;int del_blanks(char * str){ if (str == nullptr) { return 0; } int res = 0; ch

2021-03-21 22:50:03 378

原创 132. 分割回文串 II

题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。示例 1:输入:s = “aab” 输出:1 解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。 示例 2:输入:s = “a” 输出:0 示例 3:输入:s = “ab” 输出:1方法用动态规划得到回文串查询表dp[i] 表示 分割s[ : i] 所需要的最少次数状态转移:dp[i] = s[0: i] == 回文 ? 0 : min( [dp

2021-03-14 17:15:06 66

原创 基本计算器II

题目描述给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = “3+2*2” 输出:7示例 2:输入:s = " 3/2 " 输出:1方法:每次遍历到数字末尾时,根据 数字前一个符号 来决定计算方式:加号:将数字压入栈;减号:将数字的相反数压入栈;乘除号:计算数字与栈顶元素,并将栈顶元素替换为计算结果。c实现#define Max 100int calculate(char * s){ int res =

2021-03-12 23:29:41 73

转载 SO_REUSEADDR和 SO_REUSEPORT 的区别

Welcome to the wonderful world of portability... or rather the lack of it. Before we start analyzing these two options in detail and take a deeper look how different operating systems handle them, it should be noted that the BSD socket implementation is th

2021-03-01 16:03:22 329 1

原创 gRpc原理_epool-poling引擎实现原理

当前gRpc 的pollset是基于epoll实现,主要有以下几个点:pollset 和epoll 一一对应 一个cq 对应一个pollset 多个线程可以消费一个cq,需要业务自己创建消费线程,调用grpc_completion_queue_next() 或者grpc_completion_queue_pluck() 一个fd可以被多个pollset引用到(惊群问题的原因),也就是可以存在于多个cq pollset中当一个事件产生,由于多个线程可能都在消费这个pollse...

2021-02-27 18:25:48 867

原创 c++相关参考资料

CPP-Templates-2nd–

2021-02-19 17:35:10 99 1

原创 TCP User Timeout (翻译)gRpc deadline 相关

原文摘要提供一个选项来设置Linux内核2.6.37及更高版本的TCP套接字选项TCP_USER_TIMEOUT。背景TCP_USER_TIMEOUT是一个套接字选项,从内核版本2.6.37开始在Linux上可用。如Linux手册页所述,“此选项将uint作为参数。当该值大于0时,它指定在TCP强制关闭相应的连接并将ETIMEDOUT返回给应用程序之前,传输的数据可能保持未确认的最大时间(毫秒)。如果将选项值指定为0, TCP将使用系统默认设置。"在编写此提议时, gRPC Core面临着一个问题

2021-02-08 15:30:15 1543

转载 联盟广告平台架构及实践

导读:随着大数据的快速发展,大数据应用已经融入各行各业,在很多场景中得到了商业化实践。今天和大家分享下 58 同城联盟广告平台架构及实践。主要包括:58 联盟广告 SSP 媒体平台、投放平台、程序化创意等核心模块的设计和实现,以及对联盟业务的思考与展望。联盟广告平台简介1.业务概述58 联盟广告平台主要是以 58 站内的广告主为基础并结合站外流量,帮助 58 站内广告主获取站外潜在用户,从而实现流量变现。流量获取主要通过 SSP 和 DSP 这两种方式。联盟 SSP 平台可...

2021-02-01 15:22:56 4117

原创 快排算法

递归版int Partition(std::vector<int> &data, int left, int right){ int i = left; int j = right; int pivotValue = data[left]; while (i < j) { while (data[j] > pivotValue && i < j) { j--; }

2020-12-23 16:59:55 138 1

原创 常见函数实现memcpy

void *Mymemcpy(void *dest, void *src, size_t size){ if(dest == nullptr || src == nullptr) return nullptr; void *result = dest; if(dest < src || (char*)src+size < (char*)dest) { // 没有内存重叠 while(size--) {

2020-12-21 17:31:30 163 1

原创 TCP/IP 协议体系结构模型

概念多接口: 任何具有多接口的系统,比如:路由器,主机网桥:在链路层上对网络进行互联,而路由器是在网络层上的互联TCP/IP 标准上只有四层, 五层模型只是综合OSI模型的7层。TCP/IP 分层ICMP是IP协议的附属协议,IGMP是Internet组管理协议。...

2020-12-20 17:28:34 612

转载 秒杀系统的艺术

作者:绘你一世倾城链接:https://juejin.im/post/5d84e21f6fb9a06ac8248149“每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!12306 抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 .

2020-12-15 15:21:00 139

转载 申探社:深入互联网广告中的出价模式(上)— 基础出价模式

转载:一. 导读互联网广告中的出价模式发展经历了许多变迁。从一开始的CPM,到CPC出价模式,随着Facebook的oCPX (如oCPM/oCPC) 成为了网红,之后的双出价,激活且付费,Facebook的AEO及VO等等新一代的出价模式也层出不穷。本系列文章会介绍并使用一个较为通用的“四点三率两控制一加强”分析框架,对各个出价模式进行解析。相信大家阅读完本系列文章后,会对当前最流行的出价模式建立较为全面的理解。本系列文章分上中下三篇,上篇会先简单介绍CPM/CPC/CPA等基础出价模式的具体商业逻

2020-12-07 10:53:39 385

原创 常用游览器插件

OctotreeSwitchOmega

2020-09-23 11:49:15 84

转载 谈谈 C/C++ 中的 volatile

转载:https://liam.page/2018/01/18/volatile-in-C-and-Cpp/最近在讨论多线程编程中的一个可能的 false sharing 问题时,有人提出加 volatile 可能可以解决问题。这种错误的认识荼毒多年,促使我写下这篇文章。约定Volatile 这个话题,涉及到计算机科学多个领域多个层次的诸多细节。仅靠一篇博客,很难穷尽这些细节。因此,若不对讨论范围做一些约定,很容易就有诸多漏洞。到时误人子弟,就不好了。以下是一些基本的约定:这篇博文讨论的 volat

2020-09-21 15:45:33 534

原创 进程间通信

管道:管道的概念:管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:其本质是一个伪文件(实为内核缓冲区)由两个文件描述符引用,一个表示读端,一个表示写端。规定数据从管道的写端流入管道,从读端流出。管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。管道的局限性:① 数据自己读不能自己写。② 数据一旦被读走,便不在管道中存在,不可反复读取。③ 由于管道采用半双工通信方式。因此,数据只能在一个方向上

2020-09-04 14:54:00 175

原创 使用指定的glibc

在当前测试程序路径下执行:可以先ldd 看看libgcc_s.so.1 和libstdc++.so.6 用到那个路径下的,在当前路径下创建软链接到特定动态库:ln -s /lib64/libgcc_s-4.8.5-20150702.so.1 libgcc_s.so.1ln -s /lib64/libstdc++.so.6.0.19 libstdc++.so.6执行程序:LD_PRELOAD=/data/glibc-2.28/lib/libc.so.6 LD_LIBRARY_PATH=./ /d

2020-08-03 20:22:57 2990

原创 知识图谱---后台架构技术

(Java)后端架构师技术图谱https://github.com/ermeiyao/architect-awesome(c++)语言特性C++ primeThe C++Standard LibraryEffective modern c++Effective c++More Effective c++Effective STL编译构建CMAKEbladegcc/g++《程序员的自我修养—链接、装载与库》并发编程Linux 多线程服务端编程:使用 muduo C+

2020-08-01 16:50:58 517

原创 glibc 2.17 引发的‘‘内存泄漏现象‘‘

前几天在定位一个很奇怪的"内存泄漏"问题。我们的服务在arm下面跑到好好的,但是在x86下面的环境下面内存运行时间久了就上涨。用vargrind工具检查内存,也没发现什么问题,说明我们的代码方面应该试ok的。对比一下两套环境的不同,发现libc和libstdc++的版本不同,所以就怀疑应该试这版本上的差异导致内存管理上的不同表现。经过测试数据的对比,如果将libc 升级到高版本 比如2.28 运行期间内存表现就会很稳定。原因在于,高版本的libc 的 freee 会定期调用 systrim ,将内存还给

2020-08-01 16:34:05 980

原创 C++ 并发编程---内存模型

基础C++程序中的所有数据都是由对象(objects)构成,一个对象都会存储在一个或多个内存位置上。位域:虽然相邻位域中是不同的对象,但仍视其为相同的内存位置四个原则:每一个变量都是一个对象,包括作为其成员变量的对象。每个对象至少占有一个内存位置。基本类型都有确定的内存位置(无论类型大小如何,即使他们是相邻的,或是数组的一部分)。相邻位域是相同内存中的一部分。内存位置和并发关系当两个线程访问不同(separate)的内存位置时,不会存在任何问题;当两个线程访问同一(same)个内存位

2020-07-20 15:38:08 286

原创 广告零碎概念

广告填充率 广告填充率 = 广告展示数/广告展示机会数*100%.http://www.woshipm.com/marketing/3372059.htmlDeepLink :DeepLink(深度链接)就是支持在移动App自由跳转的技术. https://zhuanlan.zhihu.com/p/20694818. https://cloud.tencent.com/developer/article/1475330RTA 广告 RTA 即Realtime API的简称,用于满足广告..

2020-07-20 10:27:59 102

原创 同步IO和异步IO

同步IO和异步IO五种io模型:1.1 阻塞IO1.2 非阻塞IO模型1.3 IO复用模型1.4 信号驱动IO模型1.5 异步IO五种io模型:[1] blocking IO - 阻塞IO[2] nonblocking IO - 非阻塞IO[3] IO multiplexing - IO多路复用[4] signal driven IO - 信号驱动IO[5] asynchronous IO - 异步IO前面四种都是同步io.一般情况下,一次网络IO读操作会涉及两个系统对象:(1) 用户进程(

2020-07-17 18:06:04 435

原创 C++ 对象的成员函数反射

使用场景,假如你需要解析一个消息,里面有各种消息结构,例如你需要解析一个protobuf结构,一般的写法,你需要判断每个字段是否存在,然后存在的话再做解析,如果这个消息字段很多的话,你可能要写一堆的if。这边有个更好的方法,就是通过一个map存储解析这个pb结构的成员函数,实现成员函数的反射。给个例子:class Base {public: Base(std::string ...

2020-02-26 11:18:01 1194 2

原创 ssh 免密配置

ssh 免密配置Linux 建议使用自己的个人账号。如果本地已经有id_rsa.pub,可以直接使用,没有的话用git bash 执行:ssh-keygen -t rsa 生成一个, 然后上传id_rsa.pub到服务器,并拷贝到~/.ssh/authorized_keys后面执行:cat id_rsa.pub >> ~/.ssh/authorized_keys没有auth...

2020-01-21 14:44:24 1061 1

原创 哑结点

哑结点 哑结点其实就是放在第一个存放数据结点之前、头结点之后的结点。加入哑结点之后就可以使所有数据结点都有前驱结点,这样就会方便执行链表的一些操作。...

2018-06-25 23:00:13 6057 5

原创 Linux内存管理相关

首先,了解几个概念。BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)

2017-04-17 18:53:53 239

原创 在C++中调用DLL中的函数

在C++调用dll

2017-04-01 23:31:29 8952

转载 托管DLL和非托管DLL的区别

首先解释一下,托管DLL和非托管DLL的区别。狭义解释讲,托管DLL就在Dotnet环境生成的DLL文件。非托管DLL不是在Dotnet环境生成的DLL文件。托管DLL文件,可以在Dotnet环境通过 “添加引用” 的方式,直接把托管DLL文件添加到项目中。然后通过 Using DLL命名空间,来调用相应的DLL对象 。非托管DLL文件,在Dotnet环境应用时,通过 DllImport 调用。C

2017-04-01 21:58:01 849

原创 RSA加密解密C++实现

实现过程: 1 随意选择两个大的质数p和q,p不等于q,计算N=p*q。 2 根据欧拉函数,求得r = (p-1)(q-1) 3 选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质) 将 p 和 q 的记录销毁。-大数模幂运算快速算法 参考网址代码:#include <string>#include <iostream>#in

2017-03-30 17:34:42 14456 2

原创 PCA人脸识别

PCA人脸识别(带matlab程序)前几天上数字图像处理的时候学习了PCA人脸识别,趁热打铁,做一些学习记录。PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。在人脸识别上面,用PCA的主要目的就是把原来维度很高的图像,提取图像的主要成分(用于识别

2017-03-21 23:20:56 5143 2

原创 帧间的SAD和SATD

帧间的SAD和SATD

2016-10-15 13:10:56 3103

手写汉字识别软件设计

基于深度学习的手写汉字识别系统设计,系统由python、tensorflow和tkinnter实现,可以对3755类汉字进行分类,准确性在96%左右。

2018-07-08

yale人脸数据库

2017-03-21

空空如也

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

TA关注的人

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