- 《终极自由之路》11.如何揭露头脑
觉醒吧
翻译:小粒子儿大天体SeethesourceofthemindandyouwillfindyourSelf.看清头脑的根源,你会发现你的真我。Turnthemindbackuponthemindanditwillrevealitssecrets.将头脑转回头脑上,头脑会透露它的秘密。Concentratethemindononethoughtandallotherthoughtswilldropa
- 12306抢票软件 python抢票脚本
T仔_y
pythonpython开发语言机器学习
只供学习参考,现在12306加了预填信息功能了,用官方的更靠谱!一、使用tkinter编写可视化图形编写可视化图形代码importtkinterastkfromtkinterimportmessageboxfromdatetimeimportdatetimebeg_time=Nonetrain_num_1=Nonetrain_num_2=Nonetrain_num_3=Nonelogin_flag
- Qt无边框窗口实现拖动和改变大小
dragoo1
c++#qtqt窗口拖动移动边框
主要参考了https://blog.csdn.net/qq_16952303/article/details/51974502?locationNum=8&fps=1,但原文章在某些情况下,鼠标形状不刷新,改进了一版。MyResizeWidget.h#ifndefMYRESIZEWIDGET_H#defineMYRESIZEWIDGET_H#include#defineEDGE_MARGIN8na
- OWASP: OWASP Dependency-Check install and usage 安裝與使用說明
Chia-Te Kuan
OWASP經驗談分析工具c++SBOMSTQClinuxc语言
contentVariablesHowtoinstallOWASPDependency-CheckJAVAInstallationyarnInstallationImportYarnGPGkeysandenableYarnreponpmNET8.0InstallationDownloadDependency-checkandinstallHowtorundependency-checkGenera
- Capture local packets using Wireshark 使用 wireshark 抓本地包
Chia-Te Kuan
http-flv經驗談分析工具测试工具网络
一般而言windows系統本地到本地ip的傳輸不會經過網卡,因此無法由wireshark捕捉解析,本文介紹wireshark同步安裝Npcap方式,藉此loopback本地ip到本地ip本文不推薦網傳routeaddmask255.255.255.255這個方法,因將大幅拖慢系統效率(所有本地到本地的包都要重新入網卡),甚者導致timeout而無法運行NetworkprogramGenerally
- Python使用函数封装简易ATM(V2.0)
_遥瑾_
pythonpython
Python使用函数封装简易ATM(V1.0)https://mp.csdn.net/mp_blog/creation/editor/127511047该文章的代码是在V1.0的基础上进行升级,使得功能更加完善print('***********欢迎使用智汇ATM***********')print('1.注册2.登录3.查询余额4.存款5.转账6.取款7.退卡')#定义一个列表,存放用户注册信息
- 服务发现的艺术:Eureka中实现分布式服务目录
代码之光_1980
服务发现eureka云原生
标题:服务发现的艺术:Eureka中实现分布式服务目录在微服务架构中,服务的动态发现和注册是确保系统高可用性和可扩展性的关键。NetflixEureka是一个基于REST的服务发现框架,它提供了一个服务注册中心,使得服务实例可以注册和发现彼此。本文将详细解释如何在Eureka中实现分布式服务目录,并提供示例代码,帮助你构建一个高效的服务发现机制。1.微服务架构与服务发现在微服务架构中,服务通常是分
- ASP.NET Core消息队列RabbitMQ基础入门实战演练
阿笨NET
跟着阿笨一起玩NETASP.NETCoreASP.NETCore消息队列ASP.NETCoreRabbitMQ.NETCore视频教程ASP.NETCore视频课程
一、课程介绍人生苦短,我用.NETCore!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景。本次分享课程不是零基础教学,课程内容的侧重点是讲解的RabbitMQ的最实用、最简单的实战运用场景:Publish/Subscrib(发布/订阅)模式,发送端发送消息,单个接收端接收处理消息。学完本次"是猴子都看的懂的
- ASP.NET Core 入门教学十五 异步编程
充值内卷
asp.net后端
在ASP.NETCore中,异步编程是一种非常重要的技术,它可以提高应用程序的性能和响应能力。本教程将介绍如何在ASP.NETCore中使用异步编程。1.异步编程基础异步编程允许程序在等待某些操作(如I/O操作)完成时继续执行其他任务,而不是阻塞整个线程。这可以显著提高应用程序的性能,特别是在处理大量并发请求时。2.使用async和await在C#中,async和await关键字用于实现异步编程。
- ASP.NET Core 入门教学十六 防止常见的Web攻击
充值内卷
asp.net前端后端
在ASP.NETCore中,防止常见的Web攻击是非常重要的,以确保应用程序的安全性。以下是一些常见的Web攻击类型及其防范措施:1.跨站脚本攻击(XSS)跨站脚本攻击(XSS)是一种通过在网页中注入恶意脚本来攻击用户的浏览器的技术。为了防止XSS攻击,可以采取以下措施:输入验证:对用户输入进行严格的验证和清理。输出编码:在将用户输入的数据插入到HTML页面中时,进行适当的编码。ASP.NETCo
- 部署一套完整的架构系统有哪些步骤
missterzy
JAVA基础服务器分布式与微服务架构jenkinsk8sdocker服务器
前言如果以java、Jenkins(自动化部署)、docker(容器化部署)、k8s(兼容前两个)如果搭建一个商业系统,我们需要准备哪些?架构图1、环境准备准备一台或多台服务器作为宿主机,确保服务器操作系统已安装(例如Linux);安装Docker环境,宿主机需要支持容器化技术;安装Kubernetes集群环境,可以选择Minikube作为本地测试环境或其他方案例如kubeadm、kops等用于搭
- ASP.NET Core 入门教学八 集成RocketMQ消息队列
充值内卷
asp.netrocketmq后端
在ASP.NETCore中集成RocketMQ消息队列,你需要遵循以下步骤:1.安装RocketMQ客户端库首先,你需要在你的ASP.NETCore项目中安装RocketMQ的.NET客户端库。你可以使用NuGet包管理器来完成这个任务。在VisualStudio中,右键点击你的项目,选择“管理NuGet程序包”,然后搜索并安装Apache.RocketMQ.Client包。2.配置RocketM
- 【DevOps工具链整合】Jenkins、GitLab、Docker、Kubernetes
爱技术的小伙子
devopsjenkinsgitlab
DevOps工具链整合:Jenkins、GitLab、Docker、Kubernetes目录引言DevOps简介工具介绍JenkinsGitLabDockerKubernetes工具链整合的意义DevOps工具链整合实践环境准备GitLab的CI/CD集成Jenkins的使用Docker容器化Kubernetes部署整合中的挑战及解决方案案例分析结论引言在现代软件开发中,DevOps已经成为提升开
- 局域网聊天室
qy3333
网络通信linux
#include#include#defineSERIP"192.168.0.138"#defineSERPORT7890#defineCLIENTSIZE6intmain(intargc,constchar*argv[]){intoldfd=socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return-1;}intk=1;
- TCP的CS模型
qy3333
网络通信tcp/ip网络协议网络
TCPserver.c#include#defineSEVIP"192.168.0.116"#defineSEVPORT6669#defineCLISIZE5typedefstructsockaddr_insocketadd;intmain(intargc,constchar*argv[]){intoldfd=socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){
- 分享一个基于微信小程序的智慧校园服务平台(源码、调试、LW、开题、PPT)
计算机源码社
微信小程序微信小程序毕业设计项目计算机毕设源码计算机毕设毕设选题课程设计源码毕业设计答辩
作者:计算机源码社个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!学习资料、程序开发、技术解答、文档报告如需要源码,可以扫取文章下方二维码联系咨询Java项目微信小程序项目Android项目Python项目PHP项目ASP.NET项目Node.js项目选题推荐项目实战|基
- Aarch64架构OpenEuler服务器安装部署.NetCore站点
東云dove
.netcorelinux服务器visualstudio
下载对应的离线包(SDK或者runtime)在OpenEuler中找到/usr/share/并创建dotnet目录,并将下载的离线包解压添加环境变量exportPATH=$PATH:/usr/share/dotnetsource~/.bashrcdotnet--info将.NetCore站点发布为linux-arm64(旧版本的VS没有这个选项,我用的是VS2022发布的)进入对应的文件夹,运行d
- day43(9/4)——k8s
晗涵¥-¥
kubernetes容器云原生
一、前期准备1、配置主机映射[root@k8s-master~]#vim/etc/hosts192.168.8.168k8s-master192.168.8.176k8s-node1192.168.8.177k8s-node2[root@k8s-master~]#pingk8s-master2、配置yum源[
[email protected]]#vimkubernetes.rep
- Python网页自动化(一)
Greate AUK
python
参考链接:https://blog.csdn.net/Haven200/article/details/1032087951.安装首先:pip3installselenium然后在https://github.com/mozilla/geckodriver/releases/中选择合适的版本,解压后得到一个名为geckodriver的文件,然后执行:mvgeckodriver/usr/local/
- kubernetes的worker节点删除后重新加入(kubeadm方式)
忍冬行者
k8skubernetes
1.设置操作的节点不可调度及驱逐节点kubectlcordonkubectldrain--delete-local-data--force--ignore-daemonsets2.删除节点kubectldeletenode3.清空节点,清空init配置,需要删除的节点上执行systemctlstopkubeletsystemctlstopdockerrm-rf/var/lib/cni/rm-rf/
- Kubernetes 从集群中移除一个节点(Node)
Roc.Chang
#Kubernetes云原生kubernetes容器云原生
目录1.移除工作节点(WorkerNode)1.1确定工作节点名称1.2驱逐工作节点上的Pod1.3删除工作节点1.4重置该工作节点2.移除控制平面节点(ControlPlaneNode)2.1确定控制平面节点名称2.2驱逐控制平面节点上的Pod2.3更新etcd集群2.4从集群中删除控制平面节点2.5重置移除的控制平面节点3.注意事项Kubernetes管理的一个重要方面是在必要时从集群中删除节
- 浙大数据结构03-树2 List Leaves
忆灬凝
浙大数据结构数据结构listelasticsearch1024程序员节
Givenatree,youaresupposedtolistalltheleavesintheorderoftopdown,andlefttoright.InputSpecification:Eachinputfilecontainsonetestcase.Foreachcase,thefirstlinegivesapositiveintegerN(≤10)whichisthetotalnumb
- 数据结构MOOC 03-树2 List Leaves
天乾物燥
数据结构二叉树队列数据结构
03-树2ListLeaves题目要求Givenatree,youaresupposedtolistalltheleavesintheorderoftopdown,andlefttoright.InputSpecification:Eachinputfilecontainsonetestcase.Foreachcase,thefirstlinegivesapositiveintegerN(≤10)
- python web自动化
gaoguide2015
自动化脚本webhtml
1.python爬虫之模拟登陆csdn(登录、cookie)http://blog.csdn.net/yanggd1987/article/details/52127436?locationNum=32、xml解析:Python网页解析:BeautifulSoup与lxml.html方式对比(xpath)lxml库速度快,功能强大,推荐。http://blog.sina.com.cn/s/blog
- 【Kubernetes】常见面试题汇总(四)
summer.335
Kuberneteskubernetes容器云原生
目录11.简述Kubernetes集群相关组件?12.简述KubernetesRc的机制?11.简述Kubernetes集群相关组件?KubernetesMaster控制组件,调度管理整个系统(集群),包含如下组件:(1)KubernetesAPlServer:作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以RESTfuLAPI接口方式提供给外部客户和内部组件调用,集群内各个
- 【Kubernetes】常见面试题汇总(二)
summer.335
Kuberneteskubernetes容器云原生
目录5.简述Kubernetes中什么是Minikube、Kubectl、Kubelet?6.简述Kubernetes常见的部署方式?7.简述Kubernetes如何实现集群管理?8.简述Kubernetes的优势、适应场景及其特点?5.简述Kubernetes中什么是Minikube、Kubectl、Kubelet?①Minikube是一种可以在本地轻松运行一个单节点Kubernetes群集的工
- 【Kubernetes】常见面试题汇总(三)
summer.335
Kuberneteskubernetes容器云原生
目录9.简述Kubernetes的缺点或当前的不足之处?10.简述Kubernetes相关基础概念?9.简述Kubernetes的缺点或当前的不足之处?Kubernetes当前存在的缺点(不足)如下:①安装过程和配置相对困难复杂;②管理服务相对繁琐;③运行和编译需要很多时间;④它比其他替代品更昂贵;⑤对于简单的应用程序来说,可能不需要涉及Kubernetes即可满足。10.简述Kubernetes
- NUMA架构
weixin_34220623
数据库内存管理操作系统
最近在学习.NET的并行计算技术,学到一个服务器NUMA架构,NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,在系统延迟方面表现都很优秀。Windows一向都没有在NUMA架构上有多少表现机会,AMD的多路系统大多也会用在UNIX/Linux上。Intel如期进入了NUMA架构的怀抱,英特尔最新的服务器处理器至强5500是一项重大的结构变革。与上一代至强处理器相比,至强5500采用了
- Pycharm专业版注册激活
码农小杨啊
python
快去这个链接:http://blog.csdn.net/lanchunhui/article/details/51660951http://idea.lanyus.com/
- 目标检测-YOLOv4
wydxry
深度学习目标检测YOLO目标跟踪
YOLOv4介绍YOLOv4是YOLO系列的第四个版本,继承了YOLOv3的高效性,并通过大量优化和改进,在目标检测任务中实现了更高的精度和速度。相比YOLOv3,YOLOv4在框架设计、特征提取、训练策略等方面进行了全面升级。它在保持实时检测的同时,显著提升了检测性能,尤其在复杂场景中的表现尤为出色。相比YOLOv3的改进与优势改进的Backbone(CSPDarknet-53)YOLOv4使用
- 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