9月25
项目要做一个后台消息推送,在测试过程中,发现每隔1分半自由,WebSocket会走OnError方法,将异常抛出,异常是java.io.EOFException.然后走@OnClose方法,将连接自动关闭,首先需要加上心跳,并且将nginx中加上proxy_read_timeout 设置为 2000s。

     heartCheckFun(){
        var that = this;
        //心跳检测,每20s心跳一次
        that.heartCheck = {
          timeout: 20000,
          timeoutObj: null,
          serverTimeoutObj: null,
          reset: function(){
            clearTimeout(this.timeoutObj);
            clearTimeout(this.serverTimeoutObj);
            return this;
          },
          start: function(){
            var self = this;
            this.timeoutObj = setTimeout(function(){
              //这里发送一个心跳,后端收到后,返回一个心跳消息,
              //onmessage拿到返回的心跳就说明连接正常
              that.websocketSend("HeartBeat");
              console.info("客户端发送心跳");
              self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了
                that.websock.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
              }, self.timeout)
            }, this.timeout)
          }
        }
      },

nginx的设置为:
location /{
      proxy_pass http://xx.xxx.xxx.xx:xxxx;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_read_timeout 2000s;
      keepalive_timeout  2000s;
            proxy_set_header   Host    $host;
      proxy_set_header   X-Real-IP   $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  }

尽管设置2000s,但是当到达设置时间,如果websocket没有进行通讯,还是会断开连接.可以前端做一个心跳检测,每隔20秒钟发起一次通信就行.

希望能帮到你;
9月21
在安装npm时,可能根据某个教程设置了例如:

npm config set prefix "C:\Program Files\nodejs\node_global"
以及
npm config set cache "C:\Program Files\nodejs\node_cache"

之类的东西,可是后来不想要了,想要恢复默认值,怎么办呢?

方法是删除C:\Users\Administrator\.npmrc这个文件。如果.npmrc不在这个目录下,就全局搜一下啦。
9月21

配置Nodejs镜像

11:18Web开发  From: 本站原创
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global


执行下面的指令就可以使用cnpm利用国内镜像服务了:

npm install -g cnpm --registry=https://registry.npm.taobao.org;
9月14
SELECT COUNT(*) 

FROM (SELECT 分组字dao段 FROM 表 

GROUP BY 分组字段 

)别名 

或者 

SELECT COUNT(*) 

FROM (SELECT distinct 分组字段 FROM 表)别名

扩展资料:
SQL分组查询

在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用聚合函数就必须出现在ORDER BY子句中(即SELECT后边的字段名要么出现在聚合函数中,要么在ORDER BY子句中使用)

在分组查询中还可以配合使用HAVING子句,定义查询条件。

使用group by进行分组查询

在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

1、被分组的列

2、为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

3、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面


要得到每组的合计可以用下面的,要总计用上面的,想一次性得到分组合计以内及总计,可以这么写:

SELECT 分组容字段 FROM 表
GROUP BY 分组字段
compute sum(COUNT(*))


那就这样
SELECT COUNT(*)
FROM (SELECT 分组字段 FROM 表
GROUP BY 分组字段
)别名

或者

SELECT COUNT(*)
FROM (SELECT distinct 分组字段 FROM 表)别名
9月14

  location / {
      proxy_http_version 1.1;    
      proxy_set_header Upgrade $http_upgrade;    
      proxy_set_header Connection "Upgrade";    
      proxy_set_header X-real-ip $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_pass http://localhost:6633/;
    }
9月3
最近在做项目时,需要要工具类中对属性进行赋值,里面有appID和appsecret,因为这两个都是相对固定不会变动的东西,所以配在配置文件 或者数据库配置表最好,这边使用的是配置文件(application.yml),然后通过@Value()属性注入到对应的属性中。
刚开始在做的时候,启动项目后发现通过使用@Value注解对这两个属性进行赋值,结果两个都注不进去。

这个让我很苦恼,通过查找资料。找到了通过set的办法进行注入,并成功。

解决办法:

   1.将这两个私有属性的set方法从私有变成公开(private -->>> public);

   2.生成这两个静态属性的set方法;

   3.将原来在静态属性上的@Value() 注解改到设在 set方法上;

   4.去除这两个静态属性set方法的static关键字

类上面的@Compoent 注解一定要有,一定要注意set方法是没有static的,否则取不到值的。
8月19
Tess4j Issue in Windows: java.lang.UnsatisfiedLinkError: The specified module could not be found in instance.doOCR(imageFile)

Tess4j在本地跑的时候没有问题,放到windows server2008 r2服务器上的时候就报下面找不到模块的错误:

java.lang.UnsatisfiedLinkError: The specified module could not be found.

       at com.sun.jna.Native.open(Native Method) ~[jna.jar:4.2.1 (b0)]
       at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:263) ~[jna.jar:4.2.1 (b0)]
       at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:403) ~[jna.jar:4.2.1 (b0)]
       at com.sun.jna.Library$Handler.<init>(Library.java:147) ~[jna.jar:4.2.1 (b0)]
       at com.sun.jna.Native.loadLibrary(Native.java:502) ~[jna.jar:4.2.1 (b0)]
       at com.sun.jna.Native.loadLibrary(Native.java:481) ~[jna.jar:4.2.1 (b0)]
       at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(Unknown Source) ~[tess4j-3.0.jar:na]
       at net.sourceforge.tess4j.TessAPI.<clinit>(Unknown Source) ~[tess4j-3.0.jar:na]
       at net.sourceforge.tess4j.Tesseract.init(Unknown Source) ~[tess4j-3.0.jar:na]
       at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source) ~[tess4j-3.0.jar:na]
       at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source) ~[tess4j-3.0.jar:na]
       at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source) ~[tess4j-3.0.jar:na]
       at ocr.OCRController.handleFileUpload(OCRController.java:109) ~[classes/:na]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51]
       at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51]

我搜索并发现人们建议更新Visual VisualC++可重分发软件包,我做了Visual Studio 2013,但结果却没有帮助,我仍然得到同样的问题。我不知道我做错了什么,下面是我的代码。

ITesseract instance = new Tesseract(); // JNA Interface Mapping

instance.setDatapath(new File(datapath).getPath());
instance.setLanguage("eng");      
try {
       String result = instance.doOCR(imageFile); //error here
} catch (TesseractException e) {
       System.err.println(e.getMessage());
}


此问题与Windows无关。
我已经把版本换回3.0
<dependency>
       <groupId>net.sourceforge.tess4j</groupId>
       <artifactId>tess4j</artifactId>
       <version>3.0.0</version>
</dependency>
替换所有以前的maven依赖项,就好了。
8月5
x-www-form-urlencoded方式:

Map<String,Object>  map = new HashMap<>();
map.put("page_size","100")
map.put("ps", "100")
map.put("page_flag", "true")
Document doc = Jsoup.connect("http://www.zgetfl.org/qget/main_qget/sqgl/apLcChildAction.do?method=listApLcChildnew")
                    .header("useragent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
                    .header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
                    .data("page_size","100")
                    .data("ps", "100")
                    .data("page_flag", "true")
                    .post();

application/json方式:

Map<String,String> map = new HashMap<>();
map.put("username","aaaa");
map.put("password","123456");
Gson gson = new Gson();
String parameter = gson.toJson(map);
Document doc = Jsoup.connect("localhost:8080/api/user/login")
                    .header("useragent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
                    .requestBody(parameter)
                    .ignoreContentType(true)
                    .post();
7月9
MySQL中,查询表(crawl_content)中字段(url)值重复的记录:

SELECT url, COUNT(*) AS sumCount FROM crawl_content GROUP BY url HAVING sumCount > 1;
说明:先用GROUP BY 对 url进行分组,同时使用COUNT(*)进行统计,再用HAVING来过滤大于1的,这样查找出来的就是重复的记录了。
7月9
nginx location语法

语法详解

语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头

~ 开头表示区分大小写的正则匹配                     以xx结尾

~* 开头表示不区分大小写的正则匹配                以xx结尾

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/ 通用匹配,任何请求都会匹配到。

分页: 3/53 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]