自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (4)
  • 收藏
  • 关注

原创 性能优化实战使用CountDownLatch

当计数器的值变为0时,所有等待的线程都会被释放,可以继续执行。原程序是分页查询EventAffinityScoreDO表的数据,每次获取2000条在一个个遍历去更新EventAffinityScoreDO表的数据。单个线程一个个遍历去更新表数据太慢了,我想把2000的数据分成多份,每份200条,可以分成10份。我们使用Lists.partition,把2000的集合拆分成每份200的小份,共10分。这里需要注意的是如果线程池设置的太小,会导致触发拒绝策略。所以这里我把线程池的队列设置的很大。

2023-09-29 15:52:54 887 1

原创 实用设计模式实战:工厂+策略(另一种实现)

接口是 Spring 框架中的一个接口,用于实现对 Spring 应用上下文(ApplicationContext)的感知,从而使一个类能够获取对应用上下文的引用。通过实现这个接口,类可以访问 Spring 容器中的 bean 实例和其他 Spring 特性。是 Spring 框架中的一个接口,用于在 Spring Bean 初始化时执行自定义的初始化逻辑。注解,您可以明确指定一个 bean 依赖于其他 bean,以确保在容器初始化时,依赖的 bean 先于当前 bean 初始化。,需要在实现类中实现。

2023-09-28 23:43:15 292

原创 实用设计模式实战:工厂+策略

在setApplicationContext 方法中获取实现了AttributeNumberService接口的所有类。添加到一个map(工厂)中。AttributeNumberStrategy类可以看成是一个工厂类,实现了ApplicationContextAware接口。使用时根据传的type不同,返回不同的实现类。调用相同的方法执行不同的逻辑。这个模式主要可以用来替代项目中的if/else。以上初级代码使用设计模式改造。注意,类型可以放在枚举中哦。

2023-09-28 00:10:46 304

原创 设计模式实战:模版方法

在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。

2023-09-16 19:35:46 398

转载 位运算

位运算什么是位运算按位与运算:&使用按位与&判断奇数偶数按位或运算:|按位异或运算:^按位取反运算:~左位移运算:<<右位移运算:>>无符号右位移运算:>>>什么是位运算按位与运算:&使用按位与&判断奇数偶数 public static boolean isOdd(int i){ //本质是取二进制的最后一位的值 != 0 表示奇数 return (i & 1)!=0

2020-07-18 16:30:46 161

转载 实现判断一个数是否是奇数

初级:奇数,指不能被 2 整除的数。根据求余之后的值是否为 1 来判断。 /** * 奇数,指不能被2整除的数。根据求余之后的值是否为 1 来判断。 * @param i * @return */ private static boolean isOdd(int i) { //取余后为1,表示是奇数。但是判断负数不准确 return i%2 == 1; }中级: private static boo

2020-07-05 17:30:50 948

原创 JAVA8新特性:Stream类

JAVA8新特性:Stream类1.Stream流的引入2.获取流3.常用方法3.1过滤:filte3.2 统计个数:count3.3 取用前几个:limit在Java 8中,得益于Lambda所带 来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。1.Stream流的引入需求:首先筛选所有姓张的人;然后筛选名字有三个字的人;最后进行对结果进行打印输出。原始集合操作package com.lb;import java.util.ArrayList;im

2020-07-03 10:24:51 284

原创 list相关代码

package com.lb;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;public class test { public static void main(String[] args) { ArrayList<String> listA = new ArrayList<>(Arrays.asList("1", "2", "3", "4

2020-06-28 20:41:21 248

原创 智慧包裹面试题

NullPointerException:空指针异常NoSuchMethodException:ClassCastException:类型转换异常IndexOutOfBoundsException:数组下标越界异常public class test { public static void main(String[] args) { Object i = 0; List<String> list = new ArrayList<>(.

2020-06-23 21:42:26 214

原创 面试:店小秘笔试题

1.Ajax能发送同步请求吗?async:false为同步。为true时,ajax请求是异步的2.数据库存储数量过大怎么办?定时任务删除没有的数据,使用MyCat分库分表3.有没有测试程序出现内存溢出、超负荷?4.索引失效?like模糊查询以%开头索引失效不在索引列上做任何操作(计算、函数、类型类型转换),否则会导致索引失效而转向全表扫描字符串不加单引号索引失效or查询每列都要有索引,不然索引失效mysql在使用!= 或者 < > 的时候无法使用索引会导致全表扫描联合索引

2020-06-16 16:09:53 3504 1

原创 多线程:并发包

多线程:并发包(计数器)CountDownLatch(屏障)CyclicBarrier(计数器)CountDownLatchCountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0

2020-06-02 23:28:55 381

原创 设计模式:动态代理

设计模式:动态代理JDK的动态代理(需要实现一个接口):CgLib方式的动态代理(不需要实现接口):JDK的动态代理(需要实现一个接口):创建一个汽车接口/** * @Description: * @Author: yp 汽车接口 */public interface Car { void run(); void stop(); String addOil(int num);}比亚迪汽车类实现汽车接口/** * @Description: 比亚迪汽车类实

2020-05-25 22:22:20 114

原创 Mysql:索引、锁模块、sql优化、语法

Mysql一、索引模块索引的数据结构Hash二叉查找树B树B+树MyISAM和InnoDB对B-Tree索引不同的实现方式索引优化联合索引最左匹配原则索引建立的越多越好吗二、调优sqlexplain 查看执行计划三、锁模块MyISAM与InnoDB关于锁方面的区别是什么表级锁会锁住整张表表级别的读锁:读锁也叫共享锁:即一条查询语句没有结束,另一条查询语句不会等待它结束再执行,可以同时执行表级别的写锁:排他锁:一条语句没有执行完,其他语句需要等待其执行在执行数据库事务的四大特性事务隔离机制四、语法部分grou

2020-05-17 23:49:42 186

原创 设计模式:工厂模式

1.简单工厂模式多个类实现了同一个接口,提供一个类来获取实现了该接口的类。比如:AoDi类和JiLi类实现了Car接口,通过CarFactory类可以获取AoDi和JiLi类Car:package com.lb.simplefactory;/** * @author LB * @Remarks * @date 2020/04/26 22:40 */public interfac...

2020-05-14 20:01:03 97

原创 JAVA锁:原子类

JAVA锁:原子类原子类为什么会有原子类CAS无锁模式CAS算法理解CAS(乐观锁算法)的基本假设前提常用原子类原子类java.util.concurrent.atomic包:原子类的小工具包,支持在单个变量上解除锁的线程安全编程原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 Volatile 类型的int变量在读取和写入上有着相同的内存语义。它还提供了一个原子

2020-05-13 21:50:42 317

原创 JAVA锁:乐观锁悲观锁

JAVA锁:乐观锁悲观锁乐观锁悲观锁乐观锁总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前数据库中的version

2020-05-13 20:46:00 88

原创 JAVA锁:读写锁

相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-读能共存,读-写不能共存,写-写不能共存)。这就需要一个读/写锁来解决这个问题。Java5在java.util.concurrent包中已经包含了读写

2020-05-11 22:34:23 335

原创 JAVA锁:重入锁

1.重入锁锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁synchronized 测试可重入锁:public class Test implements

2020-05-11 21:45:56 133

原创 多线程:等待唤醒机制

多线程:等待唤醒机制1 线程间通信2 等待唤醒机制3.生产者与消费者问题1 线程间通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协

2020-05-11 20:57:08 246

原创 多线程:线程安全和线程同步

1.线程安全电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “葫芦娃大战奥特曼”,本次电影的座位共100个(本场电影只能卖100张票)。我们来模拟电影院的售票窗口,实现多个窗口同时卖 “葫芦娃大战奥特曼”这场电影票(多个窗口一起卖这100张票)需要窗口,采用线程对象来模拟;需要票,Runnable接口子类来模拟模拟卖票:package com.lb.threadsafety;import jdk.nashorn.internal.ir.CallNode;public clas

2020-05-10 23:20:04 161

原创 多线程:Callable与Future模式

在Java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口。然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果。我们一般只能采用共享变量或共享存储区以及线程通信的方式实现获得任务结果的目的。不过,Java中,也提供了使用Callable和Future来实现获取任务结果的操作。Callable用来执行任务,产生结果,而Future用来获得结果。Future常用方法:V get() :获取异步执行的结果,如果没有结果可用,此方法会阻塞直到异步计算完成。V

2020-05-10 17:03:43 137

原创 多线程:开启线程及线程池

进程和线程的区别:进程是资源调度的最小单位;线程是cpu调度的最小单位;线程在进程下进行,一个进程中可以有多个线程;继承Thread类重写run方法创建线程package com.lb;/** * @author LB * @Remarks 继承Thread类重写run方法创建线程 * @date 2020/05/02 14:32 */public class Create...

2020-05-10 16:24:11 489

原创 JVM

什么是垃圾回收机制不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的...

2020-04-28 22:46:01 83

原创 layUI

弹出层: /** * 在地图上查看电子围栏 */ function open_fence_all() { var rows = $.table.selectFirstColumns(); var ids = rows.toString(); var width = $(window).width(); ...

2020-04-28 11:12:16 150

原创 设计模式:单列模式

1. 饿汉式:类初始化时,会立即加载该对象,线程天生安全,调用效率高。package com.lb;/** * @author LB * @Remarks 饿汉式:类初始化时,会立即加载该对象,线程天生安全,调用效率高 * @date 2020/04/21 22:57 */public class SingletonDemo01 { // 类初始化时,会立即加载该对象,线程...

2020-04-26 22:22:10 121

原创 LinkeList集合底层源码详解

add()方法get()方法remove(int index)方法

2020-04-16 22:10:55 143

原创 sql优化:mysql之多表limit查询

题目:有活动主表A,活动ID(id),活动名称name;活动子表B,活动ID(activeId),参与人员ID(userId); 大量数据下考虑sql执行性能,每页10条显示10条活动表A活动表B一般情况下的sql语句:select a.name,count(b.activeId) from a left join b on a.id = b.activeId group by...

2020-04-15 23:22:26 2739

原创 一分钟带你熟悉ArrayList源码

System.arraycopy()数组自己复制自己最后改变了自己package com.lb.demo;import java.util.ArrayList;/** * @author LB * @Remarks * @date 2020/04/09 20:15 */public class Demo { public static void main(String[...

2020-04-09 23:13:58 167

原创 班纳睿自定义微信公众号菜单

引入依赖 <!-- 微信SDK --> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> &l...

2020-03-20 11:53:34 317

原创 自定义文件上传

<style> .ui-upload { height: 30px; width: 80px; background-color: #00abff; font-size: 14px; line-height: 30px; ...

2020-03-12 13:49:16 150

原创 图解HashMap数据结构-笔记

图解数据结构数据结构-数组优点:连续的内存,通过下标可以快速寻址(查询快)缺点:插入节点困难把270插入到268和289之前需要把268后面的所有节点往后移动,所以数组结构插入节点困难数据结构-单链表优点:插入和删除数据方便缺点:查询效率低单链表一个节点由数据和Next指针组成,如果要把270加到268和289之前只需要把268的Next指针指向270,270的Next指针指向...

2020-03-04 23:15:05 655 1

原创 redis分布式锁

加入redis依赖和配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>两个关键的方法//只有在...

2020-03-02 21:05:38 101

原创 nginx负载均衡策略

nginx负载均衡策略:负载均衡: 提高网站吞吐量、减去单台服务器的压力轮询机制权重(比例分配)IP绑定宕机轮询配置、

2020-03-01 22:51:59 99

原创 nginx限流

nginx提供两种限流的方式:一是控制速率二是控制并发连接数控制速率限流配置多余请求放入队列,并行处理​server { listen 80; server_name localhost; location /update_content { content_by_lua_file /root/lua/update_cont...

2020-03-01 22:39:19 142

原创 微信JSAPI支付和退款

一.调用统一下单API,返回预付单信息配置文件准备JSAPi支付开发文档https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4引入第三方微信支付SDK <dependency> <groupId>cn.springboot</groupId> <artifactId&g...

2020-03-01 15:15:12 1330

原创 微信网页授权,获取openId

原始授权链接的解释https://mp.weixin.qq.com访问微信公众平台,查看开发文档选择微信网页开发,网页授权原始授权链接的解释:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&sc...

2020-02-29 23:13:32 11420 1

原创 redis缓存的应用---注解方式

redis缓存的应用—注解方式加redis配置和依赖 redis: host: 127.0.0.1 port: 6379 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri...

2020-02-29 22:31:38 221

原创 JMeter使用

添加一个线程组填写线程数在线程组下添加http请求填写http请求和参数添加监听器查看结果运行

2020-01-31 21:26:58 142 3

原创 mybatis in查询

使用List对sql in进行传参时UserFenceMapper.javapublic List<UserFence> selectUserFenceByUIds(List uids);UserFenceMapper.xml <resultMap type="UserFence" id="UserFenceResult"> <resu...

2019-12-31 11:25:31 96

原创 Highcharts

var width = document.body.clientWidth * 0.05;// 综合结果的宽$('#container').highcharts({ title: { text: '脑卒中报告' }, plotOptions: { serie...

2019-12-20 10:42:51 123

git安装包.rar

java软件安装篇-git安装,提供的 资料\64位windows 目录中已经下载好了,当然你可以自己下载也可用。

2019-10-12

vcredist_13x64.rar

vcredist_13x64.rar

2019-10-12

jdk-8u144-windows-x64.rar

jdk1.8安装包jdk-8u144-windows-x64.exe。

2019-10-12

swagger_Introduction.rar

swagger入门代码。

2019-10-04

空空如也

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

TA关注的人

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