wordpress安装了https,展示百度联盟广告

wordpress安装了https,百度联盟的广告没法显示了,这可不能忍,直接影响到了我们站的收入了。
那么,这个问题应该如何如何解决呢?
解决办法如下:
我们只需将百度联盟的广告代码中的http改为https即可。
修改后,百度联盟的广告在http和https模式均可正常显示。

Java 关键词 transient

java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。换句话来说就是,用transient关键字标记的成员变量不参与序列化过程。
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。
敏感信息不要被序列化!在编码中,建议使用 transient 关键字将其保护起来。
反序列化中,建议在 readObject 中实现与对象构件过程相同的安全检查和数据检查。
另外,在 JDK 9 中,Java 引入了过滤器机制,以保证反序列化过程中数据都要经过基本验证才可以使用。其原理是通过黑名单和白名单,限定安全或者不安全的类型,并且你可以进行定制,然后通过环境变量灵活进行配置, 更加具体的使用你可以参考 ObjectInputFilter

深度学习和机器学习的区别

首先看看机器学习的定义:
“A computer program is said to learn from experience E with respect to some class of tasksT and performance measureP if its performance at tasks inT, as measured by P, improves with experience E ”(这段话我真的是看了100遍才知道怎么断句啊!!(Д))
翻译过来就是:“一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序‘学习’了关于T的经验。”
简单来说,就是解释什么叫“机器的学习”,如果输入的经验越多表现的越好,这就叫“学习”嘛。
我们首先浏览所有的历史风暴数据,从这些大量的数据中学习出某些“模式”,这些“模式”包含了具体的哪些条件可以导致风暴。
比如我们也许可以通过学习历史数据发现:温度超过40度,湿度在80-100之间,就容易发生风暴。种种类似的模式。
这里注意了!“温度”、“湿度”等等指标,就是机器学习中的“特征”,而这些特征都是人工设置好的!就是说,我们在做这样一个预测系统的时候,首先由专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。
还是首先看看深度学习的定义:
“Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”(这个起码听起来像人话,但还是让人疑惑。。。)
我试着翻译一下:深度学习是一种特殊的机器学习,它可以获得高性能也十分灵活。它可以用概念组成的网状层级结构来表示这个世界,每一个概念更简单的概念相连,抽象的概念通过没那么抽象的概念计算。(有没有大佬帮忙指正一下?)
2.识别狗和猫:
如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。
而现在,深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征!而传统机器学习则需要我们人工地给出特征!
5.运行时间
深度学习需要花大量的时间来训练,因为有太多的参数需要去学习。顶级的深度学习算法ResNet需要花两周的时间训练。但是机器学习一般几秒钟最多几小时就可以训练好。
但是深度学习花费这么大力气训练处模型肯定不会白费力气的,优势就在于它模型一旦训练好,在预测任务上面就运行很快。这才能做到我们上面看到的视频中实时物体检测。
6.可理解性
最后一点,也是深度学习一个缺点。其实也说不上是缺点吧,那就是深度学习很多时候我们难以理解。一个深层的神经网络,每一层都代表一个特征,而层数多了,我们也许根本就不知道他们代表的啥特征,我们就没法把训练出来的模型用于对预测任务进行解释。例如,我们用深度学习方法来批改论文,也许我们训练出来的模型对论文评分都十分的准确,但是我们无法理解模型到底是啥规则,这样的话,那些拿了低分的同学找你质问“凭啥我的分这么低啊?!”,你也哑口无言····因为深度学习模型太复杂,内部的规则很难理解。
但是机器学习不一样,比如决策树算法,就可以明确地把规则给你列出来,每一个规则,每一个特征,你都可以理解。
但是这不是深度学习的错,只能说它太牛逼了,人类还不够聪明,理解不了深度学习的内部的特征。
以上就是关于机器学习和深度学习的联系和区别了。首先说说感受吧,感觉很多国外的文章,尤其是这样的类似科普文章写的真心棒!很好理解,而且解释的非常详细,这是很多国内博客所不能比的。所以建议大家有问题可以多搜搜国外的文章读一读,而且其实英文也用的很简单。
https://www.analyticsvidhya.com/blog/2017/04/comparison-between-deep-learning-machine-learning/

idea 最常用快捷键

最常用快捷键
sout 输出语句
psvm 输出main方法
fori 输出for语句
iter 输出foreach语句
Ctrl+Shift+U 大小写转换
Ctrl+Shift+N 可以快速打开文件
Ctrl+Shift+T 生成测试用例
Ctrl+Shift+Enter 补全一切符号
Alt+Shift+Up and Alt+Shift+Down 上下移动当前行
Ctrl+Alt+B 查看抽象方法的实现
Ctrl+Alt+Space 类名提示
Ctrl+Alt+L 格式化代码
Ctrl+Alt+O 优化导包
Ctrl+E 显示最近编辑的文件列表
Ctrl+F12 显示当前文件的结构
Ctrl+P 显示参数信息
Ctrl+Y 删除整行
Ctrl+O 重写父类的方法
Ctrl+I 重写接口的方法
Ctrl+D 复制当前行
Ctrl+H 查看类的继承体系
Ctrl+N 可以快速打开类
Alt+句点 代码提示
Alt+Enter 智能修复,如导包,生成局部变量
Alt+Insert 生成构造器/Getter/Setter等
Shift double 快速查找类/文件

bootstrap table ajax请求超时时间设置

bootstrap table可以设置超时时间:ajaxOptions
这个设置是依赖于jquery的ajax的设置:
Additional options for submit ajax request. List of values: http://api.jquery.com/jQuery.ajax.
jquery里的默认超时时间没有设置,因此为0,但是前端页面确实有超时请求的处理现象,其实是浏览器在控制着请求的超时,并且每个浏览器都超时时长都不一样。
timeout
Type: Number
Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be cancelled by a timeout; the script will run even if it arrives after the timeout period.
用户域名访问的时候注意要看nginx的超时时间设置

正则表达式

[0-9]+ 匹配数字的
(i_9 + i_787)/i_78987 – i_78965 匹配字符串和数字组合的

面向对象编程的原则

进行面向对象编程,掌握基本的设计原则是必须的,我今天介绍最通用的部分,也就是所谓的S.O.L.I.D 原则。
单一职责(Single Responsibility),类或者对象最好是只有单一职责,在程序设计中如果发现某个类承担着多种义务,可以考虑进行拆分。
开关原则(Open-Close, Open for extension, close for modification),设计要对扩展开放,对修改关闭。换句话说,程序设计应保证平滑的扩展性,尽量避免因为新增同类功能而修改已有实现,这样可以少产出些回归(regression)问题。
里氏替换(Liskov Substitution),这是面向对象的基本要素之一,进行继承关系抽象时,凡是可以用父类或者基类的地方,都可以用子类替换。
接口分离(Interface Segregation),我们在进行类和接口设计时,如果在一个接口里定义了太多方法,其子类很可能面临两难,就是只有部分方法对它是有意义的,这就破坏了程序的内聚性。
对于这种情况,可以通过拆分成功能单一的多个接口,将行为进行解耦。在未来维护中,如果某个接口设计有变,不会对使用其他接口的子类构成影响。
依赖反转(Dependency Inversion),实体应该依赖于抽象而不是实现。也就是说高层次模块,不应该依赖于低层次模块,而是应该基于抽象。实践这一原则是保证产品代码之间适当耦合度的法宝。
OOP 原则实践中的取舍
值得注意的是,现代语言的发展,很多时候并不是完全遵守前面的原则的。

bootstrap table服务端分页如何在后台获取pageNumber和pageSize

不知道为什么params有时候会没有pageNumber和pageSize这两个参数,需要自己取下,关键就是

$("#table").bootstrapTable("getOptions").pageSize

完整代码如下:

        queryParams: function queryParams(params){
//        	console.log("xxxxddd:"+JSON.stringify($("#table").bootstrapTable("getOptions")));
        	var ps = $("#table").bootstrapTable("getOptions").pageSize;
        	var pn = $("#table").bootstrapTable("getOptions").pageNumber;
        	if(typeof(ps) == "undefined"){
        		ps = params.pageSize;
        	}
        	if(typeof(pn) == "undefined"){
        		pn = params.pageNumber;
        	}
        	var param = {
        			pageSize: ps,
        			pageNumber: pn,
        			data: JSON.stringify(dataTmp)
        	};
        	return param;
        }

Linux下JDK到底应该安装在哪儿?

最标准的jdk安装路径是:
/usr/local/java/jdk1.6.0_38
/usr/local/java/jdk1.8.xxx
注意:几个不同的jdk可以共存,都放在/usr/local/java/下
然后在/etc/profile里面export JAVA_HOME指定默认的jdk
Linux 目录结构:

/bin 用来贮存用户命令。/usr/bin 也被用来贮存用户命令。
/sbin 许多系统命令(例如 shutdown)的贮存位置。/usr/sbin 中也包括了许多系统命令。
/root 根用户(超级用户)的主目录。
/mnt 该目录中通常包括系统引导后被挂载的文件系统的挂载点。比如,默认的光盘挂载点是 /mnt/cdrom/。可以为U盘建一个挂载点:mkdir /mnt/usb。
/boot 包括内核和其它系统启动期间使用的文件,最大不超过200M。通常我为 /boot 建一个primary分区是1G。
/lost+found 被 fsck 用来放置零散文件(没有名称的文件)。
/lib 包含许多被 /bin 和 /sbin 中的程序使用的库文件。目录 /usr/lib 中含有更多用于用户程序的库文件。/lib 目录下放置的是 /bin 和 /sbin 目录下程序所需的库文件。简单说,/lib 是内核级的;/usr/lib 是系统级的;/usr/local/lib 是用户级的。仅仅被 /usr 目录下的程序所使用的共享库不必放到 /lib 目录下。只有 /bin 和 /sbin 下的程序所需要的库有必要放到 /lib 目录下。
/dev 贮存设备文件。
/etc 包含许多配置文件和目录。
/var 用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件,虚拟机镜像文件等。
/usr 包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。
/proc 一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。
/initrd 用来在计算机启动时挂载 initrd.img 映像文件的目录以及载入所需设备模块的目录。不要删除 /initrd 目录。如果你删除了该目录后再重新引导 Red Hat Linux 时,你将无法引导你的计算机。
/tmp 用户和程序的临时目录。 /tmp 给予所有系统用户读写权。
/home 用户主目录的默认位置。
/opt 可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易地安装和卸装他们的软件包。

在传统的unix系统中,/usr 通常只包含系统发行时自带的程序,而/usr/local 则是本地系统管理员用来自由添加程序的目录。这里有一条严厉而牢固的规则:除非在里面创建目录,unix发行版不得使用 /usr/local 。
对于Linux发行版,如 RedHat, Debian 等等,一个可能的规定是:/usr 目录只能由发行版的软件包管理工具负责管理,而对 /usr/local 却没有这样做。正是因为采用这种方式,软件包管理工具的数据库才能知道在 /usr 目录内的每一个文件。下面演示 Ubuntu 系统下如何安装JDK和配置环境变量。
如果你的计算机仅仅作为开发使用时推荐使用这种方法. 所有用户的shell都有权使用这些环境变量。修改 /etc/profile 文件,执行下面的语句:

$ sudo -s
# echo 'export JAVA_HOME=/usr/local/java/jdk1.6.0_38' >> /etc/profile
# echo 'export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH' >> /etc/profile
# echo 'export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar' >> /etc/profile

切换到任何一个用户,执行下面这个命令,环境变量的更改立即生效:
# source /etc/profile
检查JAVA环境变量更改是否生效:
$ java -version

SSH 免密登录

若A想免密登录到B,将A生成的公钥追加到B的/home/.ssh/authorized_keys文件中即可

//在A(192.168.X.2)服务器下执行:
//生成公钥
Portal@ubuntu:~$ ssh-keygen -t rsa -P ''
//将公钥拷贝到目标服务器的临时文件夹下
Portal@ubuntu:~$ scp .ssh/id_rsa.pub Portal@192.168.X.84:/home/Portal/id_rsa.pub
//在B(192.168.X.84)服务器下执行:
//将公钥追加到该文件中
Portal@ubuntu: ~$ cat id_rsa.pub >> .ssh/authorized_keys

在机器上自己做SSH免密登录:

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys  # 加入授权
chmod 700 ./authorized_keys    # 修改文件权限