<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mengde的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hustang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hustang]]></copyright><item><title><![CDATA[[Redis源码笔记] 基础数据结构之sds]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/132956337</link><guid>https://blog.youkuaiyun.com/hustang/article/details/132956337</guid><author>hustang</author><pubDate>Sun, 17 Sep 2023 22:29:43 +0800</pubDate><description><![CDATA[的flexible array member是被忽略的。同样，flexible array member的地址空间也需要显示分配，]]></description><category></category></item><item><title><![CDATA[Cmake + vcpkg 构建 OpenCV 应用]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/121955026</link><guid>https://blog.youkuaiyun.com/hustang/article/details/121955026</guid><author>hustang</author><pubDate>Wed, 15 Dec 2021 16:12:39 +0800</pubDate><description><![CDATA[本文主要记录使用 vcpkg 包管理工具安装 OpenCV，然后在 CLion 中使用 CMake 构建工具调用 OpenCV 的环境配置过程

环境：

Windows 10
VS 2019

安装使用 vcpkg
官方文档
1. 克隆 vcpkg
git clone https://github.com/Microsoft/vcpkg.git

2. 构建 vcpkg
.\vcpkg\bootstrap-vcpkg.bat

构建完成之后，可以将 vcpkg 所在路径加入环境变量，便于在其它目录下调用.]]></description><category></category></item><item><title><![CDATA[CSAPP实验笔记一：Data Lab]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/121339554</link><guid>https://blog.youkuaiyun.com/hustang/article/details/121339554</guid><author>hustang</author><pubDate>Mon, 15 Nov 2021 17:42:44 +0800</pubDate><description><![CDATA[本实验中涉及的知识点均包含于原书第二章
1.使用~和&amp;表示^
题目要求：
/* 
 * bitXor - x^y using only ~ and &amp; 
 *   Example: bitXor(4, 5) = 1
 *   Legal ops: ~ &amp;
 *   Max ops: 14
 *   Rating: 1
 */

即使用非和与运算符表示异或运算符，下面给出异或的真值表：




A
B
A^B




0
0
0


1
0
1


0
1
1


1
1
0


异或]]></description><category></category></item><item><title><![CDATA[设计模式：工厂模式]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120976820</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120976820</guid><author>hustang</author><pubDate>Tue, 26 Oct 2021 17:35:20 +0800</pubDate><description><![CDATA[工厂模式是重要的创建型模式之一，所有的开发者都应当了解，它是许多高级设计模式的基础。长时间以来，我一直弄不清不同类型的工厂模式的区别，另外，很难找到一篇能将清除这些模式的文章。本文主要叙述以下工厂模式的以下几点：

工厂方法模式
抽象工厂模式
静态工厂方法
简单工厂

工厂方法模式在“Gang of Four”的《设计模式》一书中提到，我第一次在书中读到该内容时，我将它与 Joshua Bloch 在《Effective Java》中提到的静态工厂弄混了。简单工厂（也就是常说的工厂模式）是常规的也是最常用的]]></description><category></category></item><item><title><![CDATA[Java中的引用]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120517826</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120517826</guid><author>hustang</author><pubDate>Mon, 27 Sep 2021 21:28:35 +0800</pubDate><description><![CDATA[简介
在 Java 中有四种引用：

强引用(Strong Referenc)
软引用(Soft References)
弱引用(Weak References)
虚引用(Phantom References)

不同的引用，主要是垃圾回收时有区别。如果你从来没有听说过这些引用，那说明你只使用过强引用，了解他们的区别或许对你有所帮助，特别是当你需要临时存储对象，却不能使用真实的缓存库（例如 eHcache 和 Guava）时。
因为这些引用类型的不同和垃圾回收有很大的关联，这里首先回顾一下 Java 中的垃]]></description><category></category></item><item><title><![CDATA[JVM 内存模型]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120339023</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120339023</guid><author>hustang</author><pubDate>Thu, 16 Sep 2021 22:29:58 +0800</pubDate><description><![CDATA[众所周知，Java 以 WOTA (Write once, run anywhere)闻名。为了实现这一点，Sun Microsystems 创造了 Java 虚拟机，它是对底层操作系统的一种抽象，可以解释执行编译的 Java 代码。JVM(Java Vritual Machine) 是 JRE(Java Runtime Environment) 的核心组件，它原本是用来运行 Java 代码的，但是现在有一些其他的语言也在使用它(Scala, Groovy, JRuby, Closure)。
本文将着重讲述]]></description><category></category></item><item><title><![CDATA[Qt实现区分左键、右键和双击的ListWidget (PySide2)]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120204448</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120204448</guid><author>hustang</author><pubDate>Thu, 09 Sep 2021 16:43:39 +0800</pubDate><description><![CDATA[具体代码如下
"""
Author: Mengde
Date: 2021/9/8
"""
from PySide2.QtCore import Signal, QPoint
from PySide2.QtWidgets import QListWidget
from PySide2.QtGui import QMouseEvent, Qt, QCursor


class MyListWidget(QListWidget):
    """ 自定义的 ListWidget， 区分鼠标事件中的左键单击，右键单]]></description><category></category></item><item><title><![CDATA[HashMap的工作原理]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120203792</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120203792</guid><author>hustang</author><pubDate>Thu, 09 Sep 2021 16:28:06 +0800</pubDate><description><![CDATA[有很多 Java 开发者都在使用HashMap，HashMap是一种简单易用，且功能强大的数据结构。但是有多少开发者知道HashMap的底层原理呢？这些天，为了深入理解HashMap这一基础数据结构的底层原理，我阅读了大量的源码(包括 Java 7 和 Java 8)。在这篇文章中，我将解释HashMap的具体实现，展示它在 Java 8 中新的改变，讨论HashMap的性能、内存以及已知的问题。
内部存储方式
Java 的HashMap类实现了Map&lt;K,V&gt;接口，该接口的只要方法有：


V]]></description><category></category></item><item><title><![CDATA[C语言中变长数组的陷阱]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/120024411</link><guid>https://blog.youkuaiyun.com/hustang/article/details/120024411</guid><author>hustang</author><pubDate>Wed, 01 Sep 2021 09:31:18 +0800</pubDate><description><![CDATA[C语言中变长数组的陷阱
本文为译文[原文链接](The (too) many pitfalls of VLA in C | Jorengarenar)

相比于定长数组，变长数组会产生额外的代码，使代码运行速度更慢，鲁棒性更差 ~ Linus Torvalds

变长数组缩写为VLA(variable-length array)，它是一种在运行时才确定长度的数组（地址空间连续的数组，并不是表现得像数组的多段内存组成的数据结构），而非编译期。
以一种或多种方式提供VLAs支持的语言包括：Ada, Algol ]]></description><category></category></item><item><title><![CDATA[C语言中字符串的初始化]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/115005742</link><guid>https://blog.youkuaiyun.com/hustang/article/details/115005742</guid><author>hustang</author><pubDate>Fri, 19 Mar 2021 14:29:23 +0800</pubDate><description><![CDATA[字符串是最常用的数据类型之一。C语言中，是没有类型来存储字符串的，字符串被看做是一组连续的类型。所以，字符串有两种表示方法，分别是字符数组和字符指针，而这两种表示的初始化却又不尽相同...]]></description><category></category></item><item><title><![CDATA[Java中只有值传递]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/112511053</link><guid>https://blog.youkuaiyun.com/hustang/article/details/112511053</guid><author>hustang</author><pubDate>Tue, 12 Jan 2021 11:00:27 +0800</pubDate><description><![CDATA[Java中只有值传递
文章目录Java中只有值传递参数传递值传递指针传递引用传递Java中的参数传递基本变量类型对象值得一提数组包装类和String
参数传递
在我们日常编写代码的过程中，调用函数可能是最常见的操作了。那么，在调用函数时，参数是怎么样传递的呢？
值传递
相信有很多人都是学C语言入门的，刚开始写代码时，用的最多的就是值传递了。
void plus_one(int a){
    a++;
    printf("a: %d", a);
}

int main(){
    int n = 10]]></description><category></category></item><item><title><![CDATA[Ubuntu中安装Java]]></title><link>https://blog.youkuaiyun.com/hustang/article/details/106042459</link><guid>https://blog.youkuaiyun.com/hustang/article/details/106042459</guid><author>hustang</author><pubDate>Mon, 11 May 2020 10:53:12 +0800</pubDate><description><![CDATA[安装流程下载下载地址下载过程
注意：本文介绍的是安装oracle官方的版本，通过apt-get安装的openjdk可能出现无法查看源码的问题。
下载
下载地址
https://www.oracle.com/java/technologies/javase-downloads.html

下载过程
下载想要的版本的jdk文件即可，如下图所示：


...]]></description><category></category></item></channel></rss>