curl: (60) SSL certificate problem: self signed certificate

在ubuntu18.04中使用curl访问报错如下:

ubuntu@nginx:~$ curl  https://10.10.10.100:9997/playwpt/admin
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

按照网络上的教程进行了设置:
从curl官方网站,下载根证书:cacert.pem ,然后修改php.ini中加入该证书,并重启web服务。
在php.ini中加入

[SSL]
curl.cainfo = "/etc/php/7.2/cacert.pem"
openssl.cafile = "${curl.cainfo}"

我按照上述方法设置后,再次访问时还是出现相同的报错,请问这个如何解决,谢谢!

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
curl交叉编译成动态库,运行是失败报错
使用以下命令交叉编译: ./configure --host=arm-linux CC=/home/keda/work/K2_LEDE-STABLE-17.01/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-gcc CXX=/home/keda/work/K2_LEDE-STABLE-17.01/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-g++ --without-ssl --enable-shared --disable-static --prefix=/home/keda/curl编译/curl_arm_shard 编译成功。但是运行报一下错误: Error relocating ./curl: curl_url: symbol not found Error relocating ./curl: curl_mime_data_cb: symbol not found Error relocating ./curl: curl_mime_name: symbol not found Error relocating ./curl: curl_mime_encoder: symbol not found Error relocating ./curl: curl_mime_init: symbol not found Error relocating ./curl: curl_mime_headers: symbol not found Error relocating ./curl: curl_multi_poll: symbol not found Error relocating ./curl: curl_mime_filedata: symbol not found Error relocating ./curl: curl_mime_free: symbol not found Error relocating ./curl: curl_mime_subparts: symbol not found Error relocating ./curl: curl_url_set: symbol not found Error relocating ./curl: curl_url_cleanup: symbol not found Error relocating ./curl: curl_mime_type: symbol not found Error relocating ./curl: curl_mime_addpart: symbol not found Error relocating ./curl: curl_mime_filename: symbol not found Error relocating ./curl: curl_url_get: symbol not found Error relocating ./curl: curl_mime_data: symbol not found
请大神解决一下这个问题 php curl error:35 error:140770FC
cURL error 35: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) ![图片说明](https://img-ask.csdn.net/upload/201803/05/1520246872_229017.png) 各位大佬帮帮忙
急,我从昨天晚上到弄到现在,都还没有解决,PHP获取微博api ToKey
代码是这样的 ![图片说明](https://img-ask.csdn.net/upload/201709/07/1504778186_736740.jpg) 运行之后是这样的情况? SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 查了一下上面的,应该是说https证书的问题 网上有说设置下面这两个setopt curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 运行代码 ![图片说明](https://img-ask.csdn.net/upload/201709/07/1504778465_74823.jpg) 运行后就是这样子的? ![图片说明](https://img-ask.csdn.net/upload/201709/07/1504778502_426883.jpg) 大神们怎么弄啊 没有C币了,,
求大神指教libcurl问题:使用ssh登录服务器时报错了。
刚接触libcurl,菜鸟一个。我的libcurl的版本是: curl 7.42.1 (x86_64-unknown-linux-gnu) libcurl/7.42.1 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 libssh2/1.4.3 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 然后我用命令:curl -u username sftp://123.123.123.123 回车后输入密码后就出现了以下错误: curl: (51) SSL peer certificate or SSH remote key was not OK。 纠结了两天了,求大神指导!
这条curl命令中的-fsSL是什么意思
![图片说明](https://img-ask.csdn.net/upload/201911/23/1574496137_886753.jpg) 这条命令来自《Docker技术入门与实战(第3版)》第2章在Ubuntu环境中安装Docker,我通过查阅 curl 的帮助手册,知道 -f (--fail) 表示在服务器错误时,阻止一个返回的表示错误原因的 html 页面,而由 curl 命令返回一个错误码 22 来提示错误,但是其中的 "sSL" 是什么意思呢?
python 小白 : 关于 curl 转换成 requests 求助
原厂给的代码 : ``` #!/bin/bash username="example_username" apiKey="example_apiKey" date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"` password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64` curl -i --url "https://open.chinanetcenter.com/api/report/domainflow?datefrom=2017-11-07T00:00:00%2B08:00&dateto=2017-11-07T00:15:00%2B08:00&type=fiveminutes" \ -X "POST" \ -u "$username:$password" \ -H "Date: $date" \ -H "Accept: application/json" \ -d '<?xml version="1.0" encoding="utf-8"?> <domain-list> <domain-name>www.example1.com</domain-name> </domain-list> ' ``` 试着改成 python 一直改不出来 一直出现 ``` <Response [400]> ``` 我改成 python 应该有错吧 . ``` import requests import datetime import hmac import hashlib import base64 username = "example_username" apiKey= 'example_apiKey' now = datetime.datetime.now() nowTime = now.strftime('%a, %d %b %Y %H:%M:%S GMT') nowTime_bytes = bytes(nowTime, encoding='utf-8') value = hmac.new(apiKey, nowTime_bytes, hashlib.sha1).digest() token = base64.b64encode(value).rstrip() headers = {"Accept": "application/json", "Date": nowTime} url = 'https://open.chinanetcenter.com/api/report/domainflow' payload= {'datefrom':'2017-11-07T00:00:00%2B08:00', 'dateto':'2017-11-07T00:15:00%2B08:00', 'type': 'fiveminutes'} xml = '<?xml version="1.0" encoding="utf-8"?> <domain-list> <domain-name>www.example1.com</domain-name> </domain-list> ' r = requests.post(url, headers=headers, auth=(username, token), data=xml,params=payload) print (r) ```
请教一个https可以访问,http报错的问题
用的宝塔面板,具体情况是网站开了证书,做了http转https,不过现在80端口好像不能访问,用火狐访问报的连接被重置,360浏览器一直不停的刷新,也不跳转,然后我用curl -v 得到的反馈是 * About to connect() to www.***.com port 80 (#0) * Trying 221.*.*.141... * Connected to www.***.com (221.*.*.141) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: www.***.com > Accept: */* > < HTTP/1.1 301 Moved Permanently < Server: nginx < Date: Wed, 30 Oct 2019 20:46:41 GMT < Content-Type: text/html < Content-Length: 162 < Connection: keep-alive < Location: https://www.***.com/ < <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> (避免误认为发广告,打个马赛克)------- 下面是网站配置文件 listen 80; listen 443 ssl http2; server_name www.***.com; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/www.***.com; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #HTTP_TO_HTTPS_START if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END ssl_certificate /www/server/panel/vhost/cert/www.***.com/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/www.***.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; ---------------- 请处理过或知道这个故障的大佬,帮忙一下,百度也搜过找不到问题,非常感谢
libcurl 进行HTTPS进行双向认证返回CURLE_SSL_CONNECT_ERROR失败
最近公司项目需要SSL双向认证,我就用libcurl来实现,但是在做Demo的时候请求是没问题的,可是吧代码放到主程序(windows下 Unicode字符集)里面,返回的总是 CURLE_SSL_CONNECT_ERROR不知道是哪里出问题了,下面是源码 int CUrlHttp::Request(std::string strRequestType, std::string strUrl, std::string &strReport, std::string &strRetHeader, std::vector<std::string> vecHeader, std::string strParam/* ="" */, std::string strCookie/* ="" */, std::string strCaPath/* ="" */, int nTimeOut/* =0 */) { strUrl = "https://192.168.5.176:4433/ipass00/http/localhost/welcome"; CURL * curl; curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str()); if ( strRequestType.compare("post")==0 || strRequestType.compare("POST") == 0 ) { curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(strParam.c_str()));//post内容长度 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strParam.c_str()); } else { curl_easy_setopt(curl, CURLOPT_POST, 0);//get请求 } //设置http头 curl_slist * headers = NULL; for ( int i=0; i<vecHeader.size(); i++ ) { if (!vecHeader.at(i).empty()) { headers = curl_slist_append(headers, vecHeader.at(i).c_str()); } } if (headers != NULL) { curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); } curl_easy_setopt(curl,CURLOPT_SSLVERSION,1); //判断是否有证书 if(!strCaPath.empty()) { curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false); } else { curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, true); curl_easy_setopt(curl,CURLOPT_CAINFO,"C:/ssl/cacert.pem"); curl_easy_setopt(curl,CURLOPT_SSLCERT,"C:/ssl/client.pem"); curl_easy_setopt(curl,CURLOPT_SSLCERTPASSWD,"11111111"); curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM"); curl_easy_setopt(curl,CURLOPT_SSLKEY,"C:/ssl/clientkey.pem"); curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,"11111111"); curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"PEM"); } //Web服务器一般会重定向链接,比如访问http:/xxx/x1.do自动转到http:/xxx/x2.do //所以一定要设置CURLOPT_FOLLOWLOCATION为1,否则重定向后的数据不会返回。 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); //可以看到调试信息 curl_easy_setopt(curl,CURLOPT_HEADERFUNCTION,_CURL_::write_data); curl_easy_setopt(curl, CURLOPT_WRITEHEADER, &strRetHeader); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _CURL_::write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strReport); if ( nTimeOut > 0 ) { curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, nTimeOut); curl_easy_setopt(curl, CURLOPT_TIMEOUT, nTimeOut); } if (!strCookie.empty()) { curl_easy_setopt(curl, CURLOPT_COOKIEFILE, strCookie.c_str()); } CURLcode code = curl_easy_perform(curl); if(code != CURLE_OK){ printf("curl_wasy_perform error = %s",curl_easy_strerror(code)); } if ( headers != NULL ) { curl_slist_free_all(headers); } curl_easy_cleanup(curl); //打印出来 // std::string strReportData; // strReportData.append(strReportHeader); // strReportData.append(strReport); // TRACE("request:%s url:%s report:%s", strRequestType.c_str(), strUrl.c_str(), strReportData.c_str()); return code; }
PHP CURL能否发送数据,而不接收呢? 从而不影响发送网站的网站浏览速度
我用PHP做了一个注册登录功能,要在这注册信息填写好后,点击提交就同时给注册邮箱发送一封邮件,然后跳转到首页, 但是由于连接邮件服务器时有时要等挺长时间,所以邮件发送时有时会转很久甚至网页出现超时错误提示, 所以我想把邮件的相关信息用CURL先发到另一个中转网站上,让这个中转网站收到数据后发送邮件, 而原网站发送完数据后就直接跳转到首页,从而不影响这网站的正常浏览速度。
centos ping git.io可以通为什么curl -v git.io不通?
ping git.io可以通为什么curl -v git.io不通? ``` [root@localhost CNdeepdive]# [root@localhost CNdeepdive]# curl -v git.io * About to connect() to git.io port 80 (#0) * Trying 127.0.0.1... * 拒绝连接 * Failed connect to git.io:80; 拒绝连接 * Closing connection 0 curl: (7) Failed connect to git.io:80; 拒绝连接 [root@localhost CNdeepdive]# git.io -bash: git.io: 未找到命令 [root@localhost CNdeepdive]# ping git.io PING git.io (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.012 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.024 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms ^C --- git.io ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.012/0.019/0.024/0.005 ms ```
通过php curl得取淘宝单个价格和特征资料
我现在正在尝试通过php curl来得取淘宝的价格和特征 ![图片说明](https://img-ask.csdn.net/upload/201911/14/1573724891_347523.png) 在通过搜寻资料,我大约理解了他是需要通过他自己本来的Link ![图片说明](https://img-ask.csdn.net/upload/201911/14/1573724905_168872.png) 来去请求资料,所以我有些个referer去读取 以下是我代码的最新进度。 $ch = curl_init(); $html_brand = "https://detailskip.taobao.com/service/getData/1/p1/item/detail/sib.htm?itemId=559773018599&sellerId=156040152&modules=dynStock,qrcode,viewer,price,duty,xmpPromotion,delivery,upp,activity,fqg,zjys,couponActivity,soldQuantity,page,originalPrice,tradeContract&callback=onSibRequestSuccess"; $options = array( CURLOPT_URL => $html_brand, CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 15, CURLOPT_TIMEOUT => 300, CURLOPT_MAXREDIRS => 10, CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11', CURLOPT_REFERER => 'https://item.taobao.com/item.htm?spm=a21wu.241046-us.4691948847.15.41cab6cbjntFdJ&scm=1007.15423.84311.100200300000005&id=559773018599&pvid=fdb60901-5683-498d-889f-3d4ed883c8c7', ); curl_setopt_array($ch, $options); $response = curl_exec($ch); curl_close($ch); print_r($response); 我得到的返回是这个,如果我没有推测错的话,他应该是类似要登录 ![图片说明](https://img-ask.csdn.net/upload/201911/14/1573724920_799147.png) 但是我在找资料的时候看别人代码中都没有指定要求要登录才能截取 想请问我的逻辑里是缺少了什么吗。我是因为缺少什么导致资料得取不了
curl 使用时异常,求帮忙
``` curl: /usr/local/lib/libldap_r-2.4.so.2: no version information available (required by /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4) curl: /usr/local/lib/liblber-2.4.so.2: no version information available (required by /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 ``` 我用网上说的办法只能用一阵子, 有什么能彻底解决的办法吗? ``` $ sudo ln -fs /usr/lib/liblber-2.4.so.2 /usr/local/lib/ $ sudo ln -fs /usr/lib/libldap_r-2.4.so.2 /usr/local/lib/ ```
关于FileZilla服务器搭建问题
1.问题背景,一个arm板连接4g模块向FTP发送文件。 目前连接公网测试服务器能连通,且能上传。自己搭的FileZilla能接上但又断开。是FileZilla哪边没设置正确吗? 用的是curl工具。 ![图片说明](https://img-ask.csdn.net/upload/201912/17/1576553504_20861.png) ``` (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> Connected, sending welcome message... (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> 220-FileZilla Server version 0.9.34 beta (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> 220-written by Tim Kosse (Tim.Kosse@gmx.de) (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> 220 Please visit http://sourceforge.net/projects/filezilla/ (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> USER test (000054) 2019-12-17 11:22:14 - (not logged in) (223.104.148.222)> 331 Password required for test (000054) 2019-12-17 11:22:15 - (not logged in) (223.104.148.222)> PASS **** (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> 230 Logged on (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> PWD (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> 257 "/" is current directory. (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> EPSV (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> 229 Entering Extended Passive Mode (|||13001|) (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> PASV (000054) 2019-12-17 11:22:15 - test (223.104.148.222)> 227 Entering Passive Mode (192,168,13,137,50,201) (000054) 2019-12-17 11:22:36 - test (223.104.148.222)> disconnected. ```
阿里云ecs中javaweb项目无法访问servlet
在阿里云上购买学生版的ecs, 自己装了tomcat7+java8+mysql5.7 然后部署javaweb项目。 这个javaweb项目本地正常运行,发布到ecs上之后可访问jsp文件,但无法访问servlet,一访问就报http404,第一此访问会报http500 Error instantiating servlet class。 我尝试作了一个jsp直接调用java文件,代码如下 ``` <%@ page import="dao.*"%> <%@ page import="dao.impl.StudentDaoImpl"%> ......... .............. <% StudentDao ad =new StudentDaoImpl(); %> <%=ad.queryAllStudent().get(0).getName()%> ``` 提示http500:Unsupported major.minor version 52.0(编译版本高于运行)但我的java与tomcat版本与本机是一样的, 本机 tomcat7.0.86,java 1.8.0.13 ; ecs tomcat7.0.99 java 8u40b25 而且curl的内容与外面浏览器结果都一致 web.xml ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>studentAD</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>findStuByPageServlet</servlet-name> <servlet-class>servlet.FindStuByPageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>findStuByPageServlet</servlet-name> <url-pattern>/findStuByPageServlet</url-pattern> </servlet-mapping> </web-app> ``` ecs的tomcat下webapp文件夹 ![图片说明](https://img-ask.csdn.net/upload/201912/24/1577186909_54909.png) lib文件 ![图片说明](https://img-ask.csdn.net/upload/201912/24/1577186946_738.png)
js代码转换为java~求大神指教,下面这段js怎么用java写出来
``` // 获取access_token,自动带缓存功能 function get_access_token($token = '', $update = false) { empty ( $token ) && $token = get_token (); $info = get_token_appinfo ( $token ); // 微信开放平台一键绑定 if ($token == 'gh_3c884a361561' || $info ['is_bind']) { $access_token = get_authorizer_access_token ( $info ['appid'], $info ['authorizer_refresh_token'], $update ); } else { $access_token = get_access_token_by_apppid ( $info ['appid'], $info ['secret'], $update ); } // 自动判断access_token是否已失效,如失效自动获取新的 if ($update == false) { $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=' . $access_token; $res = wp_file_get_contents ( $url ); $res = json_decode ( $res, true ); if ($res ['errcode'] == '40001') { $access_token = get_access_token ( $token, true ); } } return $access_token; } // 获取当前用户的Token function get_token($token = NULL) { $stoken = session ( 'token' ); $reset = false; if ($token !== NULL && $token != '-1') { session ( 'token', $token ); $reset = true; } elseif (! empty ( $_REQUEST ['token'] ) && $_REQUEST ['token'] != '-1') { session ( 'token', $_REQUEST ['token'] ); $reset = true; } elseif (! empty ( $_REQUEST ['publicid'] )) { $publicid = I ( 'publicid' ); $token = D ( 'Common/Public' )->getInfo ( $publicid, 'token' ); $token && session ( 'token', $token ); $reset = true; } $token = session ( 'token' ); if (! empty ( $token ) && $token != '-1' && $stoken != $token && $GLOBALS ['is_wap']) { session ( 'mid', null ); } //加校验,防止使用无权限的公众号 /*if(!$GLOBALS['is_wap'] && $reset){ if(empty($GLOBALS['myinfo'])) $token = -1; else{ $sql = 'SELECT public_id FROM `'.C('DB_PREFIX').'public_link` as l LEFT JOIN '.C('DB_PREFIX').'public as p on l.mp_id=p.id WHERE l.uid='.$GLOBALS['mid']; $list = M()->query($sql); $flat = false; foreach ($list as $value) { if($value['public_id']==$token){ $flat = true; } } if(!$flat) $token = -1; } }*/ if (empty ( $token ) ) { $token = -1; } return $token; } // 获取公众号的信息 function get_token_appinfo($token = '', $field = '') { empty ( $token ) && $token = get_token (); if ($token != 'gh_3c884a361561') { $info = D ( 'Common/Public' )->getInfoByToken ( $token, $field ); } return $info; } function get_authorizer_access_token($appid, $refresh_token, $update) { if (empty ( $appid )) { return 0; } $key = 'authorizer_access_token_' . $appid; $res = S ( $key ); if ($res !== false && ! $update) return $res; $dao = D ( 'Addons://PublicBind/PublicBind' ); if (empty ( $refresh_token )) { $auth_code = $dao->_get_pre_auth_code (); $info = $dao->getAuthInfo ( $auth_code ); $authorizer_access_token = $info ['authorization_info'] ['authorizer_access_token']; } else { $info = $dao->refreshToken ( $appid, $refresh_token ); $authorizer_access_token = $info ['authorizer_access_token']; } if (! empty ( $authorizer_access_token )) { S ( $key, $authorizer_access_token, $info ['expires_in'] - 200 ); return $authorizer_access_token; } else { addWeixinLog ( $info, 'get_authorizer_access_token_fail_' . $appid ); return 0; } } function get_access_token_by_apppid($appid, $secret, $update = false) { if (empty ( $appid ) || empty ( $secret )) { return 0; } $key = 'access_token_apppid_' . $appid . '_' . $secret; $res = S ( $key ); if ($res !== false && ! $update) return $res; $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&secret=' . $secret . '&appid=' . $appid; $tempArr = json_decode ( get_data ( $url ), true ); if (@array_key_exists ( 'access_token', $tempArr )) { S ( $key, $tempArr ['access_token'], $tempArr ['expires_in'] ); return $tempArr ['access_token']; } else { return 0; } } // 防超时的file_get_contents改造函数 function wp_file_get_contents($url) { return get_data ( $url, 30 ); } // 以GET方式获取数据,替代file_get_contents function get_data($url, $timeout = 5) { $msg = $flat = ''; if (strpos ( $url, 'http://' ) !== false || strpos ( $url, 'https://' ) !== false) { $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE ); // 跳过证书检查 curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE ); // 不检查证书 $res = curl_exec ( $ch ); $flat = curl_errno ( $ch ); if ($flat) { $msg = curl_error ( $ch ); } curl_close ( $ch ); } else { $context = stream_context_create ( array ( 'http' => array ( 'timeout' => 30 ) ) ); // 超时时间,单位为秒 $res = file_get_contents ( $url, 0, $context ); } return $res; } ``` ``` ```
curl不支持https, 已安装ssl扩展
用curl抓取http网页没问题,但抓https就不行,程序没有报错,可是不响应。 ![图片说明](https://img-ask.csdn.net/upload/201511/19/1447933742_822242.png) ![图片说明](https://img-ask.csdn.net/upload/201511/19/1447933658_497626.png)
linux的curl获取微信的access_token时,服务器返回200,但不带任何json信息?
调用: curl -X \ GET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential\&appid=wxAppIDwxAppID\&secret=WeixinSecretWeixinSecretWeixinSecret" \ --anyauth \ -0 \ -v \ -k \ -H "Host: api.weixin.qq.com" \ -H "Accept: text/html, text/plain, text/sgml, text/css, application/xhtml+xml, */*;q=0.01" \ -H "Accept-Encoding: gzip, compress, bzip2" \ -H "Accept-Language: en" \ -H "User-Agent: Lynx/2.8.9dev.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.3.8" \ ------------ curl过程信息: ------------ * Hostname was NOT found in DNS cache * Trying 183.weixin.ipaddress... * Connected to api.weixin.qq.com (183.weixin.ipaddress) port 443 (#0) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, CERT (11): * SSLv3, TLS handshake, Server key exchange (12): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * Server certificate: * subject: C=CN; ST=Guangdong; L=Shenzhen; O=Shenzhen Tencent Computer Systems Company Limited; OU=R&D; CN=mp.weixin.qq.com * start date: 2016-10-31 00:00:00 GMT * expire date: 2018-01-29 23:59:59 GMT * issuer: C=US; O=GeoTrust Inc.; CN=GeoTrust SSL CA - G3 * SSL certificate verify ok. > GET /cgi-bin/token?grant_type=client_credential\&appid=wxAppIDwxAppID\&secret=WeixinSecretWeixinSecretWeixinSecret HTTP/1.0 > Host: api.weixin.qq.com > Accept: text/html, text/plain, text/sgml, text/css, application/xhtml+xml, */*;q=0.01 > Accept-Encoding: gzip, compress, bzip2 > Accept-Language: en > User-Agent: Lynx/2.8.9dev.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.3.8 > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Connection: close < Cache-Control: no-cache, must-revalidate < Content-Type: text/html; charset=gbk < Content-Length: 0 < * Closing connection 0 * SSLv3, TLS alert, Client hello (1): 用IE、Chrome甚至Lynx都可以获得access_token的返回json数据;就是用curl不行。请各位大神指导下。多谢!
我nignx 服务器 curl 地址https 报502错误是什么原因啊
我nignx 服务器 curl 地址https 报502错误是什么原因啊 代码 $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); $error = curl_error($curl); $res = curl_exec($curl); curl_close($curl); if ($error) throw new \Exception('请求发生错误:' . $error); return $res;
Linux-ARM 连接网络摄像头,tcp封装http协议的问题
1.问题背景 有一块裁剪过的ARM板要用网线和网络摄像头直连,厂商只提供了CGI-API,没有其他接口,由于板子资源限制,也没法装http服务和curl。目前考虑用tcp 封装http 进行控制。 尝试过用Wireshark抓过浏览器和摄像头通信的包结构如下 ``` GET /cgi-bin/images_cgi?channel=0&user=admin&pwd=admin HTTP/1.1 Accept: text/html, application/xhtml+xml, image/jxr, */* Accept-Language: zh-CN User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Accept-Encoding: gzip, deflate Host: 192.168.14.18 DNT: 1 Connection: Keep-Alive ``` 问题: 我把cookie删掉了,其余部分直接同过socket调试工具发给摄像头是有应的 ![图片说明](https://img-ask.csdn.net/upload/201912/11/1576047462_916583.png) 然后我tcp客户端也按照相同的格式send,但是始终没有收到摄像头的回应,是哪边的问题? tcp 客户端代码: ``` static protocol_err_t protocol_CameraCommand(PROTOCOL *this) { unsigned short port = 80; // 服务器的端口号 char *server_ip = "192.168.14.18"; // 服务器ip地址 int sockfd = socket(AF_INET, SOCK_STREAM, 0);// 创建TCP套接字 if(sockfd < 0) { protocol_SendString(this,"socket failed\n"); return PROTOCOL_ERR_FAIL; } struct sockaddr_in server_addr; //定义服务器信息结构体 bzero(&server_addr,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); inet_pton(AF_INET, server_ip, &server_addr.sin_addr); int err_log = connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 主动连接服务器 if(err_log != 0) { sprintf(this->sendBuffer, "connect error: %s(errno: %d)\n",strerror(errno),errno); protocol_SendString(this, this->sendBuffer); close(sockfd); return PROTOCOL_ERR_FAIL; } char str1[1024] = ""; sprintf(str1, "%s\r\n","GET /cgi-bin/date_cgi?action=get&user=admin&pwd=admin HTTP/1.0"); //服务端接收数据处理文件地址,并带参数 sprintf(str1, "%s%s\r\n",str1,"Accept: text/html, application/xhtml+xml, image/jxr, */*"); sprintf(str1, "%s%s\r\n",str1,"Accept-Language: zh-CN"); sprintf(str1, "%s%s\r\n",str1,"User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"); sprintf(str1, "%s%s\r\n",str1,"Accept-Encoding: gzip, deflate"); sprintf(str1, "%s%s\r\n",str1,"Host: 192.168.14.18"); //服务器地址 sprintf(str1, "%s%s\r\n",str1,"Connection: Keep-Alive"); //sprintf(str1,"%s%s\r\n",str1,"Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F"); sprintf(str1, "%s\r\n",str1); protocol_SendString(this,"----------------------------- HTTP Data ----------------------------------\n\n"); sprintf(this->sendBuffer,"%s",str1); protocol_SendString(this, this->sendBuffer); sprintf(this->sendBuffer,"--------------------------- Data Len=%d ----------------------------------\n\n",strlen(str1)); protocol_SendString(this, this->sendBuffer); int ret=send(sockfd, str1, strlen(str1), 0); // 向服务器发送信息 if(ret<0) { protocol_SendString(this,"send"); close(sockfd); return PROTOCOL_ERR_FAIL; } protocol_SendString(this, "------------------------ server retrun data -------------------------------\n"); char recv_buf[1024*10240]=""; recv(sockfd, recv_buf, sizeof(recv_buf), 0); sprintf(this->sendBuffer,"%s\n\n",recv_buf); protocol_SendString(this, this->sendBuffer); close(sockfd); return PROTOCOL_ERR_NONE; } ```
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问