jsp请求插入数据库 出现重复数据

先简要说下代码

index.jsp 嵌入如下代码

[code="java"]<% String info = DataBaseUtil.getPlayerInfo(userId); %>

[/code]

DataBaseUtil.java
[code="java"]
public class DataBaseUtil {

private static JdbcTemplate jdbcTemplate = (JdbcTemplate) ApplicationContext.getBean("jdbcTemplate");  

    public static void getPlayerInfo(String userId)  
{  
          if(hasExist(userId))//查找user,看是否存在相应userId的信息  
          {  
             dosomething();  

          }else  
          {  
             insertUser();  
             dosomething();  
          }  
    }  [/code]

说明:
user有个自增的主键,另有个user_id,应该是唯一的但我没有加唯一索引

有时会插入user_id重复的记录

加入同步块后问题依旧

[code="java"]
synchronized(userId)

{

if(hasExist(userId))//查找数据库,看是否存在相应userId的信息

{

dosomething();

          }else  
          {  
             insertUser();  
             dosomething();  
          }  

} [/code]

9个回答

你可以把synchronized 提高到方法级别试试

你先看看 插入重复数据的原因,不要盲目加同步块。程序的同步和数据库的同步区别还是挺大的。你先说说什么时候会出现重复的?

我的意思是 userid是怎样插入进去的 插入进去的时候是不是会有重复情况。

你咋还不明白我的意思呢 你不是说数据库中userid有重复么,这个userid你是怎样生成的 在哪儿插入进去的 那段代码发出来

xn_sig_user 这个是页面上手动填写的 传过来的 是吗?假如是的话 我觉得你页面刷新后重复提交了 所以产生了两个结果

呵呵 不能用同步解决,用令牌来解决重复提交,网上有的 去看看

不行再留言吧 我qq上的人是满的

如果用oracle
那就用sequence产生序列号

其他数据库,也有办法产生序列号,就是麻烦些
如果实在不行
那就加唯一索引
否则产生重复数据麻烦

你debug一下,就知道了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
dbutils插入数据到mysql数据库报莫名其妙地NullpointerException
web层 public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //获取子类字节码对象 Class clazz = this.getClass(); System.out.println(this); //获取method方法名参数,作为获取方法对象的参数 String m = request.getParameter("method"); if(m==null){ m="index"; } System.out.println(m); //获取方法对象 Method method = clazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class); //让方法执行,返回值为请求转发路径 String s = (String) method.invoke(this, request, response); System.out.println(s); //判断次路径是否为空,不为空请求转发到次路径 if(s != null){ request.getRequestDispatcher(s).forward(request, response); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } public class OrderServlet extends BaseServlet { /** * 生成订单 * @param request * @param response * @return * @throws Exception */ public String add(HttpServletRequest request, HttpServletResponse response) throws Exception { //0判断用户是否登录 User user = (User) request.getSession().getAttribute("user"); if(user == null) { request.setAttribute("msg", "请先登录~~~~~"); return "/jsp/msg.jsp"; } //1封装数据 Order order = new Order(); //1.1 封装订单id order.setOid(UUIDUtils.getId()); //1.2封装订单时间 order.setOrderTime(new Date()); //1.3封装订单金额 //获取session中的购物车 Cart cart = (Cart) request.getSession().getAttribute("cart"); order.setTotal(cart.getTotalPrice()); //1.4封装订单项 //从购物车中获取购物车项,遍历购物车中的购物车项,得到每个订单项中的数据 for (CartItem cartItem : cart.getCartItem()) { OrderItem oi = new OrderItem(); //设置订单项id oi.setItemid(UUIDUtils.getId()); //设置订单项包含的商品 oi.setProduct(cartItem.getProduct()); //设置包含于那个订单 oi.setOrder(order); //设置订单项中的商品数 oi.setCount(cartItem.getCount()); //设置定单项的小计 oi.setSubTotal(cartItem.getSubTotal()); //添加订单项到order对 象中 order.getItems().add(oi); } //1.5设置用户 order.setUser(user); //调用service,完成对订单的添加 OrderService os = (OrderService) BeanFactory.getBean("OrderService"); os.add(order); //将order对象放入request域 request.setAttribute("order", order); //将以前的购物车中的东西,即将以前的从购物车清除了 request.getSession().removeAttribute("cart"); //请求转发到订单详情页面 return "/jsp/order_info.jsp"; } } service层 public interface OrderService { void add(Order order) throws Exception; } public class OrderServiceImpl implements OrderService { /** * 将订单数据添加到数据库中 * @throws Exception */ @Override public void add(Order order) throws Exception{ try { //1对者两个添加要加入事务 DataSourceUtils.startTransaction(); //2在order添加一条数据 OrderDao od = (OrderDao) BeanFactory.getBean("OrderDao"); od.add2Order(order); //在orderitem中添加n条数据 for (OrderItem oi : order.getItems()) { od.add2OrderItem(oi); } //提交事务 DataSourceUtils.commitAndClose(); } catch (Exception e) { e.printStackTrace(); //事务回滚 DataSourceUtils.rollbackAndClose(); throw e; } } } dao层 public interface OrderDao { void add2Order(Order order) throws Exception; void add2OrderItem(OrderItem oi) throws Exception; } public class OrderDaoImpl implements OrderDao{ /** * 添加一条订单 */ @Override public void add2Order(Order order) throws SQLException { QueryRunner qr = new QueryRunner(); String sql = "insert into order values(?, ?, ?, ?, ?, ?, ?, ?)"; qr.update(DataSourceUtils.getConnection(), sql, order.getOid(), order.getOrderTime(), order.getTotal(), order.getState(), order.getAddress(), order.getName(), order.getPhone(), order.getUser().getUid()); } /** * 添加一条订单项 */ @Override public void add2OrderItem(OrderItem oi) throws SQLException { QueryRunner qr = new QueryRunner(); String sql = "insert into orderitem values(?, ?, ?, ?, ?)"; qr.update(DataSourceUtils.getConnection(),sql, oi.getItemid(), oi.getCount(), oi.getSubTotal(), oi.getProduct().getPid(), oi.getOrder().getOid()); } } 出错后jsp页面显示不出,所报异常 java.lang.NullPointerException at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:397) at com.mysql.jdbc.ResultSetMetaData.getColumnType(ResultSetMetaData.java:275) at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:80) at org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:197) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:485) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:402) at com.local.dao.OrderDaoImpl.add2Order(OrderDaoImpl.java:19) at com.local.service.OrderServiceImpl.add(OrderServiceImpl.java:28) at com.local.web.servlet.OrderServlet.add(OrderServlet.java:82) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.local.web.servlet.BaseServlet.service(BaseServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.local.web.servlet.BaseServlet.service(BaseServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:397) at com.mysql.jdbc.ResultSetMetaData.getColumnType(ResultSetMetaData.java:275) at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:80) at org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:197) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:485) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:402) at com.local.dao.OrderDaoImpl.add2Order(OrderDaoImpl.java:19) at com.local.service.OrderServiceImpl.add(OrderServiceImpl.java:28) at com.local.web.servlet.OrderServlet.add(OrderServlet.java:82) ... 28 more 七月 08, 2017 12:01:24 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [OrderServlet] in context with path [/store] threw exception java.lang.RuntimeException at com.local.web.servlet.BaseServlet.service(BaseServlet.java:44) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) com.local.web.servlet.OrderServlet@8bc0b9 add 我用debug方式看了看了下order在dao用dbutils插入时的数据,数据是封装进去的,就name,address,phone,三项没有封装。并已经接图。以前在mysql中插入数据页是可以插入空数值的, 为何会报NullPointerException,困扰了好些时候了,各位大神有时间的话帮着看一下呀!
用javabean向数据库添加数据,请问为什么DoInsert.jsp一直报错
package com.javabean.user; //用于封装用户信息 public class User { private int id; private String username; private String password; private String type; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getType() { return type; } public void setType(String type) { this.type = type; } } ---------------------------------------------------------------------------------------- package com.javabean.user; //用户连接数据库------获得特定数据库的连接对象,使以后可以调查此方法来访问数据库 import java.sql.*; public class Conn { public static final String DBDRIVER="com.mysql.jdbc.Driver"; //包加类名 public static final String DBURL="jdbc:mysql://localhost:3306/test"; public static final String DBUSER="root"; public static final String DBPASS="123456"; public Connection getConn() { Connection conn=null; try { Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS); }catch(Exception e) { e.printStackTrace(); } return conn; } } --------------------------------------------------------------------------------------------- package com.javabean.user; //对数据库的增删改查操作 import com.javabean.user.Conn; import java.sql.*; import java.util.ArrayList; import java.util.List; import com.javabean.user.User; public class Userdao { //添加数据 public int InsertUser(User usera) { int rs=0; try { //驱动连接了数据库 Conn conn=new Conn(); Connection dbc=conn.getConn(); //插入语句 String sql_insert="insert into user(username,password,type) values(?,?,?)"; //将SQl语句预编译保存在pst中 PreparedStatement pst=dbc.prepareStatement(sql_insert); //为sql语句中的属性赋值 pst.setString(1,usera.getUsername()); pst.setString(2,usera.getPassword()); pst.setString(3,usera.getType()); //执行sql语句,将结果放在rs中 rs=pst.executeUpdate(); }catch(Exception e) { e.printStackTrace(); } return rs; } public List<User> SelectUser() { ResultSet rs=null; List<User> list=new ArrayList<User>(); try { Conn conn=new Conn(); Connection dbc=conn.getConn(); String sql_select="select * from user"; PreparedStatement pst=dbc.prepareStatement(sql_select); rs=pst.executeQuery(); while(rs.next()) { User user=new User(); user.setId(rs.getInt(1)); user.setUsername(rs.getString(2)); user.setPassword(rs.getString(3)); user.setType(rs.getString(4)); list.add(user); } }catch(Exception e) { e.printStackTrace(); } return list; } } ------------------------------------------------------------------------------------------------- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.javabean.user.Conn"%> <%@ page import="com.javabean.user.Userdao" %> <%@ page import="com.javabean.user.User" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>DoInsert</title> </head> <body> <%--对Inser.jsp页面中表单的提交请求进行处理,该页面将获取表单提交的所有信息,然后将信息添加到数据库--%> <%request.setCharacterEncoding("utf-8"); %> <jsp:useBean id="user" class="com.javabean.user.User"> <jsp:setProperty name="user" property="*"/> </jsp:useBean> <% Userdao userdaoa=new Userdao(); userdaoa.InsertUser(user); %> </body> </html>
关于客户端(Client)向服务器端(Server)进行http请求的时候出现的问题
最近在做一个Android应用,客户端需要向服务器端(jsp后台)提交一些信息,并得到服务器的反馈,再显示到界面上。 问题就出现在服务端接受到数据,插入数据库形成订单,处理完后返回成功与否的反馈信息给客户端时候。由于客户端主动关闭网络或由于信号不好,导致网络被迫关闭。 客户端无法接受到服务器反馈,而产生超时异常(此时servlet竟然不报异常),此时反馈给Android客户端的则是此操作失败;然而后台却由于刚刚数据插入操作成功而生成订单,管理人员在查看的时候发现订单存在则默认为客户操作成功。 如何避免以上情况呢?咨询过一些人: 1、有人说拉长客户端的超时时间,以降低概率;(治标不治本) 2、有人说做验证,客户端收到反馈后,再通知服务端,那么服务端才插入数据进数据库,其实这个并没解决问题,如果客户端在接受到反馈后网络就断开了,那通知服务器这一步就达不成,导致客户端以为自己下单成功,而服务端却没生成订单。(这种反馈机制是不完善的,只是循环走钢丝而已) 3、有人说做缓存,当网络再次通畅的时候,服务器的订单才正式生成。(这就破坏了订单的及时性,万一一星期后才开网络,这就导致了订单延迟了一星期) 4、各位csdn的大大意见。 对于此类问题,小弟的个人看法是: 1、servlet此时应该报异常,但是我就是没发现有异常,应该是学艺不精,不知道怎么catch这个异常,求各位不吝赐教。 2、http的机制本身就存在这种弊端,得走别的协议才能解决以上情况。(此为猜测,没有理论依据)不过本人觉得不太可能http存在弊端,因为据了解http是有反馈机制来处理这种情况的,但是不知道为啥servlet没报错。 求各位csdn的大大帮忙啊!
xmlhttprequest可以跨域访问吗?
做了一个AJAX项目, 现在在一个网站,例如192.168.1.100的一个网页上加载另外一个服务器192.168.1.101的信息,从上面document.write(192.168.1.101/scripts/test.js)一些JS文件(其中包含AJAX JS),我需要在知道这个页面关闭后的一些信息,插入数据到192.168.1.101里,也就是在192.168.1.100上的一个JSP文件关闭后,调用onunload方法里面的一个函数创建一个xmlhttprequest请求,其中url为http://192.168.1.101/***.jsp?*** ,然后提交一些基本信息来插入数据库... 我现在碰到的问题是,IE上报192.168.1.101拒绝访问 [b]问题补充:[/b] [quote]你可以把js文件放在另一个域(a.com)下面,然后加载这段js访问a.com[/quote] 有这个可能吗?貌似加载后还是放在当前域.使用权限应该还是在当前域
想让session不超时,对于我这个问题怎么处理?
我的test.jsp页面内容如下: [code="jsp"] <% String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); %> <html> <body> <input type="button" value="扫描" onclick="scan"> </body> </html> <!--扫描控件--> <OBJECT id='CltObj' width=0 height=0 classid="clsid:9DD39FAF-00E4-4890-97FC-086C4BD3DD2D"></OBJECT> <script> function createXmlHttpObj() { var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != "undefined") { xmlHttp = new XMLHttpRequest(); } return xmlHttp; //保持session不超时,每隔指定秒数数进行一次ajax访问页面 function keepSessionNotTimeOut(pointedSecond){ var __xmlHttp = createXmlHttpObj(); var __url='<%=basePath%>/common/index/blank.jsp'; //我在此页面已经有打印,访问没问题 var id=window.setInterval(function (){ __xmlHttp.open('get',__url,true); __xmlHttp.send(null); },pointedSecond*1000); } keepSessionNotTimeOut(1); function scan(){ var txt='<xml><id="23"></xml>' var retValue = CltObj.DocsNewCCZG(txt,''); //这是扫描空间的显示界面执行发法 //接下来就是我程序对扫描控件返回值retValue 做一些数据库插入 ,以后的代码省略 } } </script> [/code] [size=large][b]问题详细:[/b]因为扫描控件界面我可能要操作30分钟以上,甚至要达到3小时,而我设置的SESSION超时是30分钟,首先我不能把SESSION超时设置3个小时。当运行扫描完资料,超过30分钟,当我再拿控件返回的数据进行插入数据库操作,则会提示超时。 [b]我的设想:[/b]执行scan方法的时候,keepSessionNotTimeOut方法一直在进行保持session不超时的ajax提交,这样即便扫描控件使用3小时,也不会因为超时而不能对控件返回的数据进行数据库插入。 [b]实现的糟糕结论:[/b]当我点击“扫描”按钮之后,keepSessionNotTimeOut的发送请求就不会执行,怎么看到没有执行,是我在被请求页面进行的输出得出结果。但是当我,关闭扫描界面,接着执行keepSessionNotTimeOut方法。 请求各位帮忙,怎么实现我的设想?是不是<Object>对优先于ActiveXObject对象的执行?这是我的表象结论。[/size]
请教关于在struts2中传递参数,怎么做,谢谢
我有三个jsp,每个jsp都要填一些字段内容,我现在的做法是在每个jsp的action中将该jsp中的字段存入数据库,但这样存在两个问题,对数据库有压力,另外,在后两个jsp不是很好获得第一个jsp操作数据库时插入新的条目的id,后面就无法对应存入了。 现在,我想jsp1->jsp2>-jsp3,并在jsp3中获得3个jsp的参数,统一将这些 参数 存入数据库,请问如何传参,是否需要三个action呢,谢谢 另外问下,在数据库操作中,比如update xx value(...);之后,如何写SQL语句获得刚刚存入数据库的条目的id呢,谢谢 [b]问题补充:[/b] lovewhzlq 不过三个jsp页面之间的跳转要在同一个请求中跳转 怎么理解 能给出具体的action的配置么,谢谢 [b]问题补充:[/b] 我的前两个jsp表单都很多 [b]问题补充:[/b] lovewhzlq 那是不是三个jsp要请求三次action呀,能给出稍微具体点的配置么,谢谢 [b]问题补充:[/b] 那action的excute方法要执行三次? 可是这样的话我有些值还没传完整呢。。。 [b]问题补充:[/b] 在action中用method配置是么 另外,如果不配置方法,是不是三次执行action就执行三次excute呢 [b]问题补充:[/b] jansel 能具体讲下ScopeInterceptor么,我也想了解,没找到太合适的资源,谢谢 [b]问题补充:[/b] scopeInterceptor 主要起什么作用啊 [b]问题补充:[/b] 我上传了我的工程,数据库也包含在内,不过大家可以把登陆控制取消,改改,要不麻烦 主要有这么几个问题: 1.我在spread.action里面写了4个方法,可是从spread1.jsp->spread2.jsp就会出错,意思是没有input定义,可是我没发现action哪错啦 2.action权限拦截器貌似不起作用,直接进action还是可以,不知道怎么回事 3.登陆页面我启用了<sx:head/>,也配置了验证文件,但貌似无法异步验证,必须提交才行 spread.action [code="java"]package action; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import javax.imageio.ImageIO; import org.apache.struts2.ServletActionContext; import bean.DBUtil; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Spread extends ActionSupport { private static final long serialVersionUID = 1L; public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getTeachpoint() { return teachpoint; } public void setTeachpoint(String teachpoint) { this.teachpoint = teachpoint; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getMedia() { return media; } public void setMedia(String media) { this.media = media; } public String getFullname() { return fullname; } public void setFullname(String fullname) { this.fullname = fullname; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public Date getWritetime() { return writetime; } public void setWritetime(Date writetime) { this.writetime = writetime; } public Date getPublictime() { return publictime; } public void setPublictime(Date publictime) { this.publictime = publictime; } public String getLength() { return length; } public void setLength(String length) { this.length = length; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public String getPages() { return pages; } public void setPages(String pages) { this.pages = pages; } public String getColoredpages() { return coloredpages; } public void setColoredpages(String coloredpages) { this.coloredpages = coloredpages; } public String getWeight() { return weight; } public void setWeight(String weight) { this.weight = weight; } public String getMaterial() { return material; } public void setMaterial(String material) { this.material = material; } public String getIntro() { return intro; } public void setIntro(String intro) { this.intro = intro; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String getSavePath() { return ServletActionContext.getServletContext().getRealPath(savePath); } public void setSavePath(String savePath) { this.savePath = savePath; } public String getChennel() { return chennel; } public void setChennel(String chennel) { this.chennel = chennel; } public String getMarketprice() { return marketprice; } public void setMarketprice(String marketprice) { this.marketprice = marketprice; } public String getSaleprice() { return saleprice; } public void setSaleprice(String saleprice) { this.saleprice = saleprice; } public String getAccess() { return access; } public void setAccess(String access) { this.access = access; } private boolean copy(File src, File dst) { InputStream in = null; OutputStream out = null; try { try { in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE); out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE); byte[] buffer = new byte[BUFFER_SIZE]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } return true; } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } catch(Exception e) { e.printStackTrace(); } return false; } private boolean checkSize(File [] files) { BufferedImage image = null; for (int i = 0; i < files.length; i++) { try { image = ImageIO.read(files[i]); } catch(IOException e) { e.printStackTrace(); } String size = null; if (image.getWidth() > 260 || image.getHeight() > 260) { size ="上传图片宽高不能超过260*260"; ActionContext.getContext().put("size",size); return false; } } return true; } private String getRealPath(String imageString) { return getSavePath() + "\\" + imageString; } public String firstStep() { System.out.println(getLanguage()); System.out.println(getTeachpoint()); System.out.println(getLevel()); System.out.println(getType()); System.out.println(getTheme()); return SUCCESS; } public String secondStep() { System.out.println(getMedia()); System.out.println(getFullname()); System.out.println(getKeyword()); System.out.println(getAuthor()); System.out.println(getIsbn()); System.out.println(getWritetime()); System.out.println(getPublictime()); System.out.println(getLength()); System.out.println(getWidth()); System.out.println(getHeight()); System.out.println(getPages()); System.out.println(getColoredpages()); System.out.println(getWeight()); System.out.println(getMaterial()); System.out.println(getIntro()); return SUCCESS; } public String thirdStep() { File [] files = getUpload(); if (!checkSize(files)) return INPUT; for (int i = 0; i < files.length; i++) { imageFileName = new Date().getTime() + uploadFileName[i].substring(uploadFileName[i].lastIndexOf(".")); File imageFile = new File(getSavePath() + "\\" + imageFileName); copy(files[i],imageFile); realPath[i] = getRealPath(imageFileName); } System.out.println(realPath[0]); System.out.println(realPath[1]); return SUCCESS; } public String forthStep() { return SUCCESS; } private String language; private String type; private String teachpoint; private String level; private String theme; private String media; private String fullname; private String keyword; private String author; private String isbn; private Date writetime; private Date publictime; private String length; private String width; private String height; private String pages; private String coloredpages; private String weight; private String material; private String intro; private static final int BUFFER_SIZE = 16 * 1024; private File[] upload; private String[] uploadContentType; private String[] uploadFileName; private String imageFileName; private String savePath; private String [] realPath = new String[2]; private String chennel; private String marketprice; private String saleprice; private String access; } [/code] struts.xml [code="java"]<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.custom.i18n.resources" value="property.message" /> <!--不受权限控制的Action请求配置--> <package name="non-authority" extends="struts-default"> <action name="Login" class="action.LoginCheck"> <result name="success">/spread/spread1.jsp</result> <result name="error">/login.jsp</result> </action> </package> <package name="authority" extends="struts-default"> <interceptors> <interceptor name="authority" class="interceptor.AuthorityInterceptor" /> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="mydefault" /> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="FirstStep" class="action.Spread" method="firstStep"> <result name="success">/spread/spread2.jsp</result> </action> <action name="SecondStep" class="action.Spread" method="secondStep"> <result name="success">/spread/spread3.jsp </result> </action> <action name="ThirdStep" class="action.Spread" method="thirdStep"> <result name="success">/spread/spread4.jsp </result> <result name="input">/spread/spread3.jsp </result> <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/pjpeg</param> <param name="maximumSize">204800</param> </interceptor-ref> <param name="savePath">/upload</param> </action> <action name="ForthStep" class="action.Spread" method="forthStep"> <result name="success">/spread/spreadSucc.jsp</result> </action> </package> </struts> [/code] 权限拦截器 [code="java"]public class AuthorityInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; public String intercept(ActionInvocation invocation) throws Exception { ActionContext ctx = invocation.getInvocationContext(); String user = (String)ctx.getSession().get("username"); System.out.print(user); if (user != null) { return invocation.invoke(); } System.out.print(user); ctx.put("tip", "您还没有登录,请登陆系统"); return Action.LOGIN; } }[/code]怎么才能起作用呢,而且tip值怎么显示出来 web.xml [code="java"]<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>filter.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>accessFilter</filter-name> <filter-class>filter.AccessFilter</filter-class> </filter> <filter-mapping> <filter-name>accessFilter</filter-name> <url-pattern>/spread/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>modelIndex.jsp</welcome-file> </welcome-file-list> </web-app> [/code] 登陆页面 [code="java"]<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sx" uri="/struts-dojo-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <sx:head/> <title><s:text name="%{getText('loginPage')}" /></title> </head> <body> <div style="color: red"> <s:property value="noUser" /> <s:property value="tip" /> </div> <s:form action="Login" method="post"> <s:textfield label="%{getText('username')}" name="username" value="" cssStyle="width:150px;" /> <s:password label="%{getText('password')}" name="password" cssStyle="width:150px;" /> <sx:submit value="%{getText('login')}" validate="true" /> </s:form> </body> </html>[/code] 谢谢大家
spring mvc 事务失效问题
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p><span style="color: #000000;"><strong>同时向两个表插入数据,第一条成功,第二条数据插入失败,第一条未回滚,具体配置如下</strong></span></p> <p> </p> <p><span style="color: #000000; font-size: 18px;"><strong>applicationContext.xml 代码</strong></span></p> <p><span style="color: #000000;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span><br><span style="color: #000000;">&lt;beans xmlns="<a href="http://www.springframework.org/schema/beans"><span style="color: #000000;">http://www.springframework.org/schema/beans</span></a>"</span><br><span style="color: #000000;"> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span></a>" xmlns:tx="<a href="http://www.springframework.org/schema/tx"><span style="color: #000000;">http://www.springframework.org/schema/tx</span></a>"</span><br><span style="color: #000000;"> xmlns:context="<a href="http://www.springframework.org/schema/context"><span style="color: #000000;">http://www.springframework.org/schema/context</span></a>"</span><br><span style="color: #000000;"> xmlns:mvc="<a href="http://www.springframework.org/schema/mvc"><span style="color: #000000;">http://www.springframework.org/schema/mvc</span></a>" xmlns:util="<a href="http://www.springframework.org/schema/util"><span style="color: #000000;">http://www.springframework.org/schema/util</span></a>"</span><br><span style="color: #000000;"> xmlns:aop="<a href="http://www.springframework.org/schema/aop"><span style="color: #000000;">http://www.springframework.org/schema/aop</span></a>"</span><br><span style="color: #000000;"> xsi:schemaLocation="<a href="http://www.springframework.org/schema/aop"><span style="color: #000000;">http://www.springframework.org/schema/aop</span></a> <a href="http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/aop/spring-aop-3.1.xsd</span></a></span><br><span style="color: #000000;">  <a href="http://www.springframework.org/schema/mvc"><span style="color: #000000;">http://www.springframework.org/schema/mvc</span></a> <a href="http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd</span></a></span><br><span style="color: #000000;">  <a href="http://www.springframework.org/schema/beans"><span style="color: #000000;">http://www.springframework.org/schema/beans</span></a> <a href="http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/beans/spring-beans-3.1.xsd</span></a></span><br><span style="color: #000000;">  <a href="http://www.springframework.org/schema/util"><span style="color: #000000;">http://www.springframework.org/schema/util</span></a> <a href="http://www.springframework.org/schema/util/spring-util-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/util/spring-util-3.1.xsd</span></a></span><br><span style="color: #000000;">  <a href="http://www.springframework.org/schema/tx"><span style="color: #000000;">http://www.springframework.org/schema/tx</span></a> <a href="http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/tx/spring-tx-3.1.xsd</span></a></span><br><span style="color: #000000;">  <a href="http://www.springframework.org/schema/context"><span style="color: #000000;">http://www.springframework.org/schema/context</span></a> <a href="http://www.springframework.org/schema/context/spring-context-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/context/spring-context-3.1.xsd</span></a>"&gt;</span></p> <p><span style="color: #000000;"> &lt;!--将@Controller的注解排除掉 --&gt;</span><br><span style="color: #000000;"> &lt;context:component-scan base-package="com"&gt;</span><br><span style="color: #000000;">  &lt;context:exclude-filter type="annotation"</span><br><span style="color: #000000;">   expression="org.springframework.stereotype.Controller" /&gt;</span><br><span style="color: #000000;"> &lt;/context:component-scan&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 读取配置文件 --&gt;</span><br><span style="color: #000000;"> &lt;util:properties id="settings"</span><br><span style="color: #000000;">  location="classpath:config/global.properties" /&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 读取数据库配置文件 --&gt;</span><br><span style="color: #000000;"> &lt;bean id="configProperties"</span><br><span style="color: #000000;">  class="org.springframework.beans.factory.config.PropertiesFactoryBean"&gt;</span><br><span style="color: #000000;">  &lt;property name="locations"&gt;</span><br><span style="color: #000000;">   &lt;list&gt;</span><br><span style="color: #000000;">    &lt;value&gt;classpath:config/jdbc.properties&lt;/value&gt;</span><br><span style="color: #000000;">   &lt;/list&gt;</span><br><span style="color: #000000;">  &lt;/property&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;bean id="propertyConfigurer"</span><br><span style="color: #000000;">  class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"&gt;</span><br><span style="color: #000000;">  &lt;property name="properties" ref="configProperties" /&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;mvc:annotation-driven /&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 数据源 --&gt;</span><br><span style="color: #000000;"> &lt;bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"&gt;</span><br><span style="color: #000000;">  &lt;property name="driver" value="${driver}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="driverUrl" value="${driverUrl}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="user" value="${user}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="password" value="${password}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="alias" value="proxool.aidecenter" /&gt;</span><br><span style="color: #000000;">  &lt;property name="maximumActiveTime" value="300000" /&gt;</span><br><span style="color: #000000;">  &lt;property name="prototypeCount" value="0" /&gt;</span><br><span style="color: #000000;">  &lt;property name="maximumConnectionCount" value="${maximumConnectionCount}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="minimumConnectionCount" value="${minimumConnectionCount}" /&gt;</span><br><span style="color: #000000;">  &lt;property name="simultaneousBuildThrottle" value="50" /&gt;</span><br><span style="color: #000000;">  &lt;property name="houseKeepingTestSql" value="select form CURRENT_DATE" /&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;!-- JDBC模版 --&gt;</span><br><span style="color: #000000;"> &lt;bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate"&gt;</span><br><span style="color: #000000;">  &lt;property name="dataSource" ref="dataSource" /&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;bean</span><br><span style="color: #000000;">  class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"&gt;</span><br><span style="color: #000000;">  &lt;property name="staticMethod" value="com.common.database.SpringDB.setJdbcTemplate" /&gt;</span><br><span style="color: #000000;">  &lt;property name="arguments" ref="jdbc" /&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;!-- 事务管理器 --&gt;</span><br><span style="color: #000000;"> &lt;bean id="transactionManager"</span><br><span style="color: #000000;">  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;</span><br><span style="color: #000000;">  &lt;property name="dataSource"&gt;</span><br><span style="color: #000000;">   &lt;ref local="dataSource" /&gt;</span><br><span style="color: #000000;">  &lt;/property&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;!-- 事务模板 --&gt;</span><br><span style="color: #000000;"> &lt;bean id="transactionTemplate"</span><br><span style="color: #000000;">  class="org.springframework.transaction.support.TransactionTemplate"&gt;</span><br><span style="color: #000000;">  &lt;property name="transactionManager"&gt;</span><br><span style="color: #000000;">   &lt;ref local="transactionManager" /&gt;</span><br><span style="color: #000000;">  &lt;/property&gt;</span><br><span style="color: #000000;"> &lt;/bean&gt;</span><br><span style="color: #000000;"> &lt;aop:config&gt;</span><br><span style="color: #000000;">  &lt;aop:pointcut id="transactionPointcut"</span><br><span style="color: #000000;">   expression="execution(* com.service..*.*(..))" /&gt;</span><br><span style="color: #000000;">  &lt;aop:advisor pointcut-ref="transactionPointcut"</span><br><span style="color: #000000;">   advice-ref="advice" /&gt;</span><br><span style="color: #000000;"> &lt;/aop:config&gt;</span><br><span style="color: #000000;"> &lt;tx:advice id="advice" transaction-manager="transactionManager"&gt;</span><br><span style="color: #000000;">  &lt;tx:attributes&gt;</span><br><span style="color: #000000;">   &lt;!-- 读取数据方法,一般采用只读事务 --&gt;</span><br><span style="color: #000000;">   &lt;tx:method name="find*" read-only="true" /&gt;</span><br><span style="color: #000000;">   &lt;!--以下方法,如save,update,delete等对数据库进行写入操作的方法,当产生Exception时进行回滚 --&gt;</span><br><span style="color: #000000;">   &lt;tx:method name="save*" propagation="REQUIRED" /&gt;</span><br><span style="color: #000000;">   &lt;tx:method name="update*" /&gt;</span><br><span style="color: #000000;">   &lt;tx:method name="delete*" /&gt;</span><br><span style="color: #000000;">  &lt;/tx:attributes&gt;</span><br><span style="color: #000000;"> &lt;/tx:advice&gt;</span><br><span style="color: #000000;"> &lt;tx:annotation-driven transaction-manager="transactionManager"</span><br><span style="color: #000000;">  proxy-target-class="true" /&gt;</span><br><span style="color: #000000;">&lt;/beans&gt;</span></p> <p> </p> <p><span style="color: #000000; font-size: 18px;"><strong>dispatcher-servlet.xml</strong></span></p> <p><span style="color: #000000;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;beans xmlns="<a href="http://www.springframework.org/schema/beans"><span style="color: #000000;">http://www.springframework.org/schema/beans</span></a>"<br> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span></a>" xmlns:context="<a href="http://www.springframework.org/schema/context"><span style="color: #000000;">http://www.springframework.org/schema/context</span></a>"<br> xmlns:cache="<a href="http://www.springframework.org/schema/cache"><span style="color: #000000;">http://www.springframework.org/schema/cache</span></a>" xmlns:aop="<a href="http://www.springframework.org/schema/aop"><span style="color: #000000;">http://www.springframework.org/schema/aop</span></a>"<br> xmlns:tx="<a href="http://www.springframework.org/schema/tx"><span style="color: #000000;">http://www.springframework.org/schema/tx</span></a>" xmlns:jdbc="<a href="http://www.springframework.org/schema/jdbc"><span style="color: #000000;">http://www.springframework.org/schema/jdbc</span></a>"<br> xmlns:mvc="<a href="http://www.springframework.org/schema/mvc"><span style="color: #000000;">http://www.springframework.org/schema/mvc</span></a>"<br> xsi:schemaLocation="<br>      <a href="http://www.springframework.org/schema/beans"><span style="color: #000000;">http://www.springframework.org/schema/beans</span></a>  <br>            <a href="http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/beans/spring-beans-3.1.xsd</span></a>  <br>            <a href="http://www.springframework.org/schema/context"><span style="color: #000000;">http://www.springframework.org/schema/context</span></a>  <br>            <a href="http://www.springframework.org/schema/context/spring-context-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/context/spring-context-3.1.xsd</span></a>  <br>            <a href="http://www.springframework.org/schema/tx"><span style="color: #000000;">http://www.springframework.org/schema/tx</span></a>  <br>            <a href="http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/tx/spring-tx-3.1.xsd</span></a>  <br>            <a href="http://www.springframework.org/schema/jdbc"><span style="color: #000000;">http://www.springframework.org/schema/jdbc</span></a>  <br>            <a href="http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd</span></a><br>            <a href="http://www.springframework.org/schema/cache"><span style="color: #000000;">http://www.springframework.org/schema/cache</span></a> <br>            <a href="http://www.springframework.org/schema/cache/spring-cache-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/cache/spring-cache-3.1.xsd</span></a><br>            <a href="http://www.springframework.org/schema/mvc"><span style="color: #000000;">http://www.springframework.org/schema/mvc</span></a> <br>      <a href="http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"><span style="color: #000000;">http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd</span></a>"<br> default-autowire="byName"&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 将@Service注解给去掉 --&gt;<br> &lt;context:component-scan base-package="com.controller"&gt;<br>  &lt;context:include-filter type="annotation"<br>   expression="org.springframework.stereotype.Controller" /&gt;<br>  &lt;context:exclude-filter type="annotation"<br>   expression="org.springframework.stereotype.Service" /&gt;<br> &lt;/context:component-scan&gt;</span></p> <p><span style="color: #000000;"> &lt;bean<br>  class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"&gt;<br>  &lt;property name="useSuffixPatternMatch" value="true" /&gt;<br>  &lt;property name="interceptors"&gt;<br>   &lt;list&gt;<br>    &lt;ref bean="sessionInterceptor"&gt;&lt;/ref&gt;<br>   &lt;/list&gt;<br>  &lt;/property&gt;<br> &lt;/bean&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt;<br> &lt;bean<br>  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt;<br>  &lt;property name="messageConverters"&gt;<br>   &lt;list&gt;<br>    &lt;ref bean="mappingJacksonHttpMessageConverter" /&gt;<br>    &lt;ref bean="stringHttpMessageConverter" /&gt;<br>   &lt;/list&gt;<br>  &lt;/property&gt;<br> &lt;/bean&gt;<br> &lt;!-- 负责读写字符串格式的数据 --&gt;<br> &lt;bean id="stringHttpMessageConverter"<br>  class="org.springframework.http.converter.StringHttpMessageConverter"&gt;<br>  &lt;property name="supportedMediaTypes"&gt;<br>   &lt;list&gt;<br>    &lt;value&gt;text/plain;charset=UTF-8&lt;/value&gt;<br>   &lt;/list&gt;<br>  &lt;/property&gt;<br> &lt;/bean&gt;<br> &lt;!-- 负责读写入json格式的数据 --&gt;<br> &lt;bean id="mappingJacksonHttpMessageConverter"<br>  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"&gt;<br>  &lt;property name="supportedMediaTypes"&gt;<br>   &lt;list&gt;<br>    &lt;value&gt;application/json;charset=UTF-8&lt;/value&gt;<br>   &lt;/list&gt;<br>  &lt;/property&gt;<br> &lt;/bean&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 拦截器 --&gt;<br> &lt;bean id="sessionInterceptor" class="com.interceptor.SessionInterceptor"&gt;&lt;/bean&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt;<br> &lt;bean id="viewResolver"<br>  class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;<br>  &lt;property name="viewClass"<br>   value="org.springframework.web.servlet.view.JstlView" /&gt;<br>  &lt;property name="prefix" value="" /&gt;<br>  &lt;property name="suffix" value=".jsp" /&gt;<br> &lt;/bean&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 启用缓存注解功能,该注解一定要声明在Spring主配置文件中才会生效 --&gt;<br> &lt;cache:annotation-driven cache-manager="cacheManager" /&gt;<br> &lt;bean id="cacheManager"<br>  class="org.springframework.cache.concurrent.ConcurrentMapCacheManager" /&gt;</span></p> <p><span style="color: #000000;"> &lt;!-- 资源文件加载 --&gt;<br> &lt;mvc:resources mapping="/upload/**" location="/upload/"<br>  cache-period="31556926" /&gt;<br> &lt;mvc:resources mapping="/libs/**" location="/libs/"<br>  cache-period="31556926" /&gt;<br>&lt;/beans&gt;<strong><br>上传的图片为包结构</strong></span></p> <p> </p> <p><span style="color: #000000;"><strong>Service的注解在接口实现类中</strong></span></p> <p><span style="color: #000000;"><strong>@Service<br>@Transactional<br>public class SiteServiceImpl implements SiteService {</strong></span></p> <p><span style="color: #000000;"><strong>.......</strong></span></p> <p><span style="color: #000000;"><strong>}</strong></span></p> <p> </p> <p><span style="color: #000000;">请问是哪里配置错了么</span></p> </div>
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】
声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
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)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻… 作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候,就被它的美貌给吸引住了… 就在我用了一段时间之后,我坚决的卸载了电脑上其它碍眼的浏览器,并觉得在之前的搬砖生涯中,我不配当哥,我只配是个沙雕… ...
作为一名大学生,如何在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,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
从顶级黑客到上市公司老板
一看标题,很多老读者就知道我在写什么了。今天Ucloud成功上市,季昕华成为我所熟悉的朋友里又双叒叕一个成功上市的案例。我们认识大概是十五年多吧,如果没记错,第一次见面应该是2004年,...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。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,然后判断是否有余数,直到 ...
立即提问