污力大熊的博客


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索

ByteToMessageDecoder问题的解决

发表于 2019-09-25 | 分类于 Java , 随笔
| 字数统计 994 字 | 阅读时长 4 分钟

在使用某RPC框架过程中,遇到两个因使用 ByteToMessageDecoder 不当而导致的两个小问题,如下列示例代码所示:

    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List\ list) throws Exception {
        byteBuf.markReaderIndex();
        int dataLength = byteBuf.readInt();
        if (byteBuf.readableBytes() < dataLength) {
            // 未校验最大长度,存在安全隐患
            byteBuf.resetReaderIndex();
            return;
        }
        int rpcMagicVal = byteBuf.readShort();
        if (rpcMagicVal != Rpc.MAGIC_VALUE) {
            // 此处直接close或抛异常后close将导致decode()被重复调用
            ctx.close();
        }
        // DO ACTUAL CODEC
    }
阅读全文 »

由RestartClassLoader探索Springboot热部署

发表于 2019-08-07 | 分类于 Java , 随笔
| 字数统计 1,634 字 | 阅读时长 7 分钟

在SpringBoot项目引入的依赖的代码中发现下面这样问题,最终确定是由RestartClassLoader导致的,由此展开一步一步探索

// 类名一致,但加载出的类却不相等
Class.forName(paramClassNames) == paramClass // false

阅读全文 »

微积分&概率论基础总结

发表于 2017-11-13 | 分类于 MachineLearning
| 字数统计 2,746 字 | 阅读时长 13 分钟

最近自己也跟着了解学习机器学习方面知识,打算先从统计数理基础知识开始着手。已下为对微积分和概率论基础知识总结,后续将补充更深入更全面的知识总结。

阅读全文 »

Linux架设GitServer、GitWeb

发表于 2017-11-02 | 分类于 Linux
| 字数统计 960 字 | 阅读时长 4 分钟

起因是公司 SVN 服务器老歇机,有些代码放GitHub 又不怎么合适,且近来 GitHub被墙的贼厉害。只需要简单几步即可搭建自己私有的 Git Server,并通过 Git Web 进行浏览查看。

环境: Debian 9 ,Nginx/1.10.3

阅读全文 »

JShell - Java交互工具(REPL) - 笔记

发表于 2017-10-20 | 分类于 Java
| 字数统计 1,249 字 | 阅读时长 5 分钟

在今年九月正式发布的 Java9 版本中,其 /bin 目录中多个一个交互工具 JShell(据说 Java8 已有测试版)。众所周知,许多编程语言都提供称作 Read-Evaluate-Print Loop (REPL)的命令行工具,它们能够在输入声明、语句及表达式时计算,并立即给出结果。

以 Python 为例,运行整个工程、项目可能需要很长时间,但是你可以使用此工具执行一些需要确定的表达式,就能立即得到他们返回的值。这对于哪些开始学习语言或者接触语言新功能的程序员来说是个便捷好用的工具。

然而没 JShell 之前的 Java 来说,你需要编写一个测试类新建 main 方法来打印结果,并且每次修改后需要重写编译、运行。

阅读全文 »

一键配置脚本(用户添加配置、源修改、ss&BBR安装)

发表于 2017-10-12 | 分类于 Linux
| 字数统计 1,540 字 | 阅读时长 9 分钟

最近在各个服务器提供商中尝试适合的服务器,然而给多个服务器初始配置确实很是繁琐无聊。
索性自己写个脚本,这样一接手新的服务器就能自动配置,省下时间来好好折腾别的。


功能

目前适用环境:CentOS 5+、Ubuntu、Debian

  1. 显示系统信息
  2. 修改源为国内阿里云源镜像(也可修改参数配置其他源)
  3. 创建指定用户、创建Home目录、指定Shell、添加到 sudoers (可修改参数)
  4. 下载.bashrc、.vimrc 配置工作环境(来自博主自己)
  5. 安装Shadowsocks 、BBR(可选、来源 https://teddysun.com/ 秋水逸冰)
  6. 配置Java、Python等(待续完善)
    阅读全文 »

深度解析Java线程池的异常处理

发表于 2017-09-20 | 分类于 Java
| 字数统计 3,508 字 | 阅读时长 16 分钟

在逛同性交友网站GitHub的时候看到一个解析线程池异常处理的Issue,正好是曾经自己遇到过的问题。在此记录下来,并将其拓展到其他类型的线程池。

本文因篇幅省略了诸多AQS相关知识,可以查看博客中另一篇博文 一行一行源码分析清楚AQS 以保证清楚理解本文。

阅读全文 »
12…6
污力大熊

污力大熊

40 日志
19 分类
27 标签
RSS
GitHub ZhiHu
Links
  • GitHub
© 2016 - 2019 污力大熊
由 Hexo 强力驱动
主题 - NexT.Muse