![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lang
文章平均质量分 57
高铭杰
反思总结常态化,华为高斯PG->阿里PG->腾讯PG
展开
-
__int128类型movaps指令crash
在使用__int128时,如果__int128类型的内存起始地址不是按16字节对齐的话,有些汇编指令会抛出SIGSEGV使程序crash原创 2023-11-22 21:10:16 · 751 阅读 · 0 评论 -
LLVM(6)ORC实例分析:Transform in cpp
llvm orc实例分析原创 2023-10-17 11:17:01 · 228 阅读 · 0 评论 -
LLVM(5)ORC实例分析
llvm orc实例分析原创 2023-10-10 15:59:07 · 571 阅读 · 0 评论 -
gcc语法解析如何解决dangling else的问题?
GCC上古版本(3.4)还有yacc,学习GCC如何实现if else 嵌套的问题。原创 2023-08-18 15:20:39 · 159 阅读 · 0 评论 -
LLVM(4)常量折叠instcombine pass优化实例
常量折叠instcombine pass优化实例。下面函数foo中存在冗余变量、赋值语句,使用instcombine优化的效果。原创 2023-07-26 22:59:33 · 414 阅读 · 0 评论 -
LLVM(2)IR入门
IR入门学习原创 2023-07-24 21:28:49 · 288 阅读 · 0 评论 -
LLVM(1)Fibonacci实例
Fibonacci计算是一个非常经典的案例,下面用Fibonacci的两种写法 对比普通C函数和LLVM IR的编写区别。原创 2023-07-24 14:49:47 · 97 阅读 · 0 评论 -
Makefile中的字符串替换
总结makefile中${a:b%=c%}字符串替换语法原创 2023-07-23 12:29:44 · 561 阅读 · 0 评论 -
如何知道程序需要什么版本的libc/libstdc++
C++的版本管理简单粗暴,像libc这种基础库如果需要多版本,用起来非常不方便,但c/c++基础库都是向下兼容的,最好的方式就是用一套比较新的系统,带着新的libc,再安装一套和系统版本同年代的新一点的gcc编译器即可,可满足大部分的使用场景,避免一套环境上折腾多套libc、libstdc++,经验之谈:非常麻烦性价比很低。原创 2023-07-22 15:12:53 · 1693 阅读 · 0 评论 -
不依赖yacc如何实现表达式按优先级解析
不依赖yacc如何实现表达式按优先级解析原创 2023-07-19 21:46:35 · 1035 阅读 · 0 评论 -
内存避障:一个内存乱序实例
借鉴网上的一个例子,分析一下到底什么是memory reordering内存乱序。原创 2023-03-16 21:30:00 · 541 阅读 · 0 评论 -
为什么告警warning implicit declaration of function必须修复
本篇送给每一位写C/C++的朋友原创 2023-03-13 16:23:21 · 1942 阅读 · 0 评论 -
理解YACC中符号的优先级和结合性
优先级和结合性是YACC中基础概念之一,本篇结合实例讲解这两个概念。原创 2022-12-10 17:18:36 · 1100 阅读 · 0 评论 -
longjmp导致局部变量丢失
编译器在O1优化下,把sigsetjmp与siglongjmp之间的局部变量赋值操作丢掉了。- longjmp与setjmp语句之间的变量赋值会丢失。- 变量须满足: 1. 在调用setjmp函数中的局部变量(栈变量) ,全局变量不受影响 2. 非volatile解决方法:加volatile原创 2022-11-19 12:16:31 · 441 阅读 · 0 评论 -
C指针截断问题(形如0xaaaabbbbccccdddd > 0xffffffffccccdddd)
C编码中可能会遇到函数返回值地址被截断的问题,这里做下场景复现和分析。复现以PG14的这段代码为例,xxx.c文件中使用relation_open函数打开表,然后使用变量。.../* xxx.h */typedef struct RelationData *Relation;#define RelationGetDescr(relation) ((relation)->rd_att)/* relation.h */extern Relation relation_open(Oid原创 2022-04-25 10:07:08 · 1796 阅读 · 0 评论 -
gdb分析core文件找不到源码
GDB源代码查找路径在gdb程序的时候,有时候会发现源代码文件找不到这个时候有两种选择:1 显示绝对路径并找不到文件如果gdb这个时候告诉你找不到这个带调试信息库的源文件路径,此时给出的路径地址是绝对路径,比如/home/xxx/dev/aaa/bbb/ccc.c: 没有那个文件或目录这种提示的,你就应该用gdb提供的set substitute-path这个其实很好理解,就是替换规则,你如果想查看当前的替换规则,你可以show substitute-path比如此时我们需要ccc.c这原创 2021-09-23 11:31:59 · 857 阅读 · 0 评论 -
Java中的ArrayList与System.arraycopy底层原理
OPENJDK源码:wget https://download.java.net/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip1 ArrayList增长策略最小增长区间:10增长算法:new = old + old / 2实际增长点:10、15、22、33、49、73、109、163、244、366、548、823、1234也就是说增长到1000的数组如果没有事先指定大小,会发生13次Arrays.copyOf动.原创 2020-12-28 14:52:43 · 928 阅读 · 0 评论 -
Intellij idea Debug JDK 出现 Variables debug info not available
解决办法去jdk目录找到src.zip并解压# jdk 目录/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home新建java项目,把src文件夹放到项目里导出jar包,指定jar包名为rt。在jdk 1.8中名字一定要起rt不然无法解决问题。其它jdk没测试过。如果在build时报内存溢出,如下图在/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Con.原创 2020-08-04 21:27:31 · 2720 阅读 · 1 评论 -
理解证书验证系列——HTTPS
1 加密方式方法1 对称加密这种方式加密和解密同用一个密钥。加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。以对称加密方式加密时必须将密钥也发给对方。可究竟怎样才能安全地转交?在互联网上转发密钥时,如果通信被监听那么密钥就可会落人攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。方法2 非对称加密公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,原创 2020-06-17 20:02:44 · 486 阅读 · 0 评论 -
理解证书验证系列——SSH
速查当该用户发送文件时,用私钥签名,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。类似SSH登陆服务端有你的公钥,服务端发给你随机串,你用私钥加密,服务端用公钥解密,解密成功,服务端知道是你,允许登陆。HTTPS中网站把公钥发给你,你拿着公钥加密一个串发给网站,网站解密之后在发给你,你知道网站是真的(只有网站有私钥)。1 SSH协议$ ssh user@host主要有两种登录方式:第一种为密原创 2020-06-16 23:01:33 · 311 阅读 · 0 评论 -
Log4j2使用案例
全干货记录1 MAVEN配置link<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.3</version> </dependency> <dependency&g原创 2020-06-14 17:47:13 · 570 阅读 · 0 评论 -
Idea中创建maven管理的servlet项目
新手google servlet的入门教程,菜鸟教程可能是最常见的入门文档了,简单易懂。https://www.runoob.com/servlet/servlet-first-example.html本篇给出如何使用idea创建maven的servlet项目(补充下教程的第四章)希望能作为大家第一个servlet项目的demo ????步骤一:创建maven空项目创建普通的maven工程...原创 2020-05-06 22:30:45 · 1074 阅读 · 0 评论 -
JAVA标准库JDBC流程分析
结合debug的分析过程记录,一切结论都出于code。为了方便分析,这里从h2的一个测试用例出发:/* * Copyright 2004-2020 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial De...原创 2020-05-02 19:12:37 · 205 阅读 · 0 评论 -
Java使用注解与反射做参数值验证玩法
注解玩法注解定义三个值@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@Target({ FIELD, METHOD })public @interface ParameterA { String[] info() default {}; String description() default ""; ...原创 2020-04-01 16:31:20 · 422 阅读 · 0 评论 -
工厂模式惯用法
总结简单工厂模式是我见的最多的使用方式,类工厂模式在使用中灵活性低一些,抽象工厂模式比较繁琐,使用时思路不是很顺畅,可能会增加系统复杂度。简单工厂模式可以理解为:生产不同对象的统一入口。把创建对象的复杂性做了一层封装,降低调用者的使用难度(避免创建与初始化对象的代码变更),将难度封装到类与实例话中间,还是体现的封装思想。惯用法一般builder作为主类的静态子类使用:public cla...原创 2020-03-31 17:28:50 · 201 阅读 · 0 评论 -
JAVA中ResourceBundle使用实例
IDEA增加properties添加locales生成properties文件测试实例package com.mjoker;import org.junit.Test;import java.util.Locale;import java.util.ResourceBundle;public class BundleTest { @Test publi...原创 2020-03-31 00:25:33 · 428 阅读 · 0 评论 -
Telegraf插件引擎分析
性能数据采集方法很多,最近看到一款工具很有意思,工程实现上有一些值得借鉴的地方Telegraf(https://github.com/influxdata/telegraf)(1)全插件架构,从数据采集、处理、聚合、输出都支持独立插件模式,给开发带来很多便利。(2)框架设计上面有很多值得借鉴的地方,比如发生采集超时,下一次采集是否应该调度,如果调度起来应该如何处理,如何避免啰嗦复杂的代码结构等。1 Agent整体拉起顺序启动顺序telegraf.go:main() | telegraf_原创 2020-12-28 14:40:12 · 1568 阅读 · 0 评论 -
go mod vendor测试
go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,每个工程的依赖包、版本可有由当前工程独立管理!mod操作记录export GO111MODULE=ongo mod init github.com/mutex73/ga可以手动增加依赖go.uber.org/atomic v1.4.0或者让go自动发现和维护,下面buil...原创 2019-06-30 17:19:27 · 8234 阅读 · 0 评论 -
go get报错:fatal: could not read Username ... terminal prompts disabled
问题terminal prompts disabledgo get 报错 terminal prompts disabledgo get xxx.com/xxx/xxx# cd .; git clone https://xxx.com/xxx/xxx.gitCloning into 'xxx'...fatal: could not read Username for 'https://x...原创 2019-05-27 15:22:20 · 35703 阅读 · 2 评论