JAVAEE
文章平均质量分 57
记录javaEE开发所有的基础和框架,从javaSE到 javaWeb 再到 Spring生态 ,最后到分布式微服务架构
hidecode
hidecode爱分享一些javaEE和大数据的技术
展开
-
connect() to ****:8080 failed (13: Permission denied) while connecting to upstream已解决,关闭selinux
2021/07/18 16:59:19 [crit] 15597#15597: *11 connect() to 192.168.160.102:8080 failed (13: Permission denied) while connecting to upstream, client: 192.168.160.1, server: 192.168.160.102, request: “GET /favicon.ico HTTP/1.1”, upstream: “http://192.168.160.1原创 2021-07-18 17:04:59 · 1022 阅读 · 0 评论 -
总结曾经项目中,460W的表中使用到的索引
表介绍:这是一份政府系统的人员表,总计460W人员信息。Name Code Data type Pk m Note待审核主键 Dsh_ID VARCHAR2(32) * * 待审核主键公务员主键(人员主键) Ry_ID VARCHAR2(32) 公务员主键人员所属单位类别 Dwlx VARCHAR2(2) * 系统生成,人员所属的单位类型(单位类别),参见“s01 单位类型(添加机构类型)”字典项机构编码 JGSY_CODE VARCHAR2(100) * 系统生成,人员所属机构的jgs原创 2021-07-03 17:04:24 · 382 阅读 · 1 评论 -
设计模式之组合模式
一张图大概搞定内容:### 组合模式定义Componentpublic abstract class Component { protected String name; public Component(String name) { this.name = name; } abstract void add(Component c); abstract void remove(Component c); abstract void di原创 2021-06-18 17:25:19 · 109 阅读 · 0 评论 -
java中的BIO、NIO、AIO,Hotspot源码与Linux内核理解NIO与Epoll,同步异步与阻塞非阻塞区别
IO模型IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO,AIO原始的没有优化的IOBIO(Blocking IO)同步阻塞模型,一个客户端连接对应一个处理线程代码,多线程优化的BIOpublic class SocketServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = ne原创 2021-06-02 23:40:14 · 280 阅读 · 4 评论 -
字符串出现次数的TopK问题(NlogN),思路+代码
思路:1、map存储每个字符串出现的频率2、采用大顶堆来存储map的entry对象3、弹出k个元素到二维数res组里返回描述给定一个字符串数组,再给定整数k,请返回出现次数前k名的字符串和对应的次数。返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。比如"ah1x"小于"ahb",“231”<”32“字符仅包含数字和字母[要求]如果字符串数组长度为N,原创 2021-05-27 21:14:42 · 664 阅读 · 1 评论 -
如何配置项目中的线程池?监控线程池?
在我的项目有一个需求是导出报表中需要大量的IO操作,所以配置了2*NCPU的线程池数量。new ThreadPoolExecutor(corePoolSize, Runtime.getRuntime().availableProcessors() * 2, keepAliveTime,milliseconds,runnableTaskQueue, handler);要想合理地配置线程池,就必须首先分析任务特性,可以从以下几个角度来分析。任务的性质:CPU密集型任务、IO密集型任务和混合型任务原创 2021-05-26 18:37:38 · 457 阅读 · 1 评论 -
contains unrecognized parameters: [ccs_minimize_roundtrips], [ignore_throttled]]]
ElasticSearch版本和springboot不兼容问题导致:contains unrecognized parameters: [ccs_minimize_roundtrips], [ignore_throttled]]]修改对应版本:成功启动原创 2021-05-13 16:05:55 · 7758 阅读 · 0 评论 -
Redis高级数据类型BitMap在项目中的使用
BitMap什么是 BitMapBitMap,即位图,其实也就是 byte 数组,用二进制表示,只有 0 和 1 两个数字。如图所示:重要 API命令含义getbit key offset对key所存储的字符串值,获取指定偏移量上的位(bit)setbit key offset value对key所存储的字符串值,设置或清除指定偏移量上的位(bit)1. 返回值为该位在setbit之前的值2. value只能取0或13. offset从0开始,即使原位图只原创 2021-04-12 10:49:41 · 234 阅读 · 0 评论 -
PM25文本相似度算法JAVA实现
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class BM25Similarity { int D;//文档的数量 double avgDocLength;//平均每篇文档的长度 Map<String, Double> idf = new HashMap<String, Double>.原创 2021-04-11 10:16:09 · 286 阅读 · 0 评论 -
复习总结ElasticSearch搜索引擎put的全过程,倒排索引,solr
1 说说ElasticSearch put的全过程put过程主要分为三个阶段:协调阶段:Client 客户端选择一个 node 发送 put 请求,此时当前节点就是协调节点(coordinating node)。协调节点根据 document 的 id 进行路由,将请求转发给对应的 node。这个 node 上的是 primary shard 。主要阶段:对应的 primary shard 处理请求,写入数据 ,然后将数据同步到 replica shard。primary shard 会验原创 2021-03-16 19:28:51 · 604 阅读 · 1 评论 -
复习Redis,单线程原理,Redis持久化策略,高可用,缓存淘汰策略等
1.1 Redis可以用来做什么?Redis最常用来做缓存,是实现分布式缓存的首先中间件;Redis可以作为数据库,实现诸如点赞、关注、排行等对性能要求极高的互联网需求;Redis可以作为计算工具,能用很小的代价,统计诸如PV/UV、用户在线天数等数据;Redis还有很多其他的使用场景,例如:可以实现分布式锁,可以作为消息队列使用。1.2 Redis和传统的关系型数据库有什么不同?Redis是一种基于键值对的NoSQL数据库,而键值对的值是由多种数据结构和算法组成的。Redis的数据都存储于内存原创 2021-03-15 21:37:38 · 288 阅读 · 1 评论 -
详谈JUC之可重入锁、LockSupport、AQS
1、题目说明 1、Synchronized 相关问题 Synchronized 用过吗,其原理是什么?你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁什么是可重入性,为什么说Synchronized 是可重入锁?JVM对Java的原生锁做了哪些优化?为什么说Synchronized是非公平锁?什么是锁消除和锁粗化?为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?什么是CAS,它有什么优点和缺点?乐观锁一定就是好的吗? 2、可重入锁 Reentran原创 2021-02-18 10:13:28 · 493 阅读 · 0 评论 -
Mysql查询截取分析(查询优化,慢查询日志,Show profiles,全局查询日志)
第 3 章 查询截取分析 1、查询优化 1.1、MySQL 优化原则 mysql 的调优大纲 慢查询的开启并捕获explain+慢SQL分析show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况SQL数据库服务器的参数调优 永远小表驱动大表,类似嵌套循环 Nested Loop ...原创 2021-02-14 11:52:49 · 257 阅读 · 0 评论 -
Mysql索引优化分析(超详细)
第 2 章 索引优化分析 1、慢 SQL 性能下降、 SQL 慢、执行时间长、等待时间长的原因分析 查询语句写的烂索引失效: 单值索引:在user表中给name属性建个索引,create index idx_user_name on user(name)复合索引:在user表中给name、email属性建个索引,...原创 2021-02-14 11:50:09 · 592 阅读 · 0 评论 -
Nginx静态网站部署,Nginx反向代理与负载均衡
一、Nginx的安装与启动1、什么是NginxNginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。Nginx应用场景:1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。3、反向代理,负载均衡。2、安装Ngin原创 2021-01-28 17:45:16 · 230 阅读 · 0 评论 -
快速入门RabbitMQ(详细)第二篇:RabbitMQ五种工作模式的使用及总结
4. RabbitMQ工作模式4.1. Work queues工作队列模式Work Queues 与入门程序的 简单模式 相比,多了一个或一些消费端,多个消费端共同消费同一个队列中的消息。应用场景:对于 任务过重或任务较多情况使用工作队列可以提高任务处理的速度。4.1.2. 代码Work Queues 与入门程序的 简单模式 的代码是几乎一样的;可以完全复制,并复制多一个消费者进行多个消费者同时消费消息的测试。1)生产者import com.lxs.rabbitmq.util.Connecti原创 2021-01-28 17:22:00 · 384 阅读 · 0 评论 -
快速入门RabbitMQ(详细)第一篇
1.1. MQ概述MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。1.2.MQ的优势:MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。1.2.1、任务异步处理用户点击完下单按钮后,只需等待25ms就能得到下单响应 (20 + 5 = 25ms)1.2.3、削峰填谷如订单系统,在下单的时候就会往数据库写数据。但是数据库只能支撑每秒1000左右的并发写入,并发量再高就容易宕机。低峰期的时候并发也就1原创 2021-01-28 16:43:06 · 233 阅读 · 0 评论 -
docker网络问题解决办法“大全”:宿主机访问不了docker容器中web服务,容器内访问不了外网的问题的解决办法...
ubuntu kylin 15 安装docker后 ,启动包含web应用的容器,在宿主机上死活访问不了web服务。后来发现进入容器后,安装不了软件,访问不了外网。因此网上查原因,有大神说让重建docker0网络,重建的过程中,发现brctl未安装,因此安装了bridge-utils,执行如下命令,一切正常。nnd,困惑了好久!!! 重建docker0网络pkill dockeriptables -t nat -Fifconfig docker0 downbrctl delbr d转载 2021-01-26 17:39:10 · 3764 阅读 · 1 评论 -
Linux下RabbitMQ安装详细教程
注意: 请使用CentOS7安装1. 安装依赖环境在线安装依赖环境:yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz2. 安装Erlang上传erlang-18.3-1.el7.centos.x86_64.rpmsocat-1.7.3.2-5.el7.lux.x86_64.rpm.原创 2021-01-16 10:14:00 · 799 阅读 · 0 评论 -
常见的缓存处理流程:缓存穿透,缓存击穿,缓存雪崩(附代码)
缓存处理流程分析前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。缓存穿透是啥:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为k原创 2021-01-15 11:40:14 · 202 阅读 · 0 评论 -
ElasticSearch编程操作(非基础)
ElasticSearch编程操作1.1 创建工程,导入坐标<dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>5.6.8</version></dependency><dependency><grou原创 2021-01-14 17:38:39 · 139 阅读 · 0 评论 -
通俗易懂的ElasticSearch基础概念
2.1 什么是ElasticSearchElaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。3.ElasticSearch相关概念(术语)3.1 概述Elasticsearch是面向文档(document原创 2021-01-14 17:25:12 · 395 阅读 · 0 评论 -
公平锁/非公平锁/可重入锁/递归锁/自旋锁/读写锁
公平锁和非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到非公平锁是指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情况下,有可能造成优先级反转或者饥饿现象区别可重入锁(又名递归锁)是啥:实例:ReentrantLock/synchronized就是一个典型的可重入锁作用:可重入锁最大的作用就是避免死锁Demopackage cn.atguigu.interview.study.thread;cla原创 2020-12-29 00:40:53 · 187 阅读 · 0 评论 -
同步控制和锁,ReenterLock和Condition的详细使用
文章目录多线程团队合作:同步控制和锁1 synchronized的功能扩展: 重入锁1.1 中断响应1.2 锁申请等待限时1.3 公平锁2 重入锁的好搭档:Condition3 允许多个线程同时访问:信号量(Semaphore)4 ReadWriteLock 读写锁5 倒计数器:CoundownLatch6 线程阻塞工具类:LockSupport多线程团队合作:同步控制和锁同步控制是并发程序必不可少的重要手段。synchronized关键字就是一种最简单的控制方法。同时,wait()和notify()原创 2020-12-29 00:30:50 · 1169 阅读 · 1 评论 -
HTTP与HTTPS的工作原理
普通HTTP请求存在的问题 HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时(官网:www.fhadmin.org),发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面...原创 2020-12-26 10:41:28 · 311 阅读 · 0 评论 -
Vue.js 组件的详细使用
一、组件(重点)组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:1、局部组件定义组件var app = new Vue({ el: '#app', // 定义局部组件,这里可以定义多个局部组件 components: { //组件的名字 'Navbar': {原创 2020-12-20 13:06:32 · 310 阅读 · 0 评论 -
最精华的 SpringCloud 总结 | 第一篇: Eureka,Ribbon,Hystrix(Greenwich版本)
Spring Cloud简介Spring Cloud也是一样,它将现在非常流行的一些技术整合到一起.主要涉及的组件包括:NetflixEureka:注册中心Zuul:服务网关Ribbon:负载均衡Feign:服务调用Hystrix:熔断器版本Spring Clound 和Spring Boot版本对应关系Eureka注册中心Eureka简介:自动注册、发现、状态监控Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eure原创 2020-12-06 21:15:57 · 215 阅读 · 0 评论 -
系统架构的演变->微服务架构
1.系统架构演变网站应用的规模不断扩大,需求的激增,随之而来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构。1.1. 集中式架构当网站流量很小时,只需要一个应用,将所有的功能都部署在一起,以减少部署节点和成本。缺点:代码耦合度高,后期维护困难无法针对不同模块进行优化无法水平扩展单点容错率低,并发能力差1.2.垂直拆分当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功原创 2020-12-03 20:36:21 · 210 阅读 · 1 评论 -
还在手动创建实体类手动CRUD吗?来试试Mybatis自动化吧,反向生成实体类,接口,mapper.xml,让你效率飞涨
Mybatis自动化作用:反向生成实体类,接口,mapper.xml添加依赖包:<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency>加载插件:<build> &l原创 2020-11-15 09:43:30 · 139 阅读 · 0 评论 -
Mybatis高效精华版总结,从零搭建,可直接上手
1.Mybatis介绍MyBatis 是持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和Java对象映射成数据库2.搭建Mybatis2.1添加驱动包(mysql.jar和mybatis的jar包)<dependency><groupId>org.mybatis</groupId><artifac原创 2020-11-15 01:28:51 · 202 阅读 · 0 评论 -
SpringMvc高效入门精华版,小白也可直接上手
1.springMVC介绍Spring 框架是高度可配置的,而且包含多种视图技术Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。2.web请求过程3. springMVC组件介绍DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式原创 2020-11-12 12:58:32 · 368 阅读 · 2 评论 -
Spring从入门到精通,AOP和IOC,JDK和CGlib动态代理,springBean的生命周期
1.spring介绍Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。1.1 spring 特点1.方便解耦,简化开发2.AOP编程的支持3.声明式事务的支持4.方便程序的测试5.方便集成各种优秀框架6.降低Java EE API的使用难度1.2 spring组织架构1.4 spring的核心模块spring-core:依赖注入IOC与DI的最基本实现spring-beans:Bean工厂与bean的装配spring-context:s原创 2020-11-10 17:44:15 · 286 阅读 · 0 评论 -
Redis入门(适合新手)
1.了解NoSqlNoSQL,泛指非关系型的数据库。区别于关系数据库,它们不保证关系数据的ACID特性。1.2NoSql数据库的优势(1) 易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。(2)大数据量,高性能NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性, 数据库的结构简单。(3)灵活的数据模型NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。(4) 高可用NoSQL在不太影响性能的情原创 2020-11-05 10:44:22 · 153 阅读 · 0 评论 -
Linux常用命令及jdk安装,tomcat安装,防火墙,修改主机名及ip地址教程
Linux常用指令查看目录ls 查看目录内容 ll 查看详细信息创建目录mkdir :创建目录 mkdir -p 创建目录以及子目录,多个目录同时创建切换目录cd 切换目录cd … 要加空格cd …/xxx 进入上一级目录的子目录创建文件touch :创建一个空白的普通文件写入内容echo :把内容重定向到指定的文件中 ,有则打开,无则创建查看文件内容cat :查看文件内容more :分页查看文件内容,按空格键换页复制 剪切cp :复制mv :剪切、重命名(剪切的文件 放在原创 2020-10-31 13:00:36 · 219 阅读 · 0 评论 -
layui常用弹窗和qrcode二维码生成
框架前的前端补充二维码生成下载资源文件步骤: 1. 引入Jquery.js文件 2. 引入jquery.qrcode.js文件 3. 引入支持中文的编码js文件 (utf.js) 4. 在网页中编写一个div 用于显示二维码 <div id="div1"></div> 5. 准备二维码的规格对象(JSON) var config = { width:数字,//值是原创 2020-10-21 11:34:26 · 5724 阅读 · 5 评论 -
jsp el表达式 jstl 的简单介绍和使用
1. JSP为什么会出现1.servlet展示信息的不方便,引入了JSP。2.JSP本质上也是一个servlet!!!!!!3.JSP就是在HTML页面中嵌入了java代码。1.1JSP中如何嵌套java代码小脚本(<% java代码%>)声明标签 <%!变量或者方法声明%>表达式标签 <%= 表达式%> 在页面上显示的效果程序代码标签 <%java代码%> 页面上动态展示内容1.2JSP的内置对象JSP中一共预先定义了9个这样的对象,分别原创 2020-10-15 16:26:41 · 269 阅读 · 0 评论 -
MySQL存储过程,触发器,视图
什么是存储过程?1、存储过程简单来说,就是为以后的使⽤⽽保存的⼀条或多条MySQL语句的集合。2、储存过程是⼀组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,在需要时直接调⽤。为什么要使⽤存储过程?优点:可以把⼀些复杂的sql进⾏封装,简化复杂操作保证了数据的完整性,防⽌错误简单的变动只需要更改存储过程的代码即可提⾼性能。因为使⽤存储过程⽐使⽤单独的SQL语句要快。(预先编译)缺点:存储过程的编写⽐SQL语句复杂⼀般可能还没有创建存储过程的权限,只能调⽤创建存储过程\原创 2020-09-28 11:34:40 · 146 阅读 · 0 评论 -
MySQL 事务
概念事务(Transaction)是由⼀系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执⾏逻辑单元。事务管理:事务的语法事务的特性事务并发问题事务隔离级别不同隔离级别的锁的情况(了解)隐式提交(了解)1、事务的语法start transaction;/ begin;commit; 使得当前的修改确认rollback; 使得当前的修改被放弃2、事务的ACID特性原⼦性(Atomicity)事务的原⼦性是指事务必须是⼀个原⼦的操作序列单元。事务中包含的各项操作在⼀次执原创 2020-09-28 11:19:48 · 94 阅读 · 0 评论 -
移动端布局 flex布局 移动端适配 响应式布局 BootStrap
移动端布局viewport(视口)视口:PC端的页面直接放入手机屏显示,不友好。内容原因没有设置viewport;视口:浏览器(PC、移动端)显示页面内容的屏幕区域;不同的屏幕的大小,我们看到的区域也是不同的;viewport就是为了解决上面问题;语法默认:HTML980px;理想:手机屏幕多大,HTML就设置是多大;meta标签设置:<meta name="viewport" content="width=device-width, user-scalable=no, initia原创 2020-09-20 17:01:48 · 1458 阅读 · 1 评论 -
XML与JSON,java解析和生成XML,java解析和生成json
XML特性:xml具有平台无关性, 是一门独立的标记语言.xml具有自我描述性为什么学习XML网络数据传输.数据存储配置文件XML语法格式XML文档声明<?xml version="1.0" encoding="UTF-8"?>标记 ( 元素 / 标签 / 节点)XML文档,由一个个的标记组成.语法:开始标记(开放标记): <标记名称>结束标记(闭合标记): </标记名称>标记名称: 自定义名称,必须遵循以下命名规则:1.名原创 2020-09-09 13:34:36 · 574 阅读 · 0 评论