VS Code Remote 远程开发配置

把原来的一篇文章搬一下。
https://www.jianshu.com/p/21faeedafa93

图片懒得搬了。。。

简介

在 PyCon 2019 大会上,微软发布了 VS Code Remote,通过安装Remote Development 扩展包,开发者可以通过VS Code直接在远程机器上进行开发调试,就像在本地开发调试一样,但目前仅在Insider版本中支持该功能。这里主要记录一下Win10下配置VS Code 使用SSH连接Centos7远程开发调试的步骤。

阅读更多

Python去除ASCII控制字符

有些脚本文件中存在一些特殊的 ASCII控制字符,需要对这些字符进行处理

1
2
3
4
5
6
7
8
9
10
11
12
import re

control_chars = ''.join(map(unichr,range(0, 32)+range(127,160)))
control_char_re=re.compile('[%s]'%re.escape(control_chars))


def remove_control_chars(log, str):
try:
return control_char_re.sub('',str)
except Exception:
log.warn('remove control chars failed. {}',str)

Java中 wait、notify和notifyAll方法

为什么Java中 wait、notify和notifyAll是Object类的方法

在考虑这个问题时,从这几个方法所做的事情来考虑可能更容易理解。对象 obj 分别调用wait、notify和notifyAll三个方法时所做的事:
• obj.wait() 是将当前线程放入 obj 对象的等待队列中
• obj.notify() 是从 obj 的等待队列中唤醒一个线程
• obj.notifyAll() 是唤醒 obj 等待对列中的所有线程

也就是说,wait、notify和notifyAll 这三个方法与其说是针对线程的操作,倒不如说是针对实列obj的等待队列的操作。由于所有实例都有等待队列,所以这三个方法也就成为Object类的方法。

参考书籍:图解Java多线程设计模式

学会提问阅读笔记

框架大纲

本书可分为三部分,前面2章介绍正确提问的好处和一些影响正确提问的障碍,后面章节介绍方法论。

  • 正确提问的好处
  • 干扰批判性思维的障碍
  • 如何进行正确提问
阅读更多

PASETO简介

PASETO 是什么?

PASETO Token 的组成结构

PASETO 是如何工作的?

本地PASETO工作方式

公共PASETO工作方式

为什么使用PASETO Token(解决了什么问题)

Java通过线程名kill掉线程

背景

在生产环境,有时候因为代码bug或者数据量太大,导致某个线程死循环或者耗时非常长线程hang住了。在一些场景下,我们希望可以在不重启服务的情况下把这些线程终止了。

在 ActiveMQ 源码中发现一个通过线程名stop线程的方法,在此分享出来供参考。

阅读更多

如何阅读一本书 阅读笔记

读书方法论

读书层次分为:基础阅读,检视阅读,分析阅读和主题阅读,结合自身读书的目的,不同类型的书应采用不同的阅读方法。

  • 以丰富自己的视野为目的的读书,大致阅读一下目录和序,了解讲了什么就可以。
  • 以构建自身知识体系,补齐自身某些领域的短板,那需要详细阅读,挖掘书的核心关键词和关键论点,并将这些内容纳入到自己的知识体系中。

读书的步骤

阅读更多

线上CPU告警问题排查

排查步骤

1、 收到告警信息,提示 Full GC耗时长,FullGC次数频繁,FullGC后Heap使用率异常超过了95%.

2、 登录grafana,查看系统监控指标,发现一台机器CPU使用率指标突然升高。

3、 联系运维同事,查看具体哪个线程占用CPU高。查看占用CPU高的线程命令

1
2
3
top –Hp 进程号
# 把线程号转为16进制
printf "%x\n" 线程号
阅读更多

算法题[leetcode-2186]使两字符串互为字母异位词的最少步骤数

题意

给你两个字符串 s 和 t。在一步操作中,你可以给 s 或者 t 追加 任一字符 。

返回使 s 和 t 互为 字母异位词 所需的最少步骤数。

字母异位词 指字母相同但是顺序不同(或者相同)的字符串。
示例 1:

输入:s = “leetcode”, t = “coats”
输出:7
解释:

  • 执行 2 步操作,将 “as” 追加到 s = “leetcode” 中,得到 s = “leetcodeas” 。
  • 执行 5 步操作,将 “leede” 追加到 t = “coats” 中,得到 t = “coatsleede” 。
    “leetcodeas” 和 “coatsleede” 互为字母异位词。
    总共用去 2 + 5 = 7 步。
    可以证明,无法用少于 7 步操作使这两个字符串互为字母异位词。
阅读更多