自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++11 新特性

原始字符串,noexcept, mutable, 右值引用,完美转发,std::bind

2024-03-02 15:45:44 322

原创 lldb in android studio

参考

2024-01-06 12:07:46 398

原创 将同解决方案下的C#工程的输出目录指定为C++工程的输出路径

将同解决方案下的C#工程的输出目录指定为C++工程的输出路径

2023-02-14 14:59:40 127

原创 Unity 相关

光的来源 分为 直接光 与 间接光照射到 物体上 会产生 漫反射 与 镜面反射直接光 的 漫反射 (用 光源方向位置 与 物体顶点法线 计算) 产生 物体的 亮部直接光 的 镜面反射 ( 光源位置方向 物体顶点法线 视线方向 ) 产生 物体的 高光间接光 的 漫反射 为物体 整体 进一步 变亮Ambient 就是最简单的 一种更真实的 是 根据 物体周围 的物体颜色 计算间接光 的 镜面反射 即 为物体的 环境反射一种 实现方式是 环境贴图加上 物体产生的 阴影, 上述 四种 着色的 顺序是亮

2022-06-01 20:53:16 237

原创 定位内存写入溢出的方法

问题描述C/C++ 使用 alloc 或 new 来分配内存, 但是写入时越界了, 这个问题麻烦的地方在于, 通常情况下(包括debug版本), 内存写入越界的时刻 并不会导致程序crash, 而通常是在 去free这片内存(或其他底层操作)时, 发现 0xfdfdfdfd 栅栏被破坏了才会出现crash, 暴露问题那么, 问题的关键就在于 如何能定位到 最早是哪里发生的写入溢出解决方法当 单纯的作code review 或 code diff 无法解决时, 可以尝试借助 启用页堆,如下是我的理解

2022-02-17 20:28:38 349

原创 Android Studio 发疯

这里写自定义目录标题打开工程, 之前可以正常执行 "Sync Project with Gradle Files", 突然有一天报错, 提示:打开工程, 之前可以正常执行 “Sync Project with Gradle Files”, 突然有一天报错, 提示:Invalid Gradle JDK configuration found解决方法是, 删除如下文件, 然后重启环境.idea/gradle.xml.idea/workspace.xml...

2021-08-29 11:01:28 81

原创 CMake

生成可执行文件add_executable(exeName sourceFile)生成静态库add_library(libName sourceFile)生成动态库add_library(libName SHARED sourceFile)增加头文件搜索路径include_directories(path)引用子目录中的CMakefile.txtadd_subdirectory(path)链接库target_link_libraries(exeName libName)设置库文件输出

2021-08-24 20:33:19 92

原创 Windows 上VirtualBox 安装 Ubuntu20 Server

关键点:宿主操作系统是Windows10安装的是Ubuntu20Server 而不是 Desktop需要用VirtualBox实现文件共享步骤:必须要安装VirtualBox提供的增强功能, 直接在界面上操作失败在Windows上安装xshell xftp,将 C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso 拷贝到 linux 下的某个目录然后执行 sudo mount -o loop /home/liyh/Downloa

2020-07-17 05:26:47 635

原创 emscripten cmake 环境配置

emscripten 在 ubuntu 上的安装和配置相对比较顺利,但在Windows上遇到不少坑步骤:1. git clone https://github.com/emscripten-core/emsdk.git这个repo只是包含了sdk的安装程序,然后靠emsdk命令来安装真正的emscrtipen sdk和相关依赖2. 进入 emsdk 目录,执行 ./emsdk instal...

2019-10-20 00:58:05 4596 4

原创 疑问列表

C++语法问题当一个全局的函数被友元在一个处于命名空间的类中时,该如何声明

2019-10-18 23:09:38 126

原创 git mise

git init在当前目录初始化一个git repo注: 这种方式初始化的目录与git clone的有区别, 后期需要执行 git remote add origin 远程url 的方式设定一个 remote, 才能推送,并且推送在推送前需要拉去一遍远程目录, 并且还会报错: fatal: refusing to merge unrelated histories // 拒绝合并无关历史,............

2019-10-16 16:45:19 239 1

原创 CMake

可以将一些配置信息,写入CMakeFiles.txt,cmake时生成一个config.h, 然后由源码引用编写 config.h.in#define MAJOR_VERSION @MAJOR_VERSION@#define MINOR_VERSION @MINOR_VERSION@编写CMakeLists.txt# 设置变量set(MAJOR_VERSION 1)set(...

2019-10-14 10:48:45 299

原创 [code] OpenGL multi thread

// 说明:demo for 主线程创建/删除资源,渲染线程使用资源// 两者貌似主代码层面上可以并行,因为将 MakeCurrent 中的锁注释掉也能正常运行#include <cassert>#include <string>#include <list>#include <vector>// opengl#include &l...

2019-10-07 11:18:27 414

原创 demo code - Multi-thread render in GLX

只创建了一个子线程,专门用于渲染子线程中打开了另一个 Display, 并在此Display下创建了 opengl context 和 多个Window子线程有自己的消息循环,因为Window产生的消息貌似只能由创建Window的Display来XNextEvent,主线程中的Display抓不到这些事件主线程中也open了一个Display,并创建了一个gl context,当做资源sh...

2019-09-29 15:57:37 286

原创 C++遗漏知识: 重载函数的值与类型

用C++很久了, 但还是有遗漏的知识点, 观察如下代码:void func(){}void func(int){}auto funcHandle = &func这段代码无法编译通过,提示编译器不能推断出&func的类型, 原因就是func函数有重载, 不论是void func(){}还是void func(int){}获取函数地址时都是用的表达式&fu...

2019-09-10 12:39:01 280

原创 [code] xlib event loop for render

#include #include <X11/Xlib.h>#include <X11/XKBlib.h>#include <pthread.h>#include <X11/keysym.h>#include <unistd.h>const int fps = 30;void render(long int monoSpan...

2019-08-27 17:00:19 159

原创 glew first init in GLX

#include <cstdlib>#include <X11/Xlib.h>#include <X11/XKBlib.h>#define GLEW_STATIC#include <GL/glew.h>#include <GL/glx.h>// #include <GL/gl.h>#include <G...

2019-08-26 23:15:50 149

原创 OpenGL basic code on Linux in GLX

#include <cstdlib>#include <X11/Xlib.h>#include <GL/glx.h>#include <GL/gl.h>#include <cassert>int main() { // connect to X Server auto displayName = getenv("DISPL...

2019-08-23 16:35:05 384

原创 Linux so 文件

Linux与Windows都支持动态链接库,Windows下是dll文件,Linux下是so文件,如果程序执行时没有找到需要的动态链接库,Windows下会出现提示框,Linux下会提示:error while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory...

2019-08-21 22:56:11 843

原创 go interface 注意点

思考一个问题, 当将一个对象赋值给一个interface时, 发生了什么, 对象变量与接口变量是引用的同一片内存地址吗?关于 go interface的本质是什么, 网上有说法是一个拥有两个指针的struct, 一个指向运行时类型, 一个指向对象本身我个人感觉这个说法太含糊了, 还是实际写代码实验吧type IObject interface { SetValue(value in...

2019-04-06 22:33:46 238

原创 go interface 惯用法

先看关于struct方法 receiver 是对象还是指针的问题type ISth interface {getInfo() string}type Person struct {Name string}func (p Person) getInfo() string { // 注:这里是对象return p.Name}func main() {...

2019-03-17 21:42:52 145

原创 bitcoin

// 启动ui CMyApp::OnInit()uiCMyApp::OnInit2()dbCAddrDB::LoadAddresses()// 加载地址db加载用户自定义的地址 CAddress from addr.txtdb...

2019-03-14 22:01:13 304

原创 go 关于包的引入

学习golang一个多星期了, 一直没有搞明白go的包管理以及项目中引用包的细节, go1.11后又有了module的概念, 写代码时只用关注import, 不用手动下载或是 go get了, 但是国内网络的原因, 如 golang.org 下的包不能自动下载, 网上有很多设置代理的方法, 但是我没有设置成功, 最终还是无法下载这些包; 其实开启 GO111MODULE 后, 最先访问的是本地, ...

2019-03-09 20:54:26 3540

原创 go 学习笔记 - 条件编译

在go文件开始部分写// +build windows表示只有windows平台编译// +build linux darwin表示只有linux 和 mac 平台编译注:go 在 import 库时,可以指定本地目录,编译时会将目录下的文件都参与编译,所以同一个包里不能有相同的变量名,但是可以使用条件编译来标识 使得在不同的平台上编译不同的go文件...

2019-03-07 15:01:24 399

原创 git 常用命令

克隆代码 到当前目录git clone https://www.github.com/xxxxxx拉取代码git pull查看本地分支, 查看当前分支git branch切换分支 到developgit checkout develop查看修改详情git log撤销所有本地未提交的修改git checkout ....

2019-03-07 14:54:58 58

原创 go 学习笔记 - 类型

与 C# 的类型相比, go 语言的类型有两点很大的差异, 1是没有值类型和引用类型之分, 2是对象在栈上还是在堆上由运行时决定(C++中是由类的使用者决定, C#是由类的定义者决定, go与Java类似,由编译器(java 是JVM)决定分析决定)1. go 语言中的所有类型都是值类型, 没有引用类型, 变量之间赋值与函数传参全部都是值传递 示例:type Persio...

2019-03-02 14:35:49 123

原创 OpenSSL 公钥 私钥 证书

安装OpenSSL Windows 工具http://slproweb.com/products/Win32OpenSSL.html生成秘钥对说明:公钥私钥必须配对使用, 可互相用于加密解密, 但一般公钥公开, 私钥自己保留不公开公钥加密, 私钥解密, 应用场景: 防止邮件内容传输过程中泄露私钥加密, 公钥解密, 应用场景: 签名邮件, 表明发件人身份操作:生成私钥, ...

2019-01-27 14:54:58 886

原创 Javascript 以 [同步代码] 的方式表达 [异步调用]

从最原始的 callback, 到 Promise, 再到借助 Generator 最终实现了 **以 [同步代码] 的方式表达 [异步调用]**.

2018-09-09 13:18:53 488

原创 Javascript async

安装: npm install –save async 引用: var async = require(‘async’);series(tasks, callback) 串行执行task, 如果某个task报错, 后面的task将不会被执行 当tasks是函数数组, 执行顺序是按下标, 返回值(在callback参数中)也以数组的方式给出 当tasks是函数为属性值的对象, 执行顺序是...

2018-08-27 11:59:44 702

原创 emscripten update 时无法使用新版的Node的问题

之前的emsdk安装和更新时没有注意, 一直使用的是 node 4.1.1, 直到又一次尝试使用npm run 一个本地操作系统的命令时 发现居然不支持, 提示升级node, 才发现 emsdk 激活使用的 node 版本太老了, 是4.1.1 查了一圈, 发现 emsdk update 使用的是 Python脚本, 然后安装时会参考根目录下的emsdk_manifest.json文件, 里面记...

2018-03-10 17:18:57 1013

原创 Javascript ProtoType

为了实现类似其他语言的继承的特性, JavaScript中的实现是使用 原型链规则是这样的在所有的对象上 都有一个 属性叫 [[prototype]], 这个属性属于隐藏属性, 即官方并没有给定它的属性名, 但目前浏览器上 给定的 属性名是 proto 当访问一个对象的某个属性时, 会先在 该对象自己的属性列表中查找, 如果没有 就到 proto 属性指向的对象中查找var ob...

2018-03-04 15:16:22 211

原创 Promise 基础 与 使用套路

Promise 是 ES6 中内置支持的对象其构造函数接受一个参数, 该参数是一个函数, 该函数有两个参数, 两个参数都是函数, 一个在成功时调用(resolve), 一个在出错时调用(reject)let myPromise = new Promise( function(resolve, reject){ if (成功){ resol...

2018-03-03 19:37:57 134

原创 诡异代码-js-2

var a 为变量声明 function a(){} 为函数声明 js中变量和函数的声明会中所处的作用域中“提升“到代码段的最前面,细节:函数声明会先与变量声明提升,如果出现同名的,后者是变量声明将被忽略,如果是函数声明将被覆盖,如下示例: 1. { console.log(a) // 不会报错, 会输出undefine var a = 1 } 等同如下:

2017-04-11 21:01:55 760

原创 诡异代码-JS-1

出处: 你不知道的JavaScript(上卷)- 19function foo(obj) { with (obj) { a = 2; } } var o1 = { a: 3 }; var o2 = { b: 3 }; foo( o1 ); console.log( o1.a ); // 2 foo( o2 ); consol

2017-04-05 21:11:57 250

原创 ES6 export import

ES6 支持模块, 模块间可以通过引用的方式复用代码, 基本的 使用 export 导出一个变量, 使用 import 导入 一个变量// 命名导出, 即导出的变量是带名字的 lib.js: export a = 1 export b = 3.14 export c = ()=>{alert(‘haha’)} class d{} export d// 导入时, 必须 以解包的方式 指定你

2017-03-30 15:24:07 403

原创 React Redux 总结

一个 Container 对应 一个 Component 设计外观时 我们只用关注 Component, 而 Container 由 connect 方法生成, 其实生成完的 Container 也是 一个 React 的 Component 这个 表示 外观的 Component 可以设计成与业务无关的, 比较好的设计是不要直接调用 dispatch 发送 action Component

2017-03-28 21:39:02 307

原创 Javascript require 的实现

require(路径.扩展名): 如果 路径.扩展名 存在 执行加载 并 返回 否则 抛出异常require(路径): 如果 路径.js 存在 执行加载 并 返回 如果 路径.node 存在 执行加载 并 返回 如果 路径/package.json 存在 执行加

2017-03-07 20:51:01 578

原创 Java Proxy 理解

Java 的 Proxy 是指 在运行时 动态构造出 一个接口的 实现类(也可以是一次实现多个接口的一个类), 并创建出一个实例 (如果该类之前有动态构造过, 就直接创建实例), 这个实例中所有方法的实现 都是 调用 一个指定好的 InvocationHandle 对象 的 invoke 方法, 通常的做法是 在 InvocationHandle 中(其实应该是派生类) 包含一个真正的实现类的对象,

2016-12-30 20:43:07 323

原创 对 Java 中 clone 方法的思考

clone 方法是由 Object 类提供, 但为 protected, 只能由派生类调用, 分析设计者的思路: 如果一个类想要提供一个 克隆 的方法 给 外部调用, 就必须要 override Object 中的 clone方法, 并标记为 public, 而且, 从 Object 派生的 类, 默认是不能 clone 的Object 的 clone 方法 返回的 是 Object 类型, 但并

2016-12-26 20:14:13 217

原创 Java 装箱后数字的比较

Java中处理Integer这种装箱类型时, 做了类似C++中字符串表的优化, 对 -128 到 127 直接的整数做了统一堆对象的引用, 如 值是 100 Integer 在堆中已存在一份, 所以可以使用 == 来判断, 而 不在此范围内的 就会是多份, 测试如下

2016-12-10 21:40:07 265

OpenGL 低级着色语言与高级着色语言

OpenGL 低级着色语言与高级着色语言

2007-12-19

空空如也

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

TA关注的人

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