怎么样通过js遍历字符串? 5C

图片说明
请问有哪位有经验的大神帮我写下获取红色字符串的代码。感激不尽。

4个回答

var idx = str.indexOf("icon_skill");
var result = str.substring(idx,str.length-3);
调试一下,

不太清楚你要取哪段字符串

 <html>
<head>
    <title>使用RegExp提取字符串</title>
    <script language="javascript" type="text/javascript">
        var reg = /icon_skill_.*_png/;
        var str1 = 'this.ui("iconSpr").startLoad1("icon_skill_"+this._model.getValue("cId")+"_"+"icon_skill"+d["idk"]+"_png")';
        var str2 = 'this.ui("iconSpr").startLoad1("icon_skill_1"+d["idk"]+"_png")';

        alert(matches(reg,str1));
        alert(matches(reg,str2));

        function matches(reg,str){
            var matchesString = reg.exec(str);
            return matchesString;
        }
    </script>
</head>
<body>
</body>
</html>

正则表达式吧,很简单的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JS 字符串遍历问题!!!
下面JS 字符串如何转格式,然后通过遍历每条记录,然后取到每条记录里的每一个值? ![图片说明](https://img-ask.csdn.net/upload/201612/07/1481076390_903005.png)
JavaScript怎么不以字符的形式分割字符
比如这样,输入一串数字456123,将这串数字分割成这样的数组:["4","5","6","1","2","3"] 不单是数字,如果输入的是汉字也是一样,需要遍历字符串里每一个字符然后把每个字符都分割出来,求解JavaScript怎么做。
js 遍历多叉树怎么遍历
从后台获得的json格式字符串如下: [{"thisNode":"10000480","prientNode":"10000480","level":"0","isLeaf":"0","children":[{"level":"1","prientNode":"10000440","thisNode":"10000480","isLeaf":"1","children":[]},{"level":"1","prientNode":"10000441","thisNode":"10000480","isLeaf":"0","children":[{"level":"2","prientNode":"100660","thisNode":"10000441","isLeaf":"1","children":[]}]}]}] 格式有点乱啊,不好意思。 我在前台的js中要怎么遍历出来啊,谢谢。
遍历每一个span 判断如果是字符串1里的字就添加class类名a,如果是字符串2就添加class类名b。
<div> <a href="#">XXXXX</a> <p>XXXX</p> <span>字符串1</span> </div> <div> <a href="#">XXXXX</a> <p>XXXX</p> <span>字符串2</span> </div> <div> <a href="#">XXXXX</a> <p>XXXX</p> <span>字符串1</span> </div> <div> <a href="#">XXXXX</a> <p>XXXX</p> <span>字符串1</span> </div>
js如何循环遍历为map赋值
![图片说明](https://img-ask.csdn.net/upload/201901/25/1548390486_478764.png) temp是一组j'son字符串,现在想循环遍历其中的某个值并把其存入到js创建的新的map里边,但是我这么写最后map里边只是遍历map的最后一个值
该字符串从后台返回 store如何 获取数据,并遍历数据
{"af5e271e-59bb-47b5-a675-f26bbac7fd1a":"22","7f3a622f-1302-4fa4-9163-824938e559a1":"","c41769a5-2e6c-44ce-9200-8a29fe169dac":"","96e9e393-e90b-4da9-8c15-cc85e25329cf":"23","780cf984-9ecd-4951-9279-3706411b7c0f":"11","fa16bcad-ce95-49e4-b1ef-7d8e8af7533f":"33","ba136588-b962-46e4-b790-ebafb30ac8dd":"不需要确认","8d26830a-f917-4fc5-80a2-4f278bdbb119":"不需要确认","51ff1b9d-b88f-45ca-af1c-e2f359f33d42":"1"} var store = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : 'picData' }); reader : new Ext.data.JsonReader({fields: ['uuid', 'value']}) }); store.load({ params: {uuidJson:uuidStr},    callback: function(records, options, success){    //此处需要遍历store 例如 把af5e271e-59bb-47b5-a675-f26bbac7fd1a 为uuid 22为value 希望能够把所有uuid 与value的值都拿到   },   scope: store   //add: true   } ); [b]问题补充:[/b] 没有必要在CallBack中进行设置,因为此时数据未存进store,不好进行处理。 callback的 时候表示 是store 已经加载完了啊 。应该在这里处理的 。
第一次求助,发威吧各位!AngularJs 的ng-repeat 下的ng-model拼接命名问题
<div ng-repeat="week in vm.weekFor"> <select ng-model="vm.model.weekMorning[$index]" options="x.text as x.text for x in vm.comboForPersonData" readonly="readonly" multiple> </select> </div> 在select的ng-model中我想实现ng-model="12345+week.text",也就是说一个字符串加遍历repeat对象的某个属性值,来实现ng-model唯一性该怎么写呢?
JS 中obj[key]++;的含义?前端开发问题
``` <script> var str3 = "kioojroiaognadknfkgoadirojoajgoeirjoijagwoqkep"; //创建一个空对象, 目的:把字母作为键,次数作为值 var obj = { }; //遍历字符串,获取每个字母 for (var i = 0; i < str3.length; i++){ //判断obj这个对象中有没有字母 var key = str3[i];//每个字母 if (obj[key]) {//判断obj中有没有这个键 //对象中有这个字母了 obj[key]++; console.log(obj[key]++); } else { obj[key] = 1; } } // for (var key in obj) { // console.log(key + "这个字母出现了" + obj[key] + "次"); // } </script> ``` 哪位大佬能帮忙解答一下 obj[key]++; 在上述代码中的含义和功能
ajax遍历list集合想要获取String类型,结果出现Object类型
![图片说明](https://img-ask.csdn.net/upload/201710/08/1507471299_981233.jpg) js代码 function queryPage(){ var moneysel=$("#moneysel").val(); var time1=$("#time1").val(); var time2=$("#time2").val(); $.post("ContentSel",{"moneysel":moneysel,"time1":time1,"time2":time2,"pageIndex":pageIndex,"pageSize":pageSize},function(data,status){ if(status){ //移除上个分页数据 $(".even").remove(); $(".odd").remove(); //将返回结果转化为json data=eval("("+data+")"); var list=data.list; for(var i=0;i<list.length;i++){ var name=""; if(i%2==0){ name="class='even'";//偶数 }else{ name="class='odd'";//奇数 } $("#myTable").append("<tr"+name+">"+"<td>"+list[i].id+"</td>"+"<td>"+list[i].content+"</td>"+"<td>"+list[i].sum+"</td>"+"<td>"+list[i].time+"</td>"+"<td>"+list[i].title+list[i].genre+"</td>"+"<td><a>删除</a></td>" +"</tr>"); } pageIndex=data.pageIndex; pageTotal=data.pageTotal; $("#page1").text(pageIndex+"/"+pageTotal); //删除确认操作 $("a.delete").click(function(){ var r=confirm("确定要删除该条记录吗?"); return r; }) } }) } 后台代码部分 Moneyservice ms=new Moneyserviceimpl(); if(moneysel.equals("0")||moneysel.equals("1")){ Page<Money> page=ms.getMyMoneyPage(userId, Integer.parseInt(moneysel), Integer.parseInt(pageIndex), Integer.parseInt(pageSize)); //将集合或对象序列化成json字符串 String json = JSONSerializer.toJSON(page).toString(); PrintWriter writer=response.getWriter(); writer.print(json); writer.close(); }else{ Page<Money> page=ms.getMyMoneyPageNogenry(userId, 1,5); //将集合或对象序列化成json字符串 String json = JSONSerializer.toJSON(page).toString(); PrintWriter writer=response.getWriter(); writer.print(json); writer.close(); return; }
thinkphp 遍历出的username 和session里的username不相等!
小弟才学tp不久,遇到一个奇怪的问题,弄了大半天都没有解决,是这样的 foreach 循环输出留言内容,其中有一个判断相等无法成立,可页面上显示的值却是一样的 ``` <foreach name="tie[1]" item="reply"> <div class="comment-box clearfix" user="self"> <img class="myhead" src="__PUBLIC__/{$reply[0].head}" alt=""/> <div class="comment-content"> <p class="comment-text"><span class="user">{$reply[0].username}:</span>{$reply.content}</p> <p class="comment-time"> {$reply.addtime} <a href="javascript:;" class="comment-praise" total="{$reply.praise}" my="0" style="<if condition='$reply.praise eq 0'><else />display: inline-block</if>"><if condition='$reply.praise neq 0'>{$reply.praise} 赞<else/>赞</if></a> <a href="javascript:;" class="comment-operate"><if condition='$reply[0].username eq $Think.session.username'>删除<else />回复</if></a> <input type="hidden" value="{$reply.id}" class="replysid"/> 对比{$reply[0].username}和{$Think.session.username}差异 </p> </div> </div> </foreach> ``` 其中就是```$reply[0].username eq $Think.session.username```和判断无法成立,可显示在页面上的数据都是一样的,而且没有空格什么的,也应该都是字符串格式。 实在是搞不懂了。。取到的所有变量都没问题,而且其他判断也都正确,唯独这个总是假~~ 求大神指点迷津~~跪谢~~
JS新建构造器实现内建String()的方法和属性
在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性: ``` var s = new MyString(“hello”); s.length;  //5 s[0];  //"h" s.toString();  //"hello" s.charAt(1);  //"e" s.charAt("e");  //"h"  (这个是怎么来的???) s.slice(0,-1);  //"hell" s.split("e");  //["h","llo"] s.reverse();  //"olleh" ```  题目提示用把字符串当做数组用for循环遍历,(但是用for循环不就会用到“.length”属性了吗?)请教大家,谢谢!
SpringMVC页面Ajax传JSON到controller,返回包含多个对象的JSON
做的一个练习,筛选,页面随意勾选多个复选框,局部刷新返回显示与复选框value值匹配的对象数据,传JSON到controller,返回包含多个对象的JSON。controller怎么写?返回JSON后页面怎么处理 $.ajax({ url:"user/screening", type:"post", //请求方式 data:"{\"pwd1\":\""+pwd1+"\",\"pwd2\":\""+pwd2+"\",\"email1\":\""+email1+"\",\"email2\":\""+email2+"\"}",//要发送的数据 dataType:"", //服务器返回的数据类型 //data返回的数据,strStatus状态码(200响应正确),xhr:XMLHttpRequest对象 success:function(data,strStatus,xhr){ //请求成功返回数据后执行的代码 eval("var mydata="+data); //eval()将字符串当成JS脚本执行 $.each(mydata,function(i,item){ //i:遍历的下标,item:遍历出的单个对象 $("#show").html(item.id+item.username+item.password+item.email); }); }, error:function(xhr,strStatus,strError){ //请求失败后执行的代码 alert(strError); } }); public UserController(){ userMap.put("1", new User("1","yiyiyi","123456","yiyiyi@qq.com")); userMap.put("2", new User("2","ererer","123456","ererer@qq.com")); userMap.put("3", new User("3","sansansan","123456","sansansan@qq.com")); userMap.put("4", new User("4","yiyiyi","654321","yiyiyi@qq.com")); userMap.put("5", new User("5","ererer","654321","ererer@qq.com")); userMap.put("6", new User("6","sansansan","654321","sansansan@qq.com")); } @RequestMapping(value="screening",method=RequestMethod.POST) @ResponseBody public Object screening(@RequestBody Object object){ JSONObject jo = JSONObject.fromObject(toString()); List<Object> objects = new ArrayList<Object>(); Screening scr = (Screening)JSONObject.toBean(jo, Screening.class); Iterator<Map.Entry<String, User>> iter = userMap.entrySet().iterator(); while(iter.hasNext()){ Map.Entry<String, User> entry = iter.next(); if(scr.getPwd1().equals(entry.getValue().getPassword()) || scr.getPwd2().equals(entry.getValue().getPassword()) || scr.getEmail1().equals(entry.getValue().getEmail()) || scr.getEmail2().equals(entry.getValue().getEmail())){ objects.add(userMap.get(entry.getKey())); } } return objects; } public class Screening { String pwd1; String pwd2; String email1; String email2;
求助前辈帮忙改下代码
我在自己项目里,有一些问题, ![图片说明](https://img-ask.csdn.net/upload/201701/05/1483571011_680491.png)轮播广告问题: 对应轮播图片的hover总是慢半拍,具体效果看我代码就知道了,谢谢各位~~ ``` 轮播广告 //将imgs数组的内容更新到页面 updateView(){ for(var i=0,lis='',idxs='';i<f0Imgs.length;i++){//遍历imgs数组,同时声明空字符串lis,idxs lis+=`<li><a herf=""><img src="${f0Imgs[i].src}" alt=""/></a></li>`; idxs+=`<li><a href=""><img src="${indexImg[i].src}"></a></li>`; } //设置$ulImgs的内容为lis,设置宽度为imgs数组的元素个数*LIWIDTH this.$ulImgs.html(lis).css('width',f0Imgs.length*this.LIWIDTH); //设置index_box的内容为idxs; //<!--<li class="inline_block"><a href="" class="inline_block hover_block "><b class="caret-to-top"></b><img src="img/display-control-1-1481109913.jpg" alt="" /></a></li>--> $('#banner .index_box').html(idxs).children('li').addClass('inline_block').children('a').addClass('inline_block'); //设置index_box下的当前位置的li的class为hover $('#banner .index_box').children(`li:eq(${f0Imgs[0].i})`).children('a').addClass(' hover_block');//.children('b').addClass('caret-to-top') } };![图片说明](https://img-ask.csdn.net/upload/201701/05/1483570367_405153.jpg)
菜单列表的收缩和重复的问题。。。。醉了。。
![图片说明](https://img-ask.csdn.net/upload/201709/29/1506649646_900565.png) ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script language="JavaScript" src="js/jquery.js"></script> <script type="text/javascript"> $(function(){ //导航切换 $(".menuson .header").click(function(){ var $parent = $(this).parent(); $(".menuson>li.active").not($parent).removeClass("active open").find('.sub-menus').hide(); $parent.addClass("active"); if(!!$(this).next('.sub-menus').size()){ if($parent.hasClass("open")){ $parent.removeClass("open").find('.sub-menus').hide(); }else{ $parent.addClass("open").find('.sub-menus').show(); } } }); // 三级菜单点击 $('.sub-menus li').click(function(e) { $(".sub-menus li.active").removeClass("active") $(this).addClass("active"); }); $('.title').click(function(){ var $ul = $(this).next('ul'); $('dd').find('.menuson').slideUp(); if($ul.is(':visible')){ $(this).next('.menuson').slideUp(); }else{ $(this).next('.menuson').slideDown(); } }); }) </script> <script> //页面载入加载所有的一级菜单 $(function(){ //从session作用域中获取当前用户的角色id(rid) var rid = ${UserInfo.role.rid}; //利用jquery的ajax去数据库中查询所有的一级菜单 $.get("user.action",{operation:'loadMenu',rid:rid,pmid:0},function(result){ //判断result非空 if(result != ""){ //将json字符串数组转换成json对象数组 var menuList = JSON.parse(result); //遍历menuList if(menuList.length>0){ for(var i=0;i<menuList.length;i++){ var menu = menuList[i]; //在菜单选项显示部分添加一级菜单 $("#lm").append("<dd><div class='title' onclick='load("+rid+","+menu.mid+");'><span><img src='images/leftico04.png' /></span>"+menu.mname+"</div><ul class='menuson' id='"+menu.mid+"'></ul></dd>"); } } } }); }); //当单击一级菜单时加载二级菜单 function load(userRid,pmid){ var $ul = $(this).next('ul'); $('dd').find('.menuson').slideUp(); if($ul.is(':visible')){ $(this).next('.menuson').slideUp(); }else{ $(this).next('.menuson').slideDown(); } //清空ul标签内容 $("#"+pmid).empty();--------------------------这个就是表明需要清空以前看过的菜单意思就是不会出现重复的菜单。。但是一开始这个是可以的,后来不知道为甚什么不起作用了。。 //利用ajax查询二级菜单内容 $.get("user.action",{operation:'loadMenu',rid:userRid,pmid:pmid},function(result){ //判断result非空 if(result != ""){ //将json字符串数组转换成json对象数组 var menuList = JSON.parse(result); //遍历menuList if(menuList.length>0){ for(var i=0;i<menuList.length;i++){ var menu = menuList[i]; //在菜单选项显示部分添加二级菜单 $("#"+pmid).append("<li><cite></cite><a href='"+menu.url+"' target='rightFrame'>"+menu.mname+"</a><i></i></li>"); } } } }); $("#"+pmid).slideDown(); } </script> </head> <body style="background:#f0f9fd;"> <div class="lefttop"><span></span>系统功能</div> <dl class="leftmenu" id="lm"> <!-- <dd><div class="title"><span><img src="images/leftico04.png" /></span>用户管理</div> <ul class="menuson"> <li><cite></cite><a href="#">查询所有用户信息</a><i></i></li> <li><cite></cite><a href="#">添加用户信息</a><i></i></li> <li><cite></cite><a href="#">其他</a><i></i></li> </ul> </dd> --> </dl> </body> </html> ``` 一开始好好的,那个清空ul的标签内容是可以运行的,菜单不会重复,但是不知道后来怎么了,就变得开始重复了。。。。 ``` ![图片说明](https://img-ask.csdn.net/upload/201709/29/1506649336_264881.png) 不清楚这是怎么了,为什么突然间代码不起作用了。。??
动态添加name属性相同的select2标签多选下拉框 如何取值和赋值
**问题描述:** 所有下标值混合一块 ; **需要实现的效果:** 心 肺 小肠 对应id 分别1、2、3 作为一组 xuewei_id[0] 第二行 对应下标为 xuewei_id[1] ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533115383_492903.png) ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533116123_928546.png) 图3 这个是直接接受 select2 标签的穴位id ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533116308_133310.png) js代码 ``` // 显示修改关键字症状界面 function updateView(id, system_id) { $("#btntype").val(1); $("#Submit1").click(function() { add(1); }); $ .ajax({ type : "POST", url : "/erzhentang/manage/forAjax.do?requestType=12.1", data : "id=" + id + "&system_id=" + system_id, // 发送到服务器的数据默认id是结论id success : function(msg) { $("#xuewei_id").val("1,2,3").select2(); /* alert(msg); */ var json = eval('(' + msg + ')'); document.getElementById("addModel").style.display = "block"; document.getElementById("id1").value = json.earScanJielun.id; document.getElementById("system_id1").value = json.earScanJielun.system_id; /* 遍历所属系统下所有 耳穴频扫疾病项 */ var arrESJ = eval(json.listEarScanJibing);// arrESJ是一个数组 var checkESJ = document.getElementById("jibing_num1"); var str2 = ""; for (var j = 0; j < arrESJ.length; j++) { str2 += "<option value=\"" + arrESJ[j].jibing_num + "\">" + arrESJ[j].name + "</option>"; var checkESJ2 = arrESJ[j].name; if (arrESJ[j].jibing_num == json.earScanJielun.jibing_num) {// 疾病编号人为控制每个编号都是唯一 arrESJ[j].name = "selected='selected'"; } $("#jibing_num1").html(str2); } document.getElementById("jibing_num1").value = json.earScanJielun.jibing_num; document.getElementById("jielun_rank1").value = json.earScanJielun.jielun_rank; document.getElementById("jielun1").value = json.earScanJielun.jielun; /* 下半截部分组合表动态展示修改和添加 */ var arrESC = eval(json.listEarScanCp);// arrESC是一个数组频扫结论组合表 var str = ""; var str1 = ""; for (var i = 0; i < arrESC.length; i++) { str += "<tr>"; str += "<td colspan=\"8\">"; str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">"; str += "<div style=\"float: left;\">"; str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" >" + arrESC[i].id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >" var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签 /* * 下拉框主要是应展示项和所有下拉选项的值判断是否对应 分清主和客 * 所有展示项目为主表客表的某一项值和遍历主表的值对应 这里面 下拉框所有选项值是主表 */ var str1 = ""; for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect.options[j].value); str += "<option value=\"" + myselect.options[j].value + "\" " + (myselect.options[j].value == arrESC[i].gender ? "selected='selected'" : "") + ">" + myselect.options[j].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" >" + arrESC[i].min_age + "</textarea>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" >" + arrESC[i].max_age + "</textarea>"; // str += "<textarea style=\"width: // 300px;margin-left:10px;\" id=\"xuewei_id\" // name=\"xuewei_id\" >" // + arrESC[i].xuewei_id + "</textarea>"; // str +="<div id=\"selectSection\">"; /* * id=\"xuewei_id\" */ str += "<textarea style=\"width:300px;margin-left:10px;display:none;\" id=\"xuewei_id1\" name=\"xuewei_id1\" >" + arrESC[i].xuewei_id + "</textarea>"; // str += "<div id=\"selectSection\" name=\"selectSection\">"; str += "<select style=\"width: 300px;margin-left:10px;\" name=\"xuewei_id\"class=\"combox\" multiple >" str += "<optgroup label=\"小辈儿组\">"; str += "<option value=\"1\" " + "selected='selected'" + ">心</option>"; str += "<option value=\"2\" " + "selected='selected'" + ">" + "肺" + "</option>"; str += "<option value=\"3\" " + "selected='selected'" + ">" + "小肠" + "</option>"; str += "<option value=\"4\">" + "口" + "</option>"; str += "<option value=\"5\">" + "食道" + "</option>"; str += "</optgroup>"; // str += "</div>"; /* 进一步转换频扫组合表穴位id字符串转array数组 */ /* * var strXueweiId = arrESC[i].xuewei_id; var * arrayXueweiId = strXueweiId.split(","); * * for (var j = 0; j < arrayXueweiId.length; j++) { str2 += "<option * value=\"" + arrayXueweiId[j].value + "\">" + * arrayXueweiId[j].value + "</option>"; var checkESJ2 = * arrayXueweiId[j].name; if (arrayXueweiId[j] == 5) { * arrayXueweiId[j] = "selected='selected'"; } * $("#jibing_num1").html(str2); } */ "</select>"; // // $("#xuewei_id").val("1,2,3").select2(); str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" >" + arrESC[i].chuzhen_id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >" var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签 for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect1.options[k].value); str += "<option value=\"" + myselect1.options[k].value + "\" " + (myselect1.options[k].value == arrESC[i].bp ? "selected='selected'" : "") + ">" + myselect1.options[k].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;margin-top: 0px;\" id=\"jielun_conform\" name=\"jielun_conform\">" + arrESC[i].jielun_conform + "</textarea>"; str += "</div>"; str += "<div >"; str += " <input type=\"button\" onclick=\"delRow(this," + arrESC[i].id + "," + arrESC[i].bianzhengId + ")\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">"; str += "</div>"; str += "</div>"; str += "</td>"; str += "</tr>"; /* 替换静态页面 */ $("#tbody1").html(str); select2Execute(); } } }); } ``` 执行select2方法 ``` /* 执行select2方法 */ function select2Execute() { $(function() { $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px' }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); alert($("select[name='xuewei_id']").select2('data')[0].text); // $("#selectSection").find("select.xuewei_id").val(); // document.getElementById("selectSection").value=$("select[name='xuewei_id']").select2('data'); $("#xuewei_id1").val( $("select[name='xuewei_id']").select2('data'));//赋值给textarea隐藏的标签 alert($("#xuewei_id1").val()); }); } ```
name属性相同的两个个select2标签值合并到一个数组里了 如何获取每一个name对应标签的值
前端页面图片 ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533139054_790764.png) 后台代码图片 ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533138301_780928.png) js代码 ``` // 显示修改关键字症状界面 function updateView(id, system_id) { $("#btntype").val(1); $("#Submit1").click(function() { add(1); }); $ .ajax({ type : "POST", url : "/erzhentang/manage/forAjax.do?requestType=12.1", data : "id=" + id + "&system_id=" + system_id, // 发送到服务器的数据默认id是结论id success : function(msg) { $("#xuewei_id").val("1,2,3").select2(); /* alert(msg); */ var json = eval('(' + msg + ')'); document.getElementById("addModel").style.display = "block"; document.getElementById("id1").value = json.earScanJielun.id; document.getElementById("system_id1").value = json.earScanJielun.system_id; /* 遍历所属系统下所有 耳穴频扫疾病项 */ var arrESJ = eval(json.listEarScanJibing);// arrESJ是一个数组 var checkESJ = document.getElementById("jibing_num1"); var str2 = ""; for (var j = 0; j < arrESJ.length; j++) { str2 += "<option value=\"" + arrESJ[j].jibing_num + "\">" + arrESJ[j].name + "</option>"; var checkESJ2 = arrESJ[j].name; if (arrESJ[j].jibing_num == json.earScanJielun.jibing_num) {// 疾病编号人为控制每个编号都是唯一 arrESJ[j].name = "selected='selected'"; } $("#jibing_num1").html(str2); } document.getElementById("jibing_num1").value = json.earScanJielun.jibing_num; document.getElementById("jielun_rank1").value = json.earScanJielun.jielun_rank; document.getElementById("jielun1").value = json.earScanJielun.jielun; /* 下半截部分组合表动态展示修改和添加 */ var arrESC = eval(json.listEarScanCp);// arrESC是一个数组频扫结论组合表 var str = ""; var str1 = ""; for (var i = 0; i < arrESC.length; i++) { str += "<tr>"; str += "<td colspan=\"8\">"; str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">"; str += "<div style=\"float: left;\">"; str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" >" + arrESC[i].id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >" var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签 /* * 下拉框主要是应展示项和所有下拉选项的值判断是否对应 分清主和客 * 所有展示项目为主表客表的某一项值和遍历主表的值对应 这里面 下拉框所有选项值是主表 */ var str1 = ""; for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect.options[j].value); str += "<option value=\"" + myselect.options[j].value + "\" " + (myselect.options[j].value == arrESC[i].gender ? "selected='selected'" : "") + ">" + myselect.options[j].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" >" + arrESC[i].min_age + "</textarea>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" >" + arrESC[i].max_age + "</textarea>"; // str += "<textarea style=\"width: // 300px;margin-left:10px;\" id=\"xuewei_id\" // name=\"xuewei_id\" >" // + arrESC[i].xuewei_id + "</textarea>"; // str +="<div id=\"selectSection\">"; /* * id=\"xuewei_id\" */ str += "<textarea style=\"width:300px;margin-left:10px;display:none;\" id=\"xuewei_id1\" name=\"xuewei_id1\" >" + arrESC[i].xuewei_id + "</textarea>"; // str += "<div id=\"selectSection\" name=\"selectSection\">"; str += "<select style=\"width: 300px;margin-left:10px;\" name=\"xuewei_id\"class=\"combox\" multiple >" str += "<optgroup label=\"小辈儿组\">"; str += "<option value=\"1\" " + "selected='selected'" + ">心</option>"; str += "<option value=\"2\" " + "selected='selected'" + ">" + "肺" + "</option>"; str += "<option value=\"3\" " + "selected='selected'" + ">" + "小肠" + "</option>"; str += "<option value=\"4\">" + "口" + "</option>"; str += "<option value=\"5\">" + "食道" + "</option>"; str += "</optgroup>"; // str += "</div>"; /* 进一步转换频扫组合表穴位id字符串转array数组 */ /* * var strXueweiId = arrESC[i].xuewei_id; var * arrayXueweiId = strXueweiId.split(","); * * for (var j = 0; j < arrayXueweiId.length; j++) { str2 += "<option * value=\"" + arrayXueweiId[j].value + "\">" + * arrayXueweiId[j].value + "</option>"; var checkESJ2 = * arrayXueweiId[j].name; if (arrayXueweiId[j] == 5) { * arrayXueweiId[j] = "selected='selected'"; } * $("#jibing_num1").html(str2); } */ "</select>"; // // $("#xuewei_id").val("1,2,3").select2(); str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" >" + arrESC[i].chuzhen_id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >" var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签 for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect1.options[k].value); str += "<option value=\"" + myselect1.options[k].value + "\" " + (myselect1.options[k].value == arrESC[i].bp ? "selected='selected'" : "") + ">" + myselect1.options[k].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;margin-top: 0px;\" id=\"jielun_conform\" name=\"jielun_conform\">" + arrESC[i].jielun_conform + "</textarea>"; str += "</div>"; str += "<div >"; str += " <input type=\"button\" onclick=\"delRow(this," + arrESC[i].id + "," + arrESC[i].bianzhengId + ")\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">"; str += "</div>"; str += "</div>"; str += "</td>"; str += "</tr>"; /* 替换静态页面 */ $("#tbody1").html(str); select2Execute(); } } }); } ``` 执行select2方法 ``` /* 执行select2方法 */ function select2Execute() { $(function() { $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px' }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); alert($("select[name='xuewei_id']").select2('data')[0].text); // $("#selectSection").find("select.xuewei_id").val(); // document.getElementById("selectSection").value=$("select[name='xuewei_id']").select2('data'); $("#xuewei_id1").val( $("select[name='xuewei_id']").select2('data'));//赋值给textarea隐藏的标签 alert($("#xuewei_id1").val()); }); } ```
反范式数据表与实体类设计问题
商品有多张商品图片,一对多关系。<br> 项目中采用单表设计,沿用太久,原因就不追溯了,也没有动改它结构的念头。<br> 忽略其它字段,product表包含img1Path、img2Path、img3Path……img10Path,对应的product实体类也包含这10个成员变量。(path即图片链接,字符串)<br> 目前img1Path到img10Path都可能为空,需要遍历;也没有采用数据传输对象,用map返回。<br> 所以页面需要带一张图片的商品时,原本业务代码大概如下: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", p.getImg1Path() != null ? p.getImg1Path() : p.getImg2Path() != null ? p.getImg2Path() : p.getImg3Path() != null ? p.getImg3Path() : p.getImg4Path() != null ? p.getImg4Path() : p.getImg5Path() != null ? p.getImg5Path() : p.getImg6Path() != null ? p.getImg6Path() : p.getImg7Path() != null ? p.getImg7Path() : p.getImg8Path() != null ? p.getImg8Path() : p.getImg9Path() != null ? p.getImg9Path() : p.getImg10Path() != null ? p.getImg10Path() : null); ``` <hr> 这样复用性差,我把抽取getImgPath(Product product)方法到service层: ``` public String getImgPath(p) { return p.getImg1Path() != null ? p.getImg1Path() : p.getImg2Path() != null ? p.getImg2Path() : p.getImg3Path() != null ? p.getImg3Path() : p.getImg4Path() != null ? p.getImg4Path() : p.getImg5Path() != null ? p.getImg5Path() : p.getImg6Path() != null ? p.getImg6Path() : p.getImg7Path() != null ? p.getImg7Path() : p.getImg8Path() != null ? p.getImg8Path() : p.getImg9Path() != null ? p.getImg9Path() : p.getImg10Path() != null ? p.getImg10Path() : null; } ``` 上面的业务代码可以改写为: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", productService.getImgPath(p)); ``` 有些字段字段通过实体类的方法获取,有些通过业务层的方法获取,不优雅。 <hr> 其实能不能这样做,在product实体类中增加一个成员变量imgPath(数据表没有与之对应的imgPath字段)。<br> 该成员变量无set方法,有get方法,如下:<br> ``` public class Product { private String img1Path; // …… private String img10Path; private String imgPath; public String getImgPath() { this.imgPath = this.img1Path != null ? this.img1Path : this.i2Path != null ? this.img2Path : this.img3Path != null ? this.img3Path : this.img4Path != null ? this.img4Path : this.img5Path != null ? this.img5Path : this.img6Path != null ? this.img6Path : this.img7Path != null ? this.img7Path : this.img8Path != null ? this.img8Path : this.img9Path != null ? this.img9Path : this.img10Path != null ? this.img10Path : null; return this.imgPath; } } ``` 上面的业务代码可以改写为: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", p.getImgPath()); ``` 甚至这个pMap也不封装了,直接返回p对象,模板引擎通过p.imgPath获取这个一个图片路径(突然想到,自己先去试一下)。<br> 实体类这样写,是否更方便、合理? <hr><hr> 验证了一下上面突如其来的猜想,结果如下: ``` public class Product { private String img1Path; // …… private String img10Path; public String getImgPath() { return this.img1Path != null ? this.img1Path : this.i2Path != null ? this.img2Path : this.img3Path != null ? this.img3Path : this.img4Path != null ? this.img4Path : this.img5Path != null ? this.img5Path : this.img6Path != null ? this.img6Path : this.img7Path != null ? this.img7Path : this.img8Path != null ? this.img8Path : this.img9Path != null ? this.img9Path : this.img10Path != null ? this.img10Path : null; } } ``` 即不需要添加字段,可以直接添加一个get方法,方法名与本来想添加的字段字段名一致。<br> 例如字段为:xxXxx,则添加的方法为:getXxXxx()。<br> 后台把product放到json里返回到js(项目用的是AvalonJS 1.5),js可以通过product.xxXxx直接拿到数据。这跟之前用过的freemarker类似,.xxXxx取值调用的是getXxXxx()方法。
Ajax使用-当选中职位类别时,它所对应的父岗位ID就会用复选框方式显示出来
控制器内: public ModelAndView addPosition() { Map<String, Object> map = new HashMap<String, Object>(); return new ModelAndView("admin/positionAdd",map); } public String savePosition(HttpServletRequest request) throws IOException { String post_type = request.getParameter("post_type"); String post_code = request.getParameter("post_code"); String post_name = request.getParameter("post_name"); String post_duties = request.getParameter("post_duties"); String parent_id = request.getParameter("parent_id"); String check_state = request.getParameter("check_state"); String check_note = request.getParameter("check_note"); String state = request.getParameter("state"); Position position = new Position(); position.setId(Common.returnUUID()); position.setPost_type(post_type); position.setPost_code(post_code); position.setPost_name(post_name); position.setPost_duties(post_duties); position.setParent_id(parent_id); position.setCheck_state(check_state); position.setCheck_note(check_note); position.setState(state); positionService.insert(position); return "redirect:positionList.do"; } @RequestMapping("admin/editPosition.do") public ModelAndView editPosition(ModelMap modelMap, String id) { Position position = (Position) positionService.selectByID(id); modelMap.put("p", position); return new ModelAndView("admin/positionEdit", modelMap); } public String editPosition(@ModelAttribute("Position") Position position) throws IOException { positionService.update(position); return "redirect:positionList.do"; } public String deletePosition(String id) { Position position = new Position(); position.setId(id); positionService.delete(position); return "redirect:positionList.do"; } public String positionList(HttpSession session, HttpServletRequest request,HttpServletResponse response) { String post_type = request.getParameter("post_type"); @SuppressWarnings("unchecked") List<Position> pList = this.positionService.selectList(post_type); StringBuffer sb= new StringBuffer(); sb.append("<tr id = 'select'>"); for (Position position : pList) { sb.append("<td> <input type='checkbox' id='position' name='position' value ='"+position.getPost_code()+"'>" +position.getPost_name()+ "</td>"); } sb.append("</tr>"); try { response.getWriter().println(sb.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } JSP页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"></script> <title>添加企业岗位</title> <script type="text/javascript"> function changeCK() { var selectedValue = document.getElementById("post_type"); var selectedIndex = selectedValue.selectedIndex; var ajaxUrl = "duiying.do?post_type=" + selectedValue.options[selectedIndex].value; ajaxFunction(ajaxUrl); document.getElementById("scope").style.display = ""; } function getScope() { } function setVals() { var id = document.getElementsByName("position"); var value = ""; var name = ""; for(var i = 0; i < id.length; i++){ if(id[i].checked) value += id[i].value+","; name += id[i].text+","; } //alert(value); document.getElementById("parent_id").value = value;//"111,222"; document.getElementById("temp1").value = name;//"111,222"; document.getElementById("scope").style.display = "none"; } function ajaxFunction(url) { //考虑到不同浏览器的兼容性,所以做出判断。 var xmlHttp; if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else if (window.ActiveObject) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } //监控和接受后台传的字符串 xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { var result = xmlHttp.responseText; //document.getElementById("select").html(); //alert(result); $("#select").html(result); //select fenge(result); //"<p><input type='checkbox' id='checkbox' name='${ts.practice_code}' value='${ts.stu_code}' > ${ts.stu_name}+ ${ts.practice_code}</p>"; } }; xmlHttp.open("GET",url,false); xmlHttp.send(null); } //分割解析字符串。 function fenge(neirong) { } </script> </head> <body> <form name="form1" id="myform" method="post" action="doAddPosition.do"> <table border="0" width="400"> <tr> <td width="100">职位类别:</td> <td width="300"><select name="post_type" id="post_type" onChange="changeCK()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select></td> </tr> <tr> <td width="100">岗位编码:</td> <td width="300"><input type="text" name="post_code" /></td> </tr> <tr> <td width="100">岗位名称:</td> <td width="300"><input type="text" name="post_name" /></td> </tr> <tr> <td width="100">岗位职责:</td> <td width="300"><input type="text" name="post_duties" /></td> </tr> <tr> <td width="100">父岗位id:</td> <td width="300"><input type="text" name="parent_id" /></td> </tr> <tr> <td width="100">审核备注:</td> <td width="300"><input type="text" name="check_note" /></td> <tr> <td width="100">状态:</td> <td width="300"><select name="state" id="state"> <option value="1">有效</option> <option value="2">无效</option> </select> </td> </tr> </table> <div id="scope" style="display:none"> <table> <tr id = "select"><td>请选择</td></tr> </table> <button type="button" onClick="setVals()">确定</button> </div> <div style="margin-top:20px;"> <input type="submit" value="保存" />&nbsp;&nbsp;&nbsp;&nbsp; <button type="button" onclick="window.location='./positionList.do'">返回</button> </div> </form> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>修改企业岗位</title> <script language="javascript"> function changeBoxes(action) { var oForm = document.forms["myForm1"]; var oCheckBox = oForm.college; for(var i=0;i<oCheckBox.length;i++) //遍历每一个选项 if(action<0) //反选 oCheckBox[i].checked = !oCheckBox[i].checked; else //action为1是则全选,为0时则全不选 oCheckBox[i].checked = action; }</script> </head> <body> <form name="form1" method="post" action="doEditPosition.do"> <input type="hidden" name="id" name="id" value="${p.id}"> <table border="1" width="400"> <tr> <td width="100">职位类别:</td> <td width="300"><input type="text" name="post_type" value="${p.post_type}"> </td> </tr> <tr> <td width="100">岗位编码:</td> <td width="300"><input type="text" name="post_code" value="${p.post_code}"> </td> </tr> <tr> <td width="100">岗位名称:</td> <td width="300"><input type="text" name="post_name" value="${p.post_name}"> </td> </tr> <tr> <td width="100">岗位职责:</td> <td width="300"><input type="text" name="post_duties" value="${p.post_duties}" /> </td> </tr> <tr> <td width="100">父岗位id:</td> <td width="300"><input type="text" name="parent_id" value="${p.parent_id}" /> </td> </tr> <tr> <td width="100">审核备注:</td> <td width="300"><input type="text" name="check_note" value="${p.check_note}" /> </td> </tr> <tr> <td width="100">状态:</td> <td width="300"><input type="text" name="state" value="${p.state}" /> </td> </tr> </table> <div style="margin-top:20px;"> <input type="submit" value="保存" />&nbsp;&nbsp;&nbsp;&nbsp; <button type="button" onclick="window.location='./positionList.do'">返回</button> </div> </form> </body> </html>
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
前后端分离后,维护接口文档基本上是必不可少的工作。 一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2 就是其中之一,至于其他类似功能但是却收费的软...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
天天学JAVA-JAVA基础(6)
如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA 中最常使用字符串常量String相关知识。 1.String简介 2.创建字符串对象两种方式的区别 3.String常用的方法 4.String的不可变性 5.一道阿里面试题,你会做吗? 1.String简介 1.1String源码 首先看一段String源码,String主要实现了Serializable、Compar...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
2020 网络课 智慧树自动刷课代码,自动跳转,自动答题并关闭弹窗,自动1.5倍速静音
刷课一时爽,一直刷课一直爽! 终于让我找到了这个黑客代码了,教程开始: 只限谷歌浏览器和火狐浏览器使用,如果第一次失败,请重新试一下次 将下面代码复制后,进入浏览器按F12键,先点击console 然后Ctrl+v复制代码 最后按回车键即可 var ti = $("body"); var video = $(".catalogue_ul1 li[id*=video-]"); var i = 1;...
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估...
写1行代码影响1000000000人,这是个什么项目?
不带钱不带卡,只带手机出门就能畅行无阻,这已是生活的常态。益普索发布的《2019第一季度第三方移动支付用户研究》报告显示,移动支付在手机网民中的渗透率高达95.1%,截至今年1月,支付宝全球用户数已经突破10亿。你或许每天都会打开支付宝,付款购物、领取权益、享受服务……但你或许不知道的是,在这个方便、快捷、智能化的APP背后,有一群年轻的技术人,用智慧和创新让它每天都变得更“聪明”一点。 ...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
一点一滴记录 Java 8 stream 的使用
日常用到,一点一滴记录,不断丰富,知识积累,塑造自身价值。欢迎收藏 String 转 List String str = 1,2,3,4; List&lt;Long&gt; lists = Arrays.stream(str.split(",")).map(s -&gt; Long.parseLong(s.trim())).collect(Collectors.toList()); Lis...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问