最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字个数n和行数m(0
华为OD机试E卷 --矩阵扩散--24年OD统一考试(Java & JS & Python & C & C++)
飞码创造者
最新华为OD机试题库2024华为od矩阵javapythonjavascript
文章目录题目描述输入描述输出描述用例题目解析JS算法源码Java算法源码python算法源码c算法源码题目描述存在一个m×n的二维数组,其成员取值范围为0或1。其中值为1的成员具备扩散性,每经过1s,将上下左右值为0的成员同化为1。二维数组的成员初始值都为0,将第[i,j]和[k,l]两个个位置上元素修改成1后,求矩阵的所有元素变为1需要多长时间。输入描述输入数据中的:•前面2个数字表示这是一个m
苏大计算机考研专业课,苏州大学软件工程考研初试科目考什么?
fatgn
苏大计算机考研专业课
苏州大学软件工程考研初试科目考什么?2018-11-3017:35|考研集训营软件工程考研初试科目考什么?这需要2020考生查看目标学校的招生专业目录后,再进行有计划的备考。接下来,文都考研集训营就苏州大学软件工程考研初试科目信息,来给大家详细说下,供考生参考。一、苏州大学软件工程考研初试科目1.苏州大学软件工程学硕:①101思想政治理论②201英语一③302数学二④872数据结构与操作系统2.苏
e9000刀片服务器文档,华为E9000融合架构刀片服务器介绍.pdf
大苏牙
e9000刀片服务器文档
华为E9000融合架构刀片服务器培训Luoweitao@H201502目录ClicktoaddTitle1市场概述及定位ClicktoaddTitle2产品规格及亮点3产品对比4成功案例ClicktoaddTitle5订购指南ClicktoaddTitle6如何获取资源ClicktoaddTitle12014Q4连续6个季度全球第四2014Q4全球服务器发货量TOP1070100%万台6080%5
华为e9000服务器pxe安装系统,E9000安装与配置.ppt
独角瘦
E9000安装与配置资料本节主要介绍URP8100产品的市场定位,组成部分及业务能力、组网能力、集成度、可靠性、安全性、可维护性等特点。如果CX910安装在E1/E2槽位,Base平面将会失效*******本节主要介绍URP8100产品的市场定位,组成部分及业务能力、组网能力、集成度、可靠性、安全性、可维护性等特点。3.4查看Base/Fabric平面端口对应关系displayport-conne
React Remix框架:前端开发的“瑞士军刀”
程序员
ReactRemix框架:前端开发的“瑞士军刀”大家好,我是你们的前端小伙伴大鱼,今天咱们来聊聊一个最近挺火的前端框架——Remix。如果你是个React开发者,那你一定听说过Next.js,但Remix这个“新秀”也不容小觑。它不仅是React生态中的一员猛将,还带着一股“颠覆传统”的气息。今天我们就来扒一扒Remix的底细,顺便和Next.js来个正面PK。什么是Remix?Remix是一个全
2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)
数据挖掘深度学习
原文链接:https://tecdat.cn/?p=39072本报告合集洞察从多个维度全面解读微短剧行业。在行业发展层面,市场规模与用户规模双增长,创造大量高收入就业岗位并带动产业链升级。内容创作上,精品化、品牌化趋势凸显,题材走向多元以满足不同受众需求。商业生态中,多种商业模式并存,端原生微短剧崭露头角,品牌营销与电商布局拓展盈利空间。行业价值体现于AI赋能、大小屏融合、助力地方经济与信息传播等
白鲸数据集成调度和集成系统与统信软件通过互认认证,共促国产软硬件生态发展
数据库
在国产软硬件生态建设的征程中,又迎来重要成果。北京白鲸开源科技有限公司与统信软件技术有限公司联合宣布,白鲸数据集成系统V2.6和数据调度系统V2.6分别在统信服务器操作系统V25上通过了严格的功能与兼容性测试,获得了统信软件的互认证明。白鲸开源数据调度系统V2.6与统信服务器操作系统V25互认证明白鲸开源数据集成系统V2.6与统信服务器操作系统V25互认证明此次认证涵盖了众多主流的国产CPU平台,
2021-2022毕业一年工作总结--华为外包VRP自动化测试
爱吃水果蝙蝠汤
工作经历项目经历华为ruby网络协议
工作介绍设备是NE9000城域路由器。测试对象是VRPv8产品大包。测试语言是RUBY、TCL对应的软件分别是impeller、GTR。测试场景有很多e下、vxlan下、bgp、isis、ospf基础组网下、srv6等需要vrrp、bfd、frr备份的场景,都是现网常用的。自动化实现是在欧拉linux上,自动化还需要一些工具,常用的有用例管理、日志系统、度量系统、设备管理。工作日常早上过来,停下自
五.python-docx向word中插入图片
一起编程哇
word开发语言python
一.简介Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run对象的add_picture()二.基本使用1.导入模块fromdocximportDocument2.插入图片"""下面这两种写法是一样的"""document.add_picture("./imgs/gd.jpeg")document.add_paragrap
向多方协同与技术管理要效率!高校数字化的跃升之道
程序员深度学习
导语|高校面临着加快转型发展,提升社会服务质量的重要任务。信息化作为新型生产力在其中扮演着重要角色,信息化水平已经成为衡量学校综合能力的重要标准,但如何高效推进信息化工作成为很多高校信息部门面临的难题。本期我们邀请了中南民族大学现代教育技术中心主任、腾讯云TVP行业大使张淼老师,为我们分享中南民族大学信息化建设的回顾与思考。作者简介![上传中...]()张淼,中南民族大学现代教育技术中心主任、腾讯
华为2024嵌入式研发面试题
指尖动听知识库
华为算法数据结构
01你认为最好的排序算法是什么?在实际的编程中,最好的排序算法要根据实际需求和数据规模来选择,因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点:冒泡排序冒泡排序是一种简单直观的排序算法,它的时间复杂度是O(n^2)。虽然它的时间复杂度比较高,但它的实现方式简单,对于小规模数据排序是非常有效的。快速排序快速排序是一种常用的排序算法,它的时间复杂度是O(nlogn)。它的实现方式比较
HarmonyOS NEXT:华为分享-碰一碰开发分享
芯作者
DD:日记人工智能
随着科技的不断进步,智能手机和智能设备之间的互联互通变得越来越重要。华为作为科技行业的领军企业,一直致力于为用户提供更加便捷、高效的使用体验。HarmonyOSNEXT系统的推出,特别是其中的“碰一碰”功能,为用户带来了前所未有的便捷性。本文将详细探讨华为分享中的“碰一碰”功能及其开发细节。一、碰一碰功能概述“碰一碰”是HarmonyOSNEXT系统中的一项创新功能,它允许用户通过简单的设备接触,
华为E9000刀箱(HWE9000V2)服务器硬件监控指标解读
MXsoft618
运维管理智能运维管理平台运维软件服务器运维
随着数据中心规模的不断扩大,服务器的稳定性和可靠性变得尤为重要。华为E9000刀箱(HWE9000V2)作为一款高性能的服务器设备,其硬件状态的实时监控对于保障业务的连续性和系统的稳定运行至关重要。监控易作为一款专业的IT基础设施监控软件,为华为E9000刀箱提供了全面的硬件监控解决方案。本文将基于监控易对华为E9000刀箱的监控指标进行解读,帮助运维团队更好地理解和应用这些监控功能。一、监控易简
Delete the specified node in the linked list with dummy header
青眸ღ.
算法链表数据结构c语言
分数20作者伍建全单位重庆科技大学PleasecreateafunctionwiththeprototypevoiddeleteNode(ListL,intkey).ThisfunctionshoulddeletethefirstnodefromthelinkedlistLwithdummyheader,wherethedatafieldisequaltokey.Iftherearenonodes
深入解析Python的xmltodict库:简化XML数据处理的利器
kdayjj966
前端数据库python
一、引言在当今信息技术的世界中,数据的传输和存储形式多种多样。XML(可扩展标记语言)作为一种灵活而强大的数据格式,得到了广泛应用。它不仅在Web服务中用于数据交换,也在许多应用程序中作为配置文件的格式。然而,尽管XML以其良好的结构性和可读性著称,处理XML数据对于开发者来说仍然是一项繁琐的任务,尤其是在需要频繁进行数据解析和操作的场景。为了解决这一问题,Python社区提供了xmltodict
华为发展历程:战略转型与分析
常耀斌
网络
纵观30多年的发展历程,在创始人任正非及创业团队奋力牵引下,全体员工共同奋斗,华为实现了从“一无所有”到“三分天下”、从“积极跟随者”到“行业领先者”的跨越式发展。华为在业务战略上经历了数次变革,分别是从农村到城市,从国内市场走向全球化,从B2B市场向B2b、B2C市场及云管端一体化转型变革。另外,自2019年起,华为遭受M国不断加码的政策打压。华为的发展历程可以划分为五个阶段:一是,创业初期(1
华为架构师8年经验谈:从单体架构到微服务的服务化演进之路
小二人
职业发展
转自:http://www.58maisui.com/2016/06/28/a-327/?ref=myread本次分享的大纲如下:传统应用开发面临的挑战服务化实践服务化不是银弹服务化架构的演进方向一、传统应用开发面临的挑战挑战1–研发成本高主要体现在如下几个方面:代码重复率高在实际项目分工时,开发都是各自负责几个功能,即便开发之间存在功能重叠,往往也会选择自己实现,而不是类库共享,主要原因如下:从
深入 Prometheus 监控生态 - 第二篇:网络等硬件设备监控(snmp-exporter)
运维の小LIAN
4.1监控与自动化-系统监控prometheus网络
文章目录前言一、群晖NAS1、开启SNMP服务2、测试3、MIB文档4、编写snmp.yml5、运行snmp-exporter6、加入Prometheus监控二、QNAPNAS1、开启SNMP服务2、SNMPMIB文件下载3、generate的使用4、运行snmp-exporter5、加入Prometheus监控三、华为防火墙1、开启SNMP服务2、测试网络测试连接测试3、查阅文档4、部署snmp
Ubuntu32/64位arm/aarch64交叉编译总结
新潮技术研究社
linux开源项目百万案例之路生活有技术armarm开发嵌入式硬件交叉编译
交叉编译,做过Linux的同学应该都不陌生,经常见到的,就是,我的电脑上有一个VMwareUbuntu的虚拟机,然后在Ubuntu系统下,我要将程序移植到某个arm的板子上,就是放到板子上去运行,譬如,放到手机上运行,放到平板上运行,只不过有些平板的系统也是Ubuntu,不是所有的平板都是Android的嘛,还有苹果系统,华为系统,WinCE,无界面系统等等。这时候,有几种方式将程序放到目标设备上
微信小程序校园自助点餐系统实战:从设计到实现
大梦百万秋
知识学爆notepad++
随着移动互联网的发展,越来越多的校园场景开始智能化、自助化。微信小程序凭借其轻量化、便捷性和强大的生态支持,成为了各类校园应用的首选工具之一。今天,我们将通过实际开发一个微信小程序“校园自助点餐系统”来展示如何设计和实现这样一个系统。1.项目简介校园自助点餐系统是一个微信小程序,用户可以通过手机自助查看校园食堂的菜单、选择菜品并下单,随后可选择取餐方式。整个流程无须排队,极大地提高了点餐的效率,也
南京大学苏州校区学生代表团到访合合信息,开启“沉浸式”人工智能企业行
人工智能图像识别程序员
为进一步深化校企合作,探索产业科技拔尖创新人才培养新模式,近期,南京大学苏州校区师生代表到访上海合合信息科技股份有限公司(以下简称“合合信息”,股票代码:SH688615)。此次活动设置了展厅讲解、技术交流、模拟面试等多个体验环节,旨在增强学生对人工智能及商业大数据技术在实际应用中的理解和认识,引导学生系统性开展职业规划,提升职业胜任力。图说:南京大学苏州校区学生代表团到访合合信息合影留念合合信息
网络安全渗透基础
Hero.Youth
#基础学习安全
一、基础1、基本要素:保密性:不能非授权访问,通过访问控制与数据加密来保障保密性;完整性:只有授权的人才能修改,通过访问控制来阻止数据篡改,通过算法进行信息验证;可用性:是网络总体可靠性的需求,通过访问控制来阻止非授权人员的访问;可控性:使用授权机制,控制信息传播范围、内容、必要时能恢复密钥;不可否认性:是对出现的安全问题提供调查的依据和手段,一般通过数字签名来实现;2、网络脆弱性原因:开放的网络
【粉丝福利社】Python OpenCV从入门到精通
愚公搬代码
愚公系列-送书福利社pythonopencv开发语言
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等
多线程编程之存钱与取钱
周凡杨
javathread多线程存钱取钱
生活费问题是这样的:学生每月都需要生活费,家长一次预存一段时间的生活费,家长和学生使用统一的一个帐号,在学生每次取帐号中一部分钱,直到帐号中没钱时 通知家长存钱,而家长看到帐户还有钱则不存钱,直到帐户没钱时才存钱。
问题分析:首先问题中有三个实体,学生、家长、银行账户,所以设计程序时就要设计三个类。其中银行账户只有一个,学生和家长操作的是同一个银行账户,学生的行为是
java中数组与List相互转换的方法
征客丶
JavaScriptjavajsonp
1.List转换成为数组。(这里的List是实体是ArrayList)
调用ArrayList的toArray方法。
toArray
public T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分
Shell 流程控制
daizj
流程控制if elsewhilecaseshell
Shell 流程控制
和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法):
<?php
if(isset($_GET["q"])){
search(q);}else{// 不做任何事情}
在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else,就像这样 if else if
if 语句语
Linux服务器新手操作之二
周凡杨
Linux 简单 操作
1.利用关键字搜寻Man Pages man -k keyword 其中-k 是选项,keyword是要搜寻的关键字 如果现在想使用whoami命令,但是只记住了前3个字符who,就可以使用 man -k who来搜寻关键字who的man命令 [haself@HA5-DZ26 ~]$ man -k
socket聊天室之服务器搭建
朱辉辉33
socket
因为我们做的是聊天室,所以会有多个客户端,每个客户端我们用一个线程去实现,通过搭建一个服务器来实现从每个客户端来读取信息和发送信息。
我们先写客户端的线程。
public class ChatSocket extends Thread{
Socket socket;
public ChatSocket(Socket socket){
this.sock
利用finereport建设保险公司决策分析系统的思路和方法
老A不折腾
finereport金融保险分析系统报表系统项目开发
决策分析系统呈现的是数据页面,也就是俗称的报表,报表与报表间、数据与数据间都按照一定的逻辑设定,是业务人员查看、分析数据的平台,更是辅助领导们运营决策的平台。底层数据决定上层分析,所以建设决策分析系统一般包括数据层处理(数据仓库建设)。
项目背景介绍
通常,保险公司信息化程度很高,基本上都有业务处理系统(像集团业务处理系统、老业务处理系统、个人代理人系统等)、数据服务系统(通过
始终要页面在ifream的最顶层
林鹤霄
index.jsp中有ifream,但是session消失后要让login.jsp始终显示到ifream的最顶层。。。始终没搞定,后来反复琢磨之后,得到了解决办法,在这儿给大家分享下。。
index.jsp--->主要是加了颜色的那一句
<html>
<iframe name="top" ></iframe>
<ifram
MySQL binlog恢复数据
aigo
mysql
1,先确保my.ini已经配置了binlog:
# binlog
log_bin = D:/mysql-5.6.21-winx64/log/binlog/mysql-bin.log
log_bin_index = D:/mysql-5.6.21-winx64/log/binlog/mysql-bin.index
log_error = D:/mysql-5.6.21-win
OCX打成CBA包并实现自动安装与自动升级
alxw4616
ocxcab
近来手上有个项目,需要使用ocx控件
(ocx是什么?
http://baike.baidu.com/view/393671.htm)
在生产过程中我遇到了如下问题.
1. 如何让 ocx 自动安装?
a) 如何签名?
b) 如何打包?
c) 如何安装到指定目录?
2.
Hashmap队列和PriorityQueue队列的应用
百合不是茶
Hashmap队列PriorityQueue队列
HashMap队列已经是学过了的,但是最近在用的时候不是很熟悉,刚刚重新看以一次,
HashMap是K,v键 ,值
put()添加元素
//下面试HashMap去掉重复的
package com.hashMapandPriorityQueue;
import java.util.H
JDK1.5 returnvalue实例
bijian1013
javathreadjava多线程returnvalue
Callable接口:
返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。
Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。
ExecutorService接口方
angularjs指令中动态编译的方法(适用于有异步请求的情况) 内嵌指令无效
bijian1013
JavaScriptAngularJS
在directive的link中有一个$http请求,当请求完成后根据返回的值动态做element.append('......');这个操作,能显示没问题,可问题是我动态组的HTML里面有ng-click,发现显示出来的内容根本不执行ng-click绑定的方法!
 
【Java范型二】Java范型详解之extend限定范型参数的类型
bit1129
extend
在第一篇中,定义范型类时,使用如下的方式:
public class Generics<M, S, N> {
//M,S,N是范型参数
}
这种方式定义的范型类有两个基本的问题:
1. 范型参数定义的实例字段,如private M m = null;由于M的类型在运行时才能确定,那么我们在类的方法中,无法使用m,这跟定义pri
【HBase十三】HBase知识点总结
bit1129
hbase
1. 数据从MemStore flush到磁盘的触发条件有哪些?
a.显式调用flush,比如flush 'mytable'
b.MemStore中的数据容量超过flush的指定容量,hbase.hregion.memstore.flush.size,默认值是64M 2. Region的构成是怎么样?
1个Region由若干个Store组成
服务器被DDOS攻击防御的SHELL脚本
ronin47
mkdir /root/bin
vi /root/bin/dropip.sh
#!/bin/bash/bin/netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F:‘{print $1}’|sort|uniq -c|sort -rn|head -10|grep -v -E ’192.168|127.0′|awk ‘{if($2!=null&a
java程序员生存手册-craps 游戏-一个简单的游戏
bylijinnan
java
import java.util.Random;
public class CrapsGame {
/**
*
*一个简单的赌*博游戏,游戏规则如下:
*玩家掷两个骰子,点数为1到6,如果第一次点数和为7或11,则玩家胜,
*如果点数和为2、3或12,则玩家输,
*如果和为其它点数,则记录第一次的点数和,然后继续掷骰,直至点数和等于第一次掷出的点
TOMCAT启动提示NB: JAVA_HOME should point to a JDK not a JRE解决
开窍的石头
JAVA_HOME
当tomcat是解压的时候,用eclipse启动正常,点击startup.bat的时候启动报错;
报错如下:
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME shou
[操作系统内核]操作系统与互联网
comsci
操作系统
我首先申明:我这里所说的问题并不是针对哪个厂商的,仅仅是描述我对操作系统技术的一些看法
操作系统是一种与硬件层关系非常密切的系统软件,按理说,这种系统软件应该是由设计CPU和硬件板卡的厂商开发的,和软件公司没有直接的关系,也就是说,操作系统应该由做硬件的厂商来设计和开发
富文本框ckeditor_4.4.7 文本框的简单使用 支持IE11
cuityang
富文本框
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>知识库内容编辑</tit
Property null not found
darrenzhu
datagridFlexAdvancedpropery null
When you got error message like "Property null not found ***", try to fix it by the following way:
1)if you are using AdvancedDatagrid, make sure you only update the data in the data prov
MySQl数据库字符串替换函数使用
dcj3sjt126com
mysql函数替换
需求:需要将数据表中一个字段的值里面的所有的 . 替换成 _
原来的数据是 site.title site.keywords ....
替换后要为 site_title site_keywords
使用的SQL语句如下:
updat
mac上终端起动MySQL的方法
dcj3sjt126com
mysqlmac
首先去官网下载: http://www.mysql.com/downloads/
我下载了5.6.11的dmg然后安装,安装完成之后..如果要用终端去玩SQL.那么一开始要输入很长的:/usr/local/mysql/bin/mysql
这不方便啊,好想像windows下的cmd里面一样输入mysql -uroot -p1这样...上网查了下..可以实现滴.
打开终端,输入:
1
Gson使用一(Gson)
eksliang
jsongson
转载请出自出处:http://eksliang.iteye.com/blog/2175401 一.概述
从结构上看Json,所有的数据(data)最终都可以分解成三种类型:
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"ickes"这个字符串。
第二种类型是序列(sequence),又叫做数组(array)
android点滴4
gundumw100
android
Android 47个小知识
http://www.open-open.com/lib/view/open1422676091314.html
Android实用代码七段(一)
http://www.cnblogs.com/over140/archive/2012/09/26/2611999.html
http://www.cnblogs.com/over140/arch
JavaWeb之JSP基本语法
ihuning
javaweb
目录
JSP模版元素
JSP表达式
JSP脚本片断
EL表达式
JSP注释
特殊字符序列的转义处理
如何查找JSP页面中的错误
JSP模版元素
JSP页面中的静态HTML内容称之为JSP模版元素,在静态的HTML内容之中可以嵌套JSP
App Extension编程指南(iOS8/OS X v10.10)中文版
啸笑天
ext
当iOS 8.0和OS X v10.10发布后,一个全新的概念出现在我们眼前,那就是应用扩展。顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他app时使用该项功能。你可以开发一个应用扩展来执行某些特定的任务,用户使用该扩展后就可以在多个上下文环境中执行该任务。比如说,你提供了一个能让用户把内容分
SQLServer实现无限级树结构
macroli
oraclesqlSQL Server
表结构如下:
数据库id path titlesort 排序 1 0 首页 0 2 0,1 新闻 1 3 0,2 JAVA 2 4 0,3 JSP 3 5 0,2,3 业界动态 2 6 0,2,3 国内新闻 1
创建一个存储过程来实现,如果要在页面上使用可以设置一个返回变量将至传过去
create procedure test
as
begin
decla
Css居中div,Css居中img,Css居中文本,Css垂直居中div
qiaolevip
众观千象学习永无止境每天进步一点点css
/**********Css居中Div**********/
div.center {
width: 100px;
margin: 0 auto;
}
/**********Css居中img**********/
img.center {
display: block;
margin-left: auto;
margin-right: auto;
}
Oracle 常用操作(实用)
吃猫的鱼
oracle
SQL>select text from all_source where owner=user and name=upper('&plsql_name');
SQL>select * from user_ind_columns where index_name=upper('&index_name'); 将表记录恢复到指定时间段以前
iOS中使用RSA对数据进行加密解密
witcheryne
iosrsaiPhoneobjective c
RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法, 也可以用于文件签名.
本文将讨论如何在iOS中使用RSA传输加密数据. 本文环境
mac os
openssl-1.0.1j, openssl需要使用1.x版本, 推荐使用[homebrew](http://brew.sh/)安装.
Java 8
RSA基本原理
RS