Skip to content
Permalink
Browse files

feat: 0629 updates

  • Loading branch information...
alterhu2020 committed Jun 29, 2019
1 parent a460ca6 commit 9d90000341b33d8d94adea3137b53b12e6b75ffc
@@ -12,6 +12,8 @@ module.exports ={
title: '2019年归档',
collapsable: false,
children: [
'2019/06-29-what',
'2019/06-26-what',
'2019/06-22-what',
'2019/06-21-what',
'2019/06-17-what',
@@ -2,4 +2,69 @@
title: 6月22日整理
---

## 计划
## mybatis-plus枚举类型

参考例子代码: [https://gitee.com/baomidou/mybatis-plus-samples](https://gitee.com/baomidou/mybatis-plus-samples)

1. 通常的方法进行序列化和反序列化

使用的是`jackson`进行序列化和反序列化
- 将枚举序列化需要的是注解 : `@JsonValue`
- 将枚举反序列化需要的注解 : `@JsonCreator`

2. 采用mybatis-plus进行枚举的序列化和反序列:

- 设置mybatis-plus进行枚举的转换:

```yaml
# mybatis相关配置
mybatis-plus:
# configLocation
mapper-locations: classpath*:mapper/**/*.xml
check-config-location: false
# 该执行器类型会复用预处理语句(PreparedStatement)
executor-type: reuse
# 以下的是原生的mybatis的配置信息
configuration:
# 列名驼峰转换
map-underscore-to-camel-case: true
cache-enabled: true
aggressive-lazy-loading: true
auto-mapping-unknown-column-behavior: warning
# 此处设置序列化的转换器,是需要定义一个方法: getValue
default-enum-type-handler: com.baomidou.mybatisplus.extension.handlers.EnumTypeHandler
```

- 枚举类举例如下:

```java
@Getter
@AllArgsConstructor
public enum ProductCategory implements IEnum<Long> {
/**
* 产品类型
*/
WOOD(1L, "WOOD", "方木"),
REBAR(2L, "REBAR", "钢筋"),
CEMENT(3L, "CEMENT", "水泥"),
TEMPLATE(4L, "TEMPLATE", "模板"),
MIXED(5L, "MIXED", "混合版"),
DIGGING_MACHINE(6L, "DIGGING_MACHINE", "挖机"),
CRANE(7L, "CRANE", "吊车"),
FORKLIFT(8L, "FORKLIFT", "铲车"),
CONCRETE(9L, "CONCRETE", "混凝土");
private Long id;
private String name;
private String description;
@Override
public Long getValue() {
return id;
}
}
```
@@ -0,0 +1,85 @@
---
title: 6月26日整理
---

## idea license 可用

> 地址: [https://blog.csdn.net/weixin_37264997/article/details/89846698](https://blog.csdn.net/weixin_37264997/article/details/89846698)

## springboot application.yml配置integer变量

参考: https://blog.csdn.net/blueheart20/article/details/81480864

```
Failed to bind properties under 'dubbo.protocol.port' to java.lang.Integer:
Property: dubbo.protocol.port
Value: (java.lang.Integer)${server.port}
Origin: class path resource [application.yml]:136:11
Reason: failed to convert java.lang.String to java.lang.Integer
```
这些变量字符在进行maven的`clean install`的时候回替换成对应的变量,可以通过执行maven的`clean install`命令后采用解压缩包打开对应的war查看
对应的`application.yml`中的配置,会发现里面的变量已经被替换。 在`pom.xml`中进行如下配置:
```
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
```

## Cacheable注解

- org.springframework.cache.interceptor.CacheInterceptor
- org.springframework.cache.interceptor.CacheInterceptor#invoke
- org.springframework.cache.interceptor.CacheAspectSupport#execute(org.springframework.cache.interceptor.CacheOperationInvoker, java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

- org.springframework.cache.interceptor.CacheAspectSupport#execute(org.springframework.cache.interceptor.CacheOperationInvoker, java.lang.reflect.Method, org.springframework.cache.interceptor.CacheAspectSupport.CacheOperationContexts)


核心代码
```java
if (contexts.isSynchronized()) {
CacheOperationContext context = contexts.get(CacheableOperation.class).iterator().next();
if (isConditionPassing(context, CacheOperationExpressionEvaluator.NO_RESULT)) {
Object key = generateKey(context, CacheOperationExpressionEvaluator.NO_RESULT);
Cache cache = context.getCaches().iterator().next();
try {
return wrapCacheValue(method, cache.get(key, () -> unwrapReturnValue(invokeOperation(invoker))));
}
catch (Cache.ValueRetrievalException ex) {
// The invoker wraps any Throwable in a ThrowableWrapper instance so we
// can just make sure that one bubbles up the stack.
throw (CacheOperationInvoker.ThrowableWrapper) ex.getCause();
}
}
else {
// No caching required, only call the underlying method
return invokeOperation(invoker);
}
}
```

进入redis中的缓存获取:`org.springframework.data.redis.cache.RedisCache#get`,这个是redis与数据库封装的类,还有参考类: `org.springframework.cache.support.AbstractValueAdaptingCache#get(java.lang.Object)` 这个是redis的相关操作类
```java
public synchronized <T> T get(Object key, Callable<T> valueLoader) {
ValueWrapper result = get(key);
if (result != null) {
return (T) result.get();
}
T value = valueFromLoader(key, valueLoader);
put(key, value);
return value;
}
```


@@ -0,0 +1,10 @@
---
title: 6月29日整理
---

## 是否技术有所提高?

无意在头条看到一个文章,中间提到了学习一门新技术,是否带来了技术的提高?其实不然,总结两点:
1. 我们有时候看似在学很多技术,其实这些技术并不能提升你,但是给你造成了『我学了新东西能力提升了』的自我感觉偏差

2. 不要盲目追寻社区的热点,很可能捡了芝麻丢了西瓜,要仔细思考这门技术对于你本身是否有提升,而不是被布道师们『洗脑』
@@ -2,4 +2,13 @@
title: Jetbrains IntelliJ IDEA
---

## 使用技巧
> 体验是很好,唯一的就是很耗内存,所以设置了堆的最大空间为如下,体验上还行,没有出现特别耗内存的情况:
```
-Xms750m
-Xmx750m
```

## 使用技巧

待整理
@@ -13,4 +13,7 @@ title: PhotoShop CC 2018

![ps-resize](./img/ps-resize.png)

### 图片如何压缩大小?
### 图片如何压缩大小?


### 图片拼接,图片裁剪
@@ -2,7 +2,12 @@
title: Microsoft Visual Studio Code
---

> 发现flutter居然官方也提供了vscode的IDE支持,看来vscode想要成为宇宙第一神器的节奏。。。
## 使用技巧

待整理

## 问题

待整理
@@ -10,6 +10,18 @@ title: 何为优秀?

# 优秀作品推荐

## 观看时间: 2019年6月22日

- **全能囧爸**
> 被片名耽误的好电影
## 观看时间: 2019年6月22日

- **地久天长**
> 两个家庭因为一次意外,演绎一段不可思议的岁月。
- **雪暴**
> 护林员随时有生命危险。。。
## 收听时间: 2019年6月21日

- 我不能悲伤地坐在你身旁 - 左小祖咒

0 comments on commit 9d90000

Please sign in to comment.
You can’t perform that action at this time.