Java
文章平均质量分 54
LucasLi2016
CSharp初学者,业余吉他手
展开
-
springboot-aop应用
springboot-aop的应用原创 2022-06-13 23:57:21 · 217 阅读 · 0 评论 -
深入理解JVM——关于垃圾回收
关于垃圾回收仿佛来自上海居委会大妈的灵魂拷问:“你是什么垃圾?”不今天我们要说的是JVM的垃圾回收假如我是一个“人”类的“对象”,也和人的生命一样必有一死,可是“我真的还想再活500年~~”,面临着GC(垃圾回收器)这个“死神”,我可以逃脱命运的摆布吗?我应该如何逃脱呢?其实是可以的,就是有名的finalize 大法(以前黑客常用的方法之一),下面代码演示一下:...原创 2021-05-30 21:18:58 · 151 阅读 · 0 评论 -
Java的乐观锁和悲观锁
乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,乐观锁在Java中是通过使用无锁编程来实现,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。CAS全称 Compare And Swap...转载 2021-03-27 17:09:55 · 281 阅读 · 0 评论 -
redis如何查看主从状态信息master和salve
连接上redis客户端,然后输入info replication主节点:role:master从节点:role:slave其他,如查看redis服务信息,比如版本redis_version:5.0.4info server查看redis的cpu信息info cpu查看redis占用内存的信息比如used_mem_human:1.87M,表示redis数据占用1.87M,used_mem_rss:7.91M表示系统占用总大小。info me.原创 2021-03-14 12:23:12 · 6785 阅读 · 0 评论 -
Redis缓存淘汰策略
redis 内存数据集大小上升到一定大小的时候,就会实行数据淘汰策略。配置文件redis.confmaxmemory-policy voltile-lru1. noeviction:不淘汰任何数据,当内存不足时,新增操作会报错,Redis 默认内存淘汰策略;2. allkeys-lru:淘汰整个键值中最久未使用的键值;3. allkeys-random:随机淘汰任意键值;4. volatile-lru:淘汰所有设置了过期时间的键值中最久未使用的键值;(常用)5. volatile-ran原创 2021-03-14 09:01:22 · 126 阅读 · 0 评论 -
布隆过滤器是什么?
简介布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。作用:布隆过滤器可以用于检索一个元素是否在一个集合中。优点:空间效率和查询时间都比一般的算法要好的多缺点:有一定的误识别率和删除困难。详细布隆过滤器本身是一个很长的二进制向量,既然是二进制的向量,那么显而易见的,存放的不是0,就是1。新建一个16位的布隆过滤器,如图随机映射函数,比如我们使用4个hash算法:hash1,hash2,hash3..原创 2021-03-11 14:56:10 · 269 阅读 · 0 评论 -
ConcurrentHashMap分析
资料面试 ConcurrentHashMap ,看这一篇就够了!https://segmentfault.com/a/1190000039087868原创 2021-02-24 22:39:21 · 122 阅读 · 0 评论 -
Redis
Redis集群原理可参考以下资料,原理其实相对比较好理解三张图秒懂Redis集群设计原理redis集群原理原创 2020-12-20 18:23:37 · 142 阅读 · 0 评论 -
Docker安装Redis
Redis部署拉取镜像 docker pull redis创建容器 docker run -di --name=myredis -p 6379:6379 redis连接redis连接redis:redis-cli.exe -h 宿主机ip设置值:set key1 hello获取值:get key1原创 2020-12-19 12:00:34 · 434 阅读 · 2 评论 -
web项目部署
Tomcat部署web项目3种方式:1. 直接将项目放到webapps目录下即可。(最简单)/hello:项目的访问路径-->虚拟目录简化部署:将项目打成一个war包,再将war包放置到webapps目录下。war包会自动解压缩,下线只需要删除war包,解压文件也会自动删除。2. 配置conf/server.xml文件在<Host>标签体中配置<Context docBase="D:\hello" path="/hehe" />docBase:项目存原创 2020-11-22 18:27:09 · 246 阅读 · 0 评论 -
linux强制其他用户下线
主要2种方式:1、强制其他用户下线命令格式:pkill -kill -t tty只有root用户才能强制其他用户下线。如果同时有二个人用root用户登录,任何其中一个可以强制下线另一个。任何用户都可以强制自己下线2、杀进程:ps -ef | grep pts/0kill -9 pid...原创 2020-11-22 17:33:54 · 1049 阅读 · 0 评论 -
SCHEMA约束
WHAT.什么是Schema?Schema,即XML Schema,XSD (XML Schema Definition)是W3C于2001年5月发布的推荐标准,指出如何形式描述XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐地位。像所有XML Schema 语言一样,XSD用来描述一组规则──一个XML文件必须遵守这些规则,才能根据该schema‘合法(Valid)’。HOW.怎么样使用Schema?1原创 2020-11-21 10:50:52 · 442 阅读 · 0 评论 -
DTD约束
WHAT.什么是DTD?DTD Document Type Definition 文档类型定义。我们在XML中可以自定义标记,那XML解析器怎么认识这些自定义标记并根据自定义标记的处理法则来处理元素呢?这需要DTD,它是我们用来定义我们自己定义的标记的含义,我们自己定义元素的相关属性的文档。DTD与XML是类与对象,数据库表结构与记录的关系。简单实例student.dtd<!ELEMENT students (student*) ><!ELEMENT stude原创 2020-11-21 10:20:11 · 488 阅读 · 0 评论 -
idea自动填充方法参数
工作中有时候经常上下游参数较多而且参数名一致,每次都要写几个字母然后回车或者alt+enter选择单个参数,效率较低。有一个插件可以根据所调用函数的参数名自动填充到调用处,底层应该是利用反射机制获取参数名和对应位置,自动填充到对应位置。在参数较多情况下效率提高很大,非常推荐大家使用,下面介绍安装和使用方法。1、file-->settings-->plugins2、搜索 auto filling,并且安装后重启idea3、快捷键alt+enter选中上面的,参数自动会填充.原创 2020-11-18 22:51:02 · 5025 阅读 · 0 评论 -
git回滚到某个commit
git log 查看提交历史及提交的commit_id回退命令:$ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前$ git reset --hard commit_id 退到/进到 指定commit的sha码强推到远程:$ git push origin HEAD --force...原创 2020-11-17 21:38:58 · 342 阅读 · 0 评论 -
CAP模型
什么是CAP?Consistency一致性,Availability可用性,Partition tolerance分区容错性。分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的文章。一、分布式系统的三个指标1998年,.转载 2020-11-14 10:44:17 · 4850 阅读 · 0 评论 -
字符编码和字符集
这里写目录标题什么是字符编码?什么是字符集?常见的字符集什么是字符编码?计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。编码:字符(能看懂的)–字节(看不懂的)解码:字节(看不懂的)原创 2020-10-24 12:20:43 · 310 阅读 · 0 评论 -
jvm垃圾收集器
3、垃圾收集器以及内存分配前面我们讲了垃圾回收的算法,还需要有具体的实现,在jvm中,实现了多种垃圾收集器,包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器,接下来,我们一个个的了解学习。3.1、串行垃圾收集器串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW...原创 2020-04-25 22:10:20 · 191 阅读 · 0 评论 -
jvm垃圾回收算法
文章目录1 、什么是垃圾回收?1.1、C/C++语言的垃圾回收1.2、Java语言的垃圾回收2 、常见垃圾回收算法2.1、引用计数法2.2、标记清除法2.3、标记压缩算法2.4、复制算法2.5、分代算法jvm堆内存模型1 、什么是垃圾回收?程序运行需要申请内存资源,对象资源使用完如果不及时处理就会一直占用内存资源,最后导致内存溢出,所以对内存资源的管理是非常重要的。1.1、C/C++语言的垃...原创 2020-04-25 18:21:06 · 180 阅读 · 0 评论 -
jvm优化基础
我们为什么要对jvm做优化?在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求:运行的应用 “卡住了”,日志不输出,程序没有反应服务器的 CPU负载突然升高在多线程应用下,如何分配线程的数量?对jvm有更深入的学习,我们不仅要让程序能跑起来,而且是可以跑的更快!可以分析解决在生产环境中所遇到的各种“棘手”的问题。jvm的运行参数测试...原创 2020-04-11 00:21:52 · 250 阅读 · 0 评论 -
什么是负载均衡
负载均衡负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。简单理解比方说,我们部署的项目放到tomcat服务器中,对于每一个请求,tomcat服务器都会起一个线程来处理请求并返回结果,每一个线程都需要分配一些内存,如果请求多了,那么...原创 2020-04-07 20:58:11 · 577 阅读 · 0 评论 -
零拷贝
文章目录引言什么是零拷贝?业务场景:传统方式的数据拷贝零拷贝方式Gather Copy DMA 零拷贝方式mmap 零拷贝引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限制了操作系统有效进行数据传输操作的能...原创 2020-04-06 12:41:06 · 175 阅读 · 0 评论 -
linux安装jdk
查看是否有jdkjava –versionrpm -qa | grep java开始安装:创建目录:mkdir /usr/local/jdk将jdk上传并解压:tar -zxvf jdk-7u71-linux-i586.tar.gz配置环境变量:vim /etc/profile在末尾行添加#set java environmentJAVA_HOME=/usr/local/jd...原创 2020-04-05 16:57:34 · 122 阅读 · 0 评论 -
IntelliJ IDEA创建maven web项目(IDEA新手适用)
步骤一:新建project首先先创建一个project,在这里就是创建一个maven的工作空间步骤二:创建maven项目首先,选择左边的maven然后在右边Creater from archetype选项前面打个勾,最后选择maven-archetype-webapp步骤三:项目命名填写你的GroupId跟ArtifactId,一般业界通用的做法是groupid是公司域名倒序,而...原创 2020-03-21 12:10:40 · 711 阅读 · 0 评论 -
spring快速入门案例
spring快速入门案例:案例名称“宝宝淘”论坛的登录模块,功能虽小,但是五脏俱全,而且登录业务大家熟悉,不难理解。首页登录页面提供一个输入表单,输入用户名和密码,用户填写并提交表单后,服务端程序检查是否有匹配的用户名和密码。如果不匹配返回登录页面并给出提示;如果匹配记录用户的成功登陆日志,更新用户的最后登录时间和ip,并给用户增加5个积分,然后重定向到欢迎页面。分析:持久层需要2个d...原创 2020-03-17 23:39:23 · 230 阅读 · 0 评论 -
回文诗
在茶诗中,最有趣的就是回文诗。回文是利用汉语词序,词义灵活的特点构成的一种修辞方法。例如:莺啼岸柳弄春晴柳弄春晴夜月明明月夜晴春弄柳晴春弄柳岸啼莺第一句和第四句是回文第二句和第三句是回文每一句诗中都包括一个“春”字,而且很富有诗意,很有欣赏性。...原创 2020-03-17 22:36:50 · 420 阅读 · 0 评论 -
Spring基础(很全面)
大纲Spring框架的概述Spring的快速入门Spring 工厂接口在MyEclipse 配置Spring的xml文件提示IoC容器装配Bean(xml配置方式)Ioc容器装配Bean(注解方式)在web项目中集成SpringSpring 整合 junit4 测试1.1 Spring框架学习路线Spring的IocSpring的AOP , AspectJSpring的事务...原创 2020-03-16 22:36:21 · 226 阅读 · 0 评论 -
GridFS使用
GridFS介绍GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用MongoDB存储数据,使用GridFS可以快速集成开发。它的工作原理是:在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个块进行存储,GridFS使用两个集合(collection)存储文件,一个集合是chunks, 用于存储文件的二进制数据;一个集合是files,用于存储文件的...原创 2020-03-15 21:34:45 · 601 阅读 · 0 评论 -
实现页面静态化
模板+数据模型=输出页面静态化需要准备数据模型和模板,先知道数据模型的结构才可以编写模板,因为在模板中要引用数据模型中的数据如何获取页面的数据模型?在编辑页面信息时指定一个DataUrl,此DataUrl便是获取数据模型的Url,它基于Http方式,CMS对页面进行静态化时会从页面信息中读取DataUrl,通过Http远程调用的方法请求DataUrl获取数据模型。页面静态化流程如下图:...原创 2020-03-15 20:07:06 · 956 阅读 · 0 评论 -
FreeMarker页面静态化
如何对页面进行静态化?一个页面等于模板加数据,在添加页面的时候我们选择了页面的模板。页面静态化就是将页面模板和数据通过技术手段将二者合二为一,生成一个html网页文件。页面静态化及页面发布流程图如下:业务流程如下:1、获取模型数据2、制作模板3 、对页面进行静态化4、将静态化生成的html页面存放文件系统中5、将存放在文件系统的html文件发布到服务器FreeMarker介绍...原创 2020-03-15 19:37:15 · 467 阅读 · 0 评论 -
异常处理流程
系统对异常的处理使用统一的异常处理流程:1、自定义异常类型。2、自定义错误代码及错误信息。3、对于可预知的异常由程序员在代码中主动抛出,由SpringMVC统一捕获。可预知异常是程序员在代码中手动抛出本系统定义的特定异常类型,由于是程序员抛出的异常,通常异常信息比较齐全,程序员在抛出时会指定错误代码及错误信息,获取异常信息也比较方便。4、对于不可预知的异常(运行时异常)由SpringM...原创 2020-03-15 18:10:32 · 3497 阅读 · 0 评论 -
Java基础概念
起源计算机革命起源于机器,编程语言的产生也始于对机器的模仿。抽象过程所有编程语言都提供抽象机制,我们知道计算机只能识别11001110这样的二进制码,汇编语言是对底层机器的轻微抽象,然后出现的“命令式”语言(C语言,FORTRAN,BASIC)都是对汇编语言的抽象,更高级的编程语言又是对低级的编程语言的抽象。万物皆为对象所有我们可以看到的,摸到的事物,都是对象,对象具有状态、行为、标识,...原创 2020-02-29 21:47:00 · 221 阅读 · 0 评论 -
拦截器
由于动态代理一般比较难理解,程序设计者会设计一个拦截器接口提供给开发使用,开发只要知道拦截器接口的方法,含义,作用即可,无需知道动态代理是怎么样实现的jdk动态代理实现拦截器定义接口package com.lean.ssm.chapter2.reflect;import java.lang.reflect.Method;public interface Interceptor...原创 2019-12-26 23:26:03 · 173 阅读 · 0 评论 -
JDK动态代理和CGLIB动态代理
从反射说起反射技术应用广泛,使用反射可以实现类的配置化,Spring IoC的基本原理也是如此在java中反射是通过包java.lang.reflect.*来实现的package com.lean.ssm.chapter2.reflect;public class ReflectServiceImpl { public void sayHello(String name){...原创 2019-12-26 23:08:53 · 106 阅读 · 0 评论 -
web开发
软件开发的两种架构:c/s和b/sWeb开发Web开发使用的就是b/s架构。WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访...原创 2019-12-22 17:38:32 · 263 阅读 · 0 评论 -
tomcat发布项目
Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布。服务器呢,又分为硬件服务器和软件服务器。硬件服务器一般来说就是一台电脑,而软件服务器则是一个应用程序,比如Tomcat它本身就是一个程序。现在,我们在conf目录中我们打开server.xml,可以查看Tomcat的端口号。这个8080就是端口号,我们用http://lo...转载 2019-12-19 22:52:05 · 185 阅读 · 0 评论 -
javaWeb快速入门
实验环境准备(假设你已经装好了jdk)1.1安装一个eclipse或者MyEclipse(本文以eclipse为例),其实所谓的安装就是网上去下载一个eclipse,然后解压一下就好了。1.2安装tomcat,网上下载一个,然后解压一下。我这次使用的tomcat容器配的是8080端口。什么是JavaWeb项目,它能干嘛?JavaWeb项目就是一个应用程序,你不要以为它有多么...转载 2019-12-19 22:47:47 · 111 阅读 · 0 评论