已注销 level
获赞
450
粉丝
85
关注
40
看过 TA
2188
IP属地:北京
暂未填写个人简介
私信
关注
2023-04-03 09:31
再一次深切的感受到,国内竞争激烈,你以为自己是Java和Go的双选手,你以为自己是八国语言选手,有用吗?为什么公司不选择一个Java写得更好的和Go写的更好的呢?让你一会儿写前端一会儿写后端一会儿写大数据的公司会是什么公司呢?这种公司去了也会迅速搞花简历,显得极为不专业。要么就是有编制的国企可以做很多打杂,要么就是去专业的公司。日本池子很小,一会儿Ruby,一会儿Go,一会儿Java,一会儿Python,真是惊呆了,但是国内可不惯着你,人那么多,不需要半吊子。大部分人,本来就精力有限,哪里能够同时学这么多呢?????每个领域的大佬都快速抢完了顶尖资源,每次瓜分的都是剩下的残羹冷炙,你有什么资本同时搞这么多???学成半吊子,人家也不会问一句,人家不会问我N1学起来有多痛苦,要花多少事件去背诵,不会问我口语多难交流,你浪费多久的青春也没用,到了这里,就是Java的主场。对于我来说,目前已经有Java offer了,才可以理直气壮的说,给我TM死磕Java,但是对于其他人来说,100个面试都没有机会怎么办?或许就是早期开始的时候,都学点,然后海投,最后给你机会的就去深入。总结--------我们都是抢大佬们剩下的剩菜剩饭的,所以池子大是必须的,其他池子三年五年大佬多的要死,池子更小连一口汤都没有!!!!所以只要池子够大, 只要市场上还有可以生存的工作机会,就往死里卷这个。
何人听我楚狂声:无所谓,go是垃圾(字节内部名言
0 点赞 评论 收藏
分享
2023-03-30 12:46
线程的原子性和可见性是多线程编程中的两个重要概念:原子性:原子性指的是操作不可分割,要么全部执行成功,要么全部执行失败。在多线程环境下,如果多个线程同时执行对共享变量的修改操作,就可能会出现数据竞争和不一致的问题。为了保证原子性,可以使用 synchronized 或 Lock 等同步机制来保证多线程对共享变量的互斥访问,从而避免数据竞争和不一致的问题。可见性:可见性指的是当一个线程修改了共享变量的值后,其他线程能够立即看到修改后的值。在多线程环境下,如果多个线程同时访问共享变量,就可能会出现线程间数据不一致的问题。为了保证可见性,可以使用 volatile 关键字来修饰共享变量,从而保证线程对共享变量的读写操作具有可见性。在多线程编程中,保证原子性和可见性是非常重要的,可以有效地避免线程安全问题和数据不一致的问题。同时,开发者也应该注意线程安全的编程习惯,如尽量减少共享变量的使用、使用不可变对象、避免在锁内部进行耗时操作等,从而使多线程编程更加稳定和可靠。线程的安全指的是在多线程环境下,程序能够正确、稳定、高效地运行,并且不会出现数据竞争、死锁、饥饿等线程安全问题。在多线程编程中,线程安全是一个非常重要的概念,因为多个线程同时访问共享的资源,很容易出现竞争和冲突,导致程序出现各种线程安全问题。为了保证线程安全,可以采用以下几种方式:使用同步机制:使用 synchronized 或 Lock 等同步机制可以保证多线程对共享资源的互斥访问,避免数据竞争和不一致的问题。使用线程安全的类:Java 中提供了很多线程安全的类,如 ConcurrentHashMap、CopyOnWriteArrayList 等,这些类都是设计用于多线程环境的,可以避免数据竞争和不一致的问题。使用不可变对象:不可变对象指的是创建后不能被修改的对象,因此不会出现多线程修改同一对象的情况,也不需要使用同步机制来保护共享资源。避免共享资源:尽量避免多个线程共享同一份资源,尽可能让每个线程拥有自己的数据副本,从而避免数据竞争和不一致的问题。减少锁的粒度:总之,在多线程编程中,保证线程安全是非常重要的,需要采用正确的编程方法和技术,从而避免数据竞争、死锁、饥饿等线程安全问题,保证程序的正确、稳定、高效运行。
0 点赞 评论 收藏
分享
2023-03-30 12:27
        while(startX<=endX&&startY<=endY){            if(startY==endY){                for(int i=startX;i<=endX;i++){                     ans[index++] = mat[i][endY];                }                   break;                     }             if(startX==endX){                for(int i=startY;i<=endY;i++){                     ans[index++] = mat[endX][i];                }                   break;                     }                       for(int i=startY;i<=endY;i++){                    ans[index++] = mat[startX][i];            }            for(int i=startX+1;i<=endX;i++){                ans[index++] = mat[i][endY];            }            for(int i=endY-1;i>=startY;i--){                ans[index++] = mat[endX][i];            }            for(int i=endX-1;i>=startX+1;i--){                ans[index++] = mat[i][startY];            }                        startX++;            endX--;            startY++;            endY--;
0 点赞 评论 收藏
分享
2023-03-30 11:42
双亲委派机制是 Java 类加载机制的一个核心概念,它规定了父类加载器优先加载类的原则。破坏双亲委派机制可能会引发一些安全问题和类加载冲突问题,因此一般情况下不建议破坏双亲委派机制。以下是一些可能破坏双亲委派机制的方法:重写 ClassLoader 的 loadClass() 方法:在重写 loadClass() 方法时,可以将类的加载交给子类加载器来完成,从而破坏双亲委派机制。例如,可以在 Web 应用程序的 ClassLoader 中重写 loadClass() 方法,使得它可以从 Web 应用程序中加载类。使用 Thread.currentThread().setContextClassLoader() 方法:该方法可以在当前线程中设置上下文类加载器,使得类的加载可以交给指定的类加载器来完成,从而破坏双亲委派机制。例如,可以在某个 Web 应用程序中设置上下文类加载器为 Web 应用程序的 ClassLoader。使用 Java 反射机制:使用 Java 反射机制可以在运行时动态创建并加载类,从而破坏双亲委派机制。例如,可以使用 Class.forName() 方法或 ClassLoader.defineClass() 方法来加载类。需要注意的是,破坏双亲委派机制可能会引发一些安全问题和类加载冲突问题,因此应该谨慎使用。如果需要破坏双亲委派机制,可以通过设置安全策略和使用合适的类加载器来规避这些问题。
0 点赞 评论 收藏
分享
2023-03-30 10:23
泛型擦除是 Java 泛型中一种类型擦除机制,它是指在编译期间对泛型类型信息进行擦除,将泛型类型信息转换成普通的类型,从而避免了 Java 泛型运行时的性能消耗和类型转换的问题。具体而言,泛型擦除会将泛型类型参数在编译时替换成 Object 类型,并在需要类型转换的地方插入强制类型转换。例如,对于一个泛型类 List<T>,在编译时泛型类型参数 T 会被擦除,因此 List<T> 会被转换成 List<Object> 类型,并在需要类型转换的地方插入强制类型转换。泛型擦除的优点是可以使泛型代码与非泛型代码相互操作,同时还可以减少内存使用和提高性能。但它也有一些缺点,比如在运行时无法获得泛型类型信息,这可能会导致一些运行时异常。另外,泛型擦除也会限制一些使用泛型的高级特性,如泛型数组和通配符类型等。ava 泛型可以有以下几种参数:类型参数(Type Parameters):它用来指定泛型类型的占位符,可以是任意标识符,通常用大写字母来表示。例如,List<T> 中的 T 就是一个类型参数。通配符类型参数(Wildcard Type Parameters):它使用 ? 来表示一种不确定的类型参数,可以用来限制方法参数的类型范围。例如,List<? extends Number> 中的 ? extends Number 就是一个通配符类型参数,表示 List 中的元素必须是 Number 类型或其子类型。有界类型参数(Bounded Type Parameters):它可以限制泛型类型的取值范围,可以指定上界或下界。例如,<T extends Number> 中的 extends Number 就是一个有界类型参数,表示 T 必须是 Number 类型或其子类型。泛型数组参数(Generic Array Parameters):它用来指定泛型数组的类型,可以使用类型参数或通配符类型参数。例如,T[] 或 ?[] 都是泛型数组参数。以上是 Java 泛型中常用的几种参数类型,开发者可以根据自己的需要来选择合适的参数类型来定义泛型类型或方法。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务