web应用安全和信息泄露预防
文章目录
- 1:spring actuator导致的信息泄露
- 1.1、Endpoint配置启用检测
- 1.2、信息泄露复现
- 1.3、防御
- 2:服务端口的合理使用
- 3:弱口令(密码)管理
- 4:服务端攻击
- 4.1、短信业务,文件上传等资源型接口
- 1、文件上传下载
- 2、短信
- 4.2、SOL注入攻击
- 4.3、敏感信息泄露
- 4.4、权限漏洞
- 5:客户端攻击
- 5.1、跨站脚本(XSS)攻击
- 5.1.1、知识点简介
- 5.1.2、xss攻击防御
- 1、Spring Boot 防 Xss 代码攻击
- 5.2、CSRF 跨域攻击
- 5.2.1、CORS跨域简介
- 1、解决跨域
- 5.3、点击劫持
使用springboot开发的应用可能存在各种使用不当导致的信息泄露和漏洞,在此记录
1:spring actuator导致的信息泄露
使用spring actuator你可以选择通过使用HTTP端点或使用JMX来管理和监控你的应用程序。 审计、健康和指标收集也可以自动应用于你的应用程序。
使用maven依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
</dependencies>
1.1、Endpoint配置启用检测
Actuator 端点(endpoint)让你可以监控并与你的应用程序互动。 Spring Boot包括一些内置的端点,并允许你添加自己的端点。 例如, 端点提供基本的应用程序健康信息:health
比如在application.yaml中配置
# Actuator 监控端点的配置项
management:endpoints:web:base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuatorexposure:include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * 可以开放所有端点。
但是在开启 include: ‘*’ 或者开启heapdump之后会存在信息泄露
可用已通过访问http://127.0.0.1:port/actuator/env
获取程序运行的所有的配置信息(包括application配置文件系统的默认配置等)
或者直接访问http://127.0.0.1:port/actuator/heapdump下载内存分析文件。里面可能会泄露配置的连接数据库的密码,ip等信息。
1.2、信息泄露复现
1、开启端点
management:endpoints:web:base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuatorexposure:include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * 可以开放所有端点。
2、下载堆分析文件:http://127.0.0.1:port/actuator/heapdump
3、使用jvm堆分析工具分析JVM堆的heapdump:比如jdk自带的JDK自带的JVisualVM工具开源的https://github.com/wyzxxz/heapdump_tool
下载jar包后在运行目录下运行:后面的heapdump就是你下载的分析文件
输入0或者1选择分析的模式,选0即可
后输入passowrd就会开始查找,最终查询的结果会打印出来同时会写到当前目录下的*_output.txt文件中
里面可能存在配置的数据库密码等导致信息泄露
1.3、防御
方案1:禁用heapdump,使得无法访问堆分析文件
exclude: ‘heapdump’
management:endpoints:web:base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuatorexposure:include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。exclude: 'heapdump' #禁用headump
此时重启程序再访问就访问不到了
- 方案2:结合Spring Security限制URL访问的规则
比如需要登录后才能访问等 - 方案3:加密springboot配置application.yaml中的password等机密信息
2:服务端口的合理使用
合理开通防火墙端口。
对于mysql,redis,后端的服务端口不应该暴漏给公网上,只允许在内网通过前端连接后台,后台连接数据库。
严格区分生产和测试数据库。有时候为了测试方便会开放测试数据库的端口给公网,注意区分生产上
3:弱口令(密码)管理
- mysql\redis等数据库:
对于数据库redis必须设立密码,对于mysql\redis\应用的登录入口严禁使用弱密码如123456、admin123、admin\admin等常见密码,非常容易被彩虹表破解。建议设立的复杂一些 - 后台管理系统登录 :加验证码、强密码、手机号验证码等
- 服务器的root等用户登录密码
比如可以使用一些密码生成器:https://1password.com/zh-cn/password-generator密码生成器
4:服务端攻击
4.1、短信业务,文件上传等资源型接口
别人恶意调用短信发送接口或者文件的上传下载。业务被消耗,下载流量持续被别人消耗,带来的是公司钱的损失!!
后台的相关接口除了登录注册等接口,肯定是需要登陆鉴权后才能访问的,这里主要针对于一些提供给第三方使用的开放接口,直接公开就能访问的接口需要做的鉴权!
就比如,大家应该对微信登录、短信接口、支付宝支付等其他第三方服务!!看下别人写的对接文档,接口的参数都有什么apiId, apiSecret ,MD5加密校验
1、文件上传下载
常见发生位置 :所有使用到上传功能的位置。
-
用户可自定义的头像、背景图片等。
-
富文本编辑器中的文件上传功能。
防御措施
-
将上传目录权限设置为不可执行。
-
严格判断文件类型,使用白名单而不是黑名单(注意大小写问题)。需要注意与Web Server相关的漏洞所造成的问题,例如Apache、IIS、Nginx 等Web服务器的文件解析漏洞。
-
使用随机数改写上传后的文件名和文件路径。
-
单独设置文件服务器及域名。
/*** 白名单文件类型*/private static final Set<String> WHITE_FILE_TYPES = SetUtils.asSet("gif", "jpg", "svg", "png", // 图片"eot", "woff2", "ttf", "woff", // 字体"xdb");
对于使用对象存储的服务,应该严格限制上传下载的频率、桶的私有性,各种鉴权机制
2、短信
短信发送:比如手机号必须在数据库
4.2、SOL注入攻击
介绍:SOL注入攻击是攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。
举例:’ OR ‘1’=‘1,这是最常见的 SQL注入攻击。当我们输入用户名 admin ,然后密码输入’ OR ‘1’=1=‘1的时候,我们在查询用户名和密码是否正确的时候,本来要执行的是SELECT * FROM user WHERE username=’’ and password=‘’,经过参数拼接后,会执行 SQL语句 SELECT * FROM user WHERE username=‘’ and password=‘’ OR ‘1’=‘1’,这个时候1=1是成立,自然就跳过验证。
防御:对进入数据库的特殊字符('"<>&*;等)进行转义处理,或编码转换。在应用发布之前建议使用专业的SQL注入检测工具(如sqlmap、SQLninja)进行检测,以及时修补被发现的SQL注入漏洞。避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,容易把代码里的SQL语句暴露出来。
4.3、敏感信息泄露
1、后台敏感数据,如用户的邮箱、手机号、身份证
2、Web 服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。
防御:
- 敏感信息加密传输,后端对涉密的数据去敏感信息返回;
- 应用程序报错时,不对外产生调试信息;
- 过滤用户提交的数据与特殊字符;
- 保证源代码、服务器配置的安全。
4.4、权限漏洞
划分合理的用户,组织、菜单、按钮间的增删改查的权限配置
5:客户端攻击
5.1、跨站脚本(XSS)攻击
5.1.1、知识点简介
存在三种XSS类型,通常针对用户的浏览器:
反射式XSS:应用程序或API包括未经验证和未经转义的用户输入,作为HTML输出的一部分。一个成功的攻击可以让攻击者在受害者的浏览器中执行任意的HTML和JavaScript。 通常,用户将需要与指向攻击者控制页面的某些恶意链接进行交互,例如恶意漏洞网站,广告或类似内容。
存储式XSS:你的应用或者API将未净化的用户输入存储下来了,并在后期在其他用户或者管理员的页面展示出来。 存储型XSS一般被认为是高危或严重的风险。
基于DOM的XSS:会动态的将攻击者可控的内容加入页面的JavaScript框架、单页面程序或API存在这种类型的漏洞。理想的来说,你应该避免将攻击者可控的数据发送给不安全的JavaScriptAPI。
典型的XSS攻击可导致盗取session、账户、绕过MFA、DIV替换、对用户浏览器的攻击(例如:恶意软件下载、键盘记录)以及其他用户侧的攻击。
比如:在api接口传参时param或者body中的属性上传一些脚本的命令等
http://192.168.1.101/xss/example2.php?name=<sCript>alert("hey!")</scRipt>
比如body的type属性中加入脚本
POST /user
Host: api.felord.cn
{ "userId" : 1001, "username" : "felord.cn", "type" : "\<script\>alert(document.cookie)\</script\>"
}
目的:达到对入参或者出参内容的修改,劫持内容达到目的
5.1.2、xss攻击防御
防御可以在前端和后端进行,目前主流的浏览器都支持很多xss攻击的策略,包括前端对参数html的转义判断,后端进行xss防御等,下面主要说后端的方案。
Xss 的防范手段
首先是过滤。对诸如(script、img、a)等标签进行过滤。
其次是编码。像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。
最后是限制。通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。
1、Spring Boot 防 Xss 代码攻击
从上面可以知道,Xss 攻击是对入参或者说输出进行修改,劫持内容达到目的。因此我们需要对整个系统的提交进行过滤和转义。
spring boot 防范 XSS 攻击可以使用过滤器,对内容进行转义,过滤。
这里就采用Spring boot+Filter的方式实现一个Xss的全局过滤器
还可以使用编码的形式来转义请求参数和响应体的字符来防止XSS攻击。这里会用到Spring提供的工具类org.springframework.web.util.HtmlUtils
Spring boot实现一个Xss过滤器, 常用的有两种方式:
第一种:
自定义过滤器
- 重写HttpServletRequestWrapper、
重写getHeader()、getParameter()、getParameterValues()、主要处理@param的参数的过滤 - 重写 getInputStream()实现对传统“键值对Json”传参方式的过滤也就是@RequestBody参数
比如重写过滤器:
import org.springframework.web.util.HtmlUtils;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.stream.Stream;public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}@Overridepublic String getHeader(String name) {String value = super.getHeader(name);return HtmlUtils.htmlEscape(value);}@Overridepublic String getParameter(String name) {String value = super.getParameter(name);return HtmlUtils.htmlEscape(value);}@Overridepublic String[] getParameterValues(String name) {String[] values = super.getParameterValues(name);return values != null ? (String[]) Stream.of(values).map(HtmlUtils::htmlEscape).toArray() :super.getParameterValues(name);}
}
第二种:
自定义序列化器, 对MappingJackson2HttpMessageConverter 的objectMapper做设置.
重写JsonSerializer.serialize()实现对出参的过滤 (PS: 数据原样保存, 取出来的时候转义)
重写JsonDeserializer.deserialize()实现对入参的过滤 (PS: 数据转义后保存)
实现后在配置文件中进行配置后测试
比如
# 防止XSS攻击
xss:# 过滤开关enabled: true# 排除链接(多个用逗号分隔)excludes: /system/notice# 匹配链接urlPatterns: /system/*,/monitor/*,/tool/*
5.2、CSRF 跨域攻击
跨域攻击存在session/cookie的环境中,伪造或劫持了客户的的cookie信息(可能包含用于的登录信息)后伪造请求进行了攻击。
token可以抵抗csrf,cookie+session不行
5.2.1、CORS跨域简介
跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;
后端解决CORS跨域
对于 CORS的跨域请求,主要有以下几种方式可供选择:
- 返回新的CorsFilter (全局配置)
- 重写WebMvcConfigurer(全局配置)
- 使用注解@CrossOrigin(局部配置)
- 手动设置响应头 (HttpServletResponse)(局部配置)
自定webfilter实现跨域
注意:
CorFilter、 WebMvConfigurer、@CrossOrigin需要SpringMVC 4.2以上版本才支持,对应springBoot 1.3版本以上
如果使用了局部跨域是会覆盖全局跨域的规则,所以可以通过@CrossOrigin 注解来进行细粒度更高的跨域资源控制。
其实无论哪种方案,最终目的都是修改响应头,向响应头中添加浏览器所要求的数据,进而实现跨域
所有解决跨域问题,不外乎就是解决浏览器拦截问题,要么前端设置请求头,要么后端设置请求头,无论谁设置请求头,浏览器只要放行即可
1、解决跨域
创建CorsFilter注册到springboot
/*** 创建 CorsFilter Bean,解决跨域问题*/@Beanpublic FilterRegistrationBean<CorsFilter> corsFilterBean() {// 创建 CorsConfiguration 对象CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.addAllowedOriginPattern("*"); // 设置访问源地址config.addAllowedHeader("*"); // 设置访问源请求头config.addAllowedMethod("*"); // 设置访问源请求方法// 创建 UrlBasedCorsConfigurationSource 对象UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config); // 对接口配置跨域设置return createFilterBean(new CorsFilter(source), WebFilterOrderEnum.CORS_FILTER);}
配置springboot security
@Beanprotected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {// 登出httpSecurity// 开启跨域.cors().and();}
5.3、点击劫持
伪造页面的按钮,通过覆盖现有的页面内容等方式诱导用户点击,是前端的攻击
相关文章:
web应用安全和信息泄露预防
文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…...
《人工智能深度学习的基本路线图》
《人工智能深度学习的基本路线图》 基础准备阶段 数学基础: 线性代数:深度学习中大量涉及矩阵运算、向量空间等概念,线性代数是理解和处理这些的基础。例如,神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…...
基于Java Springboot宠物猫售卖管理系统
一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:…...
力扣-Hot100-链表其三【算法学习day.36】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...
iOS逆向入门:使用theos注入第三方依赖库
背景 theos是一个跨平台的软件开发框架,常用于管理,开发和部署iOS项目,同时也是开发iOS越狱插件的主要工具。和MonkeyDev不同的是,它不依赖于xcode,可以在多个操作系统上运行。一个完整的iOS越狱开发流程包括…...
JavaScript 原型
JavaScript 的原型(Prototype)是其面向对象编程模型的核心概念之一,它决定了对象如何继承属性和方法。通过理解 JavaScript 的原型,你可以更好地理解对象之间的关系以及如何扩展对象功能。 核心概念 [[Prototype]](内部…...
力扣 LeetCode 20. 有效的括号(Day5:栈与队列)
解题思路: 使用栈 只有三种情况 1. ( [ { } ] ( ( 左括号多了 -> 最后栈中经过抵消会剩下括号 2. [ { ( ] } ] 括号不匹配 -> return false 3. [ { } ] ( ) ) ) 右括号多了 -> 未遍历完时,栈提前为空,…...
git使用及上线流程(仅为我工作中常用)
推荐软件或者直接终端 ⚠️注意:在确保远程和本地分支都可使用的情况下 git常见使用命令 ls---查看所有目录 pwd---本机密码 cd 目录名---进入目录 Touch ---创建文本文件 git status---查看状态 git branch---查看分支 git pull---拉取远程最新代码 git checkou…...
React Native 全栈开发实战班 - 打包发布之热更新
在完成 React Native 应用的开发与性能优化后,下一步就是将应用打包并发布到各大应用市场,如 Apple App Store 和 Google Play Store。本章节已经详细介绍了打包与发布的流程,包括 Android 和 iOS 平台的配置、打包步骤、签名配置以及发布到应…...
2024年11月16日 星期六 重新整理Go技术
今日格言 坚持每天进步一点点~ 一个人也可以是一个团队~ 学习全栈开发, 做自己喜欢的产品~~ 简介 大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术. 今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang,…...
力扣第 55 题 跳跃游戏
力扣第 55 题 跳跃游戏(Jump Game)。题目要求判断一个非负整数数组中,是否能够从第一个位置跳跃到最后一个位置。每个元素表示从当前位置最多可以跳跃的步数。 解题思路 我们可以用 贪心算法 来解决这个问题。贪心的核心思想是始终维护当前…...
Golang | Leetcode Golang题解之第564题寻找最近的回文数
题目: 题解: func nearestPalindromic(n string) string {m : len(n)candidates : []int{int(math.Pow10(m-1)) - 1, int(math.Pow10(m)) 1}selfPrefix, _ : strconv.Atoi(n[:(m1)/2])for _, x : range []int{selfPrefix - 1, selfPrefix, selfPrefix …...
Spring Boot汽车资讯:科技与速度的交响
3系统分析 3.1可行性分析 通过对本汽车资讯网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本汽车资讯网站采用SSM框架,JAVA作为开发语言&#…...
从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望
作者:金峰(项良)、朱永林、赵世振(寰奕) 公司简介 杭州热联集团股份有限公司成立于 1997 年 10 月,是隶属杭州市实业投资集团的国有控股公司。公司专业从事国际、国内钢铁贸易黑色大宗商品及产业服务&…...
移动零
移动零 1、题目描述2、解答思路 1、题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 2、解答思路 已知数组后端若干元素为0&…...
C#编写的日志记录组件 - 开源研究系列文章
以前编写过一个日志记录组件的博文,这次发布一个修改过的完善版本。 1、 项目目录; 2、 源码介绍; 1) 实现; 2) 使用; 后面的参数为级别设置,只有大于这个级别的才进行日志记录,限制了日志记录的…...
猎板PCB罗杰斯板材的应用案例
以下是几个猎板 PCB 与罗杰斯板材结合的具体案例: 案例一:5G 通信基站天线 PCB 在 5G 通信基站的天线系统中,对高频信号的传输和处理要求极高。猎板 PCB 采用罗杰斯板材,凭借其稳定的低介电常数(如 RO4003C 板材&…...
使用esp32c3开发板通过wifi连网络web服务器
实验基本拓扑就是: esp32c3开发板通过Wifi模块连上局域网,局域网一台服务器通过FastAPI提供8000端口的web服务,在esp32c3开发板中烧录micropython固件,在python交互模式下,连上Wifi模块,并使用socket模块获…...
供应链管理、一件代发系统功能及源码分享 PHP+Mysql
随着电商行业的不断发展,传统的库存管理模式已经逐渐无法满足市场需求。越来越多的企业选择“一件代发”模式,即商家不需要自己储备商品库存,而是将订单直接转给供应商,由供应商直接进行发货。这种方式极大地降低了企业的运营成本…...
Windows docker下载minio出现“Using default tag: latestError response from daemon”
Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况,一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…...
工厂模式-简单工厂模式
1、简单工厂模式 在工厂类的静态方法中,根据要创建产品的type类型,通过if else来返回对应的对象 1.1定义产品抽象接口Product /*** @desc 产品抽象接口**/ public interface Product {void use(); } 1.2 定义具体的产品A和B /*** @desc 产品A**/ public class ProductA i…...
【linux】使用minicom调试串口
在Linux中使用minicom进行串口通信调试,你需要先确保已经安装了minicom。如果还没有安装,你可以使用包管理器进行安装,例如在Debian或Ubuntu系统上使用apt-get,在Red Hat或CentOS系统上使用yum或dnf。 安装完成后,你需…...
C# 异常处理、多个异常、自定义异常处理
C# 异常 异常是为处理异常的发生而设计的,这些特殊情况会改变程序执行的正常流程。 引发或引发异常。 在执行应用期间,许多事情可能出错。 磁盘可能已满,我们无法保存文件。 当我们的应用尝试连接到站点时,Internet 连接可能会断…...
【从零开始的LeetCode-算法】3210. 找出加密后的字符串
给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串: 对于字符串 s 中的每个字符 c,用字符串中 c 后面的第 k 个字符替换 c(以循环方式)。 返回加密后的字符串。 示例 1: 输入: s "dart&…...
redis linux 安装
下载解压 https://download.redis.io/releases/ tar -zvxf ----redis-7.4.1编译 进入目录下 # redis 依赖c yum install gcc-cmake可能会有问题,所以记得换源# 安装到 /usr/local/redis make PREFIX/usr/local/redis installcd src ./redis-serverredis.confi…...
springboot006基于SpringBoot的网上订餐系统(源码+包运行+LW+技术指导)
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...
【QNX】QNX侧如何抓取日志?
🦋slog2info 是 QNX 实时操作系统中的一个实用工具,用于读取和解析 QNX 的系统日志(System Logger v2,简称 slog2)。 🦋slog2 是 QNX 提供的用于记录系统和应用程序日志信息的服务,它比传统的 syslog 服务更加强大和灵活,能够处理大量日志信息,并提供高级的过滤和检…...
深度学习:计算卷积神经网络中输出特征图尺寸的关键公式
计算卷积神经网络中输出特征图尺寸的关键公式 在设计卷积神经网络(CNN)时,准确计算每个卷积层的输出特征图尺寸是至关重要的。这不仅关系到网络的结构设计,也直接影响参数优化和整体性能。适当的计算可以确保网络层正确连接&…...
【惠州大亚湾】之维修戴尔服务器DELLR730XD
1:广东省惠州市大亚湾某游客服务中心来电报修1台DELL PowerEdge R730xd服务器无法正常开机的问题。听该负责描述这台服务器因为服务中心电力切换导致意外关机,来电后发现就无法正常开机了。所以找到我们希望配合维修。 2:该机器由于特别着急…...
跟我学C++中级篇——Design Patterns的通俗说法
一、设计模式 Design patterns,软件设计模式,它是什么?很多初学者会被这种高大上的东西给唬住。其实,所有的书籍上都说得很清楚,只是它们把这种说法说得很高大上而已。举个简单例子,在抖音上经常可以看到介…...
网站建设的公司名称/谷歌网站
Series 作为cartControl的基本单位来现实图表数据 所以每一个Series代表一种需要显示的类型。 首先实例化一个Series Series _series new Series("处理次数", ViewType.Bar); _series.ArgumentScaleType ScaleType.Qualitative; _series.ArgumentDataMember "…...
做js题目的网站/网络公关公司收费
第1步 - 从一段文字和一张图片开始 对于本练习,我们希望将图像强制到右侧以允许内容与其一起流动。我们还想在图像的左侧和底侧添加边距以推送内容。最后,我们想在图像周围添加边框。我们从一段文本中的图像开始。 代码如下所示: <!DOC…...
牡丹江建设局网站/小红书推广引流软件
我们对C的%运算知多少呢?当是正整数时,可能大家都知道。例如:5%3等于2, 3%5等于3。当存在负数时呢?先看看例子:例一:int main(){int x;x -6%5; printf("%2d/n",x);x 6%-5; printf("%2d/n&…...
房产网站系统源码/seo推广系统
读创/深圳商报记者 陈姝今日,华为鸿蒙OS Beta 3.0 版本正式推送更新。此外业内曝料称,搭载鸿蒙系统的华为平板产品已取得工信部入网证书,或将在4月底发布。在此前举行的华为开发者Beta活动广州站现场,华为智慧全场景业务部副总裁段…...
顺德企业手机网站建设/新闻发稿
###算法 一. 算法的基本概念: 对特定问题的求解步骤,指令的有序序列 二. 算法的五个特征: one.输入–算法有0个或者多个输出 two.输出–算法至少有一个输出 three.可行性–可以执行 four.确定性–算法的每一条指令都有确切的定义,…...
什么网站可以帮忙做任务赚钱/免费建站哪个比较好
模仿C#的StringBuilder类,还有很多函数需要慢慢完善的以前写javascript的时候,有个js的Stringbuilder类,说是效率高,不知道在php下,这样处理字符串组合时不时也会效率高呢?请高手指点<?clas…...