Android中如何实现多个自定义View之间的相互控制?

比如说有两个自定义View:第一个可以显示一个数字;第二个是个键盘,点击它可以改变第一个view的内容。

两个view都放在MainActivity里。除了把第一个view作为第二个view的成员变量,在MainActivity.java里设置以外,有其它方法可以实现吗?

(比如findViewById之类的,在这种情况下可以使用吗,如果可以的话要如何使用?)

1个回答

“第一个可以显示一个数字;第二个是个键盘,点击它可以改变第一个view的内容“
所以你只需要在第二个自定义View的点击的地方,利用接口,将该点击事件传递到接口实现中,在接口实现中去改变第一个View的状态。
类似于View.setOnClickListener(...)的方式。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android 自定义View点击事件

# 给自定义小图标(箭头所指)添加OnclickListener(); # 结果 # 只要点击屏幕就会响应了 刚接触Android不久,不知道哪里的问题,求大神指点。 ![图片说明](https://img-ask.csdn.net/upload/201511/05/1446715229_242966.png) ``` public class Map extends Fragment implements OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View root = inflater.inflate(R.layout.map, container, false); FrameLayout frameLayout = (FrameLayout) root .findViewById(R.id.maplayout); /** * 新建一个图标 * * @author prohan * @param Context * context int x ,int y 添加的点的左上角位置 int id 设置节点ID */ final Myview myview = new Myview(this.getActivity(), 830, 880); myview.setOnClickListener(this); myview.setId(10); frameLayout.addView(myview); return root; } public void onAttach(Activity activity) { super.onAttach(activity); } class Myview extends View { public int bitmapx; public int bitmapy; public Myview(Context context, int x, int y) { super(context); this.bitmapx = x; this.bitmapy = y; } @Override protected void onDraw(Canvas canvas) { Paint point = new Paint(); point.setAlpha(150); Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.point); canvas.drawBitmap(bitmap, null, new Rect(bitmapx, bitmapy, bitmapx + 60, bitmapy + 100), point); // canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint); // canvas.drawBitmap(bitmap, bitmapx, bitmapy, point); } } // Onclick中的方法 private void alertmessage() { AlertDialog alert = new AlertDialog.Builder(this.getActivity()) .create(); alert.setIcon(R.drawable.ic_launcher);// 设置对话框的图标 alert.setTitle("当前站点信息:"); alert.setMessage("XXXXXXXXXXXXXXXX"); alert.show(); } @Override public void onClick(View v) { switch (v.getId()) { case 10: Toast.makeText(getActivity(), "#" + v.getId() + "#" + "8号楼监测站", Toast.LENGTH_SHORT).show(); alertmessage(); break; default: break; } } } ``` # 如果能告诉我如何能让myview跳动起来就最好啦

Android 自定义View 中如何 再new 一个Canvas

bitmapCanvas = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888); canvas2 = new Canvas(bitmapCanvas); odDraw里 canvas2.drawBitmap(bitmapCanvas, 0, 0, mPaint); canvas2.drawLine(0, 0, 200, 200, paint); 这样写对么??我的没有效果~

Android 自定义view实现界面下拉,不是下拉刷新

就像随便打开一条微信公众号,查看一个别人推送的信息,内容部分就可以下拉。

关于Android 自定义View中的onDraw里的drawBitmap。

关于Android 自定义View中的onDraw里的drawBitmap 有一个半圆的图片,是一个统计图(就是油箱表的那样),还有一个指针的图片要把指针添加到图片里,然后传值让那个指针根据而移动。 找不到什么方法,所以求教下大神 我现在能把指针添加在图片里就是怎么让指针头移动不会做 我的代码是: ``` float getx; float gety; float jiangex,jiangey,yuandianx,yuandiany; protected void onDraw(Canvas canvas) { super.onDraw(canvas); //获取控件的X轴 getx = getX(); //获取控件的Y轴 gety = getY(); //将X轴分成10份 jiangex = getWidth() / 10; //将Y轴分成5份 jiangey = getHeight()/5; //设置一个X轴原点让X轴在中间 yuandianx = getx+jiangex*5; //设置一个Y轴原点 yuandiany = gety+jiangey; //画笔1 Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStrokeWidth(5); paint.setAntiAlias(true); //画笔2 Paint paint1 = new Paint(); paint1.setColor(Color.BLUE); paint1.setStrokeWidth(5); paint1.setAntiAlias(true); //添加图片 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.zhen); //让图片在控件上显示 canvas.drawBitmap(bitmap, yuandianx,yuandiany-30, paint1); } ``` ```![图片说明](https://img-ask.csdn.net/upload/201905/28/1559023454_575078.png)![图片说明](https://img-ask.csdn.net/upload/201905/28/1559023460_299691.png)![图片说明](https://img-ask.csdn.net/upload/201905/28/1559023476_611632.png)

android自定义view画圆,怎么实现如下效果?

如何绘制多个圆,让多个圆连起来围成一个圆。 这个应该是怎么计算的?sos

安卓,多个Fragement切换,自定义View会重新加载

我做了一个下拉刷新的自定义View 在首页上,但从首页栏切换至另一个Fragement中 里面的RecyleView全部重新加载,自定义View调用了onDetachedFromWindow方法,但官方ListView却不会被重新加载 所以想问一下 是否有方法能让自定义View在fragement切换中不被重新加载

关于Android自定义view的问题

小菜在使用代码自定义view中遇到几个问题想请大神 解答 1、在drawRect(float left,flat top,float right,float bottom,Paint paint)中前四个参数是指绘制矩形view的坐标,意味着左上角和左下角的坐标都被确定了,那么他的长度和宽度不是就已经被确定好了么?如果不是请赐教如何不通过xml来设置其长度和宽度。(最好能是正方形的) 2、在onDraw()方法中如何定义多个矩形view? 3、在自定义矩形view中,如果要设置文字如何使其在矩形vie中心处?

android 自定义view调用invalidate有时候保留上次绘制的线

如题,本人自定义一个折线图,应为数据接口合不上就弄了一个适配器模式匹配数据,但是多次跟新数据重新设置适配器时候,有时发现折线图会出现上一次数据绘制的一根线,代码如下: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); getPaint().reset(); /** * 外框线 */ // 设置颜色 getPaint().setColor(substrateColor); // 设置宽度 getPaint().setStrokeWidth(2); // 线的坐标点 (四个为一条线) float[] pts = {LEFTUPX, LEFTUPY - 20, LEFTUPX, LEFTDOWNY, LEFTUPX, LEFTDOWNY, RIGHTDOWNX + 20, LEFTDOWNY}; // 画线 canvas.drawLines(pts, getPaint()); /** * 箭头 */ // 通过路径画三角形 Path path = new Path(); getPaint().setStyle(Paint.Style.FILL);// 设置为空心 path.moveTo(LEFTUPX - 5, LEFTUPY - 20);// 此点为多边形的起点 path.lineTo(LEFTUPX + 5, LEFTUPY - 20); path.lineTo(LEFTUPX, LEFTUPY - 35); path.close(); // 使这些点构成封闭的多边形 canvas.drawPath(path, getPaint()); // 第二个箭头 path.moveTo(RIGHTDOWNX + 20, LEFTDOWNY - 5);// 此点为多边形的起点 path.lineTo(RIGHTDOWNX + 20, LEFTDOWNY + 5); path.lineTo(RIGHTDOWNX + 35, LEFTDOWNY); canvas.drawPath(path, getPaint()); /** * 中间虚线 */ float[] pts2 = new float[(updownlines + leftrightlines) * 4]; // 计算位置y轴标题 if (updownlines != 0) { for (int i = 0; i < updownlines; i++) { float x1 = LEFTUPX; float y1 = LEFTDOWNY - (i + 1) * UPDOWNSPACE; float x2 = RIGHTDOWNX; float y2 = LEFTDOWNY - (i + 1) * UPDOWNSPACE; pts2[i * 4 + 0] = x1; pts2[i * 4 + 1] = y1; pts2[i * 4 + 2] = x2; pts2[i * 4 + 3] = y2; getPaint().setColor(Color.BLACK); getPaint().setTextSize(25); if (showRule != null) { if (showRule.showVerticalTitle(i)) canvas.drawText(String.valueOf(verticalTitle[i]), x1 + 5, y1 + 10, getPaint(titleColor)); } else { canvas.drawText(String.valueOf(i), x1 + 5, y1 + 10, getPaint(titleColor)); } } } // 计算位置x轴上标题 if (leftrightlines != 0) { for (int i = 0; i < leftrightlines; i++) { float x1 = LEFTUPX + (i + 1) * LEFTRIGHTSPACE; float y1 = LEFTUPY; float x2 = LEFTUPX + (i + 1) * LEFTRIGHTSPACE; float y2 = LEFTDOWNY; pts2[(i + updownlines) * 4 + 0] = x1; pts2[(i + updownlines) * 4 + 1] = y1; pts2[(i + updownlines) * 4 + 2] = x2; pts2[(i + updownlines) * 4 + 3] = y2; if (showRule != null) { if (showRule.showLandsTitle(i)) { Paint pen = getPaint(); if (showRule.markLandsTitle(String.valueOf(lanspaceTitle[i]))) { pen.setColor(markTitleColor); Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD); pen.setTypeface(font); } else { pen.setColor(titleColor); Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL); pen.setTypeface(font); } canvas.drawText(String.valueOf(lanspaceTitle[i]), x2 - 10, y2 + 30, pen); } } else { canvas.drawText(String.valueOf(i), x2 - 10, y2 + 30, getPaint(titleColor)); } } if (showRule != null && !TextUtils.isEmpty(showRule.landsUnit())) { float[] widths = new float[1]; float width = 0; for (int j = 0; j < (String.valueOf(lanspaceTitle[lanspaceTitle.length - 1])).length(); j++) { getPaint().getTextWidths(String.valueOf((String.valueOf(lanspaceTitle[lanspaceTitle.length - 1]).charAt(j))), widths); width += widths[0]; } canvas.drawText(showRule.landsUnit(), LEFTUPX + (leftrightlines) * LEFTRIGHTSPACE + width, LEFTDOWNY + 30, getPaint(titleColor)); } } getPaint().setColor(imaginaryLineColor); getPaint().setStrokeWidth(1); if (showRule != null && showRule.showImaginaryLine()) canvas.drawLines(pts2, getPaint()); getPaint().setStrokeWidth(2); if (showRule != null) { if (intervalTime == 0) { number = 50; count = dataSize - 1; //一定要先画矮的那根线,否则会被遮盖 if (/*listY2.size() > 0*/list.size() > 0) canvasDataLines(canvas, 1, firstLineColor, firstBelowColor); if (list.size() > 0) canvasDataLines(canvas, 0, secondLineColor, secondBelowColor); isFinish = true; } else { if (list.size() > 0) canvasDataLines(canvas, 1, firstLineColor, firstBelowColor); if (list.size() > 0) canvasDataLines(canvas, 0, secondLineColor, secondBelowColor); handler.sendEmptyMessage(1); } } if (clickPoint != null) { Log.e("Click", "postInvalidate--->>>onDraw"); //点击后的浮现效果出现 selectedView.setPointf(clickPoint.getLine() == PointBean.THEFIRSTLINE ? clickPoint.getUppointF() : clickPoint.getDownPoint()) .setAlterBgColor(clickPoint.getLine() == PointBean.THEFIRSTLINE ? clickSecondLineBgColor : clickFirstLineBgColor) .setFontColor(clickPoint.getLine() == PointBean.THEFIRSTLINE ? clickFirstLineFontColor : clickSecondLineFontColor) .setCircleColor(clickPoint.getLine() == PointBean.THEFIRSTLINE ? clickSecondLineCircleColor : clickFirstLineCircleColor) .setTextValue(clickPoint.getLine() == PointBean.THEFIRSTLINE ? clickPoint.getText() : clickPoint.getText2()) .setMargin(selectedView.getCrossBorder()?-50:30) .draw(canvas); //如果需要这个浮现效果自动消失就用一个handler将clickPoint制空并且重新绘制就好了 } } /** * 画折线 * * @param canvas * @param listY * @param color * @param endColor */ private synchronized void canvasDataLines(Canvas canvas, int flag, int color, int endColor) { // 线的路径 Path path2 = new Path(); // 共几个转折点 for (int i = 0; i < count; i++) { if (i == 0) { path2.moveTo(list.get(i).getX(), flag==0?list.get(i).getY1():list.get(i).getY2()); } else { path2.lineTo(list.get(i).getX(), flag==0?list.get(i).getY1():list.get(i).getY2()); } } // 上一个点 减去 下一个点的位置 计算中间点位置 path2.lineTo(list.get(count - 1).getX() + (list.get(count).getX() - list.get(count - 1).getX()) / 50 * number, flag==0?list.get(count - 1).getY1():list.get(count - 1).getY2() + (flag==0?list.get(count).getY1():list.get(count).getY2() - flag==0?list.get(count - 1).getY1():list.get(count - 1).getY2()) / 50 * number); getPaint().setColor(color); getPaint().setStrokeWidth(2); getPaint().setStyle(Paint.Style.STROKE);// 设置为空心 canvas.drawPath(path2, getPaint()); path2.lineTo(list.get(count - 1).getX() + (list.get(count).getX() - list.get(count - 1).getX()) / 50 * number, LEFTDOWNY); path2.lineTo(list.get(0).getX(), LEFTDOWNY); path2.lineTo(list.get(0).getX(), flag==0?list.get(0).getY1():list.get(0).getY2()); getPaint().setStyle(Paint.Style.FILL);// 设置为空心 canvas.drawPath(path2, getShadeColorPaint(endColor,color)); getPaint().reset(); }

关于Android自定义View的一个问题,进来讨论一下

1.自己有时候会使用java结合xml的写法,比如写一个ActionBar 代码如下 java: ![图片说明](https://img-ask.csdn.net/upload/201507/27/1437958556_324764.png) 用了inflater来加载 xml的布局如下: ![图片说明](https://img-ask.csdn.net/upload/201507/27/1437958678_607085.png) 2.进来我仔细想了一下,自定义的TitleBarView是LinearLayout,布局也是LinearLayout,TitleBarView添加了一个LinearLayout,那不是重复了一个布局,是嵌套了一个 布局 3,能有方法不嵌套吗?防止多一个LinearLayout

android 在 view 里我使用一个 自定义的 canvas 画图 出现问题

在 view 里我使用一个 自定义 canvas 画图。先在 canvas 里画出背景, 再画出几个图片。 背景是一个张图片。当触发 onTouchEvent 后,图片移动 canvas 重画背景画出来会有图片移动的痕迹。 如果背景指定了一个颜色就不会有这样的问题。 怎么解决? canvas = new Canvas(bgbitmap); 绘制背景: canvas.drawColor(selectedColor); 如果用 drawBitmap 绘制背景会有问题 // canvas.drawBitmap(bgbitmap, 0, 0, null); // 绘制 图片 for (int i = fbmpCount - 1; i >= 0; i--) { FreeBitmap fb = findFreeBmpByPriority(i); if (fb != null) this.canvas.drawBitmap(fb.getBmp(), fb.getXpoint(), fb.getYpoint(), null); } this.invalidate(); // onDraw 方法。 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(bgbitmap, 0, 0, null); }

Android addview自定义控件不显示问题

为什么我在onCreat中addview一个自定义控件能够正常显示,但是在onWindowsFoucsChanged里面addview总是显示不出来

[Android界面] 新手求助:自定义控件重复显示问题

定义了一个倒计时的控件,初始显示为“开始”,点击后从10开始倒计时,一直到0。可是在控件上会额外显示一个文本,如下图 ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480338890_452955.png) 额外显示的文本也会在点击开始后倒计时,找了好久一直没发现问题所在。所以请教一下各位大神。 其中自定义控件代码如下: ``` public class CustomView_A7 extends TextView{ private Paint paint = new Paint(); private Rect rect = new Rect(); private int mBackgroundColor= ContextCompat.getColor(getContext(), R.color.colorPrimary); private int mTextColor = Color.WHITE; public CustomView_A7(Context context) { super(context); } public CustomView_A7(Context context, AttributeSet attrs) { super(context, attrs); } public CustomView_A7(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画圆 paint.setColor(mBackgroundColor); canvas.drawCircle(getWidth()/2, getWidth()/2, getWidth()/2, paint); //画数字 paint.setColor(mTextColor); paint.setTextSize(240); String text = (String)this.getText(); paint.getTextBounds(text, 0, text.length(), rect); int textWidth = rect.width(); int textHeight = rect.height(); canvas.drawText(text, getWidth()/2 - textWidth/2, getWidth()/2 + textHeight/2, paint); } } ``` Layout中只有一个自定义控件: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.administrator.androidstudyapp.CustomView_A7 android:layout_width="240dp" android:layout_height="240dp" android:layout_gravity="center" android:layout_margin="@dimen/activity_vertical_margin" android:id="@+id/customView_A7"/> </LinearLayout> ``` 难道是Activity中的问题吗,还麻烦各位帮帮忙: ``` public class Point_A7_Activity extends AppCompatActivity{ private CustomView_A7 mCustomViewA7; private int value = 10000; //10秒 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 8888: int value = (int) msg.obj; mCustomViewA7.setText(String.valueOf(value/1000f)); if(value > 0){ Message message = handler.obtainMessage(); message.arg1 = 1; message.arg2 = 2; message.what = 8888; message.obj = value - 100; sendMessageDelayed(message, 100); } break; } } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_point_a7); mCustomViewA7 = (CustomView_A7) findViewById(R.id.customView_A7); mCustomViewA7.setText("开始"); mCustomViewA7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Message message = handler.obtainMessage(); //不要使用Message message = new Message(); message.arg1 = 1; message.arg2 = 2; message.what = 8888; message.obj = value ; handler.sendMessageDelayed(message, 100); } }); } } ```

Android-HorizontalScrollView控件里面可以嵌套自定义ViewGroup吗?

【HorizontalScrollView控件里面可以嵌套自定义ViewGroup吗?嵌套之后不显示ViewGroup里的控件。】 在网上看到的一个自定义ViewGroup控件,是一个实现3D旋转效果的容器类, 然后试图把它往HorizontalScrollView里面套,结果发现不显示。是为什么? 是因为HorizontalScrollView里面不能包含ViewGroup吗?还是其他地方有问题? 想实现多个3D旋转容器一起放在界面里,且可以横向拖动,类似于coverflow那种效果。如果这个方法不行,有没有其他思路?刚接触Android没多久,如果有明显错误的地方,希望大家直接指出,谢谢~ 下面是布局代码: ``` <HorizontalScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> <com.study.testanything.custom.StereoView android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/p12"/> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/p10"/> </com.study.testanything.custom.StereoView> </HorizontalScrollView> ``` 下面是StereoView重写onMeasure方法的代码,如果有其他需要贴出的代码,大家请指出~ ``` @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); measureChildren(widthMeasureSpec, heightMeasureSpec); mWidth = getMeasuredWidth(); mHeight = getMeasuredHeight(); //滑动到设置的StartScreen位置 scrollTo(0, mStartScreen * mHeight); } ```

【Android】View如何实现多个监听以及如何设置Bitmap在视图中的位置?

自定义了一个View,在onTouch方法里执行的是画笔涂鸦的操作,并且在这个View里面绘制了一个Bitmap。现在这个View还需要监听手势实现Bitmap两个手指缩放、拖动的操作。 1. 请问如何实现多个监听,或者两个监听该如何切换? 2. 请问如何设置Bitmap在View中的位置?

Android下 自定义Camera类如何绑定多个SurfaceView?

本人正在做一个需求,需要动态地将系统相机的色彩效果显示出来,因此想要能够在多个SurfaceView中显示不同的色彩效果预览界面。各位大大如果有思路有想法还请多多赐教~

Android如何同时缩放两个自定义ImageView

现在我有两个ImageView A和B B放在下方 A放在上方,AB大小相同且完全重合 请问如何手势缩放两个ImageView让两张ImageView无论何时都处于完全重合状态, 手势已经实现,但无论如何都只能缩放最上方图片(我需要下层图片的点击点的XY坐标)

android View与线程绘制一个小球沿轨迹运动

实现绘制一个小球,并运用线程的sleep使小球沿着一个圆运动如何实现

是用一个Activity对应一个界面,还是一个个自定义的View对应一个界面

从网上看到的很多例子都是:整个应用一个Activity,然后所有的界面采用自定义的派生自View的类实现,比如:MenuView、SplashView、HelpAboutView,在Activity中根据应用的状态(状态机形式),用setContentView来切换各个视图,这样就是一个View对应一个界面。还有一种写法,就是用一个Activity来对应一个界面,根据应用的状态在各个Activity间进行切换。我想问下这两种写法谁优谁劣,各有什么优点和弊端;在什么情况下应该用一个Activity对应一个界面,什么情况下用一个View对应一个界面?

可以拖动的半圆自定义进度条

# 今天项目中有一个要求,就是做一个自定义的半圆拖动进度条,![图片说明](https://img-ask.csdn.net/upload/201508/07/1438918573_10945.png) 效果图像这样, 上面的进度条 背景色渐变 中间白色 两变其他颜色 。下面的进度条是上面的关于X轴对称,且滑动方向相反。下面附上代码[](http://download.csdn.net/detail/merryassa/8972571 "") 源码效果是上面没有渐变色的样子 求大神帮忙。帮我看下代码,希望能多给点代码注释,谢谢啦!!!。

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

讲一讲什么是Java内存模型 Java内存模型虽说是一个老生常谈的问题 ,也是大厂面试中绕不过的,甚至初级面试也会问到。但是真正要理解起来,还是相当困难,主要这个东西看不见,摸不着。 这是一个比较开放的题目,面试官主要想考察的是对Java内存模型的了解到了什么程度了,然后根据回答进行进一步的提问 下面,我们就这个问题的回答列一下我们的思路 具体的思路如下: 说一说Java内存模型的缘由 简略辨析...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐