经验
飞鸟真人
这个作者很懒,什么都没留下…
展开
-
使用go_concurrent_map 管理 并发更新缓存
在后台服务中,为了提速,我在内存还做了一个告诉缓存来管理用户信息,根据更新通知,或者定时去redis中同步信息,那么在加载或者更新某个用户元素时,要防止并发,这个类在插入时候,可以检测是否存在,并通过回调函数来决定是插入还是更新;这个加锁已经放在插入函数中完成了;2)去数据库或者redis加载;这里就有个并发重复的可能性;1)如果内存缓存没有;3)添加到内存缓存;原创 2024-04-19 09:01:12 · 361 阅读 · 0 评论 -
椭圆曲线密钥交换 (Elliptic Curve Diffie-Hellman, ECDH)代替DH秘钥交换
椭圆曲线加密(Elliptic Curve Cryptography,ECC)和迪菲-赫尔曼密钥交换(Diffie-Hellman Key Exchange,DH)都是现代密码学中常用的技术,它们可以用于安全地交换密钥和加密通信。原创 2024-03-23 14:01:14 · 1434 阅读 · 0 评论 -
编写http workshop脚本从网站下载音乐
一般网页格式播放器的设计的访问流程基本都是:通过某个专辑ID获取媒体列表;根据列表中单个的媒体资源的ID去请求下载路径;原创 2023-03-05 12:36:31 · 421 阅读 · 0 评论 -
关于联想Y7000P睡眠后无法唤醒问题修复
安装程序执行后,自动重启,开始自动更新,发现之前是45WW,目前是49WW。这个新的机器是WINDOWS11的,症状了自己睡眠后就醒不过来了,于是找了在线客服,客服问是否是在禁用触摸板情况下无法唤醒,我试试发现果然是,不禁用可以唤醒,禁用了就行了,只能重启;于是,我试了一下,果然更新时候发现之前的版本比较旧,于是我找到了公众号,提示下载一个软件修复驱动,页面有相关的说明,以及新版本BIOS的版本是。再然后就自动重启进入windows11了,此时测试发现,已经可以正常唤醒计算机了。原创 2023-02-21 13:05:21 · 4038 阅读 · 1 评论 -
tinode客户端安卓版编译手账
tinode的安卓客户端做一些更改,能忽略服务器证书校验,方便试验环境使用;原创 2022-12-16 13:43:53 · 1036 阅读 · 0 评论 -
使用tinode架设自己的私有聊天服务
架设tinode服务器,实现聊天自由原创 2022-11-30 11:33:08 · 3369 阅读 · 1 评论 -
golang让map支持高并发(1000万次操作14ms)
golang使用泛型map重新封装,支持高并发,可以实现100协程1000万次操做,在14ms内返回;原创 2022-11-14 10:33:35 · 525 阅读 · 0 评论 -
python遍历网页节点并记录xpath
遍历html文件,找到能点击的节点原创 2022-09-16 09:28:54 · 1145 阅读 · 0 评论 -
关于比赛中c++输入输出的优化
使用fgets优化输入,使用fwrite优化输出原创 2022-08-19 14:48:08 · 656 阅读 · 0 评论 -
Flatbuffer使用
golang使用flatbuffer编解码示例原创 2022-08-10 16:09:00 · 562 阅读 · 0 评论 -
ubuntu安装chrome浏览器
ubuntu安装chrome默认是不能用的,需要更改配置原创 2022-08-04 15:44:58 · 1375 阅读 · 0 评论 -
python使用selenium以及selenium-wire做质量与性能检测
selenium以及selenium-wire做质量与性能检测原创 2022-08-04 14:49:17 · 5079 阅读 · 2 评论 -
c++ 在控制台输出彩色字体
彩色文本输出原创 2022-08-02 14:34:29 · 2872 阅读 · 0 评论 -
使用zeek做HTTP RPC性能检测
*需求**我的需求是在K8S的云上添加自己的非侵入式采集工具,并检测各种后端的RPC性能,比如http_rpc,grpc,mysql,redis,mongodb,以及自定义的rpc等网络交互过程的性能;**解决方案**直接在zeek现有基础上开发脚本,并开发日志读写工具将结果转存到自己的后端;这样就基本实现了我们的需求,后续的工作只是需要扩展各种协议,以及从日志流提取数据;首先,参考HTTP的相关脚本,记录自己需要的数据,写个hello,world。1)讲解了事件与事件队列的原理。...原创 2022-07-28 12:57:48 · 989 阅读 · 0 评论 -
如何使用OpenGts和gpsLogger配置与使用
使用gpsLogger上传位置信息,使用openGTS查看轨迹,原创 2022-07-14 13:56:39 · 775 阅读 · 0 评论 -
docker镜像之带vnc的ubuntu
测试了2个带VNC功能的ubuntu镜像,可以运行图形界面的程序原创 2022-07-08 17:09:13 · 3697 阅读 · 4 评论 -
gcc编译C++ 符号名解码 c++filt demangle
c++filt 自己用函数实现 demangle原创 2022-06-21 09:54:31 · 568 阅读 · 0 评论 -
ubuntu20 下libcapston-dev4.0.1的bug
libcapston-dev4.0.1的bug原创 2022-06-21 15:41:44 · 129 阅读 · 0 评论 -
使用libcapstone反汇编
记录一下反汇编与用户层函数追踪原创 2022-06-17 12:57:57 · 508 阅读 · 0 评论 -
使用bpftrace监测libcurl的执行时长
编写bpftrace脚本,监控curl访问某个页面的时长原创 2022-06-15 14:55:06 · 260 阅读 · 1 评论 -
centos8安装screen
centos8安装那个screen原创 2022-06-10 11:17:08 · 1102 阅读 · 0 评论 -
使用shell 检测操作系统版本信息
思路:使用/etc/os-release中的信息,同时调用uname -?得到内核信息原创 2022-06-08 17:17:03 · 2446 阅读 · 0 评论 -
switch case 与map哪个效率高?
从直觉来看,应该是map高,因为通过索引来对比应该比反复的判断并jmp来的快,但事实上违反直觉的是,当少量的键值对查找时候,发现switch快了一倍多!!!// justTestit.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <map>#include <unordered_map>#include <regex>#include "MyTimer.h原创 2022-05-31 16:41:10 · 1871 阅读 · 1 评论 -
linux使用c++调用脚本获取数据
脚本参考之前的文章,代码如下:#include <bits/stdc++.h>using namespace std;static inline std::string execute_command(const char *cmd){ if (cmd == NULL) { return ""; } FILE *fp = popen(cmd, "r"); if (NULL == fp) { re原创 2022-05-18 08:52:44 · 390 阅读 · 0 评论 -
linux使用ICMP实现ping和traceroute
测试环境:ubuntu20.04/** * @file sockIcmp.cpp * @author robinfox (390017268@qq.com) * @brief * @version 0.1 * @date 2022-05-16 * * @copyright Copyright (c) 2022 * * gcc sockIcmp.cpp -lpthread -lstdc++ -w -g -o icmp */#include <stdio.h>#in原创 2022-05-17 14:19:12 · 367 阅读 · 0 评论 -
int64的输出格式兼容性问题
比如在64位操作系统上,使用printfwindows代码为#include<stdio.h> int main(int argc, char** argv) { int64_t x = 1; printf("x=%lld\n", x); return 0;} 而linux却是:#include<stdio.h> int main(int argc, char** argv) {原创 2022-05-16 08:42:34 · 306 阅读 · 0 评论 -
c++ 使用gethostbyname_r解析域名
前一帖子,实验了如何使用adns库实现解析,用起来还是麻烦,直接使用系统函数,更直接:#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/ip_icmp.h>#include <arpa/inet.h>#include <sys/types.h>#i原创 2022-05-13 12:38:38 · 1006 阅读 · 0 评论 -
c++ 调用adns库实现DNS解析(全网唯一正确示例)
可以使用一个adns的c库,版本是1.6,官方地址:adns - advanced, alternative, asynchronous resolver下载地址是:http://www.chiark.greenend.org.uk/~ian/adns/ftp/adns-1.6.0.tar.gz我实验环境是ubuntu20.04解压,并编译tar xzvf adns-1.6.0.tar.gzcd adns-1.6.0./configuremake我没有make install原创 2022-05-12 10:25:45 · 1217 阅读 · 0 评论 -
clickhouse使用c++接口访问
官方提供了客户端,地址:https://github.com/ClickHouse/clickhouse-cpp下载后,使用ubuntu18.04编译:mkdir buildcd buildcmake ..make -j8生成的文件在build目录,新建一个目录cd ..mkdir robincd robin将静态库拷贝过来libabsl-lib.alibcityhash-lib.alibclickhouse-cpp-lib-static.a li.原创 2022-03-17 13:41:27 · 4463 阅读 · 3 评论 -
centos7安装clickhouse和图形客户端
安装clickhouse服务参考:https://blog.csdn.net/wbl381/article/details/106995351/下载页面:https://packagecloud.io/Altinity/clickhousewget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.3.18-1.el7.x86_64.rpm/dow原创 2022-03-17 08:50:12 · 322 阅读 · 0 评论 -
多线程如何实现高性能计数器(无锁)
多线程协作免不了使用计数器,c++一般会使用锁,或者原子变量操作,std::mutex mutexCounter;int count;void add(){ std::lock_guard<std::mutex> guard(mutexCounter); count ++;}std::atomic<int> count;void add(){ count ++;}在性能要求比较高的情况下,这样的代码100%是会真个业务的瓶原创 2022-03-07 13:47:20 · 918 阅读 · 5 评论 -
使用http1.1协议做高效RPC (15W tps)
http1.1协议支持长连接,支持pipelining;1)http头设置keep-alive选项,tcp socket连接服务器后,双方不再轻易断开,这样可以减少建立连接所需要的开销;2)pipelining是服务器支持流水线机制,客户端不需要等待response,而不停的发送request,异步等待应答并解析;在网络时延比较大的情况下,如果使用pipelining机制可以很好的避免网络时延造成的性能下降;但是我所使用的HttpLib客户端是使用同步获取的;即便是Curl在目前的版本也并不支持原创 2022-02-28 15:37:56 · 2705 阅读 · 0 评论 -
http server吞吐量测试
原创 2022-02-28 15:10:45 · 568 阅读 · 0 评论 -
几个比较快的c++ 的json库(YYJSON)
几种json库对比之前的rapidjson与protobuf对比:https://blog.csdn.net/robinfoxnan/article/details/1187343871、yyjson按照官方说法,比rapidjson还要快,尤其是大文件;优点是:使用.h与.c一对文件,不需要依赖第三方库;代码地址:https://github.com/bulice/yyjson解码接口比较简单容易理解:void test1(){ Timer timer; timer.start();原创 2022-01-20 13:39:18 · 3624 阅读 · 0 评论 -
c++也可以优雅的解析命令行参数
上代码:#pragma once#include <string>#include <sstream>#include <map>#include <functional>#include <inttypes.h>using namespace std;using UsageHandle = std::function<void (void)>;static std::map<string, string原创 2021-12-31 09:52:48 · 948 阅读 · 0 评论 -
constexpr 关键字优化 字符串映射与查找
需求:1)执行期间将文件名的扩展映射为具体的内容信息返回;2)可以理解为键值对查找;解决方法:1)普通的解决方案:使用std::map<string, string>管理并查找;2)constexpr解决方案:直接写为switch case 方式;先内联2个函数,作为字符串转int的哈希:inline constexpr unsigned int str2tag_core(const char *s, size_t l, unsigned int h..原创 2021-12-24 12:07:43 · 641 阅读 · 0 评论 -
PHP7.2与apache环境安装部署详细流程
php-agent 安装部署详细流程一、环境测试机内网IP: 10.128.5.98用户名口令: root/oneapm21cat /etc/system-releasecat /etc/issueuname -r备注:需要准备xshell和xftp软件;不再赘述;二、安装apachecd httpd-2_x_NN./configure --enable-somakemake install参考:https://www.php.net/manual/zh/inst原创 2021-12-18 11:51:12 · 814 阅读 · 0 评论 -
PHP7.2与nginx1.20安装流程
nginx与php7.2安装配置环境为centos7.9一、安装nginx1.2参考:nginx 1.20 编译安装以及依赖库说明1)安装依赖项:yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel正常可以安装成功。2)安装工具:yum install -y gcc gcc-c++创建用户nginx,以该用户的身份执行nginxuseradd -s /bin/false -M nginx3)开始编原创 2021-12-18 11:49:07 · 2470 阅读 · 0 评论 -
CentOS7.x c++开发环境配置
开发环境配置:一、GCC版本centos7默认是GCC4.8.5,升级步骤 https://www.cnblogs.com/jixiaohua/p/11732225.html1)安装centos-release-sclsudo yum install centos-release-scl2)安装devtoolset,注意,如果想安装7.版本的,就改成devtoolset-7-gcc,以此类推sudo yum install devtoolset-8-gcc*3)激活对应的devtools原创 2021-12-18 11:46:31 · 2432 阅读 · 0 评论 -
cmake 编译protobuf-cpp3.x
下载地址:Releases · protocolbuffers/protobuf · GitHubwindowscd cmakemdir buildcd buildcmake -G "Visual Studio 15 2017" ../linuxcd cmakemdir buildcd buildcmake ../原创 2021-12-18 11:36:59 · 511 阅读 · 0 评论