- java—网络编程TCP和UDP
添砖,加瓦
Java基础java
1.Java网络编程概述Java网络编程是通过java.net包实现的,Socket类是用来进行客户端与服务器通信的主要类。服务器端通过ServerSocket类来监听客户端的请求,客户端则通过Socket类来连接服务器。2.TCP网络编程示例在TCP通信中,数据传输是可靠的,确保了数据的顺序和完整性。以下是一个简单的客户端和服务器应用,其中服务器端监听指定端口,客户端向服务器发送消息并接收响应。
- 《VPN 介绍:作用、场景、原理》
黑色叉腰丶大魔王
VPN
一、引言在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。随着互联网的普及和发展,人们对于网络安全和隐私保护的需求也越来越高。VPN(VirtualPrivateNetwork,虚拟专用网络)作为一种重要的网络技术,为用户提供了安全、私密的网络连接方式。本文将详细介绍VPN的作用、场景和原理,帮助读者更好地了解和使用VPN。二、VPN的作用(一)保护网络安全加密数据传输VPN通过加密
- CS书籍、代码资源下载网址
sun_kang
CSGuide&&Linkslinuxjavatutorialsdebiandocumentationlinux内核
CS网址收藏啄木鸟Pythonic开源社区:http://www.woodpecker.org.cn/中国IT实验室(游戏开发):http://game.chinaitlab.com/游戏开发资源网:http://www.gameres.com/国内游戏开发论坛:http://bbs.gameres.com/国外的游戏开发站:http://www.gamedev.net/《问道》游戏开发论坛:ht
- (已解决)Failed to execute goal on project ...: Could not resolve dependencies for projec
qq_40711092
问题记录java
这样的错误,最后发现原来是自己没有首先对父项目也就是interface-test项目进行clean和install.https://blog.csdn.net/qq_43493747/article/details/120866443
- docker起的geoserver怎么访问docker启动的postgis数据库
niuge No.1
docker数据库eureka
背景:本地docker启动geoserver、pg数据库,pg数据库安装postgis拓展。第一步:查询docker启动的容器dockerps-a第二步:查询应用的ip如我的docker容器名称是第一步查询的postgres,那么查询的命令是:dockerinspect-f"{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}"postgr
- [读书日志]8051软核处理器设计实战(基于FPGA)第六篇:8051软核处理器指令支持添加(verilog)
JoneMaster
JM读书日志系列fpga开发
5.4为主体程序添加指令接下来我们来为主体程序添加指令。在开始之前,我们有必要先把目前的代码展示出来://`defineTYPE8052moduler8051(inputwireclk,inputwirerst,inputwirecpu_en,inputwirecpu_restart,outputregrom_en,outputreg[15:0]rom_addr,inputwire[7:0]rom
- FunASR语言识别的环境安装、推理
山山而川_R
FunASRr语言xcode开发语言
目录一、环境配置1、创建虚拟环境2、安装环境及pytorch官网:pytorch下载地址3、安装funasr之前,确保已经安装了下面依赖环境:python代码调用(推荐)4、模型下载5、启动funasr服务二、客户端连接2.1html连接三、推理识别模型1、实时语音识别2、非实时语音识别一、环境配置源码地址:FunASRFunASR/README_zh.mdatmain·alibaba-damo-
- Blazor-Blogs 开源项目教程
陆滔柏Precious
Blazor-Blogs开源项目教程Blazor-BlogsSimplebloggingapplicationwritteninMicrosoftServerSideBlazor项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-Blogs项目介绍Blazor-Blogs是一个基于Blazor框架的开源博客系统。Blazor是一个使用.NET构建客户端Web
- Blazor-AdminLTE 项目教程
诸余煦
Blazor-AdminLTE项目教程blazor-adminlteThisprojectadaptsADMINLTE3sothecomponentscanbeusedfromdotnetcoreBlazor/Server/WebAssembly项目地址:https://gitcode.com/gh_mirrors/bl/blazor-adminlte1.项目的目录结构及介绍Blazor-Admi
- Blazor-Calendar 开源项目教程
宁承榕Song-Thrush
Blazor-Calendar开源项目教程Blazor-CalendarYearly,monthlyandweeklycalendarBlazorComponent.Forusewith.NET6.0orhigherBlazorapplications项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-Calendar项目介绍Blazor-Calendar是
- 探索数据之美:Blazor-ApexCharts——为.NET Core而生的图表神器
解雁淞
探索数据之美:Blazor-ApexCharts——为.NETCore而生的图表神器Blazor-ApexChartsAblazorwrapperforApexCharts.js项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-ApexCharts在可视化日益重要的今天,找到一个既高效又灵活的图表库对于开发者来说至关重要。今天,我们要向大家隆重推荐一款专为
- dotnet-blazor-crud 项目教程
尚舰舸Elsie
dotnet-blazor-crud项目教程dotnet-blazor-crudDemoapplicationbuiltwiththeBlazorclient-sidehostingmodel(WebAssembly)and.NETCoreRESTAPIssecuredbyaJWTservice.项目地址:https://gitcode.com/gh_mirrors/do/dotnet-blazo
- CSS语言的数据结构
Code侠客行
包罗万象golang开发语言后端
CSS数据结构与实践CSS(层叠样式表)是网页设计中不可或缺的一部分,它不仅负责网页的外观和布局,还影响用户的体验。在现代网页设计中,理清和理解CSS的内部结构和数据组织至关重要。本文将深入探讨CSS的基本概念、常用的样式规则、选择器、盒模型、布局方式及其在实际开发中的应用。一、CSS的基本概念CSS的全称是层叠样式表,它是用来描述如何呈现HTML文档的样式语言。CSS可以控制文档的结构、颜色、字
- 小白WEB前端学习(七)
Sun ᥫᩣ涵
WEB前端前端学习
续:小白WEB前端学习(六)继续学习CSS(五)8.响应式布局:响应式布局意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式1.响应式布局介绍:优点:面对不同分辨率设备灵活性强能够快捷解决多设备显示适应问题缺点:兼容各种设备工作量大,效率低下代码累赘,会出现隐藏无用的元素,加载时间加长手机:76899212482.media媒体查询HTML标签字号手机屏幕大小不同,分辨率不同如何设置不同的htm
- Kotlin Bytedeco OpenCV 图像图像49 仿射变换 图像裁剪
深色風信子
kotlinopencv仿射变换图像裁剪bytedecojavacpp
KotlinBytedecoOpenCV图像图像49仿射变换图像裁剪1添加依赖2测试代码3测试结果在OpenCV中,仿射变换(AffineTransformation)和透视变换(PerspectiveTransformation)是两种常用的图像几何变换方法。变换方法适用场景仿射变换简单的几何变换(平移、旋转、缩放、剪切)。透视变换改变图像视角和模拟3D投影效果。变换方法解释特点应用场景实现方法
- 利用ffmpeg将视频转为m3u8并加密
daqinzl
流媒体视频音频ffmpegffmpegm3u8加密解密openssl
参考链接https://openatomworkshop.csdn.net/67457b7e3a01316874d8a2aa.html
- 银河麒麟系统V10 sp1,安装wine 9.0
daqinzl
银河麒麟10sp1x86_64wine9.0
一,主要参考文档:https://www.cnblogs.com/zmbhfly/p/18271393https://blog.csdn.net/bird_bai001/article/details/141028512二,试验环境:(1),操作系统安装包:Kylin-Desktop-V10-SP1-2403-Release-20240430-x86_64.iso(2),相关软件:VMware®W
- 微信小程序技术架构图
流着口水看上帝
微信小程序小程序
一、视图层1.WXML(WeiXinMarkupLanguage)这是微信小程序的标记语言,类似于HTML。它用于构建小程序的页面结构。例如,通过标签来定义各种视图元素,如(类似于HTML中的)用于布局,用于显示文本等。它具有数据绑定功能,通过双大括号{{}}语法可以将数据动态地显示在页面元素中。比如,定义一个变量name,在WXML中可以通过{{name}}来显示变量name的值。2.WXSS(
- Docker 和 Kubernetes
小馋喵知识杂货铺
性能dockerkubernetes容器
Docker和Kubernetes(K8s)是当前最流行的容器化技术,用于开发、部署和管理应用程序。它们通常一起使用,提供从开发到生产的完整生命周期管理,特别是在微服务架构和云原生应用的开发中。1.Docker简介Docker是一个开源的容器化平台,它可以将应用及其所有依赖项打包在一个统一的容器中,从而简化了软件的开发、部署、运行和管理。容器化应用具有跨平台、一致性强、启动速度快等特点。容器:一个
- Flask、Tornado
本咸鱼也有梦想啦
Web后端
文章目录flaskflask响应flask请求蓝图TornadoTornado环境搭建Tornado中的响应方式Tornado中的请求的操作用Tornado实现WebSocket服务器的搭建flask相比django更轻量级支持wsgi协议flask响应1、直接return一个字符串(可以是HTML代码)2、跳转到一个模板页面render_template3、重定向到一个路由中redirectfl
- python twisted和flask_浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid...
冯妥坨
pythontwisted和flask
Django是一个高级的PythonWeb框架,支持快速开发,简洁、实用的设计。如果你正在建一个和电子商务网站相似的应用,那你应该选择用Django框架。它能使你快速完成工作,也不必担心太多的技术选择。它能提供从模版引擎到ORM所需的一切东西。用Django构建你的app的时候,你必须要遵循Django的方式,这点像极了RubyonRails的Rails框架。有些人会觉得这样有点不爽,但在我看来这
- .net开发面试题
神之王楠
.net面试
一、.NET初级开发包括关于.NET基础知识、C#编程语言、ASP.NETMVC框架等方面的问题。什么是.NET?C#中的委托是什么?请简述private、protected、public、internal修饰符的访问权限。什么是ASP.NETMVC?在ASP.NETMVC中,模型、视图和控制器的作用是什么?什么是视图模型(ViewModel)?简述装箱和拆箱的概念。二、.NET中级开发涉及.NE
- html 大概的知识点
clock的时钟
前端html前端
html01-标签的用法文字内容换行水平线02-html基本骨架 Document 03-标签的关系 嵌套,并列04-注释添加或者删除都是ctrl+/05-标题标签 标题标签一共6个级别06-换行和水平线标签强制换行的标签是什么?水平线标签是有了这个,会出现一条水平线09-格式化标签文本格式化标签加粗加粗倾斜倾斜下划线下划线删除线删除线10-图像化标签//alt表示替换文
- 【React Hooks】=> useId()
九层嵌套 for 循环
react.js前端javascript
相比较使用全局变量++作为唯一ID和直接使用useId是有区别的。官方解释如下:如果是将useId作为id的情况下,是如下的形式也就是说你使用了useId作为唯一ID那么在你删除数组某个元素之后不会导致某个ID被重复使用,如果使用的全局变量是会导致这个问题的。并且这个useId会跟着你组件的渲染进行,在你的HTML生成之后会自动匹配在之上。时小记,终有成。
- 什么是端口扫描攻击?如何预防?
wljslmz
网络安全网络技术端口扫描
在探讨端口扫描攻击之前,我们首先需要理解网络通信的基本原理以及端口在其中扮演的角色。计算机网络通过传输控制协议/互联网协议(TransmissionControlProtocol/InternetProtocol,TCP/IP)实现设备间的通信,而端口则是这一过程中的关键组成部分。每一个端口都是一个虚拟的通道,用于接收和发送特定类型的数据。例如,Web服务通常使用80端口,而文件传输协议(FTP)
- SpringBoot+Netty+WebSocket 实现消息推送
_小趴菜_
springbootwebsocketspringbootjava
关于NettyNetty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。Maven依赖io.nettynetty-all4.1.36.FinalSpringBootApplication启动器中需要new一个NettyServer,并显式调用启动netty。@SpringBootApplicationpublicclassSpringCloud
- java移动业务大厅案例_基于Java的SOSO移动大厅项目(功能全部实现了)
都灵Turin
java移动业务大厅案例
【实例简介】基于Java的SOSO移动大厅项目功能全部实现了可以下载去看看【实例截图】【核心代码】SOSO移动大厅项目└──SosoDemo├──bin│├──business││└──Menu.class│├──entity││├──CallService.class││├──ConsumInfo.class││├──MobileCard.class││├──NetPackage.class││
- 使用 Babylon.js 开发时如何通过 CSS 实现 UI 自适应
ttod_qzstudio
BabylonJavaScriptBabylon.js
本文将介绍如何在Babylon.js开发中,通过预先定义的CSS文件实现UI的自适应布局,确保UI能够根据Canvas元素的尺寸动态调整。场景描述假设我们已经使用HTML和CSS构建了Babylon.js的UI界面,并且所有样式都定义在CSS文件中。现在,我们需要让这些UI元素能够根据Canvas的尺寸动态调整,以实现自适应的效果。解决方案1.使用CSS变量(推荐)CSS变量(CustomProp
- es-Ingest pipelines
童小绿
笔记elasticsearch大数据bigdata
Ingestpipelinesnode为ingest角色,对indexingrequest做预处理,主要用于数据转换为合规、期望值的场景官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/ingest.html#ingest使用pipeline必要条件node角色必须为:ingestpipeline的组成{"descr
- SpringBoot+Netty+WebSocket 如何实现消息推送
技术琐事
rxjavajavajava-ee架构后端
Netty是一个利用Java的高级网络的能力,隐藏底层的复杂性而提供一个易于使用/使用其服务器的API的客户端框架。基于SpringBoot+MyBatisPlus+Vue&Element实现的后台管理系统+用户小程序,支持RBAC动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
- ztree设置禁用节点
3213213333332132
JavaScriptztreejsonsetDisabledNodeAjax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
- JVM patch by Taobao
bookjovi
javaHotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
- 将session存储到数据库中
dcj3sjt126com
sqlPHPsession
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
- Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
- 各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
- [简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
- struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
- IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
- String,int,Integer,char 几个类型常见转换
antonyup_2006
htmlsql.net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
- PL/SQL的游标类型
百合不是茶
显示游标(静态游标)隐式游标游标的更新和删除%rowtyperef游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
- JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
- 精通Oracle10编程SQL(12)开发包
bijian1013
oracle数据库plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
- 【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
javaeclipsespringtomcatWeb
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
- angular.element
boyitech
AngularJSAngularJS APIangular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
- java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
- sftp 异常,有遇到的吗?求解
Chen.H
javajcraftauthjschjschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
- [生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
- 通过LAC和CID获取经纬度信息
dai_lm
laccid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
- JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
- 小学5年级英语单词背诵第二课
dcj3sjt126com
englishword
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
- linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
- Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环Map迭代Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
- Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
- Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
- 学习编程那点事
lampcy
编程androidPHPhtml5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
- 架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
- org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$转义el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
- 用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
- 探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str