自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python笔记(一)

近来准备学习一门脚本语言, 看来Python是东西比较多的,我想往自动驾驶方向靠拢,而且智能驾驶方向需要Python技能。运行python脚本, 直接使用python + 文件名即可。 print("hello, world.") huo print('Hello, word.')双引号和单引号的作用是一样的。 从键盘中输入: input('tips'), 括号是输入时的提示相关词。...

2022-06-19 19:11:22 200 1

原创 项目应用层协议XML、JSON和protobuf(未完待续)

协议是一种约定,通过约定,不同的进程可以对一段数据产生相同的理解,从而可以相互协作,存在进程间通信的程序就一定需要协议。 我接触到的项目中基本上在使用XML、JSON等。 XML的使用可以参考我之前的文章《XML2的使用》做某广播系统的时候, 见到代码中的注释里写着序列化和反序列化, 然后我去百度了相应的含义。 序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。序列化的代码就是把对象里存储的信息转成了...

2021-02-22 02:22:43 365

原创 从全民K歌中学习Redis的使用

​ 全民K歌是一款K歌软件,是少数几个已经做到上市的K歌软件,当然还有一款唱吧。那么我们就从全民K歌的业务层来展示如何学习Redis。首先全民K歌在消息机制中用了生产者-消费者模型, 客户端是消费者消费服务器发送过来的消息,应该是用了Kafka这样的消息队列。业务代码采用PHP或Golang这类支持热更新的语言。 首先,先介绍Redis有哪些结构, 然后全民K歌中如何使用这些数据结构。 字符串类型 string 哈希类型 hash 列表类型 list...

2021-02-15 21:26:49 251

原创 从底层协议的角度来浅谈Linux网络编程(未完待续)

近来做了一个网络工具项目, 发现网络知识在整个项目中起到了举足轻重的作用,同时也能加深对网络知识的了解, 进而我对《高性能服务器编程》中书的知识点的加强。 那么来说说该怎么学习一下网络编程。 首先,肯定是要学习协议, 但是个人建议先把代码运行起来,同时配合使用tcpdump或wireshark来学习。 wireshark有图形化界面,更好操作。...

2021-02-08 23:52:54 236

原创 如何在Linux上安装MongoDB并成功启动

安装:创建好必要的文件夹:sudo mkdir -p /opt/mongodbsudo mkdir -p /data/db 创建数据库文件夹(默认的数据库文件的位置是/data/db,启动时会自动创建)sudo mkdir -p /opt/mongodb/logs 创建目录sudo touch /opt/mongodb/logs/mongodb.log 创建空文件! 注意不是目录而是文件1.下载MongoDBwget https://fastdl.

2020-11-10 20:36:11 485

原创 散列(哈希)实现以及如何解决散列冲突

近来上班划水划得起飞,又有时间可以写文章了。 先总结一下《数据结构与算法分析》中散列的定义:散列函数:每个关键字被映射到从0到Tablesize -1这个范围中的某个数,并且被放到适当的单元中。这个映射关系被称为散列函数。散列冲突(哈希冲突):两个关键字散列到同一个值。哈希代码:第一种(适用整数):typedef unsigned int Index;Index Hash(const char *key, int tableSize){ unsigned in..

2020-11-03 14:03:36 500

原创 redis 哈希类型以及实现原理

一种以存储键值对的形式字典结构(key-value)。哈希类型适合存储对象;使用对象类别和ID构成键名,使用字段表示独享的属性。而字段存储属性值。hset key field value field2 value2 field3 value3 //这条语句等价于 hmset key field value field2 value2 field3 value3例如一扫地机器人, 可以称它为ROBOT:1, 它的功能(function)为清洁(cleaning),它的名称(name)为j

2020-10-29 23:49:37 756

原创 C++ lambda表达式

lambda表达式实际上是对函数对象的一种强化和拓展,可以直接定义匿名的函数对象。[] (params) {}[]为引出操作符(lambda introducer)(params) {}为lambda表达式lambda表达式的类型成为“闭包”(closure type)。闭包:能够读取其他函数内部变量的函数。auto f1 = [](int x) { return x * x;};auto f2 = [](string){ cout <&l..

2020-09-07 07:06:14 126

原创 C++11(六) 条件变量(condition_variable)

前面提到了线程,那么肯定就要说到条件变量。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起;另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥量结合在一起。头文件<condition_variable> condition_variable ​condition_variable_any 相同点:两者都能与std::mutex一起使用。不同点:前者仅限于与 std

2020-09-06 22:08:27 400

原创 内存池概念以及实现(完善中)

概念:内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。节点数据结构: dstruct mp_node_s{ unsigned char *start; unsigned cahr *end; struct node *next; int failed; //标识}大块内存...

2020-08-31 00:33:05 421

原创 C++11(三)

自动类型推导。C++是一种强类型的静态语言,任何变量、表达式都要有明确的类型。例如:long x = 0L;对于简单的变量,还是很容易写出它的类型,但是比如说类、命名总奖金、模板等类型变量,缺很难写出该变量的类型。auto:推导某个变量在赋值语句中的类型。auto x = 0L;auto只能用于赋值语句中类型的推导。 atuo总是能推断出值的类型。 aotu允许使用const /volatile/&/*等修饰,从而等到新的类型。 auto&&总是推.

2020-08-30 01:42:11 135

原创 初探函数指针——为线程传参铺路

TODO

2020-08-23 00:17:58 292

原创 C++11(五) thread

C++11标准中添加了线程以及对对线程相关的类。线程在头文件<thread>中定义。线程的构造函数:std::thread::threadthread(); //只是创建了一个新的线程对象而并不能代表线程。thread( thread&& other ); //移动构造函数,可以接受从另外一个线程那转移过来的线程。 template< class Function, class... Args >explicit thread( Funct

2020-08-20 07:49:22 336

原创 MySQL性能优化

其实就是三点:查询优化。 索引优化。 库表结构优化。//TODO

2020-08-18 23:54:00 134

原创 线程同步属性锁

互斥锁(mutex):确保同一时间只有一个线程访问数据。在访问共享资源前对互斥量进行设置(加锁),在访问完成后释放(解锁)互斥量。只有两个状态:加锁和不加锁状态。读写锁(rw lock):与互斥锁相似,不过读写锁允许更高的并行性。三种状态:读模式下加锁 写模式下加锁 无锁状态。一次只有一个线程可以战友写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。自旋锁(spin lock):忙则等待。 用于一下情况:锁被持有的时间短,而且线程并不希望在重新调度上花费太多成本。充分压.

2020-08-15 00:01:18 232

原创 C++11(四)bind function mem_fn

​function 相当于一个函数对象的容器,该容器可以容纳函数、lambda表达式、bind()和函数对象。template< class R, class... Args >class function<R(Args...)>;//其中R代表result_type,即返回类型。容器容纳函数函数的返回值。//Args代表容器容纳函数函数传入的参数。//class... Args代表可变参数,意思就是支持多个参数。 bind 函数适配器,可以适配任意可调用对象..

2020-08-03 01:05:25 570 1

原创 如何使用C++11标准语法的语句写出指向类的成员的指针

C++11语法中的:mem_fn。 先上定义:template< class R, class T >/*unspecified*/ mem_fn(R T::* pm);//R代表result_type,即返回类型。 //T代表传入的class或struct。//pm - pointer to member that will be wrapped.该函数可以传入struct或class。然后返回一个指向传入object的函数容器。该容器可以指向struct或class的成员变

2020-08-02 11:52:28 149

原创 如何做一份清爽且高质量的简历(一)

简历分为三个等级:低级、中级和高级。低级:只会罗列自己的工作履历。 中级:会介绍自己的项目中用到了什么技术。 高级:不但会详细介绍自己项目用了什么技术,甚至还能突出自己做了什么工作。先摆上低级类型的简历。柯江小点评:都毕业两年了,还把自己的获奖信息写在上面,请问是没有内容写了吗?别人根本就不关心你是否结婚。除了国企外谁在乎你的政治面貌。还把学历信息放在最前面, 万一别人就想招一科班的,看到开头就不会往下看了,除非你的学校非常好,不然还是老老实实把学历信息放最后。 写工作...

2020-08-01 23:14:46 157

原创 Redis(一)安装和基本操作

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。它是一个内存型数据库,所有的数据都存在内存中,一旦断电会丢失所有数据。所以它必须要持久化,将数据写入磁盘中。首先,只需要知道有这些知识点,不需要强迫自己记忆,多练习就好。安装:直接下载目前最新的6.0.3 版本,下载地址:htt...

2020-06-28 01:24:36 141

原创 在华为外包的工作体验

作为一名在广州华为中国移动运营商部门做了9个月的外包的人来说一下这种体验。工作地点在潭村广电科技大厦。这边的华为外包是TM模式,通过向外包公司租赁员工在华为办公场地办公。这边华为正式员工不超过10%,大部分都是管理层。正式员工中有少部分SE、开发、测试。正式员工周六上班,外包双休。十分讽刺。大部分都是外包员工,工牌是黄色工带。所以在这里你不会有二等公民的感受,因为大部分人都是外包。这边加班以调休为主,周六周日加班一天,日后可以调休一天。少部分情况下可以拿到加班工资。其中还有部分正式员工被开,然后那人和外

2020-06-27 14:52:15 14578 3

原创 C++11/14标准(二)智能指针

先说一句为什么要用智能指针。智能指针是为了解决内存泄露的问题。C/C++程序员可以自己开辟堆(heap)上的内存空间,同时也需要自己释放堆上的内存空间。一旦忘记释放内存空间,这样会造成内存泄露。 不得不提及一下RAII机制(资源获取即初始化,Resource Acquisition Is Initialization)。在类的构造函数里面申请资源,然后使用,最后在析构函数中释放资源。所以这也就为什么析构函数需要用virtual来修饰来避免出现内存泄露。计算机有栈和堆两种。这...

2020-06-22 21:39:32 441

原创 C++11/14标准(一)左值与右值

切记所有代码需要在C++11标准下运行,如果使用g++,请添加-std=c++11。 左值和右值 左值是一个用来存储数据的变量,有自己的内存空间,表达式结束后仍然存在。右值是一个临时变量,它在表达式结束时生命周期终止。通俗的说法就是能使用取地址符的值就是左值,不能使用取地址符的值就是右值。左值可以是函数或者对象。/// /// @file lvalue.cpp /// @author kogan(709954896@qq.com) /// @date ...

2020-06-20 15:52:56 359

原创 这次来谈谈ZeroMQ—基于消息队列的多线程网络库(二)

ZeroMQ主要是有一个命名空间zmq。其下包含着很多类。zmq.hpp中主要的类有: context_t message_t socket_t monitor_t error_t 其中context_t、message_t都有一个友元类socket_t。socket_t有一个友元类monitor_t。开始讲解用代码例子来讲解:REQ-REP模型:client.cpp//// Hello World server i...

2020-06-02 23:56:19 696

原创 这次来谈谈ZeroMQ—基于消息队列的多线程网络库(一)搭建环境

ZeroMQ官方文档网址:http://zguide.zeromq.org/page:allZeroMQ是一个高性能异步消息程序库,用于分布式或高并发应用,提供了消息队列。但是他不像面向消息队列的中间件。ZeroMQ的运行时并不需要专门的消息代理。ZeroMQ支持多种语言。因为我主用C++所以这次我只会提及C和C++。下面开始说安装过程:需要安装的软件apt-get install libtoolapt-get install autoconfapt-get ..

2020-05-12 23:48:29 1238

原创 fatal error: zmq.hpp: No such file or directory compilation terminated.

找不到zmq.hpp的原因是, zmq.hpp只存在master中。如果你使用release版本,那么是没有zmq.hpp这个文件的。 应当使用zmq.h这个头文件。 zmq::context_tcontext (1); zmq::socket_tsocket (context, ZMQ_REP);zmq:context_t 也要换成相应的 zmq_ctx_n...

2020-05-03 14:55:11 2446

原创 Redis概要

字符串类型 string 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 zset字符串类型 string存储 set key value存储多个 mset key1 value1 key2 value2获取 get key 删除 del key哈希类型 hash存储 hset key field name存储多个 hmset...

2020-04-14 21:33:13 126

转载 Win7安装SDK时出现Missing required property 'ProductFamily': Setup cannot continue.错误。

02/16/20 01:49:49 DDSet_Entry: ImmediateDispatch: DDSE_CA_Uninstall_InstallInitializePost entry02/16/20 01:49:49 DDSet_Error: Patch Hooks: Missing required property 'ProductFamily': Setup cannot cont...

2020-02-16 02:00:26 870

原创 第一章开始

这一章主要介绍C++的大部分基础内容:类型、变量、表达式、语句及函数。我已经默认你有了C语言基础。然后我会对部分知识点给出例程序。并给出相应的笔试题。学习一门编程语言的最好方法就是练习编写程序。一个简单的C++程序。 #include &lt;iostream&gt; int main() { return 0; }每个C++程序都包含一个或多个函数(f...

2018-07-20 23:45:51 190

原创 查找

查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找的结果一般分为两种:查找成功和查找失败。查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。静态查找表查询某个“特定的”数据元素是否在查找表中。检索某个“特定的”数据元素和各种属性。关键字是数据元素中某项数据的值。 若此关键字可以唯一地标识一个记录, 则称此关键字为主关键字(Primary Key). 若...

2018-07-09 19:28:32 272

原创 Lua迭代器与泛型for

迭代器: 一种可以遍历(iterator over)一种集合中所有元素的机制。(在Lua中,通常将迭代器表示为函数。每调用一次函数,即返回集合中的“下一个”元素)泛型forfor &lt;var-list&gt; in &lt;exp-list&gt; do &lt;body&gt;endfor i, v in ipairs(a) do print(v) end --打印数组...

2018-07-07 23:38:48 423

原创 Lua协同程序(coroutine)

协同程序和线程差不多,也就是一条执行序列,拥有自己独立的栈、局部变量和指针, 同时又与其他协同程序共享全局变量和其他大部分东西。与线程区别:一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说一个具有多个协同程序的程序在任意时刻只能和运行一个协同程序,并且正在运行的协同程序只会在显示地要求挂起(suspend)时,它的执行才会暂停。协同程序基础Lua将所有关于协同程序...

2018-07-07 23:36:31 2368

原创 BOOST库,正则表达式

头文件:#include &lt;boost/xpressive/xpressive.hpp&gt;using namespace boost::xpressive;正则表达式是处理文本强有力的工具,它使用一套复杂语法规则,能够解决文本处理领域的绝大多数问题,诸如验证、匹配、查找、替换等等。xpressive提供动态和静态两种使用方式。静态方式类似于spirit,使用操作符重载生成编译期的表达式对...

2018-07-07 23:19:44 614

原创 应届生避免求职踩坑

写在前面的话,应届生最好选择大公司, 切记!!!哪怕去小公司也要问清楚工资结构、餐补等。  有没有想过小公司居然能和大公司一样的薪水。这其中有猫腻。  第一,同样的6k薪水,大公司和小公司完全是两码事。 大公司的薪水是基本工资6k。绩效,补贴其他另外算。小公司是基本工资40%左右,绩效50%左右。补贴10%。五险一金是按基本工资缴纳。 五险一金大概是交基本工资的30%。大公司实际要付出7800元才...

2018-07-06 13:46:28 674 1

原创 Lua表达式

关系操作符~= 用于不等于 , 其他同C逻辑操作符and "短路求值” 需要的时候才会评估第二个操作数or 同上not 非字符串连接.. 用于连接两个字符串 print("hello" .. "world") --&gt; hello word如果其任意一个操作数是数字的话, Lua会将这个数字转化成一个字符串print(0 .. 1) --&gt; 01table 构造式(ta...

2018-07-06 10:19:27 289

原创 散列查找表(哈希表)

存储位置=f(关键字) 散列技术是在记录的存储位置和它的关键字之间建立一个确定的关系f,使得每个关键字key对应一个额存储位置f(key)。 我们把这种对应关系f称为散列函数, 又称为哈希(Hash)函数。按这个思想,采用散列技术将记录存储在一个连续的存储空间中,这块连续存储的空间成为散列表或哈希表(Hash table). 关键字对应的记录存储位置我们称为散列地址。...

2018-07-03 08:25:28 137

原创 链表

链表在传递时,如果需多次传递 必须传递头指针和尾指针。不然会覆盖头指针。链表删除算法删除头结点删除中间节点以及尾节点空链表void list_delete(pstu* pphead,pstu* pptail,int delete_num){ pstu pcur,ppre; pcur=*pphead; ppre=pcur; if(pcur!=NULL) {...

2018-07-03 08:24:43 152

原创 数据结构绪论

数据结构是一门研究非数值计算的程序设计问题中计算机操作对象及它们之间的关系和操作等学科。数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素是数据的基本单位。数据对象是性质相同的数据元素的集合。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。结构:线行结构数型结构图状结构集合结构原地工作:若辅助空间相对于输入量是常数,则称此算...

2018-07-03 08:21:16 123

原创 关于对象( Object Lessons)

类的成员有数据成员(class member data)和函数成员(class member function)。数据成员分为静态(static)和非静态(nonstatic)。函数成员分为静态、非静态、虚函数(virtual)。简单对象模型( A simple Object Model )目的: 为了尽量减少C++编译器的设计复杂度缺点:空间耗费大,执行效率低。 在这个简单模型中,每个ob...

2018-07-03 08:09:17 186

原创 Lua类型与值

主要类型有nilbooleannumber stringuserdatafunctionthread tableLua 提供运行时的数字与字符串的自动转换。print("10" + 1) --&gt; 11..字符串连接符print(10..20)将数字转换成字符串,可以调用函数tostring,或者将该数字与一个空字符串相连接print(tostring(10) == " 10“)print...

2018-06-22 23:23:25 144

原创 Lua编译器安装

个人还是推荐SciTE。可以直接运行,自学足以。游戏公司大部分会用VS编译,使用SubLime或者BabeLua插件 明天把下载地址放上来。 链接:https://share.weiyun.com/5oHVSQR(密码:HyyT) 个人Lua编程心得...

2018-06-22 23:20:31 11141

空空如也

空空如也

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

TA关注的人

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