- Unity声音管理系统笔记
WarPigs
笔记unity音频
需求在各个场景可以打开设置面板,设置音乐、UI音效和所有其他音效的音量;分析管理器在各个场景都存在,可以:不继承MonoBehavior,就不能和AudioSource挂在一个对象,也不能通过拖指定音乐和UI音效AudioSource。如果在场景里建好AudioSource,让它用GameObject.Find()或transform.Find()找AudioSource,那么每个场景都要创建,容
- MySQL执行Source的报错记录
WarPigs
mysql数据库
1.如果Source执行路径有中文的.sql文件,如果结尾有分号,报错:ERROR:Unknowncommand'\U',报此错后输入任何指令都返回->必须退出重新打开才行。2.如果Source执行路径有中文的.sql文件,结尾不加分号,报错:ERROR:Failedtoopenfile,error:423.如果Source执行路径没有中文的.sql文件,结尾有分号,报错:ERROR:Unknow
- 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的文件上传与下载:实现文件管理功能
Foyo Designer
springspringbootjava后端改行学it
点击此处查看合集https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link一、开篇整活儿今儿个咱唠唠Spr
- 如何在自己电脑上搭建DeepSeek
五道书童
人工智能人工智能DeepSeek
如何在自己电脑上搭建DeepSeek在本地电脑上搭建DeepSeek大模型,可以通过以下多种方法实现。以下是三种主流方案的详细步骤及注意事项,根据操作复杂度和适用场景选择适合的方式:方法一:基于vLLM的部署(适合开发者或需要高性能推理)步骤说明安装Python环境确保安装Python3.8+版本,并验证pip可用性。推荐使用虚拟环境避免依赖冲突:python-mvenvvenvsourceven
- 打造专业级ChatGPT风格聊天界面:SpringBoot与Vue实现动态打字机效果,附完整前后端源码
m0_74824025
面试学习路线阿里巴巴chatgptspringbootvue.js
大家好,今天用SpringBoot、vue写了一个仿ChatGPT官网聊天的打字机效果。所有代码地址:gitee代码地址,包含前端和后端,可以直接运行使用本技术实现的项目:aicnn.cn,欢迎大家体验如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。本文主要应用的技术有:SpringBoot、Vue、Reactive、WebFlux、EventSource等,学习和练手的好项目。实现效
- 鸿蒙 forEach和LazyForEach
萌新小鸡
harmonyos华为
此文章内容兼容API12,使用harmonynext应用开发概念解释forEach和LazyForEach都是应用于循环渲染,forEach一般应用于数据量小,性能要求不高的场景;LazyForEach适用于数据量大,对性能要求较高的场景。比较维度forEachLazyForEach数据源ArrayIDataSource类型渲染策略一次性渲染所有的数据只渲染可视区域的数据内存一次性加载所有的数据只
- spring之添加freemarker模版熏染
码农~明哥
java工具类封装springjava后端
前言公司在做一些基础的功能不需要重复去操作比如说单表的增删改查业务代码从controller->service->dao层的相关代码都可以不用程序员去手动编写每一行代码,能更好的利用工具很好的生成。一:引入依赖org.springframework.bootspring-boot-starter-freemarker二:案例展示privatevoidcreateSource(CodeCreatec
- 学习TClientDataset的使用
onebigday
Delphi编程buttondatasetobjectauthenticationoracletable
这个控件好像很好用,以前都是用TSimpledataset,现在突然想用一下它。要用它,好像比TSimpleDataset多几个控件,我是加了以下几个控件,TSQLConnection,TSQLQuery,TDataSetProvider,TClientDataset,TDataSource,TDBGrid。这几个控件中,TDBGrid的DataSource属性设为TDataSource,TDat
- Lua语言脚本环境配置
花开莫与流年错_
笔记lua开发语言游戏mod游戏开发
参考地址:Lua教程|菜鸟教程Windows等直接下载安装地址:LuaBinaries上面也是会跳转下载:https://sourceforge.net/projects/luabinaries/下载解压后在“环境变量”中添加路径,添加后如果cmd中还是无法使用lua命令,可能是exe文件名不一致,删除文件名后缀或命令添加后缀linux下载源码安装curl-L-R-Ohttps://www.lua
- anaconda安装 创建虚拟环境+pycharm中conda环境配置
galaxy_Fannn
pycharmcondapython
miniconda下载安装参考以下链接:https://blog.csdn.net/2301_76831056/article/details/143165738?fromshare=blogdetail&sharetype=blogdetail&sharerId=143165738&sharerefer=PC&sharesource=weixin_63339973&sharefrom=from_
- 第三章 devextreme-react/scheduler 定制属性学习
yanyu-yaya
react.js学习前端
devextreme-react/scheduler系列文章目录第一章scheduler简单学习第二章scheduler分组groups,资源Resource属性学习文章目录devextreme-react/scheduler系列文章目录前言一、本章使用的属性二、代码template.jsdata.jsstyle.css三.效果四.属性分析resourceCellRenderappointment
- JavaWeb之数据库JDBC
西元.
JavaWeb数据库java
在创建好数据库后,需要通过Java实现数据库的增删改查操作JDBC(JavaDataBaseConnectivity)意为Java数据库连接,是Java提供的用来操作数据库的API一、数据库的连接这一部分不要求掌握,大家直接简单阅读一下即可,实践中很少自己手写1.配置文件jdbc.properties配置文件用于存储数据库信息,通常放在与src同目录下的resources包下driverClass
- 轻松上手:CUDA 11.4、cuDNN 与 Pytorch 一站式安装指南
松南友Trina
轻松上手:CUDA11.4、cuDNN与Pytorch一站式安装指南CUDA11.4CUDNNPytorch安装项目地址:https://gitcode.com/Resource-Bundle-Collection/bc11f项目介绍在深度学习和人工智能领域,CUDA、cuDNN和Pytorch是不可或缺的工具。然而,这些工具的安装和配置往往让许多开发者感到头疼。为了解决这一痛点,我们推出了这个开
- ApplicationContext与BeanFactory的用法区别
zhglhy
java开发语言
ApplicationContext和BeanFactory是Spring框架中两个核心容器接口,虽然都用于管理Bean,但在功能强度和使用场景上有显著区别。以下是它们的详细用法对比:1.基础用法对比(1)BeanFactory—基础容器功能定位:最小化依赖注入和Bean生命周期管理。初始化方式://需要手动加载资源Resourceresource=newClassPathResource("be
- 下载 Anolis 23 所有源码 RPM 包并记录日志
黑蛋同志
linux国产操作系统运维
下载Anolis23所有源码RPM包并记录日志功能包括:自动创建目录、下载日志、进度条及成功/失败统计创建download_srpm.sh脚本文件vidownload_srpm.sh内容如下:#!/bin/bash#下载Anolis23所有源码RPM包并记录日志#用法:./download_rpms.sh[目标目录]#目标URLSOURCE_URL="https://mirrors.openano
- 如何在 Ubuntu 中安装 Python?
算法资料吧!
ubuntupythonlinux
本文将指导您完成在Ubuntu上安装Python的步骤,确保您准备好快速开始编码。我们将重点介绍如何安装Python3,这是当今使用最广泛的版本。Python通常预装在Ubuntu上,尤其是Python3,因为它是系统处理各种任务和应用程序的重要组成部分。使用APT安装程序使用存储库使用SourceLink要安装PythonUbuntu,您可以通过Linux终端或命令行使用各种方法。本指南将概述这
- springboot对静态资源的映射规则
呼呼通
微服务springboot
在WebMvcAutoConfiguration类中@ConfigurationProperties(prefix="spring.resources",ignoreUnknownFields=false)publicclassResourceProperties//可以设置和静态资源有关的参数@OverridepublicvoidaddResourceHandlers(ResourceHandl
- 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的国际化:支持多语言的 RESTful API
Foyo Designer
springspringbootrestfuljavaredis缓存后端
点击此处查看合集https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link一、开篇整活儿今儿个咱唠唠Spr
- C文件输入输出函数实例
etp_
c语言服务器前端
下面使用一个函数示例说明这些函数的用法。该程序把一系列文件中的内容附加在另一个文件的末尾。#include#include#include#defineBUFSIZE4096#defineSLEN81voidappend(FILE*source,FILE*dest);char*s_get(char*st,intn);intmain(void){FILE*fa,*fs;//fa指向目标文件,fs指向
- MultipartFile resource [file] cannot be resolved to absolute file path
gaog2zh
#spring全家桶spring文件上传
项目报错:java.io.FileNotFoundException:MultipartFileresource[file]cannotberesolvedtoabsolutefilepath,图示WebLogAspect为我们的项目日志切面类,用于记录日志原因:MultipartFile使用fastjson序列化会报错解决方案:这里解决方案选择忽略,代码如下/***获取方法的参数*@paramm
- ES-JavaRestClient查询_快速入门
Gratitute_林腾
微服务JavaWebESelasticsearch搜索引擎
目录构建并发起请求解析响应结果测试构建并发起请求request.source()除了可以进行查询,也可进行排序、分页等等,对应的API如下图:查询通过QueryBuilder进行构建,QueryBuilder是一个接口,其内部有很多不同的实现,对应各种不同的叶子查询,但是我们不需要自己去newQueryBuilder,我们只需要使用工具QueryBuilders,它提供了很多静态方法,可以帮助我们
- 了解OpenCV:计算机视觉的强大开源工具
项目笔记与工具库
opencv
在现代科技飞速发展的今天,计算机视觉已经成为了人工智能的重要组成部分。无论是自动驾驶汽车的环境感知,还是智能监控系统中的人脸识别,计算机视觉技术都在发挥着至关重要的作用。而在众多计算机视觉工具中,OpenCV(OpenSourceComputerVisionLibrary)无疑是最受欢迎和最强大的开源库之一。什么是OpenCV?OpenCV,即开放源码计算机视觉库,是一个由Intel公司最初开发的
- hadoop集群常用命令搜集——筑梦之路
筑梦之路
大数据hadoop大数据分布式
服务启停命令#脚本启停hadoop全部服务(master节点执行,各节点需配置免密)./start-all.sh#包含yarn(ResourceManager,NodeManager)和hdfs(JournalNode,NameNode,DataNode,DFSZKFailoverController)./stop-all.sh#脚本启停ResourceManager,NodeManager./s
- 探索OpenCV:计算机视觉的入门指南
kaixin_啊啊
OpenCV项目实践计算机视觉opencv人工智能
文章目录引言OpenCV简介基本操作读取和显示图像转换图像颜色边缘检测结语引言最近接触到了一项开源的OpenCV新手入门项目,非常好玩儿,特此整理分享。在当今这个数字化时代,计算机视觉技术正变得越来越重要。无论是在自动驾驶汽车、面部识别系统,还是简单的图像编辑软件中,我们都能看到计算机视觉的身影。OpenCV(OpenSourceComputerVisionLibrary)是一个功能强大的开源库,
- freetts
iteye_1635
软件PHP.net
http://freetts.sourceforge.net/docs/index.phpFreeTTS是一个开源的语音合成引擎。
- 推荐项目:编程学习者的宝藏库
乌昱有Melanie
推荐项目:编程学习者的宝藏库List-of-Learning-ResourcesThiscollectionprovidesalistofeducationalresourcesforSoftwareEngineers.Feelfreetoaddyourfavoriteresourcesaswellandhelpothersintheirjourneyoflearning.项目地址:https:/
- SSE服务器主动推送至浏览器客户端,让你不再需要websocket
diygwcom
服务器websocket运维
Server-SentEvents(SSE)是一种服务器向客户端推送实时更新的技术,基于HTTP协议。客户端通过EventSourceAPI来接收事件流,而服务器则保持一个长连接,持续发送数据。这与传统的请求-响应模式不同,允许服务器主动推送数据,而不是等待客户端请求。客户端通过创建一个EventSource对象,指定服务器的URL。服务器设置特定的HTTP头(如Content-Type:text
- 【springboot】一一一一访问本地磁盘路径下的图片
暴力袋鼠哥
springBootjavaspring
配置properties#上传路径videoIconLocation=E:/JavaCode/Carimgspring.mvc.static-path-pattern=/**spring.resources.static-locations=classpath:/static/,file:${videoIconLocation}前端数据省略后台代码privatefinalStringIMG_URL
- Spring Boot 集成Swagger
大厂在职_Mmy
springboot后端java
*///@Override//publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){//registry.addResourceHandler(“swagger-ui.html”)//.addResourceLocations(“classpath:/META-INF/resources/”);////registry.add
- Android 中获取颜色资源
casual_clover
新起点androidkotlin
在Android开发中,资源(如字符串、颜色等)通常存储在res文件夹中,并通过资源ID进行访问。资源ID是一个整型值,用于唯一标识资源,若需要将资源转换为整型值,通常是指获取资源ID或从资源中提取整型数据。1、getIdentifier方法动态获取资源ID使用getResources().getIdentifier()方法可以将资源(如字符串、颜色等)的名称转换为对应的资源ID(整型值),但是这
- 312个免费高速HTTP代理IP(能隐藏自己真实IP地址)
yangshangchuan
高速免费superwordHTTP代理
124.88.67.20:843
190.36.223.93:8080
117.147.221.38:8123
122.228.92.103:3128
183.247.211.159:8123
124.88.67.35:81
112.18.51.167:8123
218.28.96.39:3128
49.94.160.198:3128
183.20
- pull解析和json编码
百合不是茶
androidpull解析json
n.json文件:
[{name:java,lan:c++,age:17},{name:android,lan:java,age:8}]
pull.xml文件
<?xml version="1.0" encoding="utf-8"?>
<stu>
<name>java
- [能源与矿产]石油与地球生态系统
comsci
能源
按照苏联的科学界的说法,石油并非是远古的生物残骸的演变产物,而是一种可以由某些特殊地质结构和物理条件生产出来的东西,也就是说,石油是可以自增长的....
那么我们做一个猜想: 石油好像是地球的体液,我们地球具有自动产生石油的某种机制,只要我们不过量开采石油,并保护好
- 类与对象浅谈
沐刃青蛟
java基础
类,字面理解,便是同一种事物的总称,比如人类,是对世界上所有人的一个总称。而对象,便是类的具体化,实例化,是一个具体事物,比如张飞这个人,就是人类的一个对象。但要注意的是:张飞这个人是对象,而不是张飞,张飞只是他这个人的名字,是他的属性而已。而一个类中包含了属性和方法这两兄弟,他们分别用来描述对象的行为和性质(感觉应该是
- 新站开始被收录后,我们应该做什么?
IT独行者
PHPseo
新站开始被收录后,我们应该做什么?
百度终于开始收录自己的网站了,作为站长,你是不是觉得那一刻很有成就感呢,同时,你是不是又很茫然,不知道下一步该做什么了?至少我当初就是这样,在这里和大家一份分享一下新站收录后,我们要做哪些工作。
至于如何让百度快速收录自己的网站,可以参考我之前的帖子《新站让百
- oracle 连接碰到的问题
文强chu
oracle
Unable to find a java Virtual Machine--安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案
作者:草根IT网 来源:未知 人气:813标签:
导读:安装64位版Oracle11gR2后发现启动SQLDeveloper时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\prod
- Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)
小桔子
java继承swing接口监听
都知道java中类只能单继承,但可以实现多个接口,但我发现实现多个接口之后,多个接口却不能共享同一个数据,应用开发中想实现:当用户按着ctrl键时,可以用鼠标点击拖动组件,比如说文本框。
编写一个监听实现KeyListener,NouseListener,MouseMotionListener三个接口,重写方法。定义一个全局变量boolea
- linux常用的命令
aichenglong
linux常用命令
1 startx切换到图形化界面
2 man命令:查看帮助信息
man 需要查看的命令,man命令提供了大量的帮助信息,一般可以分成4个部分
name:对命令的简单说明
synopsis:命令的使用格式说明
description:命令的详细说明信息
options:命令的各项说明
3 date:显示时间
语法:date [OPTION]... [+FORMAT]
- eclipse内存优化
AILIKES
javaeclipsejvmjdk
一 基本说明 在JVM中,总体上分2块内存区,默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。 1)堆内存(Heap memory):堆是运行时数据区域,所有类实例和数组的内存均从此处分配,是Java代码可及的内存,是留给开发人
- 关键字的使用探讨
百合不是茶
关键字
//关键字的使用探讨/*访问关键词private 只能在本类中访问public 只能在本工程中访问protected 只能在包中和子类中访问默认的 只能在包中访问*//*final 类 方法 变量 final 类 不能被继承 final 方法 不能被子类覆盖,但可以继承 final 变量 只能有一次赋值,赋值后不能改变 final 不能用来修饰构造方法*///this()
- JS中定义对象的几种方式
bijian1013
js
1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象):
<html>
<head>
<title>基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)</title>
</head>
<script>
var obj = new Object();
- 表驱动法实例
bijian1013
java表驱动法TDD
获得月的天数是典型的直接访问驱动表方式的实例,下面我们来展示一下:
MonthDaysTest.java
package com.study.test;
import org.junit.Assert;
import org.junit.Test;
import com.study.MonthDays;
public class MonthDaysTest {
@T
- LInux启停重启常用服务器的脚本
bit1129
linux
启动,停止和重启常用服务器的Bash脚本,对于每个服务器,需要根据实际的安装路径做相应的修改
#! /bin/bash
Servers=(Apache2, Nginx, Resin, Tomcat, Couchbase, SVN, ActiveMQ, Mongo);
Ops=(Start, Stop, Restart);
currentDir=$(pwd);
echo
- 【HBase六】REST操作HBase
bit1129
hbase
HBase提供了REST风格的服务方便查看HBase集群的信息,以及执行增删改查操作
1. 启动和停止HBase REST 服务 1.1 启动REST服务
前台启动(默认端口号8080)
[hadoop@hadoop bin]$ ./hbase rest start
后台启动
hbase-daemon.sh start rest
启动时指定
- 大话zabbix 3.0设计假设
ronin47
What’s new in Zabbix 2.0?
去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:
:: Performance improvements::Trigger related da
- http错误码大全
byalias
http协议javaweb
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1)1xx:信息,请求收到,继续处理
2)2xx:成功,行为被成功地接受、理解和采纳
3)3xx:重定向,为了完成请求,必须进一步执行的动作
4)4xx:客户端错误,请求包含语法错误或者请求无法实现
5)5xx:服务器错误,服务器不能实现一种明显无效的请求
- J2EE设计模式-Intercepting Filter
bylijinnan
java设计模式数据结构
Intercepting Filter类似于职责链模式
有两种实现
其中一种是Filter之间没有联系,全部Filter都存放在FilterChain中,由FilterChain来有序或无序地把把所有Filter调用一遍。没有用到链表这种数据结构。示例如下:
package com.ljn.filter.custom;
import java.util.ArrayList;
- 修改jboss端口
chicony
jboss
修改jboss端口
%JBOSS_HOME%\server\{服务实例名}\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
中找到
<!-- The ports-default bindings are obtained by taking the base bindin
- c++ 用类模版实现数组类
CrazyMizzz
C++
最近c++学到数组类,写了代码将他实现,基本具有vector类的功能
#include<iostream>
#include<string>
#include<cassert>
using namespace std;
template<class T>
class Array
{
public:
//构造函数
- hadoop dfs.datanode.du.reserved 预留空间配置方法
daizj
hadoop预留空间
对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value>
- mysql远程访问的设置
dcj3sjt126com
mysql防火墙
第一步: 激活网络设置 你需要编辑mysql配置文件my.cnf. 通常状况,my.cnf放置于在以下目录: /etc/mysql/my.cnf (Debian linux) /etc/my.cnf (Red Hat Linux/Fedora Linux) /var/db/mysql/my.cnf (FreeBSD) 然后用vi编辑my.cnf,修改内容从以下行: [mysqld] 你所需要: 1
- ios 使用特定的popToViewController返回到相应的Controller
dcj3sjt126com
controller
1、取navigationCtroller中的Controllers
NSArray * ctrlArray = self.navigationController.viewControllers;
2、取出后,执行,
[self.navigationController popToViewController:[ctrlArray objectAtIndex:0] animated:YES
- Linux正则表达式和通配符的区别
eksliang
正则表达式通配符和正则表达式的区别通配符
转载请出自出处:http://eksliang.iteye.com/blog/1976579
首先得明白二者是截然不同的
通配符只能用在shell命令中,用来处理字符串的的匹配。
判断一个命令是否为bash shell(linux 默认的shell)的内置命令
type -t commad
返回结果含义
file 表示为外部命令
alias 表示该
- Ubuntu Mysql Install and CONF
gengzg
Install
http://www.navicat.com.cn/download/navicat-for-mysql
Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html
Step2:进入下载目录,解压压缩包:tar -zxvf navicat11_mysql_en.tar.gz
- 批处理,删除文件bat
huqiji
windowsdos
@echo off
::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
rem 指定待删除文件的存放路径
set SrcDir=C:/Test/BatHome
rem 指定天数
set DaysAgo=1
- 跨浏览器兼容的HTML5视频音频播放器
天梯梦
html5
HTML5的video和audio标签是用来在网页中加入视频和音频的标签,在支持html5的浏览器中不需要预先加载Adobe Flash浏览器插件就能轻松快速的播放视频和音频文件。而html5media.js可以在不支持html5的浏览器上使video和audio标签生效。 How to enable <video> and <audio> tags in
- Bundle自定义数据传递
hm4123660
androidSerializable自定义数据传递BundleParcelable
我们都知道Bundle可能过put****()方法添加各种基本类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。如传递一个字符串到下一个Activity
把数据放到Intent
- C#:异步编程和线程的使用(.NET 4.5 )
powertoolsteam
.net线程C#异步编程
异步编程和线程处理是并发或并行编程非常重要的功能特征。为了实现异步编程,可使用线程也可以不用。将异步与线程同时讲,将有助于我们更好的理解它们的特征。
本文中涉及关键知识点
1. 异步编程
2. 线程的使用
3. 基于任务的异步模式
4. 并行编程
5. 总结
异步编程
什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程。通常情况下,C#程序
- spark 查看 job history 日志
Stark_Summer
日志sparkhistoryjob
SPARK_HOME/conf 下:
spark-defaults.conf 增加如下内容
spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/var/log/spark spark.eventLog.compress true
spark-env.sh 增加如下内容
export SP
- SSH框架搭建
wangxiukai2015eye
springHibernatestruts
MyEclipse搭建SSH框架 Struts Spring Hibernate
1、new一个web project。
2、右键项目,为项目添加Struts支持。
选择Struts2 Core Libraries -<MyEclipes-Library>
点击Finish。src目录下多了struts