V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Karte  ›  全部回复第 2 页 / 共 5 页
回复总数  93
1  2  3  4  5  
18 天前
回复了 gpsbird 创建的主题 问与答 读代码的时候,什么时刻最破防?
@daxin945 应该是不想判断 AND. 1 = 1 后面直接拼条件就行
1. 文件占用
2. 内容覆盖
18 天前
回复了 gpsbird 创建的主题 问与答 读代码的时候,什么时刻最破防?
@daxin945 这是什么操作? web 为什么要拼接 SQL?
之前 "小雪人" 出过一款 4k 高刷, Delta < 2 的屏幕 (G271U). 很不错, 但是最近看没了, 换成新款 G322U 了. 价格变成了 2499, 27 -> 32 寸.

我目前用的是 G271U, 色彩很好, 虽然 8bit 抖 10bit, 依旧比我同价位买的 Dell 要好上不少. 还有反向充电.

现在从公模换成了自己的模具, 更好看了.
19 天前
回复了 gpsbird 创建的主题 问与答 读代码的时候,什么时刻最破防?
这种不需要优化, 解释器会直接删掉这个条件, 因为怎么都是 TRUE.

如果你看的不爽, 可以这样改

```xml

SELECT * FROM <table>
WHERE

<where>
<if test="a != 0" >
AND a = #{a}
</if>
</where>

```

参考 [MyBatis XML 文档]( https://mybatis.org/mybatis-3/dynamic-sql.html#trim-where-set)
> The where element knows to only insert “WHERE” if there is any content returned by the containing tags.
Furthermore, if that content begins with “AND” or “OR”, it knows to strip it off.
19 天前
回复了 gpsbird 创建的主题 问与答 读代码的时候,什么时刻最破防?
@daxin945 这个大概率是为了拼接条件, 而且是 mybaits.

```xml

SELECT * FROM <table>
WHERE 1=1

<if test="a != 0" >
AND a = #{a}
</if>

```

如果没有这个 1=1, 那就变成 `WHERE AND a = #{a}`. 无法通过 MySQL 的解释器.
19 天前
回复了 techdai 创建的主题 生活 大家有什么泡水喝不腻的❓
泡凉白开, 每次喝 100ml, 间隔 20mins
19 天前
回复了 RedBeanIce 创建的主题 Java docker 项目资料全部打包
对了, 你这个是 Docker 相关的话题, 建议把话题转到 /go/docker. 而不是 /go/java
19 天前
回复了 RedBeanIce 创建的主题 Java docker 项目资料全部打包
compose.
打包进一个的话容器删了就等于全停了, 而且无法监控所有服务的状态.
docker 判断容器存货就看最后一个指令, 也就是最后一个指令的 PID. 如果这个 PID 存货就是 RUNNING, 如果挂了就是 STOP.
假设你都打包进去了, 而 PID 则是一个 top 指令. 这时只要任意一个服务挂了你是不知道的, 因为 PID 对应的进程依旧跑着. 如果你想排查, 不好意思, docker logs 的日志都是 PID 进程的. 你想看只能进到容器里, 或者将日志映射到宿主机上.
青桔也是
21 天前
回复了 ShikiSuen 创建的主题 Apple 新 iPad pro 记得买 1TB 以上的
直接买个本子不香吗
22 天前
回复了 JustW 创建的主题 分享发现 小白也能轻松玩转 Windows 🖥️
不分盘不就好了, 一个 C 盘用到底.
22 天前
回复了 afxcn 创建的主题 Go 编程语言 使用 go 遇到的一个奇怪问题,求教
@dododada @Livid AI 回答.
感觉用途不正.
祝大卖
标签页分不清.
你先试试手机连接显示器是否正常, 如果正常则是 Windows 驱动问题. 如果不正常, 再试几个具有显示的设备, 如果都无法识别到显示器, 直接售后.
我觉得是弹出更新时用户选择问题, 更新弹窗会提示用户何时进行更新.
对于枚举的验证做法:
1. 硬代码, 通过 Assert 相关断言判断
2. 通过 @Min, @Max 设定枚举边界.
3. 通过实现 `ConstraintValidator` 对类进行校验.
4. 通过代理 + 反射的方式添加自定义处理注解, 然后通过定义 `spel` 表达式确认是否校验通过.
```java
@FieldValid(spel = "#p1.field != 0")
```

用硬代码虽然会略显丑陋, 但是在新增枚举时可以不用改动代码.
而 @Min, @Max 在枚举修改后需要同步修改, 如果没有相关注释说明会存在隐性 BUG.
使用 `ConstraintValidator` 相对比较好, 因为能够自定义实现校验逻辑. 但是验证范围只能为对应类, 如果不做继承的话
无法实现复用
代理 + 反射会有略微性能损耗, 而 `spel` 表达式需要额外学习, 且有点耗费性能 (通过反射获取数据). 在多参数时需要在编译时增加 `-parameters` 否则参数名无法写入, `spel` 就无法获取到对应的对象, 校验就失败了.
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2918 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 12:41 · PVG 20:41 · LAX 05:41 · JFK 08:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.