读取文本每隔三秒往redis中存入数据,定时器如何使用? 5C
现在做一个小demo,读取文本txt(文本是分行的),需求是读取到之后每隔三秒钟往redis中存储一条数据,我现在已经做了读取txt文本,并且输出为list集合,卡到这步了,想用定时器不知道怎么写,有没有大神们贴贴代码!!!!!

4个回答

1、你可以使用java中提供的Timer

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
                System.out.println("hello world!");
        }
}, 0, 3000);

2、你可以使用带有调度的线程池

ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
scheduledExecutorService.scheduleAtFixedRate(() -> {
        System.out.println("hello world!");
}, 0, 3, TimeUnit.SECONDS);

3、你可以使用上面几位同学spring提供的定时任务
3.1 使用注解

@Component
public class JobTask {

//    http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html
//    @Scheduled(cron = "* * * * * *")
//    每天的早上9点42分执行一次
    @Scheduled(cron = "0 42 9 * * *")
    public void job() {
        System.out.println("++++++++++++++++++++++++++");
        System.out.println(new Date());
    }

}

<!-- 定时任务 -->
<task:annotation-driven />

Date sequence generator for a Crontab pattern, allowing clients to specify a pattern that the sequence matches.
The pattern is a list of six single space-separated fields: representing second, minute, hour, day, month, weekday. Month and weekday names can be given as the first three letters of the English names.
Example patterns:
* "0 0 * * * *" = the top of every hour of every day.
* "*/10 * * * * *" = every ten seconds.
* "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
* "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
* "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
* "0 0 0 25 12 ?" = every Christmas Day at midnight

3.2 直接使用配置文件

<!-- 启用spring定时任务 -->
<task:annotation-driven scheduler="youScheduler"/>
<task:scheduler id="youScheduler" pool-size="1"/>
<task:scheduled-tasks>
        <task:scheduled ref="task" method="cronInvoke" cron="0/3 * * * * ?"/>
</task:scheduled-tasks>
<task:executor id="executor" pool-size="10" keep-alive="30" queue-capacity="20480" rejection-policy="ABORT"/>

4、使用第三方的工具cron4j

public class Main {

    public static void main(String[] args) {
        if (args.length != 1) {
            System.out.println("仅需要一个日志文件的路径");
            return;
        }
        final File logFile = new File(args[0]);
        if (!logFile.exists()) {
            try {
                boolean flag = logFile.createNewFile();
                if (!flag) {
                    System.out.print("日志文件无法创建!");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        Scheduler s = new Scheduler();
        // 20:03分启动一下
        s.schedule("03 20 * * *", new Runnable() {
            public void run() {
                try {
                    String log = new Date().toString();
                    Files.append(log, logFile, Charset.defaultCharset());
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // do something

            }
        });
        s.start();
        try {
            Thread.sleep(Long.MAX_VALUE);
        } catch (InterruptedException e) {
        }
        s.stop();
    }

}

定时任务本身来说是一个很常见的事情,对于和数据处理下游项目,定时任务可能会存在几十个甚至更多。上面的集中做法只适用于单机定时任务,对于分布式的项目来说定时任务就需要单独的集中式任务调度平台处理了。
鉴于你的demo性质,就不要使用spring的定时任务了,建议使用带有调度能力的线程池,这和你的需求比较契合。

可以直接用spring的定时任务,看这里https://www.cnblogs.com/zjdxr-up/p/7778135.html
定时任务触发的时间改为3秒执行一次
@Scheduled(cron = "0/2 * * * * ?") //每隔5秒执行一次定时任务
public void consoleInfo(){
System.out.println("定时任务");
}
在consoleInfo的方法体里面添加你上面读取txtd的文本,再掉调用redis的方法。把List 放到redis中,.
redis整合spring 看这里https://blog.csdn.net/qq_33556185/article/details/79774908

PLANET_08
PLANET_08 大神你好 ~能写一个每隔三秒读一次的代码吗·
11 个月之前 回复

用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费。

使用 有序集合
思路: 使用sorted Sets的自动排序, key 为任务id,score 为任务计划执行的时间戳,这样任务在加入sets的时候已经按时间排序,这样每隔1s(或者其他间隔)去取出sets顶部的数据,小于当前时间的可以通过pop取出来然后去执行。

redis模拟
127.0.0.1:6379> zadd cron 10001 task1
(integer) 1
127.0.0.1:6379> zadd cron 9001 task2
(integer) 1
127.0.0.1:6379> zadd cron 29001 task3
(integer) 1
127.0.0.1:6379> ZRANGE cron 0 -1 withscores
1) "task2"
2) "9001"
3) "task1"
4) "10001"
5) "task3"
6) "29001"

假设当前的时间戳是 15000

127.0.0.1:6379> ZRANGEBYSCORE cron -inf 15000
1) "task2"
2) "task1"
127.0.0.1:6379> ZREM cron task2
(integer) 1
127.0.0.1:6379> ZREM cron task1
(integer) 1
127.0.0.1:6379> ZRANGE cron 0 -1 withscores
1) "task3"
2) "29001"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
上面的测试直接把小于当前时间戳的所有任务都做了一遍,会有些bug,例如找个定时监测程序挂了2天, 对于某些任务可能有效期只有那么10分钟,重新启动定时监测程序,就会把过期任务也做了一遍, 那么我们选取任务的时候范围要更精确一些。

如果当前时间戳是 29100 可以取到 task3
127.0.0.1:6379> ZRANGEBYSCORE cron 28500 29100
1) "task3"

如果当前时间戳是 30600 就无法取到 task3, 注意对过期任务的清理
127.0.0.1:6379> ZRANGEBYSCORE cron 30000 30600
(empty list or set)
1
2
3
4
5
6
7
利用键过期通知
思路: reids 2.8 有一种 键空间通知的机制 Keyspace Notifications (强烈推荐看一遍), 允许客户端去订阅一些key的事件,其中就有 key过期的事件,我们可以把 key名称设置为 task的id等标识(这种方式value的值无法取到,所以只用key来识别任务),expire设置为计划要执行的时间,然后开启一个客户端来订阅消息过期事件,然后处理task。

需要更改redis配置,注意版本要在2.8.0以上, 如果没有这个key 请添加上,如果有请更改为下面这样

notify-keyspace-events Ex
1
重启redis,第一个窗口, 开启订阅

liuzhizhi@lzz-rmbp|redis_test # redis-cli --csv psubscribe '__keyevent@0__:expired'
Reading messages... (press Ctrl-C to quit)
"psubscribe","__keyevent@0__:expired",1
"pmessage","__keyevent@0__:expired","__keyevent@0__:expired","task1"
"pmessage","__keyevent@0__:expired","__keyevent@0__:expired","task2"
1
2
3
4
5
第二个窗口 设置key

127.0.0.1:6379> set task1 xx
OK
127.0.0.1:6379> EXPIRE task1 5
(integer) 1
127.0.0.1:6379> set task2 xx
OK
127.0.0.1:6379> EXPIREAT task2 1469525560
(integer) 1
1
2
3
4
5
6
7
8
当key过期的时候就看到第一个窗口的通知了,订阅的key keyevent@:expired 这个格式是固定的,db代表的是数据库的编号,由于订阅开启之后这个库的所有key过期时间都会被推送过来,所以最好单独使用一个数据库来进行隔离。

小结

以上就是使用redis来处理定时任务的两种思路,常用的编程语言应该都比较容易实现。

作者:orangleliu
来源:CSDN
原文:https://blog.csdn.net/orangleliu/article/details/52038092
版权声明:本文为博主原创文章,转载请附上博文链接!

caozhy
贵阳老马马善福专门编写代码的老马就是我! 抄袭也就算了,连行号都没有去掉。
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎么往线性表中读取存入数据???
怎么实现往线性表中存入数据,还有读取,如何将一个线性表逆置,请哪位高手支招,谢谢。。。
读取文本.EFZ文件数据,存入数据库
9.13-9.14小任务编写Java程序,将AI201608271800.EFZ文件进行解析,并将解析后的数据进行入库(入至Oracle中): 主要技术点:读取.efz文件并每俩行取一次数据存入数据库。public static void main(String[] args) throws IOException { System.out.println("数据扫描插入中----
如何读取文本数据?
我是VC初学者,求如何读取文本数据具体操作步骤,能让我看懂的,Excel的话不要ODBC,ADO之类的数据库。。。rnrn具体步骤。。。rn谢谢。。。
往SQL存入时间格式数据??
怎么获取当前时间更新到数据库??rnrn我的sql语句是这样写的 string sql1="update datatable set tabledate="+System.DateTime.Nowrn这样就写不进sqlrnrnstring sql1="update datatable set tabledate="+System.DateTime.Now.ToShortDateString()rn这样能更新数据库 不过上面日期显示不对是 1905-6-13 严重不对啊
往数据库里存入时间问题
我使用的是sql server2008rnrn做的是一个实验课程预约系统,当学生提交预约请求,就用new Date()得到当前时间,然后存到数据库中的 预约时间statusTime字段中,字段类型为datetimernrn因为new Date()为java.util.Date 所以存数据数据库要转换成java.sql.Date rnrnjava.sql.Date d = new java.sql.Date(这里从请求对象中,拿到时间,然后getTime())rnrn这样存到数据库中。rnrn问题是,数据库中日期都有,但是时间都变成0了。没有时间。rnrn谢谢。
C#中Redis的存入和读取示例
Redis的.net支持库相关应用
Java 读取大文件CSV,然后将数据存入redis中
前些天,项目需要用到从csv文件中读取数据,然后将数据存入redis中。我看了一下csv文件的大小,1G多。这个虽然算不上大文件,但是考虑到以后如果数据量增加可能到2G、3G、甚至更大,所以就不打算用普通读取文件的方式去读取这个文件。因为普通读取文件是将文件全部加载进内存,然后再内存中读取。这种情况下,文件比较小那还好说,如果文件大了,就会占用大量的内存。 出于这样的考虑,我决定用读取大文件的方...
PB 往文本中读取和写入超过32K(32765B)的数据
我们可以运用PB实现 往文本中读取和写入超过32K(32765B)的数据的代码。
php如何每隔几秒读取一次数据
项目的主要功能是利用编写注册好的comrn通过php调用com接口进行远程服务器的连接和读取数据rn并把数据展示到网页的功能。rn$com->connect(server);rn$com->read();rnrn现在通过window.setInterval和ajax调用php文件已经可以实现每隔固定时间进行读取rn但是使用此方法有个严重的问题,每次read之前都要connect服务器rn不知道有没有什么方法可以只connect一次以后只需要read就可以了。rnrn之前尝试使用单例模式也没有作用。 rn
数据存入读取txt文件。。。。。。
[img=http://hi.csdn.net/attachment/201103/25/3751566_1301042476UkAa.jpg][/img]rnrnrn按上面一样存入txt ,rn读取的时候读一行输入放入数组中。
EEPROM数据存入与读取
各种类型的数据存储在EEPROM的时候注意事项: 利用AT24C04存储与读取各个类型的数据操作 一种方法是直接存储 一种方法是间接存储
使用定时器往数据库中写数据
下面的程序是每一秒往数据库中添加一条当前时间的记录rnrnpublic partial class Form1 : Formrn rn private const string CONNSTRING = @"Data Source=.\SQLEXPRESS;AttachDBFilename =|DataDirectory|\Datetime1.mdf;Integrated Security=True;User Instance=True"; rnrn public Form1()rn rn InitializeComponent();rn timer1.Start();rn rnrn private void timer1_Tick(object sender, EventArgs e)rn rn SqlConnection conn = new SqlConnection(CONNSTRING);rn conn.Open();rn SqlCommand cmd = conn.CreateCommand();rnrn cmd.CommandText = "Insert into datetime1(DT) values(@DT)";rn cmd.Parameters.AddWithValue("DT", DateTime.Now);rn rn cmd.ExecuteNonQuery(); rn cmd.Dispose();rn conn.Dispose();rn rn rnrn报错rnrn
C++如何格式化读取文本中的数据?
现在“1.txt”文本中的数据如下:rn“rn这是数据:rn1 0.111111rn2 0.324823rn3 0.432423rn数据结束。rn”rn这样的数据,如何读取每一行的数据,然后将每一行的数据的两个数据放入两个向量中。rn文本中如上述,有文字,但不需要文字,只需要提取出数据。rn格式化输入的话,用fscanf吗?或者是其他?
如何读取文本中指定字段的数据?
请教一个问题rn如何读取文本中指定字段的数据?rn例如文本中有如下字段rn姓名 年龄 籍贯 性别rn张三 14 重庆 男rn李斯 45 山西 男rn其中分割符号为空格,现在我只需要姓名和籍贯两个字段的信息,然后导入到stringgrid中,该怎么实现?
如何读取TEXTBOX中的文本数据。
例如:TEXTBOX中写入了:AIRCRAFT CLEARED TO LAND。rn读取其中各单词,根据各单词来调用指令。
如何读取word中全部文本数据
从word中以文本的形式读取全部数据(也可以用指定分段的形式,一段一段读出处理,达到处理全部数据的方法),如果是多媒体如图片,视频等,则跳过。rn 求大侠指点指点,如果有相关代码更好
如何读取和输出文本数据
有个5列70行的文本数据,如何通过C++来读取
如何往数据库中存入代码 (sql)
rn 事先我用 VS 2005 C#写了个界面 可以往SQL里面插数据. 存入数据的语句 是用 string builder rnrnsb.Append(",[RequestTypeName]='" + TypeName + "'"); rnrnrn这样的话如果 TypeName 这个存入的文本也是 代码的话,就会引发一些错误。 例如 TypeName 文本代码中的引号 和 sb 语句的引号抵消 导致报错。rnrn有什么方法可以解决吗?
如何往中存入查询出来的结果集?
如何往中存入查询出来的结果集?rn即 把图中的北京 rn上海 数据换成从数据库中的得到的数据???
////////////////////读取文本中的行数据//////////////////////
///////////////////////读取文本中的行数据//////////////////
读取txt中的数据和文本
有txt文件里面的数据如下:rnrn[code=text]rnT: 8rnp: 30.00 22.00 42.00 14.00 15.00 12.00 12.00 40.00rnc: 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00rnh: 5.00 5.00 5.00 5.00 5.00 5.00 5.00 5.00rns: 100.00 100.00 100.00 100.00 100.00 100.00 100.00 100.00rnd: 9.00 12.00 9.00 25.00 9.00 20.00 20.00 25.00rnrn[/code]rnrn想将里面的每一行数据分别读取(只存数字,不存字符串),并保存到6个数组里,请问大神们如何编写?最好用c++rnrn
读取文本数据到矩阵中
如题,我想将下图中用圈画出来的数据读取到矩阵中去rn[img=https://img-bbs.csdn.net/upload/201701/02/1483343644_669061.png][/img]rn其中代码部分如下:rn[code=c] int i=1; //从文本中第二行开始读取rn int j=5; //从文本中第六列开始读取rn int k=1;rn float stu[SIZE][6]; //定义一个SIZE*6的矩阵rn FILE *fp;rn fp=fopen("LGKT.txt","rt");rn for (j=5;j<11;j++)rn rn for (i=1;i
处理数据后如何再存入文本?
using System; rn rnnamespace ConsoleApplication3 rn rn /// rn /// Class1 的摘要说明。 rn /// rn class Class1 rn rn /// rn /// 应用程序的主入口点。 rn /// rn [STAThread] rn static void Main(string[] args) rn rn String temp; rn rn System.IO.StreamReader myReader = new System.IO.StreamReader(System.IO.File.OpenRead("C:\\1.txt")); rn rn temp=myReader.ReadToEnd(); rn rn myReader.Close(); rn rn rn String[] strArray = temp.Replace(Environment.NewLine,"").Split(','); rn int n=strArray.Length-1; rn int na=n/11-9; rn for(int h=0;h<=na;h++) rn rn for(int i=h+1;i<=9+h;i++) rn rn for(int i1=i*11;i1<=i*11;i1++) rn rn int int00=int.Parse(strArray[i1-11]); rn int int01=int.Parse(strArray[i1-10]); rn int int02=int.Parse(strArray[i1-9]); rn int int03=int.Parse(strArray[i1-8]);rn int int04=int03+int02+int01;rn int int05=int04/10;rn int int06=int02+int03;rn int int07=int.Parse(strArray[i1-7]); rn int int08=int.Parse(strArray[i1-6]); rn int int09=int.Parse(strArray[i1-5]); rn int int10=int.Parse(strArray[i1-4]); rn int int11=int.Parse(strArray[i1-3]); rn int int12=int.Parse(strArray[i1-2]); rn int int13=int.Parse(strArray[i1-1]); rn int [] ywa=new int []int07,int08,int09,int10,int11,int12,int13;rn Console.WriteLine(int00.ToString("00") + rn "," + int01.ToString("00") + rn "," + int02.ToString("00") + rn "," + int03.ToString("00") + rn "," + int04.ToString("00") + rn "," + int05.ToString("00") + rn "," + int06.ToString("00") + rn "," + int07.ToString("00") + rn "," + int08.ToString("00") + rn "," + int09.ToString("00") + rn "," + int10.ToString("00") + rn "," + int11.ToString("00") + rn "," + int12.ToString("00") + rn "," + int13.ToString("00")); rn rn rn rn rn rn rn rn rn rn//////////////////////rn如何把处理好的数据存入2.txt
请问如何文本中的数据存入多维数组中??急!!!
一个文本文件(*.txt),里面内容以|号分割,如:rngood|ban|sdasadasrnfood|fan|sdfsdfrngod|bank|dfasfarnrn现在想把每个字段读出,赋给多维数组rn还有如何获得当前行数。rn我是个初学者。请给位大侠,指点。rn最好,能告诉我详细代码。谢谢rnrnrn
使用redis作为缓存,数据还需要存入数据库中吗?
https://blog.csdn.net/Ideality_hunter/article/details/77621643
读取文本中文本
我要读取我用程序写在文本中的字符串,写入时在每一行末尾加了 \r\nrn当读取第二行时先获得第一行的长度 iLenth,rn再flog.Seek(iLenth, CFile::begin);//flog是CStdioFile类型rn TCHAR *szSeverIndex = new TCHAR[2];rn flog.ReadString(szSever, 3);//读取2个字符rn但我读取不到正确结果,只有当在上面的代码前加上 iLenth = iLenth + 2;结果才正确,为什么?
关于从txt文件中读取 和 存入数据
using (StreamWriter sw = new StreamWriter("1.txt")) rn rn sw.WriteLine("asdads");rn sw.WriteLine("aswerwerewrwerwerwedads");rn sw.WriteLine("asdadwrewerwers");rn sw.WriteLine("a2s");rn sw.WriteLine("asadsaddads");rn rn我把这段代码 写到一个按钮事件里rn点按钮的时候 自动创建了一个1.txt文件rn可是 我再次点击的时候 都新键一个 然后插入这些rn我想要实现的 是rn点 按钮的时候 先检查 如果1.txt不存在 就 建立一个1.txt 如果存在 就 向里 存字符rn在此点击的时候 继续向 下一行 存数据rnrn还有 我想从 txt文件里 读一行字符rn在次点击的时候 读取下一行 字符
handler三秒轮播数据
//activity_main<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wi
以将文本数据存入一变量中,如何读出
比如:2005/10/22 哈哈 10:00AM 2005/10/21 西西 1:00PM ………………rnrn 如何单独的读取出10:00PM 1:00PM 这几个类似字符
读取Excel表格数据存入mongodb数据库
@Test public void readExcel() throws IOException, BiffException { // 读取xls文件 InputStream ins = new FileInputStream("D:/lesiea/文档/course.xls"); // 设置读文件编码 WorkbookSettings setEncode = n
怎么往数据库里存入日期时间?
java.sql.Date是只能存入日期,怎么把时间追加上?
数据存入和读取的问题 myaql
高手们 下边的save()这样写可以存入数据库吗? 不太会 rnrn另外,读取数据时,读取出的时间都是如2010=03-19 05:02:45[color=#FF00FF].0[/color] 这样的rn数据库history中发现有这么一句select `TABLE_NAME` from `[color=#FF0000]INFORMATION_SCHEMA`.`TABLES[/color]` where `TABLE_SCHEMA` = 'nms_db' and `TABLE_TYPE` = 'BASE TABLE'rn这是怎么一回事 我想让时间正常显示 不要那.0 怎么搞?rnrnCREATE TABLE `news` [color=#FF0000]//<---------数据库[/color]( rn `nid` int(10) NOT NULL auto_increment, rn `title` varchar(20) NOT NULL, rn `content` mediumtext NOT NULL, rn `author` varchar(20) NOT NULL, rn `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, rn PRIMARY KEY (`nid`) rn ) ENGINE=InnoDB DEFAULT CHARSET=gbk rnrnrnpublic void save(NewsInfo s) [color=#FF0000]//《-----------保存记录[/color]rn rn DataBase db=new DataBase();rn PreparedStatement pstmt=null;rn String sql="insert into news values(null,?,?,?,null)";rn pstmt=db.getPreparedStatement(sql); rn tryrn pstmt.setString(1,s.getTitle());rn pstmt.setString(2,s.getContent());rn pstmt.setString(3,s.getAuthor());rn pstmt.executeUpdate();rn catch(SQLException e)rn e.printStackTrace();rn rn rn rn
Android中SQLite的使用(简单数据存入与读取)
一,概要 先看demo,最后又讲解。 二,小demo      效果图:                 实现:                视图层:         testsqlite.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l
js中,设置定时器 每隔几秒刷新一次页面数据
页面加载进来,查询  然后设置定时器 每隔五秒刷新一次页面数据 fnSearch(); var interval3=setInterval(function(){      fnSearch(); },5000);     function fnSearch(){      searchjson.search=$(&quot;.iptsearch&quot;).val();     $.ajax({       ...
如何往oracle中写入大文本
我有一段文章,往oracle中写入,但在网页上只显示一部分,(数据库中字段类型为rnvarchar2 大小为4000)。文章是从网页上拷的,文章中带有html标记,但我认为这些标记也可认为是字符。请高手赐教,谢谢!最好带有源码。(我用的是asp.net和rn c#语言)rn
读取txt文本数据
网络编程中,从指定的txt文本中读取自己所需要的数据。
读取文本数据问题!
我有个文本记录了一系列的数据,但中间有#注释,我该怎么读取?rn比如有1000行有效数据,但中间插入了很多注释信息: rn #点数rn 1000rn 123.45 2.545rn 25.45486 235.214 rn #说明-------------------注释没有规律rn 35.44 555.48rnrn该怎么识别#行呢,请大虾提示,谢谢!
C++读取文本数据
有这么一组数据rnrn116 98 133 137 129 120 rn164 105 168 180 178 141 rn73 80 184 250 267 188 rn329 333 288 287 312 173 rn259 262 290 258 271 232 rn565 1624 1426 1234 749 123rnrn如何读取rnrn98 133 137 129 rn105 168 180 178 rn80 184 250 267 rn333 288 287 312 rn262 290 258 271 rn1624 1426 1234 749 rnrn哭请大家帮忙,写个程序rn
如果读取文本数据,
如何读取一个TXT里的数据,rn 有6列,每列之间以空格符隔开,有若干行小于60,直到读完为止rn读的每一列数据放到一个数组里。
C#读取文本数据
C#读取文本数据
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表