Bugfix

作者: 小小爱笑 | 来源:发表于2018-10-23 12:52 被阅读0次
  • socket读不到 '\n', 导致无法区分用\r\n作为分割的请求头。

为了判断\r\n,按字节逐个读取。错误的使用了BufferedReader.read方法。导致\n被过滤,不会返回。

应该使用socket.getInputStream() 对象 InputStream.read方法。

BufferedReader.java

public int read() throws IOException {
       synchronized (lock) {
           ensureOpen();
           for (;;) {
               if (nextChar >= nChars) {
                   fill();
                   if (nextChar >= nChars)
                       return -1;
               }
               if (skipLF) {
                   skipLF = false;
                   if (cb[nextChar] == '\n') {
                       nextChar++;
                       continue;
                   }
               }
               return cb[nextChar++];
           }
       }
   }

  • 中文乱码问题。

使用DataInputStream.writeBytes() 写中文时乱码。

public final void writeBytes(String s) throws IOException {
        int len = s.length();
        for (int i = 0 ; i < len ; i++) {
            out.write((byte)s.charAt(i));
        }
        incCount(len);
    }

len为string的长度,对于单字节字符 string长度等于 字符串对应的字节数组长度。 中文是多子节字符,一个字符通常对应2个字节。
可以使用String.getBytes(StandardCharsets.UTF_8) 编码后,使用 DataInputStream.write()进行写入。


  • 文件下载时,不完整。

InputStream is = ...; 
OutputStream os = ...; 
byte[] buffer = new byte[1024 * 8];
int len;
while((len = is.read(buffer)) > 0) {
  os.write(buffer, 0, len);
}
os.flush();

网络io时, is.read()可能返回0, 表示等待缓冲区输入,并没有结束。
所以,判断输入流结束不能根据>0判断。

while((len = is.read(buffer)) >= 0) {
  ...
}

  • <input id='myName'/> 无法获取value

var name = document.getElementById('myName');
console.log(name.value);

var name, 与window.name 重名,被覆盖, 导致无法获取值。

var myName = document.getElementById('myName');
console.log(myName.value);

相关文章

  • Bugfix

    socket读不到 '\n', 导致无法区分用\r\n作为分割的请求头。 为了判断\r\n,按字节逐个读取。错误的...

  • Git Notes

    When a requirement of new feature or bugfix is coming Cre...

  • bugfix:git remote prune

    前言 有同事在sourceTree上删除了远程分支,导致使用sourceTree拉取其他远程分支的时候出现问题。 ...

  • Bugfix随想录

    从敲下第一个字符开始,八阿哥(Bug)就是磨人的小妖精,形影不离,简直比真爱还要真爱。 随着项目的扩大,功能的增加...

  • Android BugFix failed unexpected

    [TOC] Error Inof Reason *.so file are not running at tag...

  • [Bugfix] vite: block by client

    问题描述 在使用vite开启本地服务的时候发现部分资源加载被拦截: 问题分析及解决 另一个环境可以正常使用,本项目...

  • git提交规范

    命名规范:分支:feature[jira号] bugFix: bug[jira号] tag:v[版本号] 流程

  • git提交规范

    命名规范: 分支:feature[jira号] bugFix: bug[jira号] tag:v[版本号] 流程

  • 分支上线规范

    分支命名规范: 1.修复bug分支命名规范: {tagName}_bugfix_{bugfixId},其中tagN...

  • Git命令行

    Git相关操作 简单操作 提交:git commit 创建分支:git branch bugFix 切换分支:gi...

网友评论

      本文标题:Bugfix

      本文链接:https://www.haomeiwen.com/subject/nifkgftx.html