
java
1024-iot-SaltIce
熟悉Go与Java语言,目前主要使用golang,喜欢对微服务系统开发与设计,以及云原生的学习,和中间件的开发。
展开
-
怎样学好Java反射?
以下为我平时的学习记录,有不对的地方,一定要指出哦。一、开场白反射是一个非常重要的知识点,在学习Spring、SpringBoot框架时,Bean的初始化,切面编程,破坏单例模式时,获取标注的注解时等等,我们都会用到反射。在现在面试造火箭,工作拧螺丝的招聘场景中,反射是一个非常热点的话题,当我们看了很多的开源框架源码时,就会经常发现里面有用到反射的地方。今天主要聊一下反射的相关概念、应用以及反射的性能!二、反射是啥?我们平时创建一个Java对象的时候,最最最常用的应该就是new 对象()了,这.原创 2020-10-13 13:29:23 · 272 阅读 · 2 评论 -
细节决定成败(二)
细节决定成败(二)怎么在不使用“+”的情况下,对两个数进行相加public int plus(int a,int b){ //两个临时变量 int aTemp = 0,bTemp = 0; while(b!=0){ aTemp = a ^ b; btemp = (a & b) << 1; a = aTemp; b = bTemp; } return a;}那如何在不创建临时原创 2020-10-10 09:46:42 · 257 阅读 · 0 评论 -
来一套通用分布式幂等组件不咯!
通用分布式幂等组件之前一篇文章中提到了幂等性的一些解决办法,但是基本上是单机上的,今天我们来弄一个支持分布式的通用幂等性组件【以下有不对的地方,一定要指出哦,共同成长。】一、背景分布式系统由众多微服务组成,微服务之间必然存在大量的网络调用。比如一个服务间调用异常的例子,用户提交表单之后,请求到A服务,A服务落单之后,开始调用B服务,但是在A调用B的过程中,存在很多不确定性,例如B服务执行超时了,RPC直接返回A请求超时了,然后A返回给用户一些错误提示,但实际情况是B有可能执行是成功的,只是执行时间过原创 2020-10-08 22:03:13 · 1446 阅读 · 0 评论 -
为什么不建议在循环体中使用+进行字符串拼接?
为什么不建议在循环体中使用+进行字符串拼接?最近复习一下了阿里Java开发规范,并记录一下。我们首先来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率如何吧(jdk1.8)public class StringBuilderAndAdd { public static void main(String[] args) { long s1 = System.currentTimeMillis(); new StringBuilder原创 2020-09-27 18:30:38 · 520 阅读 · 0 评论 -
SpringCloud中Hystrix选择线程池进行隔离时导致的ThreadLocal数据丢失的解决方法参考
SpringCloud中Hystrix选择线程池进行隔离时导致的ThreadLocal数据丢失的解决方法当我们在SpringCloud中选择Hystrix来实现断路器,Zuul中默认是用信号量,而Hystrix默认是线程池来进行隔离的。当使用线程隔离时,会有一个很重要的问题需要注意:那就是在一些业务场景下,可能需要ThreadLocal里在线程里传递数据,当然,如果你使用信号量的话是没问题的(信号量,请求进来的时候,以及后续的处理都是通过一个线程,这个是没问题的)。当隔离模式选择了线程池时,H原创 2020-09-24 13:09:15 · 1839 阅读 · 0 评论 -
细节决定成败(一)
ScheduledThreadPool 执行周期性任务,假设某次出现了异常,周期任务还会继续吗?查看ScheduledExecutorService接口里的scheduleWithFixedDelay方法的jdk文档,有描述如下: If any execution of the task encounters an exception, subsequent executions are suppressed. 如果在任务的执行中遇到异常,后续执行被取消。 ScheduledThreadPoolExecu原创 2020-08-12 14:19:47 · 945 阅读 · 0 评论 -
idea快速部署项目到Docker-详细版
idea快速部署项目到Docker首先确保虚拟机上安装docker了1.修改docker的配置文件2.重新加载配置文件3.idea中的配置1.项目pom文件添加2.安装docker插件3.添加Dockerfile5.项目打包6.配置idea docker运行效果图4.中途容易出现的问题:这里是在虚拟机中的部署。首先确保虚拟机上安装docker了1.修改docker的配置文件找到docker.service文件并编辑:在ExecStart后面添加 -H tcp://0.0.0.0:2375原创 2020-07-22 14:44:39 · 8392 阅读 · 2 评论 -
回首掏-JVM垃圾收集器
回首掏-JVM垃圾收集器本文将对下面几种GC回收器进行讲解,前面几个会简单的讲一下,后面两个会重点说的。SerialSerial OldParNewParallel ScavengeParallel OldCMSG1…首先,我们来了解一下这几种收集器的原理、优缺点和相应的解决方法1、SerialSerial收集器是发展最久的垃圾回收器,Serial单词本身的意思是“串行”。是一个单线程的收集器作用于新生代采用复制算法在进行垃圾回收的时候会产生STW主要适用于单原创 2020-06-15 17:20:32 · 1015 阅读 · 0 评论 -
Spring事务失效的各种情况
Spring事务失效的各种情况Spring 提供了两种事务管理方式:声明式事务管理编程式事务管理对不同的持久层访问技术,编程式事务提供一致的事务编程风格,通过模板化的操作一致性地管理事务;而声明式事务基于 Spring AOP 实现,却并不需要程序开发者成为 AOP 专家,亦可轻易使用 Spring 的声明式事务管理。一、编程式事务管理控制事务的失效场景:我们需要在代码中显式调用 begin()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。简单地说原创 2020-06-10 22:48:29 · 1350 阅读 · 0 评论 -
学习网站强大的收纳方法
你还在为找不到之前访问的学习网址而烦恼吗?接下来,看一个app,将你所有的学习网站统统放到一个app里面,再也不用担心妈妈找不到我的学习网站啦。下面是我自己制作的一个,把我自己的收藏网站放到里面,方便在坐车、排队、等人的时候掏出洛基亚学习学习啦。看官要是不会使用该软件,小弟可免费帮你制作直接私信给我即可啦!需求:各位看官可以免费发一点你们收藏的学习网站给我不,就发在评论区就行啦!小弟主要是需要JAVA、Go、MySQL、Redis、Netty、SpringBoot、SpringCloud、大数据原创 2020-06-03 17:54:44 · 365 阅读 · 1 评论 -
基于SpringBoot的注解式请求合并--完善篇1
基于SpringBoot的注解式请求合并–完善篇1基于上一篇基于SpringBoot的注解式请求合并的局限性太大。虽然说是暂时要达到的效果,但是不可能满足于此。修改后的请求合并注解就添加了一个参数@Documented@Retention(RetentionPolicy.RUNTIME)@Target(value = ElementType.METHOD)public @interface PullRequests { /** * 批量请求时间 * @return原创 2020-05-21 10:55:16 · 1688 阅读 · 1 评论 -
基于SpringBoot的注解式请求合并
基于SpringBoot的注解式请求合并某一天突然想到之前写过一个请求合并的代码,但是代码嵌入太强,就想自己写一个请求合并的注解,但是好像网上的相关代码较少,就去找到了Hystrix的请求合并相关资料,但是这代码可不是我所能看懂的。真是太难懂了,抓绕。以下注解写的不是很全面,不是一个万能的,只能针对某一些类型的请求合并,并且是在spring boot和mybatis-plus基础上写的,要改为其它的也比较简单。之后会慢慢学习完善的。如果各位看官有啥好滴思路,尽情到评论区发表看法啦,小弟再此谢谢啦。原创 2020-05-20 11:17:42 · 2064 阅读 · 0 评论 -
实现接口幂等性的几种参考方案
实现接口幂等性的几种参考方案下面的内容要是有不对的地方,麻烦私信我改掉哦。谢谢各位看官一、单机幂等性通过数据库索引字段的唯一性约束数据库索引字段可设置唯一性约束,在插入数据的时候,如果索引字段重复,会返回23000 错误码,在web开发时,一般会报异常的,可统一拦截处理,返回请勿重复提交的友好响应。下面多说一点哈比如说普通的插入数据 员工表里有主键 员工编号员工编号就是唯一的...原创 2020-05-03 16:26:17 · 1453 阅读 · 0 评论 -
Netty使用常见错误
Netty使用常见错误一、多个handler的执行顺序通过***V字形看*** :下面的是响应的接收过程,即OrderFrameDecoder()->OrderProtocolDecoder()->OrderServerProcessHandler()响应的发送即:OrderServerProcessHandler()->OrderProtocolEncoder()-&g...原创 2020-03-21 18:53:40 · 2788 阅读 · 0 评论 -
【超参数寻优】量子遗传算法(QGA) 超参数寻优的java实现
【超参数寻优】量子遗传算法(QGA) 超参数寻优的java实现本文基于【超参数寻优】量子遗传算法(QGA) 超参数寻优的python实现这篇文章改写为Java代码实现,其中适应度计算本文简化了操作。后期想改写成解决TSP问题的量子遗传算法,如有推荐的文章或者代码,希望各位分享给我一下。嘻嘻如有错误,或者可以改进的地方希望各位读者指出,谢谢啦。package com.hust.hui.al...转载 2019-12-02 21:47:30 · 713 阅读 · 0 评论 -
idea快速复制一个模块
idea快速复制一个模块直接复制要复制的模块,粘贴到工程中模块所在地:如图复制一份roses-example-account模块到里面,改名为roses-example-ms并修改父pom.xml,在里面添加<module>roses-example-ms</module>这个时候可能会出现工程名称与模块名称不一致:如这种情况这里去修改为你自己的模块名...原创 2019-11-20 22:46:11 · 3038 阅读 · 0 评论 -
淘宝热门商品信息在JVM哪个内存区域?
淘宝热门商品信息在JVM哪个内存区域?游客:笔者你蠢吧,这么大数据量放jvm中?笔者:是是是,教训的是,虽然内存读取数据是快也不能这么任性滴, 一般都是放缓存中间件里,落地在数据库里。哈哈哈,搞笑的哈。有大佬可以讲讲吗,上面是我的思考。...原创 2019-11-17 17:15:06 · 1260 阅读 · 2 评论 -
java 8大happen-before原则
java 8大happen-before原则超全面详解单线程happen-before原则:在同一个线程中,书写在前面的操作happen-before后面的操作。锁的happen-before原则:同一个锁的unlock操作happen-before此锁的lock操作。volatile的happen-before原则:对一个volatile变量的写操作happen...原创 2019-11-17 17:07:36 · 252 阅读 · 0 评论 -
JVM自动内存管理,Minor GC与Full GC的触发机制
JVM自动内存管理,Minor GC与Full GC的触发机制1、java垃圾回收机制GC 就是Java垃圾回收机制。主流的JVM(HotSpot)采用的是分代收集算法。与c++不同的是,Java采用类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有的可以搜索得到的对象标记为存活对象。缺点:有可能不知不觉浪费了很多内存JVM花费大量时间来进行垃圾回收...转载 2019-11-17 16:50:41 · 729 阅读 · 0 评论 -
volatile关键字的如何保证内存可见性,为啥不保证原子性
volatile关键字的如何保证内存可见性首先,我们来一段程序演示一下/** * @program: mayun-quick_Netty * @description: volatile关键字的如何保证内存可见性 * @author: Mr.Liu * @create: 2019-11-17 12:56 **/public class volatileTest { pub...原创 2019-11-17 13:27:36 · 601 阅读 · 0 评论 -
java高级知识点[面试宝典]
java高级知识点[面试宝典]持续更新中…Java集合22题ArrayList 和 Vector 的区别。说说 ArrayList,Vector, LinkedList 的存储性能和特性。快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?hashmap 的数据结构。HashMap 的工作原理是什么?Hashmap 什么时候进行扩容呢?List、...原创 2019-11-14 16:46:46 · 217 阅读 · 0 评论 -
springboot 与 netty操作串口使用
springboot 与 netty操作串口使用1.pom添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &...原创 2019-11-14 16:33:47 · 3634 阅读 · 6 评论 -
java开发高级知识点,持续更新中...
高级知识点Park和Unpark的使用多线程中callable唤醒线程的方法Overload和Override的区别Overloaded的方法是否可以改变返回值的类型接口设计参考过滤器与网关的区别Park和Unpark的使用多线程中callable唤醒线程的方法Overload和Override的区别Overloaded的方法是否可以改变返回值的类型接口设计参考过滤器与网关的区别...原创 2019-11-14 15:55:36 · 216 阅读 · 0 评论 -
java串口获取单片机传来的图片
java串口获取单片机传来的图片package com.hunau.Port2;import gnu.io.*;import java.io.*;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.text.SimpleDateF...原创 2019-03-23 16:38:55 · 628 阅读 · 0 评论 -
javaTCP获取网线传来的图像数据
javaTCP获取网线传来的图像数据package com.hunau.TCP;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.IOException;import jav...原创 2019-03-23 16:35:46 · 540 阅读 · 0 评论 -
java知识易忽略点
java学习笔记:>>带符号右移。正数右移高位补0,负数右移高位补1。比如:4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。:>>>无符号右移。无论是正数还是负数,高位通通补0。对于正数而言,>>和>>>没区别。对于负数而言,-2 >>&g...原创 2019-03-25 15:07:27 · 258 阅读 · 0 评论