首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

没有二十年功力,写不出这一看似无用代码

具体实现逻辑是这样: 核心逻辑其实就是这样一代码: Thread.sleep(0); 这样就能实现 prevent gc 了? 懵逼吗? 懵逼就对了,懵逼就说明值得把玩把玩。...官方采没采纳不重要,重要是我高低得给你“剥个茧”。 探索 当我知道这个代码片段是属于 RocketMQ 时候,我想到第一个点就是从代码提交记录寻找答案。...因为我们知道,Java 程序员来说,虚拟机有自己 GC 机制,我们不需要像写 C 或者 C++ 那样得自己管理内存,只要关注于业务代码即可,并没有特别注意 GC 机制。...4.主线程 Thread.sleep 方法从 native 返回,发现安全点操作正在进行,于是把自己挂起,直到操作结束。...但是要论逼格的话,还得是右边 prevent gc 写法。没有二十年功力,写不出这一看似无用代码

41630

C++C++ this 指针用法 ① ( C++ this 指针引入 | this 指针用法 | 代码示例 )

一、C++ this 指针 1、C++ this 指针引入 在 C++ , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类每个 非静态成员函数..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++...访问成员变量 : 在 非静态成员函数 , 直接使用如下语法 , 访问 本实例对象 非静态成员变量 ; 先获取指针指向数据 然后访问数据成员变量 ; (*this).成员变量名 在 C++...->age = age; 为 age 变量赋值 , this->age 是成员变量 , age 是函数参数 ; 示例代码 : class Student { public: // 带参构造函数 Student...int height; // 身高 }; 3、完整代码示例 在下面的代码 , 构造函数 Student(int age, int height) 参数名为 age 和 height , 成员变量为

23620
您找到你想要的搜索结果了吗?
是的
没有找到

C++】多态 ② ( 面向对象 “ 多态 “ 真正需求 | 面向对象 “ 多态 “ 实现 - virtual 修饰函数 | 代码示例 )

一、多态实现 1、面向对象 " 多态 " 真正需求 在上一篇博客 【C++】多态 ① ( 类型兼容性原则与函数重写 | “ 多态 “ 引入 | 函数重写 ) , 进行了测试 , 在测试代码..., 这并不是我们想要 ; 上述测试 , 根据实际 对象类型 确定 重写函数 要调用 父类 还是 子类 函数 , 并不是我们期望 ; 多态 需求是 : 相同调用语句 , 有多种不通表现形态...指针 指向 父类 , 就调用父类函数 ; 指针 指向 子类 , 就调用 子类函数 ; 2、面向对象 " 多态 " 实现 - virtual 修饰函数 C++ 语言中 , 通过使用 virtual...关键字 修饰 函数 , 子类重写该函数时 , 可以不使用 virtual 关键字 ; 在开发时 , 建议 父类 和 子类 重载函数 都使用 virtual 关键字修饰 , 表示多态 , 这样能在开发者阅读代码时..., 更容易理解 此处要开始使用 多态机制了 ; 二、代码示例 - 多态实现 1、代码示例 在下面的代码 , 使用 virtual 关键字 修饰 父类 和 子类 函数 , 最终实现了 多态 ; 代码示例

12120

Direct3D11 在 GPU 纹理(Texture2D)导出到内存(Map)或导出成图片文件

Direct3D11 使用通常不是应用程序唯一部分,于是使用 Direct3D11 代码如何与其他模块正确地组合在一起就是一个需要解决问题。...本文介绍将 Direct3D11 在 GPU 绘制纹理映射到内存,这样我们可以直接观察到此纹理是否是正确,而不用担心是否有其他模块影响了最终渲染过程。...(); 关键代码(SharpDX.DXGI.Surface.Map) 要获得 GPU 渲染图片,我们必须要将其映射到内存。...而映射到内存核心代码是 SharpDX.DXGI.Surface 对象 Map 方法。...WPF (WriteableBitmap),可以参考: WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例 记得打开不安全代码开关哦!

70550

C加加游戏编程,大神十年绝技,正确入门,这才叫学习

《DIRECTX.9.0.3D游戏开发编程基础》 这个书籍是从零编程基础开始,其中部分书中涉及到了DirectDraw与Direct3D8,这两个API在新版本DirectX SDK中都被移除了,现在基本上无用武之地...1.DirectX定义 首先,我们必须了解DirectX定义。DirectX,(Direct eXtension,简称DX)是由微软公司创建多媒体编程接口。由C++编程语言实现,遵循COM。...学编程最重要是实践,就是写代码、看别人写代码、再写代码,你看再多书,不写代码,你还是不会编程。...,健康是用钱买不来): 第一阶段,首先是C++精通。...推荐《C++ Primer》,之后《Effect C++》。 第二阶段,熟悉windows下编程。推荐看《Windows程序设计》。 第三阶段,Visual C++学习。

1.7K61

CPU Cache简介

不难发现,full associative和direct mapping是一维或列设计方式,1-way就相当于direct mapping,8-way就是full associative。...如上公式,我们可以通过C++ template设计一个N-way associative,实现一个缓存策略模拟。...三级缓存 我们设计,有三级缓存C1~C3层级关系,对应到代码,三者实现原理都一样,都可以通过templateclass实现,无非是N-way和CacheSize不同而已。...前者优先,访问内存依次连续,而后者是列优先,内存不连续。...总结 CPU Cache介绍就到此结束,希望大家在编码时,能留意让自己代码更好发挥缓存优势。能够认识到OOP编程下,看似整洁代码下,也夹杂着看不见性能牺牲。

98820

C语言编程语法—语法风格

#include int main(void) { printf("That is Right Style\n"); return 0; } 在一个标准C语言程序,最特殊莫过于...因为这完全是中国式教育延伸出来谭式写法,main函数返回值看似无用,实际上是由操作系统接收,在Windows操作系统下也许无甚"大碍"(实际上有),当你使用Linux过程你会清晰发现一个C语言程序...Tab),比如每一块代码相教上一个代码块有4格缩进。...(complex_int="%d is k=%d x=%d\n",complex_int,k,x); return 0;} 对于上述代码,我总是在班级里同学手下出现,但这段代码除了让别人困惑以外,...尽量让每个程序式子为一,如果有特别的需要让多个式子写在同一,可以使用,操作符进行组合,但是会让程序更难理解,日后调试时候也更难发现错误。

14430

2014年第五届蓝桥杯CC++B组省赛题目解析

七、六角填数 如图所示六角形,填入1~12数字。 使得每条直线上数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表数字是多少? 请通过浏览器提交答案,不要填写多余内容。...多余内容。 所有代码放在同一个源文件,调试通过后,拷贝提交该源码。...【数据格式】 输入一3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12) 接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上宝物价值 要求输出一个整数...多余内容。 所有代码放在同一个源文件,调试通过后,拷贝提交该源码。...多余内容。 所有代码放在同一个源文件,调试通过后,拷贝提交该源码。

2.6K40

4.3 CG 编译

例如 C 或者 C++ 编写程序,需要首先编译成可执行文件(.exe 文件),然后才能在 GPU 上运行,且一旦编译后,除非改变程序代码,否则不需要重新编译,这种方式称为静态编译(static coompilation...在文献[2] 1.4.2 章节中提到 Cg 语言同样支持静态编译方式,即,Cg 源码编译成汇编代码后,这部分目标代码被链接到宿主程序后可执行程序。...例如,将代码写成如下形式,表示编译文件 test.cg 顶点着色程序,入口函数名为 main_v,并将顶点着色程序转换为 glsl 程序,然后保存成文件 direct.glsl。...cgc –profile glslv –o direct.glsl –entry main_v test.cg 5.还有一个非常隐蔽 编译情况是:如果着色程序某些变量并没有为终输出做出贡献,则编译时会将该部分代码忽略...常会遇到这种情况,一段代码编译通过,但是运行结果不在预期之中,如果是 C++\JAVA 程序就可以进行跟踪调试,但是着色程序不能被调试,只能一代码代码进行逻辑分析。

80520

21个令程序员泪流满面的瞬间 【升级版】

【1】 明明我只修改了一代码......【2】 千万不要随便乱动旧项目 【3】 提交了错误分支 【4】 断点调试BUG 【5】 当我删除一个无用代码块 【6】 糟糕,无法捕获这个BUG 【7】 当我刚好有一个好点子却被人打断...【8】 不小心打开了遗留项目 【9】 费力地捕获一个已知Bug 【10】 刚调稳定系统,公司空降了一位架构师,要重构现有系统了…… 【11】 当我加入一个新项目团队时 【12】 从删库到跑路 【13...】 项目测试过程,在第50锤时碎掉了…… 【14】 项目测试过程与用户使用过程 【15】 你认为你写代码样子VS.实际上你写代码样子 【16】 给你2周时间编程,来完成6个月项目 【17】...周末到了,我以为我能休息一下 【18】 发现浪费了2个小时试图修复一个分号引起错误 【19】 被老板告知我写功能被毙掉了,呜呜 【20】 Bug总在项目发布前一天出现 【21】 自信爆棚重构一个看似简单模块

43820

21个令程序员泪流满面的瞬间

本文为你生动形象地展示程序员世界。 1. 明明我只修改了一代码... 2. 千万不要随便乱动旧项目 3. 提交了错误分支 4. 断点调试BUG 5. 当我删除一个无用代码块 6....刚调稳定系统,公司空降了一位架构师,要重构现有系统了…… 11. 当我加入一个新项目团队时 12. 从删库到跑路 13. 项目测试过程,在第50锤时碎掉了…… 14....你认为你写代码样子VS.实际上你写代码样子 16. 给你2周时间编程,来完成6个月项目 17. 周末到了,我以为我能休息一下 18. 发现浪费了2个小时试图修复一个分号引起错误 19....被老板告知我写功能被毙掉了,呜呜 20. Bug总在项目发布前一天出现 21. 自信爆棚重构一个看似简单模块

62440

c++ 11 是如何简化你数据库访问接口

之前写过一篇文章专门分析了 c++ 模板编译过程中报一个错误:《fatal error C1045: 编译器限制 : 链接规范嵌套太深 》,其中涉及到了 qtl —— 一个使用 c++ 11 构建数据库访问库...没有 c++ 11 之前,苦逼程序员对于 sql 操作输入输出,只好一代码,例如在调用数据库接口前设置绑定参数;在调用成功后,循环遍历查询记录。...我在下载了最新版本 qtl 并尝试编译这代码时,编译器报错说没有找到 custom_bind 定义,我全文搜索了一下也确实没有,但是这个例子可是我照着官网写啊,难不成作者后来修改了代码忘记同步文档了吗...所有相关内容,包括 qtl、sqlite 头文件;sqlite lib 与 dll 和 so;sqlite 样例数据 db 文件;甚至编译好可执行文件(Win10 x64 与 Linux x64),...从这里也能看出,c++ 新需求新特性并不是凭空衍生,而是从类似 qtl 这种模板库实际需要产生(如何写出用户调用更方便接口),如果我们离开这些场景去学 c++ 新特性,会感到知识点纷繁复杂,而例子又全然不贴切

1.6K10

WPF 使用 Direct2D1 画图入门

现在 WPF 底层使用渲染是 Dx9 渲染 或使用 Dx11 Dx12 优化 fl9 渲染,所以性能实际上和直接使用 D2D 是差不多,但是 WPF 没有充分使用DX,所以如果自己写性能会比较高...因为 WPF 渲染使用是 Dx9 或虽然使用了 Dx11 Dx12 但是优化是 fl9 ,所以在现在很多设备无法使用全部性能。...环境 如果直接使用这个库是无法运行,下面的代码只是作为大家快速入门,不能用于产品。安装这个库可以用在 x64 进程,但是不能用在 x86 进程。...如果对于平台目标感觉有兴趣,请看WPF 编译为 AnyCPU 和 x86 有什么区别 创建工厂 首先打开 MainPage 代码,添加下面代码 using D2D = Microsoft.WindowsAPICodePack.DirectX.Direct2D1...; 这样下面就不需要写那么多代码,因为所有使用Microsoft.WindowsAPICodePack.DirectX.Direct2D1都可以使用 D2D 来找到,这样下面的代码大家直接复制就可以运行

56110

WPF 使用 Direct2D1 画图入门

现在 WPF 底层使用渲染是 Dx9 渲染 或使用 Dx11 Dx12 优化 fl9 渲染,所以性能实际上和直接使用 D2D 是差不多,但是 WPF 没有充分使用DX,所以如果自己写性能会比较高...因为 WPF 渲染使用是 Dx9 或虽然使用了 Dx11 Dx12 但是优化是 fl9 ,所以在现在很多设备无法使用全部性能。...环境 如果直接使用这个库是无法运行,下面的代码只是作为大家快速入门,不能用于产品。安装这个库可以用在 x64 进程,但是不能用在 x86 进程。...如果对于平台目标感觉有兴趣,请看WPF 编译为 AnyCPU 和 x86 有什么区别 创建工厂 首先打开 MainPage 代码,添加下面代码 using D2D = Microsoft.WindowsAPICodePack.DirectX.Direct2D1...; 这样下面就不需要写那么多代码,因为所有使用Microsoft.WindowsAPICodePack.DirectX.Direct2D1都可以使用 D2D 来找到,这样下面的代码大家直接复制就可以运行

82710

DirectX修复工具使用技巧之三——命令行与配置文件参数介绍

命令行与配置文件约有90%命令是通用,部分特殊命令只支持命令行配置方式,本文件将分别介绍命令行参数与配置文件参数。 命令行参数 本程序支持命令行参数提示,用户可通过/?...这里我们在cmd写路径时,需要用英文状态引号把路径扩上,这是因为路径中有空格,如果不加引号的话,cmd遇到空格将无法识别。...不论之前用户设定安全级别是高或低,如果命令行添加此条参数,则此次程序将强制以低安全级别运行程序。此参数适合因高安全级别导致下载失败而无法修复用户使用。...完整参数示例1(快速启用Direct3D加速): “C:\Users\zhangyue\Desktop\DirectX_Repair(Enhanced_Edition)\DirectX Repair.exe...双击Settings.ini文件即可通过记事本程序打开,默认文档如下图: 其中每一写一条参数,已存在参数可以直接修改,其余参数可以自行添加。

1.7K10

JVM 类初始化机制

前言 当你在 Java 程序new对象时,有没有考虑过 JVM 是如何把静态字节码(byte code)转化为运行时对象呢,这个问题看似简单,但清楚同学相信也不会太多,这篇文章首先介绍 JVM...JVM 除了最顶层Boostrap ClassLoader是用 C/C++ 实现外,其余类加载器均由 Java 实现,我们可以用getClassLoader方法来获取当前类类加载器: public...final与在编译期确定常量表达式) 当调用 API 某些反射方法时 子类被初始化 被设定为 JVM 启动时启动类(具有main方法类) 本文后面会给出一个示例用于说明主动调用被动调用区别...在这个阶段,执行代码顺序遵循以下两个原则: 有static先初始化static,然后是非static 显式初始化,构造块初始化,最后调用构造函数进行初始化 示例 属性在不同时期赋值 class Singleton...,下面我来一分析之。

40320
领券