2022-05-12

12 篇热帖

1. 关于 Java 很啰嗦的问题

我先声明啊,我不是来吹捧 java 的,我只是想说一个事实,编程语言 没有谁绝对的碾压谁,真遇到了实际业务需求,写出来的代码量绝对是半斤八两。

我希望大家 在 吐槽一门语言的时候,可以理性一点,不要瞎喷。这篇文章的用意就在于此。

还有一点,我用 go 来比较,是因为 go 擅长的场景,跟 java 有一定的重叠,有很多公司都用 go 开发 web 。绝对没有对 go 不敬的意思。

首先目录问题

image.png

总结下来,从工作量的角度来看,就是多了一个倒置的域名而已,而且只需要花建一层目录的时间,并且这个倒置的域名 是有他的意义在里面的,你们可以把他看做是这个

// go 语言里的 import ,前面也有一个域名+项目名 来确定唯一性,包名里的倒置域名就是起这个作用的
import "github.com/scan-util/xxx/xxx"

还有很重要的一点,你们喷来喷去的那些多余的目录结构,在我们的观念里 根本就不存在,因为从来没有手工去创建过,要不是你们来吐槽,我们还真想不到这一点。

不是因为 习惯了,而是真的从来没有为他们花过 5 秒钟以上的时间。有的连一毫秒都没花过。

方法语法

go

func BytesToString(val []byte) string

java

public String BytesToString(byte[] val)

我真没看出来多了什么东西

定义变量

go

name := "张三";

var map = make(map[string]interface{})
var array = make(string[], 10);

java

String name = "张三";

Map<String, Object> map = new HashMap<>();
String[] array = new String[10];

好像多了点东西,又好像没多什么。

循环

go

for(i:=0;i<100;i++){

}

for(i<100){

}

java

for(int i=0;i<100;i++){

}

while(i<100){

}

确实多了几个字母。

创建类

go

我知道这叫结构体,跟类是两码事,但是 go 就是用它来兼容 oop 的,所以我只能用它来举例子,因为没有其他语法可以实现 oop 了

type DemoParam struct {
    name string
}

func (demoParam *DemoParam) FormValues(key string) []string {
}

java

class DemoParam {
    public String name;
    
    public String[] FormValues(String key){
        
    }
}

字数上相差多少,我是懒得数了,但是你们真的不觉得 java 的结构更清晰吗? 其他的继承,多态 我就不拿出来说了,go 基本上是 用的 c 的编程思想,oop 只是个兼容, 所以用 java 来跟他比 oop 没什么可比性。因为是两个方向。

异常处理

go


func testFunction(paramStr string) (string, error) {
    if xxx {
        return Errors.New("xxxx");
    }
}

paramStr, err := testFunction("ok")                              
if err != nil {                           
    log.Println(err.Error())                           
}

java

public String testFunction(String paramStr){
    if (xxx) {
        throw new Execption("xxx");
    }
}

try {
    String paramStr = testFunction("ok");
} catch(Execption e){
    log.Println(e.getMessage); 
}

这个看起来 go 好像 舒服一点,但是,实际场景下 go 经常是这种姿势

paramStr, err := testFunction("ok")                              
if err != nil {                           
    log.Println(err.Error())                           
}

paramStr, err := testFunction2("ok")                              
if err != nil {                           
    log.Println(err.Error())                           
}

paramStr, err := testFunction3("ok")                              
if err != nil {                           
    log.Println(err.Error())                           
}

而 java 还是只需要这样

try {
    String paramStr = testFunction("ok");
    String paramStr = testFunction2("ok");
    String paramStr = testFunction3("ok");
} catch(Execption e){
    log.Println(e.getMessage); 
}

并且这是 经过人为判断后,返回的错误提示,如果是意外的异常呢? go 里面叫 panic ,java 只要用 try catch 包住了 就可以捕获,但是 go 需要用 defer ,而且一旦抛出异常就意味着这个函数结束了,你如果想在出异常后,处理一下 然后继续往下走,go 会非常的麻烦。

拆箱

go

// 如果有一个 interface{} 类型的变量 a ,想转成 int
// 你必须明确的知道,他装箱前就是 int ,不然根本没法拆,必须做一下类型判断。
// 我之前在写框架的时候 就被折磨的够呛,一大堆不必要的 if

java

// 不管装箱前是什么,只要他的值是一个整数
// 无论是 1 , 还是 "1", 都可以这么转
Integer aInt = Integer.parseInteger(a.toString());

// 也可以直接拆成 String
a.toString();

如果你们还不服,那很好办,

你们出一个需求给我,我用 java ,你们用 go ,nodejs ,python ,php 随便什么语言,最后来比比 谁的代码少一些。 我敢说,绝对半斤八两,不可能有谁碾压谁的。

而且还有一定的概率,java 在 丰富的生态+强大官方库的 加持下,可以更快完成。

2. 比特币 开始暴跌了

显卡还会降价吗

3. Go 特性少,语法糖太少,味儿苦啊!求开发体验好、生态全的语言推荐

包括不限于错误 /异常处理,泛型,OOP 等, 还有就是缺失类似 spring 的 bean 扫描功能

4. 关于 e 招贷,请教一下大家

招行的老打电话,以前不爱接,今天接了下有点心动:

最高有 20W 额度,可以自定义额度,分 36 ,24 或 18 期还

假设贷款 10W, 分 36 期,则每期还款(本金加 2 折手续费):2777+135=2912

算了下年化只有 3%,很低啊,大家有谁办过这个,有什么坑没 ?

5. 不知道我还能不能顶的住。

如题,资金链断裂 ,杭州 6 点有哪些兼职,搬砖都行大家有没有兼职群 ,给我推一下。谢谢

6. [吐槽]这个世界上为什么会有 Tailwind Css 这种东西?

复制一段官网的代码:

<figure class="md:flex bg-slate-100 rounded-xl p-8 md:p-0 dark:bg-slate-800">
  <img class="w-24 h-24 md:w-48 md:h-auto md:rounded-none rounded-full mx-auto" src="/sarah-dayan.jpg" alt="" width="384" height="512">
  <div class="pt-6 md:p-8 text-center md:text-left space-y-4">
    <blockquote>
      <p class="text-lg font-medium">
        “Tailwind CSS is the only framework that I've seen scale
        on large teams. It’s easy to customize, adapts to any design,
        and the build size is tiny.”
      </p>
    </blockquote>
    <figcaption class="font-medium">
      <div class="text-sky-500 dark:text-sky-400">
        Sarah Dayan
      </div>
      <div class="text-slate-700 dark:text-slate-500">
        Staff Engineer, Algolia
      </div>
    </figcaption>
  </div>
</figure>

听说这玩意儿最近很流行?

跟手写 style 有啥区别啊?

真有把这个用于生产环境的吗?

写起来不累吗?

我一个后端要看吐了!

8. 大家有没有比较好的经验,管理两个版本的 Python , 2 & 3?

发现很多程序的运行环境,都需要 python 支持,而且,版本还不一样。python2 和 python3 都需要。

楼主一直整得不太好(因为不是经常使用),经常一个程序或者环境跑起来,缺 python 。所以特意来请教一下,大家有没有比较好的 best practice ,管理 python 的版本,2 & 3 ,以及对应的 pip 。

macOS 和 windows 都分别怎么设置,比较好用&通用?

谢谢!

9. 不开心但是钱多的工作 vs 有成就感但是钱少的工作,大家怎么选?

马上要秋招了,在职业选择上挺纠结这个问题

因为我大学期间做了快 2k 同学用过的项目,在维护项目的过程中觉得很酷很有成就感,就算一分钱没赚,自己倒贴钱(服务器等等费用),也觉得很开心

所以找工作时就在考虑这个问题。从暑期实习的面试中大致能看出,大厂招人基本业务都是内部系统,可能会有老多 kpi 总结啥的杂事要求(我猜测),可能不能够像一些小型团队一样直接开发给用户侧的东西,或者自己负责一大块业务。

不过因为我是双非学历,中大厂的贴金似乎也是挺重要的,大厂也会提供更多的培训机会,比如我很向往的蚂蚁体验技术部,之前参加支付宝前锋营觉得里面大佬都好和善~

但是像字节、拼多多这种臭名远扬的 996 公司,可能年薪是真的会很多,但是不开心压力大,大家会怎么选择?

我个人倾向“有成就感但是钱少的工作“,不知道这是不是“学生思维”

10. 我是新时代四败青年

我是新时代四败青年: 人生失败、事业失败、婚姻失败、人际关系失败

我骄傲了吗?

11. 自建全套开源 DevOps 实践

国内的 Devops 云平台动辄封号,删库,屏蔽,国内云平台 devops 已死!自建 Devops 平台才靠谱。这里采用开源项目建立一个完善的 Devops 系统,基本运行良好!

个人 devops 实践系统。整套系统可以完全内网实现,不用申请域名、ssl 证书,完全自己管理 dns ,自签名证书。

配合 Consul 可以实现自动负载均衡 Consul

大家有什么更好的项目推荐没?

首发于个人 blog

12. 老哥们 都用啥大流量卡~~~
在贴吧看到好多铁友推荐河南星卡

老哥们都用啥~~~