自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 收藏
  • 关注

原创 java 启动 cannot find symbol

项目启动的时候使用lambook注解生成的get,set和构造方法报错cannot find symbol setXXX报错详情里:You aren't using a compiler supported by lombok, so lombok will not work and has been disabled在 IDEA ->Preference中找到compiler,然后在 Shared build process VM options中添加:-Djps.trac..

2021-10-28 18:00:18 1356

原创 最完美的单例模式

在工作中用最常用的选择是饿汉式和双重检查懒汉式。最完美的是Effective Java中推荐的enum方式1.恶汉式:类加载到内存中,就实例化一个单例,JVM保证线程安全,简单实用一个小缺点:无论用到与否,类加载时就完成实例化public class HungrySingleton { private static final HungrySingleton INSTANCE = new HungrySingleton(); private HungrySingle

2021-07-31 10:57:58 355 2

原创 Mybatis中<if status != null || if status != ‘ ‘>中status为0的问题

当入参status时为0时,status!=''返回的是false,所以此条件根本不起作用。因为底层使用的OgnlCache会认为‘ ’和0是相等的。

2021-07-14 19:33:50 558

原创 mac升级Big Sur后 homebrew无法使用

1、brew update-reset2、如果brew update-reset 更新完,还没有解决cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/git pull然后在brew update-reset 就可以了

2021-07-09 16:42:26 395

原创 JDK和Lombok版本兼容问题

@Getter@AllArgsConstructorpublic enum XXX { ADD("ADD"), UPDATE("UPDATE"), DELETE("DELETE"), ; private String operateType;}错误:java: constructor LanguageOperateTypeEnum in enum com.timevale.open.service.enums.LanguageOperateT.

2021-07-07 19:51:18 3306

原创 Mybatis自动生成主键

在代码中有两步操作,且是事务操作:1.保存数据库2.获取主键id关联到另一张表里。@Transactional(rollbackFor = Exception.class)public void save(){ Person person = new Person(); person.setName("test"); personDao.insert(per...

2020-04-10 11:40:43 529

原创 git 命令

1.git status 查看当前在哪个分支,如果当前有为提交的代码,会在下面标红显示对应的类2.git diff 查看修改的具体内容,会显示出具体修改了什么3.提交修改 首先 git add ,可以git add dao.java 只添加某个具体的文件, git add . 是添加所有的文件,然后git commit -m "修改信息" 提交修改4.git log查看提交记录 ...

2019-03-13 11:26:44 154

原创 由静态变量引发的问题

在程序中定义了public class Const { public static Map<String, String> MAP = new ConcurrentHashMap<>();}在一个程序中对map进行赋值public static void main(String[] args){ Const.MAP.put("N","N"); Sy...

2018-05-29 20:25:58 431

原创 Spring项目启动IDea JavaCompiler中没有1.8

新从git中拉下来的项目,运行是报错。项目中Java版本不一致,可以查看项目中的jdk配置 。1.File ->Project Structure->Project Settings ->Project 查看项目使用的JDK版本2.根据别人的文章需要改一下项目使用的JDK即可。File ->Project Structure->Project Settings -&g...

2018-05-11 14:18:33 11963 4

原创 java 参数final类型

今天看到别人写的接口中参数又很多都是final类型,final就是不可改变的意思,那么接口参数的类型为什么要设置为final呢,首先涉及到java的参数是值传递还是地址传递,基本类型例如int都是值传递,这个不用多说。那么参数在传递的时候是值传递还是地址传递,写了个接口测试一下。 Person person = new Person(); person.setAge(11); pe...

2018-05-10 19:21:06 1547

原创 RabbitMQ(二)

RabbitMQ(一)介绍了MQ的基本概念。(1)队列AMQP消息路由有三部分:交换器、队列和绑定。生产者把消息发布到交换器上,消息最终达到队列,并被消费者接收;绑定决定了消息如何从路由器到特定的队列。消费者从队列获取消息有两种方式:第一是通过AMQP的订阅命令,这样就会将信道设置为接收模式,直到取消队列的订阅为止。第二种是只想从队列中获得单条消息而不是持续订阅,可以通过get命令。(2)交换器当...

2018-04-27 19:15:55 187

转载 CompletableFuture

要说CompletableFuture,就要先知道Future接口。Future是Java5中添加的类,用来描述一个异步计算的结果。你可以轮询isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,但是这个get()方法会阻塞住调用线程,这种阻塞的方式显然和我们的异步编程的初衷相违背。你也可以使用cancel方法停止任务的执行。Java 5并发包主要聚焦于异步任务处理...

2018-04-27 18:21:02 228

原创 String.trim()源码解析

public String trim() { int len = value.length; int st = 0; char[] val = value; /* avoid getfield opcode */ while ((st < len) && (val[st] <= ' ')) { st++; ...

2018-04-27 11:05:55 902

原创 rabbitMq介绍(一)

RabbitMQ是一个消息中间件。consumer:消息的消费者producer:消息的生产者exchange:是生产者向里面放消息queue:消费者从里面拿消息。binds:exchange和queue的绑定关系。RabbitMQ可以看作一种投递服务,生产者生产消息后,发送给mq。那么消息是什么?包括两部分内容:有效载荷(payload)和标签(label),有效载荷就是你想要传输的数据,它可以...

2018-04-26 20:52:57 327

转载 @PostConstruct

@PostConstructpublic void init() { try { consumer.subscribe("queue_name", (body, meta) -> { //body中包含了上传到mq的数据 method(body); }); } catch (Excep...

2018-04-26 20:01:28 374

转载 JSON 书写格式

使用中,json有以下三种结构:对象:{"name":"Michael","age":24}数组:比如:[{"name":"Michael","age":24},{"name":"Tom","age":25}]值:{"name":"Michael", "birthday"

2018-04-26 19:40:31 938

原创 ImmutableMap

今天看代码发现很多地方都用到ImmutableMap。 ImmutableMap.of("id", record.getId(), "force",force)源码如下:public static <K, V> ImmutableMap<K, V> of(K k1, V v1, K k2, V v2) {return RegularImmutableMap.fromEntr...

2018-04-26 19:34:19 4196

原创 SpringBoot

现在很多项目都使用SpringBoot来开发,不需要在配置tomcat服务器,可以直接运行项目。在SpringBoot的项目中有一个Application.java的文件,是用于启动SpringBoot的。@EnableTransactionManagement@EnableScheduling@EnableAsync@SpringBootApplicationpublic class A...

2018-04-16 20:02:25 319

原创 @configuration @Component @Repository @Controller

@configuration注解标注在类上,相当于把该类作为Spring的xml配置文件中的<beans>,使用注解来代替Spring中的bean配置下面是@configuration定义:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interf...

2018-04-16 18:29:52 951

原创 @JSONField注解

@JSONField注解作用对象:1.字段2.Setter和Getter方法@JSONField(name = "bind_id") private String bindId;//这种定义的方法看到网上很多人说,发现bean 转json的时候并是"bind_id":xxx的形式,json转bean的时候也不会把"project_id":xx的内容设置到bindId的里面。作用在Getter和Se...

2018-04-16 18:01:07 849

转载 Spring中@Value注解

在项目中发现@value的用法有很多种@value注入的作用:通过@value将外部的值动态注入到Bean中。1、可以注入普通字符串2、注入操作系统属性3、注入表达式结果4、注入其他Bean属性 5、注入文件资源6、注入URL资源@value("nomalChacter")private String char;//注入普通字符@value("#{sytemProperties['os.name'...

2018-04-13 17:34:51 496

原创 Java注解大全

@RestControllerAdvice?@EnableAspectJAutoProxy 开启AOP,表示开启AOP代理自动配置,如果配@EnableAspectJAutoProxy表示使用cglib进行代理对象的生成;设置@EnableAspectJAutoProxy(exposeProxy=true)表示通过aop框架暴露该代理对象,aopContext能够访问.从@EnableAspect...

2018-04-13 17:06:52 2329

原创 Could not open windows registry node Software\JavaSoft\Prefs at root 0x80000002

今天遇到的 问题1:Could not open windows registry node Software\JavaSoft\Prefs at root 0x80000002新下载一个model项目,别的机器上都可以运行,我这里不行,报上面的错误。1、win+r 输入 regedit 找到下面的文件 HKEY_CURRENT_USER \Softwar\JavaSoft\Prefs,修改权限为...

2018-04-13 16:03:32 7574 2

原创 自己建的项目如何关联到gitlab

在你已经建好gitlab账号之后,在gitlab新建了一个工程,而你自己在本地写的代码怎么放到你的gitlab账号中呢1、初始化git config --global user.name "名字"git config --global user.email "邮箱地址"这两行命令是用来确定身份信息,在安装git的第一件事就是设置名字和邮箱地址,每次提交都是用的这些信息来确认。2、创建仓库git c...

2018-04-13 14:05:47 5192

原创 pom版本用原来的正式版本

在项目中,进行deploy时,会先把包deploy到本地,然后在上传到maven仓库,使用原来已使用的整数版本,在deploy本地时是成功的,但deploy到仓库就会失败

2017-04-24 16:21:25 437

原创 java中的与、或和与或操作

页面上是checkbox,多选会把所选的值用逗号分隔存到数据库中,这样如果其他接口调用判断所传进来的值是否符合checkbo选中的值,如果在CheckBox选中的值是1,2,那么数据库中存储的就是1,2,其他接口传进来一个值1,如果要判断传进来的值1时候在1,2中,那么mysql要用like,进行判断,此外,还有可能出现,如果数据库中存储的是1,2,11,这样判断的结果也是不准确的。  那么这

2017-03-30 11:50:33 30579 2

原创 新建一个基础的spring项目

1、新建一个maven项目,不需要选择spring2、把新加项目下面的src文件删除掉3、点击右键,新建一个module4、点击项目下的main会发现已经有java 和resource分类然后可以放到java上和resource点击右键make directory as5.在pom中引入所必须的依赖properties> spring.version>3.0.5

2017-03-06 20:20:54 367

原创 git提交文件大小写问题

git提交文件MenuCustomVo,现在需要把文件改为MenuCustomVO,但是git不区分文件大小写,认为两个文件名是一样的,所以修改为大写后提交仍然是小写的,方法:1.把MenuCustomVo 修改为MenuCustomBo,提交2.然后把MenuCustomBo再修改为MenuCustomVO,就成功了中间会merge,出现MenuCustomBO和MenuCust

2017-03-03 15:33:21 2058

转载 JAVA反序列化安全实例解析

什么是序列化序列化 (Serialization)是指将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。简单来说:序列化: 将数据结构或对象转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成数据结构

2016-11-04 15:20:10 980

转载 memcached与redis实现的对比

memcached和redis是将数据存储在内存中,按照key-value的方式查询,大幅度提高效率,所以一般它们都用作缓存服务器,缓存常用的数据,需要查询的时候,直接从它们获取,减少查询数据库的次数,提高查询效率。1、服务方式memcached和redis怎么提供服务呢?它们是独立的进程,需要的话,还可以让他们变成daemon进程,所以我们的用户进程要使用Memcached和redi

2016-10-31 18:44:07 350

原创 JVM优化技术

1、语言无关的经典优化技术之一:公共子表达式消除公共子表达式消除是一个普遍应用于各种编译器的经典优化技术,它的含义是:如果一个表达式E已经被计算过了,并且从先前的计算到现在E中所有变量的值都没有发生变化,那么E的这次出现就成为了公共子表达式,对于这种表达式,没有必要花时间再对它进行计算,只需要直接用前面计算过的表达式结果替代E就可以了,举个例子简单说明它的优化过程,假设有如下代码int

2016-10-28 17:54:27 682

原创 晚期(运行期)优化

1、概述java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”,为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just in Time Compiler JIT).即时编译器并不是虚拟机必需的部分,java虚拟机规范中并没有规定

2016-10-27 19:40:07 440

原创 网站加密算法

1、单向散列加密单项散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出进行计算从而获得输入信息。利用单向散列加密的这个特性,可以进行密码加密保存,即用户注册时输入的密码不能直接保存到数据库,而是对密码进行单项散列加密,将密文存入数据库,用户登录时,进行密码验证,同样计算得到输入密码的密文,并和数据库中的密文比较,如

2016-10-27 17:41:02 1271

原创 网站的可扩展架构

1、利用分布式消息队列降低系统耦合性(1)事件驱动架构事件驱动架构:通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作。消息队里利用发布-订阅模式工作,消息发送者发布消息,一个或者多个消息接收者订阅消息。a、分布式消息队列队列是一种先进先出的数据结构,分布式消息队列可以看作将这种数据结构部署到独立的服务器上,应用程序可以通过远程

2016-10-27 16:43:15 362

原创 网站架构的伸缩性

一般来说,网站的伸缩性设计可分为两类:一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能,后者是集群内的多台服务器部署相同的服务,提供相同的功能。1、不同功能进行物理分离实现伸缩2、单一功能通过集群规模实现伸缩具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性(1)应用服务器集群的伸缩性

2016-10-24 19:38:30 475

原创 tomcat catalina_home已设置,仍然he CATALINA_HOME environment variable is not defined correctly

在tomcat目录下启动startup.bat时,The CATALINA_HOME environment variable is not defined correctlyThis environment variable is needed to run this program很多说是CATALINA_HOME中设置多了“;”,在路径结束不应该有;,仔细检查了我的,发现并没有;

2016-10-24 16:01:30 6329

原创 TomCat类加载器结构

一个功能健全的类加载器,都要解决以下几个问题:(1)部署在同一服务器上的两个web应用程序所使用的java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求一个类库在一个服务器中只有一份,服务器应当可以保证两个应用程序的类库可以相互独立使用。(2)部署在同一个服务器上的两个web应用程序所使用的java类库可以相互共享,这个需求也很常见

2016-10-21 16:23:25 2178

原创 基于栈的字节码解释执行引擎

虚拟机如何执行方法里面的字节码指令的呢?java虚拟机的执行引擎在执行java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码进行执行)两种执行。1、解释执行上图中下面的分支是传统编译原理中程序代码到目标机器代码的生成过程,而中间那条分支自然就是解释执行的过程。java语言中,javac编译器完成了程序代码经过词法分析、语法分析到抽象语法数、再遍历

2016-10-20 17:21:37 879

原创 mysql演化历程

1、单节点数据库2、一主一从数据库(1)Master/slave复制原理以及方式a、Master所有的数据更新会记录到日志binlog中,Master A把binlog日志传给slaveBb、B先把A的binlog日志放到称为relaylog中继日志的地方c、最后B通过relaylog日志中的内容对自己的binlog进行更新,复制数据这种机制可以保证A和B的数据一致

2016-10-20 09:42:30 367

原创 虚拟机执行引擎

执行引擎是java虚拟机最核心的组成部分之一。虚拟机是相对于“物理机”的概念,这两种机器都有代码执行能力,区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。在java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行

2016-10-18 19:14:00 620

空空如也

空空如也

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

TA关注的人

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