![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
文章平均质量分 70
Jason snow
喜欢钻牛角尖,热爱篮球,爬山,看书。
生活虐我千百遍,我待生活如初恋,忠诚,担当,务实,创新。
教养比出身重要,情商比智商重要,努力比天赋重要,善良比聪明重要
展开
-
开发相关-开发规范
开发规约原创 2024-04-18 22:06:51 · 277 阅读 · 1 评论 -
数据库设计规范
数据库表结构设计规范原创 2024-04-18 21:55:15 · 557 阅读 · 0 评论 -
JVM-垃圾收集器G1-笔记
常见的垃圾回收算法1、标记清除法(mark sweep) - 位置不连续,产生碎片,效率偏低(两遍扫描)2、拷贝算法(copying) - 没有碎片,浪费空间3、标记压缩(mark compact) - 没有碎片,效率偏低(两边扫描,指针需要调整)以上的算法由古至今没变。目前常见的垃圾收集器目前分代垃圾回收,用的最多jdk1.8常用组合是年轻代parallel scavenge和老年代parallel Old垃圾收集器(记忆ps+po)。堆内存逻辑如下(jdk8进行jvm调优用z1即可)只原创 2021-09-12 20:56:06 · 216 阅读 · 0 评论 -
线程并发的三大特性
1、原子性 - 关键字:synchronized原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,即不被终端操作,要不全部执行完成,要不都不执行,就好比转载,从账户A向账户B转100元,那么必然包括2个操作,从账户A减去100元,往账户B加上100元。两个操作必须全部完成。那程序中原子性指的是最小的操作单元,比如自增操作,它本身其实并不是原子性操作,分了三部,包括读取变量的原始值、进行加1操作、写入工作内存。所以再多线程中,有可能一个线程还没自增完,可能才执行到第二步,另一个线程就已经读取了值原创 2021-09-12 15:26:45 · 296 阅读 · 0 评论 -
git分支创建与合并
分支的新建与合并项目开发经历步骤如下:1. 为实现某个新的用户需求,创建一个分支。$ git checkout -b iss9527Switched to a new branch "iss9527"上面的命令等同于如下$ git branch iss53$ git checkout iss533. 在这个分支上开展工作并提交。$ vim index.html$ git add .$ git commit -m '提交备注信息'$ git push -u origin iss95原创 2021-09-07 16:08:53 · 178 阅读 · 0 评论 -
Markdown基本语法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-08-26 16:18:15 · 140 阅读 · 0 评论 -
Linux常用命令-时间-awk
大数据技术之Centos-7.5安装版本:V1.01.1安装Centos7.51.1.1在VMware Workstation新建虚拟机1.1.2设置及安装Centos7.5(1)选中虚拟机右键设置,选择镜像文件路径(2)启动虚拟机(3)选中install Centos 7进行安装(4)选择语言为中文(5)软件选择(6)选择带有gui服务器,右侧不选(7)选择系统安装位置,直接点完成自动分区(8)配置网络(9)开始安装(10)等待安装(11)安装完毕后重启,配置初始设置1.1原创 2021-08-23 07:13:08 · 1014 阅读 · 0 评论 -
消息中间件零拷贝?mmap与sendFile的区别是什么?
零拷贝这三个字,一直是服务器网络编程的关键字,任何性能优化都离不开。在 Java 程序员的世界,常用的零拷贝有 mmap 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?本文将简单聊聊 mmap 和 sendFile 这两个零拷贝。一、传统IO的劣势初学 Java 时,我们在学习 IO 和 网络编程时,会使用以下代码:File file = new File("index.html");RandomAccessFile raf = new RandomAccessFile(转载 2021-08-12 11:20:52 · 620 阅读 · 0 评论 -
深度理解tcp三次握手
其实三次握手在内核的实现中,并不只是简单的状态的流转,还包括半连接队列、syncookie、全连接队列、重传计时器等关键操作。如果能深刻理解这些,你对线上把握和理解将更进一步。在基于 TCP 的服务开发中,三次握手的主要流程图如下。服务器中的核心代码是创建 socket,绑定端口,listen 监听,最后 accept 接收客户端的请求。//服务端核心代码int main(int argc, char const *argv[]){ int fd = socket(AF_INET, SOCK转载 2021-08-07 11:00:20 · 233 阅读 · 0 评论 -
VMware安装Centos7教程
大数据技术之Centos-7.5安装版本:V1.01.1安装Centos7.51.1.1在VMware Workstation新建虚拟机勾选cpu虚拟化引擎选项1.1.2设置及安装Centos7.5(1)选中虚拟机右键设置,选择镜像文件路径(2)启动虚拟机(3)选中install Centos 7进行安装选择语言为中文软件选择,选择带有gui服务器,右侧不选选择系统安装位置,直接点完成自动分区配置网络开始安装原创 2021-08-02 16:07:59 · 119 阅读 · 0 评论 -
Spring生命周期
作者:方程式能今天做好的事就不要等到明天。以梦为马,学习趁年华。spring是什么轻量级的JavaEE开源框架,是一种容器框架,用来装载Java Bean对象,是个中间层框架,江湖人称万能胶,可以和市场上的主流框架进行无缝集成,比如mybatis、redis、encache等。让企业开发方便快捷。Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架从大小与开销方面都是,spring是轻量级的。通过控制反转的技术达到松耦合目的–比如A对象有B属性,正常为A主动创建.原创 2021-07-31 10:00:20 · 666 阅读 · 0 评论 -
tomcat基本流程
tomcat核心组件的架构:Server{ Service[]{//真正给tomcat提供功能standardService处理的HTTP请求 Connector[]:端口监听服务涉及 apr,nio,nio2 Engine:{:控制处理逻辑 Host[]{//虚拟主机,映射域名 Context[]:{//代表web应用 Wapper[]{//每个wapper封装一个Servlet的配置详情原创 2021-07-24 13:56:42 · 421 阅读 · 0 评论 -
NAT穿透(UDP打洞)
1、NAT(Network Address Translator)介绍NAT有两大类,基本NAT和NAPT。1.1、基本NAT静态NAT:一个公网IP对应一个内部IP,一对一转换动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系1.2、NAPT(Network Address/Port Translator)现在基本使用这种,又分为对称和锥型NAT。锥型NAT,有完全锥型、受限制锥型、端口受限制锥型三种:a)Full Cone NAT(完全圆锥型):从同一私网地址端口192.1原创 2021-07-21 22:22:12 · 1684 阅读 · 0 评论 -
zeroTier实现内网穿透-moon服务搭建
序言frp 很多人都了解,是一个用于内网穿透的高性能的反向代理应用,简单点说就是可以把 NAT 后面的某台机器的端口转发到公网 IP上去,类似 ngrok 或者花生壳内网版,好处是可以自建。UDP 打洞是一种 NAT 穿透技术,与上面 frp 的区别在于,frp 的转发模式本质是通过具有公网 IP 的服务器 M来进行流量转发(frp 也提供 xtcp 模式来进行 NAT 穿透,但是成功率太低,效果不佳),这样如果服务器 M的带宽有限,就会成为传输时的瓶颈,无法有效利用全部带宽。Zerotier原创 2021-07-21 21:05:51 · 25453 阅读 · 1 评论 -
计算机的补码世界
就讨论16位int的情形吧,这是个数学问题整型数在计算机里面都是按照“补码”来存储的,补码是什么呢?请看:0. 补码的最高位,代表符号位,0为正1为负1. 对于正整数,补码和该整数的二进制码一样2. 对于负整数,相当于对其绝对值的二进制码按位取反,然后+1,最后再把符号位置为1(当然还可以有更简便的算法【数学里面叫有限域的算法,用模运算来计算可能比较符合一般习惯一点】,不过逻辑电路层面是这么实现的,个人认为这么说明比较底层一点)来几个直观的例子:+3的补码是0000 0000 0000 001原创 2021-06-14 16:30:04 · 153 阅读 · 0 评论 -
软件编码阶段解读
软件编码的作用是将系统分析和系统设计的结果和内容转换为多条线实际产品的过程 。 编码是软件项目开展过程中必须的、不 可或缺的、极为重要的环节。 7.2 编码阶段的目标和任务 目标: 按照系统设计阶段产生的文档,进行软 件系统功能开发,整合各个功能模块,实现 系统的集成运行,并满足需求分析阶段提出 的性能要求。 任务: 将详细设计的结果转化为用具体程序设 计语言编写的程序代码。 做好: (1)对编码任务进行工作分解,在整体项 目计划的基础上,制定本阶段的工作计划(包 括进度、人员、费用、质量、自测试等); (原创 2021-06-12 13:35:51 · 5293 阅读 · 0 评论 -
JavaWeb项目分层理念
一、背景 从08年进入Java世界以来,初出茅庐,Java为网络而生,为并发而生。网络应用编程,自然涉及到MVC分层模型,谈起分层模型,大部分都会认为,很简单嘛,无非就是Controller、Service、Dao三层。看起来简单,很多人其实并没有把他们指责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成dao的桥梁,透明传输,这其实是很多人开发...原创 2018-09-03 17:55:30 · 2385 阅读 · 0 评论 -
类加载器getResourceAsStream管理配置文件
package com.tansun;public class ResourceStream { public static void main(String[] args) throws Exception { /** * ResourceStream.class.getResourceAsStream 是从class所在目录获取文件 * ResourceStream.class....原创 2018-04-07 11:11:13 · 361 阅读 · 0 评论 -
关于内存中栈和堆的区别
1、内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、申请方式方面: 堆:需要程序员自己申请,并...转载 2018-04-07 10:18:28 · 177 阅读 · 0 评论