自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林贻民的博客

我的学习记录

  • 博客(171)
  • 收藏
  • 关注

原创 Arthas原理分析

Arthas主要基于是Instrumentation + JavaAgent + Attach API + ASM + 反射 + OGNL等技术实现的。在不停止应用服务的情况下,将Arthas的jar包代码动态加载到应用的JVM中,再配合**Instrumentation**类,动态修改应用JVM中运营的字节码,实现对目标应用增强,如获取某方法的参数、返回值、耗时等信息、调用JVM相关类获取JVM运行时信息,最后再通过OGNL过滤、存取对象属性。

2023-06-22 23:34:38 1947

原创 Idea Mybatis插件:提高CRUD效率

将mybatis xml转成真实SQL语句、参数mock、SQL规范检查、SQL索引检查、SQL运行、SQL压测及Mybatis SQL语句扫描

2023-06-19 23:41:59 1336

原创 Spring应用启动分析&优化

采集Spring应用启动过程数据,生成交互式分析报告(HTML),用于分析Spring应用启动卡点,优化Spring应用启动速度

2023-06-19 00:21:17 765

原创 ls + awk 获取文件信息(json格式)

ls + awk 获取文件信息(json格式)目前正在通过jsch是实现一个通过web页面操作服务器文件的功能,如下图所示。为了简化操作,直接通过ls和awk命令获取文件信息并转成json字符串,共前端展示。文件格式如下:[ { "typeAndPermission": "dr-xr-x---.", "owner": "root", "group": "root", "size": "12288", "lastA

2021-06-14 15:32:55 1447 1

原创 redis字典数据结构解析

数据结构哈希表节点// 字典中的键值对typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; double d; } v; struct dictEntry *next;} dictE...

2019-07-21 10:14:26 340

原创 Redis内存管理源码阅读

破山中贼易,破心中贼难C语言中没有自带GC, 所有的内存的分配和释都由开发者自己控制.为了实现内存分配释放的合理性和高效性, Redis封装了C语言中的malloc, calloc和realloc和free函数来实现对内存的管理.这些实现包含在zmalloc.c和zmalloc.h文件中.Redis封装后的内存管理, 主要具有以下特点:记录已使用内存大小内存管理记录已使用内存大小...

2019-07-18 23:58:17 354

原创 使用wireshark查找socket连失败

管他什么真理无穷,进一寸有一寸的欢喜使用wireshark查找socket连失败字节序与网络字节序字节序转换相关代码使用wireshark查找socket连失败在实现《TCP/IP网络编程》第5章的计算器服务器端/客户端示例时,服务器端和客户端代码都已经实现好了,相关代码如下.根据代码,当客户端连上服务器时,服务器端会打印Connected...字符串, 客户端...

2019-05-06 09:38:06 1540

原创 平均负载

平均负载的定义单位时间内, 系统处于可运行状态和不可中断状态的进程数。也可以理解成单位时间内,活跃的进程数。可运行状态: 正在使用或者等待使用CPU的进程,使用top命令查看时,状态S为R的进程不可中断状态: 正处在内核态关键流程中的进程。最常见的是等待硬件设备的IO响应。不可中断状态是系统对进程和硬件设备的一种保护机制。例如, 当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘...

2019-03-23 16:50:24 381

原创 使用expect自动化完成集群SSH信任关系的建立

将以下脚本存成文件,并修改其权限$ chmod 775 establish-ssh.sh在同一目录下新建servers.txt文件,并填入相关IPlinyimin@:capra(master)$ cat servers.txt192.168.121.10192.168.121.11192.168.121.12192.168.121.13192.168.121.14192...

2018-10-23 21:58:49 433

原创 远程连接虚拟机Linux

ssh远程连接虚拟机Linux查看虚拟机Linux是否安装ssh$ ps -e | grep ssh如果显示如下结果:linyimin@ubuntu:/etc/ssh$ ps -e | grep ssh 1380 ? 00:00:00 ssh-agent 2466 ? 00:00:00 ssh-agent说明没有安装ssh server,这时如...

2018-10-23 16:04:01 7338

转载 使用cat和EOF添加多行数据

当需要将多行文件输入到文本时,如果每条都使用echo 到文件时是比较繁琐的,这种情况下可以使用cat EOF进行多行文件的覆盖或追加输入。一、覆盖这里有两种格式可以使用1、格式一#!/bin/bashcat << EOF > /root/test.txtHello!My site is www.361way.comMy site is www.91it.orgT...

2018-10-23 14:58:50 25495 2

原创 使用travis CI自动发布npm包

初始化项目时指定程序入口和相关变异命令{ "name": "keypress-event", "version": "1.1.1", "description": "Listen to the key press&

2018-08-20 11:31:49 1869

原创 下载知乎视频并在线播放

下载知乎视频并在线播放下载知乎视频知乎的视频使用HLS实时流传输协议进行传输.HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。1、M3U8文件用文本方式对媒体文件进行描述,由一系列标签组成。#EXTM3U#EXT-X-TARGETD...

2018-08-13 16:53:58 13779 1

原创 使用boostrap modal和ACE实现的一个简单模态框代码编辑器

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Bootstrap 实例 - 模态框(Modal)插件</title> <link rel="stylesheet" href="https://

2018-07-28 15:23:47 1202

原创 代理模式

Java动态代理代理模式给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用 代理对象:起到中介作用,连接客户端和目标对象 例子:电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式(代理对象),快捷方式连接客户端和程序,客户端通过操作快捷方式就可以操作那个程序 从UML图中,可以看出代理类与真正实现的类都是继承了抽象的主题类,这样的好处在于代理类...

2018-07-10 18:01:08 501

原创 将CentOS7.2默认的OpenJDK替换为Oracle JDK

下载 Oracle JDK首先从 Oracle网站下载所需的JDK。安装Oracle JDK# rpm -ivh jdk-8u144-linux-x64.rpm Preparing... ################################# [100%]Updating / installing... ...

2018-07-04 16:42:40 1735

原创 第四章 java并发编程基础

第四章 java并发编程基础使用多线程的原因更多的处理器核心 一个线程一个时刻只能运行在一个处理器核心上更快的响应时间 将数据一致性不强德 操作发给其他线程处理Java提供了良好、考究且一致的多线程编程模型线程的状态NEW: 初始状态,线程被构建,但是还没有调用start()方法RUNNABLE: 运行状态,java线程将就绪和运行两种状态统称”运行中”B...

2018-06-27 14:20:38 220

原创 并发编程-第三章

第三章 java内存模型并发编程模型两个关键问题线程间的通信 共享内存(隐式通信)消息传递(显式通信)线程间的同步 共享内存同步(显式) 指定某个方法或代码段在线程之间互斥执行消息传递同步(隐式) 消息必须在接收之前发送java并发编程模型采用共享内存模型。内存模型抽象结构共享变量(存储在堆内存中) 类实例静态变量数组元素非共享变量 局部变...

2018-06-25 17:51:56 175

原创 并发编程-第二章

第二章 java并发机制的底层实现原理java中使用的并发机制依赖于JVM的实现的CPU的指令volatile关键字轻量级的synchronized在多处理器开发中保证共享变量的可见性不会引起上下文的切换,性能比synchronized好...

2018-06-25 17:51:07 196

原创 并发编程-第一章

第一章 并发编程中常见的问题相关概念时间片: CPU分配给各个线程的时间上下文切换: 保存当前任务状态,加载下一个任务状态常见问题上下文切换问题死锁问题受限于硬件和软件的资源问题 硬件网络的带宽上传和下载速度硬盘的读写速度CPU的处理速度软件数据库的连接数socket的连接数解决方法避免死锁的常见方法:避免在一个线程中同时获取多...

2018-06-25 16:52:25 184

原创 Typescript实现java的hashCode函数

Typescript实现java的hashCode函数import * as int from 'int32'function hashCode(str: string): number { let hash = 0; if (hash == 0 && str.length > 0) { for (let i = 0; i < str.leng...

2018-06-06 09:07:51 1629

原创 github同步原作者代码

添加upstream remote使用 git remote -v 查看远程状态git remote -v添加原作者的远程仓库到remotegit remote add upstream 原作者远程仓库地址同步fork从上游仓库 fetch 分支和提交点,传送到本地,并会被存储在一个本地分支 upstream/mastergit fetch up...

2018-05-30 09:39:17 1009

原创 Typescript下使用mocha和should编写测试用例

安装相关依赖npm install mocha should -gnpm install mocha should -D安装类型定义文件npm install @types/mocha @types/should -D编写测试用例./sortTestHelper/sortTestHelper.ts产生一个指定元素个数,和范围的随机整型数组/** * ...

2018-04-28 11:51:13 4554

原创 module.exports和exports的区别

module.exports和exports的区别默认情况下,module.exports只想一个空的对象{},用于导出单个对象,require引入后可以直接使用exports是对module.exports的一个全局引用,且exports不允许被重写,因为exports重写之后,它将不再指向module.exports,如果想维持这个链接可以使用以下的语句:module.expors...

2018-04-26 11:37:23 488

原创 VScode下一键调试typescript代码

无须编译typescript文件,直接调试TS代码launch.json的配置{ "version": "0.2.0", "configurations": [ { "name": "Current TS File", "type": "node", "request&

2018-04-25 11:01:18 3388

原创 使用ceph分布式文件系统备份Gitlab数据

使用ceph分布式文件系统备份Gitlab数据客户端有两种方式可以挂载ceph文件系统(内核挂载和fuse挂载).内核挂载的性能比fuse(用户空间文件系统)挂载性能要好,但是fuse挂载更易于文件的open,close,write等操作,所以选择fuse挂载.挂载成功之后,客户端可以像操作本地文件一样,对挂载目录进行操作,增加,删除,修改的文件都会实时备份到ceph文件系统中.实现文件的多重...

2018-04-15 23:09:52 1259

原创 github的简单使用

删除远程仓库分支1.查看本地所有分支 git branch2.查看所有分支(包含远程分支) git brach -a3.选择分支 git checkout branch-name4.删除本地分支 git branch -D branch-name5.删除远程分支(远程分支的本地索引) git branch -r -d ...

2018-04-14 10:39:54 218

原创 Centos7安装mongoDB3.6

1.配置MongoDB的yum源vim /etc/yum.repos.d/mongodb-org-3.4.repo添加以下内容[mongodb-org-3.2]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpg...

2018-04-09 09:20:20 745

原创 scp在命令行中带密码远程拷贝文件

使用sshpass命令sshpass -p 密码 scp -p 端口 源文件 目的文件

2018-03-29 10:32:07 65238 5

原创 使用typescript编写react

使用typescript编写react初始化项目npm init安装相关组件# 安装typescript和awesome-typescript-loadercnpm install typescript awesome-typescript-loader -D cnpm install @types/typescript -D# 安装react和rea...

2018-03-24 15:31:21 1472 1

原创 Buffer类的使用

Buffer类的使用Buffer类的创建指定长度的Buffer实例let a: Buffer = new Buffer(number: length);# 为Buffer实例赋值a.fill(value);通过数组实现Buffer的实例(使用数组初始化缓冲区)let a: Buffer = new Buffer(array);通过字符串和编码实现Buffer的实例...

2018-03-24 15:28:40 1073

原创 Node错误异常处理

Node错误异常处理同步代码使用try…catchtry { var err = new Error('example') throw err} catch (err) { // handle the error safely console.log(err)}执行结果Error: example at Object.<anonym...

2018-03-20 23:59:00 3147

原创 指定远程IP使用root用户访问mysql数据库

登陆mysql数据库mysql -u root -p#输入密码更改相关信息# 选择user数据库use user;# 刷新权限flush privileges;# 查看user和hostselect user, host from user;# 如果存在用户root对应的host为%,则删除DELETE FROM user WHERE host="%" and ...

2018-03-14 19:04:28 1138

转载 Harbor的使用-默认端口的修改

在公网上,一般情况下都不暴露默认端口,避免被攻击!以下修改harbor的默认80端口为其他端口!我这里示例修改为1180端口!注意:以下步骤都是在harbor目录下操作!!!1、修改docker-compose.yml文件映射为1180端口:复制代码 1 #vim docker-compose.yml 2 3 proxy: 4 image: nginx:1....

2018-03-05 15:36:13 8064 1

原创 Docker修改默认存储位置

阿里云的系统盘只有40G,有时docker镜像会占据大量的存储空间,于是想把docker的默认存储位置改成挂载的数据盘。docker的默认存储位置未为:/var/lib/docker更改docker的默认存储位置1.关闭docker服务service docker stop2.将/var/lib/docker文件夹拷贝到指定目录cd /var/libcp -rf /d...

2018-03-05 15:31:58 4875

转载 已解决:Ubuntu安装sogou输入法后出现两个图标和输入框

1.查找进程fcitx-qimpanel 对应的pid,然后杀死ps -ef | grep fcitx-qimpanelsudo kill -9 [对应的pid]2.不过每次开机都要杀一次很麻烦,索性就让它开机执行sudo vim /etc/rc.local# 在exit 0之前添加如下代码/bin/ps -ef | grep fcitx-qimpanel | grep -v...

2018-02-16 09:30:01 1776

原创 Oracle 11g数据库的启动

本文主要介绍Oracle数据库的启动过程。切换到数据库用户Oraclesu oracle# 使Oracle用户配置文件生效source ~/.bash_profile启动Oracle监听lsnrctl start登录SQLplussqlplus /nologconn / as sysdbastartup 可以发现启

2018-01-30 11:45:23 7885

转载 Ubuntu下安装chrome浏览器

1.在终端中,输入以下命令:sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/将下载源加入到系统的源列表。2.在终端中,输入以下命令:wget -q -O - https://dl.google.com/linux/linux_signin

2018-01-18 21:28:34 18398

原创 Ubuntu16.04升级内核

一、查看内核版本uname -r二、下载指定内核版本打开内核文件下载并选择列表中需要的版本 注意区分系统位数下载 我的系统是64位的,所以下载如下$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300-generic_4.13.0-041300.201709

2018-01-18 21:07:00 5455

转载 Ubuntu 16.04 LTS安装sogou输入法

转自:Ubuntu 16.04 LTS安装sogou输入法

2018-01-18 20:34:28 311

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除