V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  isir1234  ›  全部回复第 1 页 / 共 1 页
回复总数  20
每日一题
2021-02-20 13:41:21 +08:00
回复了 zhuawadao 创建的主题 Java 求大佬们解答 CountDownLatch 使用中的一个问题
1. state 初始 10000,
2. 线程 1 执行了 countDown => state=9999
3. 线程 2 执行了 countDown => state=9998
4. 线程 1 执行 getCount => 输出 9998
5. 线程 2 执行 getCount => 输出 9998
select student_id, gap
from (select student_id,
last_value(score) over (partition by student_id order by created_at) -
first_value(score) over (partition by student_id order by created_at) AS gap,
row_number() over (partition by student_id order by created_at desc) rn
from exam) tmp
where rn = 1;
2020-10-26 15:19:38 +08:00
回复了 Hanggi 创建的主题 程序员 你们在实际工作中用过哪些代码自动生成技术?
魔改了一下 start.spring.io, 根据 sql 生成 domain, mapper, service, controller

http://start.jiangy.me/
2020-10-08 21:44:01 +08:00
回复了 hello2060 创建的主题 Java 问个 Gatling 的问题
可以用
constantUsersPerSec(50) during (20000)
或者
rampUsers(1000000) during (20000)
2020-09-29 11:39:59 +08:00
回复了 PeiXyJ 创建的主题 程序员 Spring Security 官方文档学习
Spring Security 的 reference 第一遍看的时候真的是一脸懵逼

可以先看 <<Pro Spring Security>> 这本书
YouTube 上也有不少相关的 talk

也可以写个最简单的 demo, debug 源码走一下 filter 和认证 /授权流程
Spring Cloud Hoxton.SR5 版本的 Gateway 确实是有 file descriptor 无限增长的问题的, 可以作为一个排查点.
可以先查看每个进程打开的文件数:
ps -opid= -ax | xargs -L 1 -I{} -- sudo bash -c 'echo -n "{} ";sudo lsof -p {} 2>/dev/null | wc -l' | sort -nr -k2
2020-09-05 15:33:30 +08:00
回复了 RedBeanIce 创建的主题 Java CompletableFuture 使用交流(其实是困解)
runAsync 后加上异常处理试试

比如 CompletableFuture.runAsync(()->xxx).exceptionally(e -> {
// print exception here
return null;
}))
2020-06-07 21:49:46 +08:00
回复了 azev 创建的主题 问与答 Maven 中有没有 Java 控制台项目模版可以像 SpringBoot 那样方便
2020-06-03 16:00:36 +08:00
回复了 liunaijie 创建的主题 问与答 求推荐一个带 typec 接口 4k 显示器
@VANHOR 同 Dell U2720QM
我上周京东 4199 买的, 这周 618 活动价 3850, 走了京东保价退了 350😂.
2020-05-28 22:29:12 +08:00
回复了 winterbells 创建的主题 问与答 Ubuntu 上装微信
可以试试 Docker 版的, 不过有些 bug.

sudo xhost +
docker run -d --name wechat --device /dev/snd \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/WeChatFiles:/WeChatFiles \
-e DISPLAY=unix$DISPLAY \
-e XMODIFIERS=@im=fcitx \
-e QT_IM_MODULE=fcitx \
-e GTK_IM_MODULE=fcitx \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
bestwu/wechat
为什么必须要破坏?::
DriverManager::getConnection 方法需要根据参数传进来的 url 从所有已经加载过的 Drivers 里找到一个合适的 Driver 实现类去连接数据库.
Driver 实现类在第三方 jar 里, 要用 AppClassLoader 加载. 而 DriverManager 是 rt.jar 里的类, 被 BootstrapClassLoader 加载, DriverManager 没法用 BootstrapClassLoader 去加载 Driver 实现类, 所以只能破坏双亲委派模型, 用它下级的 AppClassLoader 去加载 Driver.

如何破坏的?::
> SPI 机制
Driver 具体的实现类 jar 包在 META-INF/services/java.sql.Driver 文件里写上自己 Driver 实现类的全限定名, 比如 `org.postgresql.Driver` , JDK8 的 DriverManager 在 static 代码块里(JDK14 是在第一次 getConnection 时)会用 ServiceLoader 获取所有的 Driver 并使用 Thread.currentThread().getContextClassLoader() 获取到的 AppClassLoader 加载该类, Driver 实现类的 static 代码块会去调用 DriverManager::registerDriver 将自己注册到 DriverManager 里.

个人理解...
2020-05-05 08:52:11 +08:00
回复了 1and0 创建的主题 Ubuntu ubuntu 有办法让终端走 proxy 吗?
我是拉的阿里云镜像然后打官方镜像的 tag, 一步到位.

sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update && sudo apt install -y kubelet kubectl kubeadm

KUBE_VER=$(kubeadm version -o short)
IMAGE_MIRROR="registry.cn-hangzhou.aliyuncs.com/google_containers"
kubeadm config images list >/tmp/ki
images=$(tail -n7 /tmp/ki | tr "\/" "\n" | awk '!(NR%2)')
for imageName in ${images[@]}; do
docker pull ${IMAGE_MIRROR}/${imageName}
docker tag ${IMAGE_MIRROR}/${imageName} k8s.gcr.io/${imageName}
docker rmi ${IMAGE_MIRROR}/${imageName}
done
这本 <<Expert One-on-One J2EE Development without EJB>>
https://book.douban.com/subject/1436131/
VM Options 里加上一条
-Dauto.disable.input.methods=false
2019-09-12 17:29:28 +08:00
回复了 ohyeahhh 创建的主题 Java SpringMVC 拦截器如何获取 @ResponseBody 的返回值?
supprt 方法怎么写的?
代码贴出来看看吧
2019-09-12 12:13:58 +08:00
回复了 guxingke 创建的主题 Java 关于 Spring @Value 注解的疑问
可以实现 BeanPostProcessor 接口, 然后在 postProcessAfterInitialization 方法里把 bean 带 @Value 的字段值打出来
2019-09-12 11:03:24 +08:00
回复了 aibccn 创建的主题 Java [ Java ] 线程池问题疑惑,大佬们赐教
CompletableFuture<String> rs1 = CompletableFuture.supplyAsync(() -> callApi());
CompletableFuture<String> rs2 = CompletableFuture.supplyAsync(() -> callApi());
CompletableFuture<String> rs3 = CompletableFuture.supplyAsync(() -> callApi());

List<String> results = Arrays.asList(rs1, rs2, rs3).stream().map(CompletableFuture::join).collect(Collectors.toList());
System.out.println(results);
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1010 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 21:06 · PVG 05:06 · LAX 13:06 · JFK 16:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.