- 博客(27)
- 收藏
- 关注
原创 kafka学习笔记 @by_TWJ
消息重复消费的问题可以通过多种方法解决,主要包括消费幂等性、消息去重、消息确认机制、消息重试机制、保证消息的顺序性以及将消息进行持久化存储。kafka消息事务
2024-06-03 14:02:44
1337
1
原创 redis 高可用及哨兵模式 @by_TWJ
图文的方式让我们读懂这几个算法 Raft算法 vs Paxos算法 , redis 哨兵模式,redis 高可用
2024-05-31 18:03:44
1273
原创 java本地锁与分布式锁-个人笔记 @by_TWJ
在 Java 6 及之前的版本中,synchronized 的锁升级过程是固定的,而在 Java 6 及之后的版本中,锁升级过程是根据当前锁的状态和竞争情况动态调整的。:当一个线程访问同步块并获取锁时,会在对象头中记录锁偏向的线程 ID,以后该线程再次进入同步块时,只需判断当前线程 ID 是否与对象头中记录的线程 ID 相同,如果相同,就可以直接进入同步块,无需进行额外的同步操作。在 Java 6 及之前的版本中,锁升级过程是固定的,即从偏向锁升级到轻量级锁,再升级到重量级锁。
2024-05-07 20:00:13
610
原创 个人对行为型设计模式的理解 @by_TWJ
责任链模式中介者模式命令模式策略模式解释器模式状态模式备忘录模式迭代器模式模板模式访问者模式观察者模式。
2024-04-30 21:47:58
993
原创 Netty 中的粘包和拆包 - @by_TWJ
Netty 中的粘包和拆包。解决办法,使用 LengthFieldBasedFrameDecoder、LineBasedFrameDecoder、FixedLengthFrameDecoder、DelimiterBasedFrameDecoder
2024-04-03 01:10:55
306
原创 springboot + spring security简单学习,目标是学习原理 @by_TWJ
springboot + spring security 类含义,类使用,认证原理分析。jwt示例
2024-03-31 20:02:10
1218
2
原创 session和jwt区别 @by_TWJ
基于session,用户信息存放在session里,在分布式下,是需要使用一个数据库(redis)存放共用的session信息的。,我觉得session会更优,因为我可以管理用户登录状态,我让他下线就下线。,我觉得jwt更优,这样jwt可以不用扩展搞redis,而且不用在服务端存放用户登录信息,减少了服务器使用内存,减少成本。jwt 存放在客户端本地,基于本地,但也可以存放在cookie等,可以自定义。基于jwt,因为用户信息都在jwtToken里,所以直接解析就能获取用户信息。jwt 有两个很关键的点,
2024-03-28 18:06:04
1663
原创 Netty使用例子 - @by_TWJ
Tomcat将以JNI(Java Native Interface)的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大提高Tomcat对静态文件的处理性能。实际上tomcat也有基于NIO的优化,并且还有个APR模型,那我们何必用Netty替代tomcat呢。Netty 是一个异步事件驱动的网络应用框架,可以使用自定义协议,或者用已有的Http协议等。我们了解了Netty,他的性能更强,那么我们是否可以替代tomcat呢?构建Netty例子的包。
2024-03-07 19:57:29
833
原创 spring相关文档
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。它结合了轻量级的容器和依赖注入功能,提供了一种使用 POJO 进行容器配置和面向切面的编程的简单方法,以及一组用于AOP的模块。Spring Boot设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
2024-03-05 14:43:45
368
原创 Netty简单学习 - @by_TWJ
服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor模式也叫Dispatcher模式,即I/O多了复用统一监听事件,收到事件后分发(Dispatch给某进程),是编写高性能网络服务器的必备技术之一。这里并不是说AIO就是最好的,因为Netty在NIO的基础上做了些改进,例如Netty主从线程模型,使用subReader多线程去接收socket缓冲区数据,而且Netty是零拷贝,省略了内核空间地址和用户空间地址之间的数据copy,所以这里不做深究。
2024-03-01 17:58:02
1129
原创 vue 使用组件模拟select框实现
涉及知识:1、vue父组件data改变怎么触发子组件prop的数值变化?答:我看了网上大多数都是手动强制刷新子组件的,但对每个子组件都要写一套强制刷新,感觉不太现实,可不可以简化点呢,后来终于找到方法,就是子组件使用watch监听父组件data改变,然后通知子组件重新渲染。2、 组件怎么使用v-model?答:v-model语法糖相当于@input="price = $event.target.value" :value="price"1):value 可以看出子组件pr.
2021-11-12 12:39:29
1493
原创 tomcat日志乱码问题、页面乱码问题等
一、默认解决方法无论Google还是百度,多数解决方法是server.xml设置URIEncoding=“UTF-8”。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/>二、接口乱码在catalina.bat 头部增加 -Dfile.encoding=UTF-8/bin/catalina.bat
2021-09-26 18:31:05
377
原创 Object转Class<T>
代码BigDecimalConvert.javaimport java.math.BigDecimal;public class BigDecimalConvert implements Convert<BigDecimal> { @Override public boolean support(Class<?> tClass) { return tClass == BigDecimal.class; } @.
2021-08-30 17:46:34
1792
原创 unicode转中文
/** * unicode转中文 */ private static String unicodeDecode(String string) { Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))"); Matcher matcher = pattern.matcher(string); char ch; while (matcher.f...
2021-08-30 17:26:56
145
原创 css 学习导航
目录模块1、CSS 初步1.1、什么是 CSS?1.2、CSS 入门1.3、如何构建CSS?1.4、CSS 如何工作1.5、用用你刚学到的知识2、构建 CSS 块2.1、层叠与继承2.2、CSS选择器2.3、盒模型2.4、背景与边框2.5、处理不同的文本方向2.6、溢出的内容2.7、值和单位2.8、在CSS中调整大小2.9、图片、媒体和表单元素2.10、样式化表格2.11、调试CSS2.12、组织CSS3、样式化文本.
2020-12-06 11:20:16
119
原创 视频/摄像头 截图旋转90度显示
// videoObj -- video Element对象// width 和 height 分别是摄像头的宽高function rotateBase64Img(videoObj,width,height) { let canvas2 = document.createElement("canvas"); let context = canvas2.getContext("2d"); canvas2.height = height; canvas2.width =
2020-05-15 14:36:36
832
原创 promise、async、generator 使用
promise使用简单使用 let f = ()=> new Promise((resolve, reject)=>{ if(true){ resolve("1") }else{ reject("2") } }) f.then(a=>{ console.log(a) // 1 }).catch(b=>{ console.lo
2020-05-09 16:53:07
171
原创 java 使用RandomAccessFile在文件内容前面添加内容,并且限制文件大小
package com.xxx.app;import com.xxx.app.common.util.ConfProperties;import java.io.*;/** * 文件内容前面添加内容,并且限制文件大小 */public class FileAppend { static String filepath = ConfProperties.getFilePa...
2020-03-13 10:16:06
488
原创 对象转Map
/** 对象转map */ public static Map<String, Object> covert(Object obj){ if(obj == null){ return Collections.emptyMap(); } Map<String, Object> map = ne...
2020-03-03 17:52:45
166
原创 WAV 转 PCM
public String WavToPcmFilePath(String wavFile){ try { byte[] buffer= new byte[1024]; //wav 和pcm的区别就是wav在pcm的前面多了44字节 byte[] preBuffer= new byte[44]; ...
2020-02-29 15:10:59
4150
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人