- 博客(100)
- 问答 (1)
- 收藏
- 关注
原创 Nacos原理梳理心跳机制
客户端服务启动的时候,会发送自己的心跳信息 @Override public void registerInstance(String serviceName, String groupName, Instance instance) throws NacosException { String groupedServiceName = NamingUtils.getGroupedName(serviceName, groupName); if (in..
2021-03-19 13:09:46 1854 1
原创 Nacos原理梳理服务注册发现
NACOS版本:1.4.2NACOS的核心功能点: 1.服务注册 2.服务发现 3.服务同步 4.心跳机制 5.服务健康检查 6.配置自动刷新服务注册:客户端服务向server注册的一个过程对于一个springboot项目来说,自动化配置就找其spring.factories文件里内容,很明显NacosServiceRegistryAutoConfiguration这个类是注册的核心里面有三个bean对象,凭名字的感觉找NacosAutoServiceRegistration...
2021-03-18 15:43:52 267
原创 Nacos配置中心使用注意点
注意点:1.对于配置中心的配置只能写在bootstrap.yml或bootstrap.properites中,写在application.yml中无效2.使用bootstrap.yml低版本会一直刷日志,加以下日志或者用bootstrap.propertieslogging: level: com.alibaba.nacos.client.config.*: WARN3. dataId = ${prefix}-${spring.profiles.active}.${file-extensio
2021-03-17 15:28:33 1028
原创 代码的坏味道-封装思想
常见的代码:当你必须得先了解一个类的细节,才能写出代码时,这只能说明一件事,这个封装是失败的//过长的消息链String name = book.getAuthor().getName();//隐藏委托关系,将调用封装起来class Book { ... public String getAuthorName() { return this.author.getName(); } ...}String name = book.getAuthorName();
2021-03-16 22:46:41 120
原创 代码的坏味道-长参数列表
//final是个好习惯public void createBook(final String title, final String introduction, final URL coverUrl, final BookType type, final BookChannel channel, .
2021-03-16 22:22:29 120
原创 代码的坏味道-命名
命名:好的命名要体现出这段代码在做的事情,而无需展开代码了解其中的细节,这是最低的要求。再进一步,好的命名要准确地体现意图,而不是实现细节。更高的要求是,用业务语言写代码。问题1.不精准的命名: 业务中userId可能是审核人的ID的含义,但是别人可能一眼看不出来,需要去了解业务才知道含义,更好的命名是 reviewerUserId直接让人知道在这个业务情景下的含义//这个函数的意图是,确认章节内容审核通过。//这里有一个问题,chapterId 是审核章节的 ID,这个没问题,但 user
2021-03-16 22:09:01 109
原创 代码重构之函数式编程
近期接手的项目发现controller中的代码结构都是一样的,但是重复性代码太多。如下所示: //产生实例对象 private ABusiness aService = new ABusiness(); private BBusiness bService = new BBusiness(); private CBusiness cService = new CBusiness(); @PostMapping("/A") public void doA
2021-03-16 13:21:08 136
原创 CompletableFuture使用
首先,查看该类的接口结构1.初始化(是否有返回值,是否要指定线程池产生4种方法)CompletableFuture.runAsync(Runnable runnable);CompletableFuture.runAsync(Runnable runnable, Executor executor); CompletableFuture.supplyAsync(Supplier<U> supplier);CompletableFuture.supplyAsync(Suppl
2021-03-13 16:48:25 250
原创 Dubbo异步转同步思想引用
public class DubboInvoker{ Result doInvoke(Invocation inv){ // 源码中108行 return currentClient .request(inv, timeout) .get(); }} //DefaultFuture类 // 创建锁与条件变量 private final Lock lock = new ReentrantLock(); private..
2021-03-12 22:23:07 230 2
原创 阿里云服务器被挖矿?kdevtmpfsi 进程CPU100%
收到阿里云警告服务器中蠕虫病毒,进行top大致是这样的,kdevtmpfsi 的CPU占满,ps -aux | grep kinsingps -aux | grep kdevtmpfsi可以找到对应的PIDkill -9 PID 2个都得杀find / -name kdevtmpfsifind / -name kinsing再rm 掉这样文件。。。。。。。。。 然而事情并没有这么简单。。过了会它又恢复了。。然后就删了恢复删了恢复。。。最后发现Docker镜..
2020-05-28 21:58:43 498
原创 Feign调用请求get请求变POST
@RequestMapping(value=''/getInfo',method=RequestMethod.GET)Rest doGetInfo(@RequestParms("params")Map<String,Object> params)原因:@RequestParms注解没加 会默认调用POST请求============产生reading 4...
2020-05-06 22:01:31 1152
原创 记Mysql类型引起的BUG
今天在项目里发现了个好玩的BUG,来记录下。首先:表数据是这样的(项目里的表就不展示了,随意弄个临时表)由于a的默认值为空,同事就写了这样的sqlselect * from t1 where a =0和这样的sqlselect * from t1 where a>0-------------------------------------------------...
2020-04-30 21:54:58 216
原创 多线程累加lambda几种方法(极客时间Java业务开发常见错误100例)
package com.sixi.erp.coreservice.annotation;import com.google.common.collect.Lists;import java.util.ArrayList;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;imp...
2020-04-20 17:42:59 991
原创 nginx配置登录认证
在自己的阿里云上部署的ELK,避免9100的head插件被随意访问,需要过滤一些IP地址实现:x-pack (7.3ES版本后免费)或者通过nginx来限制:nginx的实现配置:server { listen 80; server_name www.xxx.com; auth_basic "登录认证"; auth_basic_user_file /us...
2019-11-21 16:33:40 248
原创 @async的坑以及简单案例
在一个类中调用自己的方法,使用Async是由于AOP的规则,会导致异步失效(static也是失败的)正确姿势:将异步方法抽至另一个类中,将其注入到使用类直接掉用即可。在配置自定义的线程池package com.demo.config;import lombok.extern.slf4j.Slf4j;import org.springframework.ao...
2019-11-08 23:48:20 1456
原创 记java8和Map.merge的使用
*compute:根据key做匹配,key,value为参数,匹配到Node做value替换,匹配不到新增node。apply的返回值为null则删除该节点。 * merge:oldValue,newValue作为为参数,其它功能于compute类似 * computeIfAbsent:原来的值存在且不为null,不修...
2019-10-15 17:49:33 435
原创 springboot2.0重写RedisCacheMange自定义设置过期时间
@Override@Cacheable(cacheNames = "cache#45", key = "#key")public String test(String key) { System.out.println(key); return "12345";}通过cacheNames所传递的值进行处理来设置过期时间,如:cache#45 cache代表原来的前缀,...
2019-09-30 17:01:37 1802 2
如何设计一个秒杀系统 (极客时间)
高并发系统的几大方向1.请求数据尽量少,从而减少cpu消耗2.访问路径尽量短,减少节点消耗3.强依赖尽量少,减少加载时间4.不要有单点,要有备份5.减少额外请求,减少加载时间架构升级的逻辑要具体问题具体分析的例如秒杀的场景来说,不同QPS量级下瓶颈也会不一样,10w级别可能瓶颈就在数据读取上,通过增加缓存一般就能解决,如果要到100w那么,可能服务端的网络可能都是瓶颈,所以要把大部...
2019-09-26 14:56:44 1287
原创 mysql自定义排序
实现按 2,1,3排序:SELECT * FROM user where id in (1,2,3) ORDER BY locate(id,'2,1,3') ;SELECT * FROM user ORDER BY field(id,2,1,3) descSELECT * FROM user where id in (1,2,3) ORDER BY INSTR('2,1,3',...
2019-09-19 17:02:51 140
原创 动态定时任务的简单实现
1.配置类@Configurationpublic class ThreadPoolTaskSchedulerConf { @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler() { return new ThreadPoolTaskScheduler(); }}2.具体逻辑类...
2019-08-16 17:22:11 639
原创 mysql常用时间函数
昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 17天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)近30天SELECT * FROM 表名 where DATE_SUB(CURDATE(...
2019-08-16 14:59:34 216
原创 根据对象某个属性进行过滤
public class Test { public static void main(String[] args) { Book one = Book.builder().id(1).name("one").build(); Book two = Book.builder().id(1).name("two").build(); ...
2019-08-14 17:13:24 1515
原创 springboot中Dubbo配置手册
http://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-service.html
2019-08-07 10:20:38 231
原创 配置中心访问方式
例如:/{application}/{profile}/[label]/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label}/{application}-{profile}.propertiesapplicati...
2019-08-06 14:34:52 380
原创 spring security oauth2.0授权服务器和资源服务器
使用@EnableAuthorizationServer并且继承AuthorizationServerConfigurerAdapter开启授权服务器AuthorizationServerSecurityConfigurer :用于配置授权服务的安全策略AuthenticationEntryPoint:这个用于ExceptionTranslationFilterAccessD...
2019-07-13 16:45:19 1140
原创 Linux-vim,awk
VIM:du -h 查看大小u 取消更改AWK:NF代表最后一个字段变量NR表示当前处理的是第几行内置函数的地址:https://www.gnu.org/software/gawk/manual/html_node/Built_002din.html#Built_002dinBEGIN{ 这里面放的是执行前的语句 }END {这里面放的是处理完所有...
2019-06-29 13:08:05 394
原创 Semaphore类相关总结
Semaphore的使用大致是对Synchronize的增强,控制执行的线程数public class SemaphoreDemo { public static void main(String[] args) throws InterruptedException { Semaphore semaphore = new Semaphore(1); ...
2019-06-27 14:51:50 240
原创 Unsafe类相关
1.JDK源码中对这个类进行了严格限制,不能通过常规new的方式去获取该类的实例,也不能通过Unsafe.getUnsafe 获得Unsafe对象实例;只能通过反射机制Field f = Unsafe.class.getDeclaredField("theUnsafe");f.setAccessible(true);Unsafe unsafe = (Unsafe) f.get(nul...
2019-06-27 11:12:27 127
原创 git提交代码出现Detached HEAD解决
1.git checkout -b tmp 切出临时分支2. add / commit 提交修改代码3.git checkout master 切回主分支4.git merge tmp 拉取临时分支代码5.git branch -d tmp 删除临时分支
2019-06-19 16:53:47 1446
原创 生成二维码接口
依赖<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version></dependency>@GetMapping(...
2019-06-17 16:05:41 847
原创 mysql 是否有交集的自定义函数
2个字符串:1,2,33,4,5判断是否有交集如上面交集3CREATE DEFINER=`root`@`%` FUNCTION `find_same_group`(`source` varchar(255),`target` varchar(255)) RETURNS int(11) READS SQL DATABEGIN #Routine body goes h...
2019-06-14 18:53:15 314
原创 springCloudStream---rabbitMq下配置属性的默认值
基于该版本的配置Common:consumer:继承了commonproducer:继承了common包路径:org.springframework.cloud.stream.binder.rabbit.properties
2019-06-13 09:58:44 1754
原创 springCloudStream整合rabbitMq的简易DEMO
spring: cloud: stream: bindings: my_output: #自定义的输出通道 destination: zzz #交换机名 content-type: application/json my_input: #自定义的输入通道 destina...
2019-06-12 17:27:57 979
原创 mysql实战45讲 笔记order by的工作
order by: 使用explain后再extra 中有using index 表示使用了覆盖索引using filesort表示的就是需要排序,Using temporary 需要使用临时表分配一个内存sort_buffer用于排序,并不是所有的order by都需要排序的,其原因是原来的数据都是无序的。order by id 或者order by的字段与where中的字...
2019-05-29 10:37:32 277
原创 mysql实战45讲 笔记索引2
crc32()或md5()1.索引字段使用函数或计算不走索引 如: id+5=92.索引字段类型转换不走索引 如:id="1234"3.隐式字符编码转换导致不走索引:2张表编码utf8_general_ci和utf8mb4_general_ci ,在连表时产生的问题...
2019-05-28 13:33:22 117
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人