avatar
文章
117
标签
77
分类
0
首页
标签
归档
个人网页
首页
标签
归档

个人网页

Java项目中使用Groovy的几种方式
发表于2023-03-25
Groovy本身是一门完整的编程语言,同时也可以作为脚本集成到我们的应用中,为静态语言提供一些动态的能力,比如将 groovy 的脚本放到一些动态配置中或者数据库中进行管理,实现一些动态的规则计算等,在规则新增或变更的时候可以实时更新而无需开发代码上线,这次主要介绍一下Java中如何使用Groovy脚本 关于在应用中集成Groovy,官方文档已经提供了相关的资料,本次基于此文档进行一下说明 首先需要引入相应的包,这里基于的版本是3.0.16 12345<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>3.0.16</version></dependency> Eval Eval是最简单的一种用法 12345678910111213141516171819import groovy.util.Eval;// 1.执行没有参数的...
Gson原理分析-JsonReader
发表于2023-01-20
java语言下,进行json处理的工具类jackson, fastjson, gson等,使用起来比较简单,就不介绍了,这次我们就来探索一下其中gson的具体实现,其核心处理类为JsonReader和JsonWriter进行json格式数据的读取和写入,上层TypeAdapter使用其进行json和具体数据类型的转换,而Gson调用时会根据类型获取到具体的TypeAdapter进行使用 在将json字符串转换成Java对象时,首先需要有定义Java的类,这里我们先不定义,而是使用一种更通用的,将json字符串转换成JsonElement的方法(com.google.gson.JsonParser#parseString)实现 123456789101112131415161718192021222324252627282930313233343536373839// JsonParser.javapublic static JsonElement parseReader(JsonReader reader) throws JsonIOException, Jso...
MyBatis(三)插件开发
发表于2022-12-24
MyBatis允许我们在其执行过程中对特定的一些方法进行拦截代理,实现一些特定的通用功能,如分页插件或者租户插件,允许进行拦截的类及对应方法基本如下 Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setParameters) ResultSetHandler (handleResultSets, handleOutputParameters) StatementHandler (prepare, parameterize, batch, update, query) 这部分可以在源码中找到 12345678910111213141516171819202122232425262728293031323334353637383940// Configuration.javapublic ParameterHandler newParameterHandler(Ma...
Hive解析json数据
发表于2022-11-11
我们平时在使用关系数据库存储数据时,在某种情况下可能会有使用字符串类的字段来存储json格式的数据,然后在代码里面进行解析处理等,这样比较方便扩展,但是在使用数据进行分析等场景下就会很不方便,这时候就需要对json进行一些解析的操作,这次主要看下如何使用Hive来解析json格式的数据 get_json_object Hive为我们提供了get_json_object函数,可以指定路径来获取json字符串中的属性值,如 12345678910111213-- 处理对象select get_json_object('{"name":"zhangsan", "age":10}', '$.name')-- 输出: zhangsan-- 如果需要获取对象中的多个数据,可以使用json_tupleselect json_tuple('{"name":"zhangsan", "age":10&...
Java对象比对实现
发表于2022-09-17
有时候我们需要对于同一个类的两个实例对象进行一下数据内容的比对,找出他们的差异,比如用来做单测或者同一份数据多版本的内容比对,这里主要介绍使用apache的commons-lang3的工具类来进行功能实现 首先需要引入如下包依赖 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version></dependency> 使用时需要实现Diffable接口,并使用DiffBuilder来构建比对结果 1234567891011121314public class Person implements Diffable<Person> { String name; int age; boolean smoker; public DiffResult di...
JSONPath简介
发表于2022-09-11
JSON目前是使用的比较多的一种数据格式,前后端的交互就是都是使用JSON格式,后端存储的时候就算使用MySQL,有时候也会存在使用字符串等类型字段存储JSON数据(现在MySQL也支持了JSON类型字段并提供相关的语法) JSONPath比较适合使用在一些结构不确定,或者比较灵活的场景下,从json中获取想要的数据 有一些变更频繁的扩展类的非核心数据,可以直接当做一个json字符串进行存储,在获取的数据可以通过配置的JsonPath来从其中进行取值使用 在做类似网关等场景下,可以通过配置JsonPath完成数据的转换,当然如果转换逻辑特别复杂时可能还是模版引擎更合适一些 使用 我们先看下JSONPath的使用,这里使用的是https://github.com/json-path/JsonPath,其README中已经提供了相关的介绍和使用示例,这里再简单介绍下,我们这里直接使用其中的示例数据 12345678910111213141516171819202122232425262728293031323334353637{ "store":...
MyBatis(二)原理及简化工具介绍
发表于2022-06-23
之前写过一篇mybatis-spring配置及使用的文章,但是其中主要是偏使用的一些内容,这次我们就从根上来分析一下 mybatis配置及核心流程的功能实现,以及后续对它配置的一些优化、简化功能 mybatis为基于3.5.10版本的代码 最简核心配置 配置使用 首先需要进行mybatis的xml配置 mybatis-config.xml 123456789101112131415161718192021222324<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="develop...
分布式任务调度核心流程(xxl-job)
发表于2022-04-30
之前简单分析过定时任务的几种实现,但是都是单机本地的实现,现在看一下分布式的任务调度,开源的xxl-job的实现,因为其中的内容较多,这次我们就只看一下其中的任务调度部分,没有关注其中的一些分支逻辑,虽然也很重要 xxl-job的整体执行流程如下图所示 其中主要分为调度器和执行器,调度器用来根据配置信息,在特定的条件下调用执行器中的对应任务进行任务的执行 执行器配置 可以看一下xxl-job提供的spring boot为例的执行器,其中需要配置执行器的名称等信息 123456789# 设置调度中心的地址(执行时会有一些接口相关的调用交互)xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin### 执行器的名称 AppNamexxl.job.executor.appname=xxl-job-executor-sample### 可选,默认是自己当前的地址xxl.job.executor.address=### 执行器使用的IP和端口xxl.job.executor.ip=xxl.job.executor.port...
Clojure学习文档
发表于2022-01-21
本文主要对Clojure官网中的基础教程部分进行一下整理,对应地址https://clojure.org/guides/learn/syntax 函数 创建函数 定义一个函数,名称为 greet, 参数为name 1234(defn greet [name] (str "Hello, " name));; 或者使用如下方式(def greet (fn [name] (str "Hello, " name))) 使用 12user=> (greet "students")"Hello, students" 函数重载 12345678910(defn messenger ([] (messenger "Hello world!")) ([msg] (println msg)));; 使用user=> (messenger)Hello world!user => (messenger "Hello class!")Hello class! 可变...
SpEL使用
发表于2022-01-15
Spring Expression Language(SpEL) 是一个表达式语言,可以用来在运行时查询和操作对象图,比较类似于EL表达式,相比其他的表达式语言,可以更好的与Spring集成,如果使用Spring的话,也可以不用再引入额外的依赖 同时它也是可以单独引入并且使用的,这里我们主要就是看一下单独使用的情况下它能做什么以及如何使用 首先需要引入依赖包 12345<dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>5.3.12</version></dependency> 普通表达式求值 123456789101112ExpressionParser parser = new SpelExpressionParser();String helloWorld = parser.parseExpression(...
1…678…12
avatar
郑行码迹
学习笔记
文章
117
标签
77
分类
0
Follow Me
最新文章
Agent 走的,是它看得见的那条路2026-10-31
让 Agent 连数据库:多项目、只读、选对库2026-10-27
让 AI 替你操作网页:agent-browser 上手2026-10-25
先分层,再设计——个人助手的记忆系统设计框架2026-10-18
codemode:让 Agent 学会写代码调工具2026-10-16
标签
集成测试 agents 记忆 jsonata langgraph 工具 单元测试 interceptor template AI辅助 netty di clojure git 定时任务 tomcat 技术债 pf4j c thrift 拦截器 事务 RAG restTemplate 代码评审 java jsonpath python trae gpt mybatis diff flyway spel LlamaIndex 线程池 小白学机器学习 dubbo 工程实践 sql
归档
  • 十月 2026 5
  • 八月 2026 5
  • 七月 2026 11
  • 六月 2026 1
  • 五月 2026 2
  • 四月 2026 1
  • 二月 2026 3
  • 一月 2026 4
网站信息
文章数目 :
117
最后更新时间 :
© 2019 - 2026 By 郑行码迹
黑ICP备19000073号-1