java如何获取网页上的数据,怎么处理?

毕业设计需要采集一些数据,比如招聘信息,创业信息。如何把这些数据整合到自己的页面上,我用java写的毕业设计救助各位大神支招,听说有jsoup,我试了可以解析出某网站,但是不知道怎么处理,如何展示到自己的页面上,需要放到数据库吗?怎么放?

6个回答

ctrl+c ctrl+v

ctrl+c ctrl+v

Ctrlc Ctrlv

WooNiu
WooNiu ╮(╯▽╰)╭
接近 4 年之前 回复

数据都收集到了 还不会进行展示吗。。。。。。

WooNiu
WooNiu 不太会处理
接近 4 年之前 回复

就是通过爬虫获取数据,然后进行展示就行了,httpClient发送请求

WooNiu
WooNiu
接近 4 年之前 回复

利用jsoup去获取html每个dom节点的html间的文本信息,jsoup的api有相关示例的,然后你把每个页面需要获取的信息封装成一个对象,改变每次连接的地址,这里的意思是说,现在很多网站信息都是分页显示的,其实他的地址信息只是页码那个参数不同罢了,你只要在循环里改变这个参数信息,然后每次获取的dom进行解析,把获取的信息存储到mysql数据库中,当然通过navicat就可以将获取的数据导出成excel等等你需要的格式,希望我的回答能够帮到你。

WooNiu
WooNiu 谢谢了,我好像有点思路了
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在MVC模式下将浏览网页的用户信息写入后台数据库的处理流程问题
大家知道,在MVC模式下,是JSP-->SERVLET-->SERVICE-->DAO这种调用关系,就是说针对后台数据库的操作都是在DAO中实现。 有这样一个需求,用户用浏览器访问网页a.jsp,a.jsp非常简单,就是用户访问时显示个hello world,没有任何提交表单的操作。 现在需要获取访问页面的用户的两个信息,一个是IP,一个是user-agent,那么是不是我应该在a.jsp里调用SERVLET,在SERVLET中用request.getHeader之类的方法获得用户信息(IP和user-agent),然后通过调用SERVICE-->DAO来把用户信息写入数据库,写完数据库,SERVLET的任务就完成了,之后没有任何跳转之类的操作。 那么,这种没有提交表单的JSP里怎么调用SERVLET呢?是不是在a.jsp加载页面时用java script的onload中调用SERVLET呢? 总感觉上面的流程有点怪怪的感觉。。。。。 请大神指教,万分感谢!
关于在MVC模式下将浏览网页的用户IP写入后台数据库的处理流程问题
大家知道,在MVC模式下,是JSP-->SERVLET-->SERVICE-->DAO这种调用关系,就是说针对后台数据库的操作都是在DAO中实现。 现在有一个简单需求,就是要将浏览网页的用户IP写入后台数据库。比如用户要浏览的网页是a.jsp,现在需要把这个用户访问a.jsp时的IP写入后台数据库。 那么请问实现流程是怎样的?难道是在JSP加载页面时用request.getRemoteAddr()获得用户IP,然后在js的onload中调用SERVLET(SERVLET-->SERVICE-->DAO)来实现将刚才获得的用户IP写入数据库吗?总觉得这个实现流程怪怪的。。。 或者说,应该是让用户先访问一个SERVLET,在SERVLET中获得用户IP,然后将用户IP写入数据库。最后,在SERVLET中跳转到a.jsp?感觉这个流程好像逻辑清晰些似的。。。。 究竟应该怎样实现好呢?请大神们指教,谢谢!
初学jsp遇到数据库连接处理问题
这个是注册插入数据代码,在网页中可以运行成功,说明我的数据库连接是没问题的 ``` <%String uid=request.getParameter("uid"); String pwd=request.getParameter("pwd"); Object[]paramss={uid,pwd}; String sqll="insert into tb_vip values(?,?)"; if(DBHelper.runupdatesql(sqll, paramss)) { out.print("已经成功注册"); } else out.print("服务器问题请与客服联系"); %> ``` 下面这段是判断数据库中用户名是否存在,不存在才可以用上面代码注册,但是运行后不管数据库中是否存在用户名,网页中只打印“注册失败,用户名不存在” ``` <% String uid=request.getParameter("uid"); String pwd=request.getParameter("pwd"); Object[] params={uid}; String sql ="select count(*)from tb_vip where userid=?"; Result result=DBHelper.runselectsql(sql, params); if(result.getRowCount()==0){ Object[]paramss={uid,pwd}; String sqll="insert into tb_vip values(?,?)"; if(DBHelper.runupdatesql(sqll, paramss)){ out.print("已经成功注册"); }else{out.print("服务器问题请与客服联系");}} else{ out.print("注册失败,用户名已存在"); } %> ``` 下面是java数据库处理代码部分 ``` package jspex; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.jsp.jstl.sql.Result; import javax.servlet.jsp.jstl.sql.ResultSupport; public class DBHelper { private static final String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static final String url = "jdbc:sqlserver://localhost:1433;databasename=studentm"; private static final String uname = "sa"; private static final String upass = "c111111"; public static Connection getConn(){ Connection conn = null; try{ Class.forName(className); conn = DriverManager.getConnection(url,uname, upass); } catch(Exception e){ e.printStackTrace(); } return conn; } public static void closeConn(Connection conn){ try{ if(conn!=null){ conn.close(); } } catch(Exception e){ e.printStackTrace(); } } public static void closePstmt(PreparedStatement pstmt){ try{ if(pstmt!=null){ pstmt.close(); } } catch(Exception e){ e.printStackTrace(); } } public static void closeRs(ResultSet rs){ try{ if(rs!=null){ rs.close(); } } catch(Exception e){ e.printStackTrace(); } } public static boolean runupdatesql(String sql,Object[]params){ Connection con=null; PreparedStatement ps=null; try{ con=getConn(); ps=con.prepareStatement(sql); for(int i=0;i<params.length;i++){ ps.setObject(i+1, params[i]); } ps.executeUpdate(); return true; }catch(Exception e){ e.printStackTrace(); return false; } finally{ try{ ps.close(); con.close(); } catch(Exception e){ e.printStackTrace(); } } } public static Result runselectsql(String sql,Object[]params){ Connection con=null; PreparedStatement ps=null; ResultSet res=null; Result result=null; try{ con=getConn(); ps=con.prepareStatement(sql); for(int i=0;i<params.length;i++){ ps.setObject(i+1, params[i]); } res=ps.executeQuery(); result=ResultSupport.toResult(res); } catch(Exception e){ e.printStackTrace(); } finally{ try{ res.close(); ps.close(); con.close(); }catch(Exception e){ e.printStackTrace(); } } return result; } } ``` 下面是注册页面,我为了好找错误,还把相关js功能注释掉了 ``` <html> <head> <title>reg</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> #loginform{ width:300px; height:auto; } label{ width:60px; height:30px; text-align:left; font-size:14px; font-weight:hold; vertical-align:bottom; } .inpute{ width:160px; height:20px; } .row{ width:300px; height:30px; } </style> <script type="text/javascript"> function checkform(){ var name=document.getElementById("uid"); var pass=document.getElementById("pwd"); /*var rpass=document.getElementById("rpwd");*/ if(name.value.length<=0){ alert("用户名不能为空"); name.focus(); return false; } if(pass.value.length>=8){ alert("密码长度不对"); pass.focus(); return false; } /**if(pass!=rpass){ alert("密码不一致"); return false; }**/ return true; } </script> </head> <body> <div id="loginform"> <form onsubmit="return checkform();"action="doreg.jsp" method="post"> <div class="row"> <label for="uid">用户名: </label> <input name="uid" type="text" class="inpute" id="uid"> </div> <div class="row"> <label for="pwd">密码: </label> <input name="pwd" type="password" class="inpute" id="pwd"> </div> </div> <!-- <div class="row"> <label for="rpwd">确认密码:</label> <input name="rpwd" type="password" class="inpute" id="rpwd"> </div> --> <div class="row"> <input type="submit" value="注册"/><input type="reset" value="重新填写"/> </div> </form> </div> </body> </html> ``` 分析了很久,不知道出现了什么问题,希望大家可以帮帮我
Java获取Hwnd (大华NVR二次开发)
实时监视功能有二种播放方式,直接方式和数据回调方式。直接方式是指通过服务器传送过来的视频数据不需要用户自己去解码就能够显示播放,用户只要调用接口CLIENT_API LONG CLIENT_RealPlay(LONG lLoginID, int nChannelID, HWND hWnd),将窗口句柄传入形参hWnd就能够实时播放视频了;数据回调方式是指服务器传送过来的视频数据通过回调函数由用户自己来处理,如果用户需要播放的话,可以调用解码库dhplay.dll解码播放。 多画面预览方式是指在一个画面上显示多路视频图像。 我已经获取到了 登录成功的ID 想让把视频放到网页上,我该如何传值(HWDN)
在一个线程中用jdbc查询数据库,但是查出来的结果和期望结果不同
本人用java爬虫,想爬取视频网站中的播放量信息,思路是先爬取一次信息存入数据库,之后每天定时爬取,当发现当数据库中存在url链接相同的信息时,便按日期排序,把最近更新的那条信息中的播放量取出来,和当天爬取的播放量做差得到每天更新的播放量,之后把更新的数据存入数据库。但是现在发现处理网页用时和查询数据库用时不一致,会出现已经请求到电视剧1的信息时,从数据库中取出来的播放量是电视剧2,导致存入数据库的新增播放量出现负数的情况。代码里也加入了synchronized的同步处理,但还是会出现数据不对的问题,希望大神能帮忙解答!!!
javaEE连接mysql数据库,然后通过映射把数据显示到网页上,可是没报错却网页没有内容。
```<h2>我教的课</h2> <div> <ul> <li th:each="subject:${subjects}"> <span th:text="${subject.kc_name}"></span> <span th:text="${subject.kc_teach}"></span> <span th:text="${subject.begin_sj}"></span> </li> </ul> </div> //这个是要显示的网页 ```//显示所有学生信息的请求 @RequestMapping("/query_subject") public String querySubject(Model model){ List<Subject> subjects = null; LSubject subject = new LSubject(); String sqlTxt = "select * from subject_info"; try { subjects = subject.querySubject(sqlTxt); } catch (Exception ex){ ex.printStackTrace(); } model.addAttribute("subjects", subjects); return "subject_info"; }//这个是请求; ``` //向数据库查询教师课程数据,并返回list格式类型的数据。 public List<Subject> querySubject(String sqlTxt) throws ClassNotFoundException { List<Subject> subjects = new ArrayList<Subject>(); JdbcTemplate jdbcTemplate = new JdbcTemplate(); DbManage db = new DbManage(); jdbcTemplate.setDataSource(db.getDataSource()); List<Map<String, Object>> list = jdbcTemplate.queryForList(sqlTxt); for(Map<String, Object> map : list){ Subject subject = new Subject(); subject.setKc_name(map.get("kc_name").toString()); subject.setKc_teach(map.get("kc_teach").toString()); subject.setBegin_sj(map.get("begin_sj").toString()); } return subjects; }//这个处理器,负责处理 ``` //这个是类似超链接一样的,点击“我教的课”就处理请求 <li><a href="/query_subject"><i class="icon-briefcase"></i>我教的课</a></li> //这个是要显示的网页 <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8" /> <title>Insert title here</title> </head> <body> <h2>我教的课</h2> <div> <ul> <li th:each="subject:${subjects}"> <span th:text="${subject.kc_name}"></span> <span th:text="${subject.kc_teach}"></span> <span th:text="${subject.begin_sj}"></span> </li> </ul> </div> </body> </html>``` //还有Subject这个文件没有打出来,大致是 package student.stusys.entity; public class Subject { private String kc_name; private String kc_teach; private String begin_sj; public String getKc_name() { return kc_name; } public void setKc_name(String kc_name) { this.kc_name = kc_name; } public Subject(String kc_name, String kc_teach,String begin_sj) { this.kc_name = kc_name; this.kc_teach = kc_teach; this.begin_sj = begin_sj; } public Subject() { } public String getKc_teach() { return kc_teach; } public void setKc_teach(String kc_teach) { this.kc_teach = kc_teach; } public String getBegin_sj() { return begin_sj; } public void setBegin_sj(String begin_sj) { this.begin_sj = begin_sj; } } 运行以后发现网页上只显示了subject_info.html上面的“我教的课”四个字,其他都没显示出来,还有数据库里面有subject_info这个表,包括kc_name,kc_teach,begin_sj三个字段,希望有会的朋友告诉我解决的方法,谢谢! 用的软件是IDEA。
Java与Web程序,怎么写着这个呀大神们
实验要求: 1. 配置Tomcat 2. 配置DBMS 3. 编写Servlet,处理来自网页的请求,并返回结果 4. 使用JDBC连接并使用数据库 实验内容: 一、设计网页和Servlet,实现用户名和密码的注册 1). 网页代码 …… 2). Servlet代码 …… 3). 数据表设计 …… 二、设计网页和Servlet,使用注册的用户名和密码登录 1).网页代码 …… 2).Servlet代码 ……
关于短信推送 打开网页线上内容技术实现方案讨论
需求:短信模板推送 指定手机号码 推送短信 并附带短连接,客户点击链接需要验证用户身份,验证完以后,用户打开一个网页,根据需要不同业务用户打开看到的网页内容不同。 分析设想:其中打开网页的内容是通过后台设置的,设置的内容类似于行政文档,文档的内容有部分是固定的格式,其他的一些内容是通过数据库读取,然后加载进来。用户打开看到的内容 难点:1. 对于用户打开的数据,因为是文档,所以内容比较多,而且要打开这个文档就会加载数据,所以用户打开这个页面会导致非常慢。 PS:服务器资源不够 难点2:怎么去实现它,我该用到什么技术 预想方案:使用freemark渲染 , 写好模板 然后填充数据,并保存静态文件,不同用户在不同业务下面 展示的内容不同。 优点: 生成静态的html,用户访问的速度很快。 缺陷:业务需要,所以freemark模板渲染 的建设会非常庞大。一旦业务扩大 模板也将增加,加大了人力成本和开发成本 未知点:是否全部可以自适应手机。 模板内容入口: ![图片说明](https://img-ask.csdn.net/upload/201910/25/1571996116_289137.png) 用户打开预览效果 ![图片说明](https://img-ask.csdn.net/upload/201910/25/1571996151_306842.png) 永不点击的效果要实现高仿真 请同行们给点意见 大家可以提议关于:交互设计、以及实现方案、以及数据的处理,非常希望能够得到大家的帮助。
真心求教一个问题,关于编写web的外挂工具app或者桌面程序,具体请进,真心谢谢了
我编写的过程中遇到一些疑惑不知道如何解决,所以特来真心求教,万望解惑,如果有描述不对或者很low,请谅解。 一个最具体的例子:像前两年12306抢票只能用网页来抢,没有app或者桌面程序,很多朋友都根据12306网站编写了外挂app或者桌面程序,避免老得打开个浏览器。 目前我也想做类似的事情,根据某个http的Web网站写个外挂app或者程序,作为一个程序员,我大致也知道大致的流程是:拼接url->发起请求->收到请求->处理数据。 假设:我上面说的流程没有错的话。 问题: (1)我该如何获取请求的http地址,因为有些请求我是可以在浏览器的开发者工具上根据显示的东西搜索并复制它的url,或者直接点开超链接,根据地址栏显示的url,脑补一下,做个拼接就好。但我想应该有些情况下的http请求我是无法直接获取url的,这时候我应该如何去找出这些请求url呢? (2)收到请求的数据是很多的,但需要的数据只是那么一小部分,有啥通用的东西(java, C#都行)可以反序列化好这些东西,然后让我只取到我想要的数据呢?
如何用Java实现多国语言转码?
:( 最近遇到多国语言的问题,从页面传到后台的字串经过处理为ISO-8859-1编码格式,但是该字符是由繁体中文,日文,韩文等其他国家语言组成的,在后台将其转码成UTF-8形式,日语等无法显示,为???,那么如何才能将ISO-8859-1编码形式的字串转成日语字符串‘汉语字符串等。。。? [b]问题补充:[/b] 所有的编码都用UTF-8不就可以了,不使用ISO-8859-1编码 UTF-8编码占三个字节,也是通用的编码,GOOGLE也是用的UTF-8! sunlightcs (中级程序员) 2009-10-13 我也知道这个情况,但是我在后台获取的时候,将其转化为UTF-8编码形式,显示的为???,改为网上说的日语编码格式iso-(什么给忘了)-jp,结果显示的是口口口。 最好是全部都以unicode编码的字符来表示,也就是\u开头的 lovewhzlq (CTO) 2009 这样就算可以那往数据库里存之前是不是要处理一下?还有就是在toad里用sql语句插值时,日语等其他语言显示为乱码,但是手动直接插是可以的(字段为nvarchar2国际编码) [b]问题补充:[/b] 你前台也用UTF-8啊,就不会是乱码了,网页文件的编码也要是UTF-8啦,不然会有乱码! sunlightcs (中级程序员) 2009-10-14 前台我将获取的字符串转成字节码了,页面本来就是UTF-8编码,但是后台获取的字符串用new String(XX.getBytes("iso-8859-1"),"utf-8"); 转了之后仍然是乱码???。而且我还专门将request和response的字符编码都设置了。。。 [b]问题补充:[/b] 你tomcat里server.xml里有没有设置utf-8编码啊,也要设置一下了 sunlightcs (中级程序员) 2009-10-14 这个没有设置,我去试一下。谢谢哈
网络爬虫下载网页的问题
下载网页时只能下载第一个网页,后续网页虽然能爬出来,但是无法下载到本地。下载网页的代码如下 public class FileDownLoader { /**根据 url 和网页类型生成需要保存的网页的文件名 *去除掉 url 中非文件名字符 */ public String getFileNameByUrl(String url,String contentType) { url=url.substring(7);//remove http:// if(contentType.indexOf("html")!=-1)//text/html { url= url.replaceAll("[\\?/:*|<>\"]", "_")+".html"; return url; } else//如application/pdf { return url.replaceAll("[\\?/:*|<>\"]", "_")+"."+ contentType.substring(contentType.lastIndexOf("/")+1); } } /**保存网页字节数组到本地文件 * filePath 为要保存的文件的相对地址 */ private void saveToLocal(byte[] data,String filePath) { try { DataOutputStream out=new DataOutputStream( new FileOutputStream(new File(filePath))); for(int i=0;i<data.length;i++) out.write(data[i]); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } /*下载 url 指向的网页*/ public String downloadFile(String url) { String filePath=null; /* 使用 GetMethod 来访问一个 URL 对应的网页,需要如下一些步骤。 1 生成一个 HttpClinet 对象并设置相应的参数。 2 生成一个 GetMethod 对象并设置响应的参数。 3 用 HttpClinet 生成的对象来执行 GetMethod 生成的 Get 方法。 4 处理响应状态码。 5 若响应正常,处理 HTTP 响应内容。 6 释放连接*/ /* 1.生成 HttpClinet 对象并设置参数*/ HttpClient httpClient=new HttpClient(); //设置 Http 连接超时 5s httpClient.getHttpConnectionManager().getParams(). setConnectionTimeout(5000); /*2.生成 GetMethod 对象并设置参数*/ //使用 GetMethod 来访问一个 URL 对应的网页 GetMethod getMethod=new GetMethod(url); //设置 get 请求超时 5s getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000); //设置请求重试处理,用的是默认的重试处理:请求三次 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); /*3.执行 HTTP GET 请求*/ try{ /*executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码, 该状态码能表示出该方法执行是否成功,需要认证或者页面发生了跳转(默认状态下GetMethod的实例是自动处理跳转的)*/ int statusCode = httpClient.executeMethod(getMethod); //判断访问的状态码 if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: "+ getMethod.getStatusLine()); filePath=null; } /*4.处理 HTTP 响应内容(返回的状态码正确后,即可取得内容)*/ /*取得目标地址的内容有三种方法: 1 getResponseBody,该方法返回的是目标的二进制的byte流; 2 getResponseBodyAsString,返回的是String类型,值得注意的是该方法返回的String的编码是根据系统默认的编码方式,所以返回的String值可能编码类型有误 3 getResponseBodyAsStream,这个方法对于目标地址中有大量数据需要传输是最佳的。 在这里我们使用了最简单的getResponseBody方法。*/ byte[] responseBody = getMethod.getResponseBody();//读取为字节数组 //根据网页 url 生成保存时的文件名 filePath="E:\\java\\web spider\\"+getFileNameByUrl(url, getMethod.getResponseHeader("Content-Type").getValue()); saveToLocal(responseBody,filePath); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 e.printStackTrace(); } finally { // 释放连接 getMethod.releaseConnection(); } return filePath; } } 调用他的爬行代码如下: public class Crawler { /* 使用种子 url 初始化 URL 队列*/ String results=""; private void initCrawlerWithSeeds(String[] seeds) { for(int i=0;i<seeds.length;i++) LinkDB.addUnvisitedUrl(seeds[i]); } /* 爬取方法*/ public void crawling(String[] seeds,JTextArea kkk) { LinkFilter filter = new LinkFilter(){ //提取以 用户输入的URL开头的链接 public boolean accept(String url) { if(url.startsWith(url)) return true; else return false; } }; //初始化 URL 队列 initCrawlerWithSeeds(seeds); //循环条件:待抓取的链接不空且抓取的网页不多于 1000 while(!LinkDB.unVisitedUrlsEmpty()&&LinkDB.getVisitedUrlNum()<=1000) { //队头 URL 出对 String visitUrl=LinkDB.unVisitedUrlDeQueue(); if(visitUrl==null) continue; FileDownLoader downLoader=new FileDownLoader(); //下载网页 downLoader.downloadFile(visitUrl); //该 url 放入到已访问的 URL 中 LinkDB.addVisitedUrl(visitUrl); //提取出下载网页中的 URL Set<String> links=HtmlParserTool.extractLinks(visitUrl,filter); Iterator<String> it = links.iterator(); //迭代器 while(it.hasNext()) { results=results+'\n'+it.next(); } kkk.setText(results); } } } 求各位大神帮忙解答,马上就要中期检查了
去了北大青鸟之后,,,曾经的一切方向都感觉乱了。。。
1:说java能实现一切 2:说c++是做底层的 3:说c c++ 汇编已淘汰 4:说现在最主流的就是java和c# 1:我说我喜欢做桌面应用,她说学java能搞定,可是资料上说,c c#擅长做桌面 java擅长做手机和网页 2:我看见她们做项目里面都是针对信息处理,什么学生管理系统和网页之类的 3:她说我现在学c++会看不懂,很多大学的都看不懂(我是中专,自学了c语言和数据结构) 据资料上说,去北大青鸟的出来都是码农 请各位大牛解答一下 我现在面临过度期,选择错一样可能以后发展方向和领域会改变,对我来说很关键!
base64转image问题(java)
最近在后台得到byte数组流,转成string后看是base64编码: ![图片说明](https://img-ask.csdn.net/upload/201607/21/1469080699_466517.png) 然后这个base64应该怎么处理?目前想法是转成image存在本地,但是用百度的各种方法转image都失败。 今天看了网页的代码,是在js方法里用ajax请求把dataurl传过来,部分代码: ``` var canvas = document.getElementById("canvas"); var canvasData = canvas.toDataURL("image/jpeg"); /* canvasData = encodeURIComponent(encodeURIComponent(canvasData)); */ //此处提交您的手写签名数据canvasData console.info(canvasData); $.ajax({ type: 'POST', url: '/sign/getSign', data: { "userId":getUrlParam('userId'), "canvasData":canvasData, }, ``` 能不能直接传图片文件过来,而不是传dataurl
关于异常处理语句内变量无法在外部使用的问题
<p>最近在学JSP网页,做到数据库连接那里,一直都出错,后来看了下原来是异常处理语句try...catch的问题,但是不知道为何,请各位帮忙解释一下~~~ <br><br><br>代码片段如下: </p> <pre name="code" class="java">String strSQLDomain = "localhost"; String strSQLPort = "1433"; String strDatabase = "test"; String strUser = "test"; String strPassword = "test"; Connection conn; //连接数据库 try { String strURL = "jdbc:sqlserver://" + strSQLDomain + ":" + strSQLPort + ";databaseName=" + strDatabase + ";user=" + strUser + ";password=" + strPassword; conn = DriverManager.getConnection ( strURL ); } catch ( Exception e ) { e.printStackTrace(); } <strong>conn.close(); //问题就出现在这里了</strong></pre> <p> 在Tomcat上调试的时候显示信息:“conn cannot be resolved”,如果我不用异常处理try...catch的话就正常通过</p><br /><strong>问题补充:</strong><br />如果我需要在catch之后插入一段查询代码然后再conn.close()呢?
sql server统计一个字段出现的次数的问题
从选课表和课程表中查询每门选修课的人数,查询结果中显示人数、课程名称,按人数降序排序 sc表 sid cid grade 2005216001 16020010 96.0 2005216001 16020011 80.0 2005216002 16020010 67.0 2005216003 16020012 78.0 2005216003 16020013 87.0 2005216003 16020014 85.0 2005216111 16020014 89.0 2005216111 16020015 90.0 2006216578 16020010 58.0 course表 cid cname credit 16020010 C语言程序设计 5 16020011 图像处理 3 16020012 网页设计 3 16020013 数据结构 5 16020014 数据库应用技术 8 16020015 专业英语 2 16020020 Java语言程序 8
谁能帮我解释下 这个代码 然后最好能让里面数据显示到listview中去
package com.httppost.main; import java.io.IOException; import java.io.InterruptedIOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class HttpPostActivity extends Activity { TextView textView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取main这个页面 Button jsonBtn = (Button) findViewById(R.id.get_array_json); //获取组件 jsonBtn.setOnClickListener(jsonClick); //监听按键 Button listBtn = (Button) findViewById(R.id.get_list_json); listBtn.setOnClickListener(listClick); } //获取单个json封装的数据 OnClickListener jsonClick = new OnClickListener() { //按键事件 @Override public void onClick(View v) { // TODO Auto-generated method stub ProgressDialog proDialog = ProgressDialog.show(v.getContext(), "", "正在获取数据……", true, true); //显示dialong HttpThread jsonThread = new HttpThread(v.getContext(), proDialog); // 创建一个Http线程 String url = "http://birsys.ceshiceshi.com/json_1.php"; //创建URL // url传递参数 String[] key = { "type" }; //传递参数 String[] value = { "0" }; // php页面返回的json键 String[] jsonKey = { "id", "username", "lat", "lon","type" }; //传递相应的参数 jsonThread.setUrl(url); jsonThread.setKey(key); jsonThread.setValue(value); jsonThread.setJsonKey(jsonKey); jsonThread.start(); textView= (TextView)findViewById(R.id.textview); textView.setText(url); } }; //获取带数组类型的封装 OnClickListener listClick = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ProgressDialog proDialog = ProgressDialog.show(v.getContext(), "", "正在获取数据……", true, true); HttpThread jsonThread = new HttpThread(v.getContext(), proDialog); String url = "http://birsys.ceshiceshi.com/json_2.php"; // url传递参数 String[] key = { "type" }; String[] value = { "1" }; // php页面返回的json键 String[] jsonKey = { "id", "username", "lat", "lon","type" }; String jsonName="json_2"; //传递相应的参数 jsonThread.setUrl(url); jsonThread.setKey(key); jsonThread.setValue(value); jsonThread.setJsonName(jsonName); jsonThread.setJsonKey(jsonKey); jsonThread.start(); } }; public class Json { // 解析单一的json封装,并返回字符串数组 /** * 参数说明: * 1.webContent 获取的网页封装的json格式数据 * 2.key 以数组形式组成的json的键名称 * */ public String[] getJSON(String webContent, String[] key) { int size = key.length; String[] s = new String[size]; try { JSONObject jsonObject = new JSONObject(webContent); for (int j = 0; j < size; j++) { s[j] = jsonObject.getString(key[j]); System.out.println(key[j] + "===string===" + jsonObject.getString(key[j])); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); s = null; } return s; } // 获取数组型的结构,返回ArrayList<HashMap<String, Object>>,方便listview中填充数据 /** * 参数说明: * 1.webContent 获取的网页封装的json格式数据 * 2.key 以数组形式组成的json的键名称 3.jsonName * 封装json数组数据的json名称 * public ArrayList<HashMap<String, Object>> getJSONArray(String webContent, String[] key, String jsonName) { ArrayList<HashMap<String, Object>> list; JSONArray jsonObject; try { jsonObject = new JSONObject(webContent).getJSONArray(jsonName); list = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < jsonObject.length(); i++) { JSONObject jsonObject2 = (JSONObject) jsonObject.opt(i); HashMap<String, Object> map = new HashMap<String, Object>(); for (int j = 0; j < key.length; j++) { map.put(key[j], jsonObject2.getString(key[j])); System.out.println(key[j] + "===" + jsonObject2.getString(key[j])); } list.add(map); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); list = null; } return list; } */ } public class HttpThread extends Thread{ private Context context; private ProgressDialog proDialog; private String url; private String []key; private String []value; private String []jsonKey; private String jsonName; private String []array; ArrayList<HashMap<String, Object>> list; public HttpThread(Context context,ProgressDialog proDialog){ this.context=context; this.proDialog=proDialog; } @Override public void run(){ Message msg = handler.obtainMessage(); HttpPostRequest post=new HttpPostRequest(); int res=post.requestHttp(url, key, value); String webContent=post.getWebContext(); msg.what=res; if(res==1){ //解析json Json json=new Json(); if(jsonName!=null) //解析数组型的json //list=json.getJSONArray(webContent, jsonKey, jsonName); //else //解析单个json值 array=json.getJSON(webContent, jsonKey); } handler.sendMessage(msg); } private Handler handler = new Handler() { // TODO Auto-generated constructor stub @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); int what=msg.what; Http_Status_Tips status=new Http_Status_Tips(); //返回成功数据时 if(what==1){ //处理数组型json if(list!=null){ int size=list.size(); String result=""; for(int i=0;i<size;i++){ int s=jsonKey.length; //迭代jsonKey数组值 for(int j=0;j<s;j++){ result+=jsonKey[j]+":"+list.get(i).get(jsonKey[j])+"\n"; } result+="\n"; } Toast.makeText(context, result, Toast.LENGTH_LONG).show(); } //处理单个字符json if(array!=null){ int arraySize=array.length; String rs=""; for(int k=0;k<arraySize;k++){ rs+=jsonKey[k]+":"+array[k]+"\n"; } Toast.makeText(context, rs, Toast.LENGTH_LONG).show(); if(array[0].equals("2")) Toast.makeText(context, array[0], Toast.LENGTH_LONG).show(); } } //根据服务器端返回数据,自定义提示 else if(what==2){ status.setTips("自定义提示2"); }//根据服务器端返回数据,自定义提示 else if(what==3){ status.setTips("自定义提示3"); } status.ShowHttpStatusTips(what, context,proDialog); } }; //activity界面传递的参数 public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String[] getKey() { return key; } public void setKey(String[] key) { this.key = key; } public String[] getValue() { return value; } public void setValue(String[] value) { this.value = value; } public String[] getJsonKey() { return jsonKey; } public void setJsonKey(String[] jsonKey) { this.jsonKey = jsonKey; } public String getJsonName() { return jsonName; } public void setJsonName(String jsonName) { this.jsonName = jsonName; } } public class HttpPostRequest { private String webContext; //返回请求内容 public String getWebContext() { return webContext; } public void setWebContext(String webContext) { this.webContext = webContext; } //该函数返回服务器访问的各种状态,并通过webContext传递获取的文本值 /** * 参数说明 * url 访问的网络地址 * key 传递参数的名称 * value 传递参数的值 * key 与value数组长度对应,即一对键值对,这样可以不限制参数传递的个数 * */ public int requestHttp(String url,String []key,String []value) { // TODO Auto-generated method stub int status = 0; DefaultHttpClient mHttpClient = new DefaultHttpClient(); HttpPost mPost = new HttpPost(url); List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>(); int size=key.length; for(int i=0;i<size;i++){ pairs.add(new BasicNameValuePair(key[i], value[i])); } try { mPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8)); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { mHttpClient.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, 60000); // Socket超时设置60s mHttpClient.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 60000);// 连接超时60s HttpResponse response = mHttpClient.execute(mPost); int res = response.getStatusLine().getStatusCode(); if (res == 200) { HttpEntity entity = response.getEntity(); if (entity != null) { String info = EntityUtils.toString(entity); setWebContext(info); status=1; } } else if (res == 404) { status = 404; } else if (res == 500) { status = 500; } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); status = 900; } catch (ConnectTimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); status = 901; } catch (InterruptedIOException e) { // TODO Auto-generated catch block e.printStackTrace(); status = 902; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); status = 903; } return status; } } public class Http_Status_Tips { //服务器端返回的状态提示 public static final String HTTP_0="其他错误"; public static final String HTTP_1=""; public static final String HTTP_404="404错误,请求链接无效"; public static final String HTTP_500="网络500错误,服务器端程序出错"; public static final String HTTP_900="网络传输协议出错"; public static final String HTTP_901="连接超时"; public static final String HTTP_902="网络中断"; public static final String HTTP_903="网络数据流传输出错"; public static final String HTTP_UNKONW="未知的错误"; //自定义的提示 private String tips; public void ShowHttpStatusTips(int status,Context context,ProgressDialog proDialog){ switch(status){ case 0: Toast.makeText(context, getTips(), Toast.LENGTH_LONG).show(); break; case 1: //Toast.makeText(context, getTips(), Toast.LENGTH_LONG).show(); break; case 2: Toast.makeText(context, getTips(), Toast.LENGTH_LONG).show(); break; case 3: Toast.makeText(context, getTips(), Toast.LENGTH_LONG).show(); break; case 404: Toast.makeText(context, HTTP_404, Toast.LENGTH_LONG).show(); break; case 500: Toast.makeText(context, HTTP_500,Toast.LENGTH_LONG).show(); break; case 900: Toast.makeText(context, HTTP_900, Toast.LENGTH_LONG).show(); break; case 901: Toast.makeText(context, HTTP_901, Toast.LENGTH_LONG).show(); break; case 902: Toast.makeText(context, HTTP_902, Toast.LENGTH_LONG).show(); break; case 903: Toast.makeText(context, HTTP_903, Toast.LENGTH_LONG).show(); break; default: Toast.makeText(context, HTTP_UNKONW, Toast.LENGTH_LONG).show(); break; } if(proDialog!=null) proDialog.dismiss(); } public String getTips() { return tips; } public void setTips(String tips) { this.tips = tips; } } }
如何让一个学生变成一个企业需要的人
我是在培训机构搞JAVA的,工作是带着学生做实训项目,但是带了1年多,不知道目前企业招人,会要那些人,很多学生说JAVA工作越来越难找了,公司的要求都很高,我无解,真不知道如何带学生,可以让他们变成不愁找不到工作的人。<br/><strong>问题补充</strong><br/><div class="quote_title">魔力猫咪 写道</div><div class="quote_div">我来说说当初我在培训学校最后实训做项目吧。 <br />一个是JavaSE的一个计费软件。老师给出基本的信息、一个基本的大框架和数据库基础结构就不管了。然后大家开始做。我们这个组算好的。我做数据库Manager,尽量把查询封装成视图、每个人分一个模块,然后大家埋头做。最后总算在3天结束的时候勉强能跑了。其中老师没做什么,只是简单解答一些基本的技术问题。 <br />毕业的时候是做个网上商城。老师给出静态网页、一个数据库设计。这次我是单打独斗。包括自己处理Hibernate。老师明显只是一个菜鸟,什么都不懂,连一些基本的Java问题都回答不好。我只好什么都自己做。虽然问题还不少,但是总算在7天内做出来了。 <br />号称的什么软件工厂之类的实训其实什么也没有。学生在这几天中什么也没有学到。就算勉强开发出来一个模块,也是玩具居多。老师在这里最多是一个技术解答器,而且还经常不称职。 <br />我的建议是延长这种实训项目的时间,1个月比较合适。老师一定要作为程序员和同学一起做。和学生一起解决技术问题,写编码给学生当榜样。向学生讲解为什么要这么写。这样的话,我觉得一个项目只要成功结束,多少能算菜鸟水平了。 <br />还有,我希望老师在讲课的时候不要写为了简单写脑残代码,比如在Action中写一大堆业务。这么讲Struts是简单了,但是学生很容易误会,认为业务要写在Action中,结果造成毕业后业务不是在Action就是Dao里头。 <br />课程方面除了基本的入门技术外,重构、面向对象设计、单元测试、领域驱动设计、敏捷开发管理都要讲授。 <br />还有就是老师的问题。现在培训学校的老师很多不合格。不是水平不够就是技术陈旧。需要充电更新。</div><br />自己看了你的回复了,确实,值得借鉴的地方有很多,我在这边培训机构,实训项目确实是1个月,但是学生的水平层次不齐,好的非常牛,但是烂的却也非常的烂,这是问题1,我尝试的教他们一些东西,但是很多学生听的云里雾里的,自己感觉有点浪费学生的时间,我的目的很明确,我不会教他们任何新的技术,因为技术太多,我也不知道教他们如何是好,我仅仅做到的是教会他们如何分析问题,如何去学习一门技术,不只知道这样作为学生来说是否是好的,我们的项目还是要给客户交付的,我也要保证软件的质量,所以很多东西让学生去搞,我害怕他们搞不好,难啊。。。 <br />1个月的时间,我到底该怎么教会他们,我水平有限,还往大家多提建议哇。
印刷行业进销存项目,用什么样的框架能开发效率更高学习成本维护成本更低
之前我也用java+servlet+jsp写过一个鞋材的进销存系统。写得也是很慢,同样一遇到客户的业务逻辑一变,为修改代码而疲于奔命。这时我除了php框架thinkphp,还想到了Spring+Struts+Hibernate等企业级的框架应用。 然后试图找来php,希望能发挥其敏捷的特性,为我加快开发速度和降低维护成本,做一个服饰连锁店销售管理软件──进货,配送到分店,分店销售,销售报表,管理员权限配置等模块,是从10月份开始的,用的是php原生态写法写的,发觉效率很低。 另外我去网上搜索了,java做进销存的应用,比php要多很多,那么是不是说明对于数学运算一些的应用,java强类型语言更有优势一些呢?而php流行的应用,多是互联网应用,以内容为主的,而不是数据为主的? 所以我现在很疑惑,我对java与php的熟练度都差不多,现在这个印刷进销存,包括以后还可能遇到的进销存,同样采用框架的前提下,是用java还是php的框架?另外弱弱的问一话,类似于进销存的应用──我明白离电信级别的应用差很远,那它能称得上企业级应用吗? [b]问题补充:[/b] TO:魔力猫咪 由于业务流程不熟,经常要改动数据库与业务逻辑。借此问一下,Java没有太多的互联网应用CMS,BBS,SNS,BLOG,这些基于内容的,而php遍地开花,但如果是基于数据运算的,进销存、财务做帐,就php的开源项目不太多了? [b]问题补充:[/b] TO:魔力猫咪 II "要判断一个应用是哪种程序开发的有时候不是那么好判断的。" 可能刚才没有表达清楚,不是说从后缀名判断网站是用什么语言去写成的,而是说从网上的开源项目看,互联网应用php居多,discuz,thinksns,dedecms等众cms。而其它“高级”的项目java居多,lucene,OFBiz等。 应该说业务逻辑不熟,这是双方的原因造成的。 在温州-瑞安这个县级市里,软件开发者与客户对于软件都没有经验。瑞安的it公司以做企业网站为主,技术人员的分工也不明确,因为只有1-3人。客户方面是:在过去,温州的企业主们都是靠手工来记录台帐,企业内部沟通与协同办公则是在家里吃晚饭时一家人在沟通。 我接到客户说,要做一个管理软件,不用太复杂,最简单的够用就可以,所以这个订单的金额也都很小,1W以内的。一分钱一分货,那么我们就会做得简单些,赶工期; 虽然客户先前说好只要某某功能,只是做的过程中,需求还要不断增加。所谓麻雀虽小,五脏俱全,管理权限,表单验证,敏感字符过滤,日志等等,统统得要。 依照你的分析,我要做的是,把客户的需求挖掘出来──因为客户自己往往说不清楚,自己的业务流程是怎么样的,软件需要做成什么样,毕竟他们只了解自己的业务。这样要做出一个个性化人性化的管理软件就对双方都提出了要求,因为双方的水平都有限。 [b]问题补充:[/b] 正如你所料,这类小项目已经失败过两回.一个鞋材的软件,开发了一个月时,出现了一些细节上的需求,一些原先我明知需要的但被我阉割的功能.如分页.序号.表单验证.于是这个项目搁浅至今.目前这个印刷的软件也是二次开发了,上次的完全不合他的需求,上次我也向这位老板建议说购买现成系统,他是说用不到那么的功能,不如花同样的钱订制一个小型的系统.我本着尝试下新技术的想法就做了,结果导致了两边都 不讨好. 在温州这个传统制造业发达而信息产业不发达的地区.组建一支技术队伍困难重重,上个月与一位网络公司老板讨论 [b]问题补充:[/b] TO 魔力猫咪 IV 讨论瑞安企业的信息化解决方案.瑞安有几千家的小企业.以往他们只做一个宣传型的网站,做一个丢一个,每次一个新单只是换换美工,来年顶多就是收个几百元的域名空间费,这样的做法只够维持公司存活.现在考虑是不是可以再挖掘这些企业的其他需求.从网站建设入手,可以免费试用,按月付费,抢占市场(域名在手上了).然后推销购买来的系统 oa 进销存 做帐 数据全部同步共享 包括前台网站产品数据, 公司从技术向服务转型.他的这种想法是不是就是你说的信息咨询服务? [b]问题补充:[/b] TO:魔 V 我是一名非科班出身始于爱好由vb开始的程序员..在零四年起,在校做学生信息,社团网站,参加大学生数模,算起来五年时间,虽然知道语言只是外在的.思想才是一通百通的.然而由于自卑与好奇,希望找到一门适合的万能语言,到处看语言c cpp asp delphi java php .net ,到现在都没有一门自己精通的语言,还是一个新门,很惭愧. 我知道自己的技术实力远不够,可一直没放弃过自己开发产品去营销的念头,所以经常会向身边搞it的boss讨教. 我猜想魔目前是prj leader类的职位吧,组织与编写文档多过写代码 [b]问题补充:[/b] TO:魔 VI 如果选择B/S管理软件,对于我,多少有点基础,从大学业余爱好做的事情到现在的工作,都在做网站。更重要的理由是,我身边市场大环境下,有这个需求。 其实我是很反感做对数据库CRUD的,更反感在ie,ff,chrome各种浏览间之间调试css,js,好像没有创作的成就感,很崇拜做桌面应用程序,图像处理如PS,播放软件如KMplayer,下载软件如Flashget,装机必备一流的软件如winrar,极品五笔,有那么多用户在用,该是一件多么了不起的事情。 去年开始盯上了java,这似乎有点万能的味道,嵌入式,b/s,c/s,都能看到它的身影,因为开源氛围比.net强,应用广多了。那个失败的鞋材进销存正是用它写的。只是它对我来说,有点难了。官方的core java几次拿起放下,thinking in java看了两次都停在了泛型那章。上个月买了只G4,换下了我用了2年多的nokia 3250,信誓旦旦地说要在android下写程序,很快又冷却掉了。一是上面说的java对我来说有点难,oo的思想进不了脑,java就是运用不了。二是,没有需求,不知道要做出一个什么软件,才是人们需要用的,再说android market上的太多好的软件都免费了。 [url]http://it577net.iteye.com/blog/554179[/url]正像我这篇博文里写的,我一直在找方向。首先要养活自己吧,工作与身边的私单,要用到内容管理的东西CMS,B/S数据库管理软件 所以CRUD还是要继续,Java 或 Android放在兴趣爱好的位置吧。 [b]问题补充:[/b] TO:魔 VII 感谢魔力猫咪一天来的热心而无私的回复。很多句话都一针见血地说到了我身上的问题,“我感觉你这几年没找到适合自己的技术发展路线,到处乱撞”;也分享了你的开发经验,“业务变更的修改考验的是你的项目组织能力和面向对象设计能力”,“开发不是做几个数据库表,然后直接CRUD就够了的”;提出建议:“与其累死累活做这种谁都不高兴的软件,不如尝试一下信息化咨询实施方面”。 你提到的两本书《走出软件作坊》、《软件随想录》,已经从CSDN下过来,正在看。这张问答网页我存到了我的硬盘了。虽然你自称不是leader,但程序员不单是技术而有了自己思考认识,足以让我小小的崇拜一下,期待以后我技术长进了再与你讨教切磋。再次感谢魔的启示,最后奉最我全部可用分20分。
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
有网友说:2020年还不懂Spring就放弃Java吧?
前言 Spring这个词对于开发者想必不会陌生,可能你每天都在使用Spring,享受着Spring生态提供的服务,理所当然的用着SpringIOC和SpringAOP去实现老板交给你的功能 ,唔 它就是这样使用的(类声明为Bean组件,然后注入),没错 能完成老板任务,没毛病。如果向你提问什么是Spring,Spring有什么核心功能呢,你会想:这太简单了,Spring就是框架嘛,Spring核...
良心推荐,我珍藏的一些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 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
《java面试宝典》三 类初始化和类实例化顺序
前言: 社长,4年api搬运工程师,之前做的都是一些框架的搬运工作,做的时间越长,越发感觉自己技术越菜,有同感的社友,可以在下方留言。现侧重于java底层学习和算法结构学习,希望自己能改变这种现状。 为什么大厂面试,更侧重于java原理底层的提问,因为通过底层的提问,他能看出一个人的学习能力,看看这个人的可培养潜力。随着springboot的流行,大部分的开发,起步就是springboot。也...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
立即提问