自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(217)
  • 论坛 (9)
  • 收藏
  • 关注

原创 postman传递数组参数

key相同,值不同,传递多个数组接收到了。

2021-04-08 09:50:35 192

原创 map和flatMap

map比较简单,一生一,可以抽取列表元素的某个属性形成新的列表flatMap一生多,对数组进行流封装,把数组的元素都进入同一个流中 String[] arr = {"asd","dfg"}; //两行代码效果相同 //List<String> collect = Arrays.stream(arr).flatMap(a -> Arrays.stream(a.split(""))).distinct().collect(Collector

2021-03-26 11:17:25 17

原创 格式化字符串

MessageFormat和String都有format方法,用法不同。前者用{}和数字(0开始)填充,后者用%和类型填充 String sd = MessageFormat.format("aa{0}-{1}", "sd","123"); System.out.println(sd); String format = String.format("你好%3d,%s", 2, "呵呵"); System.out.println(format

2021-03-24 14:56:28 21

原创 docker问题

4.1.Cannot connect to the Docker daemon. Is ‘docker -d’ running on this host?启动docker服务,service docker start4.2.去掉sudoGot permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdoc

2021-03-10 21:19:14 13

原创 3.Dockerfile

dockerfile的命令都是大写的,比如:FROM、RUN等一条指令构建一层, 创建一个新的容器3.1.FROM基础镜像必须是第一条指令FROM nginx服务镜像FROM ubuntu 基础的操作系统镜像Scratch空白镜像FROM scratch 不以任何镜像为基础3.2.COPY复制文件到容器中COPY ./test test容器中当前路径是/等价于COPY ./test /test3.3.RUN执行命令新建立一层,在其上执行这些命令,执行结束后, commit 这一层的

2021-03-10 21:16:10 12

原创 docker使用

2.1.命令帮助Docker查看docker所有命令Docker run --help查看具体命令使用说明2.2.镜像镜像网站https://hub.docker.com/explore/所有镜像都在这里2.2.1.列出本机上的镜像Docker images,REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10

2021-03-10 21:13:19 17

原创 docker安装

Windows从阿里云http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/下载DockerToolbox-1.10.0.exe点击桌面的Docker Quickstart Terminal运行报错。运行开始菜单docker的相同命令,启动成功单还是报错安装失败centosCentos6.5以上,内核要求2.6.32-431 以上。或centos7,内核要求3.10以上。查看内核版本Uname -r或unam

2021-03-10 21:07:23 7

原创 死锁

死锁指两个线程互相持有锁,等待对方的锁。举例 public static void main(String[] args) { dead_lock(); } private static void dead_lock() {// 两个资源 final Object resource1 = "resource1"; final Object resource2 = "resource2";// 第一个线程,想先占有resour

2021-03-06 21:08:29 15

原创 seata原理

https://www.jianshu.com/p/044e95223a17at模式,Automatic Transaction自动模式

2021-03-01 15:57:06 42

转载 mysql索引讲解最好

https://blog.csdn.net/m0_47157676/article/details/108987164?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase&request_id=5f84d885dfc5717f9a3e99e6

2020-10-16 15:17:34 31

原创 字符串常量池

原理编译后,每个class文件都有常量池表,存储所有常量,包含了字符串常量运行后,每个class文件都有一个运行时常量池。字符串常量池是一个hashtable,存储的是字面量"abc"和创建的字符串对象的引用之间的映射。字符串常量池是全局只有一个,在堆中。而常量池表和运行时常量池是每个class文件都有一份。字符串常量进入运行时常量池的时候,使用equals方法,先进行字符串常量池是否存在的判断,不存在就创建对象,存储映射,返回对象的引用。使用了享元模式。举例在*.java文件中有如下代码:i

2020-10-12 10:44:05 60

原创 帆软报表

下载软件最新版本10https://www.finereport.com/product/download版本9要到百度搜索下载教程https://bbs.fanruan.com/edu/guide/finereport/3.html自定义函数1.把finereport的WEB-INF内的lib拷贝到本项目中C:\FineReport_10.0\webapps\webroot\WEB-INF\lib2.lib添加到library3.写自定义函数,继承AbstractFunction接受

2020-10-09 09:27:14 77

原创 flyway使用

添加依赖 <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.1.1</version> </dependency>配置spring: flyway: base

2020-09-08 10:30:58 77

原创 binlog

主库把ddl,dml写入binlog从库通过io线程,读取主库的binlog,复制到relaylog从库通过sql thread读取relaylog,重放sql事务提交后,sql写入binlog

2020-08-13 21:42:26 50

原创 线程状态

1.创建:new出来2.就绪:start()3.运行4.阻塞,3种(1)等待阻塞,wait方法(2)同步阻塞,等待锁(3)其他阻塞,sleep和join5.结束

2020-08-13 21:22:31 33

原创 sleep、wait、yield、join区别

1.waitwait是Object方法,释放锁,等线程代码执行完后释放锁的。wait必须在同步代码块中,用notify唤醒2.sleepsleep是Thread方法,sleep释放cpu,sleep(n)在n毫秒内不竞争cpu不释放锁。线程进入阻塞状态3.yield不释放锁,释放cpu,线程重回就绪状态,有可能再次执行4.join调用join的线程执行结束后,当前线程继续执行。当前线程里调用其它线程1的join方法,当前线程阻塞,但不释放对象锁,直到线程1执行完毕或者millis时间到

2020-08-13 21:17:53 52

原创 topk算法

从1一个数中,取出前100个最大数。最小堆排序。1.首先读入前100个数,用最小堆排序,时间复杂度为O(klogk)(k为数组的大小即为100)。2.然后遍历后续的数字,并于堆顶(最小)数字进行比较。如果比最小的数小,则继续读取后续数字;如果比堆顶数字大,则替换堆顶元素并重新调整堆为最小堆。整个过程直至1亿个数全部遍历完为止。该算法的时间复杂度为O(nklogk),空间复杂度是100(常数)。...

2020-08-06 22:02:17 59

原创 分布式id-数据库实现

mysql数据库,建立一个独立的数据库,对应一个独立的微服务。通过id表和分布式锁实现分布式id。建立一个id表CREATE TABLE `rys_distribute_id` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(64) NOT NULL DEFAULT '' COMMENT 'id名称', `init_value` int(11) NOT NULL DEFAULT '0'

2020-07-25 15:46:52 132

转载 学习笔记(1):activiti6.0从入门到精通-设置流程变量(概述)

简介: Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。 工作流是什么:(WorkFlow)是对工作流程及其各操作步骤之间业务规则的抽象,概括描述 即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的...

2020-07-02 16:53:56 118

原创 activiti6使用

1.下载acitiviti6官网慢的话,到百度网盘搜索idea按住嗯actiBPM插件2.创建boot项目依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE<

2020-07-02 11:31:35 131

原创 idea使用activiti插件

1.插件安装file-setting-plugins从磁盘安装插件actiBPM2.使用插件画完流程图,中文名称可能乱码两个文件最后一行添加-Dfile.encoding=UTF-8重启idea

2020-07-01 11:11:48 817

原创 Redis为什么是单线程的

因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。二、详细原因:1、不需要各种锁的性能消耗Redis的数据结构并不全是简单的Key-Value,还有list,hash等复杂的结构,这些结构有可能会进行很细粒度的操作,比如在很长的列表后面添加一个元素,在hash当中添加或者删除一个对象。这些操作可能就需要加非常多的锁,导致的结果是同步开销大大增加。总之,在单线

2020-06-23 21:33:27 65

原创 Redis事务与MySQL事务的区别

事务命令mysql:Begin:显式的开启一个事务Commit:提交事务,将对数据库进行的所有的修改变成永久性的Rollback:结束用户的事务,并撤销现在正在进行的未提交的修改redis:Multi:标记事务的开始Exec:执行事务的commands队列Discard:结束事务,并清除commands队列默认状态mysql:mysql会默认开启一个事务,且缺省设置是自动提交,即每成功执行一次sql,一个事务就会马上commit,所以不能rollbackredis:redis默认不

2020-06-22 22:46:55 245

原创 apollo使用

企业级配置中心,比cloud的config好用很多使用说明https://gitee.com/lepdou/apollo/先看quick start,里面很多信息,在分布式部署都没讲。添加部门集群配置后,左上角变化。添加namespace后,右边配置分成好几块了单机熟悉后,再安装分布式的。...

2020-04-03 11:19:23 78

原创 入参为字符串用日期对象接收

@PostMapping("/seataTest") public Result seataTest(@RequestBody CreateOrderRequest request) { return openOrderService.seataTest(request); }@Datapublic class CreateOrderRequest...

2020-04-02 11:15:05 210

原创 vue创建项目

1.安装node.JShttps://nodejs.org/dist/安装最新版本2.安装webpacknpm install webpack -gwebpack -v3.安装vue-cli删除C:\Users\Administrator\AppData\Roaming\npm\node_modules的vue-cli目录npm install -g @vue/cli全局安装v...

2020-01-25 23:00:48 326 1

原创 spring缓存

@Cache

2020-01-17 11:59:20 55

原创 jetCache使用

配置boot依赖 <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2....

2020-01-16 16:25:26 475

原创 两个方法事务调用问题

方法a调用方法b,两个方法都使用事务,易出错的问题 @Autowired private OrderService orderService; @Transactional public void methodA() { try{ orderService.methodB(); } catch (Excep...

2020-01-15 16:53:34 161

原创 spring-aspectj的几个aop注解

通知(Advice)类型的说明@Before 前置通知(Before advice) :在某连接点(JoinPoint)——核心代码(类或者方法)之前执行的通知,但这个通知不能阻止连接点前的执行。为啥不能阻止线程进入核心代码呢?因为@Before注解的方法入参不能传ProceedingJoinPoint,而只能传入JoinPoint。要知道从aop走到核心代码就是通过调用ProceedingJi...

2020-01-10 15:20:04 215

原创 @Intercepts-mybatis拦截器

查询拦截器package org.study.mybatis.config;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.cache.CacheKey;import org.apache.ibatis.executor.Executor;import org.apache.ibatis.mapping.BoundSq...

2019-12-19 18:33:48 3449

原创 InheritableThreadLocal使用

子线程可以使用父线程的值,ThreadLocal不可以无初始值 private static final ThreadLocal<String> TL = new ThreadLocal<>(); private static final InheritableThreadLocal<String> ITL = new InheritableT...

2019-12-19 17:21:45 91

原创 redis限流

计数器限流,时间段一个计数器,超过指定值,就返回错误。lua保证操作原子性。zuul网关中,使用过滤器限流。/** * 限流 * @author lipo * @version v1.0 * @date 2019-10-25 10:34 */@Slf4j@Componentpublic class LimitFilter extends OncePerRequestFilt...

2019-12-02 10:22:17 60

原创 boot2源码-事务

jdbc事务public void test(){ String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; String sql = "update blog set name = ? where id=?"; ...

2019-11-25 16:52:01 48

原创 redis用HyperLogLog计算UV

UV:unique visitor,独立访客,数据去重DV:distinct value,去重统计,如上面的UV。用redis的set去重,用户多时,比如微信月活10亿,就会占用很多内存。用HyperLogLog,最多12k内存,可以统计2^64=100亿亿个值,当然是模糊统计,误差0.81%。对于UV,可以有误差,比如10亿和10亿一千万,差别不大。使用 public Obj...

2019-11-22 17:45:32 137

原创 redis用zset做延时消息

把执行时间作为分数,存到zset中。定时任务,分数倒序取出第一个,小于当前时间,说明消息可以执行了发送延时消息服务 public Object publishDelayedMsg() { OrderDTO dto = new OrderDTO(); dto.setId(1); dto.setCreateTime(new Date());...

2019-11-22 14:43:21 630

原创 redis用list做消息队列

leftPush消息入队,rightPop对应,消息出队。rightPop(RedisConstant.MQ_LIST, 0L, TimeUnit.SECONDS)阻塞出队,0表示永久阻塞生产消息服务@Servicepublic class RedisService { @Autowired private RedisTemplate<String, String&g...

2019-11-22 11:53:45 1880

原创 redis发布订阅

生产者@Component@Slf4jpublic class MqProducer { @Autowired private RedisTemplate redisTemplate; public void send(String topic, String msg) { log.info("topic ={}, msg = {}", topic...

2019-11-13 14:20:09 30

原创 gitflow

安装curl -L -O https://raw.github.com/nvie/gitflow/develop/contrib/gitflow-installer.shsudo bash gitflow-installer.sh

2019-11-13 10:21:16 56

原创 es生成分布式id

雪花算法使用机器id和时间推移,生成19位long型id。在分布式环境下,一台机器部署多个项目,或者docker部署项目,会产生id重复 int count = 100000; CountDownLatch latch = new CountDownLatch(count); Set<Long> set = new HashSet&l...

2019-11-12 11:58:26 356

空空如也

在下自学java,寻找自学的朋友互相鼓励

发表于 2016-07-16 最后回复 2016-07-17

线程A中加入线程B,B中加入C,运行结果不对

发表于 2016-06-27 最后回复 2016-07-17

jsp中cookie,显示不了上次访问时间

发表于 2016-07-06 最后回复 2016-07-17

jsp怎么设置连接池

发表于 2016-07-11 最后回复 2016-07-17

学习jsp还要安装eclipse for javaee吗?

发表于 2016-07-05 最后回复 2016-07-07

先画直线, 然后线程休眠, 为啥不行?

发表于 2016-06-26 最后回复 2016-07-06

反射构造器注释参数二维数组长度判断

发表于 2016-06-26 最后回复 2016-06-27

创建不了文件

发表于 2016-06-25 最后回复 2016-06-27

运行后窗体不显示内容,改变窗口大小就显示内容,为啥?

发表于 2016-06-23 最后回复 2016-06-26

空空如也

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

TA关注的人 TA的粉丝

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