PHP $ajax失败,数据类型json

我在文件B中,连接数据库,取出了我需要的信息,放在一个大数组里定为$list,但是在A界面ajax读取$list的值,老是显示fail;
我在B里直接输出$list,得到一组数,在不连接数据库的情况下,直接把这组数赋值给$list,这种情况在A中显示的结果是正常的;

后来我想了一个办法,用一个C页面include B页面,从C传给A.我传的是一维数组的值的时候结果是正确,但是传二维数组时,又出现了之前的那种问题,现象一模一样。这是为什么呢?

2个回答

f12开ajax发送的请求得到什么返回值,肯定是报错了或者没有正确返回json格式字符串

把源码拿出来让人看看啊,不然怎么给你解答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax获取不到php从数据库里面读取到的数据,(php读取到的数据已经成功转换成了json数据)
javascript代码: ```javascript // 初始化两个数组,盛装从数据库中获取到的数据 var dates = new Array(), moneys = new Array(); //调用ajax来实现异步的加载数据 function getusers() { $.ajax({ type: "post", async: false, data:{}, url: "dataDemo/dataIndex.php", data: {}, dataType: "json", success: function(result){ if(result){ for(var i = 0; i < result.length; i++){ dates.push(result[i].sum); moneys.push(result[i].money); } } }, error: function(errmsg) { alert("Ajax获取服务器数据出错了!"+ errmsg); } }); return dates, moneys; } //执行异步请求 getusers(); ``` public_function.php代码: ```php <?php function dbInit(){ global $con; $dsn = "mysql:dbname=info;localhost=127.0.0.1"; $user = "root"; $password = "644066YanMin&&!+"; try{ $con = new PDO($dsn,$user,$password); }catch(PDOExcepetion $e){ die ("Error!: " . $e->getMessage() . "<br/>"); } } /* 处理结果集中有多条数据的函数; */ function fetchAll($sql){ global $con; class user{ public $times; public $money; } if($result = $con->query($sql)){ //声明数组,用于接收结果集; $data = array(); //遍历结果集; while($row = $result->fetch(PDO::FETCH_ASSOC)){ $user = new User(); $user->times = $row['times']; $user->money = $row['sum']; $data[] = $user; } return $data; }else{ //执行失败; return false; } } ``` dataIndex.php代码 ```php <?php require "public_function.php"; dbInit(); $sql = 'select times,sum from date'; $datas = fetchAll($sql); // 返回JSON类型的数据 echo json_encode($datas); //$con = null; require "dataIndex.html"; ```
ECharts怎样用AJAX从数据库中调数据?
下面代码中是ECharts用AJAX从数据库中调数据,但前端页面无法显示数据,求问代码中哪里有误? ``` map1.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <div id="myChart" style="height:500px;"></div> <script src="./js/jquery-1.8.3.min.js"></script> <script> $.ajax({ type: "post", async: false, //同步执行 url: "mapdata.php", dataType: "json", //返回数据形式为json success: function (result) { myChart.hideLoading(); //隐藏加载动画 myChart.setOption({ //渲染数据 series: [{ // 根据名字对应到相应的系列 name: '2015年GDP', data: result }] }); }, error: function () { alert("请求数据失败!"); } }); </script> <script src="./js/echarts.js"></script> <script> require.config({ paths: { echarts: './js' } }); require( [ 'echarts', 'echarts/chart/map' // 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表 ], function (ec) { var myChart = ec.init(document.getElementById('myChart')); var option = { title: { text: '2015年GDP统计数据', subtext: '数据来源网络(单位:亿元)', left: 'center' //标题居中 }, tooltip: { //提示工具, trigger: 'item', formatter: "{a} <br/>{b} : {c}亿元" }, visualMap: { //视觉映射组件,可以根据范围调节数据变化 min: 0, //最小值 max: 10, //最大值 left: 'left', //位置 top: 'bottom', orient: 'horizontal', //水平 text: ['高', '低'], // 文本,默认为数值文本 calculable: true //是否启用值域漫游,即是否有拖拽用的手柄,以及用手柄调整选中范围。 }, toolbox: { //工具栏 show: true, orient: 'vertical', //垂直 left: 'right', top: 'center', feature: { mark: { show: true }, saveAsImage: { show: true } //保存为图片 } }, series: [{ name: '2015年GDP', type: 'map', mapType: 'china', //使用中国地图 roam: false, //是否开启鼠标缩放和平移 itemStyle: { normal: { label: { show: true } }, emphasis: { label: { show: true } } }, data: [] }] }; //myChart.showLoading(); //预加载动画 myChart.setOption(option); //渲染地图 } ); </script> </body> </html> mapdata.php <?php include_once('connect.php'); //连接数据库 //查询数据 $sql = "select * from echarts_map"; $query = mysql_query($sql); while ($row = mysql_fetch_array($query)) { $arr[] = array( 'name' => $row['province'], 'value' => $row['gdp'] ); } mysql_close($q); echo json_encode($arr); //输出json格式数据 ?> connect.php <?php $q = mysql_connect("localhost","root","dglgxx"); if(!$q) { die('Could not connect: ' . mysql_error()); } mysql_query("set names utf8"); //以utf8读取数据 mysql_select_db("test02",$q); //数据库 ?> ``` 数据库的表 ![图片说明](https://img-ask.csdn.net/upload/201607/13/1468397398_141664.png)
微擎(微赞)二次开发问题——PHP,JS的AJAX通信问题
首先请原谅我问这样的问题,因为我真心不会这东西。两眼一抹黑的感觉。 好,上问题,请看图。 ![![图片说明](https://img-ask.csdn.net/upload/201709/22/1506059929_73101.png) ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506059947_364861.png) 那么问题来了: 1.PHP ajax通信,能那么传数据么? 2.给ajax返回json的时候,show_json(1, array('url' => referer()));这是什么方法?干嘛的? 3.在ajax返回成功时,ret是啥?失败时,那三个参数又是啥? 请各位大神快解救我吧
datagrid生成的表格,欲把某一列的所有行都设置为下拉列表的形式;内容从后台数据库中读取;静态加载数据可行,动态加载数据下拉列表出不来
```<!-- var colData=[{id:'高',projectName:'高','selected':'true'},{id:'中',projectName:'中'},{id:'低',projectName:'低'},{ id: "操作错误", projectName: "操作错误" }, { id: "滥用授权", projectName: "滥用授权" },{ id: "身份假冒", projectName: "身份假冒" },{ id: "安全漏洞", projectName: "安全漏洞" }, --> <!-- { id: "拒绝服务", projectName: "拒绝服务" },{ id: "恶意代码", projectName: "恶意代码" },{ id: "窃听数据", projectName: "窃听数据" },{ id: "物理破坏", projectName: "物理破坏" },{ id: "社会工程", projectName: "社会工程" }]; --> <!-- console.log(colData); --> <!-- console.log(typeof colData); --> ///////上面注释掉的代码是我尝试静态加载的语句,////下面的代码是我ajax请求的代码 var colData=[]; console.log(typeof colData); $.ajax({ type:"POST", url:"./php/read_from_db2.php", dataType:"json", async:false, data:{}, success:function(data){ console.log(data); colData = []; data.forEach(ele => { var obj = { id:ele, projectName:ele, selected:true }; colData.push(obj); }); console.log(colData); }, async:true, error:function(){ alert("请求失败"); }, }); //////下面的代码为我想要设置的列 {field:'关联威胁',title:"关联威胁", width:140,align:'center',editor: { type:'combobox', options: { valueField:'id', textField:'projectName', panelHeight:'auto', data:colData//这里是我定义的全局变量,将它传给options的data }}}, ```
PHP ajax不执行success回调而是执行了error回调
``` <script> $.ajax({ url: 'ajax.php?act=personal', type: 'post', dataType: 'json', data: { name:name, phone:$('#phone').val(), alipay:$('#alipay').val(), weixin:$('#weixin').val(), qq:$('#qq').val(), email:$('#email').val() }, success: function(data){ if(data.success){ toast_tip(保存成功); } else { toast_tip(保存失败); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }, </script> }); ``` php代码 ``` if(isset($_GET['act'])){ switch ($_GET['act']) { //保存资料//////////////////////////////////////////////// case 'personal': try { //修改数据 $stmt = $db->prepare('UPDATE members SET Name=:Name, Phone=:Phone, AliPay=:AliPay, WeiXin=:WeiXin, QQ=:QQ, EMail=:EMail WHERE UserName=:UserName') ; $stmt->execute(array(':Name' => $name, ':Phone' => $phone, ':AliPay' => $alipay, ':WeiXin' => $weixin, ':QQ' => $qq, ':EMail' => $email, ':UserName' => $_SESSION['UserName'] )); } catch(PDOException $e) { $error[] = $e->getMessage(); } echo '{"message":"保存成功","success":true}'; break; } } ``` 修改数据能成功, 但是老是回调error 返回代码 200, 4, parsererror
求助!如何使用AJAX异步提交方法
这是前端,求大大帮我看看我的ajax代码使用哪里出错了,最好给出详细代码 ``` <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <script> function getZhi(){ var name = $("#name").val(); var place = $("#place").val(); var method = $("#method").val(); var number = $("#number").val(); var s = "来到" + place + name + "工地,现场" + method + ",拍照取证。" + "//六组/六组巡查照片/" + place + "/" + name + "/"+ number; alert(s); } $.ajax({ url : "intoA.php", type : "post", //提交方式get/post data : {date1:number,date2:s}, //提交后台参数var data = "" dataType : "json", //数据类型json success:function(s){ 后台成功返回的数据 } }); </script> <form class="contact_form" action="intoA.php" method="post" name="contact_form"><!--"#"用来 填处理表单数据的php文件--> <ul> <li> 姓名:<select size="1" input type="name" id="name"> <option></option> <option>姚锦堂</option> <option>姚钿深</option> <option>姚换章</option> <option>姚淦强</option> <option>姚灿伦</option> <option>姚志坤</option> <option>姚福全</option> <option>姚满权</option> <option>姚志良</option> <option>姚月培</option> <option>姚惠全</option> <option>姚桂祥</option> <option>姚桥旺</option> <option>刘见华</option> <option>刘天伟</option> <option>刘涌旺</option> <option>潘成泰</option> <option>潘国平</option> <option>潘庆堂</option> <option>张煜新</option> <option>杨道庭</option> <option>黄庆培</option> <option>曾德联</option> <option>陈仲汝</option> <option>李满堂</option> <option>企石中学</option> <option>东平村委会</option> <option>第七中学对面</option> <option>东莞市钜辉建设工程有限公司</option> </select> </li> <li> 地址:<select size="1" input type="place" id="place"> <option></option> <option>东山村</option> <option>清湖村</option> <option>新南村</option> <option>上截村</option> <option>下截村</option> <option>东平村</option> <option>上洞村</option> <option>南坑村</option> <option>霞朗村</option> <option>铁炉坑村</option> </select> </li> <li> 处理:<select size="1" input type="method" id="method"> <option></option> <option>无工人作业</option> <option>有1名工人作业,进行驱赶</option> <option>有3名工人作业,进行驱赶</option> <option>有5名工人作业,进行驱赶</option> <option>有7名工人作业,进行驱赶</option> <option>有12名工人作业,进行驱赶</option> <option>有14名工人作业,进行驱赶</option> <option>有16名工人作业,进行驱赶</option> <option>有18名工人作业,进行驱赶</option> <option>对工地进行勘验,制作笔录,下发了责令限期整改通知书(东综管责字[2017]第31-00000号)</option> </select> </li> <li> <label for="number">日期</label> <input id="number" name="number"> </li> <li> <button class="submit" type="submit">提交</button> </li> </ul> </form> </body> </html> ``` 这是后台php用于提交到数据库 ``` <?php $servername = "localhost"; $username = "root"; $password = "yy6788402"; $dbname = "A"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $date1 = $_POST['date1']; $date2 = $_POST['date2']; $sql = "INSERT INTO B SET message='$date2', date='$date1'"; if ($conn->query($sql) === TRUE) { echo "提交成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> ``` 发生错误! ``` $date1 = $_POST['date1']; $date2 = $_POST['date2']; ``` ![](https://img-ask.csdn.net/upload/201712/02/1512194247_502477.png)
ajax的值怎样传递到echarts中
在ajax中两个数组,分别是arr1,arr2;怎样将数组分别传递到echarts中的nodes:[]和links:[]中?求详细源码! 部分源码 ``` <div id="main" style="height:500px;"></div> <script src="./js/echarts.js" ></script> <script src="./js/jquery-1.8.3.min.js" ></script> <script> var arr1 = []; var arr2 = []; $.ajax({ type:"POST", async:false, url:"mapdata.php", dataType:"json", success: function(result){ var str = result; for (var i = 0; i < str.length; i++) { arr1.push("{"+"category:"+str[i].category,"name:'"+str[i].name+"'","value:"+str[i].value+"}"); } //document.write(arr1); for (var i = 0; i < str.length; i++) { arr2.push("{"+"source:'"+str[i].source+"'","target:'"+str[i].target+"'","weight:"+str[i].weight,"name:'"+str[i].name_nexus+"'"+"}"); } //document.write(arr2); }, error:function(errorMsg){ alert("请求数据失败!"); }, }); require.config({ paths:{ echarts:'./js' } }); require( [ 'echarts', 'echarts/chart/force' ], function(ec){ var myChart = ec.init(document.getElementById("main")); var option = { title : { text: '人物关系:葛优', x:'right', y:'bottom' }, tooltip : { trigger: 'item', formatter: '{a} : {b}' }, legend: { x: 'left', data:['家人','朋友'] }, series : [ { type:'force', name : "人物关系", ribbonType: false, categories : [ { name: '人物' }, { name: '家人' }, { name:'朋友' } ], itemStyle: { normal: { label: { show: true, textStyle: { color: '#333' } }, nodeStyle : { brushType : 'both', borderColor : 'rgba(255,215,0,0.4)', borderWidth : 1 }, linkStyle: { type: 'curve' } }, emphasis: { label: { show: false }, nodeStyle : { //r: 30 }, linkStyle : {} } }, useWorker: false, minRadius : 15, maxRadius : 25, gravity: 1.1, scaling: 1.1, roam: 'move', nodes:[ arr1 ], links : [ ] } ] }; myChart.setOption(option); } ); </script> ``` arr1值为 ![图片说明](https://img-ask.csdn.net/upload/201607/18/1468831970_199619.png) arr2值为![图片说明](https://img-ask.csdn.net/upload/201607/18/1468832031_557252.png)
js变量怎么不能自增一
var i不能自增是咋回事? ``` function getdata(){ var i = 0; $.ajax({ type: 'POST', // 这是请求的方式 可以是GET方式也可以是POST方式, 默认是GET url: ' /e/ajax2.php ', // 这是请求的连接地址 一般情况下这个地址是后台给前端的一个连接,直接写就可以 dataType: 'json', // 这是后台返回的数据类型 一般情况下都是一个json数据, 前端遍历一下就OK async: true, // 默认为true,默认为true时,所有请求均为异步请求,如果需要发送同步请求,需设置为false, timeout: 8000, // 设置请求超时时间(毫秒)。此设置将覆盖全局设置 data: { page: i , // 要传递的参数 }, beforeSend: function () { // 在发送请求前就开始执行 (一般用来显示loading图) }, success: function (data) { if(data){ var str = ""; for(var key in data){ var str = '<ul class="arrow_box">'; var str = str +'<div class="sy"><p>'; var str = str + '<img src="'+data[key]['titlepic']+'" alt="'+data[key]['title']+'" title="'+data[key]['title']+'" />'+data[key]['smalltext']+''; var str = str + '<span class="dateview">'+data[key]['newspath']+'</span>'; var str = str + '</p></div>'; var str = str + '</ul>'; $(".bloglist").append(str); } i++; alert(i); } // 发送请求成功后开始执行,data是请求成功后,返回的数据 }, complete: function () { //当请求完成后开始执行,无论成功或是失败都会执行 (一般用来隐藏loading图) }, error: function (xhr, textStatus, errorThrown) { // 请求失败后就开始执行,请求超时后,在这里执行请求超时后要执行的函数 } }) } </script> ```
jquery的click事件多次绑定
**.tools-comment是评论按钮的class名,点击它弹出回复评论层。添加回复内容,点发表,发表成功,将返回的数据写入页面中。此时不刷新页面,再次点击评论,发表,则一下发表了两条相同的数据,ajax请求了两次。第三次则发表三条......第N次发表N条。.editWindow-send就是弹出层上面的发表按钮的class名,代码如下,请大神帮看看是什么原因。** var topicid,artsid,articleid; $("#found").on("click",".tools-comment",function (){ //跳转评论 var tempHtml=''; var url="index.php?app=weixin&ac=wnote&ts=verifyUser"; $.ajax({ url:url, type:"get", async:false, datatype:"json", success:function(data) { var data=$.parseJSON(data); if(data.code==1) showEditWindow(); if(data.code==0) popWindowAlert(data.msg); if(data.code==4) location.href=data.ts_url; if(data.code==5) location.href=data.ts_url; } }); //这里需要记录当前点击是哪个话题 articleid=$(this).children(".docomment").attr("articleid"); artsid=$(this).children(".docomment").attr("artsid"); topicid=$(this).children(".docomment").attr("topicid"); if(articleid){ var url="index.php?app=weixin&ac=wnote&ts=addArticleComment"; $(".editWindow-send").on("click",function (){ var content=$("#ComentContent").val(); $.ajax({ url:url, type:"post", datatype:"json", async:false, data:{"articleid":articleid,"content":content}, success:function(data){ var data=$.parseJSON(data); //执行登陆跳转 if (data.status==800) { popWindowAlert(data.msg); } //执行成功返回跳转 if(data.status==1){ var htmlStr="<li class='reply-again' id="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"><div class='ku_replyp delcomment' id="+data['res']['commentid']+" to_userid="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"><div class='reply-photo'><a href='index.php?app=weixin&ac=wcircleZone&userid="+data['res']['userid']+"' class='ui-link'><img src='"+data['res']['face']+"'></a></div><div class='ku_replyp_text'>"+data['res']['username']+":</div> <div class='ku_replyp_con'>"+data['res']['content']+"</div></div><div class='reply-time'><div class='reply-time-l'>"+data['res']['addtime']+"</div> <div class='reply-time-r'> <ul><li class='glm-love'><i></i><span class='likenum'></span></li> <li class='glm-line'>|</li> <li class='comment-reply' to_comment_id='300' comment_id='300'><i></i></li> </ul></div> </div> <div class='reply-box-all'> </div><div class='clear'></div> <div class='br10'></div></li>"; $(".gl-replay-list").append(htmlStr); }else{ //执行失败 popWindowAlert(data.msg); } } }); }); } });
asp.net webuploader多图片上传并保存文件路径到数据库
![图片说明](https://img-ask.csdn.net/upload/201906/22/1561187942_114655.jpg) 要做一个滚动窗功能,使用webuploader插件 不知道在哪获取文件路径,保存到数据库里 上传的upload.js ``` (function( $ ){ // 当domReady的时候开始初始化 $(function() { var $wrap = $('.uploader-list-container'), // 图片容器 $queue = $( '<ul class="filelist"></ul>' ) .appendTo( $wrap.find( '.queueList' ) ), // 状态栏,包括进度和控制按钮 $statusBar = $wrap.find( '.statusBar' ), // 文件总体选择信息。 $info = $statusBar.find( '.info' ), // 上传按钮 $upload = $wrap.find( '.uploadBtn' ), // 没选择文件之前的内容。 $placeHolder = $wrap.find( '.placeholder' ), $progress = $statusBar.find( '.progress' ).hide(), // 添加的文件数量 fileCount = 0, // 添加的文件总大小 fileSize = 0, // 优化retina, 在retina下这个值是2 ratio = window.devicePixelRatio || 1, // 缩略图大小 thumbnailWidth = 110 * ratio, thumbnailHeight = 110 * ratio, // 可能有pedding, ready, uploading, confirm, done. state = 'pedding', // 所有文件的进度信息,key为file id percentages = {}, // 判断浏览器是否支持图片的base64 isSupportBase64 = ( function() { var data = new Image(); var support = true; data.onload = data.onerror = function() { if( this.width != 1 || this.height != 1 ) { support = false; } } data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; return support; } )(), // 检测是否已经安装flash,检测flash的版本 flashVersion = ( function() { var version; try { version = navigator.plugins[ 'Shockwave Flash' ]; version = version.description; } catch ( ex ) { try { version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash') .GetVariable('$version'); } catch ( ex2 ) { version = '0.0'; } } version = version.match( /\d+/g ); return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 ); } )(), supportTransition = (function(){ var s = document.createElement('p').style, r = 'transition' in s || 'WebkitTransition' in s || 'MozTransition' in s || 'msTransition' in s || 'OTransition' in s; s = null; return r; })(), // WebUploader实例 uploader; if ( !WebUploader.Uploader.support('flash') && WebUploader.browser.ie ) { // flash 安装了但是版本过低。 if (flashVersion) { (function(container) { window['expressinstallcallback'] = function( state ) { switch(state) { case 'Download.Cancelled': alert('您取消了更新!') break; case 'Download.Failed': alert('安装失败') break; default: alert('安装已成功,请刷新!'); break; } delete window['expressinstallcallback']; }; var swf = 'expressInstall.swf'; // insert flash object var html = '<object type="application/' + 'x-shockwave-flash" data="' + swf + '" '; if (WebUploader.browser.ie) { html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '; } html += 'width="100%" height="100%" style="outline:0">' + '<param name="movie" value="' + swf + '" />' + '<param name="wmode" value="transparent" />' + '<param name="allowscriptaccess" value="always" />' + '</object>'; container.html(html); })($wrap); // 压根就没有安转。 } else { $wrap.html('<a href="http://www.adobe.com/go/getflashplayer" target="_blank" border="0"><img alt="get flash player" src="http://www.adobe.com/macromedia/style_guide/images/160x41_Get_Flash_Player.jpg" /></a>'); } return; } else if (!WebUploader.Uploader.support()) { alert( 'Web Uploader 不支持您的浏览器!'); return; } // 实例化 uploader = WebUploader.create({ pick: { id: '#filePicker-2', label: '点击选择图片' }, formData: { uid: 123 }, dnd: '#dndArea', paste: '#uploader', swf: '../Uploader.swf', chunked: false, chunkSize: 512 * 1024, server: './Ajax/UpLoad.ashx', // runtimeOrder: 'flash', accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/*' }, // 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候,把图片打开。 disableGlobalDnd: true, fileNumLimit: 300, fileSizeLimit: 200 * 1024 * 1024, // 200 M fileSingleSizeLimit: 50 * 1024 * 1024 // 50 M }); // 拖拽时不接受 js, txt 文件。 uploader.on( 'dndAccept', function( items ) { var denied = false, len = items.length, i = 0, // 修改js类型 unAllowed = 'text/plain;application/javascript '; for ( ; i < len; i++ ) { // 如果在列表里面 if ( ~unAllowed.indexOf( items[ i ].type ) ) { denied = true; break; } } return !denied; }); uploader.on('dialogOpen', function() { console.log('here'); }); // uploader.on('filesQueued', function() { // uploader.sort(function( a, b ) { // if ( a.name < b.name ) // return -1; // if ( a.name > b.name ) // return 1; // return 0; // }); // }); // 添加“添加文件”的按钮, uploader.addButton({ id: '#filePicker2', label: '继续添加' }); uploader.on('ready', function() { window.uploader = uploader; }); // 当有文件添加进来时执行,负责view的创建 function addFile(file) { alert(file.name); var $li = $( '<li id="' + file.id + '">' + '<p class="title">' + file.name + '</p>' + '<p class="imgWrap"></p>'+ '<p class="progress"><span></span></p>' + '</li>' ), $btns = $('<div class="file-panel">' + '<span class="cancel">删除</span>' + '<span class="rotateRight">向右旋转</span>' + '<span class="rotateLeft">向左旋转</span></div>').appendTo( $li ), $prgress = $li.find('p.progress span'), $wrap = $li.find( 'p.imgWrap' ), $info = $('<p class="error"></p>'), showError = function( code ) { switch( code ) { case 'exceed_size': text = '文件大小超出'; break; case 'interrupt': text = '上传暂停'; break; default: text = '上传失败,请重试'; break; } $info.text( text ).appendTo( $li ); }; if ( file.getStatus() === 'invalid' ) { showError( file.statusText ); } else { // @todo lazyload $wrap.text( '预览中' ); uploader.makeThumb( file, function( error, src ) { var img; if ( error ) { $wrap.text( '不能预览' ); return; } if( isSupportBase64 ) { img = $('<img src="'+src+'">'); $wrap.empty().append( img ); } else { $.ajax('../server/preview.php', { method: 'POST', data: src, dataType:'json' }).done(function( response ) { if (response.result) { img = $('<img src="'+response.result+'">'); $wrap.empty().append( img ); } else { $wrap.text("预览出错"); } }); } }, thumbnailWidth, thumbnailHeight ); percentages[ file.id ] = [ file.size, 0 ]; file.rotation = 0; } file.on('statuschange', function( cur, prev ) { if ( prev === 'progress' ) { $prgress.hide().width(0); } else if ( prev === 'queued' ) { $li.off( 'mouseenter mouseleave' ); $btns.remove(); } // 成功 if ( cur === 'error' || cur === 'invalid' ) { console.log( file.statusText ); showError( file.statusText ); percentages[ file.id ][ 1 ] = 1; } else if ( cur === 'interrupt' ) { showError( 'interrupt' ); } else if ( cur === 'queued' ) { percentages[ file.id ][ 1 ] = 0; } else if ( cur === 'progress' ) { $info.remove(); $prgress.css('display', 'block'); } else if ( cur === 'complete' ) { $li.append( '<span class="success"></span>' ); } $li.removeClass( 'state-' + prev ).addClass( 'state-' + cur ); }); $li.on( 'mouseenter', function() { $btns.stop().animate({height: 30}); }); $li.on( 'mouseleave', function() { $btns.stop().animate({height: 0}); }); $btns.on( 'click', 'span', function() { var index = $(this).index(), deg; switch ( index ) { case 0: uploader.removeFile( file ); return; case 1: file.rotation += 90; break; case 2: file.rotation -= 90; break; } if ( supportTransition ) { deg = 'rotate(' + file.rotation + 'deg)'; $wrap.css({ '-webkit-transform': deg, '-mos-transform': deg, '-o-transform': deg, 'transform': deg }); } else { $wrap.css( 'filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ (~~((file.rotation/90)%4 + 4)%4) +')'); // use jquery animate to rotation // $({ // rotation: rotation // }).animate({ // rotation: file.rotation // }, { // easing: 'linear', // step: function( now ) { // now = now * Math.PI / 180; // var cos = Math.cos( now ), // sin = Math.sin( now ); // $wrap.css( 'filter', "progid:DXImageTransform.Microsoft.Matrix(M11=" + cos + ",M12=" + (-sin) + ",M21=" + sin + ",M22=" + cos + ",SizingMethod='auto expand')"); // } // }); } }); $li.appendTo( $queue ); } // 负责view的销毁 function removeFile( file ) { var $li = $('#'+file.id); delete percentages[ file.id ]; updateTotalProgress(); $li.off().find('.file-panel').off().end().remove(); } function updateTotalProgress() { var loaded = 0, total = 0, spans = $progress.children(), percent; $.each( percentages, function( k, v ) { total += v[ 0 ]; loaded += v[ 0 ] * v[ 1 ]; } ); percent = total ? loaded / total : 0; spans.eq( 0 ).text( Math.round( percent * 100 ) + '%' ); spans.eq( 1 ).css( 'width', Math.round( percent * 100 ) + '%' ); updateStatus(); } function updateStatus() { var text = '', stats; if ( state === 'ready' ) { text = '选中' + fileCount + '张图片,共' + WebUploader.formatSize( fileSize ) + '。'; } else if ( state === 'confirm' ) { stats = uploader.getStats(); if ( stats.uploadFailNum ) { text = '已成功上传' + stats.successNum+ '张照片至XX相册,'+ stats.uploadFailNum + '张照片上传失败,<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>' } } else { stats = uploader.getStats(); text = '共' + fileCount + '张(' + WebUploader.formatSize( fileSize ) + '),已上传' + stats.successNum + '张'; if ( stats.uploadFailNum ) { text += ',失败' + stats.uploadFailNum + '张'; } } $info.html( text ); } function setState( val ) { var file, stats; if ( val === state ) { return; } $upload.removeClass( 'state-' + state ); $upload.addClass( 'state-' + val ); state = val; switch ( state ) { case 'pedding': $placeHolder.removeClass( 'element-invisible' ); $queue.hide(); $statusBar.addClass( 'element-invisible' ); uploader.refresh(); break; case 'ready': $placeHolder.addClass( 'element-invisible' ); $( '#filePicker2' ).removeClass( 'element-invisible'); $queue.show(); $statusBar.removeClass('element-invisible'); uploader.refresh(); break; case 'uploading': $( '#filePicker2' ).addClass( 'element-invisible' ); $progress.show(); $upload.text( '暂停上传' ); break; case 'paused': $progress.show(); $upload.text( '继续上传' ); break; case 'confirm': $progress.hide(); $( '#filePicker2' ).removeClass( 'element-invisible' ); $upload.text( '开始上传' ); stats = uploader.getStats(); if ( stats.successNum && !stats.uploadFailNum ) { setState( 'finish' ); return; } break; case 'finish': stats = uploader.getStats(); if ( stats.successNum ) { alert( '上传成功' ); } else { // 没有成功的图片,重设 state = 'done'; location.reload(); } break; } updateStatus(); } uploader.onUploadProgress = function( file, percentage ) { var $li = $('#'+file.id), $percent = $li.find('.progress span'); $percent.css( 'width', percentage * 100 + '%' ); percentages[ file.id ][ 1 ] = percentage; updateTotalProgress(); }; uploader.onFileQueued = function( file ) { fileCount++; fileSize += file.size; if ( fileCount === 1 ) { $placeHolder.addClass( 'element-invisible' ); $statusBar.show(); } addFile( file ); setState( 'ready' ); updateTotalProgress(); }; uploader.onFileDequeued = function( file ) { fileCount--; fileSize -= file.size; if ( !fileCount ) { setState( 'pedding' ); } removeFile( file ); updateTotalProgress(); }; uploader.on( 'all', function( type ) { var stats; switch( type ) { case 'uploadFinished': setState( 'confirm' ); break; case 'startUpload': setState( 'uploading' ); break; case 'stopUpload': setState( 'paused' ); break; } }); uploader.onError = function( code ) { alert( 'Eroor: ' + code ); }; $upload.on('click', function() { if ( $(this).hasClass( 'disabled' ) ) { return false; } if ( state === 'ready' ) { uploader.upload(); } else if ( state === 'paused' ) { uploader.upload(); } else if ( state === 'uploading' ) { uploader.stop(); } }); $info.on( 'click', '.retry', function() { uploader.retry(); } ); $info.on( 'click', '.ignore', function() { alert( 'todo' ); } ); $upload.addClass( 'state-' + state ); updateTotalProgress(); }); })( jQuery ); ``` ashx文件 ``` <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Web; using System.IO; using System.Text; public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //指定字符集 context.Response.ContentEncoding = System.Text.Encoding.UTF8; if (context.Request["REQUEST_METHOD"] == "OPTIONS") { context.Response.End(); } SaveFile(); } /// <summary> /// 文件保存操作 /// </summary> /// <param name="basePath"></param> private void SaveFile(string basePath = "~/Upload/Images/") { var name = string.Empty; basePath = (basePath.IndexOf("~") > -1) ? System.Web.HttpContext.Current.Server.MapPath(basePath) : basePath; // basePath = FileHelper.GetUploadPath(); HttpFileCollection files = System.Web.HttpContext.Current.Request.Files; //如果目录不存在,则创建目录 if (!Directory.Exists(basePath)) { Directory.CreateDirectory(basePath); } var suffix = files[0].ContentType.Split('/'); //获取文件格式 var _suffix = suffix[1].Equals("jpeg", StringComparison.CurrentCultureIgnoreCase) ? ".jpg" : suffix[1]; var _temp = System.Web.HttpContext.Current.Request["name"]; //如果不修改文件名,则创建随机文件名 //if (!string.IsNullOrEmpty(_temp)) //{ // name = _temp; //} //else //{ Random rand = new Random(24 * (int)DateTime.Now.Ticks); name = rand.Next() + "." + _suffix; //} //文件保存 var full = basePath + name; files[0].SaveAs(full); var _result = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"Imgurl\" : \"" + name + "\"}"; System.Web.HttpContext.Current.Response.Write(_result); } public bool IsReusable { get { return false; } } } ```
jquery ajaxt提交在firefox,chrome下遇到的问题
<p>var str = $('#f1').formSerialize();<span style="white-space: pre;"> </span></p> <p>$.ajax({<br> type:'post',<br> url:'actionHRDemand.php', <br> data:str,<br> dataType:'json', <br> error:function(XMLHttpRequest, textStatus, errorThrown){<br>                         alert(XMLHttpRequest.status+","+XMLHttpRequest.readyState+","+textStatus+","+errorThrown);                         <br> },<br> success:function(result){<br><span style="white-space: pre;"> </span>if(result['num']==1){<br><span style="white-space: pre;"> </span>jQuery("#jqgrid").trigger("reloadGrid")<br><span style="white-space: pre;"> </span>}else{<br><span style="white-space: pre;"> </span>alert('操作失敗');<br><span style="white-space: pre;"> </span>}<br><span style="white-space: pre;"> </span>}<br> }); </p> <p>以上代码在IE6.0中无问题,在firefox,chrome中,无法提交,页面重新加载了.用firebug调试可以看到str数据post到了当前页面,后台保存</p> <p>失败.也就是说没有请求url:'actionHRDemand.php',而是请求的自身页面.百思不得其解.后尝试将async:false,数据可以提交后台保存,</p> <p>但是当前页面任然重新加载.</p> <p>我的form是这样的:&lt;form name="f1" id="f1" action="" method="post" enctype="application/x-www-form-urlencoded"&gt;</p> <p>如果在action中写入'actionHRDemand.php,页面则会跳转到'actionHRDemand.php页面.</p> <p>我在当前页面中还使用了jqgrid插件,在加载时请求数据,是没有问题的但是执行以下代码:</p> <p> </p> <p>//查询</p> <p>function query(){</p> <p>        var accountid = $("#accountid").val(); </p> <p>        var departid = $("#departid").val(); </p> <p>        var proposerid = $('#proposerid').val();</p> <p>        var demandtime = $('#demandtime').val();</p> <p>        var position = $('#position').val();</p> <p>        var howmany = $('#howmany').val();</p> <p>        var matter = $('#matter').val();</p> <p> </p> <p>        if(isNaN(howmany)){</p> <p><span style="white-space: pre;"> </span>alert("請輸入正確的需求人數");</p> <p><span style="white-space: pre;"> </span>return;</p> <p><span style="white-space: pre;"> </span>}<span style="white-space: pre;"> </span></p> <p>       $("#jqgrid").jqGrid('setGridParam',{ </p> <p>            url:'actionHRDemand.php?op=grid',     postData:{'accountid':accountid,'departid':departid,'proposerid':proposerid,'demandtime':demandtime,'position':position,'howmany':howmany,'matter':matter}, </p> <p>            page:1</p> <p>        }).trigger("reloadGrid");</p> <p><span style="white-space: pre;"> </span>}</p> <p>发生了同上面一样的问题,页面重载了.</p> <p>似乎$(function(){});以外的ajax请求全都出问题了.</p> <p> </p> <p>这个问题已经困扰了我好久,特地发出来请广大网友指点.</p>
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐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岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
使用 Python 和百度语音识别生成视频字幕
文章目录从视频中提取音频根据静音对音频分段使用百度语音识别获取 Access Token使用 Raw 数据进行合成生成字幕总结 从视频中提取音频 安装 moviepy pip install moviepy 相关代码: audio_file = work_path + '\\out.wav' video = VideoFileClip(video_file) video.audio.write_...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞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所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
C++内存管理(面试版)
C++的内存管理 一、C++内存管理详解 1、内存的分配方式 (a)(a)(a)栈:编译器分配的内存,用来存储函数的局部变量,函数调用结束后则自动释放内存。 (b)(b)(b)堆:程序员用new分配的内存,一般存储指针;如果程序运行结束的时候没有被释放,则操作系统会自动回收。 (c)(c)(c)自由存储区:程序员用malloc分配的内存,使用free来释放内存。 (d)(d)(d)全局/静态存储区
Spring框架|JdbcTemplate介绍
文章目录一、JdbcTemplate 概述二、创建对象的源码分析三、JdbcTemplate操作数据库 一、JdbcTemplate 概述 在之前的web学习中,学习了手动封装JDBCtemplate,其好处是通过(sql语句+参数)模板化了编程。而真正的JDBCtemplete类,是Spring框架为我们写好的。 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单...
立即提问