mysql 菜单数据转成树状结构 (递归)

var arr = [{ id: 1, name: '早上', pid: 0 }, { id: 2, name: '起床', pid: 1 }, { id: 3, name: '刷牙', pid: 1 }, { id: 4, name: '洗脸', pid: 1 }, { id: 5, name: '中午', pid: 0 }, { id: 6, name: '吃饭', pid: 5 }, { id: 7, name: '睡觉', pid: 5 }, { id: 8, name: '晚上', pid: 0 }, { id: 9, name: '洗脸', pid: 8 }, { id: 9, name: '洗脚', pid: 8 }, { id: 9, name: '睡觉', pid: 8 }] var getTreeOfArr = function (data, pid) { var newArr = []; for (var i = 0; i < data.

B.4创建index.html 文件

要完成示例程序,需要创建一个index.html文件,位置保存在 src/main/webapp下。 <!DOCTYPE html> <html> <body> <h1>My First Spring MVC app</h1> <p>My first Spring MVC app Create by SpringToolSuite and Maven.</p> </body> </html> 完成了B.4。 B.5 更新项目 选择项目,右键 单击Maven> Update Project . 完成了。 如果不做这个步骤,会发现项目前面有个错误。更新了就没有了。 下面是我自己写的,运行这个项目,访问我们的index.html 到server中添加这个应用:点击server中tomcat,右键> Add and Remove 打开浏览器,输入地址:http://localhost:8080/SpringToolSuiteCreateSpringMVCwithMave/ 你会看到index.html文件的内容。我的应用名字有点太长了,希望您的写的短一点,别这么费劲。 下面新建一个jsp来试试。 新建一个jsp文件,文件名叫:indexUseJsp.jsp 内容和html文件内容差不多, 地址栏输入:http://localhost:8080/SpringToolSuiteCreateSpringMVCwithMave/indexUseJsp.jsp 这样就完成了一个开发环境的搭建。 其实不用spring,开发jsp特别好开发,废了这么大的力气,无非是要使用Spring框架而已。 因此,本文和上一篇博客,把用SpringToolSuite 创建SpirngMVC应用,采用JSP作为视图引擎,这个事情解决了。 小伙伴们可以愉快地开发了。 官方文档说的是对的,就是视图技术中关于jsp的那一段 说要这样子配置一下啊,最佳实践啊,什么的,无所谓的,本文没有用到也可以进行jsp开发和学习。 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> 也就是说没有配置这个 viewResolver,以后学的更多也许就明白了。 我要去学习JSTL,标签库什么的 ,博文结束,菜鸟欢迎关注,一起进步。

JVM从入门到精通-JVM工具命令行篇

第一章JVM概述 1.为什么调优JVM 2.调优概述 3.性能优化步骤 1.性能监控 2.性能分析 3.性能调优 减少Full GC的频率,以较小的内存改善应用程序的响应性、吞吐量和延迟性; 4.性能指标 并发数: 三者关系 并发数影响吞吐量和响应时间; 当适合时,吞吐量最大,响应时间较快; 当并发数达到极限时,堵车,响应时间和吞吐量都会减少; 第二章:JVM诊断工具-命令行 1.JPS查看正在运行的Java进程 2.JPS [options] [hostid] jps -m > a.txt -m是外部传递给主方法main的参数 jps -v 传递给虚拟机的参数 关闭UsePerfData参数就无法查看到进行信息 hostid参数 2.jstat查看JVM的统计信息 基本语法 interval:时间间隔; count:查询次数; -t:程序运行时间; -h:查询标题信息; 应用1:使用-t参数,监测GC时间,得出GC与程序运行时间 计算垃圾回收的时间与程序运行的时间进行分析 应用2:判断OOM异常 从老年代中抽样出一组数据中最小的占用比例;若一直上升则有肯能OOM; 3.jinfo实时查看和修改JVM配置参数 扩展:查看JVM修改和默认参数 4.jmap导出内存映像文件&内存使用情况 4.1 导出dump文件 例子:手动导出dump文件 jmap -dump:format=b,file=d:\1.hprof 进程ID 格式为b,是把dump文件和hprof文件映射起来; jmap -dump:live,format=b,file=d:\1.hprof 进程ID live只打印存活的对象; 手动导出和自动导出 自动导出可以在OOM时导出Dump文件; 自动导出: 4.2 显示堆内存相关信息 jmsp -heap pid jmap在此时这个时间点上的堆使用情况; GUI Visual > jstat > jmap

matlab中dzdx,MatConvnet工具箱使用手册翻译理解一

概述 MatConvNet是用于MATLAB的卷积神经网络(CNN)的实现。工具箱的设计注重简单性和灵活性。它将CNN的构建块暴露为易于使用的MATLAB函数,提供用于计算具有过滤器组的线性卷积,特征池化等的例程。以这种方式,MatConvNet允许新的CNN快速原型架构;同时,它支持CPU和GPU上的有效计算,允许在大型数据集(如ImageNet ILSVRC)上训练复杂模型。本文档概述了CNN及其在MatConvNet中的实现,并给出了工具箱中每个计算模块的技术细节。 第一章 MatConvNet简介 MatConvNet是一个实现卷积神经网络(CNN)的MATLAB工具箱,被应用于计算机视觉。 自从[8]的突破性工作以来,CNN已经在计算机视觉领域产生重要影响,特别是在图像理解上,基本上取代了传统的图像表示。例如在我们自己的VLFeat [11]开源库中实现的图像表示。 虽然大多数CNN是通过组合简单的线性和非线性滤波操作获得的,诸如卷积和整形,它们的却并非微不足道。原因是CNN需要从大量的数据,通常是数百万的图像中学习,需要非常有效的实现。 作为大多数CNN库,MatConvNet通过使用各种优化,主要是通过支持GPU上的计算来实现这一点。 存在许多其他机器学习,深度学习和CNN开源库。引用一些最流行的:像CudaConvNet,Torch,Theano,Caffe。 许多这些库得到很好的支持,有几十个积极的贡献者和大量的用户基础。 因此,为什么要创建另一个库? 开发MatConvNet的关键动机是为研究人员提供一个特别友好和有效的环境,以便在其研究中使用。MatConvNet通过其在MATLAB环境中的深度集成实现了这一点,MATLAB环境是计算机视觉研究以及许多其他领域中最受欢迎的开发环境之一。特别地,MatConvNet公开了简单的MATLAB命令CNN构建块,如卷积,归一化和合并(第4章); 这些可以组合和扩展以轻松创建CNN架构。虽然有许多这样的模块,使用用C ++和CUDA(第1.4节)编写优化的CPU和GPU实现,但是MATLAB本身支持GPU计算意味着通常可以在保持计算效率的同时在MATLAB中直接写入新的块。与使用低级语言编写新的CNN组件相比,这是一个重要的简化,可以显着加速测试新的想法的速度。使用MATLAB还提供了一个连接到其他领域的桥梁;例如,MatConvNet最近被亚利桑那大学用于行星科学,正如NVIDIA的博客文章中所总结的。 MatConvNet可以从数以百万计的图像学习大型CNN模型,如AlexNet [7]和非常深的网络[9]。这些强大模型中的几个的预训练版本可以从MatConvNet主页下载。虽然功能强大,MatConvNet仍易于使用和安装。 实现是完全独立的,只需要MATLAB和兼容的C ++编译器(使用GPU代码需要免费提供的CUDA DevKit和合适的NVIDIA GPU)。可以使用三个MATLAB命令下载,编译和安装MatConvNet。其包括了几个完整功能的示例,演示如何可以学习小型和大型网络。重要的是,几个标准的预训练网络可以立即下载并在应用程序中使用。有一与工具箱一起保留了具有完整的工具箱技术描述的手册[8]。这些特性使MatConvNet在教育背景下非常有用。 MatConvNet是根据BSD类似许可证的开放源代码。 它可以从http://www.vlfeat.org/matconvnet以及从GitHub.10下载。 1.1入门 MatConvNet易于安装和使用。fig1.1提供了一个完整的例子,使用最新一代深卷积神经网络分类图像。 该示例包括下载MatConvNet,编译包,下载预训练的CNN模型,并在MATLAB的一个图像上评估该模型。 在这个例子中的key命令是vl_simplenn,一个用CNN网络和预处理图像im_的包装器作为输入,并且产生结果的结构res作为输出。 该特定包装器可以用于对具有简单结构,即操作链的网络建模。 检查vl_simplenn(在MatConvNet中编辑vl_simplenn)的代码,我们注意到包装器顺序地转换数据,应用由网络配置指定的一些MATLAB函数。这些功能,在第4章中详细讨论,称为“构建块”,并构成MatConvNet的骨干。 虽然大多数块实现简单操作,但他们效率使之不平凡(第1.4节),它们以及支持反向传播(第2.3节)以允许学习CNN。接下来,我们演示如何直接使用这样的构建块之一。 为了该示例考虑使用线性滤波器组对图像进行卷积。首先在MATLAB中读取图像,比如说使用 im=single(imread('peppers.png')) 得到H*W*D矩阵im,其中D = 3是图像中的颜色通道的数量。然后用 f=randn(3,3,3,16,'single') 来创建一个K = 16个随机字母大小为3 * 3的数组。 最后,使用命令 y=vl_nnconv(x,f,[]) 将图像与过滤器卷积。 这将产生一个数组y带有K个通道,每个通道用于bank中的每一个。 总代码如下: % install and compile MatConvNet (run once) untar(['http://www.vlfeat.org/matconvnet/download/'... 'matconvnet1.0beta24.tar.gz']) ; cd matconvnet1.0beta24 run matlab/vl_compilenn % download a pretrained CNN from the web (run once)

SpringToolsSuite 导入官方教程的方法

File --->New---->选中other 然后选择Import Spring Getting Started Content 弹出: 如果这个教程下载下来了,Finish按钮会可以点击 如果没有下载下来,就是不可用的状态。它会持续下载,如下图: 请注意右下角的进度条。 再次奥。

【已解决】IDEA中Maven的Dependencies包中有红波浪线解决方案

【已解决】IDEA中Maven项目红色波浪线解决方案 在原来的项目中已经导入相关的包,但是报红色波浪线 例如原来我在dependencies中报错的是这个包 我们可以知道这个是在spring-boot-starter-test 依赖下的jar包 【解决方案】 第一步:确认自己是有这个包在Maven仓库路径下的。 打开File-setting 如果没有这个包则: 刷新包路径会自动加载。则会将对应的包下载到路径中。 第二步:我们知道了报错的依赖为spring-boot-starter-test 依赖下的jar包 则去pom文件中找对应的依赖 则先将依赖剪切下来。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 点击右上角的Maven刷新 或者 Maven栏中的Maven刷新 我们就会发现原来的Maven菜单栏中的test依赖消失了。 此时我们重新将依赖复制进去 重新刷新maven配置 则红色波浪顺利去除。 问题解决。

java 方法可变参数,java 可变参数详解及实例

这篇文章主要介绍了java 可变参数详解及实例的相关资料,需要的朋友可以参考下 java 可变参数详解 可变参数(Varargs)使程序员可以声明一个接受可变数目参数的方法。 可变参数也是JDK5.0中出现的新特性。 可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。 但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。 注意,可变参数必须是方法声明中的最后一个参数。一个方法不可能具有两个或两个以上的可变参数。 附上例子程序: public class TestVarargs { private static int sum(int... nums)// 可变参数本质上是数组,但是如果在函数中声明为数组形式,就只能以数组形式调用,而不能用离散的值 { int sum = 0; for (int num : nums) { sum += num; } return sum; } public static void main(String[] args) { int result = sum(1, 3); System.out.println(result); result = sum(1, 2, 3, 4); System.out.println(result); // 可以用数组形式调用 result = sum(new int[] { 3, 4, 5 }); System.out.println(result);

excel由多个条件匹配结果的3种方法

vlookup进行单个条件的匹配自不必说,这里主要记录一下进行由多个条件(即多列)来匹配结果的方法。 有3种方法: 一.添加辅助列 简单易理解。 二.vlookup结合if{1,0}虚拟数组 重点理解if({1,0},A:A&B:B,c:c),它的作用就是生成一组组数据,数据样式是:( 条件一&条件二,结果列; ………… ),即条件与结果之间以逗号隔开、每组数据之间以分号隔开。vlookup里第三个参数的“2”就是选择符合条件的组数据的第二项即结果项。 三.match函数与index函数组合 match函数返回指定项在单元格区域中的相对位置,index函数返回结果列在此位置的值。 我相信还有其它方法,但无须太多,能快速解决问题即可。

org.apache.catalina.startup.ContextConfig.processAnnotationsJar Unable to process Jar entry

现象 03-Mar-2017 17:01:45.864 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.startup.ContextConfig.processAnnotationsJar Unable to process Jar entry [javassist/ByteArrayClassPath.class] from Jar [jar:file:/D:/TomCat/webapps/ROOT/WEB-INF/lib/javassist-3.20.0-GA.jar!/] for annotations java.io.EOFException ........ 当前为Idea创建的一个Maven项目,在启动服务器的时候报错 解决办法: 找到该目录下的jar删除 /D:/TomCat/webapps/ROOT/WEB-INF/lib/javassist-3.20.0-GA.jar ,然后重新启动tomcat即可 .注意检查pom.xml中是否无意中引入不必要的东西,移除.若没有,直接删除jar重启tomcat就OK

java se中的se指什么,什么是Java SE?

本文概述 SE代表Java Standard Edition是一个计算平台, 我们可以在其中执行软件, 并且可以将其用于开发和部署台式机和服务器环境的可移植代码。它使用了Java编程语言。它是Java软件平台家族的一部分。 Java SE具有各种通用API和Java类库。它是Java编程的核心平台, 并提供所有库和API, 例如java.lang, java.io, java.math, java.net, java.util等。 以下是Java SE拥有的一些API- Applet:Applet是一个小型应用程序, 尤其是执行一个或几个简单功能的实用程序。该API提供了创建applet所需的类。小程序框架包含两个实体。一个是小程序, 另一个是小程序上下文。 applet是一个可嵌入的窗口, 其中包含一些其他方法, applet上下文用于初始化, 启动和停止applet。 AWT- AWT代表“抽象”窗口工具箱。该软件包包含用于创建用户界面以及绘制图形和图像的所有类。任何UI对象(如按钮和滚动条)都称为组件。 RMI- RMI代表远程方法调用, 使程序员能够创建基于分布式Java技术的应用程序到基于Java技术的应用程序。 RMI使用对象序列化来封送和取消封送参数, 并且不会缩短类型。 JDBC-代表Java数据库连接。它允许你从任何数据源(关系数据库, 电子表格或平面文件)中获取数据。 Swing- Swing提供了一组“轻量级”组件, 主要用于图形用户界面增强。所有的swing组件和相关类都应该在调度线程上访问。 集合-集合是指一组对象, 称为其元素。集合框架接口中有许多方法依赖于equals方法。例如, contains(Object o)方法说, 如果集合中包含一个满足以下条件的元素, 则它将返回true:(o == null?e == null:o.equals(e)) xml绑定-它为客户端用户应用程序提供了运行时绑定框架, 允许用户进行编组, 解组和验证功能。 JAXBContext是运行时绑定框架的客户端入口点。 JavaFX(已合并到Java SE 8)-其中包含几个程序包, 例如javafx.animation(提供一组易于动画的类), javafx.application(提供应用程序生命周期类的一组类)和javafx.beans( )等 Java 8 Collections Streaming API-它包含一些类, 以支持对元素流进行功能样式的操作。例如对集合进行map-reduce转换。流操作分为两个部分, 即中间操作和终端操作, 它们组合在一起形成流水线。 Java 9 Reactive Streams API-Reactive Stream计划是由Netflix之类的巨头采取的, 目的是标准化应用程序中数据的异步交换。它们是JDK的一部分, 形式为java.

php 商城定时秒杀,JS实现商城秒杀倒计时功能(动态设置秒杀时间)

一年一度的双十二如期而至,今天的你买买买了吗,下面小编给大家分享一个动态秒杀倒计时功能。 效果图 活动未开始 开始购买 活动结束 时 分 秒 $(function() { fn() function fn() { var timer = setInterval(function() { var start = '2019/03/13 00:00:00'; var StartTime = new Date(start); var NowTime = new Date(); var day = NowTime.getDate(); var month = NowTime.getMonth() + 1; var year = NowTime.getFullYear(); var tw = year + '/' + month + '/' + day + ' 09:00:00'; var ei = year + '/' + month + '/' + day + ' 10:00:00';

Mesher网格编辑器

文章目录 1. 界面展示2. Item捕捉2.1 支持顶点,边,和面的捕捉3. 选择操作3.1 支持选择顶点3.2 支持选择面 4. 简单的三角网格化5. 编辑网格5.1 删除顶点5.2 删除边5.3 删除面5.4 边的反转5.5 合并顶点5.6 单点(捕捉点)分割边5.7 多点分割边5.8 点分割面 6. 浏览功能6.1 边界边,边界顶点,边界面。 7 源码下载 该网格编辑器支持简单的捕捉,选择,网格化,编辑,浏览等功能。 1. 界面展示 2. Item捕捉 2.1 支持顶点,边,和面的捕捉 3. 选择操作 3.1 支持选择顶点 3.2 支持选择面 4. 简单的三角网格化 5. 编辑网格 5.1 删除顶点 5.2 删除边 5.3 删除面 5.4 边的反转 5.5 合并顶点 5.6 单点(捕捉点)分割边 5.7 多点分割边 5.8 点分割面 6. 浏览功能 6.1 边界边,边界顶点,边界面。 7 源码下载 源码跳转

java-基础

学习资料 hello,world! 下载这个软件,打开,按照下图方式新建 比如,我们创建一个hello类 psvm可以自动生成main方法 sout可以快捷生成system.out hello,world! public class hello { public static void main(String[] args) { System.out.println("hello,world!"); } } 运行 代码解释: public class hello { } 这是新建一个公开类,名叫hello public static void main(String[] args) 这是一个main方法,()里面传了一个参数 规范新建一个大型项目 新建一个空项目: 起一个名字,选一个地址 新建一个模块 输入名字之后就可以看到src了 工具栏点击 选择相应的版本 OK之后就可以像之前介绍的那样新建一个类开始了 注释的写法 // 单行注释 /*多 行 注 释 */ /** * javadoc:文档注释 * @Description Helloworld */ 标识符 1.所有标识符都应该以大小写字母,$或者_为首字母开始,后面的可以大小写字母,$或者_和数字。 2.标识符大小写敏感。 3.不可以使用关键字作为变量名或者方法名。 数据类型 java的所有变量必须先定义后使用。 基本类型: 最好完全避免使用浮点数比较,因为浮点数是离散的,存在舍入误差 类型转换: 注意:不能对布尔值进行转换,且转换的时候可能存在内存溢出或者精度问题。 已经溢出了之后转换是没有用的了 引用类型:

shiro自定义密码加密验证

现在数据库密码基本上没有明文存储的,基本上都是加过密之后的信息,今天我们来处理一下我们平时在整合shiro的时候如何处理密文的情况,shiro的登录认证的时候会获取到UsernamePasswordToken里面的password和你返回SimpleAuthenticationInfo(user, user.getPassword(), “”);里面传入的密码进行匹配,一致则通过验证。 那么我们如何自定义密码验证呢,下面我们以MD5加密作为实现 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { UsernamePasswordToken userToken = (UsernamePasswordToken)token; String username = userToken.getUsername(); SysUserEntity user = loginService.findUserByName(username); //将登陆用户存入session中 Subject currentSubject = SecurityUtils.getSubject(); Session session = currentSubject.getSession(); session.setAttribute("loginUser",user); return new SimpleAuthenticationInfo(user, user.getPassword(), ""); } 这边很明显的是前台传过来的是明文,我返回的时候是加过密的,所以肯定不能通过验证,现在开始让shiro走我们自己的验证逻辑 @Component public class CredentialsMatcher extends SimpleCredentialsMatcher{ @Override public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) { UsernamePasswordToken authcToken = (UsernamePasswordToken) token; Object tokenCredentials = MD5Util.md5Encrypt32Lower(String.valueOf(authcToken.getPassword())+"LJW"); Object accountCredentials = getCredentials(info); return accountCredentials.

使用VS2019开始第一个C语言程序,环境安装配置+代码实例

C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS2019编写简单的C程序示例 简单示例,VS2019调试C语言程序 C语言基础-基本算法 C语言基础-数据类型 C语言中的输入输出函数 C语言流程控制语句 C语言数组——一维数组 C语言数组——二维数组 C语言数组——字符数组 C语言中常用的6个字符串处理函数 精心收集了60个C语言项目源码,分享给大家 C语言核心技术——函数 C代码是怎样跑起来的? C语言实现字符串的加密和解密 C语言——文件的基本操作 使用C语言链表创建学生信息并且将信息打印输出 图解C语言冒泡排序算法,含代码分析 实例分析C语言中strlen和sizeof的区别 C语言实例:将人员信息写入磁盘文件并读出显示 环境安装配置 首先我们要在Visual Studio官方网站去下载安装包 https://visualstudio.microsoft.com/zh-hans/vs/ 进入官网后会发现有三种版本可供下载,分别是社区版、专业版和企业版,冲哥这里选择的是专业版。 下载完成后,我们双击下载的软件开始安装 在弹出的画面点击继续 等待完成然后我们开始配置开发环境 如果没有别的需求这里我们就只选择:使用C++的桌面开发 如果不想用默认的安装路径(默认是安装在C盘的),可以点击更改来指定安装路径 选择好安装路径后,在右下角安装按钮的左边选择下载时安装(默认就是,这样可以节省安装时间),然后点击安装 等待安装完后,点击以后再说,也可以注册一个账号登录。 开发设置选择Visual C++ 根据个人喜欢选择主题,冲哥酷爱深色😍,然后点击启动。 启动后的画面如下: 点击创建新项目 选在空项目,然后点击下一步 填写项目名称,和项目存放的位置,然后点击右下角的创建 下面就是我们编写代码的画面 在源文件上右击添加–>新建项,也可以直接使用快捷键ctrl+shift+A 选择C++文件 填写程序名称并将后缀名改为.c,然后点击添加 接下来就可以写代码了,冲哥这里写了一个变成界都在用的HelloWorld,如果觉得字体小的话,可以按住CTRL按键将鼠标滚轮向上滚,这样字体就变大了。 接下来运行刚刚写的代码,验证一下环境是否OK,点击调试–>开始执行(不调试)或者直接快捷键CTRL+F5 运行结果如下: 至此,环境已经OK,接下来开始你的码农之路 代码调试 代码功能: 求从1加到10的和 代码: #include<stdio.h> #define N 10 int main() { int result = 0; for (size_t i = 1; i <= N; i++) { result += i; } printf("

Nginx配置文件错误导致图片资源404

背景 前段时间跟着视频学习了一下Django框架,搭了一个博客站点(Vue+Django前后端分离,阿里云ESC部署(Ubuntu 18.0),Nginx代理服务器),代码本地环境测试无误后就更改ajax请求地址为部署站点项目地址,但是前后端代码部署到阿里云以后,所有功能都ok,就是图片资源加载不出来,如下图: 期望的效果应该如下图,能正确显示图片: 分析原因 首先肯定是自查代码了,但是反复查看以及本地调试均无问题,后端也设置了跨域允许,于是最后将原因范围锁定在nginx服务器配置上。 通过控制台查看信息: 给出的404报错信息,通过图片的路径直接在浏览器中国访问也是404 但是在Nginx配置文件中给图片资源所在的文件夹加上 autoindex on; 在浏览器中是可以看到图片资源的,如下: 这说明资源是没问题的,并且之前也单独去服务器上的通过桌面去查看了文件,存在且可以查看。 查询了很多文章,给出了很多解决办法但都无法解决,正打算放弃了但谁知柳暗花明又一村。 上图原文链接:https://blog.geekdt.com/1330.html 解决方法 正如上图中所说,一些配置nginx脚本会自动加上一个页面资源缓存配置,用来优化体验,但如果我们在配置路径的时候重定向了本地目录位置来访问资源就会和脚本自动加上的缓存配置冲突,因此需要将其注释掉。而博主正是通过宝塔部署的站点,nginx配置文件中就会加上缓存配置,将其注释掉,果然博客站点访问就没有问题了(博主这里只是图片资源重定向到了本地的其他目录因此只需注释图片缓存配置,如果是js或者css文件也重定向了服务器本地目录就也要一并注释,不过这一段配置只要知道了什么意思完全可以根据实际情况自行设置)。 最后,我的博客站点就可以正常使用了。

java pat 乙级1030_PAT-乙级-1030. 完美数列(25)

1030. 完美数列(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。 现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 输入格式: 输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。 输出格式: 在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。 输入样例: 10 8 2 3 20 4 5 1 6 7 8 9 输出样例: 8 提醒:没说要按原顺序的数列,所以可以先排序 #include using namespace std; int main() { int n,maxx=; double p,a[]; cin>>n>>p; for(int i=; i cin>>a[i]; sort(a,a+n); for(int i=; i { for(int j=i+maxx-; j {

大数据与云计算的理解与基本认识

文章目录 大数据海量数据产生的原因?大数据的出现与发展为我们生活带来了什么?传统的数据处理,存储手段在海量数据当中有什么劣势?大数据数据存储手段?大数据分析在商业上的应用? 云计算什么是虚拟化?虚拟化的作用云计算公司有哪些云产品及应用情况云平台基础架构云计算中安全问题有哪些,有哪些策略针对这些问题云计算能干什么?云计算的具体的形式生活与云计算关系云计算在未来可以改变什么 大数据 海量数据产生的原因? 大数据有4V特点,即Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。 (1)随着物联网、社交网络、云计算等技术不断融入我们的生活以及现有的计算能力、存储空间、网络带宽的高速发展,人类积累的数据在互联网、通信、金融、商业、医疗等诸多领域不断地增长和累积。 (2)大数据的成因源于信息技术的发展,技术及互联网的发展,推动着大数据时代的来临,各行各业每天都在产生数量巨大的数据碎片,数据计量单位已从从Byte、KB、MB、GB、TB发展到PB、EB、ZB、YB甚至BB、NB、DB来衡量。 体会看法: 各种数据政治迅速膨胀并变大,它决定着企业的未来发展,随着时间的推移,人们会越来越多地意识到数据对企业的重要性,大数据时代对人类的数据驾驭能力提出了新的挑战,也为人们获得更为深刻、全面的洞察能力提供了更大的空间与潜力。 大数据的出现与发展为我们生活带来了什么? (1)帮企业进行消费者的需求分析 现在的消费者不再是营销产品的被动接收器。通过大数据帮助企业找准消费者的需求点设计产品,刺激消费。 (2)帮企业挖掘锁定客户资源 通过大数据技术,可以实现企业的客户资源进行精准的锁定,形成可视化图片展示,有利于企业产品的营销推广的区域性。 (3)帮企业危机预警 危机效应将瞬间传递开来,对企业的商誉和品牌造成极大的伤害,而大数据可以帮助企业进行舆情监控防止给企业造成巨大的损失。 (4)大数据对政府城市管理的帮助 4.1 大数据应用于城市规划 准确掌握这些区域的分布对制定合理的城市规划有着极其重要的意义。由于一个区域的功能并不是单一的,如在科学文教区里仍然有饭店和商业设施的存在,一个区域需要由一个功能的分布来表达(如70%的功能为商业,20%的功能为住宅,剩余的为教育)。 4.2. 大数据应用于城市应急管理 大数据在应急管理中的应用方式分为两部分:大数据技术和大数据思维。大数据技术既包括诸如数据仓库、数据集市和数据可视化等旧技术,也包括云存储和云计算等新技术;而大数据思维则是从海量数据中发现问题,用全样本的思维来思考问题,形成了模糊化、相关性和整体化的考虑方式。 以疾病预防为例:大数据的使用可以将用户的每日数据输入到医疗数据系统,通过对匹配病原情况的数据筛查,可以准确的找到感染群体、规模、特征,同时可以快速调去处置方法,达到应急管理的重要目标。 4.3 大数据应用于城市环境保护 大数据的虚拟化特征,还将大大降低环境管理风险,能够在管理调整尚未展开之前就给出相关答案,让管理措施做到有的放矢。以管理污染源企业为例:通过大数据技术,可以实现污染源企业的精准锁定。在污染源的生命周期过程中,每个节点所需要的每一类数据,都可以进行搜集分析,形成基于污染源管理的数据资源分布可视图。 (5)大数据应用于犯罪预警 随着智能电话和电脑网络的普及,犯罪嫌疑人活动会产生大量在线信息,通过对收集到的海量的、模糊的、不完整的案件信息中的涉案人员信息、涉案物品信息、旅馆业信息、航班信息、车辆信息等,进行分析、挖掘,发现案件属性与犯罪人员属性的关联规则,进而找到犯罪的规律、特点,对预防、打击犯罪,保障城市公共安全具有重要的理论意义和现实意义。以美国为例:随着智能电话和电脑网络的普及,美国政府和大公司把自己的触角伸到个人生活的每个方面。美国个人的一切在线行为数据都被收集储存,有关公司和政府机构可以运用数据挖掘的办法,监控和预测个人的行为,并做出相关决策。 体会看法: 大数据的到来,是把双刃剑。有利也有弊。大数据的高速发展,使联系变得更加密切,但也让隐私变得不再隐私。 但是不可否认的是它对社会进步有促进作用。 传统的数据处理,存储手段在海量数据当中有什么劣势? 数据的共享程度:无共享,冗余度极大 数据的独立性:不独立,完全依赖于程序 数据的结构化:无结构 储存能力弱和储存数据速度慢, 业务信息逐级传送,传输所需时间长 信息传输错误率高,不能准确反映顾客需求 信息搜集传输成本高 大数据数据存储手段? 1、NAS(Network Attached Storage:网络附属存储) NAS是一种专用数据存储服务器,包括存储器件和内嵌系统软件,提供文件集中存储和共享功能。 NAS设备和多台视频存储服务单元均可通过ip网络进行连接,按照tcp/ip协议进行通信,以文件的i/o(输入/输出)方式进行数据传输。一个NAS单元包括文件服务管理工具,核心处理器,一或多个的硬盘驱动器用于数据的存储。 采用NAS方式可以同时支持多个主机端同时进行读写,其共享性能和扩展能力十分优秀;同时NAS可应用在复杂的网络环境中,部署也相当灵活。 2、SAN(Storage Area Network:存储区域网络) SAN是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。SAN网络独立于数据网络存在,因此存取速度比较快,另SAN一般采用高端的RAID阵列。SAN提供了一个专用的、高可靠性的存储网络。允许独立地增加它们的存储容量,使得管理及集中控制更加简化。 3、DAS(Direct-Attached Storage:开放系统的直连式存储) DAS主要依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。 DAS与服务器主机之间的连接通常采用SCSI连接,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道会成为IO瓶颈;服务器主机SCSIID资源有限,能够建立的SCSI通道连接有限。 4、硬盘 硬盘是电脑主要的存储媒介之一,由一或多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。 无论是dvr、dvs后挂硬盘还是服务器后面直接连接扩展柜的方式,都是采用硬盘进行存储方式。采用硬盘方式进行的存储严格意义上说并不能算作存储系统。因其除不具备raid系统外,扩展能力还极其有限无法实现数据的集体存储 管理手段主要靠文件系统和数据库系统。 数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。两者属于系统软件或底层软件;都是用来存储和访问数据的;都有着悠久的研究开发历史;都有成熟的标准或规范。这既有利于开发可移植的程序,又不利于开发创新的系统,特别是分布式系统。 体会看法: 这四种数据管理手段让海量数据中重要的数据变得更加合理有序,方便信息处理 大数据分析在商业上的应用? 参考 1、体育赛事预测 世界杯期间,谷歌、百度、微软和高盛等公司都推出了比赛结果预测平台。百度预测结果最为亮眼,预测全程64场比赛,准确率为67%,进入淘汰赛后准确率为94%。现在互联网公司取代章鱼保罗试水赛事预测也意味着未来的体育赛事会被大数据预测所掌控。 2、股票市场预测 去年英国华威商学院和美国波士顿大学物理系的研究发现,用户通过谷歌搜索的金融关键词或许可以金融市场的走向,相应的投资战略收益高达326%

Java反射中,为什么推荐Class.forName()获取class?

一、Java反射中获取Class对象的三种方式 在Java反射中,反射的入口就是class,获取class的方式有三种 Class.class;Class.forName();对象.getClass() 对三者的简单理解 Class.class的形式会使JVM使用类加载器将类装入内存(前提是类还没有装入内存),不做类的初始化工作,返回Class对象。Class.forName()的形式会装入类并做类的静态初始化,返回Class对象。对象.getClass的形式会对类进行静态初始化、非静态初始化,返回引用运行时真正所指的对象(因为子对象的引用可能会赋给父对象的引用变量中)所属的类的Class对象。 静态初始化是指在加载类的时候初始化,而非静态初始化是new对象的时候初始化。 三种情况在生成Class对象的时候都会判断内存中是否已经加载此类。 注:只有使用Class.forName()时才会进行异常处理,因为Class.forName()要加载类路径,避免找不到的情况发生。 二、Class.forName源码分析 Class.forName(String className);这个方法的源码是 @CallerSensitive public static Class<?> forName(String className) throws ClassNotFoundException { Class<?> caller = Reflection.getCallerClass(); return forName0(className, true, ClassLoader.getClassLoader(caller), caller); } Class.forName()调用forName0方法,forName0的第二个参数被默认设置为true,这个参数代表是否对加载的类进行初始化,设置为true表示进行类初始化,代表会执行类中的静态代码块,以及对静态常量的赋值等操作。 可以清楚的看到Class.forName()方法实际上是调用ClassLoader来实现的。 ClassLoader是遵循双亲委派模型,调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。 三、为什么推荐Class.forName()获取class? Class.forName(),我相信我们第一次接触它的时候,大多数是在学习JDBC的时候。 使用JDBC时通常使用Class.forName()方法来加载数据库连接驱动。这是因为在JDBC规范中明确要求Driver(数据库驱动)类必须向DriverManager注册自己。 以MySQL的驱动为例解释: public class Driver extends NonRegisteringDriver implements java.sql.Driver { static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } ... } 通过源码可以看出Driver注册到DriverManager中的操作写在了静态代码块中,这就是为什么在写JDBC时使用Class.forName()的原因。 Class.forName()在加载数据库驱动时,是一种破坏双亲委派机制的使用,通过Application ClassLoader来加载一个第三方类,并没有使用父级的Bootstrap ClassLoad加载器。

python对数组先排序后去重

排序用的sorted函数,去重自己实现的,当然去重也可以用set import sys num = int(sys.stdin.readline().strip("\n")) list1=[] for i in range(num): m=int(sys.stdin.readline().strip("\n")) list1.append(m) #排序 list1=sorted(list1) print(list1) length =len(list1) i=0 result=[] #核心去重 while i < length-1: if list1[i] != list1[i+1]: result.append(list1[i]) i=i+1 for i in result: print(i,end=' ')