自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 yml 文件 根据网络地址获取输入流,并解析文件内容

文件下载解析

2022-10-18 15:00:13 269 1

原创 多种树形结构分析

树形结构

2022-08-04 15:40:32 1581

原创 redis限流的简单实现

redis限流

2022-08-03 17:06:48 510

原创 ElasticSearch学习3

索引的创建1.网页新建索引索引名称分片数 默认5个副本数 默认1个2.带有类型和映射的索引;请求提交{ "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mapping": { "_doc": { "properties": { "commodity_id": { "type": "long" }, "commodity_name": { "typ

2022-03-11 10:15:12 2422

原创 ElasticSearch学习2

/** * 查询sql * @param tableName * @param queryBean * @return Object[] */ private Object[] queryData(String tableName,QueryBean queryBean) throws IOException { SearchRequest searchRequest = new SearchRequest(tableName);.

2022-03-10 16:43:35 2757

原创 ElasticSearch学习

一.什么是ElasticSearchElasticsearch 是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说 Lucene (一个开放源代码的全文检索引擎工具包)是当今最先进,最高效的全功能开源搜索引擎框架。二.Elasticsearch的一般特性Elasticsearch可扩展高达PB级的结构化和非结构化数据。Elasticsearch可以用来替代MongoDB和RavenDB等做文档存储。Elasticsearch使用非标准化来提高搜索性能。Elastic

2022-03-09 18:33:00 1130

原创 Elastic-Job 分布式任务调度

1.什么是分布式任务调度?什么是Elastic-Job?首先理解什么是分布式:一个大的业务拆分成多个小业务分别部署在服务器,如:订单服务、商品服务和用户服务;分布式任务调度:订单服务中定时统计订单信息,商品服务中定时更新商品信息,用户服务定时更新用户信息;回归主题:Elastic-Job 是elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用quar

2022-03-09 15:58:05 471

原创 Apache Zookeeper相关学习

1.什么是Zookeeper?分布式应用程序协调服务软件,协调服务指的是统筹管理各个服务;Zookeeper维护一个类似文件系统的数据结构:2.Zookeeper的主要功能?配置管理 :把配置文件交给zookeeper中某个目录节点来管理,当目录节点发生改变后zookeeper 会通知监听这个目录节点的客户端 文件已发生改变,这是客户端就可以重新从zookeeper拉取新的文件信息;体现了(一致性)...

2022-03-08 11:33:56 338

原创 Apache Kafka分布式发布 - 订阅消息系统mq

一. Kafka是干嘛的?Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。二. Kafka主要特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒数百万的消息,而延迟只有几毫秒。支持通过Kafka服务器和消费机集群来分区消息。支持Hadoop并行数据加载。三. Kafka适合以下应用场景:消息系统:解耦生产者和消费者、缓存消息等;

2022-03-04 18:12:59 717

原创 springboot简单理解

springboot 是spring的子项目;spring boot不是微服务,是一个加速开发spring的框架;一.四大组件1.auto-configuration 自动装配2.starter 模块启动器在pom.xml中引入相关启动器 就可以使用对应的模块功能3.springboot cli一个命令行使用Spring Boot的客户端工具4.actuatoractuator是Spring Boot的监控插件,本身提供了很多接口可以获取当前项目的各项运行状态指标。二.springb

2022-03-04 18:08:58 1711

原创 了解集群的作用和实现方式

为了解决一台服务器的访问压力,增加服务器的数量;作用:分担服务器的访问压力、对请求进行负载均衡、实现高扩展和高可用;怎么实现服务器的集群部署?

2022-03-03 19:14:10 428

原创 面试中的 有分布式、高并发、高负载、高可用系统设计、开发和调优经验者优先。

1.网站访问量大,一个服务器不能满足;就加服务器 部署成集群(多个服务器的业务相同),然后对请求进行负责均衡;2.机器多了,发现还是顶不住(比如:某宝 登录、浏览商品和支付等一套流程用时特别长);服务拆分改为分布式集群;不同的业务放在不同一个服务器;3.分布式集群部署发现还是顶不住,进行降级、限流。4.数据库顶不住,使用分布式缓存;5.使用分布式缓存还顶不住,就进行数据库读写分离、分库分表、数据库容灾;6、系统间同步交互有延迟?解耦,上异步方案,采用消息中间件。7、高并发导致了脏数据?上分布式锁

2022-03-03 18:56:58 489

原创 1000个并发进行限流操作---Semaphore

Semaphore 是jdk 中自带的工具类(java.util.concurrent.Semaphore );Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。Semaphore的方法:semaphore() 方法,即初始化计数器的值,对应的就是Semaphore的构造器方法。acquire() :计算器的值减一,如果此时计数器的值小于0,则当前线程被阻塞,也就是上面例子中允许同行的车辆已满,否则可以继续执行。release()方法:

2022-03-03 17:21:03 180

原创 finally中不要使用return

在通常情况下,不要在finally块中使用return、throw等导致方法终止的语句,一旦在finally块中使用了return、throw语句,将会导致try块、catch块中的return、throw语句失效。

2022-03-03 11:13:56 681

原创 tomcat 性能优化

1.参数调优线程最大并发数/最小空闲连接数/最大空闲连接数/超时时间(充分利用cpu)2.tomcat的jvm调优-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m-XX:NewSize 设置年轻代大小-XX:MaxNewSize 年轻代最大值-Xmn 设置年轻代大小-XX:PermSize 设置持久代大小-XX:MaxPermSize 设置持久代最大值堆内存溢出:a. 设置JVM启

2022-03-02 15:53:06 930

原创 JVM的学习总结

1… 什么是字节码文件?怎么生成.class文件?什么是字节码文件 : .class就是字节码文件(机器语言,给机器看的),是Java编译器编译Java源文件(.java)产生的“目标文件”;怎么生成.class文件: 是由配置好的jdk\jre中通过命令 javac把java文件编译成.class 文件;2.什么是jvm?JVM是一个虚构出来的计算机;Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可

2022-01-21 13:56:39 78

原创 双重循环 判断 list 对象中 是否存在重复的数据

废话不多说:public class DeptTest { public static void TEST(List<Dept> list) { for (int i = 0; i < list.size()-1; i++) { System.out.println("下标 i="+i+"----"+list.get(i).getId()+"-----"+list.get(i).getDeptCode()+"------------

2022-01-20 18:49:02 851

原创 Synchronized和lock的区别?

区别1:Synchronized是Java的关键字;Lock 是一个接口;区别2:Synchronized发生异常会自动释放锁,所以不会造成死锁;Lock不会自动释放锁,需要在finally{}中手动编写unlock()方法;区别3:Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;区别4:通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。...

2022-01-18 11:28:03 253

原创 数组(Array)和列表(ArrayList)的区别?

一、区别1.类型数组(Array) 包含基本类型和对象类型;列表(ArrayList) 只有对象类型;2.长度数组的长度不可表;列表(ArrayList)长度可变;

2022-01-18 11:18:00 284

原创 求分组后的各组数据的前几名

废话不多说:表一:team表二:new_info求:不同分组的前两名数据1.我们常写的 算出最大浏览量(pageviews)的sql,排除相同分组 浏览量相同的情况。select a.* from new_info a right join ( select max(pageviews) as cpageviews ,team_id from new_info group by team_id) b on a.pageviews=b.cpageviews and b.team_id

2022-01-17 15:51:21 201

原创 基本类型和封装类型

基本类型 包装器类型boolean Booleanchar Characterint Integerbyte Byteshort Shortlong Longfloat Floatdouble Double区别:1.声明方式不同2.存储方式不同 基本类型不存在引用,值都存在栈中;引用类型 需要通过 new 来负

2022-01-14 10:56:06 195

原创 Java常量和变量

常量 是指被 final 修饰的对象,一经赋值不能改变、用大写字母来区分;变量 指变量类型、变量名、变量值,值可以改变,改变后变量名会重新执行新的内存地址;

2022-01-13 18:47:40 113

原创 java中的关键字

1.访问控制public/protected/private2.类方法变量修饰abstract/class/extends/final/implements/interface/native(主要用于方法上,标识该方法的实现使用的是非Java语言,使用的是c++等)/new/static/void3.程序控制break/continue/return/do/while/if/else/for/switch/case/default4.错误处理try/catch/thow/thows/fila.

2022-01-13 18:30:30 101

原创 Java标识符

标识符Java语言中,对于变量,常量,函数,语句块的名字,我们统统称之为Java标识符。标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。命名规则:1.类和接口名。每个字的首字母大写,含有大小写。例如,MyClass,HelloWorld,Time等。2.方法名。首字符小写,其余的首字母大写,含大小写。尽量少用下划线。例如,myName,setTime等。这种命名方法叫做驼峰式命名。3.常量名。基本数据类型的常量名使用全部大写字母,字与字之间用下划线分隔。对象常量可大小混写。

2022-01-13 17:55:04 533

原创 spring cloud的组件

1.eureka组件 服务的注册和发现中心eureka 为每个服务提供一个客户端(eureka Client),每个服务通过客户端对服务器(eureka Server)进行注册和发现;而每个服务通过服务器 把每个服务的注册信息 拉取到本地 ,获取服务器上的每个服务 的ip ,并进行调用;同时eureka 通过心跳机制来监控 注册中心的服务;2.Feign组件 用于各个服务间调用通过使用注解的形式,简化各个服务之间的连接;通过@FeignClient来连接对应的服务端 ,原理是创建了一个动态代理;3

2022-01-12 10:53:07 157

原创 利用正则表达式判断字符串是否是数字

/*** 利用正则表达式判断字符串是否是数字* @param str* @return/public boolean isNumeric(String str){if(str != null && str !="") {Pattern pattern = Pattern.compile("[0-9]");Matcher isNum = pattern.matcher(str);if (!isNum.matches()) {return false;}return tr

2022-01-11 18:29:02 156

原创 根据对象的属性值 进行排序

废话不多说,直接上代码:public class Student { public String name; public int age; public String getName() { return name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }

2022-01-11 18:26:02 162

原创 dml\ddl\dcl 的意思和区别

dml 是指 select\update\inser\delete 是针对表数据的修改;ddl 是指 create/drop/alter 是针对表结构的修改;dcl 是指 数据库用户、密码和权限的设置;

2022-01-11 17:48:17 414

原创 一个List 根据参数 拆分成多个list 的实现

废话不多说直接上代码:public class domeTest2 { public static void main(String[] args) { List<List<String>> list = domeTest2.subList(Arrays.asList("a","b","c","d","e"),3); System.out.println(list); } private static <T&

2022-01-07 16:34:26 885

原创 数据库的四大特性以及不同隔离级别

数据库的隔离级别由低到高的顺序:未提交读 (Read Uncommitted) ;提交读 (Read Committed) ;可重复读 (Repeated Read) ;串行化(Serializab);一、四种隔离级别介绍?1.什么是未提交读 (Read uncommitted)?会造成哪几种情况?“未提交读”就是允许读取未提交的数据;会出现以下几种情况:脏读,不可重复读,幻读;2.什么是读提交 (Read Committed) ?会造成哪几种情况?“读提交”就是只允许读取已提交的数据;

2022-01-06 18:18:41 737

原创 #{}和${} 的区别

#{} 用在mybaits中 ,在sql 中进行占位,防止sql注入;${} 用在配置中,表示动态变量;用在jsp页面中,来取值。

2021-12-24 17:18:12 312

原创 java中/与%的区别

java中/与%的区别 前者取整 后者取余System.out.println(3/5) = 0;System.out.println(2/5) = 0;System.out.println(4/5) = 0;System.out.println(6/5) = 1;System.out.println(7/5) = 1;System.out.println(8/5) = 1;System.out.println(11/5) = 2;System.out.println(12

2021-12-24 16:49:40 3944

原创 一文叫你实现aop

@Component@Aspect@Order(1)public class ControllerExceptionAop {private Logger logger = LoggerFactory.getLogger(ControllerExceptionAop.class);@Pointcut("execution(* com.jd.xstore.shelf.space.man.web..*Controller.*(..))")public void aspect() {}@Aro

2021-12-24 15:25:02 38

原创 @Slf4j的效果等同于private Logger logger = LoggerFactory.getLogger(ControllerExceptionAop.class)

1.注解形式实现2.关于基于XML配置的不同AOP实现实列1实列1

2021-12-24 14:58:11 796

原创 项目中在加减乘除种遇到的java.lang.NullPointerException

这种异常 在对象使用前 就可以避免 ,public class UserEntery { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() {

2021-12-24 10:03:54 240

原创 i++和++i 的区别

代码实列:public class domeTest { public static void main(String[] args) { int i=0; new domeTest().test(i); new domeTest().test1(i); new domeTest().test2(i); new domeTest().test3(i); } public void test(int

2021-12-21 17:37:38 315

原创 redis全面了解

1.什么是redis?REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo(萨尔瓦托尔·桑菲利波) 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Has

2021-12-20 17:13:52 544

原创 for循环尽量不要删除里边的元素

1.forEach第一种:public static void main(String[] args) { List<String> strs =new ArrayList<>(); strs.add("a"); strs.add("d"); strs.add("c"); for(String str:strs){ if(str.equals("a")){

2021-12-17 18:35:13 403

原创 复习------静态代理和动态代理

1…什么时静态代理;静态代理就是在代码编译时,就会生成代理;静态代理有三部分构成;A.要代理类的接口student 和goSchool(); public interface student { void goSchool(); }B.要代理类的接口实现studentImpl 和 重写goSchool();public class studentImpl implements student { @Override public void goSchool() {

2021-12-09 18:23:19 177

原创 学习和捋一下我们常用的线程池

首选,我们说一下 常见的四种线程池的创建 :1.newFixedThreadPool()创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待ExecutorService = Executors.newFixedThreadPool(int nThreads);源码:public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThre

2021-12-07 11:46:54 194

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除