![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
日常笔记
搬砖奋斗史
这个作者很懒,什么都没留下…
展开
-
2021-07-28
package com.station;import java.util.concurrent.atomic.AtomicInteger;public class Bus { private int busId; private int stationId; public Bus(int busId, int stationId) { this.busId = busId; this.stationId = stationId; }原创 2021-07-28 10:54:10 · 115 阅读 · 0 评论 -
mongo 常用语法
// mysql: select * from users;db.appResource.find()// mysql: select name, skills from users;db.appResource.find({},{"appType":1})// mysql: select name, age, skills from users where name = 'hurry';db.appResource.find({"appType":"ncp"},{"appType":1})原创 2020-07-17 10:28:05 · 494 阅读 · 0 评论 -
Java中的锁
悲观锁与乐观锁悲观锁:认为数据很容易被其他线程修改 ,在对数据处理前先对数据进行加锁,在整个数据处理过程中数据处于锁定状态。乐观锁:乐观锁是相对于悲观锁来说的,它认为数据一般不会造成冲突,只在数据更新时,才对数据冲突与否做检测。公平锁与非公平锁(先来后到锁)公平锁:ReentrantLock pairLock = new ReentrantLock(true);非公平锁:ReentrantLock pairLock = new ReentrantLock(false);构造器不传参,则默.原创 2020-07-09 17:50:35 · 156 阅读 · 0 评论 -
Java中的CAS操作
在Java中,锁在并发处理上占据一席之地,但是使用锁有一个很不好的地方,当一个线程未获取到锁时会被阻塞挂起,这会导致线程上下文的切换和重新调度开销。Java提供非阻塞的volatile关键字来解决共享变量的可见性问题,但是却不能解决读写一致性问题。CAS 是compareAndSwap的缩写,是JDK提供的非阻塞原子性操作,他通过硬件保证比较-更新的原子性。JDK中的Unsefe类提供了一系列的compareAndSwap*方法。 Unsafe类中的重要方法//返回指定的变量在所属类中的内存偏移地原创 2020-07-09 16:19:12 · 326 阅读 · 0 评论 -
aop在项目中的应用
最近因为公司业务的原因,需要对用户登录,用户注销登录、用户创建、应用创建、应用编辑、应用删除、应用打开等等地方加入日志,用于记录活动轨迹。最简单的实现方式,在所有的需要日志的接口中加入写日志的代码。日志需要包括:什么模块,干了什么,入参是什么,成功与否,如果失败,失败原因是什么。考虑到上面这些要素,对应不同模块的接口,代码实现起来比较繁琐,而且失败原因,如果是非预期的运行时异常,很难记录下来。下面用一种比较优雅的方式,实现业务需求。主要用到的技术:AOPstep1: 自定义注解/** * @Auth原创 2020-07-08 15:46:43 · 1664 阅读 · 0 评论 -
time zone
mysql global time zone = UTC前端调用java程序入参如下:{ "dateTime":"2020-07-01 9:07:04", "timeStamp":"2020-07-01 9:07:04"}url: jdbc:mysql://122.51.245.236:3306/z?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false原创 2020-07-02 10:58:58 · 351 阅读 · 0 评论 -
关于时区
这里写自定义目录标题关于时区相关代码关于时区最近项目中出现了一个因为时区差异导致的bug.两个微服务系统的时区不同导致时间类型的字段值异常。B服务通过restAPI调用A服务,在B服务中观察接口返回值(String),发现时间正常,但是通过Gson反序列化转成目标对象,发现时间戳不正常。比A中的时间戳要大。经过各种排查,最终找到问题根源。Google的工具类Gson是和时区有绑定的,默认使用当...原创 2020-04-29 16:38:01 · 619 阅读 · 0 评论 -
FileUtils
FileUtils封装拷贝public static void copy(InputStream is,OutputStream os) { try { //3、操作 (分段读取) byte[] flush = new byte[1024]; //缓冲容器 int len = -1; //接收长度 while((len=is.read(flush...原创 2019-04-14 20:27:53 · 120 阅读 · 0 评论 -
装饰器设计模式
装饰器设计模式模块一般构成 抽象组件:需要装饰的抽象对象(接口或抽象父类) 具体组件:需要装饰的对象 抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法 具体装饰类:被装饰的对象抽象组件interface Drink{ double cost(); //费用 String info(); //说明}具体组件class Coffee implemen...原创 2019-04-14 21:21:28 · 118 阅读 · 0 评论 -
Java8中Map与FlatMap的理解
map map比较简单,可以抽取列表元素的某个属性形成新的列表,但是无法对更深层的属性做提取map能够直接操作list中的每个对象 代码示例:List<Integer> integers = new ArrayList<>();//添加数据略integers.stream.map(i -> i + 1).foreach(System.out:...原创 2019-04-18 11:01:49 · 4466 阅读 · 0 评论 -
redis
什么是redis?Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。redis的三个特点。 Redis支持数据的持久化,可以将内存中的数据保...原创 2019-04-19 02:55:28 · 168 阅读 · 0 评论 -
微服务总结篇(一)
什么是微服务?微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事。从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。微服务的优缺点优点:每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求开发简单、开发效率提高,一个服务可能就是专一的...原创 2019-08-10 14:07:27 · 136 阅读 · 0 评论 -
微服务总结篇(二)
Eureka是什么 Eureka是Netflix的核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。遵循的AP原则、Eureka交互过程Eure...原创 2019-08-10 21:24:54 · 90 阅读 · 0 评论 -
微服务总结篇(三)
什么是EurekaServer自我保护模式?默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当...原创 2019-08-10 23:17:40 · 154 阅读 · 0 评论 -
微服务总结篇(四)
Ribbon是什么?Ribbon基于Netflix Ribbon实现的一套 客户端 负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon...原创 2019-08-11 01:20:01 · 109 阅读 · 0 评论 -
微服务总结篇(五)
Feign是什么?Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。如何使用Feign?首先在生...原创 2019-08-11 13:14:11 · 94 阅读 · 0 评论 -
微服务总结篇(六)
服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服...原创 2019-08-11 15:30:12 · 261 阅读 · 0 评论 -
微服务总结篇(七)
Zuul是什么?Zuul包含了对请求的路由和过滤两个最主要的功能: 路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础, 过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul...原创 2019-08-11 16:26:33 · 120 阅读 · 0 评论