<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[王鲜申的博客]]></title><description><![CDATA[执迷不悔-http://thewangcj.top/]]></description><link>https://blog.youkuaiyun.com/wcjlyj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wcjlyj]]></copyright><item><title><![CDATA[VS2017 编译MuPDF1.26+]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/151794872</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/151794872</guid><author>wcjlyj</author><pubDate>Wed, 17 Sep 2025 16:21:27 +0800</pubDate><description><![CDATA[本文介绍了如何在VS2017环境下编译MuPDF 1.26版本]]></description><category></category></item><item><title><![CDATA[CS144 lab1 记录]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/133675224</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/133675224</guid><author>wcjlyj</author><pubDate>Sun, 08 Oct 2023 11:35:28 +0800</pubDate><description><![CDATA[CS144 lab1 实验记录]]></description><category></category></item><item><title><![CDATA[OCSP 协议 asn.1 不完全定义参考]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/132907439</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/132907439</guid><author>wcjlyj</author><pubDate>Fri, 15 Sep 2023 16:57:15 +0800</pubDate><description><![CDATA[OCSP ASN.1 定义]]></description><category></category></item><item><title><![CDATA[放弃OneNote，拥抱 Obsidian]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/127756025</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/127756025</guid><author>wcjlyj</author><pubDate>Tue, 08 Nov 2022 18:26:03 +0800</pubDate><description><![CDATA[Obsidian 果然是宝石]]></description><category></category></item><item><title><![CDATA[DPDK rte_acl 学习踩坑及示例]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/125428263</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/125428263</guid><author>wcjlyj</author><pubDate>Thu, 23 Jun 2022 15:37:55 +0800</pubDate><description><![CDATA[最近开始需要用 DPDK ACL 来实现一些如包负载长度匹配的需求，因此开始学习 ACL 相关的内容，刚开始上手觉得还是挺难的，花了大概三四天看了官方的文档和一些示例，大概搞明白了 ACL 的用法，也踩了一些坑，这篇博客记录下这段时间的学习内容，最后提供了一个我写的小例子来参考。...]]></description><category></category></item><item><title><![CDATA[解决 ssh 普通用户无法通过密钥登录的问题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/124148603</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/124148603</guid><author>wcjlyj</author><pubDate>Wed, 13 Apr 2022 15:46:43 +0800</pubDate><description><![CDATA[起因：
一直在使用 vscode + remote-ssh 连到服务器上开发，按照网上的教程配置了公钥登录，使用 root 用户可以免密登录，使用普通用户总是显示权限不对，vscode 的报错：Permission denied (publickey,password)…过程试图写入的管道不存在…之类的
排查方法：
根据上面的报错我在网上搜索，发现了一个展示 ssh 错误日志的方法：

在服务器上输入：

sudo /usr/sbin/sshd -p 10022 -d

-d 表示开启调试模式

然后在你本]]></description><category></category></item><item><title><![CDATA[《Linux/Unix系统编程手册》学习心得及资源]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/124039743</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/124039743</guid><author>wcjlyj</author><pubDate>Fri, 08 Apr 2022 14:34:24 +0800</pubDate><description><![CDATA[从去年开始断断续续看《Linux/Unix系统编程手册》，到现在才把上半册看完，其中搜集到了一些资料，也积累了一些心得，一一分享给大家。

知识储备

C 语言基础
大学C语言课程的程度勉强就可以了，如果阅读过程中有遇到不懂的 C 语言方面的知识，可以参考下面的内容：


阮一峰的 C语言教程
总结的非常好的 C 学习笔记
尤其是 C 学习笔记，总结的非常好，建议即使已经学过了 C 语言也读一遍，总共也就200多页，读下来非常快。


Linux 基础
这里的 Linux 基础主要值得是能在 Linux 下]]></description><category></category></item><item><title><![CDATA[Centos7 打造 C/C++ 开发环境]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/122844189</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/122844189</guid><author>wcjlyj</author><pubDate>Wed, 09 Feb 2022 17:25:53 +0800</pubDate><description><![CDATA[Centos7 打造 C/C++ 开发环境GCC 版本问题Git 代理LLVM 编译安装1. 下载源码2. 安装 Z33. 编译安装Bear 编译安装使用 VSCode 阅读调试代码1. VSCode 安装2. C/C++ 代码阅读编辑环境3. 使用 VSCode 调试代码其他好用工具
工作后公司的开发环境都是 Centos7，自带的一些软件都非常老，摸索了很久，总算是搭建了一个相对较为舒适的开发环境，下面介绍一下搭建过程。
GCC 版本问题
Centos7 使用 yum 安装的 GCC 版本是 4.8.5]]></description><category></category></item><item><title><![CDATA[WSL2 Git proxy]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/122832622</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/122832622</guid><author>wcjlyj</author><pubDate>Tue, 08 Feb 2022 22:42:11 +0800</pubDate><description><![CDATA[最近升级了win11，WSL 也顺带着升级到了 WSL2，但是 WSL2 有一点非常蛋疼，IP地址不是固定的，就很难受，每次用 git 的时候设置 proxy 都很麻烦，所以今天查了下资料，花了点时间写了个 Python 脚本来自动化的完成这个功能
注意：该脚本依赖 IPy 这个模块，需要使用下面的命令手动安装一下
sudo pip3 install IPy

下面是脚本的内容：
# coding=utf-8

import socket
import fcntl
import struct
import ]]></description><category></category></item><item><title><![CDATA[使用 libtasn1 库解析 Kerberos 网络包]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/120657047</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/120657047</guid><author>wcjlyj</author><pubDate>Fri, 08 Oct 2021 18:34:16 +0800</pubDate><description><![CDATA[“libtasn1”



最近因工作需要，要从Kerberos（接下来简称krb5）的 pcap 文件中提取 cname 之类的字段，在网上搜了一大推，基本上都是介绍 krb5 的原理，其中我觉得讲的比较好的是《Wireshark网络分析就是这么简单》一书中的“无懈可击的Kerberos”，在微信读书里就可以收到，看完之后开始研究如何从 pcap 文件中提取想要字段的值，发现 wireshark 中展示的字段之间都有一些不知道是啥的数据，比如下面两幅图展示的：


在 pvno 和 msg-type ..]]></description><category></category></item><item><title><![CDATA[C++ Primer 读书笔记04]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/109051226</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/109051226</guid><author>wcjlyj</author><pubDate>Tue, 13 Oct 2020 14:50:38 +0800</pubDate><description><![CDATA[C++ Primer 读书笔记04关联容器pair动态内存静态内存栈内存智能指针shared_ptr直接管理内存new空悬指针智能指针陷阱unique_ptrweak_ptrlock动态数组智能指针与动态数组


“C++ Primer”



关联容器
标准库提供 8 个关联容器，他们的不同体现在：

或者是一个set，或者是一个map
或者要求不重复的关键字，或者允许重复关键字，允许重复关键字的容器的名字中都包含单词multi
按顺序保存或者无序保存,不保持关键字按顺序存储的容器的名字都以unorder]]></description><category></category></item><item><title><![CDATA[C++ Primer 读书笔记03]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/108620005</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/108620005</guid><author>wcjlyj</author><pubDate>Wed, 16 Sep 2020 12:48:02 +0800</pubDate><description><![CDATA[C++ Primer 读书笔记03输出缓冲导致缓冲刷新的原因：刷新缓冲区顺序容器emplace迭代器失效vector容器适配器栈适配器队列适配器lambda捕获列表可变 lambda指定 lambda 的返回类型bind(11)插入迭代器iostream 迭代器反向迭代器
输出缓冲
每个输出流都管理一个缓冲区，用来保存程序读写的数据
导致缓冲刷新的原因：

程序正常结束，作为 main函数的return操作的一部分，缓冲刷新
缓冲区满时
使用操纵符endl来显示刷新缓冲区
每个输出操作后用操作符unitbu]]></description><category></category></item><item><title><![CDATA[C++ Primer 读书笔记02]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/108542213</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/108542213</guid><author>wcjlyj</author><pubDate>Fri, 11 Sep 2020 21:37:54 +0800</pubDate><description><![CDATA[C++ Primer 读书笔记02```this``````const```成员函数访问控制友元可变数据成员构造函数初始值列表委托构造函数默认构造函数默认初始化值初始化隐式的类类型转换类的静态成员


“C++ Primer”



this
this总是指向“这个”对象，所以this是一个常量指针
常量对象，以及常量对象的引用或指针都只能调用常量成员函数
原因：虽然this是隐式的，但仍然遵守初始化规则，所以不能把this绑定到一个常量对象上，所以这就是不能在一个常量对象上调用普通成员函数的原因
cons]]></description><category></category></item><item><title><![CDATA[C++ Primer 读书笔记01]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/108475667</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/108475667</guid><author>wcjlyj</author><pubDate>Tue, 08 Sep 2020 19:47:26 +0800</pubDate><description><![CDATA[C++ Primer 读书笔记01变量声明和定义```const```指针与```const```数组与指针```begin```和```end```(11)左值右值：赋值运算符递增和递减运算符成员访问运算符```sizeof```强制类型转换范围```for```局部静态对象：将局部变量定义成 static 类型函数声明```initializer_list```列表初始化返回值（c++11）返回数组指针```constexpr```assert疑惑：


“C++ Primer”



变量声明和定义
]]></description><category></category></item><item><title><![CDATA[Unix/Linux 编程实践教程第六章习题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/100120827</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/100120827</guid><author>wcjlyj</author><pubDate>Wed, 28 Aug 2019 15:50:34 +0800</pubDate><description><![CDATA[tips: 这一章习题倒是少，练习题多到头皮发麻。。。
6.1
tr命令用于转换或删除文件中的字符，详细的用法可以参考
Linux tr命令,至于不接受命令行指定文件，我想是因为标准输入输出可以被重定向到任何类型的链接上，包括文件，所以没有必要接受命令行指定文件。这样只考虑标准输入输出降低了程序编写的难度，相应的，用户使用起来就相对麻烦一些，当然，这只是我的猜测，可能不对。除了tr,还有colrm...]]></description><category></category></item><item><title><![CDATA[Unix/Linux 编程实践教程第五章习题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/100118646</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/100118646</guid><author>wcjlyj</author><pubDate>Wed, 28 Aug 2019 14:35:47 +0800</pubDate><description><![CDATA[tips: 这一章的习题是真的多，花费了我许多时间，说实话，这本书的习题难度对我而言还是挺大的。这里有一些小建议，看的时候可以同时参考其他书，我参考的是《UNIX环境高级编程》和《Linux C编程一站式学习》，第二本我在最底下留下了链接，是在线版本的。然后这一章的很多题还是不太懂，如果你知道答案欢迎评论告诉我，谢谢。
5.2
现在的biff命令是用来控制命令行环境下有新邮件时是否提示，和作者的意...]]></description><category></category></item><item><title><![CDATA[VS Code 配合 WSL 搭建 C/C++ 开发环境]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/98479617</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/98479617</guid><author>wcjlyj</author><pubDate>Mon, 05 Aug 2019 10:30:28 +0800</pubDate><description><![CDATA[“WSL 真香”


最近在看 《TCP/IP网络编程》，韩国人写的，讲解了 Windows 和 Linux 平台下的网络编程，才看了四章，感觉通俗易懂，值得一读。出版社网站上提供了源码，平时主要使用 Windows，为了看本书切换到 Linux 感觉有些麻烦，刚好微软推出了WSL，试一试能不能用它来编译运行代码。
WSL全程Windows Subsystem for Linux，是一个 win...]]></description><category></category></item><item><title><![CDATA[Unix/Linux 编程实践教程第四章习题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/97962094</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/97962094</guid><author>wcjlyj</author><pubDate>Wed, 31 Jul 2019 21:14:29 +0800</pubDate><description><![CDATA[tips: 答案仅供参考，不保证正确

4 .1
这个硬件位置一般称作 CHS 地址，既磁头数（Heads）、柱面数（Cylinders）、 扇区数（Sectors），而在系统中描述数据所在的区块称作 LBA (逻辑区块地址)，这种寻址方式把硬盘看成一个大的数组，每一个数据块有一个编号。两个地址进行转换时要注意：由于系统在写入数据时是按照从柱面到柱面的方式，在上一个柱面写满数据后才移动磁头到下一个...]]></description><category></category></item><item><title><![CDATA[Unix/Linux 编程实践教程第三章习题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/96187850</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/96187850</guid><author>wcjlyj</author><pubDate>Tue, 16 Jul 2019 21:31:21 +0800</pubDate><description><![CDATA[==tips:==答案经供参考，不保证正确
3.1
在我的 deepin 上，d_name 的长度是 256，有的系统定义成 1 是为了节省空间，使用时可以通过 malloc() 动态的分配空间，比如：
struct dirent
{
   int len;
   char a[0];
};

struct dirent *fun(char *str, int len)
{
   struct d...]]></description><category></category></item><item><title><![CDATA[Unix/Linux 编程实践教程第二章习题]]></title><link>https://blog.youkuaiyun.com/wcjlyj/article/details/96171666</link><guid>https://blog.youkuaiyun.com/wcjlyj/article/details/96171666</guid><author>wcjlyj</author><pubDate>Tue, 16 Jul 2019 19:50:29 +0800</pubDate><description><![CDATA[tips: 如果使用 man 查询是出现问题可能是你的 Linux 发行版没有完整的 man pages,可以通过下面的命令安装：
sudo apt install manpages
sudo apt install manpages-dev

another tips 答案仅供参考，不保证正确
2.1
相比于 who 命令， w 还提供了当前时间、系统运行时间、有多少登录用户以及过去1,5和15...]]></description><category></category></item></channel></rss>