自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux内存管理(TLB和HugePage)

在前文Linux进程内存管理之虚拟内存中,我们学习了虚拟内存的概念,也了解了程序刚malloc成功时,操作系统并不会立即为其分配真实物理内存,而是在访问时才延迟分配。本文中,我们就将来学习下操作系统是如何为程序分配物理内存的。进程访问虚拟内存地址,操作系统转换找到正确的物理内存地址。两者要对应起来就必然会有一个类似map的地址对照表。而内存的最小分配单位是页(Page),故操作系统在内存中维护了一个PageTable,里面就维护了虚拟内存页和物理内存页之间的对照关系。CPU中有一个硬件组件”内存管理单元

2021-04-14 19:55:52 1170

原创 Linux进程内存管理之虚拟内存

引言文章开始之前,我们先来思考以下两个问题:问题1.:服务器物理内存只有1个G,我的程序malloc申请超过1个G的内存能否成功,进程能否正常运行?问题2:物理内存的分配和释放是随机的,那么即使总的空余物理内存充足,连续空余的内存块不一定够大,那么程序malloc出来的连续内存是否受限?不着急给出结论,先用示例代码跑一下,如下图所示,首先用free –m查看系统剩余内存。剩余的内存是121M。编写简单代码,malloc 申请1GB的内存,成功则输出内存首地址,失败则输出内存不足。如下

2021-03-29 20:28:19 807

原创 Linux下程序运行中替换动态链接库引起崩溃详解

笔者在工作过程中,遇到过好多次未停止进程的情况下,直接替换了动态库,导致程序崩溃产生coredump的场景。一直也没有深究过其原因,最近准备总结一下,搜索了很多资料,总结一下。具体场景是:在Linux服务器上。可执行程序A,dlopen方式打开了动态链接库B.so,调用了B库中的函数进行业务处理。未关闭程序A的情况下,用xftp替换了一个新版本的B.so到服务器上。结果A业务上再次调用到B中的函数时,触发了coredump。为了简化问题,这边用一个demo程序来进行问题的说明。下面是可执行程序dlo

2021-03-14 21:03:30 2424 1

原创 读取gb2312编码的xml失败问题分析

C#开发程序时,遇上了一个字符编码的大坑,记录一下,解决思路和解决方案供大家参考。程序功能说明:简化而言,程序需要从读取一个xml配置文件,在里面增添部分内容后,再次保存成一个新的xml配置文件。新配置文件最终要放在Linux服务器中,用libxml2库进行解析。遇到的问题:用libxml2库解析时,报错encoding error:input conversion failed due to input error.最终导致XML parse error.如下图所示。分析过程:

2021-03-03 20:29:16 2073 2

原创 python实战-网站扫码登录流程全解析

在前文中,我们讲解了企业内网中常用的CAS登陆流程,并给出了用python实现的案例。然而,在互联网环境下,相对更方便、快捷、灵活的扫码登录方式才是主流。本文中,我们就详细来讲解一下扫码登陆的流程,并给出一个实际的案例来加深理解。在前文中,我们讲解了企业内网中常用的CAS登陆流程,并给出了用python实现的案例。然而,在互联网环境下,相对更方便、快捷、灵活的扫码登录方式才是主流。本文中,我们就详细来讲解一下扫码登陆的流程,并给出一个实际的案例来加深理解。原理分析扫码登陆的实现上,各家的细节不尽相同

2021-02-28 18:45:11 3128 1

原创 python实战-实现内网CAS统一认证登录

CAS(Central Authentication Service)集中式认证服务是一种广泛应用的单点登录协议,特别是在校园网和企业内网,它允许用户只需向认证服务器提供一次凭证,即可以访问多个应用系统。这样用户就无需在登陆应用系统时进行重复认证,而且这些应用系统也无法获得密码等敏感信息。在前文中,我们学习了用Scrapy框架爬取数据,其中一种场景就是登录后爬取数据。那篇文章仅对登录做了一个简单说明,本文我们就通过一个实例一步步教你怎么用python实现CAS认证登录。登录完成后,爬取数据也就水到渠成了

2021-02-28 11:08:25 5960 5

原创 Scrapy入门-爬取需要登录后才能访问的数据

本篇是Scrapy入门系列第四篇,建议读者依顺序循序渐进阅读,有任何疑问可以在评论区留言。另外,您的支持是我坚持更新的最大动力,右上角点关注给个鼓励吧。前面几篇文章抓取的均是公开的数据,即没有控制访问权限即可浏览的数据。但还是存在一些网站(比如教学管理系统、内部论坛等),它会首先要求你登录,然后才能访问到后续的内容。这种情况下,就要首先解决登录授信的问题。在开始编码实现前,我们先了解下登录授信的原理。CookieCookie,引用百度百科的定义“是某些网站为了辨别用户身份,进行Session跟踪

2021-02-28 10:46:40 2679 2

原创 Scrapy入门-模拟网络发包翻页爬取数据

在前文 Scrapy入门-翻页爬取及抓取链接页内容 中,我们了解了如何利用Scrapy框架进行翻页数据的爬取。当时,我们是用XPATH去识别“下一页”这个关键元素,访问其href属性中注明的下一页的链接地址,如此循环,最终得到了每一页的数据。然而,这种方案存在一个限制,即网页的“下一页”这个元素的属性中,必须给出下一页的链接。如下图的网页中,下一页的href属性就不是一个真实的链接地址,它表示点击下一页时,程序时通过执行一段JS代码来获取下一页的数据。本文就将通过一个实例手把手教大家如何翻页抓取这类网页

2021-02-27 11:57:33 505

原创 Scrapy入门-翻页爬取及抓取链接页内容

爬取目标在前文《scrapy入门-环境安装及demo运行》中,我们了解了如何利用Scrapy框架进行单一网页的数据抓取。然而,很多场景下,想要抓取的数据比较多,会分好几页展示。一种常见的形式是,网站有一个索引页,索引页中包含许多列表项,同时有分页系统。点击索引页中的列表项,跳转到列表项对应的详情页中。本文中,我们将以自如租房网页的抓取为例,介绍如何实现翻页爬取1-50页的租房列表爬取和每个房源链接详情页内容数据的爬取。CrawlSpiderScrapy提供了一个CrawlSpider

2021-02-27 11:40:37 2846 4

原创 Scrapy入门-环境安装及demo运行

运行环境:win10、python3.6.5、VSCodePython环境的安装本文不再赘述Scrapy安装下面通过pip命令安装scrapy环境。在VScode上新建一个终端,终端上键入命令“pip install scrapy”,pip会自动收集依赖的库信息,并依次安装笔者在运行过程中遇到了两个问题,一个是编码问题,可以通过chcp命令改变终端的编码来临时解决。一个是缺少openssl的头文件,可以通过执行“pip install pyopenssl”来解决,安装openssl后,重新执

2021-02-27 10:51:48 323

转载 C++ 虚析构函数的用法

C++中虚析构函数的作用我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:[cpp] view plaincopy#include   using namespace std;  class ClxBase  {  publi

2015-03-06 13:59:41 810

原创 跨平台的多线程互斥访问控制(Mutex和Critical_Section)

1.首先解决跨平台

2014-10-29 13:48:01 1538

转载 Linux网络通信中的poll函数应用

poll函数poll函数  poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。  1.#include   2.  3.int poll(struct pollfd *fdarray, unsigned long nfds, int tim

2014-10-28 14:52:59 660

转载 结构体对齐的原则及原因分析

为什么要对齐?    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。    对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些

2014-09-23 09:07:53 1366

转载 可变参数宏__VA_ARGS__解析

__VA_ARGS__ 是一个可变参数的宏(gcc支持)。实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。加##用来支持0个可变参数的情况。 测试代码: #include #define PRINT_DBG(debug, ...)\ {\     if(debug

2014-09-01 10:35:28 942

原创 警惕逻辑表达式中的无符号类型运算(C语言类型转换)

l#include#includeint main(){char tmp[]="12345";unsigned int b;b=5;printf("%d",b-10return 1;}

2014-08-26 16:22:56 997

转载 使用typedef定义函数指针

1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plaincopychar (*pFun)(int);   char glFun(int a){ return;}   void main()   {       pFun = glFun;       (*pFun)(2);

2014-08-24 10:13:56 576

转载 ASSERT(断言)的用法解析

我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。  在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由

2014-08-22 10:39:47 794

转载 Netstat命令详解

Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错 情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。N

2014-08-21 19:48:25 476

转载 Oracle中的左连接与右连接

一、内连接内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、、、!>、!和。3、自然连接:在连接条件中使用等于(

2014-08-04 10:14:37 613

转载 RHEL 6.4中安装G++编译器及GCC与G++区别

1.在虚拟机设置的CD-ROM中选择“使用ISO镜像wenj”

2014-08-04 09:20:55 745

转载 转载:跟我一起写Makefile

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m

2014-07-27 16:37:26 410

原创 windows平台下使用open,read等函数易错点及与fread等区别

一般情况下,我们只在linux平台下使用open,read等文件I/O函数

2014-04-15 23:22:10 13127 1

转载 Data De-duplication 技术简介

EMC中国研究院 杨子夜本文对重复数据删除(data de-duplication )技术作简要的介绍。由于笔者非此方面的专家,故有些方面的阐述难免以偏概全,望各位读者海涵。此外,文中所述仅表明个人观点,而不代表公司观点。正文什么是data De-duplication?维基百科上这么解释重复数据删除(简称DEDUPE)[1]:一种可粗粒度去除冗余数据的特殊数据压缩

2014-04-14 21:07:13 1332

原创 可ping通主机而不能连上主机端口的一般原因

在64位Linux虚拟机中启动了中间件,配置文件也设置好了协议,IP地址,端口。但是在主机上客户端却怎么也连接不上中间件。但是虚拟机与主机网络畅通,一时素手无策啊。只好转向老同事请教问题,听完我的描述,说:能ping通主机但是通不了端口,一般为防火墙问题!一语惊醒梦中人,还是经验不足啊! 经过验证,果然如此,立贴留念顺便普及下linux下临时关闭防火墙的办法。在root用户下,

2014-03-27 17:25:54 3168

原创 inline内联函数的使用及原因

使用函数的好处想必大家都了解,但是调用函数会增加许多开销,有栈和寄存器的操作。对于那些函数体比较简洁、被调用又特别频繁的函数来说。这些开销对性能的影响还是比较大的。因此,就产生了内联函数来解决这个问题。 内联函数可以将函数体在调用点内联的展开(此处可联想#define的使用) 在函数返回值类型前加“inline”关键字就可以将一个函数指定为内联函数,如 inline int s

2014-03-19 13:51:11 614

原创 linux下两次fclose运行时出错及解决方法

今天敲代码不小心两次fclose了同一个文件指针。结果运行时爆了一堆错误*** glibc detected *** logconvert: double free or corruption (out): 0x000000001685d750 ***======= Backtrace: =========/lib64/libc.so.6[0x30c66722ef]/lib64/l

2014-03-18 15:46:43 5693 1

翻译 tnsnames.ora 是什么

Tnsnames.oraTNSNAMES.ORA is a SQL*Net configuration file that defines databases addresses for establishing connections to them. This file normally resides in the ORACLE HOME\NETWORK\

2014-03-05 14:35:11 3993

原创 win7-64位使用PLSQL连接虚拟机中ORACLE失败无错误码提示

今天在VMware虚拟机中装了Orace 10g ,然后在主机上装了OraClient10g,一切顺利。 再装了个PLSQL工具,首先需要在oracle客户端安装目录下(I:\oracle\product\10.2.0\client_1\NETWORK\ADMIN)新建一个tnsnames.ora文件,这是连接远程oracle数据库的一个配置文件,在I:\oracle\product\

2014-03-04 19:02:10 805

原创 两台linux主机间互传文件的解决办法

1.针对虚拟机中装Linux的情况。 主机上装一个类似XManager的工具,里面的Xftp可以在主机和虚拟机之间传输文件。利用主机作为中转站,可以实现linux主机中文件传输。  2.要求在linux中实现 利用scp命令,它可以实现两台linux主机间文件安全互传。   >从远程主机中复制到本机文件 scp  目标linux主机用户名@目标IP:/hom

2014-03-04 16:44:44 1544

转载 设置Outlook2007开机自启动--不错过重要邮件

第一步:让Outlook2007最小化时在系统托盘  打开Outlook2007,在系统托盘的Outlook图标上右键,选中“最小化时隐藏”。第二步:让Outlook2007开机启动  找到Outlook2007的快捷图标,复制。点击“开始/所有程序/启动”,在启动上右键,选择“打开”,粘贴。第三步:让Outlook2007开机启动时最小化  在所有程序菜单找到刚添加的“Out

2014-03-04 14:06:56 615

京东扫码登陆python脚本.rar

支持京东扫码登陆的python脚本,实现过程可见 https://blog.csdn.net/zhutou_xu/article/details/114234698

2021-02-28

cas_service.rar

使用了企业内网或校园网cas认证登陆的python脚本,可以作为基础模板,结合实际网站做相应变更,实现过程可见https://blog.csdn.net/zhutou_xu/article/details/114212377

2021-02-28

sourceInsight4096破解包

sourceinsight4.096版本的破解包,包含一个exe及一个证书

2018-06-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除