首页
关于作者
阅读记录
友链
Search
1
微内核插件架构风格在skywalking agent 上的实践
363 阅读
2
debian 11 安装nginx 并配置端口映射
341 阅读
3
和chatgpt聊设计
307 阅读
4
开始看《金阁寺》
246 阅读
5
github上star的工程分类记录
202 阅读
不知所云
杂记
书籍摘抄
有点技术
Redis
运维
架构
nginx
byzer
尚未分类
程序人生
与AI聊天
登录
/
注册
Search
标签搜索
nginx
redis
byzer
github
运维
mybatis-plus
王猪
累计撰写
25
篇文章
累计收到
3
条评论
首页
栏目
不知所云
杂记
书籍摘抄
有点技术
Redis
运维
架构
nginx
byzer
尚未分类
程序人生
与AI聊天
页面
关于作者
阅读记录
友链
搜索到
3
篇与
的结果
2023-07-14
深入理解spring batch
深入理解spring batch一个轻量级、全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。概念JobLauncherjob启动器,用于启动jobJobjob接口,默认仅一个实现SimpleJobStepstep接口,一个job中可以有多个Step。其实现较多,也是spring batch中主要扩展、定制的接口。其实现的子类主要主:FlowStep 将一组Step委托给Flow 进行执行。TaskletStep 最简单的Step实现JobStep 将Job包装成一个Step,用Job将不同的Step进行隔离,用于管理Job之间的依赖关系。PartitionStep 使用PartitionHandler对执行进行分区和扩展负载。...JobRepository默认实现为SimpleJobRepository,其包含四个dao操作,其都是以接口的形式暴露出来:JobInstanceDao jobInstanceDao; 任务执行实例资源操作JobExecutionDao jobExecutionDao; 任务执行资源操作StepExecutionDao stepExecutionDao; 步骤执行资源操作ExecutionContextDao ecDao; 执行上下文资源操作Spring Batch 通过JobRepository将JobExecution、StepExecution等运行时上下文、状态进行持久化。JobExecution任务执行,与一个任务实例绑定,当任务的步骤执行时,会动态将一个个StepExecution添加到其中。所以每一个StepExecution都可以通过绑定的JobExecution去获取到所有的StepExecution。StepExecution步骤执行,与每个步骤绑定,同时与JobExecution建立多对一的关系。执行逻辑JobLauncher#run 启动JobjobRepository#getLastJobExecution 获取JobExecution、StepExecution进行校验job.getJobParametersValidator.validate 校验入参jobRepository.createJobExecution 创建JobExecutionjob.execute 进入任务执行BatchMetrics.createObservation 开始任务执行的指标监测listener.beforeJob(execution) 具体任务执行前监听器处理doExecute(execution) 具体任务执行(由子类实现)循环handleStep SimpleJob中循环调用保护方法(由SimpleStepHandler实现)调用step的execute()方法listener.afterJob(execution) 具体任务执行后监听器处理这是一个比较粗略的执行逻辑,从中可以看到有以下扩展点:JobParametersValidator 对任务入参可进行校验JobExecutionListener 可对job的执行前后进行监听处理StepExecutionListener 可对step执行的前后进行监听处理表结构JobInstanceDao -> JOB_INSTANCE表JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSIONJobExecutionDao -> JOB_EXECUTION表JOB_EXECUTION_ID, JOB_INSTANCE_ID, START_TIME, END_TIME, STATUS, EXIT_CODE, EXIT_MESSAGE, VERSION, CREATE_TIME, LAST_UPDATEDStepExecutionDao -> STEP_EXECUTIONSTEP_EXECUTION_ID, VERSION, STEP_NAME, JOB_EXECUTION_ID, START_TIME, END_TIME, STATUS, COMMIT_COUNT, READ_COUNT, FILTER_COUNT, WRITE_COUNT, EXIT_CODE, EXIT_MESSAGE, READ_SKIP_COUNT, WRITE_SKIP_COUNT, PROCESS_SKIP_COUNT, ROLLBACK_COUNT, LAST_UPDATED, CREATE_TIMEExecutionContextDao -> JOB_EXECUTION_CONTEXT、STEP_EXECUTION_CONTEXTJOB_EXECUTION_CONTEXT:SHORT_CONTEXT, SERIALIZED_CONTEXT, JOB_EXECUTION_IDSTEP_EXECUTION_CONTEXT:SHORT_CONTEXT, SERIALIZED_CONTEXT, STEP_EXECUTION_ID
2023年07月14日
102 阅读
0 评论
0 点赞
2023-06-15
如何免费拥有个人图床(存储于github)
PicX这是一个免费的网页版本的图床,存储仅需一个github token。可以在github token 中新建一个。即可拥有自己的图床。配置PicX配置 中填入Token,手动配置一下。选择刚新建的一个仓库,放在根目录下:上传图片上传图片 可以选中文件上传,也可以已经在剪切板中,直接ctrl + v 粘贴即可。(所以我们可以截图,然后立马去粘贴!)配置cdn、复制方式配置后,复制出来的路径就是cdn的,格式可以是html通用的,也可以是markdown的。<img src="https://cdn.staticaly.com/gh/HuiWang1995/picBed@master/blog-image.uckmv7jsexs.jpg" alt="blog-image" />备份因为存储都在github上,上传都是用github api的方式,所以所有文件都可以通过git进行备份,可以fork到gitee上,或者clone到本地,都是可以的~
2023年06月15日
82 阅读
0 评论
0 点赞
2023-06-03
属实懒人操作,用Stream Web,可以一个PO类就省略mvc+dao开发
Stream Web:简化后端开发的利器https://gitee.com/wanglhup/stream-web什么是 Stream WebStream Web 受到 Stream Query 项目的启发,它通过定义一个数据库持久层对象(PO),自动生成相应的基础 RESTful 接口,使得简单的增删改查操作变得更加便捷。已经支持以下接口实现: @GetMapping("/{entity}/{id}") public Object getById(@PathVariable("entity") String entity, @PathVariable("id") String id); @DeleteMapping("/{entity}/{id}") public void deleteById(@PathVariable("entity") String entity, @PathVariable("id") String id); @PostMapping("/{entity}") public int create(@PathVariable("entity") String entity, @RequestBody Object entityObject); @PutMapping("/{entity}") public int updateById(@PathVariable("entity") String entity, @RequestBody Object entityObject); @GetMapping("/{entity}/all") public List<Object> getAll(@PathVariable("entity") String entity); 其实现可见:org.dark.web.AutoGenApi用起来真的方便吗?Stream Web 基于 Stream Query 进行开发,只需要依赖 stream-web-core 并配置需要扫描的 PO 包名,即可轻松实现功能。您可以通过以下 Maven 依赖配置将 stream-web-core 引入到您的项目中:<dependency> <groupId>org.dark</groupId> <artifactId>stream-web-core</artifactId> <version>1.0-SNAPSHOT</version> </dependency>同时,您还需要在您的应用程序配置中添加以下配置项,以指定需要扫描的 PO 包名:stream-web: base-packages: org.dark.streamweb.demo.po请将上述配置项添加到您的应用程序的配置文件中(比如 application.yaml 或 application.properties)。将 org.dark.streamweb.demo.po 替换为您实际的 PO 包名,以确保 Stream Web 正确扫描并生成相应的 RESTful 接口。请将上述配置项添加到您的应用程序的配置文件中(比如 application.yaml 或 application.properties)。将 org.dark.streamweb.demo.po 替换为您实际的 PO 包名,以确保 Stream Web 正确扫描并生成相应的 RESTful 接口。DEMO定义了一个PO@Data @TableName("users") public class UserPO { @TableId(value = "pk_id", type = IdType.AUTO) private String id; @TableField("name") private String name; @TableField("email") private String email; } 这是它对应的建表语句:CREATE TABLE users ( pk_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY (pk_id) ); -- 初始化三条数据 INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com'); INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com'); commit; 启动项目并访问浏览器访问,或者发送一个curl请求:curl http://localhost:8080/auto-gen/users/2就能得到一个json相应:{"id":"2","name":"Bob","email":"bob@example.com"}那它有什么问题吗?然而,目前的 Stream Web 只是一个玩具工程,它将所有接口都暴露给前端,没有进行鉴权的情况下,可能会导致被人拖库和删库等安全问题。因此,在将 Stream Web 用于实际项目中时,我们需要注意加强安全措施,包括但不限于鉴权机制和访问权限的限制,以确保数据的安全性。尽管 Stream Web 目前还存在一些问题,但它作为一个简化后端开发的工具,依然具有巨大的潜力。随着项目的不断演进和改进,相信 Stream Web 能够成为开发人员的得力助手,提升开发效率,减少重复工作,从而更好地服务于开发者和用户的需求。
2023年06月03日
126 阅读
0 评论
0 点赞
浙公网安备 33020502001051号
浙ICP备2023015387号-1