博客园 - lwli
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=156143
2020-05-31T15:24:01Z
lwli
https://www.cnblogs.com/lilinwei340/
feed.cnblogs.com
https://www.cnblogs.com/lilinwei340/p/13021864.html
Connection reset原因分析及解决思路 - lwli
我们在开发过程中经常会出现Connection reset问题,包括http调用,数据库连接等场景。出现Connection reset的原因很多,本文从tcp层面简单介绍下Connection reset出现的原因,以及在实际开发过程中如何排查这类问题。 1、什么是Connection reset
2020-05-31T15:24:00Z
2020-05-31T15:24:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】我们在开发过程中经常会出现Connection reset问题,包括http调用,数据库连接等场景。出现Connection reset的原因很多,本文从tcp层面简单介绍下Connection reset出现的原因,以及在实际开发过程中如何排查这类问题。 1、什么是Connection reset <a href="https://www.cnblogs.com/lilinwei340/p/13021864.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12833847.html
内部类与函数式编程 - lwli
首先,我们来看下策略模式,这是网上找到的一个关于策略模式的解释:策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以
2020-05-05T16:03:00Z
2020-05-05T16:03:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】首先,我们来看下策略模式,这是网上找到的一个关于策略模式的解释:策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以 <a href="https://www.cnblogs.com/lilinwei340/p/12833847.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12609224.html
kubernetes入门教程 - lwli
一、kubernetes 自动化容器的部署和复制 随时扩展或收缩容器规模 将容器组织成组,并且提供容器间的负载均衡 很容易地升级应用程序容器的新版本 提供容器弹性,如果容器失效就替换它,等等... 二、pod Pod 是 Kubernetes 中最小的可互动单元 Pod包含一组容器和卷。同一个Pod
2020-03-31T14:38:00Z
2020-03-31T14:38:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】一、kubernetes 自动化容器的部署和复制 随时扩展或收缩容器规模 将容器组织成组,并且提供容器间的负载均衡 很容易地升级应用程序容器的新版本 提供容器弹性,如果容器失效就替换它,等等... 二、pod Pod 是 Kubernetes 中最小的可互动单元 Pod包含一组容器和卷。同一个Pod <a href="https://www.cnblogs.com/lilinwei340/p/12609224.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12605481.html
kubernetes入门教程——docker容器 - lwli
一、容器 什么是容器 为什么使用容器 生命周期 容器与虚拟机的对比 容器的操作 二、镜像 什么是镜像 镜像的分层存储 镜像的来源 三、镜像仓库 官方仓库 私有仓库 Pull 镜像 Push 镜像 Tag 镜像 四、docker容器的相关命令
2020-03-31T14:22:00Z
2020-03-31T14:22:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】一、容器 什么是容器 为什么使用容器 生命周期 容器与虚拟机的对比 容器的操作 二、镜像 什么是镜像 镜像的分层存储 镜像的来源 三、镜像仓库 官方仓库 私有仓库 Pull 镜像 Push 镜像 Tag 镜像 四、docker容器的相关命令 <a href="https://www.cnblogs.com/lilinwei340/p/12605481.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12401618.html
git分支实践 - lwli
本文基于这样一个场景:有多个新功能并行开发,按先后顺序上线,但是偶尔会出现正在测试的版本暂停上线,另外一个紧急功能需要优先上线。本文分享一个用git分支来管理这样的场景。 本文基于:https://nvie.com/posts/a-successful-git-branching-model/ 这边
2020-03-03T04:39:00Z
2020-03-03T04:39:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】本文基于这样一个场景:有多个新功能并行开发,按先后顺序上线,但是偶尔会出现正在测试的版本暂停上线,另外一个紧急功能需要优先上线。本文分享一个用git分支来管理这样的场景。 本文基于:https://nvie.com/posts/a-successful-git-branching-model/ 这边 <a href="https://www.cnblogs.com/lilinwei340/p/12401618.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12115664.html
学习kubernetes——部署Ingress - lwli
一、安装Ingress 官方文档:https://kubernetes.github.io/ingress-nginx/deploy/ 由于证书问题,我们可以把ingress安装在主节点 下载:https://raw.githubusercontent.com/kubernetes/ingress-
2019-12-29T10:27:00Z
2019-12-29T10:27:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】一、安装Ingress 官方文档:https://kubernetes.github.io/ingress-nginx/deploy/ 由于证书问题,我们可以把ingress安装在主节点 下载:https://raw.githubusercontent.com/kubernetes/ingress- <a href="https://www.cnblogs.com/lilinwei340/p/12115664.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12115469.html
学习kubernetes——部署dashboard - lwli
一、安装dashboard 首先参考官方文档:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ 官方的安装命令如下: 当有多个节点时,安装到非主节点时,会出现一些问题。dashboard使用ht
2019-12-29T08:56:00Z
2019-12-29T08:56:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】一、安装dashboard 首先参考官方文档:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ 官方的安装命令如下: 当有多个节点时,安装到非主节点时,会出现一些问题。dashboard使用ht <a href="https://www.cnblogs.com/lilinwei340/p/12115469.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/12099217.html
学习kubernetes——搭建kubernetes集群 - lwli
学习k8s的最好方式是自己搭建一个k8s集群,并实际操作。按照官方教程,其实并不复杂,但是由于网络问题,很多软件和镜像无法下载,所以安装过程还是比较麻烦的。 学习k8s并不需要集群环境,个人电脑就可以搭建一个单机集群来学习。下面简单介绍下过程,会跳过比较简单的步骤,重点说下需要注意的事项 一、安装虚
2019-12-25T13:57:00Z
2019-12-25T13:57:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】学习k8s的最好方式是自己搭建一个k8s集群,并实际操作。按照官方教程,其实并不复杂,但是由于网络问题,很多软件和镜像无法下载,所以安装过程还是比较麻烦的。 学习k8s并不需要集群环境,个人电脑就可以搭建一个单机集群来学习。下面简单介绍下过程,会跳过比较简单的步骤,重点说下需要注意的事项 一、安装虚 <a href="https://www.cnblogs.com/lilinwei340/p/12099217.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11972585.html
java虚拟机规范(se8)——class文件格式(七) - lwli
4.7.5 Exceptions 属性 Exceptions 属性是一个变长属性,它位于 method_info(§4.6)结构的属性表中。 Exceptions 属性指出了一个方法需要检查的可能抛出的异常。一个 method_info 结构中最多只能有一个 Exceptions 属性。 Excep
2019-12-02T10:44:00Z
2019-12-02T10:44:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.7.5 Exceptions 属性 Exceptions 属性是一个变长属性,它位于 method_info(§4.6)结构的属性表中。 Exceptions 属性指出了一个方法需要检查的可能抛出的异常。一个 method_info 结构中最多只能有一个 Exceptions 属性。 Excep <a href="https://www.cnblogs.com/lilinwei340/p/11972585.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11968452.html
java虚拟机规范(se8)——class文件格式(六) - lwli
4.7.4 StackMapTable 属性 StackMapTable 属性是一个变长属性,位于 Code(§4.7.3)属性的属性表中。这个属性会在虚拟机类加载的类型阶段(§4.10.1)被使用。 StackMapTable 属性包含 0 至多个栈映射帧(Stack Map Frames),每个
2019-12-01T15:54:00Z
2019-12-01T15:54:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.7.4 StackMapTable 属性 StackMapTable 属性是一个变长属性,位于 Code(§4.7.3)属性的属性表中。这个属性会在虚拟机类加载的类型阶段(§4.10.1)被使用。 StackMapTable 属性包含 0 至多个栈映射帧(Stack Map Frames),每个 <a href="https://www.cnblogs.com/lilinwei340/p/11968452.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11590497.html
java虚拟机规范(se8)——class文件格式(五) - lwli
4.7.1 定义和命名新属性 允许编译器定义和发布的class文件在class文件结构体、field_info结构体、method_info结构体和Code结构体中的attributes表中包含新的属性。允许java虚拟机识别和使用attributes表中的新属性。但是,任何没有在class文件规范
2019-10-28T10:57:00Z
2019-10-28T10:57:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.7.1 定义和命名新属性 允许编译器定义和发布的class文件在class文件结构体、field_info结构体、method_info结构体和Code结构体中的attributes表中包含新的属性。允许java虚拟机识别和使用attributes表中的新属性。但是,任何没有在class文件规范 <a href="https://www.cnblogs.com/lilinwei340/p/11590497.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11751846.html
一次spring boot web服务响应缓慢的排查 - lwli
使用spring boot搭建了一个web服务,部署在docker容器中。使用中出现了一个性能问题:多次接口请求中,偶尔会出现一次响应非常慢的情况。正常情况下接口的响应时间在10-20ms,偶尔会出现一次3s以上的响应。下面是自己的一个排查过程 1、验证本地开发环境。 首先考虑的是在本地开发环境中找
2019-10-28T10:47:00Z
2019-10-28T10:47:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】使用spring boot搭建了一个web服务,部署在docker容器中。使用中出现了一个性能问题:多次接口请求中,偶尔会出现一次响应非常慢的情况。正常情况下接口的响应时间在10-20ms,偶尔会出现一次3s以上的响应。下面是自己的一个排查过程 1、验证本地开发环境。 首先考虑的是在本地开发环境中找 <a href="https://www.cnblogs.com/lilinwei340/p/11751846.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11582551.html
java虚拟机规范(se8)——class文件格式(四) - lwli
4.7 属性 属性用于class文件格式中的ClassFile,field_info,method_info和Code_attribute结构。 所有的属性都是下面的格式: 对于所有的属性,attribute_name_index是类文件常量池中有效的16位索引。在这个索引位置的常量池条目必须是CO
2019-09-26T09:17:00Z
2019-09-26T09:17:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.7 属性 属性用于class文件格式中的ClassFile,field_info,method_info和Code_attribute结构。 所有的属性都是下面的格式: 对于所有的属性,attribute_name_index是类文件常量池中有效的16位索引。在这个索引位置的常量池条目必须是CO <a href="https://www.cnblogs.com/lilinwei340/p/11582551.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11448464.html
java虚拟机规范(se8)——class文件格式(三) - lwli
4.5 字段 字段使用field_info结构来描述。 在同一个class文件中的两个字段不能有相同的名称和描述符。 结构的格式如下: field_info结构中的项目如下: access_flags access_flags的值是标识的掩码,用于表示对该字段的访问权限和属性。表4.5-A指定了设置
2019-09-02T11:37:00Z
2019-09-02T11:37:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.5 字段 字段使用field_info结构来描述。 在同一个class文件中的两个字段不能有相同的名称和描述符。 结构的格式如下: field_info结构中的项目如下: access_flags access_flags的值是标识的掩码,用于表示对该字段的访问权限和属性。表4.5-A指定了设置 <a href="https://www.cnblogs.com/lilinwei340/p/11448464.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11408611.html
java虚拟机规范(se8)——class文件格式(二) - lwli
4.4 常量池 java虚拟机指令并不依赖类、接口、类实例或者数组的运行时布局。相反,指令依靠常量池中的符号信息。 所有的常量池条目都有如下的通用结构: 常量池表中的每一个项目是以1比特的标识位开始,指示是哪种cp_info条目。info数组的内容由标志位来决定。有效的标识以及对应的值见表4.4-A
2019-09-01T14:53:00Z
2019-09-01T14:53:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】4.4 常量池 java虚拟机指令并不依赖类、接口、类实例或者数组的运行时布局。相反,指令依靠常量池中的符号信息。 所有的常量池条目都有如下的通用结构: 常量池表中的每一个项目是以1比特的标识位开始,指示是哪种cp_info条目。info数组的内容由标志位来决定。有效的标识以及对应的值见表4.4-A <a href="https://www.cnblogs.com/lilinwei340/p/11408611.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11168925.html
java虚拟机规范(se8)——class文件格式(一) - lwli
第四章 class文件格式 本章介绍了java虚拟机的class文件格式。每一个class文件包含一个单独的类或者接口的定义。虽然类和接口不一定都定义在文件中(比如类和接口亦可以通过类加载器直接生成),我们将通俗地将类或接口的任何有效表示称为class文件格式。class文件是由8位的字节流组成。所
2019-08-01T11:04:00Z
2019-08-01T11:04:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】第四章 class文件格式 本章介绍了java虚拟机的class文件格式。每一个class文件包含一个单独的类或者接口的定义。虽然类和接口不一定都定义在文件中(比如类和接口亦可以通过类加载器直接生成),我们将通俗地将类或接口的任何有效表示称为class文件格式。class文件是由8位的字节流组成。所 <a href="https://www.cnblogs.com/lilinwei340/p/11168925.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11158887.html
java虚拟机规范(se8)——java虚拟机的编译(四) - lwli
3.12 抛出和处理异常 在程序中使用throw关键字来抛出异常。编译结果很简单。 编译为: 使用try-catch构建的编译时直观的,例如: 编译为: 自己观察,try代码块编译后,就和try不存在一样: 在执行try代码块的时候,如果没有异常抛出,就和try不存在一样:tryItOut被调用然后
2019-08-01T10:57:00Z
2019-08-01T10:57:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】3.12 抛出和处理异常 在程序中使用throw关键字来抛出异常。编译结果很简单。 编译为: 使用try-catch构建的编译时直观的,例如: 编译为: 自己观察,try代码块编译后,就和try不存在一样: 在执行try代码块的时候,如果没有异常抛出,就和try不存在一样:tryItOut被调用然后 <a href="https://www.cnblogs.com/lilinwei340/p/11158887.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/11131439.html
java虚拟机规范(se8)——java虚拟机的编译(三) - lwli
3.6 接受参数 如果n个参数传给一个实例的方法,按照约定,它们被接受并放在这个新方法创建的栈帧中的局部变量表里,在局部变量表中的序号从1到n。这些参数按照它们传递过来的顺序存放。例如: 编译为 按照约定,一个实例的引用要传递到当前实例方法的局部变量0。在java编程语言中这个实例可以通过关键词th
2019-07-04T08:46:00Z
2019-07-04T08:46:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】3.6 接受参数 如果n个参数传给一个实例的方法,按照约定,它们被接受并放在这个新方法创建的栈帧中的局部变量表里,在局部变量表中的序号从1到n。这些参数按照它们传递过来的顺序存放。例如: 编译为 按照约定,一个实例的引用要传递到当前实例方法的局部变量0。在java编程语言中这个实例可以通过关键词th <a href="https://www.cnblogs.com/lilinwei340/p/11131439.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/10948570.html
java虚拟机规范(se8)——java虚拟机的编译(二) - lwli
3.3 算术运算 java虚拟机通常在操作数栈上进行算术运算(例外情况是iinc指令,它直接增加一个局部变量的值)。例如下面的align2grain()方法,它的作用是将int值对齐到2的指定次幂: 算术运算的操作数是从操作数栈中弹出的,运算结果会压回操作数栈。因此,算术子计算的结果可以作为嵌套计算
2019-06-04T14:25:00Z
2019-06-04T14:25:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】3.3 算术运算 java虚拟机通常在操作数栈上进行算术运算(例外情况是iinc指令,它直接增加一个局部变量的值)。例如下面的align2grain()方法,它的作用是将int值对齐到2的指定次幂: 算术运算的操作数是从操作数栈中弹出的,运算结果会压回操作数栈。因此,算术子计算的结果可以作为嵌套计算 <a href="https://www.cnblogs.com/lilinwei340/p/10948570.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lilinwei340/p/10932517.html
java虚拟机规范(se8)——java虚拟机的编译(一) - lwli
本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第三章 java虚拟机的编译 java虚拟机是设计用来支持java编程语言的。Oracle的JDK软件包含了一个将Java源代码编译成java虚拟机指令集的编译器
2019-05-29T13:54:00Z
2019-05-29T13:54:00Z
lwli
https://www.cnblogs.com/lilinwei340/
【摘要】本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第三章 java虚拟机的编译 java虚拟机是设计用来支持java编程语言的。Oracle的JDK软件包含了一个将Java源代码编译成java虚拟机指令集的编译器 <a href="https://www.cnblogs.com/lilinwei340/p/10932517.html" target="_blank">阅读全文</a>