Java
文章平均质量分 84
wildyuhao
这个作者很懒,什么都没留下…
展开
-
为Java项目添加Redis缓存
Redis的安装Redis一般有Linux和Windows两种安装方式,Windows的最高版本为3.2,Linux的最高版本为5.0,大家可以根据自己的需要添加Linux首先在linux下安装docker,在docker环境下安装redis5.0的镜像docker pull redis:5.0然后使用Docker命令启动Redis容器docker run -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-d redis:5.原创 2021-05-18 11:16:42 · 1085 阅读 · 2 评论 -
Java中对象一定分配在堆空间上吗?
栈、堆、方法区Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本数据类型的数据,和对象的引用(reference)。栈空间用光了会引发StackOverflowError。类的对象放在heap(堆)中,所有的类对象都是通过new方法创建,创建后,在stack(栈)会创建类对象的引用(内存地址)。堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可 以细分为新生代和老生代,再具体一点可以分为Eden、Survivor(又可分原创 2021-03-06 23:23:26 · 1913 阅读 · 0 评论 -
ES与倒排索引
ES与倒排索引ElasticSearchElaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单Elasticsearch核心概念ES对比传统数据库结构如下Relational DB -> Datab原创 2021-01-05 00:23:58 · 283 阅读 · 0 评论 -
Nginx的反向代理、负载均衡和动静分离
为什么要用Nginx什么是NginxNginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强为什么要用Nginx不用tomcat同样是做代理,为什么用nginx服务器代理,不直接用tomcat 7.0,还做多了一次接请求呢?事实上,nginx常用做静态内容服务和代理服务器,直面外来请求转发给后台的应用服务(tomcat,django等),tomcat更多用来做一个应用容器,让java web app在其中运行,对应同级别的有jboss,jetty等Ng原创 2021-01-05 09:13:07 · 113 阅读 · 0 评论 -
SpringCloud包含的微服务介绍--Gateway
SpringCloud包含的微服务介绍–GatewayGateway基础介绍什么是网关在SpringCloud微服务体系中,有个很重要的组件就是网关,网关是整个微服务API请求的入口,负责拦截所有请求,分发到服务上去。可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等,常用的网关有zuul(netflix的,但是已经停更了)和spring cloud gateway (springcloudalibaba)网关可以理解为网络关卡,是整个微服原创 2020-12-19 13:15:38 · 287 阅读 · 1 评论 -
SpringCloud包含的微服务介绍--Eureka
SpringCloud包含的微服务介绍Eureka服务注册与发现为什么需要注册中心当我们启动项目时,我们通常会在属性文件中包含所有配置。随着越来越多的服务的开发和部署,添加和修改这些属性变得更加复杂。某些服务可能会停止运行,而某些服务可能会发生变化。手动更改属性可能会产生问题。加上现在是开发都是微服务容器化部署,ip地址往往是动态,修改很麻烦,是有eureka的话只需要配置注册服务的别名,就不用关注ip地址了,注册中心可以自动获取。Eureka服务注册和发现在这种情况下有所帮助。由于所有服务都已注册原创 2020-12-06 03:18:59 · 413 阅读 · 0 评论 -
正则表达式入门及简单应用
正则表达式语法普通字符字符描述[ABC]匹配 […] 中存在的所有字符[^ABC]匹配除了 […] 中字符以外的所有字符[A-Z][A-Z] 表示一个区间,匹配所有大写字母.匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r][\s\S]匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,包括换行\w匹配字母、数字、下划线。等价于 [A-Za-z0-9_]\b匹配一个单词边界,也就是指单词和空格间的位置。例如,原创 2020-11-26 10:57:10 · 97 阅读 · 0 评论 -
mybatis中xml和dao对应规则
mybatis中xml和dao对应规则dao也就是mapper接口接口的全限名–映射文件的namespace值接口的方法名–映射文件的MappedStatement的id值接口方法内的参数–传递给sql的参数Mapper接口是没有实现类的,当调用接口的方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatment...原创 2020-11-23 08:47:24 · 1486 阅读 · 0 评论 -
解决pom.xml文件spring-boot-maven-plugin not found问题
解决pom.xml文件spring-boot-maven-plugin not found问题<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>显示spring-boot-maven-plugin not found解决方法:1.打开本地仓库respos原创 2020-11-16 15:06:22 · 15391 阅读 · 3 评论 -
Spring--IOC控制反转与DI依赖注入的三种方式
Spring--IOC控制反转与DI依赖注入的三种方式1. setter方法注入2.构造器注入3.接口注入Spring的核心思想是IOC和AOP,IOC即控制反转,包括依赖注入和依赖查找,最主要使用的即依赖注入DI。通常情况下,我们创建对象时,是通过new关键字主动进行的;而DI则是在创建对象时,只设置配置文件,由Spring统一创建对象并调用。这也就是控制反转的由来。接下来本文将重点介绍依赖注入的三种方式本文使用maven创建工程,pom.xml中依赖设置如下 <dependencies&g原创 2020-10-27 22:06:50 · 160 阅读 · 0 评论 -
如何将javaWeb部署到Linux系统
如何将javaWeb部署到Linux系统1. 前期准备1.1 虚拟机安装1.2 Xshell安装1.3下载SecureFXPortable1.4 安装jdk1.4.1 创建保存解压后jdk的文件夹1.4.2 解压jdk压缩包1.4.3 配置环境变量1.5 安装Tomcat1.5.1 解压安装包1.5.2 进入bin目录并开启tomcat1.5.3 进入tomcat主页检测1.6 安装Mysql1.6.1 检测系统是否自带安装mysql1.6.2 删除系统自带的mysql及其依赖命令:1.6.3 给Cent原创 2020-10-21 15:19:01 · 494 阅读 · 0 评论 -
Idea2020 在src下右键无法出现new Servlet 解决方法
1.打开Idea,创建JavaWeb项目,点击File->Project Structure2.点击Module->选择你当前的项目->选择sources分页->点击src文件夹,选择Marked As Sources这时src文件夹由普通文件夹变为蓝色标识的资源文件夹3.此时在src文件夹右键就可以看到 new Servlet选项啦...原创 2020-10-02 10:59:56 · 4897 阅读 · 2 评论 -
设计模式之六大设计原则【入门】
设计模式之六大设计原则1 开闭原则 Open Closed Principle,OCP1.1 概念1.2 软件实体1.3 开闭原则的作用2. 单一职责原则 Single responsibility principle,SRP2.1 概念2.2 一个对象承担太多职责的缺点2.3 单一职责原则的优点3 里氏替换原则:Liskov Substitution Principle,LSP3.1 概念3.2 四层含义3.3 里氏替换原则作用4 依赖倒置原则:Dependence Inversion Principl原创 2020-10-01 01:20:36 · 130 阅读 · 0 评论 -
Mysql性能优化
Mysql性能优化1. 性能分析思路2. Mysql架构介绍2.1 Mysql存储引擎3. 索引介绍3.1 索引是什么3.2 索引的优势和劣势3.2.1 优势3.2.2 劣势3.3 常用索引分类3.3.1 单列索引3.3.2 组合索引(用的几率大,更好)3.4 索引的存储结构3.4.1 B树和B+树的区别3.4.2 聚集索引(InnoDB)3.4.3主键索引3.4.4 辅助索引3.4.5 非聚集索引(MyISAM)3.5 组合索引使用(性能优化的门槛)3.5.1 创建组合索引3.5.2 最左前缀原则:针对组原创 2020-09-28 18:00:26 · 95 阅读 · 0 评论 -
JSP四大域对象和九大内置对象
JSP四大域对象和九大内置对象Servlet三大域对象JSP四大域对象九大内置对象:Servlet三大域对象ServletContext : context域HttpServletRequest : request域HttpSession : session域JSP四大域对象域对象的作用:保存数据,获取数据,共享数据.page:jsp页面被执行,生命周期开始,jsp页面执行完毕,生命周期结束(jsp当前页面有效)request:用户发送一个请求,生命周期开始,服务器返回响应,请求结束,生转载 2020-09-27 14:08:21 · 113 阅读 · 0 评论 -
Servlet原理及用法解析
Servlet原理及用法解析1.Servlet原理1.1 Servlet处理浏览器请求过程1.2 tomcat和servlet关系1.3 详解创建servlet的原理1.3.1 servlet的生命周期是什么?1.3.2 为什么GenericServlet类中init方法有两个,一个是带有参数ServletConfig的,一个有无参的方法?1.3.3 四个重点对象:ServletConfig、ServletContext,request、response用法解析(实例)HTTP部分Servlet部分XML部原创 2020-09-27 10:42:39 · 232 阅读 · 0 评论 -
servlet跳转页面的方法
servlet跳转页面的方法:跳转分为两部分,一部分发生在servlet,另一部分发生在JSP,JSP就是servlet,但是两者还是有部分差异。一、Servlet:(跳转发生在doGet,doPost等方法里)(1)redirect方式response.sendRedirect("/index.jsp");页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于web应用中,如:response.sendRedirect(“http://www.baidu.com”);转载 2020-09-24 01:45:20 · 4810 阅读 · 0 评论 -
【Java】Synchronize与锁升级
Synchronize实现方法,锁升级是Java面试中经常考到的内容,为了方便学习与理解Synchronize与锁升级,本文详细总结了一些相关的知识点。Synchronize简介synchronize是java中的关键字,可以用来修饰实例方法、静态方法、还有代码块;主要有三种作用:可以确保原子性、可见性、有序性,原子性就是能够保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等该线程处理完数据后才能进行;可见性就是当一个线程在修改共享数据时,其他线程能够看到,保证可见性,volatile关键字也有原创 2020-09-16 17:25:44 · 300 阅读 · 1 评论 -
JAVA线程池实现原理
线程池实现原理为什么要使用线程池?提高程序的执行效率控制线程的数量,防止程序崩溃使用线程池的风险死锁资源不足并发错误线程泄露线程过载JUC包内部架构ExecutorExcutorServiceAbstractExecutorServiceScheduledExecutorServiceThreadPoolExecutorScheduledThreadPoolExecutorExecutorsExecutors与ThreadPoolExecutor的区别Executors可以创建的四种线程池简介线程池实现原理原创 2020-09-11 01:58:05 · 120 阅读 · 0 评论 -
JavaScript 正则表达式 基础用法+案例
JavaScript基础用法及案例正则表达式语法修饰符方括号量词元字符RegExp对象方法支持正则表达式的String对象的方法正则表达式使用案例正则匹配使用正则匹配子串str中的数字使用RegExp创建一个正则对象使用正则对象匹配的另一种方式匹配多次正则搜索使用正则搜索使用创建正则对象方式搜索使用test方法搜索正则拆分字符串方法拆分正则方法拆分正则替换正则表达式将分割符统一替换成逗号将\\替换成\\将西方日期格式替换成中国[年-月-日]格式正则表达式语法修饰符i 大小写不敏感g 全局匹配m原创 2020-09-06 00:21:30 · 285 阅读 · 0 评论 -
JavaScript事件处理的两种常用方法
JS进行事件处理的两种常用办法在标签属性值中添加事件在js中通过对特定id添加事件在标签属性值中添加事件标签属性值οnclick="fun(this)"调用参数,传入this,在script框里 编写function fun(a){a.style.color = “green”}再通过传入的this对标签属性值修改。<body><h2 onclick="fun(this)">2级标题1</h2></body><script>原创 2020-09-05 00:22:53 · 337 阅读 · 0 评论 -
面向对象 面试题16道(附答案)
面向对象 面试题16道(附答案)1. 接口与抽象类的区别?2. 构造方法可否能被重写?3. (= =)与equals()的区别?4. 什么是拆箱和装箱?5. 方法重载(overload)需要满足什么条件,方法覆盖/方法重写(override)需要满足什么条件?6. 谈谈final,finally,finalize的区别。7. abstract的method是否可同时是static,是否可同时是synchronized?8. 接口是否可继承接口?抽象类是否可实现(implements)接口?实现类是否可继承抽原创 2020-09-03 23:09:06 · 2684 阅读 · 2 评论 -
Json 的三种解析方式
数据交换中最常用的数据格式--Json 的三种解析方式Json简介Json基础语法普通格式举例数组格式举例Json的三种解析方式原生解析举例Gson解析举例补充java对象转Json方法FastJson解析举例补充java对象转Json方法Json简介Json(JavaScript Object Notation JS)中文翻译为对象简谱 , 是一种轻量级的数据交换格式。Json基础语法一个对象, 由一个大括号{}表示。括号中描述对象的属性,通过键值对来描述对象的属性 (可以理解为大括号中包含的是一原创 2020-08-31 12:51:57 · 2141 阅读 · 0 评论 -
HashMap红黑树树化过程,看这一篇就够了
HashMap红黑树树化过程,看这一篇就够了红黑树基础概念红黑树性质红黑树示意图红黑树数据结构JDK1.8 HashMap源码分析putVal()treeifyBin()treeNode()treeify()moveRootToFront()rotateLeft()rotateRight()balanceInsertion()左旋、右旋过程详细解析上一篇文章大厂面试爱问的HashMap死锁问题,看这一篇就够了,我们分析了JDK1.7中Hashmap的部分源码实现,最后说到在JDK1.8的时候HashMap原创 2020-08-28 11:12:25 · 1091 阅读 · 0 评论 -
大厂面试爱问的HashMap死锁问题,看这一篇就够了
大厂面试爱问的HashMap死锁问题,看这一篇就够了JDK 1.7 HashMap源码分析put()方法addEntry()方法resize()方法transfer()方法(重点)死锁演示如何规避使用Hashtable 或 ConcurrentHashMapJDK1.8的升级和仍存在的死锁问题升级内容仍可能存在死锁问题经历过大厂面试或者有所了解的同学都应该知道,HashMap是面试时面试官特别喜欢的问题,除了HashMap的扩容方式,为什么扩容的2的次幂等以外,还经常会问到HashMap死锁的相关问题。最原创 2020-08-23 15:49:21 · 5473 阅读 · 3 评论 -
集合和部分子类的应用场景(List、Set、Map)
集合和部分子类的应用场景(List、Set、Map)ListLinkedListArrayListSetHashSetTreeSetLinkedHashSetMapHashMapLinkedHashMapTreeMapConcurrentHashMapListLinkedListLinkedList是链表结构,不需要改变数组的大小,所以如果应用更多的插入和删除元素,更少的读取数据,LinkedList比较快。ArrayListArrayList底层代码是可变数组,读取,遍历更快。如果遍历的需求比增原创 2020-08-21 22:16:09 · 310 阅读 · 0 评论 -
Java 面向对象学习一周小结
面向对象 一周小结原创 2020-08-19 20:52:04 · 275 阅读 · 0 评论 -
java实现 leetcode *43 字符串相乘
leetcode43 不将字符串转换为整数来得到字符串形式的乘积num.charAt()可以得到字符串中每一位数,i位数j位数 最终结果 最大为i+j位,从而能确定生成保存乘积结果每一位的数组大小将两个字符串相乘拆分为每一位和每一位相乘,当第i个数第j个数时,得到的结果记为sum并和原来该位上的数相加,个位是sum%10,在当前i+j+1位保存,十位是累计的sum/10加上原有i+j位上的数,在第i+j位保存,以此类推循环。因为字符串最后一位数是个位,所以循环时要从后往前。注意:保存结果的数组中第原创 2020-08-14 23:36:34 · 244 阅读 · 1 评论 -
Java实现双色球抽奖系统
Java实现双色球抽奖系统**双色球规则介绍**玩法规则:具体中奖规则:**编程思路****代码**Java实现运行结果双色球规则介绍玩法规则:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1—33 中选择,蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖。具体中奖规则:编程思路生成本期双色球中奖号码。(注意:1.生成的随机数不可重复、2.蓝球和红球的随机范围不同)输入竞猜号码。记录红球、蓝球竞猜正确球的数量,并根据获奖条件输出原创 2020-08-10 17:13:43 · 4683 阅读 · 1 评论