override

聊聊skywalking的spring-cloud-gateway-plugin

假如想象 提交于 2020-03-07 10:33:09
序 本文主要研究一下skywalking的spring-cloud-gateway-plugin NettyRoutingFilterInstrumentation skywalking-6.6.0/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/cloud/gateway/v21x/define/NettyRoutingFilterInstrumentation.java public class NettyRoutingFilterInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { @Override public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } @Override public InstanceMethodsInterceptPoint[]

设计模式--静态代理

ⅰ亾dé卋堺 提交于 2020-03-07 10:25:42
package designpattern.staticagent; import java.sql.*; import java.util.Map; import java.util.Properties; import java.util.concurrent.Executor; /** * 静态代理 */ public class MyConnecntion implements Connection { //注入mysql 或者oracle的connecntion的实现 private Connection connection; private boolean close=false; public void setClose(boolean close) { this.close = close; } @Override public Statement createStatement() throws SQLException { return connection.createStatement(); } @Override public PreparedStatement prepareStatement(String sql) throws SQLException { return connection.prepareStatement(sql); }

聊聊skywalking的spring-annotation-plugin

风流意气都作罢 提交于 2020-03-06 21:35:56
序 本文主要研究一下skywalking的spring-annotation-plugin AbstractSpringBeanInstrumentation skywalking-6.6.0/apm-sniffer/optional-plugins/optional-spring-plugins/spring-annotation-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/annotations/AbstractSpringBeanInstrumentation.java public abstract class AbstractSpringBeanInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.spring.annotations.SpringAnnotationInterceptor"; public static final String INTERCEPT_GET_SKYWALKING_DYNAMIC_FIELD_METHOD =

C#中多态的实现

丶灬走出姿态 提交于 2020-03-06 18:54:44
由于可以继承基类的所有成员,子类就都有了相同的行为,但是有时子类的某些行为需要相互区别,而子类需要覆盖父类的方法来实现子类特有的行为,这就是所谓的多态,多态即相同类型的对象调用相同的方法却表现出不同行为的现象。 一.实现多态的两种常见方式 (1).虚方法(virtual):将父类的方法,添加关键字virtual,此方法在子类中用override重写。 (2).抽象类与抽象方法(abstarct):有时候基类的作用只是为子类提供公共成员,没有具体的实现操作,那么此时可以将基类及其方法定义为抽象的。子类中的方法仍用override重写。 二.虚方法(virtual)的使用 我们知道比较有名的车,有宝马,奔驰等,可以从它们中抽象出一个汽车基类,而宝马车,奔驰车作为子类 (1).基类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Polymorphic { public class Car { public virtual void carName() { Console.WriteLine("这是汽车"); } } } (2).子类 using System; using System

Java 鼠标事件监听WindowListener

丶灬走出姿态 提交于 2020-03-05 15:19:05
1、点击时产生相应的动作事件 方法摘要 void windowActivated ( WindowEvent e) 将 Window 设置为活动 Window 时调用。 void windowClosed ( WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。 void windowClosing ( WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。 void windowDeactivated ( WindowEvent e) 当 Window 不再是活动 Window 时调用。 void windowDeiconified ( WindowEvent e) 窗口从最小化状态变为正常状态时调用。 void windowIconified ( WindowEvent e) 窗口从正常状态变为最小化状态时调用。 void windowOpened ( WindowEvent e) 窗口首次变为可见时调用。 1 public class TestWindowEvent extends Frame 2 { 3 public static void main(String[] args) { 4 TestWindowEvent frame = new TestWindowEvent(); 5 frame.setSize(500, 300)

(多)线程——Thread(三)

吃可爱长大的小学妹 提交于 2020-02-29 13:53:01
Object类是所有类的祖先类。 线程加锁示例 定时器||闹钟 //定时器,闹钟 import java . util . Timer ; import java . util . TimerTask ; public class UserTime { private static class MyTimerTask1 extends TimerTask { @Override public void run ( ) { System . out . println ( "该起床了!" ) ; } } /*private static class MyTimerTask2 extends TimerTask { @Override public void run() { System.out.println("该洗脸了!"); } }*/ /*private static class MyTimerTask3 extends TimerTask { @Override public void run() { System.out.println("该刷牙了!"); } }*/ public static void main ( String [ ] args ) { Timer timer = new Timer ( ) ; timer . schedule ( new

MakeFile 变量覆盖 override

帅比萌擦擦* 提交于 2020-02-28 05:31:51
通常在执行make时,如果通过命令行定义了一个变量,那么它将替代在Makefile中出现的同名变量的定义。就是说,对于一个在Makefile中使用常规方式(使用“=”、“:=”或者“define”)定义的变量,我们可以在执行make时通过命令行方式重新指定这个变量的值,命令行指定的值将替代出现在Makefile中此变量的值。如果不希望命令行指定的变量值替代在Makefile中的变量定义,那么我们需要在Makefile中使用指示符“override”来对这个变量进行声明,像下边那样: override < variable > = < value > override < variable > : = < value > override < variable > + = < value > 对于追加方式需要说明的是:变量在定义时使用了“override”,则后续对它值进行追加时,也需要使用带有“override”指示符的追加方式。否则对此变量值的追加不会生效。 example 不使用override: 192:test lurongming$ cat makefile ZHAOLU = zhaolu all: echo "ZHAOLU" $( ZHAOLU ) 192:test lurongming$ make echo "ZHAOLU" zhaolu ZHAOLU zhaolu

Day06

徘徊边缘 提交于 2020-02-26 19:37:11
Day06 #1 private Context context; private List<String> mData; public ViewPagerAdapter(Context context, List<String> mData) { this.context = context; this.mData = mData; } @Override public int getCount() { return mData.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { return view == o; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { //加载vp的布局 View inflate = View.inflate(context, R.layout.vp_layout, null); //给布局中的控件赋值 TextView textView = inflate.findViewById(R.id.vp_tv_id); textView.setText(mData.get

Java 设计模式

混江龙づ霸主 提交于 2020-02-26 15:12:06
一 单例模式 : 解决的问题:就是可以保证一个类在内存中的对象唯一性。 public class SingleInstance { private static volatile SingleInstance singleInstance = null; private SingleInstance() { } public SingleInstance getInstance() { if (singleInstance == null) { //A synchronized (SingleInstance.class) { if (singleInstance == null) { singleInstance = new SingleInstance(); //B } } } return singleInstance; } } Note 1:添加volatile修饰避免B处指令重排序时其他线程拿到B处可能还未初始化的单例对象(完成了内存分配,引用的赋值 还未来得及进行对象的初始化)然后在A处判断单例对象不为空直接返回的未初始化的对象。 Note 2: synchronized关键字保证了临界区内变量的可见性和原子性,但无法保证临界区之外访问的变量的原子性。如果对单例对象的读写完全在临界区内,那么就不会出现线程安全问题。不过,这样就带来了性能问题。 Note 3

java Annotation(注解)

时光毁灭记忆、已成空白 提交于 2020-02-21 22:49:20
1.程序允许通过注解(Annotation)的方式进行程序的定义,而在java SE中存在3中注解:@Override、@Deprecate和@Suppress Warnings. 2.准确的覆写方法:@Override 在进行方法覆写的过程中,要求方法的名称、参数的类型及个数完全相同,而在开发时可能手误导致方法不能正确地覆写,而加上了"@Override"之后可以准确的进行方法地覆写. class Message { public String toString ( ) { //原本打算覆写toString return "Hello World" } } public class Test2 { public static void main ( String [ ] args ) throw Exception System . out . println ( new Message ( ) ) ; //错误 } } 原本打算在Message覆写类中Object的toString()方法的,但是编写方法时没有写出正确的方法名称,所以就没有发生准确的覆写,而JDK也只会认为toString是一个新的方法,所以编译不会出错,可从实际上讲,这个方法应该是被覆写了的,为了保证在编译时正常解决,在方法覆写可以增加@Override定义 准确的覆写 class Message {