360的浏览器内核选择是如何实现的?

使用360浏览器的时候可以选择兼容IE模式的内核,可以是IE6-10,可是我的电脑只装了ie8,那么其他内核的选择,360是如何实现的?
360浏览器的内核选择

1个回答

ie内核就是一些dll库,可以通过调用不同版本的dll实现同一个系统加载不同的ie内核。
360这个功能其实也不是它发明的,很早以前就有ietest就做到了。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复wild84: ie8并不能调用ie10内核。360自己开发了一个浏览器外壳,可以报告兼容的user-agent给你的服务器。
大约 2 年之前 回复
wild84
wild84 也就是说,如果我的网页不支持ie8,那我也可以判断是ie8浏览器去调用ie10的内核去渲染?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
360浏览器无法通过域名访问任何网页,但是IE浏览器可以,这该怎么解决
360浏览器和除IE浏览器本身以外的IE内核浏览器都不能通过域名打开网页,IE浏览器本身是可以的。而且360浏览器可以通过百度的ip地址来访问百度首页,但是其他网页即便用ip地址也不能访问,该怎么解决这个问题呢?
web开发中遇到的浏览器问题
最近终于把项目弄的七七八八了,测试中发现因为一直使用谷歌浏览器开发,没什么问题,但是使用360极速浏览器的时候,一些基本的增删改,在数据库中都已经删除或添加了的,页面确怎么也出不来,开始还怀疑是360极速浏览器的问题,切换到普通的360浏览器也存在这样的问题,我记得他们用的内核是一样的啊,其他的还没测试,这是浏览器问题还是我项目问题?其中就是用360浏览器本地项目运行是没问题的,放到云上才会出现那样的情况
如何强制360这样的浏览器用webkit内核打开页面
![图片说明](https://img-ask.csdn.net/upload/201609/02/1472807498_468281.png) 就像这样,是怎么做到的
360浏览器与iframe标签兼容性问题
测试环境360浏览器进入页面显示空白,手动修改iframe的样式或者刷新页面即可显示,什么原因?如何解决?百度的加入meta渲染、内核也试了,没效果。。。还是说meta顺序有关系?![图片说明](https://img-ask.csdn.net/upload/201704/11/1491911262_223284.png)
浏览器访问服务器的问题
我在服务器上发布了一个网站 但是只能通过IE浏览器(360具有IE内核的也可以)才能访问 google firefox都不行 请问各位大神是什么问题
在py3.6版本的anaconda环境的下的jupyter notebook共存py2和py3内核问题?
各位,请教下:我在基于py3.6的anaconda的jupyter notebook里多安装一个py2的内核,装完后在jupyter notebook点击new按钮后,确实有python2和python3![图片说明](https://img-ask.csdn.net/upload/201907/22/1563769410_111477.png) 但是每次切换,点python2,就总是提示该内核已经died,重启也一样![图片说明](https://img-ask.csdn.net/upload/201907/22/1563769633_966159.png)![图片说明](https://img-ask.csdn.net/upload/201907/22/1563769647_360468.png) 我的步骤是以下这样的: 1、先给anaconda安一个py2环境:conda create newpy27 python=2.7; 2、激活newpy27环境:activate newpy27 3、conda install ipykernel 4、python -m ipkernel install --user ★这个问题我搜了两天,很多相关联的帖子,但没有一个帖子有说到py2内核died的问题。 ★另外一个问题是,只有谷歌浏览器可以打开jupyter notebook(用conda prompt进入的jupyter notebook),也可以切换py3内核,但换成其他浏览器就不行了(360浏览器、火狐),这又是为何? 以上2个问题,折磨了我这个菜鸟2天了,无法破,求各位大神看看,菜鸟我感激不尽!
谷歌浏览器无法加载ocx控件和C#写的dll控件,是签名问题吗?
公司的一个销售系统读取IC卡和读取地磅数据时需要用到一些控件,360的极速模式应该是谷歌内核加载不上控件当然谷歌浏览器也这样,有的地方网速不好客户需要使用极速模式,但我在网上查找了资料有说不兼容,不知道是不是,如果是不兼容该怎么解决
自己开发程序,用到webbrowser控件,切换IE兼容模式.
自己开发CS程序,用到webbrowser控件(IE浏览器控件),来展示网页。 为了兼容老系统网页(这些网页都是他人开发的,都是老系统,不修改了,有ocx等等)。 现在开发这程序,可能打开好几个网页,而不同网页,需要用到不同IE内核,如可以指定IE7--IE10。 网上说的修改注册表的方法,不能用,那样就要 来回修改注册表了。 而360浏览器,实现了自由切换兼容模式:IE7--IE11,可任意切换,未发现修改注册表。 各位大神、帅哥、美女,有知道的吗? 如果使用webbrowser,只能修改注册表的话,那有其它办法,如使用其它控件、dll等等? 感觉分少的话,可以加。 请告诉下,不胜感激。
公网ip在360兼容模式下访问已发布网站会出现样式丢失
1. 已经通过win2003 服务器上的iis发布了网站,可以通过公网ip和域名访问了,但是前者在360兼容模式下会出现样式丢失的情况,后者则不会出现问题(在非ie内核和ie11的浏览器中不会出现这种问题) 2. 谷歌出来的结果说是要把css的引入设置为相对路径,以下是我更换的代码 更换前: ``` <link rel="stylesheet" href="css/new-css.css"> ``` 更换后: ``` <link rel="stylesheet" href="./css/new-css.css"> ``` - 我觉得应该是我对相对路径的理解错了,因为我觉得上面的更改纯属无用功,求大神讲解一下,谢谢
如何用JavaScript实现方位角计算并且调用指针指示角度?
``` ```<!DOCTYPE html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta content="always" name="referrer"> <meta name="theme-color" content="#2932e1"> <title>RCP For A320NG</title> </head> <body> <style> .shu { width: 2px; font-size: 15px; word-wrap: break-word; } @font-face{ font-family: digital-display; src: url('digital-display.ttf'), url('digital-display.eot'); /* IE9+ */ } .Digits{ position:absolute; top:120px;left:10px; height:60px;width:230px; line-height:60px; color:white; font-size:70px;font-family:digital-display; display:block; float:left; text-align:right; } .to_top { width: 0; height: 0; border-bottom: 30px solid white; border-left: 20px solid transparent; border-right: 20px solid transparent; } .top{ width: 0; height: 0; border-bottom: 30px solid white; border-left: 20px solid transparent ; border-right: 20px solid transparent ; } </style> <div id="DME1" class = "Digits" style="">1.300</div> <div id="DME2" class = "Digits" style="left:260px;">----</div> <div id="asd"style="position: absolute; top:600px;left:200px;font-family: Microsoft YaHei;letter-spacing:5px;color:white;">ADF</div> <div id="asd1"style="position: absolute; top:600px;left:350px;font-family: Microsoft YaHei;letter-spacing:5px;color:white;">ADF</div> <div id="asd2"class="shu" style="position: absolute; left:80px;top:470px;font-family: Microsoft YaHei;color:white;">VOR</div> <div id="asd3"class="shu" style="position: absolute; left:480px;top:470px;font-family: Microsoft YaHei;color:white;">VOR</div> <div id="mat"class="to_top" style="position: absolute; left:60px;top:570px;color:white;"></div> <div id="mat2"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:600px;background:white;"></div> <div id="mat3"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:615px;background:white;"></div> <div id="mat4"style="position: absolute; width:10px;height:10px;border:1px solid white;left:75px;top:630px;background:white;"></div> <div id="ExchangeBtn" class="button" style="position:absolute; left:470px;top:600px;font-size:90px;font-weight:bold;font-family: Microsoft YaHei;line-height:15px;color:white;">&#8679;</div> <canvas id="solar" style="border:0px solid;left:10px;top:10px;position:absolute;z-index:-1;width:560px;height:670px;scale:0.5;"></canvas> <div id="Message" ></div> <div id="Message2" ></div> </body> <script> init(); let pi = Math.PI; let DialCenterX = 275; let DialCenterY = 400; let DialRadius = 180; let CompassHeading = 0; let Latitude=0; let Longitude=0; let DME1_lat= 39.10960; let DME1_long= 117.35343; let DME1Distance = 0; let hand1=30; //VOR方位角 let hand2=0; let gap_dial_hand = 60; let hand_length = DialRadius - gap_dial_hand; window.addEventListener("deviceorientation", findNorth); var Message =document.getElementById("Message"); var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端 iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部 weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sQQ/i) == " qq" //是否QQ }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } function draw(ctx,DialDeg,HandDeg1,HandDeg2){ //drawDial(ctx,DialDeg); //绘制表盘 //drawAllHands(ctx,HandDeg1,HandDeg2); //绘制时分秒针 requestAnimationFrame(function step(){ getLocation(); DME1Distance = getDisance(Latitude, Longitude, DME1_lat, DME1_long); if(DME1Distance>722094) DME1Distance="----"; document.getElementById("DME1").innerHTML = DME1Distance; drawDial(ctx,CompassHeading); //绘制表盘 drawAllHands(ctx,hand1,hand2); //绘制时分秒针 requestAnimationFrame(step); }); } function toRad(d) { return d * Math.PI / 180; } function getDisance(lat1, lng1, lat2, lng2) { //lat为纬度, lng为经度, 一定不要弄错 var dis = 0; var radLat1 = toRad(lat1); var radLat2 = toRad(lat2); var deltaLat = radLat1 - radLat2; var deltaLng = toRad(lng1) - toRad(lng2); var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2))); dis = dis * 6378137; dis = dis ;///1852 ;//转为海里 return dis.toFixed(1); } function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else{ Message.innerHTML="Geolocation is not supported by this browser."; } } function showPosition(position) { Message.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude +"<br/>accuracy:"+ position.coords.accuracy; Latitude = position.coords.latitude; Longitude = position.coords.longitude; } function findNorth(evt) { if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { CompassHeading = 360-evt.webkitCompassHeading.toFixed(0); //window.location.href ="iPhone.html"; } else if (/(Android)/i.test(navigator.userAgent)) { //alert(navigator.userAgent); CompassHeading = evt.alpha -90; document.getElementById("Message2").innerHTML = "您的手机需要校准指南针,请将手机指向正北后刷新页面。"; } else { } } function init(){ let canvas = document.querySelector("#solar"); canvas.width = 560; canvas.height = 670; let ctx = canvas.getContext("2d"); drawOutline(ctx); //strokeRoundRect(ctx, 10, 10, 100, 50, 10); fillRoundRect(ctx, 40, 95, 216, 124, 30, 'rgba(99,116,122,1)'); fillRoundRect(ctx, 50, 105, 192, 68, 15, 'rgba(0,0,0,1)'); fillRoundRect(ctx, 295, 95, 216, 124, 30, 'rgba(99,116,122,1)'); fillRoundRect(ctx, 305, 105, 192, 68, 15, 'rgba(0,0,0,1)'); //fillRoundRect(ctx, 50, 50, 450, 600, 20, 'rgba(0,0,0,1)'); draw(ctx,30,30,60); ctx.font = '20px "微软雅黑"'; ctx.fillStyle = "white"; ctx.fillText("DME-1", 110, 200); ctx.font = '20px "微软雅黑"'; ctx.fillStyle = "white"; ctx.fillText("DME-2", 370, 200); } /*绘制时分秒针*/ function drawAllHands(ctx,HandDeg1,HandDeg2){ let time = new Date(); let s = time.getSeconds(); let m = time.getMinutes(); let h = time.getHours(); let pi = Math.PI; let secondAngle = HandDeg1;//pi / 180 * 6 * s; //计算出来s针的弧度 let minuteAngle = pi / 180 * HandDeg1; //计算出来分针的弧度 let hourAngle = pi / 180 *HandDeg2;//pi / 180 * 30 * h + minuteAngle / 12; //计算出来时针的弧度 // drawHand2(hand2 + CompassHeading, hand_length, 2, "white", ctx); //绘制时针,(角度,针长,粗细,颜色,canvas) drawHand(hand1 + CompassHeading, hand_length, 2, "white", ctx); //绘制分针 //drawHand(secondAngle, 150, 2, "blue", ctx); //绘制秒针 } /*绘制时针、或分针、或秒针 * 参数1:要绘制的针的角度 * 参数2:要绘制的针的长度 * 参数3:要绘制的针的宽度 * 参数4:要绘制的针的颜色 * 参数4:ctx * */ function drawHand(angle, len, width, color, ctx){ ctx.save(); ctx.translate(DialCenterX, DialCenterY); //把坐标轴的远点平移到原来的中心 ctx.rotate(angle*pi/180 + pi/2); //旋转坐标轴。 x轴就是针的角度,rad ctx.beginPath(); ctx.moveTo(-DialRadius + gap_dial_hand, 0); //ctx.lineTo(len, 0); // 沿着x轴绘制针 ctx.font="18px microsoft yahei"; ctx.fillStyle="white"; var x = 4-DialRadius + gap_dial_hand; //指针起点x ctx.fillText("◀",x,6); for(i=x+5;i<len;){ ctx.moveTo(i, 0); ctx.lineTo(i+10, 0); i = i+20; } ctx.lineWidth = width; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.stroke(); ctx.closePath(); ctx.restore(); } function drawHand2(angle, len, width, color, ctx){ ctx.save(); ctx.translate(DialCenterX, DialCenterY); //把坐标轴的远点平移到原来的中心 ctx.rotate(angle*pi/180 +pi/2); //旋转坐标轴。 x轴就是针的角度 ctx.beginPath(); ctx.moveTo(-DialRadius + gap_dial_hand, 0); //ctx.lineTo(len, 0); // 沿着x轴绘制针 ctx.font="30px microsoft yahei"; ctx.fillStyle="white"; var x = -DialRadius + gap_dial_hand; ctx.moveTo(x, 0); ctx.lineTo(x+20, 10);ctx.lineTo(x+20, 5); ctx.lineTo(len, 5);ctx.lineTo(len, -5); ctx.lineTo(x+20, -5);ctx.lineTo(x+20, -10); ctx.lineTo(x, 0); ctx.lineWidth = width; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.stroke(); ctx.closePath(); ctx.restore(); } /*绘制表盘*/ function drawDial(ctx,DialDeg){ let pi = Math.PI; //ctx.clearRect(0, 0, 600, 600); //清除所有内容 ctx.save(); ctx.translate(DialCenterX, DialCenterY); //移动坐标原点到原来的中心 ctx.beginPath(); ctx.arc(0, 0, DialRadius, 0, 2*pi); //绘制圆周 //ctx.stroke(); //context.clip(); ctx.closePath(); // 填充颜色 ctx.fillStyle = "#202020"; ctx.fill(); for (let i = 0; i < 72; i++){//绘制刻度盘和数字 ctx.save(); ctx.rotate(pi/180*DialDeg + i * pi / 36); //旋转坐标轴。修改第一个参数可以旋转表盘 ctx.beginPath(); ctx.moveTo(DialRadius-37, 0); if(i % 2 == 0){ ctx.lineTo(DialRadius-1, 0); }else{ ctx.lineTo(DialRadius-16, 0); } ctx.lineWidth = i % 5 ? 4 : 4; ctx.strokeStyle = i % 5 ? "white" : "white"; ctx.stroke(); ctx.closePath(); if(i % 6 == 0){ ctx.lineWidth = 1; ctx.font="24px microsoft yahei"; //ctx.strokeText(i/3,0,-150); //填充 ctx.fillStyle="white"; if(i>9) ctx.fillText(i*0.5,-12,60-DialRadius); //-150 else ctx.fillText(i*0.5,-6,60-DialRadius); } ctx.restore(); } for (let i = 0; i < 8; i++){//绘制三角标 ctx.save(); ctx.rotate(pi/180*0 + i * pi / 4); //旋转坐标轴。修改第一个参数可以旋转表盘 ctx.font="24px microsoft yahei"; ctx.fillStyle="white"; ctx.fillText("▼",-12,-1*DialRadius); ctx.restore(); } ctx.restore(); } VincentyConstants = { a: 6378137, b: 6356752.3142, f: 1/298.257223563 } /** *Calculate destination point given start point lat/long (numeric degrees), * bearing (numeric degrees) & distance (in m). */ function destinationVincenty(lonlat, brng, dist) { var u = this; var ct = u.VincentyConstants; var a = ct.a, b = ct.b, f = ct.f; var lon1 = lonlat.lon*1; //乘一(*1)是为了确保经纬度的数据类型为number var lat1 = lonlat.lat*1; var s = dist; var alpha1 = u.rad(brng); var sinAlpha1 = Math.sin(alpha1); var cosAlpha1 = Math.cos(alpha1); var tanU1 = (1-f) * Math.tan(u.rad(lat1)); var cosU1 = 1 / Math.sqrt((1 + tanU1*tanU1)), sinU1 = tanU1*cosU1; var sigma1 = Math.atan2(tanU1, cosAlpha1); var sinAlpha = cosU1 * sinAlpha1; var cosSqAlpha = 1 - sinAlpha*sinAlpha; var uSq = cosSqAlpha * (a*a - b*b) / (b*b); var A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq))); var B = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq))); var sigma = s / (b*A), sigmaP = 2*Math.PI; while (Math.abs(sigma-sigmaP) > 1e-12) { var cos2SigmaM = Math.cos(2*sigma1 + sigma); var sinSigma = Math.sin(sigma); var cosSigma = Math.cos(sigma); var deltaSigma = B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM))); sigmaP = sigma; sigma = s / (b*A) + deltaSigma; } var tmp = sinU1*sinSigma - cosU1*cosSigma*cosAlpha1; var lat2 = Math.atan2(sinU1*cosSigma + cosU1*sinSigma*cosAlpha1, (1-f)*Math.sqrt(sinAlpha*sinAlpha + tmp*tmp)); var lambda = Math.atan2(sinSigma*sinAlpha1, cosU1*cosSigma - sinU1*sinSigma*cosAlpha1); var C = f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha)); var L = lambda - (1-C) * f * sinAlpha * (sigma + C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM))); var revAz = Math.atan2(sinAlpha, -tmp); // final bearing var lon_destina = lon1*1+u.deg(L); //var num_lon_dest = lon_destina*1; //var lon_destina = new Number; var lonlat_destination = {lon: lon_destina, lat: u.deg(lat2)}; return lonlat_destination; } /** * 度换成弧度 * @param {Float} d 度 * @return {[Float} 弧度 */ function rad(d) { return d * Math.PI / 180.0; } /** * 弧度换成度 * @param {Float} x 弧度 * @return {Float} 度 */ function deg(x) { return x*180/Math.PI; } function drawOutline (ctx){ //开始路径 ctx.beginPath(); ctx.moveTo(70, 2); ctx.lineTo(472, 2); ctx.lineTo(550, 70); ctx.lineTo(550, 597); ctx.lineTo(472, 665); ctx.lineTo(70, 665); ctx.lineTo(2, 597); ctx.lineTo(2, 70); ctx.lineTo(70, 2); ctx.closePath(); //路径闭合 //if(strokeStyle) { ctx.strokeStyle = "gray"; ctx.lineWidth = 1; ctx.lineJoin = 'round'; ctx.stroke(); } //if(fillStyle) { ctx.fillStyle = 'rgba(135,162,174,1)'; ctx.fill(); } ctx.restore(); ctx.beginPath(); ctx.moveTo(40, 84); ctx.lineTo(511, 84); ctx.lineTo(511, 510); ctx.lineTo(390, 642); ctx.lineTo(169, 642); ctx.lineTo(40, 510); ctx.lineTo(40, 84); ctx.closePath(); { ctx.strokeStyle = "darkgray"; ctx.lineWidth = 1; ctx.lineJoin = 'round'; ctx.stroke(); } //if(fillStyle) { ctx.fillStyle = 'rgba(63,74,76,1)'; ctx.fill(); } } /**该方法用来绘制一个有填充色的圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param fillColor:填充颜色 **/ function fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor) { //圆的直径必然要小于矩形的宽高 if (2 * radius > width || 2 * radius > height) { return false; } cxt.save(); cxt.translate(x, y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt, width, height, radius); cxt.fillStyle = fillColor || "#000"; //若是给定了值就用给定的值否则给予默认值 cxt.fill(); cxt.restore(); } /**该方法用来绘制圆角矩形 *@param cxt:canvas的上下文环境 *@param x:左上角x轴坐标 *@param y:左上角y轴坐标 *@param width:矩形的宽度 *@param height:矩形的高度 *@param radius:圆的半径 *@param lineWidth:线条粗细 *@param strokeColor:线条颜色 **/ function strokeRoundRect(cxt, x, y, width, height, radius, /*optional*/ lineWidth, /*optional*/ strokeColor) { //圆的直径必然要小于矩形的宽高 if (2 * radius > width || 2 * radius > height) { return false; } cxt.save(); cxt.translate(x, y); //绘制圆角矩形的各个边 drawRoundRectPath(cxt, width, height, radius); cxt.lineWidth = lineWidth || 2; //若是给定了值就用给定的值否则给予默认值2 cxt.strokeStyle = strokeColor || "#000"; cxt.stroke(); cxt.restore(); } function drawRoundRectPath(cxt, width, height, radius) { cxt.beginPath(0); //从右下角顺时针绘制,弧度从0到1/2PI cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2); //矩形下边线 cxt.lineTo(radius, height); //左下角圆弧,弧度从1/2PI到PI cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI); //矩形左边线 cxt.lineTo(0, radius); //左上角圆弧,弧度从PI到3/2PI cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2); //上边线 cxt.lineTo(width - radius, 0); //右上角圆弧 cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2); //右边线 cxt.lineTo(width, height - radius); cxt.closePath(); } </script> </html>
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
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)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的Tencent Kona JDK,分布式HTAP数据库 TBase,企业级容器平台TKEStack,以及高性能图计算框架Plato。短短一周之内,腾讯开源了五大重点项目。其中,TubeMQ是腾讯大数据平台部门应用的核心组件,...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课...
阿里靠什么武功秘籍渡过“双十一“的天量冲击
双十一大概会产生多大的数据量呢,可能大家没概念,举个例子央视拍了这么多年电视新闻节目,几十年下来他存了大概80P的数据。而今年双11一天,阿里要处理970P的数据,做为一个IT人,笔者认为今年”双十一“阿里最大的技术看点有有以下两个: 阿里的数据库,也就是刚刚拿下TPC冠军的OcceanBase,处理峰值也达到了骇人听闻的6100万次/秒, 阿里核心系统百分百上云了。 如果把信息系统比做一个武...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问