• [交流吐槽] Java中>>>和>>的区别
    1、>> 带符号右移正数,在高位补0负数,在高位补12、>>> 无符号右移无论正数负数都在高位补0
  • [交流吐槽] Java中的PriorityQueue优先级队列
    PriorityQueue常用方法:下面具体通过Integer(它实现了Comparable,所以有比较能力,PriorityQueue能选出优先级高的元素)演示一下:public class Main {    public static void main(String[] args) {        Queue<Integer> queue = new PriorityQueue<>();        //入队列        queue.add(1);        queue.add(999);        queue.add(45);        queue.add(3);        queue.add(66);        //看看队首元素        System.out.println("对首元素" + queue.element());        //出队列        queue.remove();        //看看对首元素、        System.out.println("对首元素" + queue.element());        //查看队列是否为空        System.out.println(queue.isEmpty());        //输出当前队列大小        System.out.println(queue.size());    }}
  • [技术干货] java回调函数
    “通常大家说的回调函数一般就是按照别人(李四)的定好的接口规范写,等待别人(张三)调用的函数,在C语言中,回调函数通常通过函数指针来传递;在Java中,通常就是编写另外一个类或类库的人(李四)规定一个接口,然后你(张三)来实现这个接口,然后把这个实现类的一个对象作为参数传给别人的程序,别人的程序必要时就会通过那个接口来调用你编写的函数。”    使用技巧:定一个接口,在接口中声明我们想调用的方法。                    在另一个方法中注册刚定义的回调接口第一步:定义回调接口123456789101112131415package com.callback;  /** * @since 2012-02-02 * @desc 定义回调接口 */public interface CallBackInterface {    public void doSome();       public void exectueMethod();}第二步:李四编写的程序12345678910111213141516171819202122232425package com.callback;  /** * @since 2012-02-02 * @desc 李四 */public class MethodB {    public double getTime(CallBackInterface callBack) {    long start = System.currentTimeMillis();    callBack.exectueMethod();    long end = System.currentTimeMillis();    System.out.println("cost time=" + (end - start));    return end - start;  }}  第三步:张三实现李四规定的接口12345678910111213141516171819202122232425262728293031323334353637383940package com.callback;  /** * @since 2012-02-02 * @desc 张三 */public class MethodA {    public static void main(String args[]){    MethodB b=new MethodB();    //返回值d只和MethodB有关,和接口中方法的返回值无关    double d=b.getTime(new CallBackInterface() {              //张三实现了李四定义的接口      public void exectueMethod() {        new MethodA().testMethod();      }              @Override      public void doSome() {                }    });    System.out.println("d="+d);  }      public void testMethod(){    for(int i=0;i<10000;i++){      System.out.print("");    }  }}  输出结果:12cost time=31d=31.0理解“回调函数”所谓回调,就是客户程序CLIENT调用服务程序SERVER中的某个函数SA,然后SERVER又在某个时候反过来调用CLIENT中的某个函数CB,对于CLIENT来说,这个CB便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,CLIENT不会自己调用CB,CLIENT提供CB的目的就是让SERVER来调用它,而且是CLIENT不得不提供。由于SERVER并不知道CLIENT提供的CB叫甚名谁,所以SERVER会约定CB的接口规范(函数原型),然后由CLIENT提前通过SERVER的一个函数R告诉SERVER自己将要使用CB函数,这个过程称为回调函数的注册,R称为注册函数。Web SERVERerviCliente以及Java的RMI都用到回调机制,可以访问远程服务器程序。下面举个通俗的例子:某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。通过上面个人感觉到回调函数更多的应用就是结合异步。比如:ajax中jServer通过组件和服务器的异步通信。什么是回调函数精妙比喻:回调函数还真有点像您随身带的BP机:告诉别人号码,在它有事情时Call您回调用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。其实回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调,在需要调用时,只需引用这个函数指针和相关的参数指针。
  • [专家内容共创任务] 【云享MindTalks·第二期】#云享专家张常乐在线陪聊#探秘双十一百万PV,Java电商平台开发技能图谱你get了吗?
    乐乐老师的问答集锦Q:自己能写代码,但是看不懂别人的代码,如何理解别人的语法?A:首先需要解决的问题是为什么没办法理解别人的语法,是不了解相关技术基础,还是不了解业务逻辑,还是其他人的代码确实写的有点难以理解。针对上面不同的原因,我给出以下建议:一、不理解相关技术,不妨就直接找实现这段代码的同事,请他给你简单brief一下相关技术,往深了学还是要靠你自己。或者是更高效的做法就是在code review或者tech session中请他分享一下有关技术,这样整个知识就在团队内部显式化。二、不了解业务逻辑,不清楚这个逻辑为什么这样做,那就需要去找当时需求的提出人,自己团队内部的产品经理或者业务分析师,或者是写这段代码的人,找他们了解业务上下文,弄清楚这里为什么这样做,这个逻辑解决了什么样的问题,达成了什么样的目的;其他人的代码确实有bad smell,这时候事情就变得有意思起来了,我希望你可以checkout一个新分支,大胆的补齐测试然后对这段代码进行重构,在code review的时候给出自己重构的理由,show一把自己的技术。 Q:如何将知识点搭配起来完成一个比较复杂的项目?A:如果是学了一个知识点,打算在项目中使用的话,一定要保证自己首先能完成一个最基本的项目,从0-1让一个项目先跑起来,然后再去考虑如何将所学的知识点(比如redis,分布式锁,zookeeper,MQ等)去和这个项目进行集成,当然如果是对于这些知识点是否真正工作,还需要自己想清楚集成了之后如何观察和测试。大部分项目都会在官网有demo,如果看不懂英文官网的文档的话,先好好学习英语哟! Q:从简单敲一段代码到项目级的进阶之路怎么走?A:项目是由一段段代码组成的,在我看来如果关注项目级别的事情,那么说明自己选择的是程序员,TL,架构师这条路而不是纯管理岗,当你能完成一个简单的CURD业务逻辑,让一个功能run起来之后,就可以开始关注架构设计方面的知识,了解当前项目痛点,寻找如何通过更好的架构设计,引入新技术来解决。我最近在阅读的《架构整洁之道》,《大型网站技术架构-核心原理与案例分析》,《大型网站系统与Java中间件实践》都是不错的书籍,推荐需要的同学阅读。乐乐老师的四个一内容回顾一份技能图谱(文末自取)由诸多一线大厂开发人员和技术负责人共同整理的Growing技能图谱一条学习线路(文末自取)大佬珍藏,迭代至今的学习线路一个知识点——压力测试压力测试:在软件测试中,压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。一个实战案例——应对双十一百万PV挑战双十一马上就要到了,便宜用户拿了,利润商家收了,剩下的这一大波突如其来的流量留给了我们的开发者,如何在限量秒杀,限时支付,拼团拼购等玩法下维护服务系统的正常运行,成了横亘在乐乐老师和双十一之间必须要攻克的挑战。他们在怎么做呢?——优化性能利用Gatling对加购,结算,支付,退款,订单生成以及限量秒杀,红包卡券等功能进行了详尽的性能测试,生成了服务SLA的同时利用Arthas对热点代码进行监控,结合业务逻辑提出了很多优化方案。例:在架构上:分别在网关层(Nginx,API Gateway),容器层(Tomcat)和服务层进行了限流配置和流量监控,使用了诸如令牌桶,流速控制以及最大连接数控制等方案保证服务稳定性。代码层面:结合业务逻辑减少了锁粒度并适当对锁进行了降级来减少锁争用情况。简单来说就是减少被锁住的代码块,只去对该同步的地方同步。基础设施层面:配置动态扩容规则,并且准备了备用机器以防单点故障,增加备用数据库配置级别,对数据库等服务进行了适当实例增强准备,同时进行了详细的基础设施故障演练,应对突发状况制定响应规则和响应策略。想要更多资源,请持续关注我们的活动……扫码加微信群,仅限200人开始时间10月29日 20:00活动介绍云享MindTalks是由华为云DevCloud团队携手云享专家共同策划进行的系列技术交流活动。各业界大咖纷纷现身群聊,以即时对话形式,来进行最直接的技术交流和思想碰撞。为保证极简极高效,活动仅二十分钟,开始即高潮,结束即群散。针对上一期问卷反馈,这期由张常乐老师,在双十一大促前夕忙于技术支撑的前主播,来和我们进行面对面的分享:在大家节衣缩食养精蓄锐准备买买买的时候,他和他的团队为何忙于Java程序无法自拔?从模特成功转行开发者的技能图谱如何点亮?专家介绍忙于技术支撑的前主播,华东区Tech Lead;拥有5年Java开发经验,现役CSDN博客专家,华为云云享专家,Thoughtworks咨询师。热爱分享的常乐君,还喜欢leetcode打野,是一个凭实力进入周赛前排的模特。活动规则1.扫码加入群聊,仅限200人,手慢者即无。2.未能即时回复问题,由助手收集集中回答。3.微信群聊将于活动结束后三天内原地解散。4.抽奖的奖品为荣耀魔方蓝牙音箱(树莓红)和华为云定制礼品HE2E知识卡牌。技能图谱.zip656.56 KB,下载次数:23学习路线.zip143.85 KB,下载次数:18
  • [问题求助] spec jvm使用毕昇jdk报javac检查不过
    看毕昇jdk的介绍,在specjvm上性能有4.6%提升。安装配置毕昇jdk 11# java -versionopenjdk version "11.0.10" 2021-02-27OpenJDK Runtime Environment Bisheng (build 11.0.10+13)OpenJDK 64-Bit Server VM Bisheng (build 11.0.10+13, mixed mode)运行specjvm测试,报javac检查不过,请问怎么解决?The Javac version test in check failed.The Javac version must be the one included in SPECjvm2008.另外请问xms等堆栈参数能否配置在specjvm.properties中,如何配置?
  • [技术干货] 日常Java练习题10
    下列说法正确的是()正确答案: A B 你的答案: A B (正确)JAVA程序的main方法必须写在类里面JAVA程序中可以有多个名字为main方法JAVA程序中类名必须与文件名一样JAVA程序的main方法中,如果只有一条语句,可以不用{}(大括号)括起来题解:答案:ABA,java是强类型语言,所有的方法必须放在类里面,包括mainB ,java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口C,内部类的类名一般与文件名不同D,函数都必须用{}括起来,不管是一条语句还是多条语句
  • [交流吐槽] 日常Java练习题9
    java中提供了哪两种用于多态的机制正确答案: A B 你的答案: A B(正确)通过子类对父类方法的覆盖实现多态利用重载来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。利用覆盖来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。通过子类对父类方法的重载实现多态题解:Java通过方法重写和方法重载实现多态方法重写是指子类重写了父类的同名方法方法重载是指在同一个类中,方法的名字相同,但是参数列表不同
  • [交流吐槽] 日常Java练习题8
    指出下列程序运行的结果()public class Example{    String str = new String("good");    char[ ] ch = { 'a' , 'b' , 'c' };    public static void main(String args[]){        Example ex = new Example();        ex.change(ex.str,ex.ch);        System.out.print(ex.str + " and ");        System.out.print(ex.ch);    }    public void change(String str,char ch[ ]){        str = "test ok";        ch[0] = 'g';    }}good and abcgood and gbctest ok and abctest ok and gbc
  • [交流吐槽] 日常Java练习题7
    局部变量能否和成员变量重名?正确答案: A 你的答案: A (正确)可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量可以,这时可用“local”关键字来指向局部变量不能,局部变量不能与成员变量重名不能,在一个类中不能有重名变量,不管是成员变量还是函数中的局部变量题解:java采用局部优先的思想。局部变量可以和成员变量相同,使用标识符调用时,优先使用局部变量。在实例方法中出现变量名相同时,可以使用this关键字来调用。
  • [互动交流] java.lang.NoSuchMethodError: okhttp3.internal.http.RetryAndFollo
    创建文件夹接口、上传文件都报这个错,java的:Caused by: java.lang.NoSuchMethodError: okhttp3.internal.http.RetryAndFollowUpInterceptor.<init>(Lokhttp3/OkHttpClient;Z)V    at okhttp3.RealCall.<init>(RealCall.java:51)    at okhttp3.OkHttpClient.newCall(OkHttpClient.java:419)    at com.obs.services.internal.RestStorageService.tryRequest(RestStorageService.java:408)    at com.obs.services.internal.RestStorageService.performRequest(RestStorageService.java:368)
  • [交流吐槽] 日常Java练习题6
    一个类中,有两个方法名、形参类型、顺序和个数都完全一样,返回值不一样的方法,这种现象叫覆盖。( )正确答案: B 你的答案: B (正确)正确错误题解:重载(overload)和重写(override)的区别: 重载就是同一个类中,有多个方法名相同,但参数列表不同(包括参数个数和参数类型),与返回值无关,与权限修饰符也无关。调用重载的方法时通过传递给它们不同的参数个数和参数类型来决定具体使用哪个方法,这叫多态。 重写就是子类重写基类的方法,方法名,参数列表和返回值都必须相同,否则就不是重写而是重载。权限修饰符不能小于被重写方法的修饰符。重写方法不能抛出新的异常或者是比被重写方法声明更加宽泛的检查型异常。
  • [交流吐槽] 日常Java练习题5
    以下关于 abstract 关键字的说法,正确的是()正确答案: D 你的答案: D (正确)abstract 可以与final 并列修饰同一个类。abstract 类中不可以有private的成员。abstract 类中必须全部是abstract方法。abstract 方法必须在abstract类或接口中。题解:1、abstract类不能与final,static使用。final修饰方法,子类可以调用,但不能覆盖。2、最好不要有private因为私有和抽象放在一起,子类如果想重写父类的私有方法根本继承不过来,也就无法重写3、抽象类中可以有非抽象方法4、抽象类中可以都是非抽象的,但是抽象方法一定要在类和接口中
  • [交流吐槽] 日常Java练习题4
    现有一变量声明为 boolean aa; 下面赋值语句中正确的是 ( )正确答案: A 你的答案: A (正确)aa=false;aa=False;aa=“true”;aa=0;题解:boolean的值要不是true,要不就是false。
  • [技术干货] redis 支持的 Java 客户端
    支持的 Java 客户端有 Redisson、jedis、lettuce 等
  • [交流吐槽] 日常Java练习题3
    以下代码执行后输出结果为( )public class ExceptionTest{    public void method()    {        try        {            System.out.println("进入到try块");        }        catch (Exception e)        {             System.out.println("异常发生了!");        }        finally        {            System.out.println("进入到finally块");        }            System.out.println("后续代码"); }     public static void main(String[] args)     {         ExceptionTest test = new ExceptionTest();         test.method();     } }进入到try块 异常发生了! 进入到finally块 后续代码进入到try块 进入到finally块 后续代码进入到try块 后续代码异常发生了! 后续代码题解:对于这题,没有异常,直接从try进入到finally,然后执行下面的后续代码。
总条数:2294 到第 页
上滑加载中