JAVA中,流旨在创建一种关注“做什么而非怎么做”的设计理念,我们无需关心流内具体的实现,而把更多精力放在流需要做什么上面。例如我们需要计算一个字符串数组中,长度大于10的有多少,参见下面的代码清单:
public static void main(String args[]) throws IOException{
String contents = new String(Files.readAllBytes(Paths.get("/Users/liebes/Desktop/open.route")), StandardCharsets.UTF_8);
List<String> words = Arrays.asList(contents.split("\\PL+"));
long count = 0;
// 怎么做
for(String s : words){
if(s.length() > 10) count++;
}
System.out.println(count);
// 做什么
count = words.stream().filter(s -> s.length() > 10).count();
System.out.println(count);
count = words.parallelStream().filter(s -> s.length() > 10).count();
System.out.println(count);
}
第一种方式,是很容易想到的一种,循环遍历计算的一种方法,而第二种则是使用了流的概念。
Stream,流。我们可以理解为水流,所有的流操作都是惰性的,即当你访问数据的时候,相关操作才会执行。我们在水流的行进方向设置我们想要完成的操作,当水流经过时,就会执行相关的操作。例如上面的 count = words.stream().filter(s -> s.length() > 10).cou...
阅读全文
据换完博客主题之后也有一段时间了,但总觉得哪里不对的样子,别人家都是主页和博客分开的,或者把博客放在主页的子目录下,而自己的却只有一个博客,反正自己也有域名,为什么不整个单独的主页出来呢。
这篇文章记录了海痴是如何在 google 上扒模版,如何利用 travis 来将博客的内容同步到主页上,又如何与某涛互相比较,解决图片加载慢的问题。
我们可以看看最终的效果:https://www.liebes.top
在一切开始之前,海痴已经准备好了用 hexo 搭建起来的博客,一个自己的域名,以及使用 travis 将博客部署到自己的服务器的脚本。可以参见上一篇博客:Hexo 更换 materail 主题,使用 Travis 持续集成
一份靠谱的主页模板关于如何找到一份高端上档次的主题模板,大家可以各显神通,当然,最快的还是 google 上搜一下:“主页 模板 bootstrap”,请一定加上 bootstrap 这个关键字,因为经过实践,这样搜出的结果最靠谱。
准备好之后,就可以将模板文件放在博客的根目录下,随便起个名字,就像这样:
├── _config.yml
├── db.json
├── liebes.top <- 这个是模板文件
├── liebes.top.py <- 这个是之后会用到的脚本文件
├── node_modules
├── package-lock.json
├── package.json
├── public
├── pyyaml
├── scaffolds
├── source
├── themes
└── travis.enc
根据你的需要来修改你的主页模板...
阅读全文
最近被安排到中汽研实习(就算是实习吧),做了一些基于深度学习的图像识别工作,其实说起来自己对深度学习也没什么太深入的了解,都是现学现卖,跑人家的例子。不过还是在这边记录一下,以后回首可以稍稍感慨一下年轻时的无知。
关于机器学习,基础知识是看周志华的西瓜书(清华大学出版社的机器学习)来学习的,不过大致是囫囵吞枣,没有静下心来安安稳稳地钻研(时间也不允许)。
之后看了网易云课堂中吴恩达的机器学习教程,受益匪浅,推荐刚入门的同学去看看,讲的很好。
在吴恩达的视频中,大致了解了卷积神经网络和深度学习大致的套路,其实说到底就是各种卷积层(convolution layer),池化层(pooling layer),全连接层(fool connected layer)不断组合。
感觉机器学习想要深入了解,可能需要看很多相关的论文,之后的学习路程就记录在之后的博客中好了。
先说说甲方的需求:需要在行车过程中动态识别出前方交通标志,如果是限速标识,需要识别中里面的数字。
最近只做了第一部分,也就是交通标志的识别。对卷积神经网络有过了解的话能感觉出来这就是一个分类问题,好在公司已经标好了数据,并且是按照 VOC 格式标记的,接下来就是使用现成的网络训练就可以了。
我用的是 YOLO 在darknet 网站上有 v1 和 v2 两个版本。
https://pjreddie.com/darknet/yolo/
以上是 YOLO darknet 版本的官网,上面的说明非常详细,也非常人性化,即使没有 GPU 也可以使用,可以简单的按照上面的教程进行安装。
注意,darknet 默认是不开启 GPU
阅读全文
是的,我折腾了一天把博客的模版换了一下。怎么说呢,之前用的 Next 主题,很简约,看起来也很舒服,但总觉得少点什么,后来逛了逛其他人的站,感觉 Next 主题没有图,视觉上没什么冲击力,灰蒙蒙的感觉,于是采用了 material 这个主题,也很简洁,相比之下色彩丰富一些。
之前在使用 github pages 有一些不爽的地方就是地址不是自己的域名,然而宝宝是买了域名的,为什么要在 github 下弄呢,之前尝试过使用CNAME进行域名解析,但是在处理 https 的问题上比较麻烦,想着弄一套 CI流程出来。试过 hexo 的 deploy 插件,用 rsync 进行自动部署,然而未果,各种奇怪的问题弄的头痛。最近心血来潮 google 一番,发现好多人都在用Travis CI 来自动化部署,于是尝试了一下,效果很不错。
大致整理整理安装的过程吧,在阅读下面的文字之前,你需要自己安装过一次hexo,并了解hexo。
HEXO MATERIAL 主题更换从 github 上下载 material 主题:https://github.com/viosey/hexo-theme-material 下载 release 或者直接克隆项目均可,将主题包移动到 hexo 项目的 theme 中并修改博客配置文件 _config.yml
theme: material
此时运行 hexo s 在本地就可以预览到 material 主题的样式了。接下来的步骤,完全可以按照官方的教程一项一项设置,不要嫌麻烦,因为很多特性默认都是没有的,需要自己去打开。
官方文档:
阅读全文
前情摘要自己作死干了一件特别蠢的事情(具体略)
然后开始研究如何进行增量备份
增量备份原理mysql 有个 binlog 的功能,会记录所有的用户的操作,可以依靠这个,配合全备份,将数据库回滚到某一个特殊的时刻。hhh
简单来说,比如我们每周做一次全备份,每天做一次增量备份,当数据库发生问题的时候,我们就可以先将数据库回滚到上一周我们的全备份的时间,然后再通过每天的增量备份(其实就是模拟所有的数据库操作,全部执行一遍),将数据恢复到我们想要的时间点。
配置mysql 的 binlog 功能需要在配置文件中打开,在 my.cnf 或者 mysqld.cnf 中添加以下几行:
server-id = 1
# binlog存放路径
log_bin = /var/log/mysql/mysql-bin.log
# binlog记录的格式,有row、statement、mixed三种选项
binlog-format = row
# binlog写缓冲区设置大小,由于是内存,写速度非常快,可以有效提高binlog的写效率,如果数据库中经常出现大事务,可以酌情提高该参数。
binlog_cache_size = 32m
# 最大缓存区大小
max_binlog_cache_size = 512m
# binlog文件最大的大小
max_binlog_size = 1000m
# 需要备份的数据库名,如...
阅读全文
接上一篇编辑器的使用,自己尝试着写了一段js代码,本以为laravel的
{{ $item }}
渲染可以完美的避免 XSS 的攻击(确实可以避免),但是由于 Editor 生成的时候,重新渲染了一遍,导致了可能出现的XSS漏洞。
可以看到,Editor已经帮助我们做了html的编码,于是我觉得不需要进行二次编码,就直接存到了数据库里,并且直接在前端进行了渲染。
Controller
$res = Notification::updateById($notice_id, [
'content' => $content,
'title' => $title,
'fileName' => $file_name,
'filePath' => $file_path
]);
view
<textarea id="editor" name="editor" rows="10" cols="80">
{{ $notice['content'] }}
</textarea>
看起来一点问题也没有对不对!!
然而当渲染的时候缺弹出了一个框框······
查看代码发现变成了整个样子
阅读全文
假期写代码,整理一些关于Editor,文件上传相关的东西。
editor
文件上传(Laravel)
Trumbowyg Editor
Trumbowyg 是一款轻量级的编辑器,可以高度DIY,界面也很简洁。
官方网站:Trumbowyg
首先下载官方包,在官网可以直接下载。
目录结构如下:
其中只需要留下 dist 文件夹即可,其余的是文档,例子,直接删除即可。
使用方法很简单,在 view 界面引用相关的 css 文件与 js 文件,这里默认已经引用了Jquery
<link rel="stylesheet" href="/Trumbowyg/dist/ui/trumbowyg.min.css">
<script src="/Trumbowyg/dist/trumbowyg.js"></script>
同时需要创建一个 textarea 作为 editor 的容器
<textarea id="editor" name="editor" rows="10" cols="80"></textarea>
接下来就可以使用Trumbowyg 创建一个编辑器出来
<script>
...
阅读全文
在国哥的安排下,对着 kali渗透测试之 SQL injeciton 视频教程一顿撸(虽然没什么卵用),记录下来自己的一些实验过程和经历。
提前准备
本地的 lemp 环境,搭建可参考:Centos 7 Nginx + php + mysql Web服务器搭建 和 Unbuntu16.04 Nginx + php + mysql Web服务器搭建 当然 xampp 也是极好的。
用于攻击的 php 脚本和数据库,下面会给出
编写脚本找个能够访问的地方,编写如下 php 脚本
<html>
<head></head>
<body>
<form action="./login.php" method="post">
ID<input name="id" type="text"><br/>
<input type="submit" value="提交">
</form>
<div>
<p>
...
阅读全文
不知道广大程序员们是怎么处理 Windows 和 Linux 的,最开始在 Windows 下面跑 Linux 的虚拟机,卡的自己怀疑人生。后来做了个双系统,自己 250 的固态表示根本不够用,而且动不动关机重启,别问我为什么,毕竟 office 割舍不了。后来一个学长点了我一下,既然想用 Linux 搞事情,用什么图形化界面,搞个服务器不就好了。然后我就搞了个腾讯云,然而,网络不好的时候真的蛋疼。最后,在宁哥大腿的指引下,尝试了一下 Vagrant 虚拟机,快的飞起,果断放弃双系统。
这里记录一些自己在搭建 Vagrant 环境时的步骤以及踩的坑。
提前准备:
Vagrant
VirtureBox
首先,我们要选择一个适合我们的 box 也就是操作系统。Vagrant 提供了许多 box 供我们使用:Vagrant Box 。这里,海痴选择的是 ubuntu16.04。
那么,当我们装好了 Vagrant,VirtureBox,并且下载好所需要的box以后,就可以开始搞事情了。当然,为了接下来的发展更加顺利,强烈建议装一个 Git ,毕竟 Git bash 异常的好用。
我们新建一个文件夹,命名为 ubuntu,并且将我们的 box 移到这个目录下。在这个目录打开命令行界面,添加box
$ vagrant box add xenial-server-cloudimg-amd64-vagrant.box
添加后的 box 可以使用 vagrant box list
阅读全文
最近在看《白帽子讲WEB安全》这本书,按着章节记录一下实践和学习的过程。
同源策略
简单来说,同源策略限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性
同源的网站指起host地址是一致的
比如以下几个地址
http://store.company.com/dir2/index.html
http://store.company.com/dir1/index.html
https://store.company.com/dir1/index.html
http://store.company.com:8080/dir2/index.html
http://news.company.com/dir1/index.html
其中1,2是同源的,而其他几个则不是。
对于一个网页中加载的javascr...
阅读全文