- Javaweb学习之Vue模板语法(三)
不要数手指啦
vue.js学习前端
目录学习资料前情回顾本期介绍(vue模板语法)文本插值Vue的Attribute绑定使用JavaScript表达式综合实例代码:学习资料Vue.js-渐进式JavaScript框架|Vue.js(vuejs.org)前情回顾项目的创建大家可以看这篇文章Vue学习之项目的创建-CSDN博客本期介绍(vue模板语法)首先,找到我们编写代码的地方找到自己项目的src文件夹,打开之后点击component
- Vue3-尚硅谷笔记
八月份的天气
Vue3-笔记笔记
1.Vue3简介2020年9月18日,Vue.js发布版3.0版本,代号:OnePiece(n经历了:4800+次提交、40+个RFC、600+次PR、300+贡献者官方发版地址:Releasev3.0.0OnePiece·vuejs/core截止2023年10月,最新的公开版本为:3.3.41.1.【性能的提升】打包大小减少41%。初次渲染快55%,更新渲染快133%。内存减少54%。1.2.【
- Vue如何处理数据、v-HTML的使用及总结
网络点点滴
Vue3vue.jshtml前端
Vue如何处理数据、v-HTML的使用及总结Vue是如何处理数据的这里我们先看一段代码constapp=Vue.createApp({data(){return{courseGoalA:'学习Vue,最终掌握Vue',courseGoalB:'掌握Vue,并构建相应的应用程序',vueLink:'https://cn.vuejs.org/'};},methods:{outputGoal(){con
- VUE 2+3
一只鱼^_
Webvue.js前端javascript数据结构算法前端框架
Vue是什么?概念:Vue是一个用于构建用户界面的渐进式框架构建用户界面:基于数据动态渲染页面Vue的两种使用方式:1.Vue核心包开发场景:局部模块改造2.Vue核心包&Vue插件工程化开发场景:整站开发注:Vuejs核心包(声明式渲染,组件系统)优点:大大提升开发效率----------------------------------------------------------------
- 《Vuejs设计与实现》第 12 章(组件实现原理 上)
前端 贾公子
vue.js前端javascript
目录12.1组件的渲染12.2组件状态与自更新12.3组件实例与生命周期2.4Props与组件被动更新在上一章节,我们详细探讨了渲染器的基本概念和实现方式,它的主要作用是将虚拟DOM渲染为真实DOM。然而,当我们处理复杂页面时,虚拟DOM描述页面结构的代码量可能会剧增,导致页面模板臃肿。为此,我们引入了组件化的概念,通过组件,我们可以将大型页面划分为多个模块,每个模块都独立为一个组件,最终组成完整
- VUE常用UI组件插件及框架
ctf_0226
vue.jsui前端
UI组件及框架element-饿了么出品的Vue2的webUI工具套件mint-ui-Vue2的移动UI元素iview-基于Vuejs的开源UI组件库Keen-UI-轻量级的基本UI组件合集vue-material-通过VueMaterial和Vue2建立精美的app应用muse-ui-三端样式一致的响应式UI库vuetify-为移动而生的VueJS2组件框架vonic-快速构建移动端单页应用vu
- Vue.js 中的 v-bind 指令详解
步行cgn
Vuevue.js前端javascript
Vue.js中的v-bind指令详解v-bind是Vue.js的核心指令之一,用于动态绑定HTML属性(如class、style、href等)或组件props到Vue实例的数据。一、基础语法二、核心功能动态绑定普通属性链接data(){return{url:'https://vuejs.org',imagePath:'/logo.png'}}绑定class和styleVue对这两个属性做了特殊增强
- 快速搭建一个vue前端工程
是烟花哈
测试开发前端vue.jsjavascript
一、环境准备1、安装node.js下载地址:Node.js推荐版本如下:2、检查node.js版本node-vnpm-v二、安装Vue脚手架Vue脚手架是Vue官方提供的标准化开发工具。vue官网:https://cn.vuejs.org/全局安装@vue/cli(仅第一次搭建环境时执行)npminstall-g@vue/cli检查是否安装成功vue--version三、创建vue项目进入到你想要
- 使用Vite构建Vue3项目,对路由Vue Router 4.x的设置
夏日米米茶
web前端Vue3vue-routervue3vite
Vue3官网:https://v3.cn.vuejs.org/Vite官网:https://cn.vitejs.dev/VueRouter官网:https://next.router.vuejs.org/zh/使用Vite构建时,会和以前的有些写法有些不同,例如之前我们使用//导入路由对象importVueRouterfrom'vue-router'//路径配置.vue可以省略constroute
- vue指令
爱吃鱼的小测试
VUE学习笔记vue.jsjavascript前端
Vue指令1、进入页面使一个输入框自动获取焦点2、自定义指令全局的局部的钩子函数钩子函数参数动态指令参数函数简写官方文档https://cn.vuejs.org/v2/guide/custom-directive.html1、进入页面使一个输入框自动获取焦点操作DOM的实现方式,在vue中不推荐使用document.getElementById('name').focus()想要实现的方式,在元素
- vue2学习文档
大卡拉米
学习vue.js前端
Vue2学习文档英文官网:Vue2:https://vuejs.org/Vue3:https://vuejs.org/中文官网Vue2:https://v2.cn.vuejs.org/Vue3:https://cn.vuejs.org/入门前言用来构建用户界面的渐进式的js库与其它前端JS框架的关联借鉴Angular的模板和数据绑定技术借鉴React的组件化和虚拟DOM技术特点声明式无需亲自操作D
- Vue百日学习计划Day43-45天详细计划-Gemini版
LuckyLay
vue.js学习前端
Day43:Composable函数基础与抽取简单逻辑(~3小时)本日目标:理解Composable函数的概念、优势,并学会如何将简单的、无状态的逻辑抽取为Composable。所需资源:Vue3官方文档(组合式函数):https://cn.vuejs.org/guide/reusability/composables.html学习计划:番茄时钟1(25分钟工作+5分钟休息):内容:Composa
- Vue百日学习计划Day28-32天详细计划-Gemini版
LuckyLay
vue.js学习javascript
总目标:在Day28-32深入理解Vue3的响应式机制,熟练掌握CompositionAPI中的setup,ref,reactive,toRefs,readonly,computed,watch,watchEffect等核心API的使用。所需资源:Vue3官方文档(组合式API):https://cn.vuejs.org/guide/introduction.html#composition-ap
- Vue百日学习计划Day24-28天详细计划-Gemini版
LuckyLay
vue.js学习前端
总目标:在Day24-27熟练掌握Vue.js的各种模板语法,包括文本插值、属性绑定、条件渲染、列表渲染、事件处理和表单绑定,并能结合使用修饰符。所需资源:Vue3官方文档(模板语法):https://cn.vuejs.org/guide/essentials/template-syntax.htmlVue3官方文档(条件渲染):https://cn.vuejs.org/guide/essenti
- Vue百日学习计划Day33-35天详细计划-Gemini版
LuckyLay
vue.js学习前端
总目标:在Day33-35理解Vue组件从创建到销毁的完整生命周期,熟练掌握CompositionAPI中主要的生命周期钩子,并知道在不同阶段执行哪些操作。所需资源:Vue3官方文档(生命周期钩子):https://cn.vuejs.org/guide/essentials/lifecycle.html你的Vue3实践项目。Day33:生命周期钩子-创建与挂载阶段(~3小时)本日目标:理解组件生命
- 前端技术栈学习:Vue2、Vue cli脚手架、ElementUI组件库、Axios
随遇而安622&508
前端技术栈学习笔记
1基本介绍(1)Vue是一个前端框架,易于构建用户界面(2)Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或项目整合(3)支持和其它类库结合使用(4)开发复杂的单页应用非常方便(5)Vue是Vue.js的简称官网:https://cn.vuejs.org/git地址:https://github.com/vuejs2MVVM机制示意图解读MVVM思想(上图)M∶即Model,模型,包括
- Vue百日学习计划Day21-23天详细计划-Gemini版
LuckyLay
vue.js学习前端
总目标:在Day21-23完成Vue.js的介绍学习、环境搭建,并成功运行第一个Vue3项目,理解其基本结构。Day21:Vue.js介绍与概念理解(~3小时)本日目标:理解Vue.js是什么、渐进式框架的概念以及选择Vue的原因。初步了解Vite是什么及其作用。所需资源:Vue3官方文档(介绍):https://cn.vuejs.org/guide/introduction.htmlVite官方
- 尤小右:VitePress 初步实现小目标,极简静态站点生成器
前端开发博客
javavuejavascripthtmlweb
VitePress:Vite&Vue驱动的静态网站生成器https://github.com/vuejs/vitepressVuePress的小兄弟,建立在vite的基础上npminstall-Dvitepressecho'#HelloVitePress'>index.md#startsdevservernpxvitepress#build>.vitepress/distnpxvitepressb
- 开发过程中需要安装的浏览器插件
zlpzlpzyd
前端前端
Vue.jsdevtoolshttps://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd?hl=zh-CN&utm_source=ext_sidebarModHeaderhttps://chromewebstore.google.com/detail/modheader-modify
- active-class 是哪个组件的属性?
nanzhuhe
前端
active-class属于vue-router的样式方法,当router-link标签被点击时将会应用这个样式一、首先,active-class是什么,active-class是vue-router模块的router-link组件中的属性,用来做选中样式的切换;相关可查阅文档:https://router.vuejs.org/zh-cn/api/router-link.html二、在vue-ro
- vue中使用web serial api实现串口通信
学了就忘
VUE串口vue.jsjavascript
文章目录webserialapi相关资料网址vue中实现字符串转GBK字节数组字节数组转16进制vuejs中使用vue文件中调用js的方法webserialapi相关资料网址网址:https://wicg.github.io/serial/#open-method相关资料:https://curtion.github.io/Web-SerialPort/https://github.com/Cur
- 带你深入浅出Vue
zyyn_未来可期
Vuevue.js前端javascript
如果文章对你有帮助欢迎【关注❤️❤️❤️点赞收藏⭐⭐⭐】一键三连!一起努力!前言️Vue介绍Vue是一套用于构建用户界面的渐进式框架与其它大型框架不同的是:Vue被设计为可以自底向上逐层应用Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动️官网:https://cn.vuejs.
- Vue3源码【一】—— ref&reactive响应式原理及简单实现
Modify_QmQ
#vue3javascript前端vue.js
响应式ref、reactive源码地址:https://github.com/vuejs/core首先还是从最开始学的ref的源码看起,他的路径在packages/reactivity/src/ref.ts,这里看源码分析就直接将源码执行的步骤给他粘贴出来了哈。首先我们看一下ref是怎么创建的1、创建Ref//第一步,我们还是直接到ref关键字,可以看到这个,这个就是我们使用的ref()用来创建响
- 前后端分开架构下web vuejs三维立体three曲线设计入门
zjqhadoop
数码相机
import*asTHREEfrom'three';import{OrbitControls}from"three/examples/jsm/controls/OrbitControls";import*ascurveSubjectfrom"@/api/hologram/curveSubject";exportdefault{name:'ThreeDCurve',mounted(){letwinW
- vuejs入门three曲线图设计
zjqhadoop
数码相机
import*asTHREEfrom'three';import{OrbitControls}from"three/examples/jsm/controls/OrbitControls";import*ascurveSubjectfrom"@/api/hologram/curveSubject";exportdefault{name:'ThreeDCurve',mounted(){letwinW
- 7个最好用的Vue Tree Select树形组件
萌尛喵
vue.js前端javascript
Vue树形选择器(Vuetreeselect)组件在搭建Vue的app中特别常用,Vuetreeselect除了简单的树形结构外,还有非常多样的功能来配合不同场景的使用。比如搜索过滤,前端添加删除树枝,前端编辑修改子树名,拖拽排序,对用户操作事件记录等。VueJSTree-全功能,树状单选多选,可拖拽,过滤搜索VueDraggableNestedTree-纯树形选择,轻盈趁手VueTreeList
- webpack使用详细步骤
木心操作
webpackwebpack前端node.js
项目描述本项目webpack的基本使用。webpack官方:https://webpack.docschina.org/concepts/Element-plus官方:https://element-plus.sxtxhy.com/zh-CN/Vue3官方:https://cn.vuejs.org/项目组成明细每个步骤完成后重新执行npmrundev即可看到效果1、webpack打包工具安装npm
- 前端 Web 与原生应用端 WebView 通信交互 - HarmonyOS Next
survivorsfyh
HarmonyOS前端harmonyos华为javascript
基于鸿蒙HarmonyOSNext与前端Vue通信交互相关小结;DevEcoStudioNEXTDeveloperPreview2Vuejs两端相互拟定好协议后,通过前端页面的点击事件,将所需的数据传输给原生移动端组件方法中,处理后将消息回传至前端.根据官方文档的案例尝试,但没成功...后经过几经尝试后两端握手成功...(官方文档略显粗糙,好一番折腾)一.应用端基于importweb_webvie
- Vue3 从零到全掌握:最详尽的入门指南(近万字超全内容)
AA-老高(接毕设)
开发资料vue.js前端javascript
一、Vue脚手架Vue3官方文档地址:https://v3.cn.vuejs.org/以前的官方脚手架@vue-cli也可以用,但这里推荐一个更轻快的脚手架Vite脚手架网址:Vite中文网方式一:vue-cli脚手架初始化Vue3项目官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create// 查看@vue/
- vue项目提示 WebSocketClient.js:49 WebSocket connection to ‘ws://xxxx/ws‘ failed: Invalid frame header
Beamon__
vuevue.js前端
项目信息vue-cli创建的vue3+webpack5项目;问题现状配置proxy代理后,控制台报错,不影响使用,但是不美观,并且不利于在控制台调试代码;原因定位代理问题,新配置的接口代理,影响到了项目内置的本地服务代理配置,参考Websocketconnectionfailed,Invalidframeheader·Issue#1850·vuejs/vue-cli·GitHub解决方案方案一一刀
- 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