V2EX zengyufei
 zengyufei 最近的时间轴更新
zengyufei

zengyufei

V2EX 第 459965 号会员,加入于 2019-12-18 14:26:35 +08:00
zengyufei 最近回复了
105 天前
回复了 Need4more 创建的主题 程序员 轻量级 k8s: uncloud
两台我都直接上 k3s ,都是 txt 文件整理好 shell 命令脚本直接粘贴执行,生成执行脚本&&运行。

再整个可视化界面,去上面调整。

放着 k8s k3s 不用,我整它干嘛,又不是超越了,拍在沙滩上了。

再说无论是运维还是开发,学习运维本来就慢和苦,掌握 k3s 和 k8s 就足够了,一个 512Mb 就能部署 k3s ,一个大规模集群 k8 。
最简单入门书籍推荐《第一行代码 Android 第 3 版》郭霖-人邮-2020
107 天前
回复了 livc 创建的主题 Android 电脑如何远程控制华为手机
不对吧,我记得华为鸿蒙是能装 rustdesk 的,把纯净模式关闭掉,忽略警告就可以的
107 天前
回复了 livc 创建的主题 Android 电脑如何远程控制华为手机
rustdesk 报毒装不上的问题,可以通过安装 Shizuku + 电脑 USB 线激活 + InstallerX 解决,长按安装包,其他方式打开,找到 InstallerX ,进行安装。

原理:使用第三方安装器代替自带 APK 安装器。

路绕了一点,但是是可行的方案。
我们来溯源一下源码的设计是如何来的。

源码有啥,有算法、有设计模式、有封装、抽象、继承、多态,大概组成结构是这样子的。

一开始你只会 java 代码。
假设你是一个 java 基础通关的初学者,让你看源码,能得到什么结果?天书吧,我就是这样过来的。

那我是否该深耕源码获得下探深度的进步呢?答案是肯定的,但是我无法主动去做。
从他人分析源码那博文才知道,原来源码有那么多算法和设计模式,这些都属于抽象范畴,怪不得一开始我看不懂。

如果把算法和设计模式单独拎出来,其实可以跟 java 无关,可以中立的通用的东西,能应用到其他编程语言去,这是否意味着需要投入大量时间进行专项学习和实践,如同‘三年练习生’般持续磨砺?。

非系统性的长时间积累了不少知识点,我变得也能看得懂源码了,但是细节记不住,哪有那么多记性,天天忙着生活和 CURD 。

回过头来看,发现 java 就是一门编程语言,各种好用的库用了不同的算法和结构,封装成了不同的生态,兜兜转转,我似乎也只停留在应用层面。。

但是我知道我大概了解源码里部分做法,就跟做一道菜,需要备什么原料,用什么火力,用什么锅,如何炒制;我吃的好好的,让我去复现做出来,也可以,但没法完全复制,细节太多忽略的。只是了解知识点的我能干嘛,可以在工作中探索应用边界,可以用去面试,用去吹牛逼。

java 是我花了时间和代价学习的主力编程语言,我也想下探技术的深度,但是 java 在应用层面太多花活了,什么奇淫技巧,什么 lambda 新写法,什么新流行技术栈脚手架比较吸引我,我便去研究它们去了,研究它们得到的成就感比看源码多得多,也爽得多。

回头看,我已经掌握了不少抽象概念知识,发现源码并不神秘,但是也不好阅读,如果你把算法和设计模式了解了,源码大概就是套“公式”那么简单,但是你需要的是从源码分离出抽象的“公式”,那就需要学习一下应用于 java 但不是 java 独有的东西了。

脚手架也是,如果你研究众多脚手架,你会发现,大家其实也就是套“公式”,简单说就是 ctrl+c/v ,复制粘贴改改就能用,需要的是花时间而已。

AI 打破了固有的局面,以前我们追求的设计模式、封装抽象、代码整洁、注释完善,在现在这个时代好像都不值一提,现在写代码,看着 AI 一行行给你生成好,比你写得都好,默默纪念逝去的头发吧。

AI 的出现给我们带来更多可能性,终身学习的对象和终身的劳工,问必答,叫必做,我们要做的是,问它,学习它(成为它?)、纠正它。

最后寄言:

无论什么年限,记事、记错以及不间断写 demo ,量变积累质变。
利用技术提升生活宽度或深度:

1 、如果喜欢娱乐类,小说/音乐/电视剧/电影/动画/片,可扩展一下自己的爬虫能力。

2 、如果喜欢生活自动化多一些,爬虫/HOOK/外挂/AutoJS 之类学习一下。

3 、如果想助力自己或他人学习,做一些知识收集系统、知识整理系统、知识输出系统,如 JAVA 面试专题、Anki 卡片生成等。

如前面 @dfkjgklfdjg 老哥说的,自驱动+小需求+小玩具+直接开撸=满足感和快乐。

学习与 Java 不相关的东西或使 Java 技术落后于人?不存在的。

一理通百理,
只会 Java ,不懂的 kotlin 的先进,回过头来看 Java ,发现 Java 真落后,但写 Java 变更简洁明了了。
只会 Java ,不懂 C++的指针,回过头来看 Java ,发现 Java 真简单,但更懂 Java 堆栈的用法了。
只会 Java ,不懂 Python 的方便,回过头来看 Java ,发现 Java 真笨重,但更懂 Java 封装的重要性了。

借助中医方面的一些概念,头痛医头,脚痛医脚是指只医治疼痛的部位,不追究病根。比喻处理问题不从全局考其根本,什么地方有问题就在什么地方解决,临时应付。

这些看似提升不了什么 Java 技术,但你会发现,从前看不下去的技术书籍,不过原来如此。

当你发现瓶颈期,可能不是当前技术知识储备不够,可能是其他技术知识储备不够。
网易 uu 远程,带宽肯定大于 3M ,感官有 5M 以上,还免费,还能局域网。
1. classpath 与 classpath*: 的区别

classpath: 只会加载 第一个 匹配到的资源,按类加载器顺序查找,一旦找到就停止搜索。

classpath*: 会加载所有匹配到的资源,包括 JAR 包内和工程内的,可能导致重复加载导致冲突。

2. 配置 mybatis.mapper-locations
在 Spring Boot 项目中,你可以通过 application.properties (或 application.yml )显式设置:

# application.yml
mybatis:
mapper-locations:
- classpath:mapper/local/**/*.xml # 本地优先
- classpath*:mapper/**/*.xml # 备选加载所有(含 JAR )
为啥不考虑部署一个 Komga ?
针对 Thread.sleep 有无导致结果不同,我也从 GPT 那里得到了答案。

忙循环导致子线程 a 无暇从主线程 a 那里得到更新。

大白话就是:我一直在忙,没有空去新的东西。

给你对比实验感知一下这个事情:

1 、不加 volatile
2 、Thread.sleep(100); 这句留着
即与你图片的代码完全一致即可。

运行只能 thread1 打印了一下。

对比实验动作 1:thread2 的 while 循环代码块加入 Thread.sleep(1);
为什么先从 thread2 开始加,因为你 thread1 执行完毕 a+1 了,下一个肯定是 thread2 先执行。
你可以先加 thread3 ,运行结果肯定没变化。
先从 thread2 开始加,会得到结果 thread2 也打印了语句。

对比实验动作 2:thread3 的 while 循环代码块加入 Thread.sleep(1);
运行结果大概打印 3-20 条,具体看概率。
因为 System.out.println 会模仿 volatile 功能,导致 thread1 偶尔会更新 a ,最后 thread1 会陷入忙循环。

对比实验动作 3:最后 thread1 的 while 循环代码块加入 Thread.sleep(1);
运行,你会正确打印 1-100 ,这是程序最初的目的。

最后,你自己总结一下。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6082 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 13ms UTC 02:19 PVG 10:19 LAX 19:19 JFK 22:19
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86