is_uploaded_file总是返回false的问题

is_uploaded_file ile总是返回false,根据以下方法进行检查,全部检查通过。

最后,找到一篇帖子, 将文件名用realpath函数过滤一下即可。

原文链接:http://www.xiumu.org/other/under-the-iis-is_uploaded_file-always-returns-false.shtml from:https://my.oschina.net/qii/blog/400692?p=1

龙生   25 Nov 2019
View Details

java:bytes[]转long的三种方式

bytes[] 到数字类型的转换是个经常用到的代码,解决方式也不止一种,最近需要将bytes[]转为long,有机会深入了解了一下,此文做个总结。 java代码实现 如果不想借助任何已经有的类,完全可以自己实现这段代码,如下:

借助java.nio.ByteBuffer实现 java.nio.ByteBuffer 本身就有getLong,getInt,getFloat….方法,只要将byte[]转换为ByteBuffer就可以实现所有primitive类型的数据读取,参见javadoc。

  借助java.io.DataInputStream实现 java.io.DataInputStream 同样提供了readLong,readLong,readLong….方法,只要将byte[]转换为DataInputStream就可以实现所有primitive类型的数据读取,参见javadoc。 完整测试代码 下面的Junit 测试代码计算String 的MD5校验码(16 bytes),然后使用上述方式分别将16 bytes转换为2个long(大端模式)然后以16进制模式输出结果,以验证三种方式一致性。

输出结果 md5 [39627933ceeebf2740e1f822921f5837] l1=0x39627933ceeebf27 l2=0x40e1f822921f5837,DataInputStream ln1=0x39627933ceeebf27 ln2=0x40e1f822921f5837,,ByteBuffer ll1=0x39627933ceeebf27 ll2=0x40e1f822921f5837 参考资料 《Java 中 byte、byte 数组和 int、long 之间的转换》   from:https://blog.csdn.net/10km/article/details/77435659

龙生   23 Nov 2019
View Details

Java中四种线程安全的单例模式实现方式

第一种:饿汉模式(线程安全)

  第二种:懒汉模式 (如果方法没有synchronized,则线程不安全)

  第三种:懒汉模式改良版(线程安全,使用了double-check,即check-加锁-check,目的是为了减少同步的开销)

  第四种:利用私有的内部工厂类(线程安全,内部类也可以换成内部接口,不过工厂类变量的作用域要改为public了。)

  from:https://my.oschina.net/yangchunlian/blog/1607947

龙生   23 Nov 2019
View Details

用 wait-notify 写一段代码来解决生产者-消费者问题

在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件。请参考答案中的示例代码。 【生产者】

【消费者】

【测试函数】

  运行结果:

  from:https://www.cnblogs.com/xbq8080/p/10371214.html

龙生   23 Nov 2019
View Details

Grafana

1.概述--美观、强大的可视化监控指标展示工具 grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最好的参考资料就是官网(http://docs.grafana.org/),虽然是英文,但是看多了就会啦。 1.1基本概念 Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。 每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。 支持的数据源 DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的DashBoard就是以各种图形的方式来展示从Datasource拿到的数据。 Row:行,DashBoard的基本组成单元,一个DashBoard可以包含很多个row。一个row可以展示一种信息或者多种信息的组合,比如系统内存使用率,CPU五分钟及十分钟平均负载等。所以在一个DashBoard上可以集中展示很多内容。 Panel:面板,实际上就是row展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体可以去官网上查阅。 Query Editor:查询编辑器,用来指定获取哪一部分数据。类似于sql查询语句,比如你要在某个row里面展示test这张表的数据,那么Query Editor里面就可以写成select *from test。这只是一种比方,实际上每个DataSource获取数据的方式都不一样,所以写法也不一样(http://docs.grafana.org/features/datasources/),比如像zabbix,数据是以指定某个监控项的方式来获取的。 Organization:组织,org是一个很大的概念,每个用户可以拥有多个org,grafana有一个默认的main org。用户登录后可以在不同的org之间切换,前提是该用户拥有多个org。不同的org之间完全不一样,包括datasource,dashboard等都不一样。创建一个org就相当于开了一个全新的视图,所有的datasource,dashboard等都要再重新开始创建。 User:用户,这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,可以执行任何操作,包括创建用户,新增Datasource,创建DashBoard。editor角色不可以创建用户,不可以新增Datasource,可以创建DashBoard。viewer角色仅可以查看DashBoard。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改DashBoard,但是不允许保存。每个user可以拥有多个organization。 dashboard界面最上面一行解释 界面顶部标题标注 上图显示了信息中心的顶部标题。 1侧面菜单切换:切换侧边菜单,允许您专注于仪表盘中显示的数据。侧面菜单提供对与仪表盘无关的功能(如用户,组织和数据源)的访问。 2信息中心下拉菜单:此下拉菜单显示您当前正在查看的信息中心,并允许您轻松切换到新的信息中心。从这里,您还可以创建新的信息中心,导入现有的信息中心和管理信息中心播放列表。 3星型仪表盘:对当前仪表盘执行星号(或取消星标)。加星标的信息中心在默认情况下会显示在您自己的主页信息中心上,并且是标记您感兴趣的信息中心的便捷方式。 4共享仪表盘:通过创建链接或创建其静态快照来共享当前仪表盘。在共享前确保信息中心已保存。 5保存仪表盘:当前仪表盘将与当前仪表盘名称一起保存。 6设置:管理仪表盘设置和功能,如模板和注释。 2.全面瓦解 对于grafana的部署,网上一搜一大把,这里不作累赘,可参考(grafana官网安装说明、grafana酷炫图表),继续以下内容。 2.1登录grafana 要运行Grafana,请打开浏览器并转到http://localhost:3000/,如果你尚未配置不同的端口,则3000是Grafana监听的默认http端口。默认用户名为admin,默认密码为admin。当你第一次登录时,系统会要求你更改密码,我们强烈建议你遵循Grafana的最佳做法并更改默认管理员密码,你可以稍后转到用户首选项并更改你的用户名。 登录界面,可看到版本号 2.2数据源配置 按照前面的数据源,这里讲解几个我们常使用的数据源的配置,包括es、opentsdb、influxdb和zabbix,也可以新增其他的数据源。 常用数据源示例 opentsdb数据源配置示例 其中关于Access这里具体解释下:Server (default) = 需要从Grafana后端/服务器访问,Browser = 需要从浏览器访问,对应上面的url。 es数据源配置示例 influxdb数据源配置示例 2.3仪表盘配置 在配置好所使用的数据源之后,即可新增配置自己的面板。面板也存在多种: 仪表盘 这里选取graph为例,如下图所示,新增或配置仪表盘。右上角的红框中表示:新建、标星、分享、保存、设置、查询模式、时间段、缩小(针对时间段进行放宽,即小时间段换成了大时间段)、刷新等 新增仪表盘或编辑已有仪表盘 Graph里面的选项有:General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Alert(告警)、Time range(时间范围) (1)General(常规选择:http://docs.grafana.org/features/panels/graph/) 常规选择 General允许定制面板的外观和菜单选项。 General Options Title:仪表盘上的面板标题 Description:仪表盘描述信息 Transparent :是否透明,选择之后会把该图的背景去掉,即透明状态 Repeat panel:是否重复panel,填写是重复的变量(参考后文3.2变量配置),即这个标题名中添加对应的变量,引用该变量需添加$,图标题即可随着自选的变量而变化。 钻取/详细信息链接 Drilldown / detail link(为当前panel增加超链接) Drilldown项允许在面板添加动态链接,可以链接到其他的dashboards或urls。 每个链接都有一个title,一个type和params。链接可以是dashboard,或是绝对链接。如果是dashboard链接,则dashboard值必须是仪表盘的名称。如果它是一个绝对链接,URL就是链接的URL。 params允许添加额外的URL参数的链接。格式是name=value,多种参数用&分隔。模板变量可以作为使用$ myVar作为值。 当连接到另一个Dashboard使用的模板变量,你可以使用var-myVar =value 填充模板变量所需的值从链接。 (2)Metrics(指标) metrics页签定义要呈现的系列数据和源。每个数据源提供不同的选择(参考官网)。这里以opentsdb数据源为例: 指标 Data Source:数据源,在前面配置好数据源之后,在这里直接选择对应的数据源 查询A、B:可以根据情况进行新增或删除 metric:指标名,输入部分指标名,会自动查询匹配,可以快速进行选择 […]

龙生   20 Nov 2019
View Details

verynginx-web防火墙

VeryNginx 转载:https://github.com/alexazhou/VeryNginx VeryNginx 是一个功能强大而对人类友好的 Nginx 扩展程序. 提示 v0.2 版本之后,控制台入口被移动到了 /verynginx/index.html 介绍 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了高级的防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 VeryNginx在线实例 用户名 / 密码: verynginx / verynginx 详细配置说明见:VeryNginx Github WiKi Nginx 运行状态分析 每秒请求数 响应时间 网络流量 网络连接数 自定义行为 VeryNginx 包含强大的自定义功能,可以做很多事情 自定义行为包含两部分, Matcher 和 Action 。 Matcher 用来对请求进行匹配, Action 为要执行的动作 这样的优势在于把所有的前置判断整合在Matcher里一起来实现了,使复杂(组合)规则的实现变成了可能 Matcher 一个 Matcher 用来判断一个 Http 请求是否符合指定的条件, 一个 Matcher 可以包含一个或者多个约束条件,目前支持以下几种约束: Client IP Host UserAgent URI Referer Request Args 当一个请求没有违反 Matcher 中包含的全部条件时,即命中了这个 Matcher Action 每个 Action 会引用一个 Matcher ,当 Matcher 命中时, Action 会被执行 目前已经实现了以下 Action Scheme Lock 将访问协议锁定为 Https 或者 Http Redirect 对请求进行重定向 URI Rewrite 对请求的 URI […]

龙生   20 Nov 2019
View Details

maven install时报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test

事故现场: 解决办法: 一是命令行,

二是写入pom文件

  from:https://www.cnblogs.com/lxcy/p/8279899.html

龙生   20 Nov 2019
View Details

师说开源CMS 在IDEA 下运行起来的方法

1.git 项目到仓库中。 2.运行maven 导入JAR包 3.配置项目project structure(CTRL+ALT+SHIFT+S) project settings 第一项 Project compiler output 路径 : D:\git\CMS\target\shishuocms-2.0.1\WEB-INF\classes 第二项 Modules: Paths 选择第一个 Inherit project compile output path 复制 applicationContext.xml 、 log4j.properties、 shishuocms.properties 到 target/shishuocms-2.0.1/WEB-INF/classes下面。 别忘了修改shishuocms.properties的数据库连接配置。 ———————————————— 版权声明:本文为CSDN博主「matt0614」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/matt0614/article/details/44972539

龙生   19 Nov 2019
View Details

CD基金会、Jenkins、Jenkins X、Spinnaker和Tekton的常问问题

FAQ 什么是持续交付(CD)? CD是一种软件工程方法,团队在短周期内生成软件,确保软件可以随时可靠地发布。微服务、云原生架构的兴起引发了持续交付实践的必然结果。这与CI/CD有关,其中包括持续集成(CI) – 将所有开发者工作副本一天多次合并到共享主线的做法。 宣布了什么? CDF(Continuous Delivery Foundation,持续交付基金会)是一个新的、中立的组织,将发展和维持一个开放的持续交付生态系统。它将提供统一的治理和与供应商中立的管理,以及对资金和运营的监督。CD基金会的第一批项目是Jenkins、Jenkins X、Spinnaker和Tekton。 为什么CD社区组成基金会。为什么需要? 整个行业都迫切需要围绕管道、工作流程和其他CI/CD领域合作定义行业规范,并为CI/CD工具提供基础支持。例如,Jenkins社区正在寻求一个“全方位服务”的基金会来托管Jenkins(最受欢迎的CI/CD项目之一),并构建一个增强协作的平台。还需要一个全行业的中立DevOps/CD会议。 这是否代表了云原生态系统的转变? 是的,市场已转向容器化和云原生技术,因此CI/CD系统、DevOps和相关工具的生态系统发生了根本性的变化。CNCF云原生互动景观展示了CI/CD领域的多样性,以及在该领域中活跃的众多项目和供应商。 通过建立供应商中立的持续交付基金会,业界顶级开发者、最终用户和供应商可以将CI/CD作为方法,定义/记录最佳实践以及创建培训材料,以使全球任何软件开发团队能够交付代码更改更快、更可靠、无论它们是否为云原生。 开发者为何要关心? CI/CD项目目前面临的挑战,包括工具复杂性和管道和其他CI/CD工具缺乏行业标准化,正在抑制增长和创新。由于缺乏中立的法律实体和强有力的治理,项目很难吸引新开发者和组织的宝贵支持。项目维护者和开发者花费大量时间和金钱处理安全程序和监督等方面的变通方法。这使人们不再关注新的发展和创新。拥有广泛行业支持的基金会将能够更快地定义行业规范,并为跨项目协作创造更多机会,以改善开发者的工具。 谁用CD? CD广泛应用于云计算、企业IT,并且正在迅速扩展到其他顶级行业垂直领域。例如,在网络运营商与供应商并肩工作,开发CI/CD工具,使开发者能够直接与上游项目的分支合作 – 大幅缩短实施新功能的时间,并解决数月到数天的错误。使用云原生技术(如Kubernetes)时,设置CI/CD管道将加快发布生命周期。这使开发者每天可以多次发布;让团队灵活到足以快速迭代。 CDF如何与渐进式交付相关? 渐进式交付(Progressive delivery)是现代持续交付技术的一种形式,例如灰度发布、功能标记、A/B测试、经过验证的部署组等。渐进式交付技术和技术与持续交付密切相关。有关渐进式交付的更多信息,请阅读James Governor关于此主题的Redmonk博客:https://redmonk.com/jgovernor… 这将如何影响开源软件的开发? 持续交付可提高软件开发团队的速度、生产力和可持续性。CDF促进行业顶级开发者、最终用户和供应商之间的合作,以确保CD方法的软件工程充分发挥其潜力,推进开源软件开发。 哪些项目将包含在CDF中? CDF正在推出四个项目:Jenkins、Jenkins X、Spinnaker和Tekton,还有更多感兴趣的项目正在筹备中。我们邀请人们关注CDF技术监督委员会(“TOC”),该委员会将在未来做出项目决策:https://github.com/cdfoundati…。 我是否必须是成员才可以贡献到CDF项目? 绝对不是,CDF中的开源项目或任何Linux基金会计划的技术贡献都不需要成员资格。组织作为成员加入CDF,因为它们希望在持续交付模型和最佳实践的增长和发展中扮演积极的角色,而不只是支持CDF中的开放源码项目。如果你有兴趣加入,请参阅https://cd.foundation/members…。 什么是Jenkins? Jenkins是领先的开源自动化服务器,由大量不断增长的开发者、测试者、设计者和其他对持续集成、持续交付和现代软件交付实践感兴趣的人提供支持。它基于Java虚拟机(JVM),提供超过1,500个插件,可将Jenkins扩展为几乎所有技术软件交付团队使用的自动化服务器。2019年,Jenkins有超过了200,000个已知安装,使其成为部署最广泛的自动化服务器。 什么是Jenkins X? Jenkins X是Kubernetes上现代云应用程序的开源CI/CD解决方案。Jenkins X提供管道自动化、内置GitOps和预览环境,以帮助团队协作并加速他们的软件交付。Jenkins X使用最好的OSS工具自动化Kubernetes的CI + CD,如Jenkins、Tekton、Prow、SkaffoldKaniko和Helm。 为什么Jenkins和Jenkins X成为CDF的一员? Jenkins和Jenkins X将成为与技术兴趣相关的中立社区的一部分,并在构建开发者社区和项目治理方面获得帮助。CD基金会还将协助Jenkins和Jenkins X的营销和文档工作。 这对现有Jenkins用户有何影响? 将Jenkins和Jenkins X捐赠给CD基金会将促进行业内开发者、最终用户和供应商之间的更多合作。有关详细信息,请参阅此电子邮件和与Jenkins社区的对话:https://groups.google.com/for… 什么是Tekton? Tekton是一组用于构建CI/CD系统的共享开源组件。它使持续交付控制平面现代化,并将软件部署的大脑转移到Kubernetes。Tekton的目标是通过供应商中立的开源基金会为CI/CD管道、工作流程和其他构建模块提供行业规范。Tekton的代码在https://github.com/tektoncd/p…。 为什么Tekton成为CDF的一员?为什么Google会捐赠代码? 作为CDF的创始成员,谷歌正在捐赠Tekton。正如Kubernetes通过提供一组标准的API在云中进行交互而彻底改变了应用程序开发,Google的目标是通过CD基金会为DevOps从业者提供相同的优势。CDF将提供行业规范、安全、实用和可扩展的持续交付构建块,可用于在任何地方部署代码。 Tekton对knative build的影响是什么? 从第1天开始,可插拔性一直是knative的核心功能。将Build与Serving分离的目标是强化这种可插拔性概念。已经对构建系统感到满意的用户可以将其与Knative Serving一起使用。Tekton将继续支持Knative生态系统作为一流的目标环境。Tekton管道将部署到Knative环境。 在可预见的未来,Knative Build将继续作为Knative的一部分,专注于无服务器环境的源到容器工作流程。这两个项目将在标准和界面上保持紧密联系。 什么是Spinnaker? Spinnaker是云端优先的持续交付平台,最初由Netflix创建,目前由Netflix和Google共同领导。它支持所有主要的云平台和Kubernetes,并得到各个供应商的贡献。Spinnaker通常用于大规模组织,DevOps团队通过提供“黄金路径”(golden path)应用程序部署管道来支持许多开发者。 为什么Google/Netflix将Spinnaker捐赠给CDF? 随着Spinnaker最近将其治理正式化,将其转移到基金会是社区自然的下一步。Spinnaker设计为持续交付平台,通常与Jenkins结合使用,因此CDF真的是项目的理想之家。 Spinnaker也是一个多组件系统,在概念上与Tekton分享了许多想法 – 看到两个项目在一个基金会上聚集在一起,是将持续交付向前推进的巨大机会。 这对Spinnaker用户有何影响? Spinnaker作为CDF的一员,社区将有更多机会创建更简单、更强大的端到端体验,并就CI/CD的一套通用标准进行协作。Spinnaker用户在持续交付领域拥有丰富的经验,加入CDF提供了一个与更广泛的社区分享专业知识的绝佳机会。 Spinnaker用户还将受益于CDF社区中广泛的CI/CD知识,他们使用的各种工具之间的一致性,当然还有不断改进的生态系统! 未来的CI/CD项目进入CDF的过程是怎样? 其他项目预计将通过其即将成立的技术监督委员会(TOC)加入CDF:https://github.com/cdfoundati…,重点是将CD生态系统整合在一起,围绕可移植性和互操作性构建规范和项目。 CDF的下一步是什么? 接下来的步骤是启动治理结构。将成立一个理事会、技术和外联/营销委员会。我们计划在未来几个月内实现这一目标,并邀请新成员加入我们的社区。如果你有兴趣加入社区推进CD,请到https://cd.foundation/members…。 CNCF的参与程度,为什么需要一个单独的基金会? 首先要注意的是,CD适用于整个软件行业,而不仅仅适用于现代云原生应用程序。CNCF(Cloud Native Computing Foundation,云计算本地计算基金会)是CDF的姐妹基金会,拥有自己的治理结构和使命。每个基金会都有不同的使命,由其创始成员和技术专家定义。CNCF认为大多数与CD相关的工具超出了他们专注的云原生定义的范围,后者主要关注容器化、微服务、服务网格和编排。CDF超越云和容器,包括传统基础设施、移动、物联网、裸机等。CNCF和CDF都属于较大的Linux基金会旗下,计划在许多领域进行合作,包括同场会议。例如,CDF将于5月20日在西班牙巴塞罗那的KubeCon + CloudNativeCon Europe 2019举办持续交付峰会(CDS)活动。 CDF如何支持或与DevOps领域的其他玩家合作? CDF的使命是为开发者、最终用户和供应商提供一个中立的家庭,以便在CI/CD方法上进行协作。在这方面,CDF将通过发布关注可移植性的最佳实践、培训材料和行业指南来支持DevOps从业者。 有兴趣成为这个新基金会成员并制定治理方案的组织应到CDF加入的页面。开发者可以在此处注册CD基金会邮件列表:info@lists.cd.foundation。任何有兴趣加入CDF的项目都可以联系技术监督委员会(TOC):https://github.com/cdfoundati…。 KubeCon […]

龙生   12 Nov 2019
View Details

CMMI5的一些资料

龙生   11 Nov 2019
View Details
1 141 142 143 410