类型系统

资料搜集-JAVA系统的梳理知识8-JDK8

柔情痞子 提交于 2020-01-23 21:01:37
> 本文由 JavaGuide 翻译,原文地址:https://www.baeldung.com/foreach-java ## 1 概述 在Java 8中引入的*forEach*循环为程序员提供了一种新的,简洁而有趣的迭代集合的方式。 在本文中,我们将看到如何将*forEach*与集合*一起*使用,它采用何种参数以及此循环与增强的*for*循环的不同之处。 ## 2 基础知识 ```Java public interface Collection<E> extends Iterable<E> ``` Collection 接口实现了 Iterable 接口,而 Iterable 接口在 Java 8开始具有一个新的 API: ```java void forEach(Consumer<? super T> action)//对 Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 ``` 使用*forEach*,我们可以迭代一个集合并对每个元素执行给定的操作,就像任何其他*迭代器一样。* 例如,迭代和打印字符串集合*的*for循环版本: ```java for (String name : names) { System.out.println(name); } ``` 我们可以使用*forEach*写这个 : ```java names.forEach

设计模式与3D游戏编程

不想你离开。 提交于 2020-01-22 17:01:32
设计模式与3D游戏编程 前言 这是中山大学数据科学与计算机学院2019年3D游戏编程与设计的约稿博客,主要是总结课程一个学期以来学习的设计模式以及将其用于Unity3D编程的个人经验。 所有项目与代码已上传至github当中,欢迎大家访问。 github个人主页: https://starashzero.github.io 3D游戏编程与设计主页: https://starashzero.github.io/3DGameDesign 会用到哪些设计模式? 存在的设计模式有很多,推荐大家阅读Alan Shalloway、 James R. Trott编写的 Design Patterns Explained ,该书也有中文版《设计模式解析》。 该书内容深入浅出,没有太多复杂的概念,有的话作者基本也会耐心的解释,很适合初学者进行学习。 接下来我主要是总结一些课程中涉及到的设计模式、以及虽然课程中没提到但是游戏编程中使用到了的模式和使用场景举例 Composite Pattern——组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

Python笔记--1

这一生的挚爱 提交于 2020-01-21 16:25:37
参考:《Python带我起飞》 语言分类 1. 运行角度 编译型:利用编译器(程序)将代码 一次性 转换为二进制文件(可执行文件),在运行阶段是独立的,不再需要编译器。所以概括起来,编译型语言的运行过程为: 编写代码–>编译所有代码–>运行所有代码 . 属于编译型的语言包括 C/C++,Pascal/Object Pascal(Delphi) 解释性:每次读取 一行 源程序,将该行代码转换成二进制代码,然后执行该二进制代码。所以解释性语言的运行过程为: 编写代码–>解释一行代码–>运行一行代码–>解释一行代码–>运行一行代码–>…–>解释最后一行代码–>运行最后一行代码 . 属于解释性的语言包括 Java、JavaScript、VBScript、Perl、Python、Ruby、Matlab 如此看来,编译型语言和解释性语言的本质区别就好像两种生活态度:全部准备好再去做事,一边准备一边做事。我原来偏向于前者,现在则偏向于后者(个人观点)。 两者的其他区别 运行速度 编译型运行速度较快,解释性运行速度较慢;可以这样考虑,运行速度指的是运行代码的速度,编译型的语言其编译阶段不包括在运行时间内,而且一次编译结束后形成可执行文件,之后再运行这段代码时就不需要再次编译了,直接运行之前编译好的可执行文件就可以了,即除第一次外,每次都可以直接运行代码。所以速度较快。而解释型语言

PostgreSQL简介

别等时光非礼了梦想. 提交于 2020-01-18 23:14:51
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它在其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server之外,为用户又提供了一种选择。 PostgreSQL 不寻常的名字导致一些读者停下来尝试拼读它,特别是那些把SQL拼读为"sequel"的人。PostgreSQL 开发者把它拼读为 "post-gress-Q-L"。(Audio sample,5.6k MP3)。它也经常被简略唸为 "postgres"。 历史 PostgreSQL 经历了长时间的演变,开始于在 UC Berkeley 的 Ingres 计划。这个计划的领导者 Michael Stonebraker 在1982年离开 Berkeley 去商业化 Ingres,但是最后还是返回了学术界。在1985年返回 Berkeley 之后,Stonebraker 开始了 post-Ingres 计划来致力于在 1980 年代早期变得日益清楚的、当代数据库系统的问题。Postgres 和 Ingres 的代码库开始(并保持)完全分离了。 结果的计划叫 Postgres ,目标是介入增加对类型的完全支持所需要的最小数目的特征

Rust入坑指南:亡羊补牢

 ̄綄美尐妖づ 提交于 2020-01-18 03:56:20
如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大。它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃。所以今天我们就来聊一聊Rust中如何处理程序错误,也就是所谓的“亡羊补牢”。 基础概念 在编程中遇到的非正常情况通常可以分为三类:失败、错误、异常。 Rust中用两种方式来消除失败:强大的类型系统和断言。 对于类型系统,熟悉Java的同学应该比较清楚。例如我们给一个接收参数为int的函数传入了字符串类型的变量。这是由编译器帮我们处理的。 关于断言,Rust支持6种断言。分别是: assert! assert_eq! assert_ne! debug_assert! debug_assert_eq! debug_assert_ne! 从名称我们就可以看出来这6种断言,可以分为两大类,带debug的和不带debug的,它们的区别就是assert开头的在调试模式和发布模式下都可以使用,而debug开头的只可以在调试模式下使用。再来解释每个大类下的三种断言,assert!是用于断言布尔表达式是否为true,assert_eq!用于断言两个表达式是否相等,assert_ne!用于断言两个表达式是否不相等。当不符合条件时,断言会引发线程恐慌(panic!)。 Rust处理异常的方法有4种:Option、Result<T,

verilog 心得

爱⌒轻易说出口 提交于 2020-01-17 04:28:17
verilog语法学习心得 1.数字电路基础知识: 布尔代数、门级电路的内部晶体管结构、组合逻辑电路分析与设计、触发器、时序逻辑电路分析与设计 2.数字系统的构成: 传感器 AD 数字处理器 DA 执行部件 3.程序通在硬件上的执行过程: C语言(经过编译)-->该处理器的机器语言(放入存储器)-->按时钟的节拍,逐条取出指令、分析指令、执行指令 4.DSP处理是个广泛概念,统指在数字系统中做的变换(DFT)、滤波、编码解码、加密解密、压缩解压等处理 5.数字处理器包括两部分:高速数据通道接口逻辑、高速算法电路逻辑 6.当前,IC产业包括IC制造和IC设计两部分,IC设计技术发展速度高于IC设计 7.FPGA设计的前续课程:数值分析、DSP、C语言、算法与数据结构、数字电路、HDL语言 计算机微体系结构 8.数字处理器处理性能的提高:软件算法的优化、微体系结构的优化 9.数字系统的实现方式: 编写C程序,然后用编译工具得到通用微处理器的机器指令代码,在通用微处理器上运行(如8051/ARM/PENTUIM) 专用DSP硬件处理器 用FPGA硬件逻辑实现算法,但性能不如ASIC 用ASIC实现,经费充足、大批量的情况下使用,因为投片成本高、周期长 10.FPGA设计方法: IP核重用、并行设计、层次化模块化设计、top-down思想 FPGA设计分工:前端逻辑设计、后端电路实现

Log4net创建日志及简单扩展

风格不统一 提交于 2020-01-16 23:54:14
转: http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1、概述 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步: 在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步: 程序启动时读取log4net的配置文件。 如果是CS程序,在根目录的Program.cs中的Main方法中添加: log4net.Config. XmlConfigurator .Configure(); 如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加: log4net.Config. XmlConfigurator .Configure(); 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句: [ assembly : log4net.Config . XmlConfigurator ()] 也可以使用自定义的配置文件,具体请参见4.4

Log4net创建日志及简单扩展

我只是一个虾纸丫 提交于 2020-01-16 23:52:48
1、概述 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步: 在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步: 程序启动时读取log4net的配置文件。 如果是CS程序,在根目录的Program.cs中的Main方法中添加: log4net.Config.XmlConfigurator.Configure(); 如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加: log4net.Config.XmlConfigurator.Configure(); 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句: [assembly: log4net.Config .XmlConfigurator()] 也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。 第三步: 修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web

Log4net详细说明

不问归期 提交于 2020-01-16 23:40:27
1、概述   log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步: 在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步: 程序启动时读取log4net的配置文件。 如果是CS程序,在根目录的Program.cs中的Main方法中添加: log4net.Config.XmlConfigurator.Configure(); 如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加: log4net.Config.XmlConfigurator.Configure(); 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句: [assembly: log4net.Config .XmlConfigurator()] 也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。 第三步: 修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web

性能测试连载 (2)-测试类型

徘徊边缘 提交于 2020-01-16 18:35:17
基准测试 (Performance Benchmark Test) 概念 1)每次对外发布产品版本前必须要完成的测试类型 2)执行固定的性能测试场景得到系统的性能测试报告 3)与上一版本发布时的基准测试结果进行对比 4)优化 or 恶化 ? 测试目的 (1)获取系统性能基准作为参照物 (2)识别系统或环境的配置变更对性能带来的影响 (3)给系统优化前后的性能提升/下降提供参考标准 (4)观察系统的整体性能趋势与性能拐点,识别系统性能风险 基准评估 同一事务的响应时间变慢了 上一版本中,用户登录的响应时间是2s,在最新的被测版本中这个响应时间变成了4s; 系统资源的占用率变高了 上一版本中,平均 CPU 占用率是15%,在最新的被测版本中平均 CPU 占用率变成了 30%; 等等。。。。 负载测试 测试目的 1)持续稳定地增加系统的负载,测试系统性能的变化 2)找出指标阈值下的系统瓶颈和性能拐点 3)测试系统所能承受的最大负载量 4)找出内存管理错误,内存泄漏,缓冲区溢出的问题 5)找到处理极限,为调优提供数据 6)找出系统在稳定情况下的最大压力值 测试意义 通过改变负载方式、增加负载,发现系统中所存在的性能问题 实例 (1)200个并发用户访问时的最大响应时间,最大吞吐量 (2)21个小时内要处理 1000 笔业务,找到最大并发数 (3)响应时间不超过10s的最大负载 (4