Stay hungry, Stay foolish

0%

先看一下下面这个Demo,猜猜能不能正常运行,为什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class TestDTO{
private Boolean isForceQuit;

public Boolean getForceQuit() {
return isForceQuit;
}

public void setForceQuit(Boolean forceQuit) {
isForceQuit = forceQuit;
}
}

public class Test {

public static void main(String[] args) {
TestDTO testDTO = new TestDTO();
TestDTO savedDTO = new TestDTO();
testDTO.setForceQuit(savedDTO == null ? false : savedDTO.getForceQuit());
}
}
阅读全文 »

Jackson虽然使用非常方便,但是在处理Enum类型上,还是有不少坑的,此篇算是做一下总结吧

阅读全文 »

了解HPE GEN系列是好几年前的了——经常会收到Gen8的优惠信息的推送,一千多的价格(如果没有记错的话),虽是心动,但是一直觉得没有需求。

把弯路走了一遍后(路由器+移动硬盘、西数MyCloud、矿渣),发现NAS到最后的归路只有两条——品牌NAS、个人服务器。

阅读全文 »

Gatling是基于Scala、Akka和Netty的开源负载和性能测试框架

Why Gatling

  • 强大到没有边际的DSL
  • 使用Akka Actors,并发测试性能高
  • 写代码的方式测试,对程序员友好,当然,这也导致有一定的学习成本
  • 虽然Gatling是用scala写的,如果你只是使用的话,根本不需要了解scala
  • 测试结果稳定(相对我之前用过的几个小工具)
  • 扩展性强(可用来测udp、rpc等)
  • 漂亮的测试报告、丰富的文档……
阅读全文 »

背景

  • 使用Spring Cloud Gateway做网关,需要确认网关的上下流连接情况——是否持久连接?
  • RemoveHopByHopHeadersFilter会过滤掉KeepAlive,为什么?
阅读全文 »

凡是使用Spring写WEB项目,都会遇到重复读取requestBody的需求。通过一番搜索,会找到下文或与下文类似的解决方案:

拦截器中,request中getReader()和getInputStream()只能调用一次,构建可重复读取inputStream的request

我最开始用的就是这篇文章里的方法,加上后确实可以重复读取requestBody了。

但是没多久,一个application/x-www-form-urlencoded请求的报错就出现了

HttpMessageNotReadableException: Required request body is missing

阅读全文 »

有个合作方的接口要求是通过form表单(application/x-www-form-urlencoded)的形式提交

1
2
3
4
5
6
@FeignClient(name = "partner", url = "${partner.url}")
public interface PartnerClient {

@RequestMapping(value="/comment/submit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED)
Map<String,Object> submitComment(@RequestBody CommentSubmitParam param);
}

本以为只要加个相应的ContentType就能解决,没想到还是too young too simple

阅读全文 »

从一个fork开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch ($pid = pcntl_fork()){
case -1:
die('fork failed');
break;
case 0:
$n = 3;
$msg = "child pid:".getmypid().PHP_EOL;
break;
default:
$n = 5;
$msg = "parent pid:".getmypid()." child pid is: ".$pid. PHP_EOL;
break;
}
for($i = 0; $i < $n; $i++){
echo $msg;
sleep(1);
}
阅读全文 »

此笔记持续更新中……

路由

Laravel的路由是通过配置文件(app/Http/routes.php)来配置的,相对于根据控制器自动路由这种方式,更加灵活

获取当前控制器和方法

1
2
$currentAction = \Route::currentRouteAction();
list($controller, $method) = explode('@', $currentAction);

分组

1
2
3
4
Route::group(['namespace' => 'User', 'prefix' => 'user'], function(){
Route::get('/center',['uses' => 'IndexController@center'])->name('user/center');
Route::get('/join',['uses' => 'IndexController@join'])->name('user/join');
});
阅读全文 »

array_flip比array_unique的效率要高(简直是吊打),但是前者并不是后者的替代品——前者仅限于整形和字符型这样可以被转换成int的类型。其实这两种类型基本能覆盖我们大部分的使用场景了。
阅读全文 »