AJAX动态生成的table如何让用JS或jquery绑定click事件

如何写JQuery或js
如何写JQuery或js让每个TH都能绑定click事件

5个回答

添加完后查找th绑定

 $('#chaxunxinxi').html(html).find('th').click(function(){
//............
})
qq_34439125
别来无恙`` 如果我还想给td加click事件是不是在之后在加click就行了?
3 年多之前 回复
qq_34439125
别来无恙`` 大神你来拉太爱你了!!!!
3 年多之前 回复

用jquery动态创建th,然后给创建的th元素绑定事件,不要去填充html

qq_34439125
别来无恙`` 怎么动态创建呢
3 年多之前 回复

可以在success里面添加click事件,$("#cxxm th").click(function(){ ... });

u013181058
圣-雄霸天下 回复追随内心的灵魂: 应该是可以的,你怎么写的
3 年多之前 回复
qq_34439125
别来无恙`` 不行啊
3 年多之前 回复

用on方法绑定添加click事件

qq_34439125
别来无恙`` 这个也不行啊我试过了
3 年多之前 回复

大神你又来拉太爱你了!!!!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
javascript jquery加载异常
``` <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="../js/jquery-3.1.1.js"></script> <script type="text/javascript" src="../bootstrap/js/bootstrap.js"></script> <script type="text/javascript" src="../bootstrap/js/bootstrap-datetimepicker.js"></script> <script type="text/javascript" src="../bootstrap/js/locales/bootstrap-datetimepicker.zh-CN.js"></script> <script type="text/javascript" src="../js/jquery.cookie.js"></script> <script type="text/javascript" src="../js/pages/main.js"></script> <link rel="stylesheet" href="../bootstrap/css/bootstrap-datetimepicker.css"> <link rel="stylesheet" href="../style/main.css"> <!-- 支持屏幕 --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <style> *{ font-family:"微软雅黑"; } .form_datetime{ position:relative; z-index:9999; } </style> <script type="text/javascript"> $(function(){ //分页显示 //上一页 var n=0; list(n); $("#pageup").click(function(){ n=n-10; if(n<0){ n=0; } $("#table_content").empty(); list(n); }); $("#page_1").click(function(){ n=0; $("#table_content").empty(); list(n); }); $("#page_2").click(function(){ n=10; $("#table_content").empty(); list(n); }); $("#page_3").click(function(){ n=20; $("#table_content").empty(); list(n); }); $("#page_4").click(function(){ n=30; $("#table_content").empty(); list(n); }); $("#page_5").click(function(){ n=40; $("#table_content").empty(); list(n); }); $("#pagedown").click(function(){ n=n+10; $("#table_content").empty(); list(n); }); //新增 $("#btn_new_save").click(function(){ var info_type=$("#iframe_new").contents().find("#info_type").val();//信息类别 alert(info_type); var type=$("#iframe_new").contents().find("#type").val();//产品类别 var type=$("#iframe_new").contents().find("#type").val();//类型 var release1=$("#iframe_new").contents().find("#release1").val();//发布时间 var effective_s=$("#iframe_new").contents().find("#effective_s").val();//开始时间 var effective_o=$("#iframe_new").contents().find("#effective_o").val();//结束时间 var compete=$("#iframe_new").contents().find("#compete").val();//竞争对手 var region=$("#iframe_new").contents().find("#region").val();//地区 var product=$("#iframe_new").contents().find("#product").val();//产品 var source=$("#iframe_new").contents().find("#source").val();//信息来源 var content=$("#iframe_new").contents().find("#content").val();//主要内容 var impact=$("#iframe_new").contents().find("#impact").val();//影响 $.ajax({ url:"http://localhost:8080/analysis/info/insertall.do", type:"post", data:{"info_type":info_type,"type":type,"release1":release1,"effective_s":effective_s,"effective_o":effective_o, "compete":compete,"region":region,"product":product,"source":source,"content":content,"impact":impact }, resultType:"json", success:function(result){ window.location.href="main.html"; } }); }); //删除 $("#btn_delete").click(function(){ $("input:checkbox[name='checkbox']:checked").each(function(){ id=$(this).val(); $.ajax({ url:"http://localhost:8080/analysis/info/deleteonebyid.do", type:"post", data:{"id":id}, resultType:"json", success:function(){ window.location.href="main.html"; } }); }); }); //修改 $("#modify_btn").click(function(){ var a=0; $("input:checkbox[name='checkbox']:checked").each(function(){ a=a+1; id=$(this).val(); if(a==1){ $.cookie("id",id); }else{ alert("请取消多选"); window.location.href="main.html"; } }); var modify2="<iframe class='embed-responsive-item' src='main/modify.html' id='iframe_modify' name='iframe_modify'></iframe>"; var $modify2=$(modify2); $("#modify_1").append($modify2); $("#btn_modify_save").click(function(){ var info_type=$("#iframe_modify").contents().find("#info_type").val();//信息类别 var type=$("#iframe_modify").contents().find("#type").val();//产品类别 var release1=$("#iframe_modify").contents().find("#release1").val();//发布时间 var effective_s=$("#iframe_modify").contents().find("#effective_s").val();//开始时间 var effective_o=$("#iframe_modify").contents().find("#effective_o").val();//结束时间 var compete=$("#iframe_modify").contents().find("#compete").val();//竞争对手 var region=$("#iframe_modify").contents().find("#region").val();//地区 var product=$("#iframe_modify").contents().find("#product").val();//产品 var source=$("#iframe_modify").contents().find("#source").val();//信息来源 var content=$("#iframe_modify").contents().find("#content").val();//主要内容 var impact=$("#iframe_modify").contents().find("#impact").val();//影响 $.ajax({ url:"http://localhost:8080/analysis/info/updatebyid.do", type:"post", data:{"id":id,"info_type":info_type,"type":type,"release1":release1,"effective_s":effective_s,"effective_o":effective_o, "compete":compete,"region":region,"product":product,"source":source,"content":content,"impact":impact }, resultType:"json", success:function(result){ window.location.href="main.html"; } }); }); }); //查询 $("#search-btn").click(function(){ var selectdata=$("#selectdata").val();//查询下拉选数据 var cont=$("#textdata").val(); $.cookie("selectdata",selectdata); $.cookie("cont",cont); $(".right").empty(); var ifra="<div class='embed-responsive embed-responsive-16by9'>"; ifra+="<iframe class='embed-responsive-item' src='main/search.html'></iframe>"; ifra+="</div>"; var $ifra=$(ifra); $(".right").append($ifra); }); }); </script> <link rel="stylesheet" href="../bootstrap/css/bootstrap.css"> </head> <body> <!-- top --> <div class="row"> <div class="col-md-12" style="height:50px;"> <img src="../image/logo.gif" class="img-responsive" alt="Responsive image" id="logo"> </div> </div> <div class="row"> <!-- left --> <div class="left"> <img src="../image/User.png" class="img-responsive center-block" alt="Responsive image"> <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span class="glyphicon glyphicon-th-large"></span> 情报信息 <span class="caret"></span> </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenu2"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </div> </div> <!-- right --> <div class="right" id="right2"> <div id="info"> <ol class="breadcrumb"> <span class="glyphicon glyphicon-home"></span> <li><a href="#">情报信息</a></li> <li><a href="#" class="active">信息汇总</a></li> </ol> </div> <div id="function_a"> <!-- new delete modify --> <div class="btn-group" role="group" aria-label="..."> <button type="button" class="btn btn-default" data-toggle="modal" data-target="#new" id="new_btn"> <span class="glyphicon glyphicon-pencil"></span> 新建 </button> <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modify" id="modify_btn"> <span class="glyphicon glyphicon-file"></span> 修改 </button> <button type="button" class="btn btn-default" id="btn_delete"> <span class="glyphicon glyphicon-trash"></span> 删除 </button> </div> <!-- 搜索 --> <form class="form-inline pull-right"> <div class="form-group"> <select class="form-control" id="selectdata"> <option value="1">模糊查询</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <input type="text" class="form-control" placeholder="请输入内容" id="textdata"> </div> <button type="submit" class="btn btn-default" id="search-btn"> <span class="glyphicon glyphicon-search"></span> </button> </form> <!-- 动态具体内容 --> <div id="table_content"> </div> <!-- 分页 --> <nav aria-label="Page navigation" id="table_content2"> <ul class="pagination "> <li> <a href="#" aria-label="Previous" id="pageup"> <span aria-hidden="true">&laquo;</span> </a> </li> <li><a href="#" id="page_1">1</a></li> <li><a href="#" id="page_2">2</a></li> <li><a href="#" id="page_3">3</a></li> <li><a href="#" id="page_4">4</a></li> <li><a href="#" id="page_5">5</a></li> <li> <a href="#" aria-label="Next" id="pagedown"> <span aria-hidden="true">&raquo;</span> </a> </li> </ul> </nav> <!-- 模态框绑定数据 --> <!-- 新建 --> <div class="modal fade" id="new" tabindex="-1" role="dialog" aria-labelledby="newLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-lable="Close"> <span aria-hidden="true">&times;</span> </button> <h4 class="modal-title" id="newLabel">新建</h4> </div> <div class="modal-body" id="new_body"> <div class="embed-responsive embed-responsive-4by3"> <iframe class="embed-responsive-item" src="main/new.html" id="iframe_new" name="iframe_new"></iframe> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary" id="btn_new_save">保存</button> </div> </div> </div> </div> <!-- 修改 --> <div class="modal fade" id="modify" tabindex="-1" role="dialog" aria-labelledby="modifyLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"> &times;</span></button> <h4 class="modal-title" id="modifyLabel">修改</h4> </div> <div class="modal-body"> <div class="embed-responsive embed-responsive-4by3" id="modify_1"> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary" id="btn_modify_save">保存</button> </div> </div> </div> </div> </div> </div> </div> </body> </html> ``` 当我点击第二部分的search-btn2按钮后,浏览器又重新加载了第一部分,求大神帮忙解决,把js放在页面最后也是同样的效果。
Jquery的DataTable可以从缓存里面绑定数据吗?
that.WarrantyStatusEditCtrl = function($scope, $compile, $routeParams, $location, $log, apiService, columns, cacheService, commonUtils, DT_OPTION, WARRANTY_HEADER, $rootScope) { $scope.header = WARRANTY_HEADER.STATUS_EDIT; $scope.base = base; var updateObj = {}; var columnDefs = []; var currentStatus = $routeParams.status.substr(1); // 隐藏データチエツクコメント、操作 if (currentStatus === "4" || currentStatus === "5") { columnDefs = [{ "targets": [5], "visible": false, "searchable": false }, { "targets": [6], "visible": false, "searchable": false }]; } // Show【FJ納品手続き】Button if (currentStatus === "3") { $scope.showScheduleBtn = true; } $scope.queryParams = cacheService.cache('tstp.queryParams'); $scope.queryParams.ngFlg = [currentStatus]; $scope.queryParams.tscd = $routeParams.tscd; $scope.queryParams.tpcd = $routeParams.tpcd; var jumpFromCtrl = $rootScope.oldRoute.substr($rootScope.oldRoute.length - 12) ==='/edit/fillin'; if (jumpFromCtrl === false) { $scope.table = $('#dtList').DataTable($.extend({}, DT_OPTION, { // IF14102: 保証作業費請求状況の確認 ajax: apiService.dtAjax("/getRepairDetailInfo", $scope.queryParams, 'e.queryParams', function(data, info) { if (info) { $scope.tsnm = info.tsnm; $scope.tpnm = info.tpnm; cacheService.cache("tstp", { tscd: $routeParams.tscd, tpcd: $routeParams.tpcd, tsnm: $scope.tsnm, tpnm: $scope.tpnm }); } $scope.$apply(); cacheService.cache('warrantyCache.data', data); return data; }), columns: columns.warrantyStatusEdit('/warranty'), columnDefs: columnDefs, createdRow: function(row, data, index) { $compile(angular.element(row).contents())($scope); var selector = $(row).find('select').val(data.ngFlg); var input = $(row).find('input'); if (updateObj[data.mrNo]) { data = updateObj[data.mrNo]; var ngFlg = data.ngFlg; selector.val(ngFlg); if (ngFlg === "2") { input.val(data.ngRiyu); } } if (data.ngFlg !== "2") { input.prop("disabled", true).addClass("readonly"); } selector.on('change', function() { var selectVal = selector.val(); if (selectVal === "2") { input.prop("disabled", false).removeClass("readonly"); } else { input.prop("disabled", true).addClass("readonly"); input.val(""); data.ngRiyu = ""; } if (selectVal !== currentStatus || selectVal === "2") { data.ngFlg = selectVal; updateObj[data.mrNo] = data; } else if (selectVal === currentStatus) { delete updateObj[data.mrNo]; } groupObj(updateObj); }); input.on('change', function() { data.ngRiyu = input.val(); updateObj[data.mrNo] = data; groupObj(updateObj) }); var checkBtn = $(".check button", row); checkBtn.on('click', function() { cacheService.cache('warrantyCache.warranty', data); $location.path("/warranty/" + data.mrNo + "/check"); $scope.$apply(); }); $scope.$apply(); } })); } else { readCache(); } columns: columns.warrantyStatusEdit('/warranty'),//模板 readCache();//读取缓存里面的数据,我用的angularjs的双向绑定可以显示数据,但是工作量比较大模板判断比较多,所有请教下各位大神.
怎么将面向过程的JS代码改写成面向对象的JS代码?
html代码 ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>购物车</title> <link rel="stylesheet" type="text/css" href="style/shopping.css"> <script type="text/javascript" src="style/jquery-3.3.1.js"></script> <script> $(function(){ $.ajax({ type: "GET", url: "./style/goods.json", dataType: "json", success:function(result){ add(result); } }); }) function add(result){ $.each(result.data, function(obj){ //console.log(result.data[obj].count); let str = '<tr>' + '<td><input type="checkbox" name="select"></td>' + '<td>' + result.data[obj].name + '</td>' + '<td>¥<strong>' + result.data[obj].price + '</strong></td>' + '<td>' + '<input type="button" value="-" name="sub" disabled="disabled">' + '<input type="text" name="inputNum" class="inputNum" value="1">' + '<input type="button" value="+" name="add">' + '</td>' + '<td><em name="em">¥' + result.data[obj].count + '</em></td>' + '<td><a name="delete" href="javascript:;">删除</a></td>' + '</tr>'; let row = $(str); //被选中的计算总和 let selectAll = document.getElementById("selectAll"); let $select = $(row).find("input[name='select']"); $("#goods").append(row); $select.click(function(){ selectAll.checked = true; countNum = 0; sum = 0; part(); if(!$select.checked){ selectAll.checked = false; } }); //console.log($select); }); } </script> <script type="text/javascript" src="style/shopping.js"></script> </head> <body> <table id="goods"> <tr> <th><input type="checkbox" id="selectAll">全选</th> <th>商品</th> <th>单价</th> <th>数量</th> <th>金额</th> <th>操作</th> </tr> </table> <br/><br/> <div class="sum"> 已选商品<em name="em">0</em>件,合计<em name="em">0.00</em>元。 </div> </body> </html> ``` js代码 ``` //获取单价,计算金额 function count(){ let strong = document.getElementsByTagName("strong"); let em = document.getElementsByTagName("em"); let inputNum = document.getElementsByName("inputNum"); let money = 0; for(let i = 0; i < strong.length; i++){ //console.log(strong[i].innerHTML); money = strong[i].innerHTML * inputNum[i].value; money = money.toFixed(2); em[i].innerHTML = "¥" + money; } } //计算总额 function part(){ let strong = document.getElementsByTagName("strong"); let em = document.getElementsByTagName("em"); let inputNum = document.getElementsByName("inputNum"); let select = document.getElementsByName("select"); let countNum = 0; let sum = 0; for(let i = 0; i < select.length; i++){ if(select[i].checked){ sum = sum + strong[i].innerHTML * inputNum[i].value; countNum = countNum + parseInt(inputNum[i].value); } } sum = sum.toFixed(2); em[em.length - 2].innerHTML = countNum; em[em.length - 1].innerHTML = sum; } //绑定响应函数,并解决兼容性问题 function bind(obj, eventStr, callback){ if(obj.addEventListener){ obj.addEventListener(eventStr, callback, false); }else{ obj.attachEvent("on" + eventStr, function(){ callback.call(obj); }); } } window.onload = function(){ //给“+”、“-”绑定事件 //事件委派 //let add = document.getElementsByName("add")[0]; let table = document.getElementsByTagName("table")[0]; bind(table, "click", function(event){ // console.log(event); //获取当前行 let tr = event.target.parentNode.parentNode; // console.log(tr.childNodes[3].childNodes[0]); let input = tr.childNodes[3].childNodes[1]; let subNum = tr.childNodes[3].childNodes[0]; // let a = tr.childNodes[5].childNodes[0]; // console.log(name); if(event.target.name === "add"){ input.value++; if(input.value > 1){ subNum.disabled = false; } count(); part(); }else if(event.target.name === "sub"){ input.value--; if(input.value == 1){ subNum.disabled = true; } count(); part(); }else if(event.target.name === "delete"){ //删除 let name = tr.getElementsByTagName("td")[1].innerHTML; let flag = confirm("确认删除" + name + "?"); if(flag){ tr.parentNode.removeChild(tr); } part(); } }); //全选操作 //console.log(selectAll.checked); let em = document.getElementsByTagName("em"); let selectAll = document.getElementById("selectAll"); let select = document.getElementsByName("select"); selectAll.onclick = function(){ for(let i = 0; i < select.length; i++){ select[i].checked = this.checked; } if(this.checked){ part(); }else{ em[em.length - 2].innerHTML = 0; em[em.length - 1].innerHTML = "0.00"; } }; }; ```
我最近写了个留言表 但是出现了找不到memberAction ?
1,这个是struts 配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.devMode" value="false"></constant> <package name="member" extends="struts-default" namespace="/member"> <action name="register" class="memberAction" method="registe"> <result name="success">/login.jsp</result> <result name="fail">/register.jsp</result> <result name="input">/register.jsp</result> </action> <action name="login" class="memberAction" method="login"> <result name="success" type="redirectAction"> <param name="namespace">/message</param> <param name="actionName">liuYanList</param> </result> <result name="fail">/login.jsp</result> </action> </package> <package name="message" extends="json-default" namespace="/message"> <action name="publish" class="messageAction" method="publish"> <!-- 这个action 成功后 是把数据库里面的留言抓去 放到这个成功页面 --> <result name="success" type="redirectAction"> <param name="actionName">liuYanList</param> </result> <!-- 失败还是返回这个页面 用异步提示 发送失败 所以选用json 所以这个包应该继承的是json-default --> <result name="fail" type="json"> <!-- 指定json字符串 根对象是谁 这个需要根据自己写的类来设计 --> <param name="root">errorMap</param> </result> </action> <action name="liuYanList" class="messageAction" method="liuYanList"> <result name="success">/WEB-INF/pages/message.jsp</result> </action> </package> <package name="verify" extends="json-default" namespace="/verify"> <!-- 因为我们只是生成一个校验码 所以 不用写方法 只需要excute就可以 --> <action name="code" class="verifyCodeAction"> <!-- 因为我们用的是流传输 验证码 所以 result 的类型应该是stream --> <result name="success" type="stream"> <param name="inputName">inputStream</param> </result> </action> <action name="check" class="verifyCodeAction" method="check"> <result name="success" type="json"> <param name="root">checkResult</param> </result> </action> </package> 2, 这个是登录 private static final long serialVersionUID = 7270980727777540053L; private Member member; private String rePassword; private String verifyCode;//通过属性驱动来收集页面的验证码 //保存收集到页面的数据 通过service来保存 所以就要注入一个service private MemberService memberService; public String login() { //根据一个指定的username 从数据库中 获取一个Member 对象 Member m = memberService.getMember(member.getUsername()); if (m != null) { //因为数据库里面保存的是我们加过密之后的密码 所以我们要对用户登录时输入的密码也进行加密 //这样才能比较 两个密码 String inputPassword = StringUtil.md532(member.getPassword()); if (m.getPassword().equals(inputPassword) ){ //信息完全正确 就需要把用户的信息存入session中 这样就不需要重复登录 //通过 Struts2 来访问 HttpSession 把member 的信息存放到session中 //m 是来自数据库的 有主键 id ActionContext.getContext().getSession().put("member", m); return "success"; }else { //密码错误 } }else { //输入的用户名不存在 } return "fail"; } 这个是登录页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <html> <head> <title>用户登录页面</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- 引入 CSS 文件--> <link href="${pageContext.request.contextPath }/css/style.css" type="text/css" rel="stylesheet" /> <!-- 引入JavaScript 库 --> <script src="${pageContext.request.contextPath}/jslibs/jquery-1.11.3.min.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(function () { jQuery("#refresh").click(function(){ jQuery("#verify_code").attr("src","${pageContext.request.contextPath }/verify/code?suibian" + new Date()) }); jQuery("#verify_code_input").blur(function(){ //获得输入框的值 和 服务器里面的验证码进行对比 var input = jQuery("#verify_code_input").val(); //发送到服务器端 和 服务器里面的验证码进行对比 var url = "${pageContext.request.contextPath }/verify/check"; var settings={ "url":url, "type":"POST", "data":{"inputCode" : input}, "dataType":"json", "success":function( responseData ){ jQuery("#verify_code_error").html( responseData ); } }; jQuery.ajax(settings); }); }); </script> </head> <body topMargin="10"> <center> <div id="append_parent"></div> <table cellSpacing="6" cellPadding="2" width="100%" border="0"> <tbody> <tr> <td> <table class="guide" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr> <td> <a href='index.jsp'>主页</a>&nbsp;/&nbsp; <a href='#'>留言板(malastruts)</a>&nbsp;/&nbsp;用户登录 </td> </tr> </tbody> </table> <h4 align="center">${ msg }</h4> <!--<form id="settings" action="register_action.jsp" method="post"> --> <form id="settings" action="${pageContext.request.contextPath}/member/login" method="post"> <table class="tableborder" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr class="header"> <td colSpan="3"> 登录系统 </td> </tr> </tbody> <tbody> <tr> <td class="altbg1" width="20%"> <b>用户名称 </b> </td> <td class="altbg2" valign="middle" width="20%"> <input type="text" name="username" value="${member.username}" /> </td> <td> <span style="color: red"> <s:fielderror fieldName="username"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>用户密码 </b> </td> <td class="altbg2"> <input type="password" name="password"/> </td> <td> <span style="color: red"> <s:fielderror fieldName="password"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>验证码 </b> </td> <td class="altbg2"> <input type="text" name="verifyCode" id="verify_code_input" /> </td> <td> <!-- 我们用jquery 给这个验证码绑定一个点击事件 实现异步的验证码刷新 --> <img src="${pageContext.request.contextPath}/verify/code" id="verify_code"> <a href="javascript: " id="refresh">输入正确</a> <span style="color: red" id="verify_code_error"> <s:fielderror fieldName="verifyCode"></s:fielderror> </span> </td> </tr> </tbody> </table> <br /> <center> <input class="button" type="reset" value="重置" name="settingsubmit" /> <input class="button" type="submit" value="提交" name="settingsubmit" /> </center> </form> </td> </tr> </tbody> </table> <hr> </center> </body> </html> 3,Spring 配置 <bean id="memberAction" class="message.action.MemberAction" p:memberService-ref="memberService" scope="singleton"/> <bean id="messageAction" class="message.action.MessageAction" p:messageService-ref="messageService" scope="singleton"/> <bean id="verifyCodeAction" class="message.action.VerifyCodeAction" scope="singleton"/> 4,这个是Member 类 public class Member implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; private Integer id; //维护 Member 到 Message 一对多的关系 private Set<Message> messages;//当前会员留言 private Set<Reply> replies;//当前会员回复 public Set<Reply> getReplies() { return replies; } public void setReplies(Set<Reply> replies) { this.replies = replies; } public Set<Message> getMessages() { return messages; } public void setMessages(Set<Message> messages) { this.messages = messages; } 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 Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } 启动时没有出现任何异常 就是登录的时候 会出现这个异常 type Exception report message Invalid action class configuration that references an unknown class named [memberAction] description The server encountered an internal error that prevented it from fulfilling this request. exception java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [memberAction] root cause java.lang.ClassNotFoundException: memberAction
分页后GrideView新增一行空白行
项目中有个需求,需要对已经绑定数据并分页的GrideView进行新增一行空白行。用户在点击“新增行”后,在界GrideView界面的最下面增加一行空白行。 要求:1、用户在第几页点击新增行就在当前页面显示新增行; 2、新增行按钮在GrideView外面; 具体代码如下: ``` 前台页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="YPCGJCB.aspx.cs" Inherits="CenterBase.供应链管理.YPCGJCB" %> <%@ Register Assembly="UserControls" Namespace="UserControls" TagPrefix="cc2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>药品折扣基础表</title> <link rel="stylesheet" href="../js/Grid/css/demo_page.css" /> <link rel="stylesheet" href="../js/DatePicker/base/jquery-ui.css" /> <script src="../js/jquery-1.7.2.min.js" type="text/javascript"></script> <script src="../js/JScript.js" type="text/javascript"></script> <script src="../js/DatePicker/jquery.ui.core.js" type="text/javascript"></script> <script src="../js/DatePicker/jquery.ui.datepicker.js" type="text/javascript"></script> <script src="../js/Ajax.js"></script> <script src="../js/jquery-1.4.1.js"></script> <style type="text/css"> .auto-style2 { height: 25px; } .auto-style3 { width: 156px; height: 25px; } .auto-style4 { margin-top: 5px; } .auto-style5 { text-align: right; } </style> <script language="javascript" type="text/javascript"> var dgPersonsID = "<%= YPZKXX.ClientID %>"; $(document).ready(function () { $("#dgPersons tr").eq(1).hide(); }); function AddNewRow() { var tr = $("#dgPersons tr").eq(1).clone(); tr.show(); tr.appendTo("#dgPersons"); refreshNo(); return false; } function refreshNo() { var dgg = document.getElementById(dgPersonsID); var index = 1; for (var i = 2; i < dgg.rows.length; ++i) { var cells = dgg.rows[i].cells; var row = dgg.rows[i]; if (row.style.display != "none") { cells[0].firstChild.nodeValue = index++; } } return false; } </script> </head> <body id="dt_example" class="ex_highlight_row"> <form id="form1" runat="server"> <div id="container"> <table width="100%" border="0" cellspacing="0" cellpadding="0" style="background-image: url(../images/Pop_page_back.gif)" align="center"> <tr> <td valign="center" style="height: 27px">&nbsp;<strong>药品折扣基础表</strong></td> </tr> </table> <div id="search"> <table class="t2" style="width:100%"> <tr> <td class="auto-style2">医院名称:</td> <td class="auto-style3"> <input type="text" id="txtyymc" runat="server" class="inputbox" readonly="true"/> </td> <td class="auto-style2">开始时间:</td> <td class="auto-style2"> <input type="text" id="txtkssj" runat="server" class="inputbox" readonly="true" /> </td> <td class="auto-style2">结束时间:</td> <td class="auto-style2"> <input type="text" id="txtjssj" runat="server" class="inputbox" readonly="true"/> </td> <td class="auto-style2">供应商名称:</td> <td class="auto-style2"> <input type="text" id="txtgys" runat="server" class="inputbox" readonly="true"/> </td> </tr> </table> </div> <div id="menu" class="auto-style5"> &nbsp;<asp:Button ID="Btn_Download" runat="server" Text="查 询" CssClass="buttoncss" OnClick="Btn_Download_Click"/> &nbsp; &nbsp;<asp:Button ID="btn_AddLine" runat="server" Text="新增行" CssClass="buttoncss" OnClientClick="return AddNewRow();return false;" /> &nbsp; &nbsp;<asp:Button ID="btn_xz" runat="server" Text="下 载" CssClass="buttoncss"/> &nbsp; &nbsp<asp:Button ID="btn_dr" runat="server" Text="导 入" CssClass="buttoncss" OnClick="btn_dr_Click" /> &nbsp; &nbsp;<asp:CheckBox runat="server" Text="显示历史数据" ID="cbo_xs" Checked="false" /> </div> <div> <asp:GridView ID="YPZKXX" runat="server" AutoGenerateColumns="False" Width="100%" HorizontalAlign="Center" style="text-align: center" NoNewline="word-break: keep-all;" CssClass="auto-style4" OnRowCancelingEdit="YPCGJCXX_RowCancelingEdit" OnRowEditing="YPCGJCXX_RowEditing" OnRowUpdating="YPCGJCXX_RowUpdating"> <EmptyDataTemplate> 没有数据 </EmptyDataTemplate> <FooterStyle ForeColor="White" BackColor="#3B6BD1" Font-Bold="True"></FooterStyle> <SelectedRowStyle Font-Bold="True" ForeColor="Navy" BackColor="#FFCC66" BorderColor="CornflowerBlue" /> <RowStyle ForeColor="#333333" BackColor="#FFFBD6" BorderColor="CornflowerBlue" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Center" VerticalAlign="Bottom" Wrap="False" /> <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#3B6BD1" Wrap="False"></HeaderStyle> <Columns> <asp:TemplateField HeaderText="编号" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_ID" runat="server" Text='<%# Bind("ID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="医院名称"> <ItemTemplate> <asp:Label ID="lbl_yymc" runat="server" Text='<%# Bind("yymc") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="供货商编码"> <ItemTemplate> <asp:Label ID="lbl_ghsbm" runat="server" Text='<%# Bind("ghsbm") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="中心编码"> <ItemTemplate> <asp:Label ID="txt_zxbm" runat="server" Text='<%# Bind("zxbm") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="药品编码"> <ItemTemplate> <asp:Label ID="lbl_ypbm" runat="server" Text='<%# Bind("ypbm") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="药品名称"> <ItemTemplate> <asp:Label ID="lbl_ypmc" runat="server" Text='<%# Bind("ypmc") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="药品规格"> <ItemTemplate> <asp:Label ID="lbl_ypgg" runat="server" Text='<%# Bind("ypgg") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="药品单位"> <ItemTemplate> <asp:Label ID="lbl_ypdw" runat="server" Text='<%# Bind("ykdw") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="返利形式"> <ItemTemplate> <asp:Label ID="txt_flxs" runat="server" Text='<%# Bind("flxs") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="厂家名称"> <ItemTemplate> <asp:Label ID="lbl_sccj" runat="server" Text='<%# Bind("cjmc") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="供货单位"> <ItemTemplate> <asp:Label ID="lbl_ghdw" runat="server" Text='<%# Bind("ghdw") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="底 价"> <ItemTemplate> <asp:Label ID="txt_dj" runat="server" Text='<%# Bind("dj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="折扣率"> <ItemTemplate> <asp:Label ID="txt_zkl" runat="server" Text='<%# Bind("zkl") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="开票价"> <ItemTemplate> <asp:Label ID="txt_kpj" runat="server" Text='<%# Bind("kpj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="零售价"> <ItemTemplate> <asp:Label ID="lbl_lsj" runat="server" Text='<%# Bind("lsj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="最新零售价"> <ItemTemplate> <asp:Label ID="lbl_zxlsj" runat="server" Text='<%# Bind("zxlsj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="售价差价"> <ItemTemplate> <asp:Label ID="txt_sjcj" runat="server" Text='<%# Bind("lscj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="成本价"> <ItemTemplate> <asp:Label ID="txt_cbj" runat="server" Text='<%# Bind("cbj") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="折 扣"> <ItemTemplate> <asp:Label ID="txt_zk" runat="server" Text='<%# Bind("zk") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="净利润"> <ItemTemplate> <asp:Label ID="txt_jlr" runat="server" Text='<%# Bind("jlr") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="业务费"> <ItemTemplate> <asp:Label ID="txt_ywf" runat="server" Text='<%# Bind("xywf") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="毛利率"> <ItemTemplate> <asp:Label ID="txt_mll" runat="server" Text='<%# Bind("mll") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="年"> <ItemTemplate> <asp:Label ID="lbl_nf" runat="server" Text='<%# Bind("nian") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="月"> <ItemTemplate> <asp:Label ID="lbl_yf" runat="server" Text='<%# Bind("yue") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="管理" ShowHeader="False"> <EditItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="更新"></asp:LinkButton> &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="取消"></asp:LinkButton> </EditItemTemplate> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="编辑"></asp:LinkButton> &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Update" Text="修改"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> <cc2:PageTool ID="PageTool1" runat="server" Number="1" PageRows="10" PageCount="100"> </cc2:PageTool> </div> </form> </body> </html> ``` ``` 后台代码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace CenterBase.供应链管理 { public partial class YPCGJCB : System.Web.UI.Page { CenterBaseBLL.YPCGMC cbby = new CenterBaseBLL.YPCGMC(); private static int pCount = 0;//总页数 private static int rCount = 0;//总数据数 private static int pageIndex = 1;//当前页 private static int pageSize = 20;//页面大小 private static string tableName = "View_YPJCB";//表名 private static string fields = "ID,yymc, ghsbm, zxbm, ypbm, ypmc, ypgg, ykdw, flxs,cjmc,ghdw,dj,zkl,kpj,lsj,zxlsj,lscj,cbj,zk,jlr,xywf,mll,nian,yue";//查询的字段 private static string order = "ID desc";//排序 private static string primaryKey = "ID";//关键字 private static string where = " "; protected void Page_Load(object sender, EventArgs e) { //UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; //Response.AddHeader("P3P", "CP=CAO PSA OUR"); ////检测用户是否登录 //if (!CheckUserLogin()) //{ // Response.Redirect("../LoginMain.aspx"); //} ////检测用户是否具有权限 //if (!CheckUserAuthority()) //{ // Response.Redirect("../LoginMain.aspx"); //} if (!Page.IsPostBack) { //分页初始化 if (Request.QueryString["page"] == null) { pageIndex = 1; } else { pageIndex = CenterBaseTools.ConvertData.ConvertDataFromStringToInt(Request.QueryString["page"].ToString()); } ////绑定数据 //if (cbo_xs.Checked == true) //{ //} DataBinds(); //Sum(); } } protected void Btn_Download_Click(object sender, EventArgs e) { where = ""; if (sqlwhere() != "") { where = where + sqlwhere(); } DataBinds(); } public void DataBinds() { DataTable dt = new DataTable(); dt = CenterBaseBLL.PageView.GetAll(out pCount, out rCount, pageIndex, pageSize, tableName, fields, order, primaryKey, 2, 0, where); YPZKXX.DataSource = dt; YPZKXX.DataBind(); this.PageTool1.PageRows = pageSize; this.PageTool1.PageCount = rCount; } public string sqlwhere() { string yymc = txtyymc.Value.ToString(); string kssk = txtkssj.Value.ToString(); string jssj = txtjssj.Value.ToString(); string ghs = txtgys.Value.ToString(); int res = kssk.CompareTo(jssj); string sql = ""; if (yymc != "") { sql = sql + " where CYYMC = '" + yymc + "'"; } if (yymc != "" && kssk != "" && jssj != "" && res < 0) { sql = sql + " where CYYMC='" + yymc + "' and DRKRQ between '" + kssk + "' and '" + jssj + "'"; } if (yymc != "" && kssk != "" && jssj != "" && res < 0 && ghs != "") { sql = sql + " where CYYMC='" + yymc + "' and DRKRQ between '" + kssk + "' and '" + jssj + "' and CGHDW = '" + ghs + "'"; } return sql; } protected void YPCGJCXX_RowEditing(object sender, GridViewEditEventArgs e) { YPZKXX.EditIndex = e.NewEditIndex; DataBinds(); } protected void YPCGJCXX_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { YPZKXX.EditIndex = -1; DataBinds(); } protected void YPCGJCXX_RowUpdating(object sender, GridViewUpdateEventArgs e) { int id = Convert.ToInt32((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ID") as Label).Text); string yymc = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_yymc") as Label).Text); string ghsbm = (YPZKXX.Rows[e.RowIndex].FindControl("txt_ghsbm") as TextBox).Text.ToString(); string zxbm = (YPZKXX.Rows[e.RowIndex].FindControl("txt_zxbm") as TextBox).Text.ToString(); string ypbm = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ypbm") as Label).Text); string ypmc = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ypmc") as Label).Text); string ypgg = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ypgg") as Label).Text); string ypdw = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ypdw") as Label).Text); string flxs = (YPZKXX.Rows[e.RowIndex].FindControl("txt_flxs") as TextBox).Text.ToString(); string cjmc = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_sccj") as Label).Text); string ghdw = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_ghdw") as Label).Text); string dj = (YPZKXX.Rows[e.RowIndex].FindControl("txt_dj") as TextBox).Text.ToString(); string zkl = (YPZKXX.Rows[e.RowIndex].FindControl("txt_zkl") as TextBox).Text.ToString(); string kpj = (YPZKXX.Rows[e.RowIndex].FindControl("txt_kpj") as TextBox).Text.ToString(); string lsj = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_lsj") as Label).Text); string dykpj = (YPZKXX.Rows[e.RowIndex].FindControl("txt_dykpj") as TextBox).Text.ToString(); string zxlsj = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_zxlsj") as Label).Text); string sjcj = (YPZKXX.Rows[e.RowIndex].FindControl("txt_sjcj") as TextBox).Text.ToString(); string cbj = (YPZKXX.Rows[e.RowIndex].FindControl("txt_cbj") as TextBox).Text.ToString(); string zk = (YPZKXX.Rows[e.RowIndex].FindControl("txt_zk") as TextBox).Text.ToString(); string jlr = (YPZKXX.Rows[e.RowIndex].FindControl("txt_jlr") as TextBox).Text.ToString(); string ywf = (YPZKXX.Rows[e.RowIndex].FindControl("txt_ywf") as TextBox).Text.ToString(); string mll = (YPZKXX.Rows[e.RowIndex].FindControl("txt_mll") as TextBox).Text.ToString(); string nf = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_nf") as Label).Text); string yf = Convert.ToString((YPZKXX.Rows[e.RowIndex].FindControl("lbl_yf") as Label).Text); DateTime time = System.DateTime.Now; string sql = "insert into YPFXJCXX(yymc,ghsbm,zxbm,ypbm,ypmc,ypgg,ykdw,flxs,cjmc,ghdw,dj,zkl,kpj,lsj,dykpj,zxlsj,lscj,cbj,zk,jlr,xywf,mll,nian,yue,ITime)" + "values(" + "'" + yymc + "'," + "'" + ghsbm + "'," + "'" + zxbm + "'," + "'" + ypbm + "'," + "'" + ypmc + "'," + "'" + ypgg + "'," + "'" + ypdw + "'," + "'" + flxs + "'," + "'" + cjmc + "'," + "'" + ghdw + "'," + "'" + dj + "'," + "'" + zkl + "'," + "'" + kpj + "'," + "'" + lsj + "'," + "'" + dykpj + "'," + "'" + zxlsj + "'," + "'" + sjcj + "'," + "'" + cbj + "'," + "'" + zk + "'," + "'" + jlr + "'," + "'" + ywf + "'," + "'" + mll + "'," + "'" + nf + "'," + "'" + yf + "'," + "'" + time + "'" + ")"; CenterBaseDAL.ExecuteSql exec = new CenterBaseDAL.ExecuteSql(); int falg = exec.run(sql); if (falg == 1) { Response.Write("<script>alert('更新成功')</script>"); Response.Write("<script>window.location.href='YPCGJCB.aspx'</script>"); Response.End(); } else { Response.Write("<script>alert('更新失败')</script>"); } } protected void btn_dr_Click(object sender, EventArgs e) { Response.Write("<script>window.open('药品销售明细查询/Improt.aspx','_blank')</script>"); } } } ``` 我用自己方法添加了一列行号,求大神指点!!
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
小白学 Python 爬虫(25):爬取股票信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
轻松搭建基于 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个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
(总结)阿里面试问了ArrayList,都问了啥?
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的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岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
Spring框架|JdbcTemplate介绍
文章目录一、JdbcTemplate 概述二、创建对象的源码分析三、JdbcTemplate操作数据库 一、JdbcTemplate 概述 在之前的web学习中,学习了手动封装JDBCtemplate,其好处是通过(sql语句+参数)模板化了编程。而真正的JDBCtemplete类,是Spring框架为我们写好的。 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单...
为什么说程序员做外包没前途?
之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。 外包公司你应该...
终于!疫情之下,第一批企业没能熬住面临倒闭,员工被遣散,没能等来春暖花开!
先来看一个图: 这个春节,我同所有人一样,不仅密切关注这次新型肺炎,还同时关注行业趋势和企业。在家憋了半个月,我选择给自己看书充电。因为在疫情之后,行业竞争会更加加剧,必须做好未雨绸缪,时刻保持充电。 看了今年的情况,突然想到大佬往年经典语录: 马云:未来无业可就,无工可打,无商可务 李彦宏:人工智能时代,有些专业将被淘汰,还没毕业就失业 马化腾:未来3年将大洗牌,迎21世界以来最大失业潮 王...
立即提问