远程连接到Heroku的Postgres数据库

我在我自己的电脑上弄死都连接不上heroku的数据库,然后发现原来远程连接是需要SSL的,通过进一步的搜索,最后得出了结论:需要使用ssl和设置sslfactory。
我个人一直在使用Jetbrains DataGrip,要连接到heroku postgres,打开DataGrip,输入用户名、密码、主机地址和数据库名。
然后切换到advance的tab去,将ssl设置为true,讲sslfactory设置为org.postgresql.ssl.NonValidatingFactory
继续阅读远程连接到Heroku的Postgres数据库

使用 SignalR与SSE(Sever sent event)向客户端推送提示信息

最近有个项目想把c/s的代码转成mvc的,这听起来并不困难。
如果UI和业务逻辑良好分离了的话,不会花太多的功夫,应该多数的内容都能重复利用。

但在实际的操作过程中,发现业务逻辑代码和UI提示全是混在一起的,尤其里面有这样的代码很多:

public class MyLogic
{
    public int DoPress(string bin)
    {
        if (string.IsNullOrEmpty(bin))
        {
            System.Windows.Forms.MessageBox.Show("数据为空,请登录后使用");
            return -1;
        }

        return 0;
    }
}

继续阅读使用 SignalR与SSE(Sever sent event)向客户端推送提示信息

在IDEA下使用Spring Boot的热加载(Hotswap)

你是否遇到过这样的困扰:

当你写完一段代码后,要看到效果,必须点击IDEA的停止按钮,然后再次重启启动项目,你是否觉得这样很烦呢?

如果你觉得很烦,本文就是用来解决你的问题的。

所谓热加载,就是让我们在写完一段代码后,不必重启容器,刷新浏览器就能快速看到结果。

在IDEA中需要三个步骤来达到效果:
继续阅读在IDEA下使用Spring Boot的热加载(Hotswap)

使用Spring boot + jQuery上传文件(kotlin)

文件上传也是常见的功能,趁着周末,用Spring boot来实现一遍。

前端部分

前端使用jQuery,这部分并不复杂,jQuery可以读取表单内的文件,这里可以通过formdata对象来组装键值对,formdata这种方式发送表单数据更为灵活。你可以使用它来组织任意的内容,比如使用

formData.append("test1","hello world");

继续阅读使用Spring boot + jQuery上传文件(kotlin)

使用intelliJ创建 spring boot + gradle + mybatis站点

Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧被做.Net的同学问到,我想我也可以写这样一篇。
入门Java的人最大的问题是步骤繁琐,不知道如何开始,之前我也建议过我的一个小弟用BlueJ去学Java,可是这个东西学得他很迷茫,根本无法获得成就感,不知道能搞出什么有意思的东西,那我们就来点正式的吧,看看怎么从零开始建一个你自己的Java网站。

软件安装

作为入门版,当然我们要从软件安装开始咯。
要安装的软件有
– JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
– IntelliJ IDEA:https://www.jetbrains.com/idea/
– Gradle:https://gradle.org/install/
– Tomcat: 可选,这部分网上到处都是文章,就不重复。
继续阅读使用intelliJ创建 spring boot + gradle + mybatis站点

架构漫谈系列(3)其他原则

在最开始,先重复一下第一篇的内容,这个系列是写我们如何来组织代码,如何提高可扩展性和维护性的,并不涉及到网络拓补结构或各类中间件的使用。

首先,提一提面向对象设计的五大原则:SOLID。

SOLID原则

SOLID都是些什么呢?
– SRP, Single responsibility principle,单一职责。一个类只能有一个职责,如果这个类需要被修改,那只能是某一个需求更改导致的(仅此一个,没有更多的)。例如,book类里面有一个print的函数,当我们修改book类的书名时,我们需要改book类,当我们把book的打印从打印到A4改成打印成6寸时,也需要修改此类,这就违背了SRP原则。
– OCP, Open/closed principle,开闭原则,Open for extension, but closed for modification
– LSP, Liskov substitution principle,父类能够被子类无忧的替代,不必担心产生副作用。
– ISP, Interface segregation principle,如果一个接口能够被拆分成多个接口,那就不该用这个通用的接口来呈现。
– DIP, Dependency Inversion principle,依赖于抽象,而不依赖与具体的实现。
继续阅读架构漫谈系列(3)其他原则