开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Spring Batch 配置一个步骤(Step)

如我们在 域语言(Domain Language)章节中讨论的内容一致,一个 步骤(Step)是一个独立封装了执行顺序的批量作业(Job),并且包含有用于定义和控制一个批量作业的所有独立信息。 针对这个 Step 的定义必然是非常模糊的,因为任何一个给定步骤的内容都会被要求开发人员在编写一个作业(job)的时候被描述。 一个步骤(Step)可以根据开发人员的需求被开发为简单或者复杂。 一个简单的步骤可能就仅仅是从文件中载入数据然后写入到数据库中,可能并不需要太多的代码或者甚至都不需要代码(这个取决你需要的实现)。一个步骤(Step)也可能会比较复杂,这是因为你将要在数据处理的过程中实现一些复杂的业务规则,如下图所示: 图片 1. 步骤(Step)   https://www.cwiki.us/display/SpringBatchZH/Configuring+a+Step

2020年02月23日 0Comments 1050Browse 0Like Read more
Computer Science

Spring Batch 在默认情况下的任务执行

在默认情况,如果你对 Spring Batch 不进行配置的话。 Spring Batch 将会对所有存在的作业(Job)进行执行。 考察项目:https://github.com/cwiki-us-spring/cwiki-us-spring-batch-examples 你可以 Check out 到本地后运行: gradlew :service:bootJar 将会对项目进行编译,程序将会输出: C:\WorkDir\Repository\Spring\cwiki-us-spring-guides\cwiki-us-spring-batch-examples>gradlew :service:bootJar > Configure project : You are using one or more deprecated Asciidoctor Gradle plugin features. To help with migration run with --warning-mode=all. Repository https://jcenter.bintray.com/ replaced by https://maven.ossez.com/repository/internal. BUILD SUCCESSFUL in 10s 6 actionable tasks: 2 executed, 4 up-to-date C:\WorkDir\Repository\Spring\cwiki-us-spring-guides\cwiki-us-spring-batch-examples> 然后你可以运行 java -jar service/build/libs/service.jar 你会发现没有作业被执行 程序输出如下: C:\WorkDir\Repository\Spring\cwiki-us-spring-guides\cwiki-us-spring-batch-examples>java -jar service/build/libs/service.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.4.RELEASE) 2020-02-18 15:32:38.016 INFO 28560 --- [ main] com.ossez.batch.service.Application : Starting Application on USWTWNB47141 with PID 28560 (C:\WorkDir\Repository\Spring\cwiki-us-spring-guides\cwiki-us-spring-batch-exam ples\service\build\libs\service.jar started by yhu in C:\WorkDir\Repository\Spring\cwiki-us-spring-guides\cwiki-us-spring-batch-examples) 2020-02-18 15:32:38.023 INFO 28560 --- [ main] com.ossez.batch.service.Application : No active profile set, falling back to default profiles: default 2020-02-18 15:32:40.344 INFO 28560 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2020-02-18 15:32:40.353 WARN 28560 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=org.hsqldb.jdbcDriver was not found, trying direct instantiation. 2020-02-18 15:32:40.854 INFO 28560 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-1 - Driver does not support get/set network timeout for connections. (feature not supported) 2020-02-18 15:32:40.866 INFO 28560 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2020-02-18 15:32:42.711 INFO 28560 --- [ main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: HSQL 2020-02-18 15:32:43.137 INFO…

2020年02月18日 0Comments 924Browse 0Like Read more
Computer Science

Spring Batch 小任务(Tasklet)步骤

Chunk-Oriented Processing不是处理 step 的唯一方法。 考虑下面的一个场景,如果你仅仅需要调用一个存储过程,你可以在 ItemReader 中实现这个调用,然后在存储过程完成调用后返回 null。这种设计看起来不是那么自然也不是非常优美,因为你的批量设计中甚至都不需要实现 ItemWriter。针对这种情况,Spring Batch 为你提供了 TaskletStep 选项。 TaskletStep 是一个简单的接口,这个接口只需要实现一个方法execute,这个方法将会被TaskletStep多次重复的调用,直到这个方法返回 RepeatStatus.FINISHED 或者抛出异常来表示调用失败。 Tasklet 的每一次调用都会包含在事务中(Transaction)。Tasklet 的实现(implementors)可以调用一个存储过程,一个脚本或者一个简单的 SQL 更新脚本。 针对我们的实践中,我们可以使用 Tasklet 来执行一个 FTP 的任务。 将我们产生的中间文件上传到不同的 FTP 服务器上,你可以在实现中指定不同的服务器配置参数,这样更加有利于代码的重用。 为了能够创建一个 TaskletStep,Bean 需要传递一个 tasklet 方法到构造器(builder),这个 tasklet 方法需要实现 Tasklet 接口。 当你构建 TaskletStep 的时候不要调用 chunk。 下面的示例代码显示了一个在 Step build 中构建一个简单的 tasklet。 @Bean public Step step1() {     return this.stepBuilderFactory.get("step1")                 .tasklet(myTasklet())                 .build(); } 如果你的 tasklet 实现了 StepListener  接口的话,TaskletStep 将会自动将 tasklet 注册成为一个 StepListener。 TaskletAdapter 与 ItemReader 和 ItemWriter 接口的 adapters一样。Tasklet  接口包含的实现也允许能够通过已经存在的类使用 TaskletAdapter 来将自己进行注册。 例如,你希望使用一个已经存在的 DAO 来更新记录集上的标记的时候,你可以使用 TaskletAdapter 来进行实现。 使用 TaskletAdapter  能够让你的 DAO 可以被 Spring Batch 的 TaskletStep 调用而不需要让你的 DAO 都实现 Tasklet 的接口。 如下面的示例代码: @Bean public MethodInvokingTaskletAdapter myTasklet() {     MethodInvokingTaskletAdapter adapter = new MethodInvokingTaskletAdapter();     adapter.setTargetObject(fooDao());     adapter.setTargetMethod("updateFoo");     return adapter; } Tasklet 实现(Implementation)示例 在主批量作业开始之前,可能需要很多其他的批量作业必须完成,这样以便于主批量作业能够获得必要的资源和在完成后释放资源或者进行清理。 例如我们遇到下面的使用场景,一个批量作业需要大量的对文件进行交互和使用,通常来说需要在文件被上传到其他服务器上后删除本地产生的临时文件。 下面的示例就是一个 Tasklet 的实现,这个Tasklet 的实现能够完成上面的交互要求(文件来自 Spring Batch samples project 示例程序)。 public class FileDeletingTasklet implements Tasklet, InitializingBean {     private Resource directory;     public RepeatStatus execute(StepContribution contribution,                                 ChunkContext chunkContext) throws Exception {         File dir = directory.getFile();         Assert.state(dir.isDirectory());         File[] files = dir.listFiles();         for (int i = 0; i < files.length; i++) {             boolean deleted = files[i].delete();             if (!deleted) {                 throw new UnexpectedJobExecutionException("Could not delete file " +                                                           files[i].getPath());             }         }         return RepeatStatus.FINISHED;     }     public void setDirectoryResource(Resource directory) {         this.directory = directory;     }     public void afterPropertiesSet() throws Exception {         Assert.notNull(directory, "directory must be set");     } }   Tasklet 处理程序实现了将给定目录中的所有文件进行删除。我们应该通知 execute  方法,这个 Tasklet 应该只被执行一次。 所有相关执行的操作需要在 Step 中进行设置,请参考下面有关这个 Tasklet 的设置: Java 配置 @Bean public Job taskletJob() {     return this.jobBuilderFactory.get("taskletJob")                 .start(deleteFilesInDir())                 .build(); } @Bean public Step deleteFilesInDir() {     return this.stepBuilderFactory.get("deleteFilesInDir")                 .tasklet(fileDeletingTasklet())                 .build(); } @Bean public FileDeletingTasklet fileDeletingTasklet() {     FileDeletingTasklet tasklet = new FileDeletingTasklet();     tasklet.setDirectoryResource(new FileSystemResource("target/test-outputs/test-dir"));     return tasklet; }   https://www.cwiki.us/display/SpringBatchZH/TaskletStep

2020年02月17日 0Comments 1046Browse 0Like Read more
U.S.

美国的医疗水平领先中国多少

领先多少不好说,但是账单绝对是遥遥领先,并且绝望的那种。 中国医生的技术都是被逼出来的,在美国也有很多过度医疗的问题,很多东西容易把人都搞晕了。 毕竟医疗涉及到太多学科了,不是说领先和落后一句话就能说清楚的。 在基因工程,生物制药方面我们确实落后很多,如果是个手术啥的,我们医生手艺绝对不差。

2020年02月17日 0Comments 869Browse 0Like Read more
U.S.

美国用信用卡多还是用现金多

各种卡,不一定全都是信用卡,也可能是 Debit 卡。 用现金的情况很少,除开中国城这些地方,他们喜欢用现金,原因主要是他们不想纳税。 很多中餐馆都说 Cash Only,一些大的或者还可以的都收卡。   现金主要是放身上应急用的,免得到时候一分钱都没,也挺麻烦的,基本上放个几十不到 100 就差不多了。万一被抢了,钱给别人拿走就行,怕是你一分钱没用,抢匪恼羞成怒,好歹别人也是冒了很大风险的,对吧。

2020年02月17日 0Comments 861Browse 0Like Read more
Computer Science

2020 现在常用的java框架有哪些

Spring 全家桶有没有很方便?啥都给你了。 Java 中的框架用的多的就那么几个,很多框架一般上来说不管有多牛X ,基本上你不一定会用到你的项目中。主要原因是技术选型和可维护,可扩展。 现在开发老的 J2EE 基本上不怎么搞了,多是搞微服务这种的,因为好部署,好延伸,好扩展。 就 Spring 全家桶,吃透了什么都能做好。 数据层:Hibernate 和 Mybatis,Mybatis 感觉比较有优势,Hibernate 有点老,有点笨重了。 持续构建:Maven, Gradle 其他的什么框架呀,日志呀,缓存呀,啥的,你用哪个顺手就用哪个,都差不多。

2020年02月17日 0Comments 958Browse 0Like Read more
U.S.

美国地产销售合同中的附录(Addendum)

中文标题【销售合同中的附录】 Addendum(附录)你有可能会遇到也有可能不会遇到。 这个文书的主要用途是针对已经生效的合同进行某些修改,比如说延长交付的时间,因为某些原因可能需要对合同进行修改。 因为对合同进行修改我们不会也不可能在老的合同上将合同的内容进行删除或者修改然后再双方签字。我们这个时候就需要使用 Addendum,更加需要修改合同的一方进行起草,然后买方和买方同时签字后才能生效,如果任何一方不签字是不会生效的。 针对每一个州的法律文书不同,这个也有一些差异,但是绝大部分情况都是大同小异。 不同州的 Agent 基本上都会拷贝使用 Realtor 提供的标准样式进行修改。 可能的情况 例如你可能需要在下面的情况中让双方重新签署 Addendum: 将一个买家/买家的名字添到合同中,或者从合同中进行删除 This addendum removes ****** from the purchase and sales agreement. 针对 Home Inspection 要求卖家提供的总计 Credit Seller to contribute $****** total towards the buyers prepaids, interest, closing costs to include points, buy downs, brokerage fees and other allowable fees. 针对 Home Inspection 可能要求的分项要求 Seller to repair/replace window with broken prior to closing or credit buyer $****** towards buyers prepaid points/closing costs. Buyer is requesting $****** towards their prepaid points/closing costs due to paint. 延长交付时间 Buyer and seller are agree to extend closing date until 2020-**-**. 标准 Addendum NH 使用的标准 Addendum 样式和说明。 需要注意的地方 Addendum 需要双方签字才能生效,单方面签字是没有用的。 基本上你的 Agent 会帮你准备需要修改的内容,在签 Addendum 之前,Agent 之间都会进行一些沟通,然后确定下时间和内容后就会进行修改。 针对 Home Inspection 的内容,可能卖家不会同意你的要求的话,这里的金额可能还会需要进行调整。这个过程也可能会有好几天的时间进行沟通和协调。   https://www.cwiki.us/display/USRealEstate/Addendum+for+Purchase+And+Sales+Agreement

2020年02月12日 0Comments 922Browse 0Like Read more
U.S.

美国房地产经纪人许可证和美国合法身份

在美国生活和工作的人绝大部分都绕不过一个身份的问题。除非你是美国公民,在美国总会有那么些地方因为身份受到限制。 我们收到的很多问题都在问 H1-B, B1/B2 和许可证的考试。 根据我们遇到的一些提问,我们汇总在下面 非 PR 和公民能不能考试 这是很多人都会问的第一个问题。 根据每个州的法律可能会有一些不同,有时候你到你州的网站上也没有说要某种身份才可以考。 根据我的经历,我认为非 PR 和公民是可以考试的。在考试的时候你需要你的 SSN,如果你连 SSN 都没有的话,那就没有办法了。每次考试的校验,在我们州是按照 SSN 和人比对的。 另外在考试之前,可能会有背景调查,一般这个时候会要求你填写 SSN 和驾照的 ID。如果你的州有移民许可的问题,你可以看看背景调查的申请表是否有要你填写你现在的身份是什么。 NH 在背景调查的时候,没有这个选项,只要求提供了 SSN 和 ID。 进入考场,NH 这边是机考,老师会校验你的名字,你可以使用 ID,我相信这个绝大部分人都会有和一张有你名字的信用卡。如果你没有信用卡,如果有你名字的当月水电费账单应该也是可以接受的。然后上机后输入你的 SSN,机器会提示你照相,然后进行考试。 在整个过程中没有任何时间检查到签证。 如果你持有护照,可能他们会检查签证。 考试通过后和执业 当你考试通过后,你需要在 3 个月内联系当地的 Broker 公司,注册成为他们公司的 Agent。 这里可能会有风险,在 IRS 税务里面是没有问题的,但是 USCIS 是否会因为这个行为认定为非法雇佣(我不清楚,也没有 USCIS 的司法解释)。 OPT: 理论上来说 OPT 是没有任何限制的,你可以做行业相关,也可以不是相关的,相对来说比较自由。个人认为是可以考试并且与 Borker 签约的(请咨询你的移民律师)。 H1-B 签证:按照 H1-B 签证的类型,你应该是给特定公司进行专业相关的工作。在这种情况,虽然你和 Broker 公司有关系,但是你并不受雇于 Broker 公司,但是你的提成会从 Borker 公司那里支付(这里会在下面提到)。根据 H1-B 的法律显然是越过了 H1-B 的授权许可。 H4 有 EAD:H4 的 EAD 是无限制的 EAD,因此是没有问题进行执业的。 PR 职业移民排期的 EAD:这里说的是通过职业移民申请的绿卡。请注意我了解的说法是这个时候的 EAD 如果你使用了,就进入排期豁免阶段了,如果你同时持有 H1-B 身份的话,你的 H1-B 会失效,一般来说不到万不得已很多移民律师不建议使用这个时候的 EAD。当然如果你持有这个 EAD 的话,应该也是可以进行执业的。 PR EAD:很多人是婚姻移民,这时候只要入境就会签发 EAD,或者在美国境内结婚了会进行身份调整,这个时候也会发 EAD 卡。一般来说这个 EAD 卡是无限制 EAD 卡。你应该是没有问题进行任何职业的。 PR 到手:无问题。 B1/B2:如果没有 SSN 的话都没有办法进行考试。 执业后纳税 一般经纪公司会在年底提供一个 1099-MISC 表格给你。 这个表格如果你是 H1-B,没有完全自由身份的人会比较危险,因为这个就是明确告诉 USCIS 在今年你有了 H1-B 工作以外的收入。 比如你以个人身份在 ebay 上进行销售超过一定金额数量的话也会收到 1099-MISC 表。 这个是如果任何人有了非雇佣收入,而且1年内在从同一个机构或者个人拿到了超过$600的钱,付钱的机构或者个人需要给收钱人开具的1099表,当然,这个表必须同时给IRS汇报这笔收入。常见的会收到1099-MISC的行为比如给会议审稿,会议付了工资之类的。但是银行偶尔也会发1099-MISC。最出名的就是Citibank,如果通过开Checking拿到了ThankYou Point(TYP),比如Citigold Checking有时候会给5万TYP开户奖励,如果在同一个年度内兑换的这样的Thank You Point的价值超过了600美元,Citi会给1099-MISC表格。和1099-INT里面说的一样,如果是申请信用卡拿到的TYP,无论兑换价值是多少,都不会收到任何的1099表格。 和1099-K一样,因为持有学生签证(F),学者签证(J),和工作签证(H)的人不能有合法的非原雇主工作收入,持有这3种签证的人收到1099-MISC可能会产生一些比较麻烦的后果。 这就是我说的比较风险的地方。 如果你名字下面有成交,你注定今年年底会收到 1099-MISC,USCIS 在你最后申请 PR 的时候会根据你的 SSN 查询收入的时候会明确看到这笔收入,这笔收入是否会被 USCIS 考虑为非法雇佣?我们没有 USCIS 的司法解释,也没有明确的说法,这个就是有比较大风险的地方。 个人认为这个风险还是比较大的。   综合上面的问题的回答就是: 考试应该没有问题,考试过后是否能执业,是否与 Borker 进行注册与你现在的身份有很大关系。 当你的身份有雇佣限制的时候,不建议考试和进行从业。 如果你胆比较小,拿到 PR 后最稳妥,不要因为佣金没有赚到几个,最后弄个非法雇佣。 如果进入排期了 EAD 卡没有雇佣限制,包括自雇都是合法的话,那你就大胆去做吧。   https://www.cwiki.us/pages/viewpage.action?pageId=57933976

2020年02月06日 0Comments 885Browse 0Like Read more
Computer Science

Java Varargs 可变参数使用

Java1.5 提供了一个叫varargs的新功能,就是可变长度的参数。 "Varargs"是 “variable number of arguments”的意思。有时候也被简单的称为 “variable arguments”。 定义实参个数可变的方法:只要在一个形参的"类型"与"参数名"之间加上三个连续的"."(即"...",英文里的句中省略号),就可以让它和不确定个实参相匹配。 以下实例创建了 sumvarargs() 方法来统计所有数字的值。 我们在这里的 Main 方法中添加了 new int[]{10, 12, 33, 7} 4 个参数,实际上你可以在这里持续添加不同的参数,在计算 sum 的方法中都可以根据你添加的参数来进行处理。   GIT 请参考 GitHub 上的源码代码: https://github.com/cwiki-us/java-tutorial/blob/master/src/main/java/com/ossez/lang/tutorial/usecases/VarargsCase.java   SRC package com.ossez.lang.tutorial.usecases; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * variable arguments use case */ public class VarargsCase { private static final Logger logger = LoggerFactory.getLogger(VarargsCase.class); /** * sumVarargs * * @param intArrays * @return */ static int sumVarargs(int... intArrays) { int sum, i; sum = 0; for (i = 0; i < intArrays.length; i++) { sum += intArrays[i]; } return (sum); } /** * Main Function * * @param args */ public static void main(String args[]) { int sum = 0; sum = sumVarargs(new int[]{10, 12, 33, 7}); logger.debug("The Sum of the arrays: {}", sum); } }     OUTPUT 程序运行的输出结果为: 2020/01/27 14:33:52 DEBUG [com.ossez.lang.tutorial.usecases.VarargsCase] - The Sum of the arrays: 62

2020年01月27日 0Comments 1127Browse 0Like Read more
U.S.

在国外买房的手续复杂吗

不是非常复杂。 与国内的流程来说可以说是简单得不要不要的。 下面是我们常常被问到的几个问题: 身份:与你在美的身份无关(不要相信所谓的买房送绿卡,可能有地产项目获得 EB5 的文件,但是需要认真甄别)。 资金:资金来源可能受到审查,对于现金买房可能会受到资金来源的审查,对于电汇入境的购房款,可能会在银行收到汇款后冻结 60 到 120 天,或者要求你提供电汇证明。具体来说只要是合法收入,基本上不会受到太多限制。 合同:合同比较简单,不同州有不同州的要求,请针对你具体所在的州进行了解,但是基本上也不会差得非常多。 Closing:这个就是入住的具体期限。 账单:你需要通知原来的房主将所有的账单进行交割,你重新开户等。

2019年12月06日 0Comments 935Browse 0Like Read more
1…217218219220221…304
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (524)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1