<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[软件人生]]></title><description><![CDATA[讨论软件设计、研发、技术前沿等话题]]></description><link>https://blog.csdn.net/wave12_mp</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; wave12_mp]]></copyright><item><title><![CDATA[python利用selenium框架下载抖音无水印视频]]></title><link>https://blog.csdn.net/wave12_mp/article/details/143974933</link><guid>https://blog.csdn.net/wave12_mp/article/details/143974933</guid><author>wave12_mp</author><pubDate>Fri, 22 Nov 2024 15:23:22 +0800</pubDate><description><![CDATA[利用python语言下selenium框架，解析出抖音页面的HTML源码，获得无水印的视频地址，并下载到本地。]]></description><category></category></item><item><title><![CDATA[利用C++编写一个全功能的ini文件管理类]]></title><link>https://blog.csdn.net/wave12_mp/article/details/132687938</link><guid>https://blog.csdn.net/wave12_mp/article/details/132687938</guid><author>wave12_mp</author><pubDate>Tue, 05 Sep 2023 11:20:11 +0800</pubDate><description><![CDATA[网络上有很多C++编写的ini文件管理类，但功能全面的很少。在实现文件wsIni.cpp里，实现了头文件里的各个成员函数。其中最核心的就是读取ini文件的函数。3、 支持各种注释，包括独立的多行注释、单行注释和键值行后注释。具体的实现代码就是封装一个ini文件的类。2、 ini文件键值修改功能。1、 ini文件读取功能。]]></description><category></category></item><item><title><![CDATA[怎么使用git来管理代码(最新git版本)]]></title><link>https://blog.csdn.net/wave12_mp/article/details/131536424</link><guid>https://blog.csdn.net/wave12_mp/article/details/131536424</guid><author>wave12_mp</author><pubDate>Tue, 04 Jul 2023 15:40:31 +0800</pubDate><description><![CDATA[【代码】怎么使用git来管理代码。]]></description><category></category></item><item><title><![CDATA[多年心血凝聚成的C++高效内存池，告别内存泄露、内存碎片]]></title><link>https://blog.csdn.net/wave12_mp/article/details/130698069</link><guid>https://blog.csdn.net/wave12_mp/article/details/130698069</guid><author>wave12_mp</author><pubDate>Tue, 16 May 2023 09:19:26 +0800</pubDate><description><![CDATA[内存池有两种方案，一种是大小可变的内存池，一种是大小固定的内存池。大小可变的内存池，各个内存块通过链表连接，空闲的内存块位于链表前段。本文实现的内存池是结合以上两种情况的优点，初始化时分配多段大内存，然后切分成128，256，512等字节大小的小内存块。当需要一个内存时，首先根据内存大小需求到那个值的内存块里去获取，然后遍历该内存块的管理链表，从而获得自己需要的内存。当需要内存时，就从空闲的内存块里查找即可，因为内存块大小固定，因此根据偏移量容易定位内存位置，同时释放整个大内存块也很方便。]]></description><category></category></item><item><title><![CDATA[C++日志类封装（超级干货）]]></title><link>https://blog.csdn.net/wave12_mp/article/details/127155757</link><guid>https://blog.csdn.net/wave12_mp/article/details/127155757</guid><author>wave12_mp</author><pubDate>Mon, 03 Oct 2022 20:26:08 +0800</pubDate><description><![CDATA[写程序通常用要输出日志，以便程序修复BUG和查看程序运行情况。下面是C++语言封装的一个日志类，使用的C语言下的通用文件操作函数，因此可以用于window,linux等平台下开发。]]></description><category></category></item><item><title><![CDATA[利用python(基于pyside2)获取音乐并在线播放]]></title><link>https://blog.csdn.net/wave12_mp/article/details/120649634</link><guid>https://blog.csdn.net/wave12_mp/article/details/120649634</guid><author>wave12_mp</author><pubDate>Fri, 08 Oct 2021 12:46:28 +0800</pubDate><description><![CDATA[pyhon的高效率开发再次亮瞎我的双眼。用半天开发一个小工具，可以爬取酷狗音乐，实现下载和在线播放。



虽然代码量不大，但还是解决了不少疑难问题，主要表现在以下几个方面。

基础知识。
工程使用了QTableView表格控件。获取到网页源码后使用json模块解析json字符串的问题。QMediaPlayer播放控件的状态监视事件，如何监视播放完毕等。QWebEngineView网页的加载状态问题，核实加载完毕等。

首先是获取网页源代码时如何获取js执行过后的代码。
	利用QWebEngineView去]]></description><category></category></item><item><title><![CDATA[spring boot下利用poi将word转化为html]]></title><link>https://blog.csdn.net/wave12_mp/article/details/120431051</link><guid>https://blog.csdn.net/wave12_mp/article/details/120431051</guid><author>wave12_mp</author><pubDate>Thu, 23 Sep 2021 11:08:26 +0800</pubDate><description><![CDATA[https://www.kbase12.com/java/doc/detail?id=a941125298224c319914da420e865396
]]></description><category></category></item><item><title><![CDATA[使用RecyclerView实现瀑布流，仿照小红书，解决顶部留白、卡顿等问题]]></title><link>https://blog.csdn.net/wave12_mp/article/details/120369224</link><guid>https://blog.csdn.net/wave12_mp/article/details/120369224</guid><author>wave12_mp</author><pubDate>Sat, 18 Sep 2021 16:05:44 +0800</pubDate><description><![CDATA[一、最终效果：





二、工程结构框架：





三、核心实现：

（1）、实现RecyclerView控件的适配器类

主要就是实现下面三个函数的重载：




   @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(mCon]]></description><category></category></item><item><title><![CDATA[用python3.9和pyside6开发的客服辅助软件，竟然花了我1个星期，不过收获很大]]></title><link>https://blog.csdn.net/wave12_mp/article/details/120230767</link><guid>https://blog.csdn.net/wave12_mp/article/details/120230767</guid><author>wave12_mp</author><pubDate>Fri, 10 Sep 2021 22:54:49 +0800</pubDate><description><![CDATA[宣传自己的业务或者产品，很多客户问的问题都是一样的，因此回复通常也是千篇一律。因此，用pyside6开发了一个客户辅助工具，看似简单，缺花了不少时间，期间解决了好多技术问题，感觉收获满满。最后的成品如下：



主要解决的技术问题如下：
（1）、窗体不获取焦点问题。不获取焦点，才能再单击要发送条目的时候能发送到其他活动窗体里具有焦点的控件内。

（2）、解决了pyside6里如何封装资源（如图标）的问题，这样发布的时候就不要再携带这些资源文件，因为他们已经被编译到可执行文件里去了。

（3）、解决了pyi.]]></description><category></category></item><item><title><![CDATA[django加载css,js失败的终极解决办法]]></title><link>https://blog.csdn.net/wave12_mp/article/details/119928671</link><guid>https://blog.csdn.net/wave12_mp/article/details/119928671</guid><author>wave12_mp</author><pubDate>Thu, 26 Aug 2021 12:09:07 +0800</pubDate><description><![CDATA[http://www.kbase12.com/pythoncode/doc/detail?id=6cb5d0523daa4d09b12a09c218415248
]]></description><category></category></item><item><title><![CDATA[pyside2如何选择多个文件夹]]></title><link>https://blog.csdn.net/wave12_mp/article/details/119477543</link><guid>https://blog.csdn.net/wave12_mp/article/details/119477543</guid><author>wave12_mp</author><pubDate>Sat, 07 Aug 2021 09:20:53 +0800</pubDate><description><![CDATA[完整代码如下：


from PySide2.QtWidgets import QFileDialog, QDialog, QApplication, QMainWindow


class DlgSelectMp3(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)

def selectMp3s(self):
fileNames = []
fileDialog = QFileDialog(se]]></description><category></category></item><item><title><![CDATA[手把手将基于spring boot的文件上传（含进度、大文件）的功能封装到一个jar包里]]></title><link>https://blog.csdn.net/wave12_mp/article/details/118222263</link><guid>https://blog.csdn.net/wave12_mp/article/details/118222263</guid><author>wave12_mp</author><pubDate>Fri, 25 Jun 2021 16:09:55 +0800</pubDate><description><![CDATA[现文件上传功能
（1）、建立一个spring boot的工程



单击“Next”，进入工程命名对话框。



单击“Next”，进入工程依赖配置对话框。



选中Spring Web。单击“Next”，进入工程目录设置对话框。



根据自己实际情况将工程保存到某个目录下。单击“Finish”。

（2）、配置POM

手动添加下面的依赖。






 org.springframework.boot

 spring-boot-starter-thymeleaf









...]]></description><category></category></item><item><title><![CDATA[python下利用pyside2写了一个网址收藏器，稍微改改可做成自己的浏览器了]]></title><link>https://blog.csdn.net/wave12_mp/article/details/118149299</link><guid>https://blog.csdn.net/wave12_mp/article/details/118149299</guid><author>wave12_mp</author><pubDate>Wed, 23 Jun 2021 11:51:57 +0800</pubDate><description><![CDATA[主要解决了以下问题：

1、QWebEngineView如何创建新窗口

2、python下读写json数据，包括修改其中某个节点

3、QTabWidget控件的样式优化

4、状态栏、工具栏的引入，看起来像一个完整的软件主窗体界面

完整的效果：



初学python界面程序开发的朋友可以借鉴，程序改成pyside6和pyqt只需要改import模块即可。需要完整代码者可以联系我QQ: 395702361
...]]></description><category></category></item><item><title><![CDATA[python写桌面软件如何实现自动升级]]></title><link>https://blog.csdn.net/wave12_mp/article/details/118015922</link><guid>https://blog.csdn.net/wave12_mp/article/details/118015922</guid><author>wave12_mp</author><pubDate>Fri, 18 Jun 2021 09:34:31 +0800</pubDate><description><![CDATA[很多软件都具有自动检测新版本的功能，如果发现到新版本，则可以启动自动升级操作。所谓自动升级就是将新版本的安装包下载下来，然后启动安装。新安装的版本会自动覆盖老版本。因此，这里需要解决的几个技术点就是：

(1)、如果检测产品有新版本。

    (2)、下载新版本到贝蒂。

(3)、启动新版本的安装。

本DEMO程序就是按照上面3个技术点实现了程序启动时的自动升级。其中，新版本的软件包下载，使用的是requests模块，核心代码如下：




def startDownload(mw):
   ...]]></description><category></category></item><item><title><![CDATA[python下利用百度图像识别接口识别超过十万种物品和场景]]></title><link>https://blog.csdn.net/wave12_mp/article/details/117387964</link><guid>https://blog.csdn.net/wave12_mp/article/details/117387964</guid><author>wave12_mp</author><pubDate>Sat, 29 May 2021 17:00:52 +0800</pubDate><description><![CDATA[python下利用百度图像识别接口识别超过十万种物品和场景



百度图像识别功能十分强大，可以根据一幅图就能识别图片上是什么物品或场景，目前可以识别的物品和场景超过十万种。

在python下利用cv2很容易将摄影头的画面保存为图片，然后调用百度的图像识别接口，就可以知道摄影头现在拍摄的是什么物品。百度图片识别接口会根据优先级，默认返回5种可能的识别接口，当然排在最前面的是最接近真实情况的。

下面是python下开发物品识别接口的运行界面：



核心的代码包括如何将摄影头的画面保存为一幅图片：

d.]]></description><category></category></item><item><title><![CDATA[python（基于pyside2)下利用QWebEngineView内嵌网页实现的的自动登陆小程序，]]></title><link>https://blog.csdn.net/wave12_mp/article/details/115639848</link><guid>https://blog.csdn.net/wave12_mp/article/details/115639848</guid><author>wave12_mp</author><pubDate>Mon, 12 Apr 2021 20:52:33 +0800</pubDate><description><![CDATA[今天写了一个python（基于pyside2)的自动登陆小程序，利用QWebEngineView内嵌网页实现的。主要解决了下面一些技术问题：

1、QWebEngineView内嵌网页。

利用QWebEnginePage对象的runJavaScript就可实现。


        # 初始化一个page
        self.webview = QWebEngineView(self)
        self.page = QWebEnginePage()
        self.webview]]></description><category></category></item><item><title><![CDATA[最近开发了一个向QQ好友自动发送消息的程序]]></title><link>https://blog.csdn.net/wave12_mp/article/details/113863616</link><guid>https://blog.csdn.net/wave12_mp/article/details/113863616</guid><author>wave12_mp</author><pubDate>Fri, 19 Feb 2021 14:39:02 +0800</pubDate><description><![CDATA[最近开发了一个向QQ好友自动发送消息的程序，功能如下：

1、可以管理要发送的消息。

2、可以管理要发送的用户，按组进行分类。

3、自动发送消息，灵活的时间间隔设置。

4、发送消息支持文字、图片。

5、软件源码是利用鼠标和键盘模拟实现、不改变发送消息的目标软件。

6、源码语言是c++，开发工具是VS2019。

软件界面如下：



无论是发送图片还是发送文字，都是借助剪贴板，核心代码如下：

void CAutoSecretaryDlg::handlePastAction(CAction* pA]]></description><category></category></item><item><title><![CDATA[利用fitz将pdf文件的每一页输出为高精度的PNG图片]]></title><link>https://blog.csdn.net/wave12_mp/article/details/111227067</link><guid>https://blog.csdn.net/wave12_mp/article/details/111227067</guid><author>wave12_mp</author><pubDate>Tue, 15 Dec 2020 17:40:27 +0800</pubDate><description><![CDATA[http://kbase.wave12.com/pythoncode/doc/detail?id=6d1257a69a7d458bb60381e58da72941


]]></description><category></category></item><item><title><![CDATA[发现一个JAVA初学者在线学习的好课程，太棒了。]]></title><link>https://blog.csdn.net/wave12_mp/article/details/106405313</link><guid>https://blog.csdn.net/wave12_mp/article/details/106405313</guid><author>wave12_mp</author><pubDate>Thu, 28 May 2020 15:03:42 +0800</pubDate><description><![CDATA[https://study.163.com/course/introduction/1210079155.htm

如果你也是JAVA初学者，可以加我QQ:395702361, 大家一起学习、讨论。
]]></description><category></category></item><item><title><![CDATA[android手机推送RTMP直播流到nginx服务器纯代码实现]]></title><link>https://blog.csdn.net/wave12_mp/article/details/105302469</link><guid>https://blog.csdn.net/wave12_mp/article/details/105302469</guid><author>wave12_mp</author><pubDate>Fri, 03 Apr 2020 22:30:17 +0800</pubDate><description><![CDATA[Yasea是一个100%纯Java写的，完全开源的安卓直播推流客户端。它使用MediaCodec系统接口对H.264和AAC进行硬编码，封装FLV格式，推送至RTMP服务器。延迟达到毫秒级别。

特性列表：


	Android Min API 16 (Android 4.1 Jelly Bean)
	
	
	H.264/AAC硬编码
	
	
	RTMP推流，事件状态回调
	
	
	手机横竖屏动态...]]></description><category></category></item></channel></rss>