
Java开发
文章平均质量分 75
我爱夜来香A
不患人之不己知,患其不能也
展开
-
血缘解析<二>:如何解析带CTE语句的Sql
上述sql在解析的时候会获取到源表是tmp1,而不是cte中的personinfo和classinfo,原因是:com.alibaba.druid.sql获取getSelect().getQuery()只能获取到不包含cte的select语句,如下所示。介绍了血缘解析的思路,但是对于带CTE语句的sql解析不到。原创 2024-09-11 11:18:56 · 636 阅读 · 0 评论 -
血缘解析<三>:如何解析DML语句?
上述insert语句的加工过程实际上是select部分,可单独获取select部分传入之前写好的解析select语句模块,详情可看。获取目标表、源表、源字段的方式和上述简单update语句的获取方式一样,区别是获取源表,这里的处理方式和上篇文章。上述代码可以获取到简单update语句的字段血缘关系,针对一些较复杂的语句,比如下述语句,应该如何处理呢?上述sql是Mysql中最简单的用一张表更新另一种表字段的语句。上述sql是Mysql的一段upsert逻辑。最后可以通过递归获取最原始的血缘关系。原创 2024-09-25 16:47:35 · 727 阅读 · 0 评论 -
Rabbitmq基础
fanout和headers类型都不需要路由键routeKey,交换时通过Headers头部来将消息映射到队列的,Hash结构中要求携带一个键"x-match",这个键的Value可以是Any或者All,这代表消息携带的Hash是需要全部匹配(all),还是仅匹配一个键Any就可以了,相比直连交换机,首部交换机的优势是匹配的规则不被限定为字符串(string)而是Object类型。原创 2024-04-11 09:59:46 · 1188 阅读 · 0 评论 -
血缘解析<一>:血缘解析的思路
1、先传入Sql到解析入口,判断Sql是单独select语句还是包含union的select语句,若是包含union,通过 SQLUnionQuery.getLeft()和getRight()方法拆分union语句,再把拆分的语句放到解析的入口。4、解析表达式,上一步getExpr可能得到的字段是有多个字段加工而来,需要进行处理,解析表达式有如下种类,针对不同的类型有不同的处理方法,最终调用setSourceColumnName。比如说一段Sql传进来后,会先解析为AST抽象语法树。原创 2024-01-16 14:30:19 · 957 阅读 · 0 评论 -
Java学习:Scanner类及其应用
大家可以试一下,这里有两个输入,next()和nextLine(),但是输入ni后程序就会结束,这是因为nextline()读取了next()后的换行符。2、针对输入的一行内容,next()会根据空格、制表符或换行符当成多个输入。1、next()会以空格作为分隔符,一行输入1 2 3,只会打印出1。2、会读取next()、nextInt、nextLong后的换行符。1、读取一行内容,以换行作为结束。2、输入一个3 * 3的九宫格。原创 2023-05-06 16:33:01 · 1192 阅读 · 0 评论 -
Java学习:NIO<一>
Java NIO原创 2022-11-27 22:07:57 · 287 阅读 · 0 评论 -
Java学习:反射
reflect原创 2022-11-27 13:17:39 · 298 阅读 · 0 评论 -
Java学习:手写一个简单Rpc框架
rpc原创 2022-11-26 21:41:37 · 403 阅读 · 0 评论 -
Java学习:动态代理
java原创 2022-11-26 19:25:05 · 657 阅读 · 0 评论 -
多线程:用wait/notify实现生产者、消费者模型
生产者、消费者模型原创 2022-09-30 15:41:21 · 448 阅读 · 1 评论 -
Java学习:类、对象及引用之间的关系
Java原创 2022-06-10 22:17:40 · 293 阅读 · 0 评论