当网页采用js动态获取数据时,HttpClient应如何获取数据?

总的问题是这样的:因为我需要在两个城市来回跑,但是机票价格不断变化,就想通过.NET的HttpClient对携程网的网页进行访问,定时为每几小时一次,然后在后台进行一下分析,当某个机票价格贴近预期的最低价的时候通知我。

我用的VB.NET,但是C#应该更广泛,如果哪位大神可以帮忙回答用C#就可以。

代码如下,我先写了一个类

Imports System.IO
Imports System.Net.Http
Public Class MySpider
    Dim callback As CallBackSub
    Public Sub CallBackTo(ByVal callclass As CallBackSub)
        callback = callclass
    End Sub
    Public Shared Async Sub GetPage(ByVal url As String, ByVal callclass As CallBackSub)
        Dim MyHttpClient As New HttpClient()
        Dim str As String = Await GetStringFromUrl(url)
        Dim callback0 As CallBackSub = callclass
        callback0.Invoke(str)
    End Sub
    Private Shared Async Function GetStringFromUrl(ByVal Url As String) As Task(Of String)
        Using client As HttpClient = New HttpClient()

            Try
                Dim response As HttpResponseMessage = Await client.GetAsync(Url)
                response.EnsureSuccessStatusCode()
                Dim responseBody As String = Await response.Content.ReadAsStringAsync()

                Return responseBody
            Catch e As HttpRequestException
                Console.WriteLine(vbLf & "Exception Caught!")
                Console.WriteLine("Message :{0} ", e.Message)
                Return Nothing
            End Try
        End Using
    End Function
End Class

这个类中的GetStringFromUrl是微软给的例程,然后我用了一个委托来把获取的字符串传递给Form窗体。(我的.NET仅仅勉强入门,正准备task和线程这些,就姑且用委托了,如果有正确的处理方法还麻烦告诉一下)
窗体代码就不贴出来了,就是一个textbox用来接收委托传过去的数据,然后一个button控制getpage

然后问题就在于,我发现我取出response中的数据后,根本找不到机票价格
图片说明

然后我在浏览器中把网页保存了之后,发现里面有很多js和css文件,我就想是不是有些数据是通过js动态获取的。

最后我试了Windows窗体控件WebBroswer,在赋值了URL之后,仅仅这一句代码就得到了我想要的机票价格数据

TextBox1.Text = WebBrowser1.Document.All(1).InnerText

图片说明

虽然问题可以说暂时解决,但是我还是觉得,HttpClient作为微软推荐使用的一个类,应该不会处理不了这种动态获取数据的情况,就想请教下各位使用.NET得前辈,是否可以用HttpClient类处理这个问题呢?

如果能给出代码我会感激不尽,如果给一个资料的链接也一样很感谢!

2个回答

用Chrome/IE的F12去抓包,这些动态加载的东西应该是ajax方式得到的,抓包可以获取,然后用HttpWebRequest类照着模拟提交。

图片说明

Steven_Lenny
Steven_Lenny 真的多谢!我按照您说的用httpwebrequest解决了问题,但还是有两个疑问想向您请教。第一是,我在浏览器上发现一个标头是accept-encoding,还有一个是accept-language,但我发现在把这两个标头写进去的时候,accept-language直接这样写进去就可以,但是accept-encoding必须写成acceptencoding,也就是把中间符号去掉才可以,否则返回的就是几个无法读取的符号。第二是,我之前想用HttpClient类来做这个(因为我在官网查HttpWebRequest的定义的时候微软推荐用HttpClient),但是一直做不出来,请问是因为我哪里没有做对,还是HttpClient这个类就不适合于post请求呢?问的问题可能有点“愚蠢”,还请包涵!
大约一年之前 回复
Steven_Lenny
Steven_Lenny 回复caozhy: 好的,多谢~我去试试
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复Steven_Lenny: 第一,让你用httpwebrequest而不是webclient,因为它才能精确模拟出post,user-agent,cookie,referer等,这个我前面说了,第二,你可以用fiddler对你的程序的提交也抓包,两相比较
大约一年之前 回复
Steven_Lenny
Steven_Lenny 万分感谢!我按照你说的做了,但是我还是没成功得到信息,我是把payload的内容放进了postasync的httpcontent中,然后浏览器上的requestheader放进了httpclient类的默认requestheaders中,具体的我加了一个评论。能麻烦您看一下我是哪里做的不对吗(https我已经查到解决方法了应该不是因为https的问题)
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复Steven_Lenny: 看我追加的回答的操作演示
大约一年之前 回复
Steven_Lenny
Steven_Lenny 回复caozhy:嗯嗯,多谢啦,请问可不可以告诉我应该通过什么标志来找动态数据获取是用的哪个URL和对应标头这些呢。这方面是初学的小白,麻烦您了
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复Steven_Lenny: 抓包和你的程序没关系啊,只是让你对照着浏览器的提交,去模仿在程序里实现。
大约一年之前 回复
Steven_Lenny
Steven_Lenny 请问F12抓包是指我在浏览器上按F12先把数据找出来吗,还是我可以通过代码启动浏览器抓包呢
大约一年之前 回复

我postasync函数中的httpcontent里面的内容写的:

paramList.Add(New KeyValuePair(Of String, String)("airportParams", "[{dcity: ""sha"", acity: ""ckg"", dcityname: ""上海"", acityname: ""重庆"", date: ""2019-02-12""]}"))         paramList.Add(New KeyValuePair(Of String, String)("army", "False"))         paramList.Add(New KeyValuePair(Of String, String)("classType", "ALL"))         paramList.Add(New KeyValuePair(Of String, String)("flightWay", "Oneway"))         paramList.Add(New KeyValuePair(Of String, String)("hasBaby", "False"))         paramList.Add(New KeyValuePair(Of String, String)("hasChild", "False"))         paramList.Add(New KeyValuePair(Of String, String)("params", "[{dcity: ""SHA"", acity: ""NKG"", dcityname: ""上海"", acityname: ""南京"", date: ""2019-02-12"", dcityid: 2,dcityname: ""上海""]}"))         paramList.Add(New KeyValuePair(Of String, String)("searchIndex", "1"))

,request的header写的

client.DefaultRequestHeaders.Add("Accept", "*/*")             client.DefaultRequestHeaders.Add("AcceptEncoding", "gzip, deflate, br")             client.DefaultRequestHeaders.Add("AcceptLanguage", "zh-CN,zh;q=0.9")             client.DefaultRequestHeaders.Add("ContentLength", "340")             client.DefaultRequestHeaders.Add("ContentType", "application/json")             client.DefaultRequestHeaders.Add("UserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36")             client.DefaultRequestHeaders.Add("Authority", "flights.ctrip.com")             client.DefaultRequestHeaders.Add("Method", "POST")             client.DefaultRequestHeaders.Add("Path", "/itinerary/api/12808/products")             client.DefaultRequestHeaders.Add("Scheme", "https")             client.DefaultRequestHeaders.Add("Origin", "https://flights.ctrip.com")             client.DefaultRequestHeaders.Add("Referer", "https://flights.ctrip.com/itinerary/oneway/sha-ckg?date=2019-02-12“)

然后运行之后得到的信息是{"status":0,"data":{"error":{"code":"1004","msg":"查询异常,请稍后再试"},"loginState":0}},请问是我哪里出错了呢?
我的content里的信息是按照payload来的,request的header是按照网页上的requestheader来的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用java加载动态网页
最近遇到一个难题,使用httpclient获取数据的时候,获取不到动态加载的数据,尝试过htmlunit,也试过jrex,但是感觉效果都不是很好。 百度了一下,别人说phantomjs也不错,但是,没怎么学过js,不是很懂如何使用phantomjs获取整个网页数据。 求各位大神给一下使用java加载动态网页的方式。(除了htmlunit和jrex)或者说说如何使用phantomjs获取整个网页数据。 小弟在此不胜感激
httpclient怎么抓取最终跳转的网站数据?
公司要做个内部系统,抓取某个网站的数据,而那个网站是抓取淘宝的数据。 其中有个页面很复杂,搜索关键词后,跳转到当前页面,当前页面有个javascript 跳转淘宝请求数据。 (当我在他们网站搜索时,他们 是抓取淘宝数据的缓存到自己的网站,然后展现出来。 当我直接在地址栏拼接他们获取数据的地址时,发生了跳转,跳到淘宝去了。) **重点那个js的那个地址是他们网站的地址,然后再跳转到淘宝请求数据的** **我的httpclient怎么抓到跳转的最终页面,也就是那个全是json数据的页面?** ![地址栏拼接参数跳转的最终页面](https://img-ask.csdn.net/upload/201503/24/1427197301_154936.png) 我自己的httpclient 抓取的静态方法如下: ``` public String reqget(String url,String params){ String paramsencode=null; HttpClient client=new DefaultHttpClient(); //获得服务器保存的coockie String cookieStr = ""; List<Cookie> list = cs.getCookies(); for (Cookie cookie : list) { cookieStr += cookie.getName() + "=" + cookie.getValue() + ";"; } if(params!=""&&params!=null){ //paramsencode = URLEncoder.encode(params, "GBK"); url=url+"?"+params; } //封装Get请求 HttpGet get=new HttpGet(url); get.setHeader("Cookie", cookieStr); HttpResponse response; try { //提交get请求 response=client.execute(get); //通过响应的状态编码 判断请求是否成功提交 if(response.getStatusLine().getStatusCode()==200) { //获得服务器端的响应结果 HttpEntity respEntity= response.getEntity(); String respStr=EntityUtils.toString(respEntity,"GBK"); return respStr; } //prgDlg.dismiss(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } ```
httpclient如何获取dwr的数据?
如题,最好有个简单的范例,谢谢~~
Java_爬虫,如何抓取Js动态生成数据的页面?
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p> </p> <p> </p> <p> </p> <p>很多网站是用js或Jquery 生成数据的,到后台获取到数据以后,用 document.write()或者("#id").html="" 的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。<br><br>HttpClient是不行的,看网上说HtmlUnit,说  可以获取后台js加载完后的完整页面,但是我按照文章上说的 写了 ,都不好使。</p> <pre name="code" class="java">String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do"; try { WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10); //设置webClient的相关参数 webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); //webClient.getOptions().setTimeout(50000); webClient.getOptions().setThrowExceptionOnScriptError(false); //模拟浏览器打开一个目标网址 HtmlPage rootPage = webClient.getPage(url); System.out.println("为了获取js执行的数据 线程开始沉睡等待"); Thread.sleep(3000);//主要是这个线程的等待 因为js加载也是需要时间的 System.out.println("线程结束沉睡"); String html = rootPage.asText(); System.out.println(html); } catch (Exception e) { } </pre> <p> </p> <p>其实这段代码不好使。<br><br><br>求解答,其中典型的就是这个链接的页面,怎么能在java程序中获取其中的数据?<br><br>http://xinjinqiao.tprtc.com/admin/main/flrpro.do</p> <p> </p> <p> </p> </div>
org.apache.http.NoHttpResponseException: liuyan.people.com.cn:80 failed to respond
需要对这个页面(http://liuyan.people.com.cn/threads/list?fid=565)进行设计采集程序,由于“加载更多”就是当页最后一个ID,如: http://liuyan.people.com.cn/threads/list?fid=565 的JSON数据页面为 http://liuyan.people.com.cn/threads/queryThreadsList?fid=565&lastItem=0 JSON数据最后一个TID是7127843,那第二页即是 http://liuyan.people.com.cn/threads/queryThreadsList?fid=565&lastItem=7127843 JSON数据最后一个TID是7125108,那第三页即是 http://liuyan.people.com.cn/threads/queryThreadsList?fid=565&lastItem=7125108 依此类推,当responseData中数据条目小于10条或空时,即结束。 以下代码会采集切换5~6页后,在执行DealjsonData()的response = httpClient.execute(httpPost);后报错org.apache.http.NoHttpResponseException: liuyan.people.com.cn:80 failed to respond 有什么好的解决办法,如测试通过就全部给分,谢谢。 以下是部分代码借鉴。 public static void gettitle(String tablename,String province,String cityname,String district,String leaderstype,String leadersname,String queryurl,String url,String proxyname,int proxyport) { String[] Pagecountsp = null; boolean tmptable=true; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); HttpClient httpClient = null; HttpPost httpPost = null; HttpResponse response = null; try{ //WebClient webClient = new WebClient(BrowserVersion.CHROME,"45.63.121.157",80); DataBaseHelper dbh = new DataBaseHelper(tablename); dbh.onCreate(tablename); String tmp_tablename=dbh.onCreatetmp(tablename); //建立临时库和清空临时库 System.out.println(df.format(System.currentTimeMillis())+" "+"queryurl:"+queryurl+" tablename:"+tablename+" leadersname:"+leadersname); HtmlPage page=null; int pagenum=20; WebClient webClient = new WebClient(BrowserVersion.CHROME); ProxyConfig proxyConfig = new ProxyConfig(proxyname,proxyport); webClient.getOptions().setTimeout(3000000); //webClient.getOptions().setProxyConfig(proxyConfig); webClient.getOptions().setJavaScriptEnabled(false); webClient.getOptions().setCssEnabled(false); httpClient = HttpClients.createDefault(); httpPost = new HttpPost(queryurl);// 传入URL地址 httpPost.addHeader("Accept", "pplication/json, text/javascript, */*; q=0.01"); httpPost.addHeader("Accept-Encoding", "gzip, deflate");// 设置请求头 httpPost.addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");// 设置请求头 //httpPost.addHeader("Connection", "keep-alive");// 设置请求头 // httpPost.addHeader("Content-Length", "19");//设置请求头 //httpPost.addHeader("Content-Type", // "application/x-www-form-urlencoded; charset=UTF-8");// 设置请求头 httpPost.addHeader("Referer", "http://liuyan.people.com.cn/threads/list?fid=1079");// 设置请求头 //httpPost.addHeader("User-Agent", // "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/64.0");// 设置请求头 //httpPost.addHeader("X-Requested-With", "XMLHttpRequest");// 设置请求头 response = httpClient.execute(httpPost);// 获取响应 int statusCode = response.getStatusLine().getStatusCode(); //System.out.println("HTTP Status Code:" + statusCode); if (statusCode != HttpStatus.SC_OK) { //System.out.println("HTTP请求未成功!HTTP Status Code:");//+response.getStatusLine()) } HttpEntity httpEntity = response.getEntity(); String reponseContent = EntityUtils.toString(httpEntity); EntityUtils.consume(httpEntity); reponseContent=reponseContent.replaceAll("null", "0"); //System.out.println("响应内容:" + reponseContent); if(reponseContent.length()>20){ JSONObject dealList_findjson = JSONObject.fromObject(reponseContent); //System.out.println(dealList_findjson.toString()); //System.out.println("页数:"+dealList_findjson.getInt("ttlpage")+"记录数:"+dealList_findjson.getInt("ttlrow")); //int RecordCou = dealList_findjson.getInt("ttlrow"); //记录数 //int PageCou = dealList_findjson.getInt("ttlpage"); //页数 //int RecordCou = PageCou*pagenum; //预计最大记录总数,最后一页可能不是20 int DBcout=dbh.DBcount(tablename,leadersname); // //System.out.println(" 总页数:"+PageCou+" 记录数:"+RecordCou+" 数据库最早时间:"+DBnewstime+" 近1月内数据库条目:"+DB3cout+" 数据库总条目:"+DBcout); if(dealList_findjson.size()>0){ //在今天截止到表中最新时间的URL筛选如有新数据,由于可以直接调整WEB显示时间,不用增量模式,改用选择模式 System.out.println("开始采集:"); //System.out.println(doc.toString()); int continues=getListData(dbh,queryurl,url,dealList_findjson,tmp_tablename,tablename,province,cityname,district,leaderstype,leadersname); for (int i=0;continues>0;i++) //PageCount-&&i<2 { //continues代表只有不到10条数据,意味着结尾了,默认是0,否则tid=continues; //System.out.println(continues); reponseContent=DealjsonData(queryurl,continues); //调用读取XHR的JSON数据 if(reponseContent.indexOf("success")>1){ reponseContent=reponseContent.replaceAll("null", "0"); //System.out.println("响应内容:" + reponseContent); if(reponseContent.length()>20){ dealList_findjson = JSONObject.fromObject(reponseContent); //转化为json continues=getListData(dbh,queryurl,url,dealList_findjson,tmp_tablename,tablename,province,cityname,district,leaderstype,leadersname); //getListData对获取的JSON数据进行返回最后一条TID值,用于翻页,否则为0结束,插入数据。 //System.out.println("continues:" + continues+" i:" + i); } else{System.out.println("获取JSON数据异常l!");} } else{System.out.println("获取XHR的JSON数据失败!"); break;} } } dbh.Dedup_Add_table(tablename,tmp_tablename,province,leaderstype,leadersname,cityname,district,tmptable); //增加了临时的数据库,进行重删方式新增 } //20180114改为不删除临时tmp库,即无论tmp_zfcg0或tmpzfcg3;本来每次在onCreatetmp头部就会清空库truncate //dbh.TBdel(tmp_tablename); //删除临时库 webClient.close(); } catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw, true)); String strs = sw.toString(); log.error("url:"+url+" gettitle error:"+ strs); } } //获取XHR中的JSON数据 static String DealjsonData(String url,int pageNo) { String url1=url.substring(0,url.lastIndexOf("lastItem=")+9)+pageNo; System.out.println("url:"+url1); //ConnectionConfig connectionConfig = ConnectionConfig.custom().setBufferSize(4128).build(); //HttpClient httpClient = HttpClients.custom().setDefaultConnectionConfig(connectionConfig).build(); HttpClient httpClient = null; HttpPost httpPost = null; HttpResponse response = null; String reponseContent=null; try{ httpClient = HttpClients.createDefault(); httpPost = new HttpPost(url1);// 传入URL地址 httpPost.addHeader("Accept","pplication/json, text/javascript, */*; q=0.01"); httpPost.addHeader("Accept-Encoding", "gzip, deflate");// 设置请求头 httpPost.addHeader("Accept-Language","zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");// 设置请求头 httpPost.addHeader("Connection", "keep-alive");// 设置请求头 // httpPost.addHeader("Content-Length", "19");//设置请求头 httpPost.addHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");// 设置请求头 httpPost.addHeader("Referer", "http://liuyan.people.com.cn/threads/list?fid=1079");// 设置请求头 //httpPost.addHeader("User-Agent", // "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/64.0");// 设置请求头 //httpPost.addHeader("X-Requested-With", "XMLHttpRequest");// 设置请求头 response = httpClient.execute(httpPost);// 获取响应 int statusCode = response.getStatusLine().getStatusCode(); //System.out.println("HTTP Status Code:" + statusCode); if (statusCode != HttpStatus.SC_OK) { //System.out.println("HTTP请求未成功!HTTP Status Code:"+ response.getStatusLine()); } HttpEntity httpEntity = response.getEntity(); reponseContent = EntityUtils.toString(httpEntity); EntityUtils.consume(httpEntity); //System.out.println("响应内容:" + reponseContent); return reponseContent; } catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw, true)); String strs = sw.toString(); log.error("table_name:"+url+"url1:"+url1+" ListData error:"+ strs); return reponseContent; } }
JAVA POST登录异常问题?
网上找的HTTP登录代码,登录后返回能200,但是不用用户名密码也返回200,且用Cookie[] cookies = httpClient.getState().getCookies(); StringBuffer tmpcookies = new StringBuffer(); for (Cookie c : cookies) { tmpcookies.append(c.toString() + ";"); System.out.println("cookies = "+c.toString()); } 能取到Cookies,这个搞不懂 登录成功后跳到另一个网页,但是用System.out.println("ResponseBody:\n" + stringBuffer.toString());返回如下: ``` <html> <head><title></title> <SCRIPT LANGUAGE="JavaScript"> var currentWindow = window; if(currentWindow != null){ currentWindow.top.location = "/NMMP/jsp/login.jsp"; } </SCRIPT> </head> ``` 感觉跳转时少了东西,所以跳转后的网页不对,请各们大神帮分析下,或者给个思路,本人不是搞程序的,只是想做一个来应对自己的重复工作,完整代码如下:本人无C币,如果有兴趣帮我做可商量 ``` import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; /** * * @ClassName: HttpLogin * @Description: java通过httpclient获取cookie模拟登录 * @author zeze * @date 2015年11月10日 下午4:18:08 * */ public class HttpLogin { public static void main(String[] args) { // 登陆 Url String loginUrl = "http://10.154.13.82:7011/NMMP/jsp/login.jsp"; // 需登陆后访问的 Url String dataUrl = "http://10.154.13.82:7011/NMMP/wyMainAction!init.ilf"; //http://10.154.13.82:7011/NMMP//jsp/wyService/mytasklist.jsp HttpClient httpClient = new HttpClient(); // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式 PostMethod postMethod = new PostMethod(loginUrl); // 设置登陆时要求的信息,用户名和密码 NameValuePair[] data = { new NameValuePair("useraccount", ""), new NameValuePair("password", "Hn_yd45") }; postMethod.setRequestBody(data); try { // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略 httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); int statusCode=httpClient.executeMethod(postMethod); // 获得登陆后的 Cookie Cookie[] cookies = httpClient.getState().getCookies(); StringBuffer tmpcookies = new StringBuffer(); for (Cookie c : cookies) { tmpcookies.append(c.toString() + ";"); System.out.println("cookies = "+c.toString()); } System.out.println(statusCode); if(statusCode==200){//重定向到新的URL System.out.println("模拟登录成功"); // 进行登陆后的操作 GetMethod getMethod = new GetMethod(dataUrl); // 每次访问需授权的网址时需带上前面的 cookie 作为通行证 // getMethod.setRequestHeader("cookie", tmpcookies.toString()); // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据 // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外 // postMethod.setRequestHeader("Referer", "http://passport.mop.com/"); getMethod.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); getMethod.setRequestHeader("Referer","http://10.154.13.82:7011/NMMP/login.ilf"); getMethod.setRequestHeader("Accept-Encoding","gzip, deflate"); getMethod.setRequestHeader("Accept-Language","zh-CN,zh;q=0.9"); getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" ); httpClient.executeMethod(getMethod); statusCode=httpClient.executeMethod(getMethod); System.out.println("模拟登录成功"+statusCode); // 打印出返回数据,检验一下是否成功 // String text = getMethod.getResponseBodyAsString(); InputStream inputStream = getMethod.getResponseBodyAsStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer stringBuffer = new StringBuffer(); String str= ""; while((str = br.readLine()) != null){ stringBuffer .append(str ); } System.out.println("ResponseBody:\n" + stringBuffer.toString()); HttpRequestProxy hrp = new HttpRequestProxy(); Map date = new HashMap(); date.put("jyidApplet", "1"); date.put("codeNumApplet", "1"); date.put("jymxIdApplet", "447"); date.put("patientIdApplet", "1118"); String str1 = hrp.doRequest(dataUrl,date, null, null); System.out.println("sd"+str1); } else { System.out.println("登录失败"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 登录网页源码如下: ``` <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>综合管理系统</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <style type="text/css"> *{ margin:auto; } html,body{ overflow:hidden; width:100%; height:100%; margin:auto; } body{ background:url(/NMMP/common-skins/maintain/images/login_bg_1.0.gif); } #login_panel{ background-image:url(/NMMP/common-skins/maintain/images/login_panel_bg_1.0.png); background-repeat:repeat-x; height:640px; width:100%; text-align:center; position:relative; } #login_input{ background-image:url(/NMMP/common-skins/maintain/images/login_input_1.0.png); background-repeat:no-repeat; width:668px; height:403px; position:relative; } #useraccount{ border:none; position:absolute; left:392px; top:149px; height:24px; width:136px; background-color:#99deff; } #password{ border:none; position:absolute; left:392px; top:183px; height:24px; width:136px; background-color:#99deff; } #login_botton{ position:absolute; left:537px; _left:538px; top:147px; } #message{ position:absolute; left:348px; top:218px; color:#F00; font-size:14px; font-weight:bold; } #technical{ position:absolute; left:375px; top:258px; text-align:left; color:#CCC; font-size:12px; line-height:30px; } #copyright{ position:absolute; bottom:65px; right:0px; color:#CCC; font-size:12px; text-align:right; line-height:20px; } </style> <!--[if IE 6]> <script language="javascript" type="text/javascript" src="/NMMP/common-skins/default/jslib/DD_belatedPNG.js"> </script> <script language="javascript" type="text/javascript"> DD_belatedPNG.fix('#login_panel'); DD_belatedPNG.fix('#login_input'); </script> <![endif]--> </head> <body windowc_onresizez="true"> <div id="login_panel"> <div id="login_input" style="top: 110.5px;"> <form name="form1" action="/NMMP/CtrlUser.action?action=login&amp;surl=jsp/home/main.jsp&amp;furl=jsp/login.jsp" method="post" 360chrome_form_autofill="2"> <input name="useraccount" id="useraccount" style="background-color: rgb(250, 255, 189);" required="true" type="text"> <input name="password" id="password" style="background-color: rgb(250, 255, 189);" required="true" type="password"> <input id="login_botton" type="image" src="/NMMP/common-skins/maintain/images/login_botton.png"> <div id="message"> </div> <!-- div id="technical"><a style="color:orange" href="javascript:void(0)" onclick="resetpwd();">密码重置</a></div--> <div id="copyright">版权所有:</div> </form> </div> </div> <script language="javascript" type="text/javascript"> document.getElementById("login_input").style.top=(document.body.clientHeight-403)/2+"px"; function resetpwd(){ var url = "/NMMP/resetpwdAction.ilf"; window.location.href=url; } </script> </body></html> ```
angular v8.0+ subscribe() 内无法给参数赋值
环境版本: * Angular CLI: 8.3.4 * Node: 10.16.3 * Angular: 8.2.6 <br> *** <br> 代码如下:<br> *-server.service.ts ``` import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { catchError, map, tap } from 'rxjs/operators'; // import 'rxjs/add/operator/map'; // 引入无效 @Injectable({ providedIn: 'root' }) export class NaverServerService { constructor(private http: HttpClient) { } // 获取 资讯 分类、url、flag getNewsType() { return this.http.get('../../assets/data/newsType.json') .pipe(map((res: Response) => res.json()) ); } } ``` *.component.ts ``` import { Component, OnInit } from '@angular/core'; import { NaverServerService } from '../_servers/naver-server.service'; @Component({ selector: 'app-navbar', templateUrl: './navbar.component.html', styleUrls: ['./navbar.component.css'], providers: [NaverServerService] }) export class NavbarComponent implements OnInit { newsTypes: any = []; constructor( private navServer: NaverServerService) { } ngOnInit() { // 调用 NaverServerService this.navServer.getNewsTypes().subscribe( (data) => this.newsTypes = data ); console.log(this.newsTypes); } } ``` <br> 运行无异常,但是this.newsTypes赋值无效。 *** 运行效果如下图:<br> ![图片说明](https://img-ask.csdn.net/upload/201909/22/1569124298_227793.png)<br> ![图片说明](https://img-ask.csdn.net/upload/201909/22/1569124337_679132.png)<br> <br> 如果,打印结果,可以看到数据结果。<br> <br> ![图片说明](https://img-ask.csdn.net/upload/201909/22/1569124412_610554.png)<br> ![图片说明](https://img-ask.csdn.net/upload/201909/22/1569124438_702858.png)<br> <br> 如果,赋值,什么也看不见。<br> 求解,该如何赋值?
需要一个JAVA采集器的框架
我需要对人民网地方领导留言板的留言进行遍历采集,需要一个JAVA采集器,MYSQL数据库方面我会来解决,功能主要是: 1、对每条JSON内容进行采集。 2、对JOSN里面TID的页面内容,也就是在 [查看全文]点开后进行详细内容采集。如:http://liuyan.people.com.cn/threads/content?tid=5668549 3、能实现【加载更多】。 样例页面:http://liuyan.people.com.cn/threads/list?fid=1079 以下是JOSN获取的代码: ``` package com.java.activiti.controller; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class python { public static void main(String[] args) { String url = "http://liuyan.people.com.cn/threads/queryThreadsList?fid=1079&lastItem=0"; HttpClient httpClient = null; HttpPost httpPost = null; HttpResponse response = null; try { httpClient = HttpClients.createDefault(); httpPost = new HttpPost(url);// 传入URL地址 httpPost.addHeader("Accept", "pplication/json, text/javascript, */*; q=0.01"); httpPost.addHeader("Accept-Encoding", "gzip, deflate");// 设置请求头 httpPost.addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");// 设置请求头 //httpPost.addHeader("Connection", "keep-alive");// 设置请求头 // httpPost.addHeader("Content-Length", "19");//设置请求头 //httpPost.addHeader("Content-Type", // "application/x-www-form-urlencoded; charset=UTF-8");// 设置请求头 httpPost.addHeader("Referer", "http://liuyan.people.com.cn/threads/list?fid=1079");// 设置请求头 //httpPost.addHeader("User-Agent", // "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/64.0");// 设置请求头 //httpPost.addHeader("X-Requested-With", "XMLHttpRequest");// 设置请求头 response = httpClient.execute(httpPost);// 获取响应 int statusCode = response.getStatusLine().getStatusCode(); System.out.println("HTTP Status Code:" + statusCode); if (statusCode != HttpStatus.SC_OK) { System.out.println("HTTP请求未成功!HTTP Status Code:" + response.getStatusLine()); } HttpEntity httpEntity = response.getEntity(); String reponseContent = EntityUtils.toString(httpEntity); EntityUtils.consume(httpEntity); System.out.println("响应内容:" + reponseContent); } catch (Exception e) { e.printStackTrace(); } } } ``` {"result":"success","responseData":[{"tid":5668549,"userId":1852621,"fid":1079,"typeId":2,"domainId":14,"topicId":0,"nickName":"李***","subject":"进贤一中乱收费","content":"您好:\n我是江西省南昌市进贤县进贤一中的学生家长,前段时间进贤一中收取学生600元,校方称其为改卷费。近段时间,自一月26日后,学校开始强制补课,并在1月27日收取学生400元补课费,一月31日结束强...","dateline":1548659737,"ip":"223.104.170.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"投诉","domainName":"教育","sourceName":"手机浏览器","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5664590,"userId":1850390,"fid":1079,"typeId":2,"domainId":14,"topicId":0,"nickName":"手***","subject":"主题公园别墅无证幼儿园难道就关不了吗?","content":"书记你好!自从别墅区内有智慧树及未来星幼儿园开办以来,两家无证幼儿园相隔不到10米,幼儿园在7月份已经上报了都是现场,为什么一直取缔不了?而且小区内部存在极大的安全隐患,严重扰民,从早到晚都是孩子们的...","dateline":1548487073,"ip":"59.53.7.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"投诉","domainName":"教育","sourceName":"手机浏览器","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5659972,"userId":1803445,"fid":1079,"typeId":6,"domainId":7,"topicId":0,"nickName":"2***","subject":"拖欠工程材料款","content":"尊敬的省委书记您好:南昌市丽阳装饰工程有限公司拖欠2012年-2017年期间(红谷凯旋办公大楼,汉港凯旋城,宜春御湖城老年公寓)等几个项目工程材料款合计30多万。2017年底审核结算后承诺付款无数次,...","dateline":1548322912,"ip":"117.43.68.*","stateInfo":"已回复","traceInfo":"已回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"城建","sourceName":"客户端","answerId":3372083,"answerContent":"谢谢你反映情况。建议你通过司法途径追回欠款。未尽之处,敬请谅解。","answerDateline":1548645084,"answerOrganization":"南昌市委民声通道"},{"tid":5658741,"userId":1846587,"fid":1079,"typeId":6,"domainId":12,"topicId":0,"nickName":"圆***","subject":"救救我可怜的娃16岁患上白血病一年多","content":"市委书记你好,帮帮我这个苦难的家庭吧,儿子十四岁多患上急性白血病一年多,在南大一附院治疗把家里积蓄全部花光,还欠钱,没钱治疗就会复发,我想办个贫困户可以多报销点医药费,这次去医院化疗医生说化疗打下去都...","dateline":1548301402,"ip":"59.63.151.*","stateInfo":"已回复","traceInfo":"已回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"医疗","sourceName":"手机浏览器","answerId":3372022,"answerContent":"谢谢你反映情况。请你到当地县区民政部门咨询相关救助政策。未尽之处,敬请谅解。","answerDateline":1548644492,"answerOrganization":"南昌市委民声通道"},{"tid":5656180,"userId":1840290,"fid":1079,"typeId":6,"domainId":9,"topicId":0,"nickName":"x***","subject":"第二次:乐化农民建房为什么不能“拆旧建新“?","content":"我家老房是42年前建的砖木结构的旧式瓦房,村子其他村民都建了楼房,也是全村唯一独剩的旧房,已是非常陈旧破败,特别是屋顶漏水,年年要检修屋顶瓦片,现在生活条件改善了,想住得舒心一点,向村委会申请不占用耕...","dateline":1548218791,"ip":"116.25.94.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"三农","sourceName":"PC浏览器","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5648308,"userId":1223889,"fid":1079,"typeId":2,"domainId":7,"topicId":0,"nickName":"天***","subject":"朱桥东路佛塔村段商贩在路中间摆摊","content":"每逢农历的初二 初五 初八 十二 十五 十八 廿二 廿五 廿八 是佛塔村当街的日子,以前只在村里的农贸市场摆摊,后来慢慢摆到朱桥东路上的非机动车道,现在摆到路中间了 不仅影响市容,也...","dateline":1547952618,"ip":"59.53.30.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"投诉","domainName":"城建","sourceName":"PC浏览器","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5642495,"userId":1139396,"fid":1079,"typeId":6,"domainId":9,"topicId":0,"nickName":"8***","subject":"百姓苦,苦于求助无门","content":"敬爱的书记您好,我是您治下的南昌市湾里区罗亭镇义坪村松山组村民,是这样的,由于我母亲是残疾,天生小儿麻痹症,有残疾证,我想说我母亲怎么就没有享受国家低保政策的,那么我母亲没有资格的话,那么我想问,在我...","dateline":1547732335,"ip":"115.148.224.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"三农","sourceName":"客户端","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5639297,"userId":1835490,"fid":1079,"typeId":6,"domainId":7,"topicId":0,"nickName":"中***","subject":"关于南昌新力龙湾项目违规收取价外款的举报材料","content":"关于南昌新力龙湾项目违规收取价外款的举报材料尊敬的各位领导:南昌宝葫芦农庄有限公司开发的“新力龙湾”项目违规收取价位款,无视中央三令五申调控房价的精神和省市关于禁止收取“价外款”的文件规定,顶风违规收...","dateline":1547637410,"ip":"182.97.215.*","stateInfo":"未回复","traceInfo":"未回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"城建","sourceName":"客户端","answerId":null,"answerContent":null,"answerDateline":null,"answerOrganization":null},{"tid":5629109,"userId":1778124,"fid":1079,"typeId":5,"domainId":7,"topicId":18,"nickName":",***","subject":"安置房问题","content":"希望国家对于安置房问题应该高度集中,加强监管力度。i地方的办事效率应该提高了。","dateline":1547274215,"ip":"117.166.80.*","stateInfo":"已回复","traceInfo":"已回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"建言","domainName":"城建","sourceName":"客户端","answerId":3361266,"answerContent":"谢谢你所提的建议。我室会将你的建议转达给相关部门。未尽之处,敬请谅解。","answerDateline":1547438837,"answerOrganization":"南昌市委民声通道"},{"tid":5627829,"userId":1827474,"fid":1079,"typeId":6,"domainId":20,"topicId":0,"nickName":"你***","subject":"享骑出行公司不退押金","content":"市委书记您好,自2018年12月10日起,申请享骑出行退押金299元到现在为止,押金迟迟未退,已经超过约定时间,客服电话一直打不通,公司地址不详,不知道怎么办,希望市委书记协助我退押金,万分感谢,祝市...","dateline":1547211208,"ip":"223.104.172.*","stateInfo":"已回复","traceInfo":"已回复","processInfo":"未交办","hasReported":0,"favNum":0,"forumName":"南昌市委书记殷美根","typeName":"求助","domainName":"金融","sourceName":"客户端","answerId":3361083,"answerContent":"谢谢你反映情况。关于消费者维权问题,请拨打市市场监管局举报热线12315,向有关人员反映。另外,请你最好提供公司注册地址,以便确认是否属于我市市场监管局管辖范围。未尽之处,敬请谅解。","answerDateline":1547431066,"answerOrganization":"南昌市委民声通道"}]}
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
作为一个程序员,内存的这些硬核知识你必须懂!
我们之前讲过CPU,也说了CPU和内存的那点事儿,今天咱就再来说说有关内存,作为一个程序员,你必须要懂的哪那些硬核知识! 大白话聊一聊,很重要! 先来大白话的跟大家聊一聊,我们这里说的内存啊,其实就是说的我们电脑里面的内存条,所以嘞,内存就是内存条,数据要放在这上面才能被cpu读取从而做运算,还有硬盘,就是电脑中的C盘啥的,一个程序需要运行的话需要向内存申请一块独立的内存空间,这个程序本身是存放在...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
立即提问