自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fpcc的专栏

于细微处见精神,从宏观里学态度。行之苟有恒,久久自芬芳。

  • 博客(708)
  • 资源 (21)
  • 问答 (1)
  • 收藏
  • 关注

原创 跟我学C++中级篇——控制死锁

死锁虽然在面试时反复被问到,但在实践中真正写出来或者遇到的并没有想象的那么多。其实最主要的原因就是大多数的程序员都不会有这种开发的应用场景。但恰恰因为遇到的少,在实际中真正出现时,却不知道从何下手。还是老规矩,把基础掌握好,会灵活的使用工具。只要发现定位了死锁的问题,就可以根据产生死锁的原因有针对的进行解决即可。没有过不了的火焰山。

2025-04-29 19:01:05 417 5

原创 设计心得——数据结构的意义

数据结构本质就是对数据处理的一种抽象,它做到了相对上整体的最优。即无论从访问、操作和存储都达到了一个最佳的平衡。它既是一种数据意义上的建模也是一种解决问题的思维范式,不但满足了数据处理本身的功能又可以为系统设计和工程实现提供了模式化的解决方案。要想做一个优秀的程序员和架构师,数据结构是绕不过去的。要想学好算法,数据结构更是基础。

2025-04-26 09:47:18 678 4

原创 跟我学C++中级篇——Linux常见的异步编程方式

编程技术中,很多技术是一条点、线、面结合的过程,往往不是一个单纯的知识点就可以搞清楚的。所以,在日常的开发实践中,多和理论知识印证,加强知识的整理和抽象,就会不断的提升自己的编程水平。不要怕总结的不到位甚至可能有一些错误,这都是成长必然的路径!

2025-04-26 09:44:38 233

原创 跟我学C++中级篇——处理对象的复制

本文可以说是对前面的一系列的相关文章的总结,如果只是看这一篇,可能有务虚的感觉。大家可以把本文做为一篇阅读的目录或大纲,逐一展开去学习或分析即可。当然,不是每个开发者对这些内容都感兴趣,大家只要根据自己情况决定即可。

2025-04-25 21:37:10 472 2

原创 跟我学C++中级篇——程序中的临时文件的处理

临时文件就是一个应用处理的中间态,一般情况下,这种中间态是不稳定的,所以临时文件往往意味着随时有可能会被清理。开发者要善于运用这种状态达到自己的一些设计目的,但千万不要在这种临时文件中一时兴起写一些重要的数据。开发者也要有一双善于发现美的眼睛!

2025-04-20 09:11:08 388 4

原创 设计心得——函数参数的封装

学习都是从简单开始,然后到一般再到复杂。但大家可能都知道,大道至简。其实,所有的东西都是如此。每种方法在不同的场景和不同的人眼中,可能都有不同的看法。所以,如何根据设计者本身和实际需求设计出最合适于当下场景的应用,这才是一个优秀的设计者的基本能力。

2025-04-20 09:03:38 509

原创 跟我学C++中级篇——内存异常的分析

内存问题是一个非常重要的问题,即使反复讨论也是必要的。俗话说的好“有千日做贼没有千日防贼”的,内存问题就是这样。再谨慎的开发者或设计者,总有老虎打盹儿的时候。所以提高警惕掌握内存问题的实质,才能更好的从设计和开发层面避免它。哪怕万一真遇到了内存问题,也能从根本上找到问题的根源并加以解决。知其然更要知其所以然。

2025-04-18 20:51:54 735

原创 面试经验杂谈

上面谈得都是一些个人经验,仅供参考。面试是否成功是一个必然加偶然的过程,大概率靠必然,但特殊的情况靠偶然事件。个人能够做到的就是把必然的概率尽量拉足,偶然的事件是不可控的就不要强求了。正如古人云:“尽人事,安天命”,和诸君共勉!

2025-04-18 13:37:47 788

原创 跟我学C++中级篇——尾调优化

通过上面的分析可以发现,TCO是需要条件进行触发的。换句话说,它和inline有些类似,开发者并不能完全决定是否最终会调用TCO,而是由编译器根据情况来确定的。所以,这就给开发者一个提醒,能自己优化的就不要依赖编译器,特别是那些跨平台的开发者。只有开发者自己确定的才是真正可以确定的。依赖其它的情况都可能导致意外的发生,一定要注意!

2025-04-13 09:21:07 650 1

原创 共享内存技术

计算机技术中很多技术都是从一条技术栈中衍生出来,即使目前看起来目前没有太大关系的两条技术栈,很可能未来也可能融合到一起。所以想要把计算机技术搞深入搞精通,就必须抓住主要的技术栈,然后把技术脉络缕清,那么这个技术就没有什么问题了。见微而知著,莫不如此。

2025-04-13 09:13:18 876

原创 内存映射技术

内存映射可以认为是对成本和效率的一种折衷 ,当然这种折衷也是对底层系统(特别是硬件)的一种抽象。而面向抽象进行的操作相对来说要更简单和更容易实施。明白了这一点,开发者就应该明白了如何学习使用内存映射了。

2025-04-12 10:00:58 729

原创 设计心得——状态机

一定要明白状态机的目的和作用,要学会在不同的场景和条件灵活的使用状态机。一般情况下,状态机的设计不要过于复杂,这样不利用状态机的维护。同样过于简单的情况也不一定非得要用状态机。至于如何避免复杂,就记住一句话,拆分状态逻辑,利用中间层处理。状态机和其实现的方式,其实都是重点,重点在于如何将状态机与实际的实现逻辑严格的对应起来,保证状态的稳定和准确,特别是不能忽视某些特定条件的状态转换及行为的细微差异。只要能把握完整的状态流程,状态机的实现也就是一种代码的展开罢了。

2025-04-03 22:50:08 985

原创 跟我学C++中级篇——In-Place Construction 和placement new

技术的进步不是一朝一夕完成的,它一定是从需求出发,不断的进行完善,然后被抽象出来。无论是RVO还是各种的内存优化,当然也包括今天提到的就地构造等,它们都是对追求效率和安全的一种演进过程。不管是开发者还是设计者,都要多学习这种优秀的经验,不断的融会贯通,提高自己的整体的水平。既要拿来主义,又要明白主义,博采众家之长,这才是学习的最终目的。

2025-04-03 22:47:28 791

原创 设计心得——发布订阅

目前,智能驾驶这个赛道火得很,但其中的车联网系统中就广泛使用了这种机制。所以说,掌握好原理才能更好的拓展一项技术的应用,而不只是机械的模仿。需要说明的是,本篇不是分析发布/订阅机制内部实现的文章,而重点在于将其如何应用于设计当中。尽管篇幅不大,但希望给大家一个另外的角度做为切入点,也就是说,要从不同的角度来看待一个技术问题,才能更好更全面的明白其在整个技术框架中的作用。

2025-03-28 20:51:39 898 2

原创 设计心得——推拉机制

推和拉本身不难理解,也易于实现。但麻烦就在于实际应用场景中的复杂度和各种异常的处理,这才是重点中的重点。所以大家一定要根据实际情况进行平衡,保证所需。而不是为了应用推拉去实现推拉机制。

2025-03-26 11:42:03 829 1

原创 设计心得——事件机制的实现

本文主要是给不了解或者想学习事件机制的开发者一个入门的方法,重点在于提供一个初窥门径的视点。在明白了事件机制的原理后,可以根据自己的技术水平的增长和认知思想的不断提高,设计出一个相对更完善更合理的事件系统。万事开头难,临门第一脚。以后有机会在此基础上将一个相对事用的事件系统给大家剖析一下,那么就更容易在事件系统上总结提高。愿与诸君共勉!

2025-03-24 13:14:50 462 1

原创 为什么会有虚拟内存

本文不是讲虚拟内存技术本身或者说其技术的特点。重点是讲述为什么会存在虚拟内存,这是给后来开发者或者说设计者的一个解决问题的思路。活学活用别人的思想,真正领会这些技术架构的思想并学习和吸收成为自己的思想,才能更好的解决面对的问题,进而从整体上提高自己的技术。最后,技术的发展,不是凭空想象的,它一定是实际需求推动的。所以理论和实践相结合,是重中之重!

2025-03-23 09:55:25 646 1

原创 设计心得——安全性和健壮性

程序的开发,往往不是一两个因素影响,而是一个多重的因素整体互相影响确定的。而一个优秀的设计者就是要在这些因素中,找到关键的因素,也就是常说的主要矛盾,并处理在某些情况下,次要矛盾转化为主要矛盾时如何处理(比如程序异常时,保存了部分的文件怎么办)。所以,有丰富的理论和实践形成的指导思想,才是解决问题的关键所在。好医生是在病患未起时就将其消灭。也就是所谓的预防大于治疗。而目前看来,在软件开发中,仍然是以“治疗”为主。希望开发者们能尽量把重心前移,减少亡羊补牢的情况!

2025-03-23 09:52:45 704

原创 设计心得——如何实现接口

爱看武侠小说的知道有形意拳这个拳法,形和意,一外一内。而在武林中又有一句话“练拳不练功,到老一场空;练功不练拳,到老也枉然(犹如无舵船)!其实编程也是如此,光明白理论,不进行实践,那么进步就无从谈起;反之,光进行实践不学习理论,则方向无法把握,事倍功半。前面反复提及,计算机编程是一个理论和实践高度结合的技术,理论和实践是互相促进互相发展的,请大家务必明白这一点。既要扎实的推进编程的水平,又要不断的多看一些英文的资料紧跟技术发展的潮流和方向。

2025-03-22 21:46:10 677

原创 跟我学C++中级篇——std::not_fn

std::not_fn这个模板函数非常有意思,在前面我们学习过wrapper(包装器),其实它就是通过封装一个包装器来实现返回值的非。/* 未指定 */ not_fn( F&& f );(1) (C++17 起)(C++20 起为 constexpr)constexpr /* 未指定 */ not_fn() noexcept;(2) (C++26 起)这里面的f参数是一个Callable对象。

2025-03-21 22:49:26 727 1

原创 设计心得——作用域处理

简单的东西,往往意味着灵活。因为简单,所以应用的广泛,应用的广泛就意味着应用的场景丰富。不同的场景下的应用就有可能有细节的不同。而细节的丰富恰恰是C++的一个特点,也是为广大开发者觉得不容易把握的地方。作用域看似简单,但它和代码编写直接结合了起来。往往代码的水平就可以通过作用域的控制窥见一斑。而作用域还有一个特点,即使设计的较差甚至非常差,在一些中小程序中对程序的运行也不会有什么影响。往往就会让大多数中低程序员将其忽视。简单不代表容易把握,切记!

2025-03-21 22:47:58 940

原创 Debain12安装——手动磁盘分区

记得当初安装系统时,看到LVM还有组、卷什么的,当时就晕了。为了赶进度,只好回到自动分配。不过当对Linux系统越来越熟悉后,还是想手动搞一把,上面就是对手动安装过程的一次总结,可以为大家的借鉴。网上很少有这种手动处理的过程,也算是一种总结供大家参考吧。

2025-03-16 09:06:57 1373 2

原创 跟我学C++中级篇——void处理

老生常谈,其实就是一个原则。在合适的场景下应用合适的方法,不教条不僵化。尽量减少使用不是强制不使用,难免有各种场景下不得不用,那么就需要认真的处理即可。有隐患不是说就一定会出现,只要把握内部的机理,就不会出现问题。

2025-03-16 08:09:19 825

原创 设计心得——多态

勿在浮砂筑高台。只有掌握技术本身,才能更好的在设计上展开应用。换句话说,一个优秀的设计者本身必须是一个优秀的开发者。这也是前一段时间网上经常说的所谓“PPT架构师”的味道。知其然并知其所以然,顺势而为,才可能有一个优秀的设计出来。

2025-03-15 19:11:21 359

原创 设计心得——粒度

学习设计就是从这些小的基础的东西一步步走过去的,不要妄想着上来就指挥千军万马并且打胜仗。甘罗八岁拜相,不谈真假,但几千年出不来几个。回头看看世界军事史,有名的军事家都是一枪一枪打出来的。没有人天生就是元帅。软件设计亦是如此,实践出真知。

2025-03-09 10:42:01 627

原创 设计心得——继承和实例

设计的学习难度说大很大,说小很小,关键看开发者的知识驾驭程度和水平。条条大路通罗马,但有没有捷径,这种捷径是否适合每个开发者?是不是有更适合具体到某一个人的捷径?这就需要每一个开发者和设计者不断的探索。总体而言,多学习理论知识,多写代码,多看优秀的开源代码和框架,多和优秀的设计者进行有效的交流。在此基础上不断的思考和实践,对大多数开发者来说,是一条不错的提升之路!

2025-03-08 09:38:40 425 2

原创 设计心得——分层和划分模块

设计一个从抽象到具体,从整体到细节,不断具体而微的过程。俗话说得好“教的曲儿唱不得”。设计不像技巧,多问两下多看两下代码就会用了。所以设计中的一些具体的手段和方法,要不断的从不同的角度不同的场景进行分析学习,并不断在实践中进行检验。反思得失,总结教训,形成自己的一套解决问题、处理问题的逻辑和流程。最终升华为自己的设计思想。这一定是一个长期的,不断的否定之否定的过程!愿与诸君共勉!

2025-03-07 22:27:56 991

原创 设计心得——如何应用继承

一种技术如果不放到具体的场景中,谈不到优与劣,更谈不上对与错。技术的出现就是为了服务于现实的需求,如果脱离开这种需求技术的意义就没有多大了。如果实际的网络需求永远不会超过100K,那么光纤就可能不会被应用到网络传输上。合适的是最好的,但要明白,这个合适是动态发展、不断变化的。与诸君共勉!

2025-03-01 09:05:42 654 1

原创 跟我学C++中级篇——定时器的设计

文章写得有点粗糙,主要是不知道如何有一个更好的切入点来分析定时器。不过也算对前面各种定时器的实现的一个笼统的概括,以后有机会再认真的综合整理一下。思考的不到位,有一种火候欠佳的感觉!

2025-02-28 21:01:37 757 2

原创 设计心得——依赖注入控制反转和依赖倒置

在设计的过程中,最主要的目的就是实现“高内聚低耦合”。其实不耦合是最好的,但正如人是群体性动物一样,不和别的人发生各种关系是不可能的。而把这种发生的各种关系移植到代码上,就可以称之为依赖。这种依赖越少,就说明耦合程度越低(即解耦);反之则耦合程度越高。高内聚则是指,单元(一个函数,一个类等都可以是一个单元)内功能的依赖关系越紧密越好,也可以理解为相关功能关联度越紧密越好。

2025-02-23 09:29:39 949 2

原创 设计心得——解耦的实现技术

设计是一个不断沉淀的过程,没有人可能一下就掌握了设计的全部精髓。这就和一个人的成长一样,从婴儿到成为一个健硕的青年,中间可能会经过无数的大大小小的错误,既有身体疾病上的成长的过程,也有思想不断成熟的过程。所以,设计只是一个人思想的外延。它既受主观的影响也爱外面客观的实践的影响。

2025-02-22 11:10:42 607

原创 设计心得——接口

接口的应用是极其广泛的,即使没有任何开发经验的初学者,可能第一个程序都会遇到接口的调用。一个开发者既要明白接口是什么,又明白常见的API和接口有什么关系。既要学会使用别人的接口,又能很好的设计自己给别人提供的接口。只有掌握了接口的真正本质,才可能适应在不同的场景接口的应用!

2025-02-21 21:41:29 374

原创 firefox的升级

firefox经常遇到这种情况,意外退出,重启后打不开原来打开的网页,导致一大堆的问题,特别是对有些强迫症的人来说,是场小灾难。从目前使用来看,Google的浏览器是最好的,自从使用到现在这么多年,记忆里没有类似的情况发生。搜狗浏览器发生过一两回,很少,而且后来用很放心,估计是做了什么保护。只有这个firefox,用得不算多,但基本上每年都要出一回妖蛾子。算是总结一回给自己一个教训给同学们一个借鉴吧。能不用firefox尽量避免吧!

2025-02-15 09:52:44 870 2

原创 C++17中的字符转换

简单方便是一种趋势。虽然有人诟病C++现在是个大缸,啥都往里面放。但不可否认,新标准在不断的提高着语言整体的易用性,这也给开发者们一个思路,也就是常说的“简约但不简单”。

2025-02-15 09:33:29 332

原创 C++17中的clamp函数

AI在发展,库也在发展,会不会到最后,大家只要碎碎念一下,一个程序就出来?这种不是没有可能。但是这种可能,大概率可能需要相当长的时间。其实如果真到了那个地步,为什么还要写程序?机器人自己就搞定自己了。人类就享受一切即可。不过到那时,可能大多数人活得更不如意!

2025-02-14 21:33:02 840

原创 跟我学C++中级篇——C++命名规范

命名规范的意义就在于标准化,不管这种标准化是否先进。标准化就意味着尽量消除了成员间的某种程度上的差别,这和工厂中标准件的行为是一致的。新手和后来者以及维护者都能迅速的进入状态,最大可能的消除因为代码名称的问题导致的时间浪费。当软件工程发展到一两个人甚至一个小团队都无法搞定需求时,命名规范的意义也就真正的体现出来了。

2025-02-10 10:23:16 477 2

原创 跟我学C++中级篇——C++编码的几点建议

C++是一门较难学习和使用的语言,对于初中级开发者来说,养成一个好的编码习惯,对自己和对团队都有着非常大的益处。尤其是对于开发者自己,不断的学习和适应不同风格的团队,养成自己的一套原则体系,然后再根据实际的情况动态处理即可。而在学习不同的优秀框架时,开发技术的提高其实也在潜移默化的影响着自己对编程风格的灵活适应性;而不同的风格下见到不同的大牛们的代码,同样反过来也影响自己在某一时期的编码的形式。形式是表象,内容是根本。二者互相影响,正如佛家所说“相由心生”。

2025-02-10 10:13:12 1113

原创 跟我学C++中级篇——流的应用技巧

C++中的流的应用其实并不多普遍。很多的大牛其实对流的诟病不少,但还是那句话,用到合适的地方就可以了,有就比没有强。当然,开源的可能有更优秀的处理框架,这个大家可以根据自己的实际情况去选择,或者干脆使用C语言中的文件操作方式也未必不可。总之,要善于学习使用新的技术,更要善于把知识与实践有机的结合起来。

2025-02-09 12:21:11 416

原创 C++20中的std::atomic_ref

看到std::atomic_ref,其实就想到了智能指针,二者应用的方式何其相似。从目的上来讲就是为了让开发变得简单,特别是在多线程状态下的开发,能简单一些是一些。另外就是为了兼容更多的原有的应用让其都能使用std::atomic的功能。或者从另外一个角度看,std::atomic_ref只是一个过渡的功能,以后会出现一个更强大的类或接口,让原子操作更简单。让我们拭目以待!

2025-02-09 10:40:44 716

原创 跟我学C++高级篇——CRTP的高级应用

CRTP是一种静态多态的实现方法。说的直白一些就是在正常的认知中,子类继承的是父类,但是如果父类是一个模板类,此模板类中的模板参数是子类的这种特殊情况。CRTP在前面说过两次,如果有对此技术不清楚的可以查看一下“跟我学c++中级篇——CRTP”以及“显式this的应用”中都进行过分析说明。CRTP本身就是一种很小众的技术应用,而它的一些应用,可能应用范围更小,下面就一些细节进行分析,扩展一下CRTP的更多的应用场景,给大家提供一些应用上的思路。CRTP的应用,相对来说就是一种比较复杂的应用。在前面将其基础

2025-02-08 21:13:38 608

linux设备驱动开发

本书从浅到深介绍了LINUX操作系统上的驱动开发的过程,值得推荐。

2018-11-17

masstree算法论文

目前的底层的分布式数据库如ROCKSDB等都使用的LSM的算法,本文使用了masstree这种算法来优化其处理。

2018-11-17

虹膜开源的算法

本文是国外的一款开源的虹膜识别框架的介绍,它的源码是可以直接使用的,但是需要优化。

2018-11-17

mixin白皮书

mixin是一个闪电交易快速的点点对的数字交道项目,它拥有非常好的技术栈。

2018-10-11

steamr白皮书

steamr是一个用来做数据去中心化的网络和市场相关的区块链项目,主要提供去中心化的云服务。

2018-10-11

阿希链白皮书

阿希链是一个用javascript写的侧链,主要用来完成多链间的通信,有一定的特色,可以借鉴。

2018-10-11

大数阶乘算法的一个例子

小数的阶乘比较好做,但是阶乘的数量变化非常快,很快会溢出,这里采用一种变通的方法,可以实现相当大的数的阶乘,如果在这个基础上进一步扩展,能进行更大的阶乘算法。

2018-10-06

Sql批量操作数据

在SQLSERVER的多条数据操作时,使用SQLBULKCOPY等几种方式的对比,这篇文档就是整理了这些使用的方法。

2018-10-05

电能质量闪变的测量

电能质量是电力行业一个重要的部分,本论文从实际出发,论证了闪变测量的方法。

2018-10-05

安卓编译JAR包和SO

这个是用ECLIPSE编译JAR包和SO的一个教学录像,非常适合对c++不熟悉的人编译使用。

2018-10-01

JAVA并发编程设计原则与模式

一本比较老的书,讲得多线程和并发技术,是一个入门的比较浅显的书籍。

2018-10-01

代码管理核心技术及实践

代码管理是开发过程一个重要的环节,好的代码管理可以为团队的开发提供安全的保护和合作,本书就是讲述在不同环境中如何使用主流的代码管理软件和方式。

2018-09-30

IOTEX白皮书

物联网和区块链的结合,实现了链中链和跨链的通信,通过特有零知识证明来解决用户隐私问题。

2018-09-30

bancor协议白皮书

bancor协议是目前区块链研究的一个重要方向,跨链不同的TOKEN之间的兑换一直是一个问题,这里给出一个解决的方案。

2018-09-29

DERP白皮书

DREP区块的白皮书,是一个新的区块链的技术,如果大家对这个感兴趣,可以下来看看。

2018-09-29

朗新WEBSERVER接口(南网和天津电网)

适用于朗新目前的所有接口,平台语言C#,主要是对电力系统SG186的跨平台调用。也适于于同样的WEBSERVER工程跨平台使用。使用说明书已打在压缩包里。

2009-03-16

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

TA关注的人

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