Archive 2022

docker compose入门

<h3 id="docker-compose入门">docker compose入门</h3> <p>本篇文章介绍构建一个运行在docker compose上的python web应用程序,这个应用程序使用Flask框架同时维护一个计数器在redis中。</p> <p>首先确保你已经安装Docker Engine和Docker Compose,你不需要安装python或者redis,因为它们是

Java内存模型

<h3 id="java内存模型">Java内存模型</h3> <p><strong>Java内存模型(Java Memory Model,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。</strong></p> <pre tabindex="0"><code>简要言之,jmm是jvm的一种规范,定

Java类加载机制

<h3 id="java类加载机制">Java类加载机制</h3> <p><strong>类加载机制</strong></p> <p>所谓类加载机制就是JVM虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成虚拟机可以直接使用的Java类型,即Java.lang.Class。</p> <p><strong>类的生命周期</strong></p> <p><strong>类的生

Java创建对象的五种方式

<h3 id="java创建对象的五种方式">Java创建对象的五种方式</h3> <p>本文将介绍五种方式来创建一个Java对象:</p> <ul> <li>使用new关键字</li> <li>使用Class.newInstance</li> <li>使用Constructor.newInstance</li> <li>使用clone方法</li> <li>使用反序列化</li> </ul>

macOS关闭apache httpd开机启动

<h3 id="macos关闭apache-httpd开机启动">macOS关闭apache httpd开机启动</h3> <p>macOS默认安装了apache httpd服务,并且会开机自动启动,占用了80端口。 如果不需要httpd服务,可以关闭apache httpd服务,取消开机自动启动。</p> <p>在终端执行如下命令:</p> <p><code>sudo lsof

go语言json解析gjson

<h3 id="go语言json解析gjson">go语言json解析gjson</h3> <p>go语言json解析无论是使用标准库encoding/json还是第三库json-iterator,都需要定义 结构体或者map,有的时候我们只想获取json中的部分值,定义结构体或者map还是比较麻烦的, 这时候我们可以选择gjson。</p> <p>gjson是一个Go包,它提供了一种从json文

go语言json解析json-iterator

<h3 id="go语言json解析json-iterator">go语言json解析json-iterator</h3> <p>json-iterator是一个高性能100%兼容的"encoding/json"的替代品</p> <p>官方网址:<a href="http://jsoniter.com/">http://jsoniter.com/</a></p> <p>安装方

go语言处理TCP粘包

<h3 id="go语言处理tcp粘包">go语言处理TCP粘包</h3> <h6 id="tcp粘包是指发送方发送的若干数据包到接收方接收时粘成一包从接收缓冲区看后一包数据的头紧接着前一包数据的尾">TCP粘包是指发送方发送的若干数据包到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。</h6> <p>粘包可能由发送方造成,也可能由接收方造成。</p> <h6 id="

go语言大端模式和小端模式

<h3 id="go语言大端模式和小端模式">go语言大端模式和小端模式</h3> <h6 id="什么是大端和小端">什么是大端和小端?</h6> <p>Big-Endian和Little-Endian的定义如下:</p> <ol> <li> <p>Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。</p> </li> <li> <p>Big-Endian

go语言判断系统是大端存储还是小端存储

<h3 id="go语言判断系统是大端存储还是小端存储">go语言判断系统是大端存储还是小端存储</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code

我们为什么要学习Go语言?为什么大公司开始采用Go语言

<h3 id="我们为什么要学习go语言为什么大公司开始采用go语言">我们为什么要学习Go语言?为什么大公司开始采用Go语言</h3> <p>我们在学习一门编程语言之前应该知道为什么要学习这门编程语言,和做好一件事情一样,我们应该知道做这件事情的意义,才能在遇到困难时坚持做好这件事。</p> <p>我们为什么要学习Go语言呢?学习C语言不好吗,学习Rust语言不好吗?</p> <p>我们要从Go

go语言网络编程之TCP Socket

<p>tcp client端代码tcp_client.go如下:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go"

go语言网络编程之UDP Socket

<p>udp client端代码udp_client.go如下:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go"

go语言基础内置函数new和make

<h3 id="go语言基础内置函数new和make">go语言基础内置函数new和make</h3> <p>go语言中的内置函数make和new都是用作变量的初始化,但是它们初始化变量的方式不同,make返回类型是引用类型,new返回类型是指针类型。</p> <h6 id="内置函数make">内置函数make</h6> <p>内置函数make仅用作分配内存空间并初始化slice,map

go语言基础方法和接收器

<h3 id="go语言基础方法和接收器">go语言基础方法和接收器</h3> <p>在Go语言中有一个概念和函数极其相似叫做方法,Go语言的方法其实是作用在接收者(receiver)上的一个函数,接收者是某种非内置类型的变量,因此方法是一种特殊类型的函数。</p> <h6 id="方法和函数的不同点">方法和函数的不同点:</h6> <ul> <li> <p>函数和方法声明的方式不同</p>

go语言基础值传递

<h3 id="go语言基础值传递">go语言基础值传递</h3> <h6 id="go语言中只有值传递没有引用传递">go语言中只有值传递,没有引用传递</h6> <p>值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数,函数外和函数里对这个参数地址求值应该是不一样的。</p> <p>引用传递是指在调用函数时将实际参数的地址直接传递到函数

go语言基础结构体传参

<h3 id="go语言基础结构体传参">go语言基础结构体传参</h3> <p>使用struct关键字可以定义一个结构体,结构体中的成员称为结构体的字段或属性。</p> <div class="highlight"><pre tabindex="0"

go语言基础type关键字

<h3 id="go语言基础type关键字">go语言基础type关键字</h3> <p>type关键字有如下几种用法:定义结构体,定义接口,类型别名,类型定义,类型查询</p> <h6 id="1-定义结构体">1. 定义结构体</h6> <p>结构体是由一系列具有相同类型或不同类型的数据构成的数据集合</p> <div class="highlight"><pre tabindex="0"

Java基础sleep与interrupt

<h3 id="java基础sleep与interrupt">Java基础sleep与interrupt</h3> <ol> <li> <p>interrupt用于向线程发终止通知信号,会影响该线程内部的中断标志位</p> </li> <li> <p>当前线程本身不会因为interrupt而改变状态,状态的具体变化需要等待接收到中断表示的程序的最终处理结果来判定。</p> </li> <li>

Java基础wait和sleep的区别

<h3 id="java基础wait和sleep的区别">Java基础wait和sleep的区别</h3> <p>1、sleep是Thread中的方法,是静态方法,wait是Object中的方法,是实例方法。</p> <p>2、sleep主要作用使线程暂停执行一段时间,时间一到自动恢复,不涉及线程通讯,不会去释放锁,但是wait会释放这个锁,并把这个wait的线程加入到这个锁的等待队列中去</p>

TCP的三次握手与四次挥手详解

<h3 id="tcp的三次握手与四次挥手详解">TCP的三次握手与四次挥手详解</h3> <p>所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个报文。</p> <p>三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,

Mermaid入门教程

<h3 id="mermaid入门教程">Mermaid入门教程</h3> <p>Mermaid是一种基于Javascript的绘图工具,使用类似于Markdown的语法, 使用户可以方便快捷地通过代码创建图表。</p> <p>项目地址:<a

python实现打印乘法口诀

<h3 id="python实现打印乘法口诀">python实现打印乘法口诀</h3> <p>涉及的语法range和str.format()</p> <p>函数语法:range(start, stop[, scan])</p> <p>参数说明:</p> <ul> <li>start: 计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);</li>

go语言用tcp实现GET请求

<h3 id="go语言用tcp实现get请求">go语言用tcp实现GET请求</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code

go语言获取公网IP地址

<h3 id="go语言获取公网ip地址">go语言获取公网IP地址</h3> <p>这里采用两种方式</p> <ol> <li>请求stun server服务器获取</li> <li>请求 <a href="https://api.ipify.org">https://api.ipify.org</a> </li> </ol> <p>代码如下:</p> <div

python优秀开源项目整理

<p>python是一门简单易学但是功能非常强大的编程语言,应用范围也非常广,如:服务器运维,科学计算,人工智能,web开发,网络爬虫都可以使用python。下面介绍几款实用的python库,python库非常丰富,如果大家用过好用的python,欢迎大家补充。</p> <h3 id="1scrapy">1.Scrapy</h3> <p>Scrapy 是一款非常受欢迎的python爬虫框架。它是基

volatile和synchronized的区别

<h3 id="volatile和synchronized的区别">volatile和synchronized的区别</h3> <ol> <li> <p>volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。</p> </li> <li> <p>volatile仅能

MySQL执行计划分析

<h3 id="mysql执行计划分析">MySQL执行计划分析</h3> <table> <thead> <tr> <th>列名</th> <th style="text-align:center">含义</th> </tr> </thead> <tbody> <tr> <td>id</td> <td style="text-align:center">id列,表示查询中执行select子句或操

SQL优化技巧总结

<h3 id="sql优化技巧总结">SQL优化技巧总结</h3> <p>汇总如下:</p> <p>分解SQL</p> <p>查询切分 最典型的案例就是分页查询</p> <p>永远为每张表设置一个ID主键</p> <p>避免使用SELECT *</p> <p>为搜索字段建立索引</p> <p>在Join表的时候使用对应类型的列,并将其索引</p> <p>尽可能的使用NOT NULL</p> <p>

go语言优秀开源项目整理

<h3 id="一web框架">一.Web框架</h3> <p>1.gin</p> <p>项目地址:<a href="https://github.com/gin-gonic/gin">https://github.com/gin-gonic/gin</a> </p> <p>gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API, 但是性能更好。