- 【C++入门】变量和基本类型
byte轻骑兵
#C++深度探索与实战专栏c++开发语言
目录一、基本内置类型1.1.整型(IntegerTypes)1.2.浮点型(Floating-pointTypes)1.3.字符型(CharacterType)1.4.布尔型(BooleanType)1.5.示例代码二、变量声明与定义2.1.声明vs定义2.2.变量的初始化2.3.默认初始化规则三、作用域与生命周期3.1.作用域类型3.2.生命周期对比四、复合类型4.1.引用(别名)4.2.指针五
- Kissat学习笔记
柯尼塞格475
IC设计c语言算法启发式算法
Kissat学习笔记前言SAT(BooleanSatisfiabilityProblem)是一个NP完全问题,在IC前端设计中,SAT验证是一个重要环节,它要求判定一个布尔公式是否存在一组变量赋值使其为真,于是在十几年间诞生了许多高效的SAT求解器。Kissat求解器曾在SAT竞赛中取得了优异成绩,作为CaDiCal求解器的继承者,Kissat在保持高性能的同时,通过优化内存和简化代码实现了更高的
- 《Operating System Concepts》阅读笔记:p272-p285
操作系统
《OperatingSystemConcepts》学习第27天,p272-p285总结,总计14页。一、技术总结1.semaphoreAsemaphoreSisanintegervariablethat,apartfrominitialization,isaccessedonlythroughtwostandardatomicoperations:wait()andsignal().2.monit
- 为什么重写equals时必须重写hashCode?
从不吃红薯
Java开发语言java后端
一,基础概念:理解对象相等的两种维度在Java面向对象编程中,对象的相等性比较有两个关键的方案:1.1equals方法:内容相等的裁判官publicbooleanequals(Objectobj){return(this==obj)}默认实现:比较对象内存地址(==运算符)重写目的:实现基于对象内容(业务逻辑)的相等性判断1.2hashCode方法:散列世界的身份证publicnativeinth
- Android 滑块开关 自定义Switch
Cui晨
android
自定义Switch开关:cSwitch.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){Log.i(TAG,"onCheckedChanged改变状
- redis 用来实现排行榜的功能
追风林
redis数据库缓存
简单的用Redis的zset数据结构来实现。@Test@DisplayName("实现一个简单的排行榜")publicvoidzSetRankingTest(){ZSetOperationszSetOperations=redisTemplate.opsForZSet();//添加假数据到排行榜zSetOperations.add("ranking","张三",1500);zSetOperatio
- Java 基本数据类型转换
yaoxin521123
【原来如此】java开发语言
Java基本数据类型转一、什么是基本数据类型的自动转换?在Java中,基本数据类型的自动转换(也叫隐式类型转换或提升)是指小范围的数据类型可以自动转换为更大范围的数据类型,而不需要额外的类型转换代码。这种转换主要发生在数值类型之间,包括:整型:byte、short、int、long浮点型:float、double字符型:char❗注意:boolean类型不能自动转换为其他任何类型,也不能由其他类型
- 0310-冒泡排序、选择排序的Java实现
春生野草
数据结构笔记排序算法算法java数据结构
Java基本//定义使用变量//定义使用函数//基本类型//整数byteshortintlong//小数floatdouble//字符char''//布尔boolean//引用类型//StringArrayListLinkedList自定义冒泡排序两两比较交换冒泡排序Java实现package排序;importjava.util.Arrays;publicclassTest{publicstati
- Java小白-Collection集合体系
林深的林
windowspythonlinux
一、Collection集合体系1.核心接口与实现类类型特点实现类底层结构线程安全List有序、可重复、有索引ArrayList动态数组否LinkedList双向链表否Vector动态数组是(同步)Set无序、唯一HashSet哈希表+链表/红黑树否TreeSet红黑树否二、Collection常用API1.添加相关方法方法说明booleanadd(Ee)添加单
- 学习笔记12——并发编程之线程之间协作方式
码代码的小仙女
高级开发必备技能javajvm开发语言
线程之间协作有哪些方式当多个线程可以一起工作去解决某个问题时,如果某些部分必须在其他部分之前完成,那么就需要对线程进行协调。共享变量和轮询方式实现:定义一个共享变量(如volatile修饰的布尔标志)。线程通过检查共享变量的状态来决定是否继续执行。publicclassTest{ privatestaticvolatilebooleanflag=false; publicstaticvoi
- 回溯-全排列
Vacant Seat
算法java回溯
46.全排列给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案输入:数组输出:二维列表思路:等待二刷classSolution{List>result=newArrayListpath=newLinkedList>permute(int[]nums){intlen=nums.length;used=newboolean[len];if(len==0){return
- 【贪心算法】柠檬水找零
I_Am_Me_
贪心算法贪心算法算法
1.题目解析860.柠檬水找零-力扣(LeetCode)2.讲解算法原理分情况讨论5---》直接收下10---》找五元,收下20----》10+5△----》5+5+5由于5元更有用,则尽可能保留5元3.代码classSolution{publicbooleanlemonadeChange(int[]bills){intfive=0,ten=0;for(intx:bills){if(x==5){f
- 【从零开始学java】第1章,基础知识入门,小白零基础可看,笔记整理
莉莉鸟
java学习
java基础11注释标志符关键字注释注释并不会被执行,是写给人类看的,书写注释是一个很好的习惯平时写代码一定要注意规范单行注释//多行注释/*注释*/文档注释/**注释*/2标识符关键字abstract:用于声明抽象类或抽象方法。assert:用于调试时进行断言。boolean:表示布尔类型(true或false)。break:跳出当前循环或switch语句。byte:表示字节数据类型。case:
- TypeScript基础类型详解:与JavaScript的对比与核心价值
念九_ysl
typescriptjavascripttypescript前端
TypeScript作为JavaScript的超集,最大的特性是引入了静态类型系统。本文将基于TypeScript官网内容,解析其基础类型设计,并与ES/JavaScript进行对比,揭示类型系统的实际价值。一、基础类型全景图1.原生类型的强化JavaScript原生类型:boolean、number、string、undefined、null、symbol、bigintTypeScript完全保
- 设计模式七大设计原则Java 实践
sevevty-seven
设计模式java开发语言
1.单一职责原则(SingleResponsibilityPrinciple,SRP)单一职责原则规定一个类应该仅对一项职责负责。这意味着一个类应只关注一件事情,以便降低类之间的耦合度,提高代码的可维护性。示例://用户登录类publicclassUserLogin{publicbooleanlogin(Stringusername,Stringpassword){//登录逻辑returntrue
- JavaScript中的主要知识点
C7211BA
javascriptokhttp开发语言
一、基础语法与数据类型变量声明使用var(函数作用域)、let(块级作用域)和const(常量)声明变量,理解变量提升与暂时性死区。数据类型分为基本类型(Undefined、Null、Boolean、Number、String、Symbol、BigInt)和引用类型(Object、Array、Function)。注意类型转换规则(如==与===的区别)。运算符与控制流程包括算术、比较、逻辑运算符,
- 2023年java面试问题大全及答案大全
m0_74824574
面试学习路线阿里巴巴java面试开发语言
202年常见的Java面试问题和答案:Java中的基本数据类型有哪些?答:Java中的基本数据类型包括整型(int,short,long,byte)、浮点型(float,double)、字符型(char)和布尔型(boolean)。String和StringBuilder之间的区别是什么?答:String是不可变的,每次对String的操作都会创建一个新的String对象,而StringBuild
- LeetCode 热题 100_实现 Trie (前缀树)(54_208_中等_C++)(图;前缀树;字典树)
Dream it possible!
LeetCode热题100leetcodec++算法
@[TOC](LeetCode热题100_实现Trie(前缀树)(54_208))题目描述:Trie(发音类似“try”)或者说前缀树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。请你实现Trie类:Trie()初始化前缀树对象。voidinsert(Stringword)向前缀树中插入字符串word。booleansearch
- 图论-实现Trie(前缀树)
Vacant Seat
图论开发语言java数据结构
208.实现Trie(前缀树)Trie(发音类似"try")或者说前缀树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。请你实现Trie类:Trie()初始化前缀树对象。voidinsert(Stringword)向前缀树中插入字符串word。booleansearch(Stringword)如果字符串word在前缀树中,返回tr
- Vue3项目引用TS语法实例
灬ManongLai
VuejavascriptVue3TSvue使用TS使用TSVue3使用TS
基础语法定义data//script标签上**lang="ts"**import{defineComponent,reactive,ref,toRefs}from'vue';//定义一个类型type或者接口interface来约束datatypeTodo={id:number,name:string,completed:boolean}exportdefaultdefineComponent({/
- 54、图论-实现Trie前缀树
大树~~
leetcode热题100图论c#开发语言javaleetcode算法
思路:主要是构建一个trie前缀树结构。如果构建呢?看题意,应该当前节点对象下有几个属性:1、next节点数组2、是否为结尾3、当前值代码如下:classTrie{classNode{booleanend;Node[]nexts;publicNode(){end=false;nexts=newNode[26];}}publicNoderoot;publicTrie(){root=newNode()
- 安卓使用usb连接外设
wangDer_me
java
源码地址https://gitee.com/xzw421771880/android_usbAndroid_USB介绍安卓通过usb连接硬件设备软件架构AndroidStudio4.1.2使用说明权限在main添加判断是否支持usb.host(比如chromeOS系统的电脑可以正常运行apk,apk可以用蓝牙但是不支持usb.host)booleanret=getPackageManager().
- vue3多个页面/组件,复用同一段render页面根据接口返回的数据动态渲染逻辑,使用setup+组合式API
十年 lius
vueweb前端前端render动态渲染页面
组件reusableComponent是可供多个组件复用的getData请求接口,render渲染数据importoperationServicefrom"@/views/operation/component/operationService.vue";constprops=defineProps({name:{type:String,default:"operation"}});const{n
- 关于变量的定义及分类
foolisk
Java从入门到放弃java
1.定义变量的格式:数据类型变量名。如:intname,doublec=1.5。!!:使用前需要初始化。2.数据分类:按照数据类型分,可分为基本数据类型和引用数据类型:基本数据类型:数值型、字符型、布尔型数值型:整数型(int、short、long、byte)、浮点型(float、double)字符型:char布尔型:boolean引用数据类型:类、接口、数组类:class接口:interface
- antv/x6 实现框组功能
bigHead-
antv/x6javascriptantvX6vue3
前言:今天看到有小伙伴看到antv/x6多层嵌套下自动拓展父节点这篇文章后在底下留言怎么实现框组的功能,现在就单一摘出来讲解一下。首先要先注册组合节点exportclassNodeGroupextendsNode{privatecollapsed:boolean=true;protectedpostprocess(){this.toggleCollapse(true);}isCollapsed()
- VBA知识:Like运算符详解
銨靜菂等芐紶
程序mpPythonLinuxVBALike
Like运算符用于判断给定的字符串是否与指定的模式相匹配,其语法为:结果=Like其中:1.为文本字符串或者对包含文本字符串的单元格的引用,是要与相比较的字符串,数据类型为String型。2.数据类型为String型,可以使用一些特殊字符,其它的字符都能与它们相匹配,如下图1所示。图13.为Boolean型。如果字符串与指定的模式相匹配,则为True;否则为False。如果字符串或者模式Null,
- 队列:基于无序数组实现优先级队列
EdwardYange
java数据结构与算法基于无序数组实现优先级队列
代码:packagecom.zy.queue_code.deque;/***@Author:zy*@Date:2025-01-12-09:54*@Description:双端队列*/publicinterfaceDeque{booleanofferFirst(Ee);booleanofferLast(Ee);EpollFirst()
- VBA学习:关于Like运算符知识
hdxx2022
编程语言Python开发语言python
Like运算符用于判断给定的字符串是否与指定的模式相匹配,其语法为:结果=Like其中:1.为文本字符串或者对包含文本字符串的单元格的引用,是要与相比较的字符串,数据类型为String型。2.数据类型为String型,可以使用一些特殊字符,其它的字符都能与它们相匹配,如下图1所示。3.为Boolean型。如果字符串与指定的模式相匹配,则为True;否则为False。如果字符串或者模式Null,则结
- ^的实际用途
何怀逸
Java基础java
1、基本用法:^是异或运算符,如果^符号两边的值为Boolean类型,那么运行的结果是:全真为假,全假为假,一真一假为真。用一段代码解释一下:if(true^true){System.out.println("A");}if(false^false){System.out.println("B");}if(true^false){System.out.println("C");}if(false^
- FLOPS, FLOPs and MACs
Aidanmomo
深度学习pytorchpython
FLOPS:FloatingPointOperationsPerSecond,每秒浮点运算次数,是一个衡量硬件速度的指标FLOPs:FloatingPointOperations,浮点运算次数,用来衡量模型计算复杂度,常用来做神经网络模型速度的间接衡量标准MACs:Multiply–AccumulateOperations,乘加累积操作数,常常被人们与FLOPs概念混淆实际上1MACs包含一个乘法
- ViewController添加button按钮解析。(翻译)
张亚雄
c
<div class="it610-blog-content-contain" style="font-size: 14px"></div>// ViewController.m
// Reservation software
//
// Created by 张亚雄 on 15/6/2.
- mongoDB 简单的增删改查
开窍的石头
mongodb
在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作
在mongo中对于不存在的表当你用db.表名 他会自动统计
下边用到的user是表明,db代表的是数据库
添加(insert):
- log4j配置
0624chenhong
log4j
1) 新建java项目
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。
3) 新建一个类com.hand.Log4jTest
package com.hand;
import org.apache.log4j.Logger;
public class
- 多点触摸(图片缩放为例)
不懂事的小屁孩
多点触摸
多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener
- 有关浏览器窗口宽度高度几个值的解析
换个号韩国红果果
JavaScripthtml
1 元素的 offsetWidth 包括border padding content 整体的宽度。
clientWidth 只包括内容区 padding 不包括border。
clientLeft = offsetWidth -clientWidth 即这个元素border的值
offsetLeft 若无已定位的包裹元素
- 数据库产品巡礼:IBM DB2概览
蓝儿唯美
db2
IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统
DB2可应用于以下三个主要的平台:
工作站,DB2可在Linus、Unix、Windo
- java笔记5
a-john
java
控制执行流程:
1,true和false
利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。
2,if-els
- Web开发常用手册汇总
aijuans
PHP
一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
正如我们学习一门技术,过程大概是这个样子:
①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的
- 今天帮助人解决的一个sql问题
asialee
sql
今天有个人问了一个问题,如下:
type AD value
A  
- 意图对象传递数据
百合不是茶
android意图IntentBundle对象数据的传递
学习意图将数据传递给目标活动; 初学者需要好好研究的
1,将下面的代码添加到main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/
- oracle查询锁表解锁语句
bijian1013
oracleobjectsessionkill
一.查询锁定的表
如下语句,都可以查询锁定的表
语句一:
select a.sid,
a.serial#,
p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$s
- mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]
征客丶
mysqlosx
场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。
环境:mac osx 10.10、mysql 5.6 的二进制文件
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录]
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir;
下载地址:http://dev.mysql.com/downl
- 分布式系统与框架
bit1129
分布式
RPC框架 Dubbo
什么是Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接
- 那些令人蛋痛的专业术语
白糖_
springWebSSOIOC
spring
【控制反转(IOC)/依赖注入(DI)】:
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。
Web
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户
- 《给大忙人看的java8》摘抄
braveCS
java8
函数式接口:只包含一个抽象方法的接口
lambda表达式:是一段可以传递的代码
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使
- 编程之美-计算字符串的相似度
bylijinnan
java算法编程之美
public class StringDistance {
/**
* 编程之美 计算字符串的相似度
* 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
* 1.修改一个字符(如把“a”替换为“b”);
* 2.增加一个字符(如把“abdd”变为“aebdd”);
* 3.删除一个字符(如把“travelling”变为“trav
- 上传、下载压缩图片
chengxuyuancsdn
下载
/**
*
* @param uploadImage --本地路径(tomacat路径)
* @param serverDir --服务器路径
* @param imageType --文件或图片类型
* 此方法可以上传文件或图片.txt,.jpg,.gif等
*/
public void upload(String uploadImage,Str
- bellman-ford(贝尔曼-福特)算法
comsci
算法F#
Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。
与迪科
- oracle ASM中ASM_POWER_LIMIT参数
daizj
ASMoracleASM_POWER_LIMIT磁盘平衡
ASM_POWER_LIMIT
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET Asm_power_limit=2;
- 高级排序:快速排序
dieslrae
快速排序
public void quickSort(int[] array){
this.quickSort(array, 0, array.length - 1);
}
public void quickSort(int[] array,int left,int right){
if(right - left <= 0
- C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节
dcj3sjt126com
C语言
# include <stdio.h>
int main(void)
{
/*
1、一个变量的地址只用第一个字节表示
2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
但是这些字节比较多,所以编号就比较大,
- phpize使用方法
dcj3sjt126com
PHP
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下
安装(fastcgi模式)的时候,常常有这样一句命令:
代码如下:
/usr/local/webserver/php/bin/phpize
一、phpize是干嘛的?
phpize是什么?
phpize是用来扩展php扩展模块的,通过phpi
- Java虚拟机学习 - 对象引用强度
shuizhaosi888
JAVA虚拟机
本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处!
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。
引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea
- .NET Framework 3.5 Service Pack 1(完整软件包)下载地址
happyqing
.net下载framework
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo
- JAVA定时器的使用
jingjing0907
javatimer线程定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
privatejava.util.Timer timer;
timer = newTimer(true);
timer.schedule(
newjava.util.TimerTask() { public void run()
- Webbench
流浪鱼
webbench
首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相
- 第11章 动画效果(中)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- windows下制作bat启动脚本.
sanyecao2314
javacmd脚本bat
java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart
- Java进行RSA加解密的例子
tomcat_oracle
java
加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。 数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。 对称加密指的是发送者和接收者共用同一个密钥的加解密方法。 非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的
- Android_ViewStub
阿尔萨斯
ViewStub
public final class ViewStub extends View
java.lang.Object
android.view.View
android.view.ViewStub
类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt