- 博客(181)
- 资源 (2)
- 收藏
- 关注
原创 spring使用@PostConstruct踩得坑
在另一个bean BizService中依赖AbstractClass,这样在BizService实例化时需要先实例化依赖的bean,进而触发AbstractClass的实例化,进而执行@PostConstruct注解的方法。本来好好地,但是在另外一个环境却发现程序启动时不执行@PostConstruct注解的init方法了,导致在使用INSTANCES获取实例时获取到的是null。而懒加载情况下,在程序启动时是不会执行@PostConstruct注解的方法的。经过尝试有两种方式可以解决这种问题。
2024-06-22 20:45:46 534 1
原创 超好用的pdf编辑+pdf转word工具 – Adobe Acrobat Pro DC下载
Adobe Acrobat Pro DC 是一款由 Adobe 官方推出的 PDF 编辑和阅读软件,是目前互联网上最专业最优秀的桌面 pdf 解决方案,它将全球最佳的 PDF 解决方案提升到新的高度,配有直观触控式界面,通过开发强大的新功能,使用户能在任何地方完成工作。Adobe Acrobat DC 最大亮点在于可将纸质图片、文字迅速转化成 PDF 或文档格式,比如人们通过手机拍照,可让纸质版文字转化成电子版,用户可直接对文档进行修改。Adobe Acrobat DC 是一款 PDF 的处理工具。
2023-02-17 16:42:18 2223 2
原创 Springboot+Rabbitmq不能自动创建交换机和队列的问题
rabbitmq、spring+rabbitmq、springboot+rabbitmq、rabbitmq实现延时队列。原因是没指定数据源,springboot不知道该连接哪个数据源。开发中遇到:在不止一个rabbitmq数据源时。
2022-12-12 18:32:32 5203 1
原创 Mysql使用视图加速查询
把表的一个子集进行排序并创建视图,有时能加速查询。它有助于避免多次排序操作,而 且在其他方面还能简化优化器的工作。视图中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘 I/O,所以查询工作量可以得到大幅减少。
2022-10-31 18:47:43 2250
原创 六种Web负载均衡原理与实现
开头先理解一下所谓的“均衡”不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。
2022-10-19 17:07:55 1468
原创 自己实现RPC框架的一种思路
如果使用 netty 的话,一般会用 channel.writeAndFlush()方法来发送消息二进制串,这个方法调用后对于整个远程调用(从发出请求到接收到结果)来说是一个异步的,即对于当。前线程来说,将请求发送出来后,线程就可以往后执行了,至于服务端的结果,是服务端处理完成后,再以消息的形式发送给客户端的。目前互联网公司广泛使用 Protobuf、Thrift、Avro 等成熟的序列化解决方案来搭建 RPC 框架,这些都是久经考验的解决方案。JAVA 一般使用动态代理方式实现远程调用。
2022-10-19 11:30:50 178
原创 TCP粘包/拆包概述
1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。
2022-10-17 18:49:54 969
原创 Zookeeper投票机制和工作原理
每个 sever 首先给自己投票,然后用自己的选票和其他 sever 选票对比,权重大的胜出,使用权重较大的更新自身选票箱。
2022-10-14 18:41:59 283
原创 Linux top命令详解
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。前五行是当前系统情况整体的统计信息区。
2022-10-09 14:42:23 601
原创 Mysql字符集排序规则不一致造成的关联查询错误-Illegal mix of collations
原因就是不同字符集排序规则不能进行join查询。
2022-09-26 10:54:43 2147
原创 https简介
SSL(Secure Socket Layer,安全套接层)协议是WEB浏览器和WEB服务器之间安全交换信息的协议。TLS:(Transport Layer Security,传输层安全协议)。是SSL协议的升级版本。一般说SSL和TLS可以认为是一个东西。
2022-09-17 17:18:31 676
原创 spring-boot-starter-parent 有什么用
spring-boot-starter-parent 有什么用;开启Spring boot特性有哪些方式;运行Spring boot有哪几种方式
2022-08-19 17:08:00 3145 1
原创 springboot两种配置文件bootstrap.properties和application.properties的区别
Springboot推荐使用JavaConfig而非XML配置,但是Sprintboot中也可以使用XML配置,通过注解可以引入一个XML配置。
2022-08-19 16:06:51 2595
原创 Spring事务实现方式详解
采用TransactionTemplate和采用其他Spring模板,如JdbcTempalte和HibernateTemplate是一样的方法。它使用回调方法,把应用程序从处理取得和释放资源中解脱出来。如同其他模板,TransactionTemplate是线程安全的。实例代码如下:注: 使用TransactionCallback()可以返回一个值。如果使用TransactionCallbackWithoutResult则没有返回值。Spring事务管理器的接口是,通过这个接口,Spring为各个平台如J
2022-08-17 11:29:46 3703
原创 Mysql join大表优化案例
Mysql join查询的相关原理,实现,由此推出的优化策略;join大表后进行groupby操作慢sql通过临时表+join进行优化
2022-07-14 17:31:26 4781
原创 ThreadPoolExecutor创建线程池启动项目报错问题
ThreadPoolExecutor创建线程池启动项目报IllegalArgumentException问题分析解决
2022-07-13 17:30:00 1511
原创 java内部类的优点和使用场景
内部类的优点我们为什么要使用内部类呢?因为它有以下优点:一个内部类对象可以访问创建它的外部类对象的内容,包括私有数据!内部类不为同一包的其他类所见,具有很好的封装性;内部类有效实现了“多重继承”,优化 java 单继承的缺陷。匿名内部类可以很方便的定义回调。内部类有哪些应用场景一些多算法场合解决一些非面向对象的语句块。适当使用内部类,使得代码更加灵活和富有扩展性。当某个类除了它的外部类,不再被其他的类使用时。...
2022-02-23 17:48:05 2051
原创 mysql联合主键的坑
坑一 字符类型区分大小问题如果联合主键报类似下面错误:MySQLIntegrityConstraintViolationException: Duplicate entry '186699-1-malu8070 ' for key 'PRIMARY'可能是有两条大小写不一致的数据。坑二 字符串前后空格问题注意186699-1-malu8070 和186699-1-malu8070(后面有个空格),在插入时mysql认为是一条数据,也会报Duplicate entry '186699-1-malu
2022-01-07 19:09:31 2476
原创 spring bean生命周期常用方法的执行顺序
一、创建构造方法BeanPostProcessor.postProcessBeforeInitialization()@PostConstructInitializingBean.afterPropertiesSet()init-methodBeanPostProcessor.postProcessAfterInitialization()二、销毁
2021-10-29 20:58:40 491
原创 mysql for update spring下生效案例实测
事务:spring切面配置的事务或者注解事务(@Transactional)方法1:通过id更新(行锁),以下称updateById;方法2:通过id查询(for update),以下称getByIdForUpdate用例1:updateById在事务中,getByIdForUpdate不在事务中操作:先执行updateById(阻塞1分钟后事务才提交);马上执行getByIdForUpdate。结果:getByIdForUpdate阻塞,需要等1分钟后才会执行完(for update起作用)用
2021-09-02 18:11:06 775
原创 java 将网络文件下载并保存
方式一、java ioString dialAudioUrl = "http://172.16.20.220:80/20210506/f2a2c3be01194a63953d4b42d2588465.wav";String saveFile = "/data/upload/audio/f2a2c3be01194a63953d4b42d2588465.wav";URL url = new URL(dialAudioUrl);BufferedInputStream bis = new BufferedI
2021-06-29 18:10:50 444
原创 一句话理解23种设计模式
一、创建型简单工厂模式(非23种设计模式)一个工厂类完成每种产品的生产1、工厂(方法)模式具体的工厂子类负责每一种产品的生产2、抽象工厂模式多个工厂模式的再组合二、结构型1、适配器模式原有接口A和B,现要求通过A能访问到B,就需要一个中间层C适配2、装饰者模式在保证访问原有接口A方式不变的情况下,对接口A进行功能扩展三、行为型...
2021-03-26 11:47:13 162
原创 spring多数据源动态切换采用实现AbstractRoutingDataSource方案的实现与注意点
一、实现1、配置多数据源切换及事务管理器(dataSource和marsDataSource两个数据源配置略)@Configurationpublic class MultipleDataSource extends AbstractRoutingDataSource { private static final Logger logger = LoggerFactory.getLogger(MultipleDataSource.class); @Override prot
2021-03-25 18:52:58 344
原创 mybatis入参运算
mybatis想要实现入参运算,有以下两种方式1、${}如:select * from table1 limit ${start}+1,#{pageSize}2、bind如:<bind name="start" value="start+1"/>select * from table1 limit #{start},#{pageSize}注意:#{}不能运算,因为#{}是预编译...
2021-03-04 18:55:36 2023 2
原创 mongodb语法实例
1、最简单查询input_chance_record_optimization.find({"chanceId":"16288754"})相当于select * from input_chance_record_optimization where chanceId="16288754"2、范围查询db.getCollection('ChanceTurnRound').find({"userId":11310, "isDistribution":4,"recordTime":{$gte:"20
2021-01-12 11:32:38 311
原创 阿里代码规约(泰山版)- 索引规约
【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。【强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引。说明:即使双表 join 也要注意表索引、SQL 性能。【强制】在 varchar 字段上建立索引时,必须指定索引长度.
2020-12-29 18:22:10 852
原创 TODO 和 FIXME 的区别与使用场景
1) 待办事宜(TODO):(标记人,标记时间,[预计处理时间])表示需要实现,但目前还未实现的功能。这实际上是一个 Javadoc 的标签,目前的 Javadoc 还没有实现,但已经被广泛使用。只能应用于类,接口和方法(因为它是一个 Javadoc 标签)。2) 错误,不能工作(FIXME):(标记人,标记时间,[预计处理时间])在注释中用 FIXME 标记某代码是错误的,而且不能工作,需要及时纠正的情况。...
2020-12-28 18:47:05 4988
原创 springmvc 接收和返回Date/LocalDate类型数据怎么处理
接收Date/LocalDate类型数据@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate revisitDate;返回Date/LocalDate类型数据@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")private LocalDate revisitDate;
2020-12-23 11:09:14 811
原创 i++ 和 ++i 一句话理解
i++ 和 ++i 的区别就是:先加还是后加 ,++ 在前面就是先加,++ 在后面就是后加,即:i++ 后加,++i 先加所以int i = 0;int num = i++; // 后加,等于0int i = 0;int num = ++i; // 先加,等于1
2020-10-21 11:27:18 201
ping命令,抓包文件,可用wireshark等抓包工具解析
2022-11-10
video-js&flash;.zip
2019-09-12
video-js-rtmp.zip
2019-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人