积跬步

Just do IT Now.


  • Home

  • Tags

  • Categories

  • Archives

  • Search

简历编写

Posted on 2021-08-13 | In 678

优先简历具备的特点

对于程序员行业来说,一份优秀的简历,需要具备几个特点:

  1. 让招聘者看了很舒服,不会看了就想丢垃圾桶里。
  2. 让招聘者能很快看到自己想要看到的东西。
Read more »

口水话理解设计模式

Posted on 2021-08-03 | In 设计模式

口水话理解设计模式

01 工厂方法

追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

Read more »

安卓-对象属性值复制

Posted on 2021-07-20 | In Android代码片段

工具类-对象属性值复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

/**
* 说明:对象属性值复制
*/
public class CopyPropertiesManager {

/**
* 利用反射实现对象之间属性复制
*
* @param from
* @param to
*/
public static void copyProperties(Object from, Object to) throws Exception {
copyPropertiesExclude(from, to, null);
}

/**
* 复制对象属性
*
* @param from
* @param to
* @param excludsArray 排除属性列表
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static void copyPropertiesExclude(Object from, Object to, String[] excludsArray) throws Exception {
List<String> excludesList = null;
if (excludsArray != null && excludsArray.length > 0) {
excludesList = Arrays.asList(excludsArray); //构造列表对象
}
Method[] fromMethods = from.getClass().getDeclaredMethods();
Method[] toMethods = to.getClass().getDeclaredMethods();
Method fromMethod = null, toMethod = null;
String fromMethodName = null, toMethodName = null;
for (int i = 0; i < fromMethods.length; i++) {
fromMethod = fromMethods[i];
fromMethodName = fromMethod.getName();
if (!fromMethodName.contains("get")) {
continue;
}
//排除列表检测
if (excludesList != null && excludesList.contains(fromMethodName.substring(3).toLowerCase())) {
continue;
}
toMethodName = "set" + fromMethodName.substring(3);
toMethod = findMethodByName(toMethods, toMethodName);
if (toMethod == null) {
continue;
}
Object value = fromMethod.invoke(from, new Object[0]);
if (value == null) {
continue;
}
//集合类判空处理
if (value instanceof Collection) {
Collection newValue = (Collection) value;
if (newValue.size() <= 0) {
continue;
}
}
toMethod.invoke(to, new Object[]{value});
}
}

/**
* 对象属性值复制,仅复制指定名称的属性值
*
* @param from
* @param to
* @param includsArray
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static void copyPropertiesInclude(Object from, Object to, String[] includsArray) throws Exception {
List<String> includesList = null;
if (includsArray != null && includsArray.length > 0) {
includesList = Arrays.asList(includsArray); //构造列表对象
} else {
return;
}
Method[] fromMethods = from.getClass().getDeclaredMethods();
Method[] toMethods = to.getClass().getDeclaredMethods();
Method fromMethod = null, toMethod = null;
String fromMethodName = null, toMethodName = null;
for (int i = 0; i < fromMethods.length; i++) {
fromMethod = fromMethods[i];
fromMethodName = fromMethod.getName();
if (!fromMethodName.contains("get")) {
continue;
}
//排除列表检测
String str = fromMethodName.substring(3);
if (!includesList.contains(str.substring(0, 1).toLowerCase() + str.substring(1))) {
continue;
}
toMethodName = "set" + fromMethodName.substring(3);
toMethod = findMethodByName(toMethods, toMethodName);
if (toMethod == null) {
continue;
}
Object value = fromMethod.invoke(from, new Object[0]);
if (value == null) {
continue;
}
//集合类判空处理
if (value instanceof Collection) {
Collection newValue = (Collection) value;
if (newValue.size() <= 0) {
continue;
}
}
toMethod.invoke(to, new Object[]{value});
}
}

/**
* 从方法数组中获取指定名称的方法
*
* @param methods
* @param name
* @return
*/
public static Method findMethodByName(Method[] methods, String name) {
for (int j = 0; j < methods.length; j++) {
if (methods[j].getName().equals(name)) {
return methods[j];
}
}
return null;
}


public static void main(String[] args) {
//使用案例:
//把loginBean.getData()类中的所有属性赋值给user类。
//注意:loginBean.getData()类和user类中的所有参数名称要一致。
User user = new User();
try {
CopyPropertiesManager.copyProperties(loginBean.getData(), user);
} catch (Exception e) {
e.printStackTrace();
}
}
}

注意:只能复制属性那一级别的。即,如果对象内部还有对象,这对象无法复制过去(报“java.lang.IllegalArgumentException: argument type mismatch”错误)

Read more »

Java-枚举

Posted on 2021-07-20 | In Java

枚举不带值

1
2
3
enum MobileCodeActionEnum {
MOBILE_LOGIN, THIRD_LOGIN_BIND, CHANGE_PASS
}

使用

Read more »

编译相关

Posted on 2021-07-12 | In Android

编译相关

命令行编译

1
./gradlew build
Read more »

UI-ScalableImageView

Posted on 2021-07-09 | In Android

ScalableImageView

放缩和移动

由于有两次移动,⼀次是初始偏移,另⼀次是随⼿指拖动,所以要分开两次写 translate()

Read more »

触摸反馈基础

Posted on 2021-07-09 | In Android

触摸反馈基础

自定义单 View 的触摸反馈

  • 重写 onTouchEvent(),在⽅法内部定制触摸反馈算法
    • 是否消费事件取决于 ACTION_DOWN 事件是否返回 true
    • MotionEvent
      • getActionMasked() 和 getAction()
      • POINTER_DOWN / POINTER_UP 和 getActionIndex()
Read more »

UI-自定义布局

Posted on 2021-07-09 | In Android

自定义布局

布局过程

  • 确定每个 View的位置和尺⼨
  • 作用:为绘制和触摸范围做⽀持
    • 绘制:知道往哪⾥绘制
    • 触摸反馈:知道用户点的是哪⾥
Read more »

UI-Bitmap

Posted on 2021-07-09 | In Android

Bitmap和Drawable以及手写MaterialEditText

hencoder课程

Bitmap 和 Drawable

Read more »

安卓-属性动画和硬件加速

Posted on 2021-07-08 | In Android

属性动画和硬件加速

属性动画

ViewPropertyAnimator

Read more »

UI-绘制

Posted on 2021-07-08 | In Android

绘制(一)

最重要的是测量

本节目标

Read more »

从OkHttp的原理来看HTTP

Posted on 2021-07-07 | In Android

okhttp官网

OkHttp讲义

OkHttp 使⽤⽅法简介

Read more »
<1…8910…23>

265 posts
23 categories
47 tags
E-Mail CSDN
0%
© 2018 — 2025 阿炳
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4