遍历

Java的Stream流式操作

独自空忆成欢 提交于 2019-12-10 20:58:39
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便。所以学习一些Stream流,在这里记录一下。 Stream是什么 Stream 是Java 8中出现的新特性,极大增强了集合对象的功能,专注于对集合对象进行方便、高效的聚合操作。另外可以配合 Lambda 表达式,让代码更加容易理解。另外Stream提供串行和并行两种操作方式,并行操作可以很方便的写出高性能的并发程序。 Stream像是一个高级版本的Iterator,使用Iterator只能显式地遍历一个个元素对其执行某些操作;使用Stream,我们只需要指定对集合包含的元素执行什么操作,例如“只获取性别为男的用户”、“获取每个用户姓名的姓氏”等,Stream会帮我们完成隐式的遍历操作,并转换数据。 与Iterator不同的是,Iterator只能串行操作,每次操作完一个元素再去下一个元素。Stream支持串行、并行操作,Stream的并行操作依赖Java 7的Fork/Join框架(JSR166y)来拆分任务和加速处理过程。 Stream就像是一条流水线,单向,不可回头,只能遍历一次,之后就不能再使用了。 使用一个Stream流,一般分为三个步骤:1. 获取数据源-> 2. 中间操作(Intermediate)-> 3. 终端操作

Django之模板

依然范特西╮ 提交于 2019-12-10 19:30:34
模板 MTV,View(urls.py和views.py合并),Model(和数据库打交道),Template(将从数据库获取的数据渲染到页面), 分层的目的是解耦 模板的内容有:变量 常用标签 过滤器 模板结构优化 静态文件加载 详解模板 模板查找路径配置: 在项目的 settings.py 文件中。有一个 TEMPLATES 配置,这个配置包含了模板引擎的配置,模板查找路径的配置,模板上下文的配置等。模板路径可以在两个地方配置。 DIRS :这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用 render 或者 render_to_string 渲染模板的时候,会在这个列表的路径中查找模板。 APP_DIRS :默认为 True ,这个设置为 True 后,会在 INSTALLED_APPS 的安装了的 APP 下的 templates 文件加中查找模板。 查找顺序:比如代码 render('list.html') 。先会在 DIRS 这个列表中依次查找路径下有没有这个模板,如果有,就返回。如果 DIRS 列表中所有的路径都没有找到,那么会先检查当前这个视图所处的 app 是否已经安装,如果已经安装了,那么就先在当前这个 app 下的 templates 文件夹中查找模板,如果没有找到,那么会在其他已经安装了的 app 中查找。如果所有路径下都没有找到

二叉树的打印

眉间皱痕 提交于 2019-12-10 18:43:44
二叉树的打印 这里开始我的数据结构复习之路,很多东西都没有讲到,只是希望起到一个抛砖引玉的作用。当然这里我自己也是参考某网的视频之后的。鉴于时间关系有些题目没在实现对代码的实现,如果有需要的话,可以留言告诉我,我很乐意去解决。 二叉树的打印是根据遍历方法来的,有前序遍历、中序遍历、后续遍历以及层序遍历。前三种估计很熟悉了,那么这个讲讲层序遍历。 在学过图后,我们知道了广度优先搜索,这里就是同一个思想,使用队列结构。 下面给出两种解题思想: 第一种解题思路,使用两个节点(队列结构默认算在里面),last: 表示正在打印的当前行的最右节点,nlast:表示下一行的最右节点。步骤: a 将头节点赋值给last b 弹出一个节点,进行打印 c 对该弹出节点进行判断是否为last节点,是的话就换行 d 弹出的每一个节点时,如其有子节点,放入队列中且进行nlast = (该节点子节点)的赋值操作,直到弹出的节点是last节点结束(包括last节点子节点也要进行前面操作) e 把nlast节点赋值给last节点,进行下一轮节点打印直到queue为空结束 第二种解题思路,可以定义两个变量,一个变量k来记录当前行节点的个数,一个m记录下一行节点的个数,那么也能实现相同的效果。 二叉树的序列化和反序列化 所谓序列化是指将二叉树转换为字符串的过程。反序列化就是指将字符串转化为二叉树的过程

JavaScript学习笔记三-数组

偶尔善良 提交于 2019-12-10 16:54:39
eval命令 eval命令 接受一个字符串 作为参数,并将这个字符串当作语句执行。 eval('var a = 1;'); a // 1 放在eval中的字符串, 应该有独自存在的意义 ,不能用来与eval以外的命令配合使用。举例来说,下面的代码将会报错。 如果eval的参数不是字符串,那么会原样返回。 eval ( 123 ) // 123 eval没有自己的作用域 ,都在当前作用域内执行,因此可能会修改当前作用域的变量的值,造成安全问题。 var a = 1; eval('a = 2'); a // 2 JavaScript 规定,如果使用严格模式,eval内部声明的变量,不会影响到外部作用域。 ( function f ( ) { 'use strict' ; eval ( 'var foo = 123' ) ; console . log ( foo ) ; // ReferenceError: foo is not defined } ) ( ) 上面代码中, 函数f内部是严格模式,这时eval内部声明的foo变量,就不会影响到外部。 不过,即使在严格模式下,eval依然可以读写当前作用域的变量。 ( function f ( ) { 'use strict' ; var foo = 1 ; eval ( 'foo = 2' ) ; console . log ( foo

如何通过 java 实现在多台 Linux 服务器间自动执行各种命令或查询日志

痞子三分冷 提交于 2019-12-10 16:46:09
如何通过 java 实现在多台 Linux 服务器间自动执行各种命令或查询日志 SSHxcute 是一个现存的基于 Java 的远程执行类库,允许工程师利用 Java 代码通过 ssh 远程执行 Linux/Unix 系统上的命令或者脚本,这种方式不管是针对软件测试还是系统部署,都简化了自动化测试与系统部署的步骤。但是但是经过测试,现有的情况只是支持对单个服务器的连接。本文介绍如何实现多服务器之间的切换并且根据配置文件来自动链接并读取日志或执行命令等操作。 0 评论: 包 向华 , 软件工程师, IBM 2014 年 12 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用。 开始您的试用 简介 系统的爆炸性增长让应用的分布式变的越来越普遍。虽然现有的分布式系统的应用,给予应用本身很大的可扩展性。但是相对来说,维护性就可能到其影响,让维护人员的工作量加倍和工作效率降低。其中,最常见的麻烦之一便是错误处理问题的查找。当用户需要根据错误日志来诊断问题出现的时间和相对位置的时候,多个服务器之间的相互切换和命令的重复键入是没有办法被避免的,用户需要重复各种简单而且单调的工作模式,在不同的机器当中重复实现。 回页首 现有的使用环境 对于软件开发测试人员来说,大型的应用意味着对远程主机依赖会达到更高的层次。从应用环境的部署到命令的远程执行,都需要依赖各种客户端工具

python中的os模块知识

徘徊边缘 提交于 2019-12-10 16:24:59
os模块的作用:获取文件的路径及进行路径相关的操作 首先,导入模块,此模块是python内部,不用下载,直接导入: import os os.mkidir('目录名字'):在此目录下创建一个文件夹 os.makedirs('a/b/c'):创建多级目录嵌套 os.getcwd():获取当前文件的路径 print(os.getcwd()) os.rmdir('text'):删除目录 os.removedir('a/b/c'):删除多级目录 os.listdir('.'):以列表形式展示目录文件 一下还有os.path的路径常用操作: 问: 写一个能够遍历某目录下所有内容的函数 1、一种简单的:文件夹里全部都是文件 #1、这个简单的遍历,只能遍历某个目录下的文件,但是如果存在文件夹呢 import os def dir(path): all_path=os.listdir(path) for i in all_path: print(os.path.join(path,i)) dir('D:\projects') 2、一种复杂的:文件夹里有文件夹和文件   #2、这个复杂点,添加一个条件,如果还有文件的话可以继续遍历下去 def di(path): All_path=os.listdir(path) print('文件夹:\t',path) for i in All_path: a=

网易Java面经汇总

大城市里の小女人 提交于 2019-12-10 15:48:20
1.自我介绍 2.项目介绍以及细节 3.kafka消息丢失怎么办? 4.说一下Java内存模型 主内存 – 工作内存 – 线程 5.Java内存模型如何保证一致性? 通过锁、 volatile、等禁止指令重排序 6.说一下Mysql索引有哪些 B+ 树索引, hash索引,bitmap 普通索引,主键索引,唯一索引,联合索引等 7.B+树索引怎么实现的 B+树每个节点可以存储很多的值,矮胖,磁盘IO次数少 8.B+树索引和哈希索引都有什么优缺点? 两个都够快,但是 hash 则更快, B+树更稳定 B+树和B树区别是什么? , B+树能够范围查找,B树节点存储索引少,所以树高度较高,磁盘IO操作更多 为什么用 B+树实现索引 因为稳定,磁盘 IO少,能够范围查找 9.用过ThreadLocal吗,怎么实现的?ThreadLocalMap怎么保证线程安全的? ThreadLocal本身并没有承担存储每个线程中的数据的职责,它是通过操作每个线程内部的 一个 “ 副 本 ”-ThreadLocalMap来实现线程之间的隔离,从而保证了线程安全。 10.写一个LRU 用 LinkedHashMap实现,每次插入时查看链表中有了没,有了就将其放在头部并返回,没有则插入链表头。当链表满了,就删除链表尾部的节点。 LinkedHashMap 通过构造器构造,可以指定初始容量,和负载因子。也可以使

归约

南楼画角 提交于 2019-12-10 14:19:14
使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。 说明:keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出 key 所对应 的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。如果是 JDK8, 使用 Map.forEach 方法。 Java 开发手册 14/44 正例:values()返回的是 V 值集合,是一个 list 集合对象;keySet()返回的是 K 值集合,是一个 Set 集合 对象;entrySet()返回的是 K-V 值组合集合。 来源: oschina 链接: https://my.oschina.net/u/2552286/blog/3140663

[boost]BOOST_FOREACH遍历操作

不问归期 提交于 2019-12-10 11:35:49
BOOST_FOREACH可以方便的遍历STL容器. 只需要头文件: #include <boost/foreach.hpp> 然后遍历容器 vector/list/set/deque/stack/queue 都是类似的: vector<int32_t> _v; BOOST_FOREACH(int32_t value,_v) { //这里就可以访问value } 同时元素还支持引用,const,比如上面代码还可以写成: vector<int32_t> _v; BOOST_FOREACH(int32_t& value,_v) { //这里就可以修改/访问value } 如果元素内容是结构体之类,引用可以防止拷贝~~ 对于map的访问有一点特殊,因为map的元素是std::pair<T1,T2>,所以需要写成这样: std::map<int32_t,int32_t> _map; typedef const std::map<int32_t, int32_t>::value_type const_pair; BOOST_FOREACH(const_pair& node,_map) { //这里就可以访问node的元素 int32_t key = node.first; int32_t value = node.second; } BOOST_FOREACH是正向的迭代,逆向的是BOOST

CAD关于线型操作(com接口网页版)

非 Y 不嫁゛ 提交于 2019-12-10 10:13:26
1.得到图上所有线型 下面js代码,取到数据库的线型表,然后遍历表中所有线型记录对象,并得到线型名输出 var database = mxOcx.GetDatabase(); //返回数据库中的线型表对象 var linetypeTable = database.GetLinetypeTable(); //创建遍历器 var iter = linetypeTable.NewIterator(); if (iter == null) return; var sRet = null; //移动当前遍历器位置 for (; !iter.Done(); iter.Step(true, false)) { //返回遍历器当前位置的线型样式 var lineType = iter.GetRecord(); //得到文字样式名 sRet = sRet + ',' + lineType.Name; } alert(sRet); 2. 修对象的线型 下面代码,让用户在图上选择一个对象,然后新增加一个线型,再把对象的线型改成新增加的线型。 var ent = mxOcx.GetEntity("\n 选择实体对象:"); if (ent == null) { return; } mxOcx.AddLinetype("MyLineType", "6,-10"); // 设置实体线型。 ent