linxizi0622的博客

私信 关注
linxizi0622
码龄4年

湖南大学研究生,IT男一枚

  • 80,047
    被访问量
  • 58
    原创文章
  • 83,513
    作者排名
  • 10
    粉丝数量
  • 于 2016-10-15 加入CSDN
获得成就
  • 获得22次点赞
  • 内容获得18次评论
  • 获得17次收藏
荣誉勋章
兴趣领域
  • #人工智能
    #NLP#神经网络#图像处理#机器学习
TA的专栏
  • 深入理解计算机系统
    27篇
  • JAVA开发
    2篇
  • 数据结构
    5篇
  • Android
    3篇
  • nginx
    6篇
  • unix高级环境编程
    4篇
  • memcache
    1篇
  • Python
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

普通用户和root都被PAM拒绝登录的处理方法

最近,ubuntu系统的服务器由于不知名的原因,被pam.d模块给拒绝登录了(包括普通用户和root用户),登录效果如图所示说实话对于pam.d模块是个谜,其实我也没输错密码,并且就算我输错密码,为什么会输错28次,当然现象就是我无法用普通用户的身份登录系统,当然root用户也无法登录如果root用户能够直接登录的话,那么就可以用rootY用户登录系统,并把普通用户解禁了。这里,我把问题归结为忘记ubuntu登录密码这一类,并采用这个线索去寻找问题的解决方案重启服务器,不断的按shift
原创
49阅读
0评论
1点赞
发布博客于 3 月前

ubuntu 16.04 系统环境变量读取的探索

最近在ubuntu系统中做一个关于程序开机自启动的问题由于环境变量在不同的运行模式下读取的流程不一样,导致在服务器开机重启后运行既定程序找不到相应的环境变量错误这里做一篇博客来探讨一下环境变量的读取过程首先,要明确几个概念,登录型shell和非登录型shell,交互型shell(interactive shell) 和非交互型shell(non-interactive shell)登录型shell:简单来说, 就是在终端输入用户名和密码后得到的shell非登录型shell:简单来说,就.
原创
212阅读
0评论
0点赞
发布博客于 9 月前

UEFI模式安装ubuntu16.04系统

最近由于需要安装ubuntu操作系统,但是安装了一台服务器,用以前的方法总是出现系统安装成功但是重启后进不去的现象,经过无数次失败,最终终于成功。虽然网上有大量的教程,但是ubuntu版本的更新,网上没有像我这种情况的安装ubuntu教程,故写下来供大家一起分享 首先在bios里面的启动设置需要设置为UEFI选项启动 u盘启动盘需要采用UltraISO软件进行刻录,这里...
原创
276阅读
0评论
0点赞
发布博客于 10 月前

yolov3单次加载weights文件----实现多张图片检测

在项目中需要对测试集进行测试,而测试集又是由很多图片组成的,在yolo框架中有对单张 图片进行检测的机制,可键入命令:./darknet detector test data/*.data cfg/*.cfg yolo.weights pic_path -dont_show -i 2函数调用流程为:src/darknet.c (main)-> src/detector.c(...
原创
1183阅读
0评论
1点赞
发布博客于 1 年前
采用selenium 抓取网易云音乐上的热门歌曲以及相关信息
发布Blink于 1 年前

一根网线连接两台电脑的方法

最近在ubuntu服务器上搭建cuda+libcudnn+yolo+openpose环境,由于在编译yolo的时候,需要运行cmake-gui,但是服务器已经禁用了网卡,所以需要新加一台笔记本电脑对ubuntu服务器进行远程访问,最终的手段就是用一根网线组建一个局域网,让两台电脑互联。这里要明确一点,如果有一台电脑不设置网关的话,另一台电脑也不需要设置网关,否则就会出现连不上的现象,至于为什么...
原创
854阅读
0评论
0点赞
发布博客于 2 年前

windows下zip安装包安装mysql

在安装mysql数据库中遇倒很多坑,这里写个博客做个笔记首先停止mysql服务,然后将mysql卸载然后键入最后安装mysql首先把这个data文件夹删掉然后执行mysqld--initialize--user=mysql--console如截图所示,这个时候会显示,生成了一个空密码键入mysql -uroot -p在Enter p...
原创
339阅读
0评论
0点赞
发布博客于 2 年前

给服务器开启手机热点的网络配置

在给服务器安装软件的时候需要接外网,有时候由于工作地域限制,没有网线可以使用,这个时候就只能采用手机开启热点服务器采用手机的热点来传输数据当手机通过usb共享热点给服务器的时候,有时候会出现服务器无法连接外网的情况网络配置文件路径在/etc/network/interfaces首先键入cat /etc/network/interfaces然后键入ifconfig 找到第一张网卡...
原创
2084阅读
0评论
1点赞
发布博客于 3 年前

采用cookie模拟登录csdn网站

有些网站需要填写账户和密码,如果直接爬去网页信息,自然是进不去了,这里采用cookiejar工具来实现这个目的import urllib.request, urllib.parse, urllib.errorimport http.cookiejarimport pprettyfrom bs4 import BeautifulSoupif __name__ == '__main_...
原创
181阅读
0评论
0点赞
发布博客于 3 年前

采用selenium 抓取网易云音乐上的热门歌曲以及相关信息

由于网易云音乐网站页面采用了js技术进行了异步加载,所以这里采用了selenium并采用PHantomJS工具抓取动态页面废话不多说,直接上代码。这个代码也是要了小生2天时间啊这是改进版的# -*- coding: utf-8 -*-#@Time :18-10-2 下午7:25#@Author : LiMeng#@Email : 925762221@qq.com#@File : wa...
原创
353阅读
2评论
1点赞
发布博客于 3 年前

python 爬取《延禧攻略》所有的演员参演的电视剧

# -*- coding: utf-8 -*-#@Time :18-9-23 上午11:22#@Author : LiMeng#@Email : 925762221@qq.com#@File : yanxigonglvu.py#Software:PyCharmimport requestsimport pprettyimport collectionsfrom wordcl...
原创
318阅读
2评论
1点赞
发布博客于 3 年前

c实现系统内存对齐

#include #include #define CHUNK_ALIGN_BYTES 8 /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) { int s
原创
209阅读
0评论
0点赞
发布博客于 4 年前

头插法和尾插法插入链表

#include "stdio.h" #include "stdlib.h" typedef struct List {  int data; struct List *next;  //指针域 }List;   void HeadCreatList (List *L)   //头插法建立链表 {  List *s;    L->next=NULL;  
原创
394阅读
0评论
0点赞
发布博客于 4 年前

队列的c代码实现

#include#define maxsize 10struct queue{int data[maxsize];int front;int rear;}; typedef struct queue Queue;void queue_init(Queue *qe){qe->front=-1;qe->rear=-1; }Queue en
原创
801阅读
0评论
1点赞
发布博客于 4 年前

栈的c代码实现

c比较接近操作系统底层,也比较好理解,所以就用c语言实现了首先定义一个头文件,关于栈的定义,比如压栈,弹栈,清空栈邓基本操作#include#include  #define maxsize 10struct stack{int data[maxsize];int top;};typedef struct stack Stack;void
原创
346阅读
0评论
1点赞
发布博客于 4 年前

exit函数和_exit函数之间的区别

#include#include#include#includeint main(){     pid_t result;     result = fork();     if(result     perror("fork");     if(result == 0)     {             printf("T
原创
358阅读
0评论
0点赞
发布博客于 4 年前

判断系统是32位还是64位

直接上代码#include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {int x=2;char *y=&x;//
原创
250阅读
0评论
0点赞
发布博客于 4 年前

进程间通信方法-共享内存

进程之间的通信方式有管道,信号,信号量,共享内存以及套接字等等。共享内存是进程间通信效率最高的一种,只需要复制两次内存空间即可大体意思是,两个需要通信的进程A和B,都有相应的虚拟空间那么将一块内存地址映射到两个进程的虚拟地址空间中A进程通过指针访问共享内存空间,将产生一个缺页中断A进程对内存的任何更改,B进程将会访问到更改后的内容,这样就达到了进程间的通信的目的共享内存通信
原创
260阅读
0评论
0点赞
发布博客于 4 年前

dup2重定向

/* $begin cpstdin */#include "csapp.h"int main(void){ char c;int fd;fd = open("a.txt",O_WRONLY|O_CREAT);dup2(fd,STDOUT_FILENO); while(Read(STDIN_FILENO, &c, 1) != 0)Wri
原创
395阅读
0评论
1点赞
发布博客于 4 年前

指针和数组的区别

#include #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {char a[]="aaaaa";pr
原创
148阅读
0评论
0点赞
发布博客于 4 年前

c语言中的指针数组

指针数组,数组元素是一个指针附上代码#include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {char *conf
原创
165阅读
0评论
1点赞
发布博客于 4 年前

c语言中的指针函数

指针函数,顾名思义,返回值为指针的函数附上代码#include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */int *f(int a,int b){int *p=(int*)malloc(s
原创
141阅读
0评论
0点赞
发布博客于 4 年前

nginx中的函数指针的typedef

nginx源码中大量地定义了结构体,结构体中有一些函数指针变量,而这些变量类型都是由typedef定义的新的类型作用就是相当于一个回调函数的作用吧#includetypedef int (*A)(char,char);int a(char x,char y){printf("%c
",x);printf("%c
",y);}int b(char x,char y
原创
201阅读
0评论
0点赞
发布博客于 4 年前

如何取得结构体成员相对于结构体的偏移量

举个例子,有一个结构体typedef struct {char s;int len;}node;我想知道,变量len相对于结构体的偏移量,怎么办?奉上代码#includetypedef struct {char s;int len;}node;int main(){int i=(int)&(((node*)0)->s);printf("%d"
原创
442阅读
0评论
0点赞
发布博客于 4 年前

c语言中的回调函数

先来一段代码#includevoid show(void(*ptr)()){ (* ptr)();  }void show1(){printf("hello world");}void show2(){printf("ni hao");}int main(){show(show1);printf("
");show(show2);ret
原创
237阅读
0评论
0点赞
发布博客于 4 年前

java中的工厂模式

当我们需要实例化一个类的时候,A a=new A();但是有一点,当需要更改需要实例化的类,我们就必须改变代码,也就是说类的创建和类的实例化之间耦合程度高,导致代码的可移植行不好所以,我们就必须使用工厂模式。工厂模式就是由一个工厂来负责常见我们需要的实例首先定义一个接口,接口就是一种规范,也是一种抽象public interface  Play {void play()
原创
198阅读
0评论
0点赞
发布博客于 4 年前

全局变量和局部静态变量

#includeint c=20;int a=5;void fun(int b){static int a=10;a+=b++;printf("%d
",a);}int main(){fun(c);a+=c++;printf("%d
",a);return 0;}结果是30  25不知道为啥
原创
151阅读
0评论
0点赞
发布博客于 4 年前

浮点数f和浮点数的相反数-f在内存中怎么表示

举个例子,f=3.0那么f的二进制表示为0x40400000那么-f的二进制表示为0xc0400000用下面的代码可以测得#includeunion{char x[4];float f;}a;int main(){//f=3a.x[0]=0x00;a.x[1]=0x00;a.x[2]=0x40;a.x[3]=0xC0;pr
原创
1079阅读
0评论
0点赞
发布博客于 4 年前

安卓开发-抱歉,程序已经停止运行

初学安卓开发,经常容易出现一些哭笑不得的小错误比如我定义一个如下的Intent变量Intent intent = new Intent("android.intent. action.GET_CONTENT");当intent和action之间有一个空格的时候,运行时候,程序崩溃,找了半天找不到原因,最后在发现在不该出现空格的时候出现了空格
原创
9834阅读
0评论
1点赞
发布博客于 4 年前

逆序打印链表

#include#includetypedef struct node {    char *data;     struct node *next; } node_t,*Node;void re_tra_link(node_t *head){if(head){re_tra_link(head->next);//p=p->next;print
原创
175阅读
0评论
0点赞
发布博客于 4 年前

安卓运行的时候报错的问题

今天运行android eclipselogcat报错:FATAL EXCEPTION: main java.lang.NullPointerException at android.app.Activit一直找不到 突破点后来在同学的帮助下,将app卸载了重装,就可以了,至于为什么,我就不知道了
原创
195阅读
0评论
0点赞
发布博客于 4 年前

深信服面试题,变量指向内存区域的问题

今天面试深信服,char p[]="hello",p指向内存的那个区域?数据区,代码区,堆,栈char *q="world" q指向内存的那个区域?数据区,代码区,堆,栈#includeint main(){char p[]="hello";//p指向栈 p[0]='a';char *q="world";//q指向常量区 printf("%s
",p);*
原创
293阅读
0评论
0点赞
发布博客于 4 年前

安卓面试题

当手机从横屏转换为竖屏或者从竖屏转换为横屏的时候经历过那些活动手机从横屏转换为竖屏那么当前横屏的活动要被销毁onpause->onstop->ondestroy然后重新建立一个竖屏的活动oncreate->onstart
原创
136阅读
0评论
0点赞
发布博客于 4 年前

1/0是在编译时报错还是运行时报错

今天深信服面试,问了这个问题#includeint main(){int a=1;printf("%d",a/0);}运行这个c代码,可以发现编译时不报错运行时报错
原创
672阅读
0评论
0点赞
发布博客于 4 年前

链表相关习题

链表是笔试经常需要考到的类型,所以我查阅了相关资料,补充一下弹药库typedef struct node {    char *data;     struct node *next; } node_t;给定一个结构体,结构体包含一个数据以及指向下一个节点的指针。那么首先我们要将这个链表打印出来void list_display(node_t *head)//打印链
原创
300阅读
0评论
0点赞
发布博客于 4 年前

常见的排序算法的比较

当前的排序算法,主要是在时间复杂度和稳定性上面进行比较,一下是常见的7中算法是之间复杂度和稳定性情况对比我们来站在逆序数的角度来分析不同的排序算法之间的时间复杂度问题。如果我们想把一个长度为n的数组元素按升序进行排序,那么如果一个元素a[i]比a[j]大(i而我们的排序算法就是要把一串数的逆序数变为零。再说说这个时间复杂度的问题,常见的时间复杂度O(nlogn)
原创
204阅读
0评论
0点赞
发布博客于 4 年前

深入理解黑客攻击-键盘记录器

老师是这样讲的       在计算机早期,计算机是没有鼠标的,键盘才是标配,可以没有鼠标,但是不能没有键盘所以,当键盘插进电脑上的时候,电脑应该是没有硬件提示的      所以,一般在网吧里面,我们在插键盘的usb插孔里面,插入一个键盘记录器这样,当使用键盘打字的时候,我们的键盘记录器就可以将输入的字符串记录下来并将这些字符串上传至服务器,通过对这些字符串进行分析,就能
原创
2426阅读
0评论
0点赞
发布博客于 5 年前

深入理解黑客攻击-缓冲区溢出攻击

缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动如果有人利用栈中分配的缓冲区写溢出,悄悄地将一段恶意代码的首地址作为返回地址覆盖写到原先的正确的返回地址处。那么程序在执行ret的时候会悄悄地转移到这个恶意代码段处执行从而可以轻易获得系统特权,进而进行各种非法操作造成缓冲区溢出的原因就是系统没有对作为缓冲区的数组进行越界检查给出一段代码#include <stdio....
原创
5392阅读
3评论
5点赞
发布博客于 5 年前

深入理解黑客攻击-改变程序的返回地址

给出c代码void foo(){  inta,*p;  p=(int*)((int)&a+8);  *p+=12;}int main(){  foo();  printf("Print1
");  printf("Print2
");  printf("Print3
");  printf("Print4
");  return0
原创
513阅读
0评论
0点赞
发布博客于 5 年前

深入理解黑客攻击-直接修改可执行文件

先给一段代码#include int main(){int i=1;if(i!=2) {printf("您购买的是盗版!!!
");return;}printf("您购买的是正版!!!
");return 1;}这段代码用户是看不到的但是用户能看大这段代码的可执行文件 a.out运行这个a.out得到如下图所示的结果
原创
1033阅读
0评论
0点赞
发布博客于 5 年前

深入理解黑客攻击-sql注入攻击

在这个登录页面,我们需要知道用户名和密码,但是也有一种途径,不需要知道用户名和密码也可以进入网页,这叫做sql注入攻击对于上面的这个表格,左边是用户名右边是密码这是登录页面的代码StringSqlString=“Select*FromUSER Where用户名=‘”+Username.text()+”’And密码=‘”+Password.Text()+”
原创
1847阅读
0评论
1点赞
发布博客于 5 年前

关于有符号数相加发生溢出的条件码设置问题

深入理解计算机系统中的p124页的这样一个问题       c表达式:t=a+b,有符号溢出的条件码        OF :(a       这个条件码是什么意思       有符号溢出,只有当相加的两个数同为正数或者同为负数的时候才有可能发生溢出      (a0并且b>0   也就是说这两个数同号   右边括号(t0或者t>0并且a  当两个负数相加发生溢出的时
原创
642阅读
0评论
0点赞
发布博客于 5 年前

c语言中的switch语句的个人理解

今天上课讲了switch语句,我个人不是很懂,附上c语言代码#includeint main(){int n=-1;switch(n){case -2:n++;break;case 2:n--;break;case 4:n+=2;break;case 5:n+=2;break;case 6:n+=2;break
原创
575阅读
0评论
0点赞
发布博客于 5 年前

关于调用函数的实参问题

#include int add(int x,int y){return x+y;}int main(){int i=1,j=2;int x=add(i,j);return 0;}相应的汇编代码为main:.LFB1:pushl %ebpmovl %esp, %ebpsubl $24, %espmovl $1, -12(%
原创
398阅读
0评论
0点赞
发布博客于 5 年前

testl指令笔记

今天上了深入理解计算机系统第三章部分,对于书上的testl指令和andl指令比较困惑详读书上的相关部分以后,有了新的见解。    test %eax,%eaxtest指令是把CF置为0了的,也就是说在按位相与的时候,低位向高位没有进位那么    test %eax,%eax就等于%eax本身,但是这个操作只是影响了标识位SF ZF PF AF并且把CF和OF置为0(因为CF
原创
3819阅读
0评论
0点赞
发布博客于 5 年前

用记事本运行一个java程序

一直对eclipse和jdk的关系没搞清楚,不知道为什么安装eclipse以后要安装jdk   学习了深入理解计算机系统以后,稍微明白一点,我们程序员写的高级程序计算机是识别不出来的。那么需要由编译器编译成简单的二进制代码才能由计算机去执行。   在linux系统中,有GCC(GNC's compiler collections),在microsoft的vS中有VS编译器而java
原创
3297阅读
1评论
2点赞
发布博客于 5 年前

浮点数强制转换为整型数据

今天学习了浮点数的表示方法在32位的机器中,第一位表示符号位,第二位到底9位表示为指数位剩下的位表示为小数位。给出代码// 1021.1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includetypedef unsigned char * byte_pointer;void show_bytes
原创
10655阅读
0评论
0点赞
发布博客于 5 年前

关于有符号数到无符号数的强制转换导致的一些问题

有符号数到无符号数的隐式类型强制转换导致了某些非直观性的行为。这些非直观性的行为经常导致程序错误。并且这种错误很难被发现。比如下列代码    // 1020.2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includefloat sun_elements(float a[],unsigned length){
原创
754阅读
0评论
0点赞
发布博客于 5 年前

从一种数据类型到另一种数据类型的转换

当短整型强制转换为无符号的短整型的时候,字节位不变// 1020.1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includetypedef unsigned char *byte_pointer;void show_bytes(byte_pointer start,int len){int i;for(i=0;
原创
822阅读
0评论
0点赞
发布博客于 5 年前

c语言中两个数进行运算的转化问题

c语言同时支持有符号数和无符号数当两个数进行相加的时候如果有一个数是有符号数,另一个数是无符号数,那么c语言隐式地将有符号数转化成无符号数。再进行运算。这种方法对于标准的算数来说没有多大的差异,但是对于像>或者它会导致非直观的结果。这里假设使用的是一台采用补码的32位机器。考虑比较式-1第二个运算数是无符号的,第一个运算数就会被隐式地转化为无符号数。因此表达式就等价于2
原创
304阅读
0评论
0点赞
发布博客于 5 年前

c语言中的右移是逻辑右移还是算术右移的问题

先上代码    // 10191.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeint main(){char x=0xfe;int y=x>>1;printf("%d",y);}x是有符号类型,x=1111 1110那么x>>1=1111 1111由于是有符号类型的数据,所以y
原创
5400阅读
0评论
0点赞
发布博客于 5 年前

整数和字符型的转换

// 1018.1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include int main(){char a[6]={'H','N','U','e','r','\0'};char b[6]={72,78,85,101,114,0};int c[2]={(72printf("%d,%d
", sizeof(c
原创
2115阅读
9评论
1点赞
发布博客于 5 年前

编译和链接的区别

先看这样一篇汇编代码 .section .text        .global _start    _start:           nop     movl $4, %eax       movl $1, %ebx       movl $5, %ecx       movl $13, %edx       movl %eax,%ebx
原创
443阅读
0评论
0点赞
发布博客于 5 年前

关于汇编中有符号数和无符号数的判断

首先给一段代码1 #include 2 int main()3 {unsigned int x=9;4  int y=-20;5  int m=(x+y>9)?1:0;6  int z=x+y;7 printf("%d
",m);8 printf("%d
",z);9 if(y>x) 10 {11 printf("?????
");12
原创
3552阅读
0评论
2点赞
发布博客于 5 年前

关于test指令和add指令的区别,inc指令和add指令的区别

经常看到这样的汇编指令inc %eax;或者add 1,%eax那么他们之间有什么区别呢?请看这样一个汇编代码 .section .text        .global _start    _start:           nopmovb $0xff,%aladd $0x1,%al //255+1就得到256,那么就会溢出,标志位CF就会置为1.
原创
1682阅读
0评论
0点赞
发布博客于 5 年前

除法和算术右移之间的巧妙取代

在大多数机器上,整数 的除法很慢,需要30多个时钟周期,除以2的幂也可以用移位运算来实现    先码上代码    #include "stdio.h"   int main()   {   int x=-128;    int y=x/4;   printf("y=%d",y);   }再附上汇编代码         pushl %ebp.cfi
原创
7176阅读
0评论
0点赞
发布博客于 5 年前

关于在书上学到的判断一个机器是否是大端法机器还是小端法机器的笔记

我自己先写一段代码,这是我在vs中运行过了的    #include    int main()    {   int x=0x12345678;   char *p=(char *)x;  if(*p==78)  printf("little endian"); else   if(*p==12)  printf("big endian");  }
原创
206阅读
1评论
1点赞
发布博客于 5 年前

关于一个数据类型的溢出问题

今天老师讲了一个bug,大部分计算机的漏洞都是一个数据超过了这个数据类型表示的界限。导致出现漏洞。比如:  char a=-128;  那么a的二进制表示为a=0x1000 0000  char b=-a;  我们设想的结果为b=128;  由于字符型变量只有8个字节,那么8个字节的有符号数表示范围为-128~127。  那么-128取相反数,得到的不是128.  根据
原创
532阅读
0评论
0点赞
发布博客于 5 年前

关于汇编指令中的mov的笔记

movl src,dec;    源操作数和目的操作数不能全为内存,否则gcc编译器会报错。
原创
946阅读
0评论
0点赞
发布博客于 5 年前