- 博客(296)
- 资源 (8)
- 收藏
- 关注
转载 java堆、栈、堆栈,常量池的区别
上例中,当我们将str1的值改为"bcd"时,JVM发现在栈中没有存放该值的地址,便开辟了这个地址,并创建了一个新的对象,其字符串的值指向这个地址。堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。这样,就出现了a与b同时均指向3的情况。
2024-06-24 10:07:06
245
1
原创 js中的过滤和排序
查询到的集合list排序:排序原集合结果会发生变化list.sort(function(a,b){ return (a.age ||0 )>(b.age || 0)?-1:1})过滤:原集合数据保持不变var result = list.filter(function(f){ return f.age >12 || f.age==10})function listSort(){ var list=[] ; var b1 = {}; b1.age=10;
2022-05-17 10:00:43
2443
原创 springcloud 集成mongoDb的基本操作
本篇博客只列举出基本操作,一 . 依赖引入想要在SpringBoot里面很好的使用MongoDB api,需要引入如下依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version&g
2022-05-17 09:25:25
2627
转载 Java中如何高效的判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。检查数组是否包含某个值的方法使用Listpublic static boolean useList(String[] arr, String targetValue) { return Arrays.asL
2022-05-17 09:17:20
7141
转载 HandlerMethodArgumentResolver用于统一获取当前登录用户
目录一、最原始直接二、AOP三、拦截器+方法参数解析器3.1 自定义权限拦截器3.2 自定义参数注解3.3 自定义方法参数解析器3.4 配置MVC环境:SpringBoot 2.0.4.RELEASE 需求:很多Controller方法,刚进来要先获取当前登录用户的信息,以便做后续的用户相关操作。 准备工作:前端每次请求都传token,后端封装一方法tokenUtils.getUserByToken(token),根据token解析得到currentUserInf...
2021-02-01 23:19:03
223
转载 isAssignableFrom()方法与instanceof关键字用法
isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点:isAssignableFrom()方法是从类继承的角度去判断,instanceof关键字是从实例继承的角度去判断。 isAssignableFrom()方法是判断是否为某个类的父类,instanceof关键字是判断是否某个类的子类。使用方法:父类.class.isAssignableFrom(子类.class)子类实例 instanceof 父类类型isAssignableFrom()方法的调
2021-02-01 23:13:29
857
转载 linux 命令之 nohup 和 &
nohup和&究竟有啥区别?首先编写名称为test.c测试代码如下:#include "stdio.h"int main(){ int i =0; while(1){ printf("hello world! %d\n",i++); sleep(1); }}代码的内容很简单,就是一个输出hello world!与循环轮数的死循环程序,每输出一行就休眠1秒,然后使用gcc进行编译输出test文件gcc test.c -o test1能看到编译结果.
2021-01-30 15:49:58
294
转载 springboot 整合mongoTemplate的 Query Criteria 用法
1.通过注解注入 mongoTemplate@Autowiredprivate MongoTemplate mongoTemplate;2.获取Query 和 Criteria 对象Query query = new Query();Criteria criteria = new Criteria();3.多参数动态查询。criteria 有两种写法,一种是criteria.and().is();另一种是criteria.where().is(),两种方式不能混合使用,否则不生.
2021-01-29 14:09:57
1665
1
转载 SpringBoot中Required String parameter `xxx` is not present
错误分析使用Post向接口发送json数据时显示如下错误:WARN 13392 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by handler execution: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter '
2021-01-29 12:46:27
3183
1
转载 MyBatis自带的缓存配置(Cache)
如果要实现 mybatis 的二级缓存,一般来说有如下两种方式:1. 采用 mybatis 内置的 cache 机制。2. 采用三方 cache 框架, 比如ehcache, oscache 等等.采用 mybatis 内置的 cache 机制。在 sql 语句映射文件中加入 <cache /> 语句 , 并且相应的 model 类要实现 java Serializable 接口,因为缓存说白了就是序列化与反序列化的过程,所以需要实现这个接口. 单纯的 <cache />
2021-01-29 12:41:48
461
原创 java8 新特性之String 中指定字符出现的次数
import java.util.Map;import java.util.stream.Collectors;import java.util.stream.Stream;public class StringAppearCount { public static void main(String[] args) { String str = "dhfuewgjdshfjksdhfuiewgusdbhgjkhugo"; Map<String, .
2021-01-28 17:36:11
905
原创 java8 新特性 之 将指定格式的字符串转化成List
import org.apache.commons.lang3.StringUtils;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class StringConvertList { public static void main(String[] args) { //java8特性//将以逗号分割的字符串转换成List<Long.
2021-01-28 15:06:40
1802
转载 注解@Slf4j的使用
注解@Slf4j的使用如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class);可以用注解@Slf4j来打印日志。======================================怎么使用呢?==========================================1.你的IDEA上需要安装Lombok插件https://www.cnblogs.com/sxdcgaq8.
2021-01-28 14:00:06
350
转载 springboot 之MongoDB修改篇
本篇依然是MongoDB curd中的一篇,主要介绍document的更新,主要内容如下常见类型成员的修改 数组类型成员的增删改 document类型成员的增删改I. 基本使用首先是准备好基本环境,可以参考博文181213-SpringBoot高级篇MongoDB之基本环境搭建与使用 190113-SpringBoot高级篇MongoDB之查询基本使用姿势在开始之前,先封装一个输出方法,用于打印修改后的record对象private void queryAndPrint(Quer
2021-01-28 10:38:39
1331
转载 springboot 中用nacos 做注册中心
我觉得Nacos用起来还不错在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我们就来说一下Alibaba的Nacos怎么样?下载与安装 下载地址https://github.com/alibaba/nacos/releases 安装: Windows 下载解压后(.zip),直接点击bin/start.bat就可以了。 Linux下载解压后(.tar.gz),同样,也是运
2021-01-27 18:18:43
1356
1
转载 MongoDB 和sql 语句对应关系
看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦。左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。db.users.find() select*fromusersdb.users.find({"age":27}) select*fromuserswhereage=27db.users.find({"username":"joe","age":27}) select*fromuserswhere"usern...
2021-01-27 16:14:45
439
转载 Mongodb4.0+spring boot+事务问题(爬坑)
在2018年mongoDB4.0的问世,官方也说到了4.0以上将支持事务。这可以让我们大胆的使用mongoDB,因为事务保证数据的准确性。第一坑:事务的支持必须建立在mongodb副本集之上。刚开始使用spring 的 @Transactional注解,并定义了个运行时异常,来测试事务。发现报错之后不能回滚。就上网搜索资料,如何配置spring data mongodb事务。后来知道mongodb的事务只能建立在副本集之上。知道了原因就开始配置副本集了,副本集我是在centos7上搭建的单机版,一主两
2021-01-27 15:57:02
1172
转载 springboot MongoDB 事务
前言有玩过mongodb的朋友大概会知道mongodb4.0版本已经可以支持多文档副本集事务。而最新版本4.2更是支持分片事务,即真正的支持分布式事务。不过当时我使用mongodb,其最新版本为4.10,4.2版本还没发布,因此本文还是以4.0版本的副本集事务来讲解。事务整合1、使用事务的前置条件mongodb版本大于等于4,本文mongodb版本为4.10版本 mongodb搭建了副本集,本文mongodb为一主两从 本文使用的springboot版本为springboot2+版本
2021-01-27 15:19:15
5518
3
转载 springboot 中mongodb 事务
mongoDB事务官网:https://docs.mongodb.com/manual/core/transactions/使用示例application.ymlspring: data: mongodb: uri: mongodb://172.18.0.21:27017,172.18.0.22:27017,172.18.0.23:27017/test注意:事务中只能读主库,从库不能读,开启读从库会报错(Read preference in a tr..
2021-01-27 14:29:30
1344
1
转载 springboot 接收List 入参
第一种方式:使用@ModelAttribute 注解 + 对象接收1. get 请求 入参为 projectIds=1,2,3 2. @RequestMapping("/analysis") 或者 @GetMapping("/analysis") 使用 @ModelAttribute 注解 @RequestMapping("/analysis") public JsonResult queryList (@ModelAttribute PhoneSta...
2021-01-26 22:11:02
10694
原创 idea 中微服务面板
如果是多模块的微服务,idea提供了一个可以多服务启动的界面services,如果你的项目里没看到这个界面:找到项目下的workspase.xml配置文件将配置文件中添加<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="SpringBootApplicationConfiguratio
2021-01-14 10:37:12
789
转载 springboot的四种注入方式
springboot的属性注入以注入dataSource为例1.springboot默认读取的文件是放在resources目录下的名为application.properties或application.yml的文件在application.properties中写入以下属性jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名称jdbc.username=rootxxx.
2021-01-11 19:44:05
5470
转载 什么是IO多路复用
先百度或者知乎,找到这篇文章 [1]IO 多路复用是什么意思?文中提到: 第一种好理解,就是来一个请求,fork一个进程,第二种提到I/O多路复用使用单个线程实现的,作者肯定没有写错,因为后面的文章也都是写的线程,我的问题是为什么不是进程来管理?参考文章[2] 里面的code 给出的是通过一个进程来服务多个client 连接请求. 我理解这是通过单进程的里面的一个线程来处理的,所以这里进程线程就不作区分.还有,下面引文中一个问题问的很好“Q:那这样子,在读取...
2021-01-06 17:21:31
448
原创 tomcat 9 免安装版 闪退问题
Tomcat免安装版点击startup.bat可成功启动,但是执行tomcat9.exe时却闪退,这是因为免安装版的tomcat不会自动把tomcat注册到windows服务里,需要手动注册。解决办法就是:在cmd(win+r)进入tomcat的bin目录执行命令: service.bat install...
2021-01-06 12:27:04
355
原创 java线程池
接口类Executor 线程的定义和线程的执行分开 execute 马上执行ExecutorService接口类 extends Executor submit 异步执行 get 方法是阻塞的 直到submit的结果返回才会取到Callable 这个就是为了线程池而设计的 得到线程执行的返回值 类似于runnable 但是有返回值Future 存储将来返回的执行结果FutureTask Future + RunnableCompletableFuture 管理一堆任务完成...
2021-01-05 15:58:36
100
原创 Queue 系列
copyOnWriteArrayList 写时复制 插入数据的时候 先把原来的数据copy一份,在将元素插入进去,然后将引用指向新的值,这样写的时候加锁,读的时候不加锁为什么还需要复制 因为Array的长度是一定的之前的ArrayList 在读的时候 需要将写的进程停掉,才可以进行读Queue 是线程安全的offer 放数据成功返回true 失败返回falseadd 放数据失败,返回false,并抛出异常peek 读数据pool 取出数据(读并且删除掉)-----------..
2020-12-31 14:55:49
93
转载 ArrayList源码解析
1、概述ArrayList ,基于[]数组实现的,支持自动扩容的动态数组。相比数组来说,因为其支持自动扩容的特性,成为我们日常开发中,最常用的集合类,没有之一2、类图ArrayList 实现的接口、继承的抽象类实现了 4 个接口,分别是:(1)java.util.List接口,提供数组的添加、删除、修改、迭代遍历等操作(2)java.util.RandomAccess接口,表示 ArrayList 支持快速的随机访问(3)java.io.Serializabl...
2020-12-31 13:15:15
116
原创 java中强引用 弱引用 软引用 虚引用 总结
ThreadLocal 一个线程一个map(ThreadLocalMap) map的key 为当前对象ThreadLocal value为对应泛型的值ThreadLocal 的原理强引用: 平时定义变量 如 Student s = new Student(); s即强引用软引用 SoftReference<Student> s = new SoftReference<>(new Student()) 定义的变量为软引用 主要用于缓存,需要新的空间的时候,可以...
2020-12-30 20:57:05
199
转载 java 中的强引用 软引用 弱引用 虚引用
主要是为了更好的进行内存管理而设置的一套机制,粗俗的说就是不同的引用垃圾回收的力度不同。强引用:只要引用存在,垃圾回收器永远不会回收Object obj = new Object();obj.equels(new Object());//可直接通过obj取得对应的对象而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用:非必须引用,内存溢出之前进行回收,可以通过以下代码实现.
2020-12-30 20:03:45
124
转载 SpringDataJpa:JpaRepository增删改查
Jpa查询1. JpaRepository简单查询基本查询也分为两种,一种是spring data默认已经实现,一种是根据查询的方法来自动解析成SQL。 预先生成方法 spring data jpa 默认预先生成了一些基本的CURD的方法,例如:增、删、改等等继承JpaRepositorypublic interface UserRepository extends JpaRepository<User, Long> {} 使用默认方法 @Test
2020-12-30 11:01:01
536
原创 k8s中工具的区别
kubeadm是kubernetes集群快速构建工具kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16即master 和node1,node2 节点构建集群kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现kubectl:kubectl是kubenetes命令行工具,提供指令kubectl get nodes#查看存在问题的podkubectl get pod
2020-12-28 20:00:35
114
转载 K8S基础概念
一、核心概念1、NodeNode作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的Kubelet、kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁、以及实现软件模式的负载均衡。Node包含的信息:Node地址:主机的IP地址,或Node ID。 Node的运行状态:Pending、Running、Terminated三种状态。 Node Condition:… N
2020-12-28 19:30:37
505
转载 EnableAsync使用技巧
SpringBoot项目中,有时候我们发现使用EnableAsync进行异步调用没有作用。分析原因:1. 异步方法使用@Async,没有确定:返回值为void或Future2. 异步方法和调用方法写在了同一类中,如果写在同一类中是没有效果的。实现EnableAsync进行异步调用两种方式:1.SpringBootApplication 启动类上,增加EnableAsync 启动异步注解2. 在对应的service实现类上加上EnableAsync 启动异步注解3. 如...
2020-12-28 18:21:29
951
原创 LockSupport
LockSupport是一个线程工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,也可以在任意位置唤醒。它的内部其实两类主要的方法:park(停车阻塞线程)和unpark(启动唤醒线程)。 如果线程先被unpark,再进行park,则直接放行import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.LockSupport;public class LockSupportTest { publ
2020-12-25 13:14:10
171
转载 Semaphore 限流
Semaphore,是用于控制一组线程访问资源。举个例子,老师上课,同学需要上厕所,老师准备了3个令牌,拿到令牌的同学就可以去上厕所,上完厕所的同学需要归还令牌。这样就最多同时只有3名同学上厕所。这就是Semaphore的应用场景。 Semaphore的构造函数可初始化令牌数量、是否公平锁。如果是公平锁,先申请令牌的可以先获取。 acquire() 和release()分别是获取和释放令牌,acquire(int) 和release(int) 分别是获取和释放多个令牌。Semaphore...
2020-12-25 12:11:40
183
原创 ReentrantReadWriteLock
读写锁 可以生成两把锁 一个读锁(读锁共享锁),一个写锁(互斥锁)import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteLockTest { static ReadWriteLock readWriteL.
2020-12-25 11:27:09
91
原创 Phaser的使用
分阶段进行,按照一定的流程执行,比如举行婚礼1、新郎新娘入场2、其它宾客入场3、所有人开始吃饭4、所有人离场5 新郎新娘洞房import java.util.concurrent.Phaser;import java.util.concurrent.TimeUnit;public class PhaserTest { static MarriagePhaser phaser = new MarriagePhaser(); static void milliSleep
2020-12-25 11:08:18
118
转载 CountDownLatch和CyclicBarrier
CyclicBarrier在用法上其实跟CountDownLatch十分相似,但是前者功能更加强大。CountDownLatch举例:CountDownLatch countDownLatch=new CountDownLatch(n); 当程序多次执行countDownLatch.countDown();导致计数器n=0时,阻塞的线程都将同时被唤醒。但是此时的n已经是等于0了,也就是说这个计数器就是一次性的。CyclicBarrier举例:CyclicBarrier cycl.
2020-12-25 10:46:23
128
转载 CountDownLatch 的用法
1.背景:countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下。2.概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。(等待其它一组线程执行完毕后,该线程再执行,需要依赖其它线程的执行结果) 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器
2020-12-25 10:33:32
132
mysql-5.5.16
2015-11-28
PLSQL_Developer_7.1
2015-11-28
测试单元jar包
2015-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人