download:高级Redis应用进阶课 一站式Redis解决方案
本课程以一个实战项目为主线,整合Redis各种问题场景,不断改造项目,以问带学。学完本课后,面对Redis相关问题,你将能够快速进行排查与修复,无论实际工作还是跳槽面试你都将游刃有余。
适合人群
对Redis有兴趣,但不懂如何和项目深度结合的后端工程师
了解Redis日常操作,但不懂得Redis底层原理的后端工程师
遇到Redis故障完全没有思路,不知如何解决的后端工程师
技术储备要求
后端web开发基础
canvas.drawLine(x1, y1, x2, y2, scoreRingPaint);
axisLablePaint.setTextSize(axisLableTextSize);
axisLablePaint.setTextAlign(Paint.Align.CENTER);
axisLablePaint.setColor(mInnerScoreRingColor);
float axisLable_fonth = getFontHeight(axisLablePaint);
float labelRadius =innerScoreDiameter/2 - inner_ringWidth - axisLable_fonth/2 + 3;
float x3 = (float) (centerX + labelRadius * sinValue);
float y3 =(float) (centerY + labelRadius * cosValue);
canvas.save();
canvas.rotate(90+ degree,x3,y3); //绘製倾斜文字
canvas.drawText(axisLabelStrs[i],x3,y3 + getFontCenterYToBaseLine(axisLablePaint),axisLablePaint);
canvas.restore();
}
scoreTextPaint.setTextAlign(Paint.Align.CENTER);
scoreTextPaint.setTextSize(scoreTextSize);
scoreTextPaint.setColor(mScoreColor);
double rAngle = Math.toRadians(90 - (-180 + offset_degree)); //弧度
float offset_y = (float)(maxOutterScoreRadius*Math.cos(rAngle));
float scoreBaselineY = centerY + offset_y;
float tempH = getFontTopYToBaseline(scoreTextPaint);
canvas.drawText(nFormat.format(score), centerX, scoreBaselineY, scoreTextPaint);
scoreTextPaint.setTextSize(scoreTitleTextSize);
scoreTextPaint.setColor(mScoreTitleColor);
float scoreTitleBaselineY = scoreBaselineY - tempH - Tool.dpToPx(2);
canvas.drawText(mScoreTitleStr, centerX, scoreTitleBaselineY, scoreTextPaint);
}
public static float getFontHeight(Paint textPaint){
Paint.FontMetrics fm = textPaint.getFontMetrics();
return (float)Math.ceil(fm.descent - fm.ascent) + 3;
}
public static float getFontTopYToBaseline(Paint textPaint){
Paint.FontMetrics fm = textPaint.getFontMetrics();
return (float)Math.ceil(-fm.ascent) + 3;
}
public static float getFontBottomYToBaseline(Paint textPaint){
Paint.FontMetrics fm = textPaint.getFontMetrics();
return (float)Math.ceil(fm.descent) + 3;
}
public static float getFontCenterYToBaseLine(Paint textPaint){
Paint.FontMetrics fm = textPaint.getFontMetrics();
float fonth = getFontHeight(textPaint);
return (float)Math.abs(Math.ceil(fonth/2- fm.descent));
}