问题 liu bo · 八月 19, 2024

1.我在java中发布了一个服务提供给调用,postman中可以请求解析出数据

请求信息如下:

POST /uploadPersonExcel HTTP/1.1
Host: localhost:8017
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
cache-control: no-cache
Postman-Token: 1c23edfe-1e83-44c6-8f91-e06bccfd4af3

Content-Disposition: form-data; name="file"; filename="C:\Users\elite\Desktop\personinfo.xlsx

------WebKitFormBoundary7MA4YWxkTrZu0gW--

2.Ensemble中请求代码如下:

0
0 0
文章 liu bo · 七月 7, 2024 1m read

问题:锁管理里边包含很多WorkQueueMgr的锁,我想批量去移除,比较多,一个一个移除比较慢

解决:查询所有的进程,过滤routine不包含某个routine的进程,进行终止

代码:

ClassMethod BatchTerminalProcessQuery()
{     Set Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
Rset.Execute()
While Rset.Next() {
   CurrentLineAndRoutine=""
   &sql(SELECT CurrentLineAndRoutine INTO :CurrentLineAndRoutine FROM %SYS.ProcessQuery WHERE Pid = :Rset.GetData(1))
   continue:CurrentLineAndRoutine'[".WorkQueueMgr"
   CurrentLineAndRoutine,!
   pid=Rset.GetData(1)
   sc= $System.Process.Terminate(pid)
   sc,!
   ;w $ZU(4,pid,1)
}
Rset.Close()
}

0
0 0
文章 liu bo · 九月 21, 2023 4m read

前言

对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图: image

上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。

思路

平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图:

image 那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一:

里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个 (is-a) 关系

那我们可以自定义数据类型,继承%Library.String,这样子类继续使用父类的参数,还可以自定义自己的参数。此处以字符串为例,其他的数据类型一样的原理。 自定义类型就为String.

实现

  1. 自定义数据类型

`

1
1 169
文章 liu bo · 九月 19, 2023 4m read

前言 {#1}

ensemble里边实现分页比较麻烦,毕竟对于sql的书写比较麻烦,单表的查询相对简单,对于多表的关联查询单纯的sql不好查询,我们使用sql进行先查询出主表满足条件的rowId,在根据根据满足条件的rowid进行遍历取值。

思路

我们先取对比一下其他数据库实现的原理。

2
0 308
问题 liu bo · 九月 27, 2022

*** Recovery started at Wed Sep 28 08:14:28 2022     Current default directory: d:\dhc\devsoftware\ensemble\mgr     Log file directory: d:\dhc\devsoftware\ensemble\mgr\     WIJ file spec: d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJRecovering local (d:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ) image journal file...Starting WIJ recovery for 'd:\dhc\devsoftware\ensemble\mgr\CACHE.WIJ'.  0 blocks pending in this WIJ.WIJ pass # is 0.Starting fast WIJ compareFinished comparing 24 blocks in 0 secondsExiting with status 3 (Success)09/28/22-08:14:28:644 (15060) 2 Failed to allocate 8560MB shared memory

2
0 187
问题 liu bo · 九月 12, 2022
//迭代取值
IRISIterator subscriptIter = irisNative.getIRISIterator("^liubo.clazz.personD");
System.out.println("================迭代开始===================");
while (subscriptIter.hasNext()) {
    String subscript = subscriptIter.next();
    //此处怎么获取此节点的字符串进行解析呢,另外java可以直接访问ensemble的global么

    System.out.println(node);

}
3
0 144