LMLPHP后院

解决 springboot Interceptor @Autowired null技术

maybe yes 发表于 2017-09-13 17:25

看如下代码块:

package com.lmlphp.nb.config;

import com.lmlphp.nb.interceptor.WebInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new WebInterceptor())
                .addPathPatterns("/*")
                .excludePathPatterns("/login");
        super.addInterceptors(registry);
    }

}

VPS snapshot 之后重启防火墙丢失技术

maybe yes 发表于 2017-09-08 10:16

记录下前阵子由于某些原因被强制停机,系统被快照之后出现的一些问题。

首先当然是数据库崩溃啦,无法启动。参考我的另一篇文章 is marked as crashed and last (automatic?) repair failed

然后出现的问题有 SSH 无法登录;screen 会话丢失,估计 screen 是存储在内存中导致。

SSH 登录报错:ssh: connect to host lmlphp.com port : No route to host。

出现这种原因是由于防火墙设置问题,要先检查防火墙的设置,如下步骤:

  • 查看防护墙状态:service iptables status
  • 关闭防火墙:service iptables stop

不靠谱的 execCommand 之 insertText技术

maybe yes 发表于 2017-09-04 09:34

最近发现编辑器在执行 insertHTML 遇到剪切板内容为标签时,出现的怪异现象,于是改成了 insertText。实在搞不懂 MDN 上的 paste 是什么作用,被坑了好几次。

document.execCommand("insertText",false,text);

上面的方式做了一次变更,因为 insertText 粘贴的时候会产生很多节点,不能很好的处理换行,不知道怎么回事,最后改为如下。

document.execCommand("insertHTML",false,$('<div/>').text(text).html());

搞来搞去,归根结底,execCommand 方法只有 insertHTML 有点用,其他全是没什么作用的。

springboot mybatis 多数据源配置技术

maybe yes 发表于 2017-08-31 17:19

关于 Java 技术,其实 Java 技术不需要有创造力的人,只需要按部就班,死记硬背就可以。Java 技术已经被大型组织和集团给垄断了,大家用的技术大都是 Oracle,Apache 这些组织的代码,所有的东西都已经实现,所以不需要创造力。有些科学家也会吐槽,说 Java 技术是传教性质的,一旦进入,很难出来。

Java 技术缺少的是什么,是傻逼教程,说好听点,就是手把手教程,怎么建立文件夹,怎么创建文件,怎么复制代码。一个程序员熟练了 Java 技术,也就是熟练了这些,真正框架内部的东西是不可能熟练的,因为量太大,人生苦短。

开始手把手教程,希望帮助到大家。

maven 依赖配置:

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.2.1</version>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.2</version>
</dependency>

基于 HTML5 的 EventSource 实时推送实现技术

maybe yes 发表于 2017-08-21 18:03

本文介绍 Comet 的 EventSource 实现方式,EventSource 对象只是对数据格式进行了简单的封装。服务端加上 event-stream 的头声明,数据以事件流的方式传递,保持长连接。

先上代码吧,后端代码示例 chat.php:

if (isset($_REQUEST['message'])) {
    file_put_contents('/tmp/message.txt',
        time() . '||data: ' . $_REQUEST['message'] . "\n", FILE_APPEND);
    echo $_REQUEST['message'];
    exit;
}

function output($v) {
    echo "data: {$v}\n\n";
    ob_flush();
    flush();
}

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header("Content-Encoding: none");
header('X-Accel-Buffering: no');
$last = time();

for (;;) {
    // exec('tail -n 1 /tmp/message.txt', $data);
    $tempArr = file('/tmp/message.txt');
    $arr = explode('||', end($tempArr));
    if ($arr[0] <= $last){
        sleep(1);
        continue;
    }
    $last = $arr[0];
    output($arr[1]);
    sleep(1);
}
2018-05-25 03:53:42 1527191622 0.004946