大蔚老师互联网课程体系-公示

大蔚老师拥有长达18年项目实战+技能教学经验。在web开发领域一直走在技术革新的前沿,个人负责开发过大小各类项目达500个之多,代表作之一:http://www.mpinhome.cn [基于TP5框架,历时一年时间开发大型SB2B2C项目….;网站最下面有我姓名+电话核验真伪]。为帮助广大开发朋友们快速上手,少走弯路,特整理WEB开发中(理论+实战)实用、技能精华【1前端课程-2后端课程-3服务器课程-4其他单独模块-5WEB人工智能-6安卓开发课程】。录课不易,感谢支持。

==============1前端课程==============

一、《HTML+DIV+CSS+应用实战》

二、《JS基础课程+应用实战》

三、《H5实用技术总结+案例分析》

四、《JQUERY+应用实战》

五、《Bootstrap+应用实战》

=======2后端课程【基础/高级/扩展】======

——基础部分:

一、《PHP7快速上手》【免费】点击观看>>

二、《MYSQL数据库快速上手》【免费】

三、《PHP7+MYSQL项目实战=企业站管理系统》预售中

四、《PHP7+MYSQL项目实战=角色权限管理系统》预售中

五、《使用DEDECMS快速创建网站+项目实战》【免费】点击观看>>

六、《SEO搜索引擎优化》【免费】点击观看>>

——高级部分:

七、《快速学习PHP面向对象编程》【免费赠送】

php面向对象编程;面向对象编程三大特性(封装性,继承性,多态);DB(数据库)类实现; ) 点击观看>>

PHP面向对象编程;深浅copy;抽象类,接口;oop五大开发原则,二大开发模式;) 点击观看>>

八、《熟悉使用Thinkphp5.X开发项目》

九、《Thinkphp6框架+商城系统开发》预售中 

十、《用Thinkphp6开发万能角色权限管理系统》预售中

十一、《CI框架+商城系统开发》

十二、《用CI开发万能角色权限管理系统》

 

——扩展部分       预售中

十三、《微信公众号开发+点歌系统-项目实战》

十四、《微信小程序开发+点歌系统-项目实战》

==============3服务器课程============

一、《LAMP环境搭建》【免费】点击观看>>

==============4其他单独模块===========

一、基于TP6+EXCEL类实现导入/导出excel 预售中

二、《H5打包成APP(安卓,苹果)》预售中

 

============5WEB人工智能=============

《WEB人工智能+大数据采集与分析+项目实战》预售中

1、 WEB人工智能理论+基础

2、 项目实战1:模拟人工填充第三方表单

3、项目实战2:采集其他平台数据到自己平台上

=============6安卓开发============== 预售中

一、安卓APP开发一:《快速学习JAVA》

二、安卓APP开发二:《安卓APP开发+项目实战(扫码枪扫码校验是否重复)》

1、原生开发【安卓java开发+SQLite】;

2、混合【安卓java开发+php接口+mysql;后端管理 php+mysql】;

=====================================

有需要的朋友,可私信我QQ:2625767723 ; 微信【电话】:15309695130

bootstrap 响应式图片自适应图片大小

<img src="..." class="img-responsive center-block" >

或者

$(window).load(function(){

 
    $(".panel-body img").addClass("img-responsive center-block");
 
})
我的应用
<img id=”logo” src=”../../assets/pic/home/logo.png” >

#logo{
display: block;
max-width: 100%;
height: 40px;
}

selenium Cannot call non W3C standard command while in W3C mode解决

在使用selenium进行UI自动化,控制页面做上下滑动的时候遇到了如下报错selenium.common.exceptions.WebDriverException: Message: unknown command: Cannot call non W3C standard command while in W3C mode

解决方法:

opt =webdriver.ChromeOptions()
opt.add_experimental_option('w3c',False)
dr= webdriver.Chrome(chrome_options=opt)

 

 

5种方法,加密你的Python代码

Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C++,挤进前三。

Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。

其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。

当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。

1

Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。

.pyc文件是一个二进制的文件,是不具备可读性的。

假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?

想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。

执行如下命令,即可将<src>目录下的所有.py文件编译成.pyc文件:

python -m compileall <src> 然后删除 <src> 目录下所有 .py 文件就可以了。

$ find <src> -name ‘*.py’ -type f -print -exec rm {} \;

这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接破解。

比如python-uncompyle6(「链接」),只要执行以下命令,就可以搞定。

$ uncompyle6 *compiled-python-file-pyc-or-pyo*

2

代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。

内容不可读,代码就受到了保护。

代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub – astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。

这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。

一般而言,使用这一方式较为简单,实用。

3

如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?

py2exe(FrontPage – py2exe.orgFrontPage – py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。

这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。

4

Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。

Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。

这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。

5

最后一种方法,做得比较绝。

由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?

如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。

这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。

虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。

以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。

彻底解决mysql报错:1030, ‘Got error 28 from storage engine’

1、cd到 根目录,du -sh * 看哪个目录占用空间大,有的高达十几个G,那么就要盯住这个目录了

2、cd 占内存大的目录,继续 du -sh * 

 

发现data目录居然15G,进入data目录:cd data

然后查找大文件:

文件查找命令:

find -size +100M

意思是查找大于100M的文件,M是兆,再大点可以用G

如果想定位大文件:

ls -lhS

这是将文件从大到小展现

3、重复前两步,根据实际情况判断删除或者移走

https://blog.csdn.net/harry5508/article/details/84345684

4、删除大文件

删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件

serialize和unserialize函数 与base64_encode和base64_decode

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。
1. serialize和unserialize函数
这两个是序列化和反序列化PHP中数据的常用函数。

复制代码
<?php
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); 
//序列化数组
$s = serialize($a);
echo $s;
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
echo '<br /><br />';
//反序列化
$o = unserialize($s);
print_r($o);
//输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut ) 
?>
复制代码

 

当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。为了克服这个问题,一个巧妙的技巧是使用base64_encode和base64_decode。

$obj = array();
//序列化
$s = base64_encode(serialize($obj)); 
//反序列化
$original = unserialize(base64_decode($s));

 

但是base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用。

复制代码
//定义一个用来序列化对象的函数
function my_serialize( $obj ) 
{ 
   return base64_encode(gzcompress(serialize($obj))); 
} 
//反序列化
function my_unserialize($txt) 
{ 
   return unserialize(gzuncompress(base64_decode($txt))); 
}