QingShan Talk

青衫说,关于程序与设计、黑客与画家

总结Java中异步的几种方法

Talk about the way of Java async

在Java中,如使用Tomcat,一个请求会分配一个线程进行请求处理,该线程负责获取数据、拼装数据或模板然后返回给前端;在同步调用获取数据接口的情况下(等待依赖系统返回数据),整个线程是一直被占用并阻塞的。如果有大量的这种请求,每个请求占用一个线程,但线程一直处于阻塞,降低了系统的吞吐量,这将导致应用的吞吐量下降;我们希望在调用依赖的服务响应比较慢,此时应该让出线程和CPU来处理下一个...

解决MacOS上的Mysql不能被访问的问题

Solve the problem which mysql on MacOS cannot be connected

今天在通过Ansible去操作服务器的时候,发现Ansbile报错: 1 Failed to connect to the host via ssh: Permission denied (publickey,password) 但是我确认过,在服务端直接ssh目标主机(事先配置好ssh-key)是可以成功连接上的。这台奇诡了! 在github上搜索了issue之后,发现有不少的用户遇到...

解决Vue中数据绑定无法刷新视图的问题

Solve the problem of unfresh view in Vue

在Vue中使用iview组件时候,一些按钮默认会引入快捷键操作。例如在确认按钮上就绑定了Enter键触发点击确认。但是实践中,发现只有第一次点击Enter键会正确触发确认,第二次及后续的急键操作都会刷新当前页面。引起不必要的麻烦。 下面就是解决这个问题的方法: 给Form表单组件的根元素绑定一个enter事件,keydown.native.enter.prevent表示prenvent 不...

Java中join字符串列表

How to join array in Java

在python等动态语言中,很容易就将一个字符串列表转换成字符串,例如: Python中: 1 2 a = ['a','b','c'] print(",".join(a)) JavaScript中: 1 2 a = ['a','b','c'] a.join(",") 上面两种写法都根据内置的join关键字的分隔符输出 ‘a,b,c’。 但是找了一下,在Java中似乎并没有遇到类似j...

Git HEAD detached from XXX (git HEAD 游离) 解决办法

Solve the problem for the git of HEAD detached

Git HEAD detached from XXX (git HEAD 游离) 问题: Git 中的 HEAD 可以理解为一个指针,我们可以在命令行中输入 cat .git/HEAD 查看当前 HEAD 指向哪儿,一般它指向当前工作目录所在分支的最新提交。当使用 git checkout < branch_name> 切换分支时,HEAD 会移动到指定分支。但是如果使用的是 g...

Java Spring boot启动过程中一个奇怪的报错

A strange question in spring boot start process

今天spring-boot启动时候出现一个奇怪的异常: 1 2 3 4 5 The bean 'xxx' could not be injected as a 'xx.xxxx' because it is a JDK dynamic proxy that implements: Action: Consider injecting the bean as one of its ...

Spring Boot中MySQL超时问题的解决

Time out in Java Spring Boot

在Java Spring Boot添加了多个MySQL连接后,经常发现新加的MySQL报错: 1 2 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed. ] which will not be reported ...

MyBatis中Limit的几种方法

The way for Mybatis limit

今天使用Spring Boot对数据库做CRUD的时候,需要对结果进行排序和limit。因为ORM使用的默认Mybaits,因此查找了下资料,总结一下: 0. 最符合直观的原生MySQL 1 2 Condition cond = new Condition(OpsLog.class); cond.setOrderByClause ("id limit" + start+"," +20) //...

使用Java Map按key排序和按Value排序

Sort with java Map

今天工作中发现居然可以使用Java来优雅的对数据进行排序。核心技术用的是Java TreeMap的比较器:Comparator。此方法的优点是无需写冗长的业务逻辑,直接在初始化Map的时候指定,即可获得排序后的结果。可以根据需要,设置按Key排序,还是按Value排序。 0. 理论基础 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hasht...

使用Yum对MySQL进行半自动升级/安装

Upgrade MySQL with Yum automatically

最近因为业务需要在MySQL中建立了一张表,里面有两个“CURRENT_TIMESTAMP”字段。但是在开发环境好好的,上测试环境怎么也建立不成功了。猜测可能是MySQL版本问题。于是查了一下,发现开发环境是5.7.12,测试环境居然还是5.1的老版本。决定对测试环境的MySQL进行升级。 因为系统是CentOS 6.x,原来的MySQL是通过yum安装的,经过检索发现也可以通过yum升级...