- 博客(151)
- 收藏
- 关注
原创 joda踩坑java.lang.IllegalArgumentException: Invalid format: “2024-04-11“ is malformed at “24-04-11“
这种默认格式会受到 Java 虚拟机的默认地区设置的影响。Java 的默认地区设置通常取决于操作系统的地区设置,或者可以在启动 Java 程序时通过设置 user.language 和 user.country 系统属性来指定。然而,如果你希望显式指定日期格式或确保不受本地化的影响,可以使用固定的格式化器,例如 DateTimeFormat.forPattern("yyyy-MM-dd")。Joda-Time 支持本地化,允许你根据用户的地区设置以及你的应用程序的需求来自动调整日期和时间的格式。
2024-04-14 19:57:11
884
1
原创 观察者模式
观察者设计模式(Observer Design Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象状态发生变化时,所有依赖它的观察者都会得到通知并更新。
2024-01-28 16:32:58
612
原创 适配器模式
在我们的应用程序中我们可能需要将两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。所谓适配器模式就是将一个类的接口,转换成客户期望的另一个接口。它可以让原本两个不兼容的接口能够无缝完成对接。作为中间件的适配器将目标类和适配者解耦,增加了类的透明性和可复用性。
2024-01-19 21:28:32
575
原创 Nacos删除配置
假如服务端删除一个配置信息,那客户端本地也同步删除一个;假如服务端所有的配置信息全部删除,那客户端本地的配置也全部删除吗?假如nacos服务端down了,客户端检查拿不到服务端的配置信息,是否也要把本地缓存配置删除?但是当nacos配置了app.check后,就按nacos配置的值来。去掉了nacos的配置,系统读取的仍然是之前nacos里配置的值。因为nacos有客户端本地缓存的机制,会将服务端配置的信息缓存在本地,当服务端信息有变更时,也会同步到本地进行变更。重启服务器后,才能同步这个删除的配置信息。
2024-01-05 17:26:37
715
原创 工厂方法模式
也就是定义⼀个抽象⼯⼚,其定义了产品的⽣产接⼝,但不负责具体的产品,将⽣产任务交给不同的派⽣类⼯⼚。这样不⽤通过指定类型来创建对象了。适⽤于⼯⼚类负责创建对象较少的情况,缺点是如果要增加新产品,就需要修改⼯⼚类的判断逻辑,违背开闭原则,且产品多的话会使⼯⼚类⽐较复杂。和简单⼯⼚模式中⼯⼚负责⽣产所有产品相⽐,⼯⼚⽅法模式将⽣成具体产品的任务分发给具体的产品⼯⼚。简单⼯⼚模式指由⼀个⼯⼚对象来创建实例,客户端不需要关注创建逻辑,只需提供传⼊⼯⼚的参数。
2023-12-31 18:27:08
596
原创 并发踩坑:list共享变量的addAll
list共享变量的addAll,并发修改异常提示:Caused by: org.apache.ibatis.exceptions.PersistenceException:### Error querying database. Cause: java.util.ConcurrentModificationException
2023-12-23 16:36:24
963
原创 idea2021.3版本的Maven不能下载包Could not transfer artifact from/to maven-default-http-blocker (http://0.0.0.
刚换了新mac笔记本,没安装最新的idea,安装的是2021.3版本的。结果项目里的Maven依赖包一直无法下载,提示错误信息:Could not transfer artifact pom:1.0 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [nexus]配置环境macOS 14、jdk11、idea2021.3、idea自带的Maven3.8.1。
2023-12-15 16:17:32
866
原创 Synchronized原理分析
monitor里面有一个计数器,从0开始的。如果一个线程第一次synchronized那里,获取到了myObject对象的monitor的锁,计数器加1,然后第二次synchronized那里,会再次获取myObject对象的monitor的锁,这个就是重入加锁了,然后计数器会再次加1,变成2。这个时候,其他的线程在第一次synchronized那里,会发现说myObject对象的monitor锁的计数器是大于0的,意味着被别人加锁了,然后此时线程就会进入block阻塞状态,什么都干不了,就是等着获取锁。
2023-12-01 15:57:33
130
1
原创 synchronized在代码中的用法
synchronized可以对两种对象加锁:实例对象和类对象。第1是修饰static方法,第2种是直接锁类的class对象;
2023-11-25 18:58:01
159
1
原创 redisson支持高并发的RBucket
RBucket桶可存储任意对象,可在高并发场景下进行唯一更新。示例:创建20个线程并发更新桶对象,只有一个执行了更新操作。及rbucket相关的接口文档。
2023-11-16 15:10:39
1194
原创 手写Demo体验volatile可见性的作用
在实际的系统运行过程中,如果多个线程,要共用一个变量,有一个线程专门负责修改这个变量;另外一个线程,专门负责读取这个变量的值。可能会产生一个问题:Thread1修改了变量flag的值,但是Thread0,没那么快能感知到flag的变更,可能Thread0用的还是之前的值。
2023-10-08 18:06:36
225
原创 dubbo服务请求超时
dubbo服务请求超时,Establishing SSL connection without server's identityverification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+requirements SSL connection must be established by default if explicit optionisn't set.
2023-03-19 10:58:04
818
1
原创 并发编程(一)内存模型
开始挖坑并发编程系列文章,那为什么要有并发编程,我们都知道是为了提高CPU的利用率:有的线程是CPU密集型,有的线程是IO密集型。在单核CPU的情况下,有时候为了提高IO密集型线程对CPU的利用率,采用多线程策略,让操作系统调度。如果是多核CPU,更要多个线程,利用每一个核。CPU的核数和线程个数的设置是有关系,既不要让CPU空余时间太多,又不要撑爆CPU,可以采用以下算法,也可以采用压测法,根据测试环境的数据去类比生产环境,进行评估。多线程场景中的并发问题包括可见性、原子性...
2021-06-27 00:00:46
252
2
原创 常见的算法排序
无论是开发还是架构,是java还是人工智能,算法都是基础。每种算法的关键点,与其他算法的区别联系,都要宏观理解掌握。计算机算法排序包括内排序(内存)和外排序(磁盘IO),下文主要针对内排序,对比分析。 不同的排序算法有着不同的时间开销和空间开销,比如常用的快速排序和插入排序,需要对序列中的数据进行比较,这样的统称为“基于比较的排序”,它的时间下限是不能超越 O(N...
2018-12-07 15:53:13
402
原创 三门问题
三门问题被大众熟知是源于美国的一档电视游戏节目,因主持人的名字,又叫蒙提霍尔问题。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会?如...
2018-11-17 11:03:52
2293
1
原创 学习金字塔
一、概念 第一种学习方式——“听讲”,也就是老师在上面说,学生在下面听,这种我们最熟悉最常用的方式,学习效果却是最低的,两周以后学习的内容只能留下5%。第二种,通过“阅读”方式学到的内容,可以保留10%。第三种,用“声音、图片”的方式学习,可以达到20%。第四种,是“示范”,采用这种学习方式,可以记住30%。第五种,“小组讨论”,可以记住50%的内容。第六种,...
2018-08-16 20:28:39
412
1
原创 浅谈同步异步、阻塞非阻塞
同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。同步和异步着重点在于多个任务的执行过程中,一个任务的执行是否会导致整个流程的暂时等待;而阻塞和非阻塞着重点在于发出一个请求操作时,如果进行操作的条件不满足是否会返会一个标志信息告知条件不满足。
2017-08-31 21:15:49
377
原创 Java IO与NIO
NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
2017-08-31 20:49:40
364
原创 GC算法与种类
Garbage Collection 垃圾收集。JVM的垃圾回收机制使开发者不必过多考虑内存的申请与释放,这样降低了软件开发的成本和语言的学习成本。GC算法包括:引用计数法、标记清除、标记压缩、复制算法。
2017-07-30 20:57:24
406
原创 SpringBoot 定时任务
定时任务的实现方式 (1)Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 (2)使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。 (3) Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quar
2017-06-10 19:41:10
420
1
原创 模板引擎 freemarker
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
2017-06-10 19:19:54
539
原创 SpringBoot + devtools热部署
devtools是为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。 更深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创
2017-06-10 19:08:37
650
1
原创 Spring Boot从原理到实战
Spring Boot是spring的升级版,但并不是对spring功能上的增强,而是提供了一种快速使用spring的方式:开箱即用,没有代码生成,也无需XML配置。
2017-06-10 18:59:21
18252
2
原创 spring quartz执行两次
描述:服务器部署了2个定时任务:签约、代扣。发现日志里的记录都是double;在本地开启定时任务,打印的日志正确,是一份; 定位:服务器部署的问题,造成double执行;服务器的tomcat配置server.xml文件,部分如下:<Host name="localhost" appBase="webapps" unpackWARs="true" auto
2017-03-24 12:37:44
689
1
原创 J2EE性能优化(二)数据库
1、保证SQL返回的数据不超出内存限度 需要保证进行查询时的条件不会失效,如下代码就有可能出现查询条件失效的情况:// 已经获取到 Connection;String sql=" SELECT FILED1, FIELD2 FROM SOME_TABLE WHERE NAME LIKE ?";PreparedStatement ps=conn.prepareStatement(s
2016-07-31 22:24:36
704
2
原创 J2EE性能优化(一)
用java进行开发,尤其是一些大型企业项目,性能调优的工作很重要。在设计应用程序的时候,应该始终把性能放在考虑范围内。一些应用程序设计中的不当做法,在小数据量,执行次数少的情况下,可能对性能造成的影响并不明显。但是在大数据量、大量重复执行的生产环境中,对性能却会造成明显的负面影响。(一)String操作 用StringBuffer.append来代替String+=累
2016-07-31 22:08:25
617
1
原创 从ActiveMQ原理到实例
在介绍activemq之前,先简单介绍JMS,它是J2EE的13个规范之一,提供的是消息中间件的规范。JMS包括以下基本构件:连接工厂,是客户用来创建连接的对象,ActiveMQ提供的是ActiveMQConnectionFactory;连接connection会话session,是发送和接收消息的上下文,用于创建消息生产者,消息消费者,相比rocketMQ会话session是提供事务
2016-07-14 16:12:46
31117
原创 安全算法(二)对称加密和非对称加密
与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法。典型的RSA非对称加密。 RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rives
2016-06-30 20:35:59
1339
1
原创 web攻击手段(二)CRSF
CRSF是跨站请求伪造:Cross site request forgery,是一种对网站的恶意利用。它和XSS跨站脚本攻击的不同是,XSS利用站点内的信任用户;CRSF则是通过伪装来自信任用户的请求,来利用受信任的网站。举例就是:攻击者盗用了你的身份,以你的名义向第三方信任网站发送恶意请求,如发邮件,发短信,转账交易等。
2016-06-30 20:08:39
1661
原创 安全算法(一)数字摘要
数字摘要,也叫消息摘要。它是一种单向的,不可逆的加密算法。发送方:采用单向hash函数对消息进行计算,得到摘要。发送消息和摘要。接收方:把接收的消息,按着同样的hash函数计算,新产生的摘要和发送来的原摘要进行对比。如果2个摘要不一致,说明消息不完整了。
2016-06-20 17:04:03
3772
3
原创 web攻击手段(一)XSS
XSS攻击,跨站脚本攻击Cross Site Scripting,为了不和样式表的CSS的缩写混淆,所以跨站脚本攻击缩写为XSS。 它是指攻击者在网页中嵌入恶意脚本程序,当用户打开网页时,恶意脚本就开始在用户客户端的浏览器上执行,以盗取客户端的cookie、用户名密码,下载执行病毒木马程序,甚至获取客户端admin权限。
2016-06-07 11:08:52
518
2
原创 互联网安全(一)摘要认证
经由HTTP协议进行通信的数据大多都是未经过加密的明文,包括请求参数、返回值、cookie、head等数据,因此,外界通过对通信的监听,便可以轻而易举地根据请求和响应双方的格式,伪造、修改、窃取信息。而且相对TCP来说,HTTP的通信更易于攻击。 所以,为了防止在通信的过程中,数据被中途拦截和修改;或者虚假的客户端冒充正常的客户端发起请求,非法获取数据;再或者是客户端与虚假的服务端进行通信,将个人信息泄露给恶意的攻击者,需要对请求和响应的参数及客户端的身份进行认证,以保住正确信息发送给了合法的接收者
2016-05-31 21:28:23
543
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人