最近碰到的几个问题 Shell中的判断

又到了“最近碰到的问题”,这次集中在Java开发过程中,涉及了XML、JSON的处理。

问题1 Shell中的判断

在写shell逻辑时,经常会使用到条件判断,shell中的条件判断符,有他自己的特点,如下所示,

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

问题2 正则

有个需求,需要通过正则,将插入a未带具体字段的SQL找出来,

String sql = “insert into aaa values ()”;
模拟测试,如果存在这种情况的,就使用insertall替换insert into aaa values,如下正则,可以正确返回,

System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.+[^(\(.+\))]values”, “insertall”));
打印:insertall()
但若表名只是一个字符,返回的就是错的,

System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.+[^(\(.+\))]values”, “insertall”));
打印:insertintoavalues()
改成这个,可以正确返回一个字符的表名,

System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.?[^(\(.\))]values”, “insertall”));
打印:insertall()
但是看*+?的解释,没太理解原因,能讲清楚的朋友,还请指教下,

问题3 xml文件中过滤标签

如果想得到xml文件中这条SQL的原文,即删除所有标签,

select c1, c2, c3 from table where 1=1 and c1=#{c1}
可以用jsoup,如下语句,得到的就是删除标签的字符串,

Document doc = Jsoup.parse(str);
doc.wholeText();
返回的就是字符串的类型,可以直接使用,

String org.jsoup.nodes.Element.wholeText()

问题4 JSON解析

很多的第三方包可以解析JSON,例如fastjson,

String str = “{\”key\”:{\”name\”:[{\”value\”:\”a\”},{\”value\”:\”c\”}]}}”;
JSONObject jsonObj = JSON.parseObject(str);
System.out.println(jsonObj);
//打印:{“key”:{“name”:[{“value”:”a”},{“value”:”c”}]}}
JSONObject key = jsonObj.getJSONObject(“key”);
System.out.println(key);
//打印:{“name”:[{“value”:”a”},{“value”:”c”}]}
JSONArray name = key.getJSONArray(“name”);
System.out.println(name);
//打印:[{“value”:”a”},{“value”:”c”}]
JSONObject name1 = name.getJSONObject(0);
System.out.println(name1);
//打印:{“value”:”a”}
String value = name1.getString(“value”);
System.out.println(value);
//打印:a

问题5 JSON字符串和JAVA对象

JAVA对象转JSON字符串,

Data data = new Data();
data.setID(1);
data.setTag(1);
String s = JSON.toJSONString(data);
JSON字符串转JAVA对象,

String s = “{\”key1\”:\”k1\”,\”key2\”:\”k2\”}”;
JSONObject jObj = JSON.parseObject(s);
String k1 = jObj.getString(“key1”);
String k2 = jObj.getString(“key2”);

《最近碰到的几个问题》

问题1 在程序中和MySQL做交互的时候,提示这个错误,Column count doesn’t match value count at row 1

问题2 从MySQL集群环境用mysqldump导出导入数据的时候,提示这个错误,@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty

问题3 MySQL导出的时候,一般用什么参数?

《最近碰到的一些问题》

问题1 按照空格分割字符串的需求

问题2 MyBatis错误,Invalid bound statement (not found)

问题3 JDBC错误,java.sql.SQLException: ORA-03115

问题4 JDBC连接串中使用SID和SERVICE NAME的不同

问题5 SQL Server的CTAS

《日常工作中碰到的几个技术问题》

问题1 PLSQL Developer中文显示问题

问题2 Windows 10安装PLSQL Developer

问题3 PLSQL Developer登录报错ORA-12504

问题4 Windows 10的PLSQL Developer字体显示很小

问题5 包含特殊字符的Oracle用户名创建 问题6 执行10053未生成trace

近期更新的文章:

《小白学习MySQL-MySQL分组需求探秘》

《国产数据库排行榜解读》

《了解一下ISO 8601是什么》

《Linux系统中的kill -9和-15有什么区别?》

《小白学习MySQL – 查询会锁表?》

文章分类和索引:

《公众号700篇文章分类和索引》

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/423172.html

联系我们
联系我们
分享本页
返回顶部