- 博客(32)
- 收藏
- 关注
原创 阻塞队列(BlockingQueue)
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。下图中展示了线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素:使用不同的队列可以实现不一样的任务存取策略。在这里,我们可以再介绍下阻塞队列的成员:
2020-05-29 10:19:53 273
原创 lamaba中reduce方法将集合中的所有整数相加,并返回其总和
reduce:也是对所有值进行操作,但它是将所有值,按照传入的处理逻辑,将结果处理合并为一个如:将集合中的所有整数相加,并返回其总和下面看个例子:如:将集合中的所有整数相加,并返回其总和代码如下:...
2020-05-22 10:45:37 670
原创 Executors创建线程池
java jdk1.5提供线程池 在java.util.concurrent包下提供工厂类Executors用于生产线程池,Executors提供了4种线程池newFixedThreadPool: 创建一个线程池,该线程池重用固定数量的从共享无界队列中运行的线程。newScheduledThreadPool:创建一个根据需要创建新线程的线程池,但在可用时将重新使用以前构造的线程。newSingleThreadExecutor:创建一个使用从无界队列运行的单个工作线程的执行程序。支持.
2020-05-22 10:34:51 457
原创 lamba统计最大值,最小值,平均值,总和,个数
代码如下:List<Integer> ages = Arrays.asList(1,3,5,7,8,10,12);IntSummaryStatistics intSummaryStatistics = ages.stream().mapToInt(e -> e).summaryStatistics();System.out.println("最大值: " + intSummaryStatistics.getMax());System.out.println("最小值: " ..
2020-05-22 09:52:36 612
原创 java lambda 表达式中的双冒号和箭头的用法 ::
先构造一些数据,创建一个User类java lambda 表达式中的双冒号的用法 ::双冒号运算就是Java中的[方法引用],[方法引用]的格式是类名::方法名如下图所示User是一个类, getAge是方法名,注意是方法名呀,后面没有括号()的。为什么不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。可以替换成,如下图e -> e.getAge()...
2020-05-22 09:48:00 3075 1
原创 判断不为空和不为空串的方法java
判断不为空和不为空串的方法方法一:用StringUtils工具类首先要引入依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId></dependency>if( StringUtils.isNotBlank(str3) && StringUtils.is
2020-05-21 16:54:13 461
原创 java中break和continue的用法例子
break用于switch语句1. break用于switch语句中,终止switch语句下面先看加上break,效果如下我们可以看到,没有用过break关键字时,不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束break在循环中的用法2. break用于循环时,跳出循环@Testpublic void testBreak() { for (int i = 0; i < 10; i++) { ..
2020-05-21 16:22:52 2267 1
原创 java中break标记的使用
笔试题目:break目前位于内层的for循环,如何才能让break作用于外层 的for循环。可以标记解决标记的命名只要符合标识符的命名规则即可。@Testpublic void test2(){ aaa:for(int j = 0 ; j<3 ; j++) { // j=0 外层for循环 for(int i = 0 ; i< 2 ; i++) { // i=0 内层for循环 System.out.prin
2020-05-21 15:50:43 525
原创 Java中return的两种用法
一、return语句总是用在方法中,有两个作用。一个是返回方法指定类型的值(这个值总是确定的)。一个是结束方法的执行(仅仅一个return语句)。一般的就百是用在有反回值的方法中,用来返回方度法指定问类型的值,同时结束方法答执行;也可以用在返回值为版void的方法中,用来终止方法运行;一:结束方法的执行代码如下public static void main(String[] args) { System.out.println("1、调用returnTest()方法之前。
2020-05-21 14:22:54 31296
原创 git push前请先git pull
开发过程中 如果要推送代码到远程仓库,请先git pull。养成好习惯。原因很简单,在你开发过程中,你的同事可能也在改代码然后他提交了没通知你,你直接git push很容易造成代码冲突,代码冲突解决也简单,可万一你手哆嗦点错了或者项目很大结构很复杂点了不该点的,后面结果谁也说不好,所以为了保险起见,每次都先git pull再git push。git pull提示有冲突,很简单,把冲突的文件(是你自己做的那份复制里面的内容到记事本,确保你写的东西不会丢失)之后按它提示的来合并,它合并完之后,再提交...
2020-05-21 13:35:29 12888 5
原创 git操作代码文件的颜色变化
1.若文件显示红色,表示文件未add到git进行管理2.若文件显示绿色,表示文件已经交给git管理,但从未上传到远程仓库中3.若文件显示蓝色,表示文件已经上传过远程仓库,且此时本地文件与远程仓库文件不一致4.若文件显示白色,表示文件与远程仓库完全一致...
2020-05-21 11:33:18 3795
原创 idea中新建分支并且切换到新建的分支上
开发新功能,idea上新建自己的分支,要在dev分支上新建首先,idea右下角可以看到目前在dev分支上点击dev,接着New Branch输入分支名在Local Branches中就显示了然后可以看到已经切换到刚新建的分支上了想要切换到刚新建的分支上开发时,可以点击分支,在弹框上点击Checkout...
2020-05-21 11:19:26 1586
原创 idea @Autowired 注入爆红(无法注入)
问题如下图所示,idea @Autowired 注入爆红(无法注入)seettings ---->Editor Inspactions ----->spring ---->spring Core ---->Code ---->Autowring for Bean Class去掉那个勾效果如下
2020-05-20 10:08:22 647
原创 自定义注解,aop实现注解锁
多线程环境下,会出现线程不安全的问题,所以要对某些方法加锁以保证线程安全但是如果方法过多,每个方法前后都加这么一句,有点麻烦了,而且代码可读性也会差一些。可以使用aop切面编程,对某些加有特定注解(自定义注解)的方法做加锁操作即可。自定义注解@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Lock {
2020-05-15 14:00:10 736
原创 可重入锁是什么和demo
可重入锁reentrantlock是独占锁且可重入的synchronized 也可以重入可重入意思就是这个线程已经获取锁了,你再获取该锁还能获取 获取的还是原来的锁 不会出现问题 可以降低编程难度代码如下:new Thread(new Runnable() { @Override public void run() { synchronized (this) { System.out.println("第1次获取锁,这个锁是:...
2020-05-15 11:21:17 274
原创 多线程售票demo,用ReentrantLock实现
代码:public class TicketReentLockDemo implements Runnable { private int ticketTotal = 100; private Lock lock = new ReentrantLock(); @Override public void run() { while (ticketTotal > 0) { try { lock.
2020-05-15 11:12:43 402
原创 AtomicInteger使用非阻塞算法,实现并发控制多线程实现售票
public class TicketDemo implements Runnable { private static volatile AtomicInteger ticketSum = new AtomicInteger(20); private static int finalTotal = 0; @Override public void run() { int count; while ((count = ticketSum...
2020-05-15 10:24:32 325
原创 java多线程售票例子
代码如下:public class Ticket1 implements Runnable { private int tickets = 100; @Override public void run() { while (tickets > 0) { synchronized (Ticket.class) { if (tickets > 0) { ...
2020-05-15 09:47:29 513
原创 单词
Screenshot屏幕截图,截图Dashboardn. 仪表盘subscribevt. 签署;赞成;捐助vi. 订阅;捐款;认购;赞成;签署performancen. 性能;绩效;表演;执行optimizationn. 最佳化,最优化Performance optimization性能优化Abstractn. 摘要;抽象;抽象的概念;抽象派艺术作品adj. 纯理论的;抽象的;抽象派的v. 摘要;提取...
2020-05-13 14:27:50 101
原创 git分支feature和hotfix分支
master: 主分支,主要用来版本发布。 develop:日常开发分支,该分支正常保存了开发的最新代码。 feature:具体的功能开发分支,只与 develop 分支交互。 release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。 hotfix:线上 bug 修复分支...
2020-05-13 11:37:03 2104
原创 2020/5/13号单词
consistentadj. 始终如一的,一致的;坚持的(一致的,一贯,坚固定)multiplen. 倍数;[电] 并联adj. 多重的;多样的;许多的meshn. 网眼;网丝;圈套;网格vt. [机] 啮合;以网捕捉vi. 相啮合platformn. 平台;月台,站台;坛;讲台;厚底松糕鞋Chartn. 图表;海图;图纸n. (Chart)人名;(泰)察vt. 绘制…的图表;在海图上标出;详细计划released...
2020-05-13 11:00:55 125
原创 mysql什么是长事务
1.什么是长事务首先我们先要知道什么是长事务,顾名思义就是运行时间比较长,长时间未提交的事务,也可以称之为大事务。这类事务往往会造成大量的阻塞和锁超时,容易造成主从延迟,要尽量避免使用长事务。...
2020-05-13 09:12:35 1248
原创 Windows系统下安装分布式事务组件Seata
1:github上下载seata安装包地址为https://github.com/seata/seata/releases/tag/v1.2.02:启动seata点击seata-server.bat脚本文件启动后入下图所示3:测试seata是否启动通过jcmd,可以找到Seata进程
2020-05-11 14:44:34 1431 4
原创 java 中通过 Lettuce 来操作 Redis
spring-data-redis文档:https://docs.spring.io/spring-data/redis/docs/2.0.1.RELEASE/reference/html/#new-in-2.0.0Redis文档:https://redis.io/documentationRedis中文文档:http://www.redis.cn/commands.html本文学习一下如何通过 Java 操作 Redis。Java 操作 Redis 的库有两个,Jedis 和 Lettu...
2020-05-09 13:42:54 1442
原创 成员变量和类变量的区别:
成员变量和类变量的区别: 1、两个变量的生命周期不同 成员变量随着对象的创建而存在,随着对象的回收而释放。 静态变量随着类的加载而存在,随着类的消失而消失。 2、调用方式不同 成员变量只能被对象调用。 静态变量可以被对象调用,还可以被类名调用。 3、别名不同 成员变量也称为实例变量。 静态变量也称为类变量。 4、数据存储位置不同 成员变量存储在堆内存的对象中,所以也叫对象的特有数...
2020-05-09 09:13:44 579
原创 redisTemplate进行自增操作例子
代码String key = "redisAtomicLong:getAndIncrement:add";RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());Long increment = entityIdCounter.getAndIncremen...
2020-05-08 14:27:40 9551 1
原创 redisTemplate.opsForHash()
Hash类型Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。Map以map集合的形式添加键值对<String, String> maps = new HashMap();maps.put("1","星期一");maps.put("2...
2020-05-06 16:51:08 22516 3
原创 RedisTemplate中opsForValue()中的方法
使用redisTemplate.opsForValue().set();先引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depende...
2020-05-06 15:46:44 9168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人