next

神仙也难逃Java开发之增强for循环

南楼画角 提交于 2021-01-28 04:48:23
什么是增强for循环 增强for循环是一种简单模式的for循环,为了方便数组和集合的遍历而存在。 int [ ] arr = new int [ ] { 1 , 2 , 3 , 4 , 5 , 6 } ; for ( int a : arr ) { System . out . println ( a ) ; } ArrayList < Integer > list = new ArrayList ( ) ; list . add ( 1 ) ; list . add ( 2 ) ; list . add ( 3 ) ; list . add ( 4 ) ; list . add ( 5 ) ; list . add ( 6 ) ; for ( int i : list ) { System . out . println ( i ) ; } //加入Java开发交流君样:756584822一起吹水聊天 增强for循环的原理 对于集合的遍历,增强for循环其实内部是通过迭代器实现的,可以做一个简单的验证,我们知道在迭代器中,迭代的时候不允许修改,不然会抛出ConcurrentModificationException异常,那我们不妨在增强型for循环中也尝试去修改集合中的对象,看是否抛出同样的异常。 ArrayList < Integer > list = new

迭代器和生成器区别是什么?Python学习!

落花浮王杯 提交于 2021-01-27 13:00:08
  迭代器和生成器区别是什么?相信很多人在初学Python的时候对它们都很好奇,接下来我们一起来看看它们的区别吧。   迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己的本身,对于string、list、dict、tuple等这类容器对象,使用for循环会更加方便。在后台for语句对容器对象调用iter()函数,iter()是Python内置函数。   iter()会返回一个定义了next()方法的迭代器对象,在容器中逐个访问容器内元素,next()也是Python的内置函数,无后续元素时,next()会抛出一个StopIteration异常   生成器是创建迭代器简单而强大的工具,像正规函数,在需要返回数据的时候使用yield语句,每次next()被调用时,生成器会返回它脱离的位置。   迭代器和生成器区别主要在于生成器可以做迭代器的事情,生成器是一种特殊的迭代器。 来源: oschina 链接: https://my.oschina.net/u/4938745/blog/4926882

how to solve the error that fs module is not found when used react and next.js

谁说我不能喝 提交于 2021-01-27 12:26:44
问题 Am using a react application without router settings. I want to build my sitemap.xml file. I tried some modules like sitemap.js, react-router-sitemap, sitemap-generator. But these module are throwing error as fs module is missing. I installed fs module via npm install --save . But it is still showing the error. I found in some forums to add the below code in webpack.config file. node: { fs: "empty" } Am not sure where this file is. I couldn't find them nside the sitemap related modules.

ConcurrentMap原理详解

流过昼夜 提交于 2021-01-27 09:53:41
ConcurrentMap原理详解 jdk1.8 数据结构 数组+链表+红黑树 Node<K,V>{} static class Node<K,V> implements Entry<K,V> { final int hash; final K key; volatile V val; volatile Node<K,V> next; 如何线程安全 数组桶值设置和更新使用CAS算法 tabAt(Node<K,V>[] tab, int i) casTabAt(Node<K,V>[] tab, int i, Node<K,V> c, Node<K,V> v) setTabAt(Node<K,V>[] tab, int i, Node<K,V> v) 针对链表和树更新使用Synchronize 设置putVal(K key, V value, boolean onlyIfAbsent) 1、数组为空,先初始化 2、tabAt获取桶位置元素,如果为空,则casTabAt(),期望值为null,新值为新节点 3、桶位置如果存在数据,说明hash冲突了,如果当前节点hash为MOVED说明在扩容,则当前线程辅助扩容 4、如果hash值>=0,说明是链表结构 4.1循环覆盖链表所有key一样节点 4.2循环至链表尾结点时(next为null)则追加到尾结点 5

openssl懒人手册之安装篇

戏子无情 提交于 2021-01-27 07:44:51
简介 openssl是一个强大的安全套接字密码库,包括三个主要的功能部分: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls 借助于openssl,你可以实现:秘钥证书管理、对称加密和非对称加密 。 安装openssl有两种方式: 下载源码,自己编译 使用现成的安装包 废话少说,直奔主题吧。 下载第三方安装包 http://slproweb.com/products/Win32OpenSSL.html 大小约64.4MB,下载时长约0.5小时。 下载后一路“Next”狂奔,即安装成功。 参考 https://www.openssl.org https://www.cnblogs.com/dshvv/p/12271280.html http://slproweb.com/products/Win32OpenSSL.html https://www.cnblogs.com/yangxiaolan/p/6256838.html 来源: oschina 链接: https://my.oschina.net/u/4417917/blog/4926411

Maven最全教程,看了必懂,看了都说好!

梦想与她 提交于 2021-01-26 07:51:32
点击上方 " 程序员小乐 "关注公众号, 星标或置顶 一起 成长 每天凌晨00点00分, 第一时间与你相约 每日英文 There is a time in life that is full of uneasiness.We have no other choice but to face it. 生命中总有那么一段时光,充满不安,可是除了勇敢面对,我们别无选择。 每日掏心话 读到一段话:“礼貌和教养不只是干瘪单薄的客套,还有推己及人的周到和体谅。这考验的不止是情商,还有你的善良。” 来自: 啤酒大泡泡 | 责编:乐乐 链接 : cnblogs.com/hzg110/p/6936101.html 程序员小乐(ID:study_tech)第 655 次推文 图片来自网络 往日回顾: 面试问烂的 Spring AOP 原理、SpringMVC 过程 正文    目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下。 一、为什么使用Maven这样的构建工具【why】 ① 一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程 ② 项目中使用jar包,需要“复制”、“粘贴”项目的lib中 同样的jar包重复的出现在不同的项目工程中

API 分页设计与实现探讨

我的梦境 提交于 2021-01-26 07:10:07
对于设计和实现 API 来说,当结果集包含成千上万条记录时,返回一个查询的所有结果可能是一个挑战,它给服务器、客户端和网络带来了不必要的压力,于是就有了分页的功能。 通常我们通过一个 offset 偏移量或者页码来进行分页,然后通过 API 实现类似请求: GET /api/products?page= 10 { "items" : [.. .100 products]} 如果要继续访问后续数据,则修改分页参数即可。 GET /api/products?page= 11 { "items" : [...another 100 products]} 在使用 offset 的情况下,通常使用 ?offset=1000 和 ?offset=1100 这种大家都熟悉的方法。它要么直接调用 OFFSET 1000 LIMIT 100 的 SQL 查询数据库,要么使用 LIMIT 乘以 page 作为查询参数。无论如何, 这是一个次优的解决方案 ,因为无论哪种数据库都要跳过前面 offset 指定的 1000 行。而跳过额外的offset,不管是 PostgreSQL,ElasticSearch还是 MongoDB 都存在额外开销,数据库需要对它们进行排序,计数,然后将前面不用的数据扔掉。 粉丝福利: 手撸了 50 个 Java 项目实战后,我超神了! 这是一种低效的方法,但由于它使用简单

图表控件AnyChart用JavaScript创建维恩图教程

给你一囗甜甜゛ 提交于 2021-01-26 03:20:03
AnyChart 是基于JavaScript (HTML5) 的图表控件。使用AnyChart控件,可创建跨浏览器和跨平台的交互式图表和仪表。AnyChart 图表目前已被很多知名大公司所使用,可用于仪表盘、报表、数据分析、统计学、金融等领域。 AnyChar HTML5图表高度可定制且高度兼容。拥有纯JavaScript API,AnyChart图表内置客户端数据实时更新,多层次向下钻区和具体参数更新。强大的主题引擎使你通过一系列图表进行独特的演示体验,而PDF和图像输出能产出图书质量打印文档。 点击下载AnyChart最新版 维恩图是一种形式的数据可视化,使用形状,通常圆形,以显示的东西组之间的关系。在此图表类型中,重叠区域显示共同点,而不重叠的圆圈显示不共享的特征。 由英国数学家,逻辑学家和哲学家John Venn引入的 Venn图也称为集合图或逻辑图,因为它们显示了不同集合元素之间可能的逻辑关系。绘制此类图表时,我们很可能会处理两个或三个重叠的圆圈,因为只有一个圆圈会很无聊,而很快拥有四个或更多个圆圈会变得非常复杂。 这些图不仅是一个很好的可视化概念,而且还提供了一个很好的机会来表示定性数据和一些图形幽默。基本上,它们易于构建和使用。我马上告诉你! 阅读本教程,了解如何在JavaScript的帮助下轻松为您的网站或应用创建视觉上吸引人且内容丰富的维恩图

自己做的js甘特图插件

本小妞迷上赌 提交于 2021-01-26 03:15:52
版权所有,禁止转载 内容都在代码中,上图上代码! 代码 <! DOCTYPE html > < html > < head > < title > ganttu.html </ title > < meta name ="keywords" content ="keyword1,keyword2,keyword3" > < meta name ="content-type" content ="text/html; charset=UTF-8" > < meta name ="reason" content ="甘特图的实际进度与计划进度可能不符,为了展示实际进度与计划进度的差异和方便统计,自己写了个甘特图框架" > < meta name ="mast" content ="使用代码之前请留言,禁止转载..." > < meta name ="description" content ="liuyuhang 的甘特图,当前版本1.0,2019-02-19" > < meta name ="description" content ="时间日期格式:yyyy-mm-dd" > < meta name ="description" content ="①计划进度与实际进度双重进度体系" > < meta name ="description" content ="②有前置任务连接线"

API 分页探讨:offset 来分页真的有效率?

浪尽此生 提交于 2021-01-25 13:46:55
对于设计和实现 API 来说,当结果集包含成千上万条记录时,返回一个查询的所有结果可能是一个挑战,它给服务器、客户端和网络带来了不必要的压力,于是就有了分页的功能。 通常我们通过一个 offset 偏移量或者页码来进行分页,然后通过 API 实现类似请求: GET /api/products? page =10 { "items" : [ .. .100 products]} 如果要继续访问后续数据,则修改分页参数即可。 GET /api/products? page =11 { "items" : [ .. .another 100 products]} 在使用 offset 的情况下,通常使用 ?offset=1000 和 ?offset=1100 这种大家都熟悉的方法。它要么直接调用 OFFSET 1000 LIMIT 100 的 SQL 查询数据库,要么使用 LIMIT 乘以 page 作为查询参数。 无论如何, 「这是一个次优的解决方案」 ,因为无论哪种数据库都要跳过前面 offset 指定的 1000 行。而跳过额外的offset,不管是 PostgreSQL,ElasticSearch还是 MongoDB 都存在额外开销,数据库需要对它们进行排序,计数,然后将前面不用的数据扔掉。 这是一种低效的方法,但由于它使用简单,所以大家重复地用这个方法,也就是直接把 API