1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:
如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:
做人咧,最紧要系开心🥳
说说最近我干了啥.距离上次发文章已经20天了,这段时间里我跑去海南玩了,回来就写了一周的laravel项目了。这次是第一次写,写的挺菜的,被dalao摁在地面上摩擦了,不过还好经过这次开发,我还是学到了一些东西,在这里Mark一下,方便以后差错。
这次是第一次用auth组件来开发登录模块。由于应用的美工已经规定好了,我就直接手动认证了。
文档写的是
attempt(["email"=>$email,"password"=>$password])
,这个组件是只能用email来作为username,不能自定义username。
login组件需要传入的参数是用户实例。
用户实例的意思是你一定查到的那一条数据,比如你通过ORM查到了一条password符合的数据,此时这条数据就是一个用户实例。
可能的原因如下:
modal原代码:
namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { }
要把代码改成这样子才行!
modal改动后的代码:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\User as Authenticatable;//要改成继承这个Auth组件 class User extends Authenticatable { }
Kernel原代码:
有可能是这个组件被注释了,此时需要的是取消注释。
login方法定位用户靠的是数据库的字段名id。
这个字段名必须是id,不能是Id、iD、ID。不然Auth组件将不能够正常工作
数据表,必须有remember_token用于存储辨识用户session的凭证。
不然laravel会报错。
php爬虫,用于爬Rule34图站的数据,自动下载特定标签的图片
– 支持指定标签,多标签搜索
– 支持轮候任务
– 支持微信通知运行状态
– 低占用
1. 安装php环境
2. 把该程序拖至php.exe同目录中
3. 编辑php内的PATHS,该常量用于定义爬下来的数据的缓存路径
4. 保存
5. 打开ready.txt,按照格式填入待下载标签
6. 保存
7. 运行start.bat
female:0:42
标签:开始的pid数(0开始的42的倍数):结束的pid数(0开始的42的倍数,需要比开始的pid大)
https://gitee.com/7gugu/python-rule34Lib
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
其实这玩意儿我去年(2018)二月就写好了,不过那时候处于要备考的节点了,就没太多的精力去管理,现在有空了就来把爬虫修好发上来
写在2018-12-31的最后10min,对2019年的一些展望和计划。
写完看了看感觉还有点难度,但今年都能跨过那个坎了,考个证书还不行么,加油!
Be myself!!!
OwO
2019-1-27第一次更新:完成第1,3,4点,删掉第6点
2019-3-14第二次更新:完成第7点(帮学校写了个下载站)
2019-6-1 第三次更新:完成5,8,9,10点
真的难以置信,在短短的四个月中URP的安装量又提高了1200次,这真的让人感到一种难以言表的开心。在发布两年以后,仍然具有如此活力,在我看来是很难得的。一方面是Unturned这个游戏进入到了3.0-4.0的过渡状态,导致游戏人数迅速降低,另一方面则是该面板只能用于管理Unturned服务器,这严重的限制了面向的用户群体。但是在这些情况下,URP还是能够脱颖而出,被大家选择来使用,实属荣幸。
而且这次的统计数据是2018年初时开始统计的,如果过算上17年的数据,我预估应该是已经有3000-4000的安装量了。虽然这个面板从技术上面具有许多的问题,如php和html的混淆,函数的复用率低下,耦合性高,无路由的概念,都限制住了面板的继续发展。即使这些在Umarket中已经得到了部分的解决与改善,但我坚信在以后的日子中我仍需继续努力去进行更多的开发,来继续提高自己的代码水平。
再次感谢大家能够选择URP进行服务器管理维护,谢谢大家的支持,如果可以的话,欢迎大家能给我发点赞助,谢谢了owo
一个基于油猴插件的模拟机械键盘的声音,就是按下键后,就会发出机械按键声
// ==UserScript== // @name TypeSounder // @namespace https://103.249.111.182/ // @version 1.1 // @description 给按键加入机械键盘的触发声音 // @author 7gugu <gz7gugu@qq.com> // @match https://tampermonkey.net/documentation.php?version=4.8.5847&ext=fire&updated=true // @grant none // @include * // @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js // ==/UserScript== (function() { 'use strict'; var id=1; console.log("typesound已启动"); document.onkeydown=function(event){ id++; $("body").append("<div id='key_sound_"+id+"'><audio id='player"+id+"' src='https://103.249.111.182/wp-content/uploads/2018/12/music.mp3' preload='auto'>您的浏览器不支持 audio 标签。</audio></div>"); var e = event || window.event; var player = $("#player"+id)[0]; /*jquery对象转换成js对象*/ if(e && e.keyCode){ if (player.paused){ /*如果已经暂停*/ player.play(); /*播放*/ } } }; })();
https://greasyfork.org/zh-CN/scripts/375939-typesounder
一个基于油猴插件的按键显示的插件,主要可以用于教学演示
https://greasyfork.org/zh-CN/scripts/375905-typeshower
// ==UserScript== // @name TypeShower // @namespace https://103.249.111.182/ // @version 1.0 // @description 动态显示输入 // @author 7gugu &lt;gz7gugu@qq.com&gt; // @match https://tampermonkey.net/documentation.php?version=4.8.5847&amp;ext=fire&amp;updated=true // @grant none // @include * // @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js // ==/UserScript== (function() { 'use strict'; var id=1; var key_array=new Array(200); key_array[65]='a'; key_array[66]='b'; key_array[67]='c'; key_array[68]='d'; key_array[69]='e'; key_array[70]='f'; key_array[71]='g'; key_array[72]='h'; key_array[73]='i'; key_array[74]='j'; key_array[75]='k'; key_array[76]='l'; key_array[77]='m'; key_array[78]='n'; key_array[79]='o'; key_array[80]='p'; key_array[81]='q'; key_array[82]='r'; key_array[83]='s'; key_array[84]='t'; key_array[85]='u'; key_array[86]='v'; key_array[87]='w'; key_array[88]='x'; key_array[89]='y'; key_array[90]='z'; key_array[112]='F1'; key_array[113]='F2'; key_array[114]='F3'; key_array[115]='F4'; key_array[116]='F5'; key_array[117]='F6'; key_array[118]='F7'; key_array[119]='F8'; key_array[120]='F9'; key_array[121]='F10'; key_array[122]='F11'; key_array[123]='F12'; key_array[136]='Num_Lock'; key_array[137]='Scorll_Lock'; key_array[8]='BackSpace'; key_array[9]='Tab'; key_array[32]='Space'; key_array[13]='Enter'; key_array[16]='Shift'; key_array[17]='Ctrl'; key_array[18]='Alt'; key_array[20]='Caps'; key_array[27]='Esc'; key_array[37]='←'; key_array[38]='↑'; key_array[39]='→'; key_array[40]='↓'; key_array[45]='Ins'; key_array[46]='Del'; key_array[48]='0'; key_array[49]='1'; key_array[50]='2'; key_array[51]='3'; key_array[52]='4'; key_array[53]='5'; key_array[54]='6'; key_array[55]='7'; key_array[56]='8'; key_array[57]='9'; key_array[192]='`'; key_array[173]='-'; key_array[61]='+'; key_array[219]='['; key_array[221]=']'; key_array[220]='\\'; key_array[59]=';'; key_array[222]='\''; key_array[188]=','; key_array[190]='.'; key_array[191]='/'; var key_shift=0; var key_ctrl=0; console.log("Typeshower已启用"); $("body").append(" &lt;img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%20type%3D'text%2Fcss'%3Etype%7Bpadding%3A%205px%2010px%3Bfont-size%3A%2087.5%25%3Bcolor%3A%20%23fff%3Bbackground-color%3A%20%23212529%3Bborder-radius%3A%205px%3Bfont-family%3ASFMono-Regular%2CMenlo%2CMonaco%2CConsolas%2C'Liberation%20Mono'%2C'Courier%20New'%2Cmonospace%3Bline-height%3A%201.5%3B%7D.key_list%7Bpadding%3A10px%3Bposition%3Afixed%3Bright%3A20px%3Btop%3A20px%3Bwidth%3A60px%3Bheight%3A50px%3Bz-index%3A999%3B%7D%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&amp;lt;style&amp;gt;" title="&amp;lt;style&amp;gt;" /&gt; "); $("body").append(" &lt;div class='key_list'&gt;&lt;/div&gt; "); document.onkeydown=function(event){ id++; console.log("Typeshower 监听中"); var key_template=""; var e = event || window.event ; if(e &amp;&amp; e.keyCode){ if(key_shift==1){key_template="Shift+";} if(key_ctrl==1){key_template="Ctrl+";} key_template=key_template+key_array[e.keyCode]; $("div.key_list").append("&lt;type id='"+id+"'&gt;"+key_template+"&lt;/type&gt; "); if(e.keyCode==16){key_shift=1;} if(e.keyCode==17){key_ctrl=1;} } $("type[id='"+id+"']").fadeOut(2500); $("br").fadeOut(2500); } document.onkeyup=function(event){ var e = event || window.event ; if(e &amp;&amp; e.keyCode){ if(e.keyCode==16){key_shift=0;} if(e.keyCode==17){key_ctrl=0;} } } })();
今天在做c语言的功课时,发现旧的教材(基于vc++6.0)使用了如下的代码,对字符串指针进行赋值.
char *p="Hello World";
但是编写到VS2017上时报了下面的一个错误.
直接导致编译失败,经过了baidu的查找后,知晓了具体原因.
应把源代码修改成如下的代码.
//原代码 char *p="Hello world"; //修改后的代码 const char *p="Hello world";
主要原因是因为在新版本中增强了对字符串指针的安全性,通过使用静态声明,来防止越界