- 博客(54)
- 资源 (4)
- 收藏
- 关注
原创 TCP/IP协议中IP数据保报文格式详解
在 TCP/IP 协议中,使用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据包。IP 数据报文由首部(称为报头)和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。每个 IP 数据报都以一个 IP 报头开始。源计算机构造这个 IP 报头,而目的计算机利用 IP 报头中封装的信息处理数据
2021-05-18 15:10:28
1696
原创 面试-多线程-synchronized和lock区别
分享一道多线程的高频面试题:synchronized和lock两种锁的区别 角度 synchronized lock 锁存在层次 在jvm层面上,Java的关键字 JUC下的一个接口,java.util.concurrent.locks.Lock 锁获取时机 假设A线程获得锁,B线程等待。如以尝试获得锁,线程可以不用一直等待(可以通过 视情况而定,Lock有多个锁获取的方式,大致就是可以尝试获得锁,线程可以不用一直
2021-03-13 10:27:20
315
原创 面试-多线程-线程安全活跃态问题以及竞态条件
线程安全是多线程永久的话题,也是最核心的问题之一,本章从线程安全活跃态、竞态条件,以及常见问题简单阐述一下!线程安全的活跃性问题可以分为 死锁、活锁、饥饿三种,下面逐一说明:1、活锁状态:活锁 就是有时线程虽然没有发生阻塞,但是仍然会存在执行不下去的情况,活锁不会阻塞线程,线程会一直重复执行某个相同的操作,并且一直失败重试。开发中使用的异步消息队列就有可能造成活锁的问题,在消息队列的消费端如果没有正确的ack消息,并且执行过程中报错了,就会再次放回消息头,然后再拿出来执行,一直循环往复的失
2021-03-10 11:42:56
671
2
原创 面试-多线程-如何避免死锁
死锁是多线程和并发编程不可规避的话题之一。如何避免死锁,其实是考察我们对死锁的了解,包括什么是死锁、产生死锁的条件,当了解前面的两个问题,这个问题也就迎刃而解了!首先需要将死锁发生的是个必要条件讲出来:互斥条件: 同一时间只能有一个线程获取资源。 不可剥夺条件:一个线程已经占有的资源,在释放之前不会被其它线程抢占 请求和保持条件:线程等待过程中不会释放已占有的资源 循环等待条件: 多个线程互相等待对方释放资源死锁预防,那么就是需要破坏这四个必要条件:由于资源互斥是资源使用的固有特性,
2021-03-10 10:44:50
411
1
原创 SystemGC完全解读
目录1、System.gc的概述2、JDK里的System.gc的实现3、Hotspot里System.gc的实现4、并行Full GC相对正常的Full GC效率高在哪里5、堆外内存常配合使用System GC1、System.gc的概述JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下Sys
2021-03-04 22:28:16
372
2
原创 Linux安装Mysql5.7.X(二)
博文摘要一、准备阶段二、mysql安装包下载、解压三、mysql安装、配置三、添加软连接四、修改密码五、开放远程连接六、设置开机自动启动接着介绍另外一种安装方式对mysql进行安装(有兴趣的读者可以浏览 Linux安装Mysql5.7.X(一),两者区别不大,可以根据自己的偏好),本文针对mysql安装到指定目录下(本文安装在/software/msql),大部分网上都是安装在/usr/local下的!本文使用mysql-xxx.tar.gz数据包的范式进行安装、配置操作
2021-02-27 13:56:50
139
2
原创 [mysql] ERROR 2002 (HY000): Can‘t connect to local MySQL server...问题解决
问题描述在centos7.x服务器上进行mysql5.7登录操作,出现【ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)】错误提示,如图问题分析以及方案这样的问题出现,可能会存在比较多的情况,那么针对不同情况笔者进行逐一排查(可能存在的问题,后续会逐渐完善)1、问题一:可能mysql本身就没有启动# 查看mysql运行状态sy
2021-02-26 22:51:34
2865
原创 Redis系列(一) - Linux系统下Redis环境搭建
一、Redis初识Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持丰富的数据类型,和高速的内存读写。正在逐步取代memcached的地位。Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。下面就演示下在centos7.x64位下...
2021-02-26 20:02:15
278
1
原创 TCP/UDP常见端口参考
端口列表一览端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19
2020-12-25 17:07:59
1839
原创 oracle-ORA-22922: 不存在的 LOB 值
项目进行对于多行数据某个列数据转换为一个字符串查询时,出现【ORA-22922: 不存在的 LOB 值】异常信息,具体异常栈根据项目信息获取指出调剂列表: ### Error querying database. Cause: java.sql.SQLException: ORA-22922: 不存在的 LOB 值 ### The error may exist in URL [jar:file:/E:/Tomcat/Tomcat%208.5/webapps/czept/WEB-INF/lib/ra.
2020-12-07 15:10:49
12286
原创 HTTP状态码(完整版)
1xx:信息提示这类状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。HTTP 状态码 说明 100 继续。 101 切换协议。 2xx:成功这类状态代码表明服务器成功地接受了客户端请求。HTTP 状态码 说明 200 确定。客户端请求已成功。 201 已创建。 202 已接受。 203 非权威性信息。 204 无内容。 205 重置内容。 206 部
2020-11-21 14:18:38
37300
6
原创 【mysql】2003-Can‘t connect to MySQL server on “XX.XX.XX.XX“ (10060 unknow error)
使用navicat或者其他数据库管理工具连接远程mysql服务器时出现2003-Can’t connect to MySQL server (10060 unknow error)错误经过排查时发现是防火墙的问题,OK!那么下面写一下处理的过程1、查看防火墙的状态systemctl status firewalld2、 开放防火墙端口(永久开放3306端口)sudo firewall-cmd --zone=public --add-port=3306/tcp --perman
2020-11-14 13:58:50
678
原创 IntelliJ IDEA注释模板详解
一个从Eclipse转换Idea的码农,在使用IntelliJ IDEA的过程中,需要设置一些注释,其实网上有很多类似于idea模板注释的文章,但笔者在使用过程中,或多或少的会遇到一些莫名其妙的情况,但很多现有的文章都没有给出类似的解决方法,所以笔者在使用过程中会总结一些自己的心得,希望能给读者朋友一些帮助,如果有不妥之处,希望大家批评指正,共同学习!首先给大家展示一下笔者使用模板的效果图示,然后根据图示粗略的讲解一下配置过程一、首先我们来设置IDEA中类的模板:(IDEA中在创建类时会自动给添
2020-07-27 18:34:13
1458
原创 Linux安装Mysql5.7.X(一)
Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的难题,而且很多时候按照教程也没有能够安装成功,安装过程出现各种各样的错误。下面记录了我在Linux(Centos 7.8 64bit)环境下安装Mysql(以5.7版本为例)的完整过程,实操记录,绝非水文,如有错误或遗漏,欢迎指正。1、下载mysql rpm包,以及准备目录// 1、创建文件夹m
2020-07-25 20:49:04
143
原创 CentOS7.X安装MongoDB4.2.X
MongoDB安装(Linux CentOS7.X环境)安装MongoDB Community Edition按照以下步骤使用yum包管理器安装MongoDB Community Edition。1、配置包管理系统(yum) 在/etc/yum.repos.d创建一个文件 mongodb-org-4.2.repo,可以方便使用yum直接安装MongoDB具体创建文件如下 vi /etc/yum.repos.d/mongodb-org-4.2.repo附上文件[mong...
2020-07-25 20:44:51
192
原创 日志配置--logback配置文件配置
日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出下面配置给出一个logback的日志配置文件,可供大家参考使用<?xml version="1.0" encoding="UTF-8"?><!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --><!-- scanPeriod:设
2020-07-11 17:00:26
476
原创 Java后台获取IP地址位置信息
最近做一个项目,某个模块需要根据IP地址获取区域位置和运营商信息,以前都是根据淘宝提供的一个免费获取该信息接口http://ip.taobao.com/service/getIpInfo.php?ip=112.10.111.11返回结果为{"msg":"Server is busy ,Current qps =8000.0","code":3}卧槽,这么诡异吗?这个一直使用的免费接口莫非是要收费了吗?不由的查询了一下淘宝IP地址库http://ip.taobao.com/看一下还是不是可
2020-07-04 23:15:37
1654
3
原创 Docker学习(二)-Docker安装、配置
一、安装、运行、配置docker1、docker安装yum install -y docker2、查看docker是否安装成功yum list installed |grep docker显示该内容表示Docker安装成功3、启动docker服务(并设置开机自启)1、systemctl start docker.service2、systemctl enable docker.service4、查看docker服务状态systemctl status .
2020-05-16 22:22:59
219
原创 Docker学习(一):Docker基本简介
之前接触过一点Docker,但是并不是很了解,所以笔者今天写一写关于Docker的一写博客,目的有两个:1、通过博客系统学习一下Docker;2、通过博客和各位博友共同学习!首先,从百度百科查询了一下Docker的相关接受:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 是一个开源的应用容器引擎,基于Go 语言.
2020-05-16 20:54:17
223
原创 Springboot与Springcloud最新版本对应一览表
获取信息列表连接https://start.spring.io/actuator/info
2020-01-18 14:51:32
6942
4
原创 Java中的对象一定在堆上分配吗?(内存分配的误区)
如果当你看到这样的面试题,心里会不会跟我一样犯嘀咕!?Java对象分配在堆中的说法恐怕是早已经根深蒂固了吧,现在问这样的问题莫非是有啥不为人知的东西还是等着你去跳下去?当然,初学习时总会有人跟你说java对象是分配在java堆上的因为在那个时候说这些,咱们根本就理解不了JVM深层次的东西。OK! 那就步入正题吧,一般认为,Java对象都是在堆上分配的,但也有一些特殊情况。但是首先需要去了解一下...
2019-06-26 17:22:38
1387
原创 字符串括号成对匹配
最近在准备面试时,发现有这样一个算法题目:判断一个字符串中是否包含匹配的括号({}、()、[])?如何实现其算法?其实,要知道字符串括号成对匹配,这个问题也是在面试中常见的算法问题,获取有效的思路很是重要,当然我们可以借助Stack的特性处理!思路:使用栈 遇到左括号入栈 遇到又括号出栈,如果匹配则最后栈为空,不匹配则栈不为空那就直接上代码,毕竟几乎所有的面试官都喜欢动手能力强...
2019-06-16 10:03:10
1579
原创 字符串匹配--BM算法
最近在准备面试,看到有关字符串匹配的问题,才知道BM算法(只怪平时在规则中没有深入研究一些算法)!!!那好!就介绍一下什么是BM算法吧,来看下百度百科里面的解释吧:在计算机科学里,Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。虽然...
2019-06-16 09:48:10
751
1
原创 Eclipse无法找打Java EE Tools选项卡问题解决方案
最近学习maven项目,自动生成web.xml文件时,查找了集中方案,使用Java EE Tools或Project Facets方式,但是笔者发现根本找不到这两个选项卡,查找了很多资料,发现网上很多说法千篇一律,什么是不是maven项目转换之类的。这些解决方案或许对eclipse自身包含有插件而项目不是maven项目的同学,或许可以适用,但是,如果你创建的项目本来就是maven项目呢...
2019-03-24 15:28:44
3355
7
原创 关于maven项目,自动生成web.xml文件问题解决方案
最近笔者在学习Shiro框架集成在web项目时,新建maven项目,发现不能自动生成webapp下的web.xml文件数据时候,网上查看了许多材料,笔者总结了两种方式。注意:大家如果没有安装插件的话,以下两种方式是无法实现的,因为你根本找不到相应的按钮或或者选项卡,关于这个问题笔者有一篇专门处理该问题的文章(Eclipse无法找打Java EE Tools选项卡问题解决方案 )供大家来...
2019-03-24 15:11:04
3324
原创 Java面试系列--HashMap
最近看到Java相关的面试时,看到一篇关于HashMap的相关面试知识点,感觉蛮好的!现在的面试点不会围绕某个知识让面试者去详细阐述,而会通过一些系列的相关问题去让你阐述,进而形成从点到线,再由线到面来考察面试者的基本功和发散性思维。无穷无尽地深入,知道你回答不出来或者面试官问到底!面试官:1、你了解/使用过HashMap吗?为什么是使用HashMap?这个问题相信你一定可以或多或少的回答...
2019-01-10 22:31:18
4476
2
原创 深入理解 Java 内存模型(七)— 总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM 和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM 和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和 JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读 / 写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面...
2019-01-09 22:20:09
167
原创 深入理解 Java 内存模型(六)— final关键字
与前面介绍的锁和 volatile 相比较,对 final 域的读和写更像是普通的变量访问。对于 final 域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个 final 域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序。下面,我们通过一些示...
2019-01-09 22:17:43
304
原创 深入理解 Java 内存模型(五)— 锁
锁的释放 - 获取建立的 happens before 关系锁是 java 并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放 - 获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 ...
2019-01-09 22:14:22
218
原创 深入理解 Java 内存模型(三)— 顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java 内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM 对正确同步的多线程程序的内存一致性做...
2019-01-09 22:08:38
229
原创 深入理解 Java 内存模型(四)— volatile关键字
volatile 的特性当我们声明共享变量为 volatile 后,对这个变量的读 / 写将会很特别。理解 volatile 特性的一个好方法是:把对 volatile 变量的单个读 / 写,看成是使用同一个监视器锁对这些单个读 / 写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatil...
2019-01-09 22:03:57
232
原创 深入理解 Java 内存模型(二)— 重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置。 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。 读后写 a = b;b = 1; 读一个变量之后,...
2019-01-09 21:52:42
160
原创 深入理解 Java 内存模型(一)— 基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写 - 读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必...
2019-01-09 21:37:21
252
2
原创 【数据库之Redis】Linux环境下安装以及启动
最近接触一下比较热门的NoSQL数据库之一 的Redis,当然这个技术现在很成熟,但是在之前的工作和学习中并没有广泛接触,今天从头开始学习一下这个技术,网上现在存在关于Redis的技术博客会有很多很多,但是作者认为有些东西还是自己亲自经历过才可以学习一些精髓。学习Redis需要一个应用环境,作者准备了Aliyun与服务器和Redis4.0.12安装包作为环境搭建的基础平台。一、简单介绍一下...
2018-12-23 15:05:40
149
原创 【Java基础之三】Java基础进制以及相互转换
计算机语言本质存储为1和0的二进制,但常用的还有八进制、十进制、十六进制等进制类型数据。由于生活中大家对十进制的接触最多、也最了解,所以本文不在对十进制进行赘述。二进制1、二进制初见二进制是以0和1为码,逢2进1,比如3(十进制)=11(二进制)=1*2+1。 在计算机当中其它进制的算法基本基于2进制,因为计算机只认识0和1,比如16进制数则意味着一位16进制码由4位2进制码数表示。...
2018-12-14 23:55:45
312
原创 Java日志组件(log4j、Logback 、slf4j和commons-logging的关系和区别)
最近在使用日志系统处理工程时,会发生很诡异的问题,所以深入了解了一下日志系统的种类和内在联系,并把总接出来的一点分享给大家!不得不承认刚刚了解时候,难免会有一个浅的认知,希望大神可以指正,共同学习和进步在开发中常见的日志框架有log4j、slf4j以及commons-logging1、首先介绍一下这几类日志的相关知识commons-logging日志组件common-logging...
2018-12-13 00:23:30
673
原创 日志处理--开发过程中日志文件log4j设置
本文仅仅使用properties文件作为日志设置的文件,当然读者可以使用xml文件作为载体实现。具体实施可以根据自己的实际情况而定。log4j.properites#配置日志保存的天数log4j.maxBackupIndex=10#配置日志文件的路径log4j.logUrl=logs#全局的error和控制台日志#配置日志等级log4j.rootLogger=INFO,CON...
2018-12-12 22:53:47
179
原创 关于Maven项目中日志无法打印问题详解
最近在学习Maven项目中,日志输出过程中,无法显示logger.info("XXXX")输出内容,且控制台会显示警告错误事例log4j:WARN No appenders could be found for logger (org.apache.shiro.io.ResourceUtils).log4j:WARN Please initialize the log4j syste...
2018-12-12 22:43:31
2341
原创 Javaweb开发系列之二 《Tomcat容器》
Tomcat相关介绍Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O'Reill...
2018-07-18 01:22:00
418
原创 CATALINA_HOME环境变量之坑
问题描述今天的任务是在一个Web服务中新增一个接口供另一个Web服务通过Http进行访问。使用的IDE是IDEA,到现在还没有弄明白怎样在IDEA内同时启动两个Web服务进行调试(并且这两个Web服务属于同一个Project的两个Module)。所以采取的方法是分别调通后联调,步骤如下:- 在IDE中启动提供接口的服务A,通过浏览器直接访问对应的URL,将A服务的接口调试通过;- 在本地...
2018-07-18 01:17:39
3171
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人