自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (8)
  • 收藏
  • 关注

原创 WINCE串口通讯经验小结

这两天由于工作要求,需要在WINCE上开发一个通过串口传输文件的小工具,经过测试,调用WriteFile一直写数据时,当数据长度超过50K就会返回WriteFile出错,而且使用GetLastError返回的错误值是87,1814两种,如果出错时不予理解,继续向串口写数据,每隔50K就会产生一个WRITEFILE错误,如此循环大概到总共写了200多K时,整个系统都会崩溃掉。打印崩溃地址如下:

2013-01-04 19:05:25 1230

原创 nacos获取服务实例流程

2.6 定时任务更新实例列表到内存完成。

2024-08-31 16:23:10 444

原创 nacos服务注册流程

注意这里,如果是临时节点,还会触发客户端定时发送心跳。这里已经跳到了nacos-client-1.4.2的包,相当于是具体注册中心客户端的实现。10.接着跳到了NamingProxy.registerService,

2024-08-03 14:36:18 1309

原创 springcloud alibaba 整合seata的TCC

一、seata服务端搭建同上篇。

2024-04-20 16:11:03 517

原创 mongodb分片集群搭建踩坑记录

b. 将升序键的当前值一直到正无穷范围的块都指定分布在SSD分片上:sh.addTagRange("dbName.collName",{"_id":ObjectId()},...{"_id":MaxKey},"ssd")创建步骤: db.users.ensureIndex({"username":"hashed"}) , sh.shardCollection("app.users",{"username":"hashed"})如需查看所有的块,可使用sh.status(true)命令。

2023-03-18 14:44:52 1349 2

原创 K8S搭建NACOS集群踩坑问题

解析(/etc/resolv.conf),使主机可以用k8s自身的dns服务。nodeName: host-52,但是同时也加上了hostNetwork: true,导致POD已经启动,但是只能在主节点通过28855端口访问,其它局域网机构加上28855端口无法访问。ClusterFirst(默认DNS策略):优先使用kubernetes环境的dns服务,将无法解析的域名转发到从宿主机继承的dns。Default: 继承Pod所在宿主机的DNS设置,hostNetwork的默认策略。

2023-03-02 16:52:58 1948

原创 springboot-rocketmq整合NOT_CONSUME_YET问题处理

【代码】springboot-rocketmq整合NOT_CONSUME_YET问题处理。

2023-01-31 16:48:52 4069 1

原创 mybatics插件拦截器机制分析以及pageHelper源码分析

通过dialect对象的各个方法结合实现分页功能,Dialect是一个接口,他有不同的子类实现,对应不同的数据库方言。如果我们没有在配置中指定具体的实现类的话,默认的实现类是PageHelper。ExecutorUtil.pageQuery方法:这个方法比较复杂,是实现最终数据查询的地方,主要的逻辑是获取对应数据库方言的分页语句形式,MySql的话是在。从这个插件包装的代码可以看到,就是对目标对象的所有接口生成JDK动态代理,在目标对象的所有接口调用前,拦截植入拦截器的代码。自动创建的count语句是在。

2022-10-16 16:17:58 796

原创 mybatics 原始操作数据库源码分析全过程

5.5 这里特别说明下typeHandlers是个类型处理器,是将JAVA类型的入参对象在JDBC的prepareStateMent中的setParam传入不同的类型(setParamInt,setParamLong)5.3 我们查看Configuration类的成员变量,其实就是与全局配置文件中的节点一一对应。5.1 发现其是从XML中获取相应的配置属性,然后保存到configuration的属性中。6.5 可以看到也跟解析全局配置文件一样,对mapper中的子节点逐个解析。

2022-10-11 17:01:43 685

原创 Seata的AT模式客户端两阶段提交流程源码分析

注意:service.vgroupMapping.loveday-service-group=default,这个配置自定义事务分组对应的集群名应该要放在nacos中。修改客户端RM的undolog序列化方式为protostuff,解决默认的JACKSON序列化不支持时间序列化的问题。seata.tx-service-group=loveday-service-group,配置当前服务的自定义分组名。4.启动seata-server,运行bin下的seata-server.bat。一、seata的理论。

2022-09-24 17:12:41 610

原创 记录一次线上zookeeper连接数耗尽拒绝连接的问题处理

推测发现,是服务端(主动断开方)主动断开连接,是由于TCP关闭连接时的四次挥手中的,收到客户端(被动断开方)最后一个FIN结束包,并且返回ACK给客户端后,等待一段时间才回到CLOSED状态。至于为什么会有大量的TIME_WAIT,应该是连接数达到ZK的单台客户端(60)连接数,ZK客户端不断重连,服务端不断拒绝 断开连接,所以会出现大量的临时TIME_WAIT。通过统计发现,有问题的宿主主机上有4500个与ZK服务器的连接 处于TIME_WAIT状态,而这台宿主主机上的POD服务只有10个。.......

2022-08-13 13:58:58 2954

原创 springboot 从环境变量读取配置的流程

1.最终会从org.springframework.boot.context.properties.bind.Binder,是这个类的findProperty方法,会将一个配置类BEAN的每个属性都会循环寻找环境变量,配置文件等,是否能找到合适的属性定义,然后进行属性注入。从下面可以看到,环境变量的配置覆盖了bootStrap的配置。最终发现,环境变量会覆盖配置文件 的配置。一、定义NACOS的地址环境变量配置。bootStrap的配置。.........

2022-08-03 13:26:43 3512

原创 Shiro原理及源码分析

安全管理器的创建是依赖于认证、授权,缓存、数据源等诸多组件的,你可以各自创建功能组件对象然后交给SecurityManger,配置的方式,选择很多,比如你可以通过SpringXML配置,也可以用YAML文件或者Properties文件配置等,领域对象,在Shiro和你的应用程序安全数据(比如登录的用户名、密码,用户的权限等)之间架起一座沟通的桥梁,安全管理器要验证用户身份,或者要获取用户对应的权限,是分别通过认证组件(),授权找授权组件(),会话找会话组件(.........................

2022-07-16 13:46:55 1970

原创 spring加载本地properties文件配置

sprring动态读取properties文件 。

2022-06-17 13:51:50 356

原创 springboot aop加载流程

一、创建几个切面。package com.tpw.newday.aspect;import cn.hutool.core.util.ObjectUtil;import cn.hutool.core.util.StrUtil;import cn.hutool.json.JSONUtil;import com.tpw.newday.annation.CacheProcesser;import com.tpw.newday.common.MyConstants;import com.tpw.n

2022-02-25 20:42:05 1187

原创 springcloud gateway 请求执行流程分析

一、示例

2022-01-25 11:57:20 3936 2

原创 springcloud feign 加上hystrix的流程

一、maven配置 引入feign默认会依赖hystrix,只要不排除就行。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId><!-- <exclusions>--><!--

2021-12-16 12:00:13 1046

原创 spring cloud feign 加载流程

一、如果只想加入feign,不要载入hystrix,则在引包时排除掉hystrix的包。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> <exclusions> <exclusion> <g

2021-12-16 11:06:37 1113

原创 redis集群配置和测试

一、在本机建立6个单REDIS节点,并以集群方式运行。cluster-enabled yes# Every cluster node has a cluster configuration file. This file is not# intended to be edited by hand. It is created and updated by Redis nodes.# Every Redis Cluster node requires a different cluster

2021-12-15 09:44:42 2476

原创 springcloud ribbon retryTemplate操作流程分析

一、在配置中加入<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency>二、初始化流程分析1.构建LoadBalancedRetryFactory,在RibbonAutoConfiguration配置类中。2.在LoadBalancerAu

2021-12-14 15:01:26 472

原创 springcloud ribbon 配置负载均衡策略以及自定义策略

一、系统内置的策略有以下几种。 这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表。是轮流访问?随机访问?权重?等。Ribbon 的负载均衡策略策略类 命名 说明RandomRule 随机策略 随机选择 ServerRoundRobinRule 轮训策略 按顺序循环选择 ServerRetryRule 重试策略 在一个配置时问段内当选择 Server 不成功,则一直尝试选择一个可用的 ServerBes...

2021-12-14 11:00:58 1605

原创 springcloud ribbon @LoadBalance负载均衡源码流程分析

一、编写示例 1.服务端 pom.xml <properties> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR2</spring-cloud.version> </properties> <dependencies> <dependen...

2021-12-13 12:50:07 1162

原创 Redisson 管道批量发送命令流程分析

一、示例代码管道功能就是REDIS的批量发送,实际上是客户端的功能,与服务端无关。相当于把多个请求的命令放在一个数据包通过TCP发送到服务端,然后客户端再一次性读取所有的命令回应,节省多次命令的网络请求。 RBatch rBatch = redissonClient.createBatch(); RFuture<Object> goodsNameFuture = rBatch.getBucket("goodsName").getAsync(); RF

2021-11-18 16:45:38 5902 2

原创 redission收发命令流程分析

一、示例,我们从最简单的GET命令开始。RBucket<Object> t = redissonClient.getBucket("syncTradeUid_idOff");int idOff = (int)t.get();二、springboot的Redission自动配置@Order(value = 4001)@ConditionalOnProperty("redisson.password")@Configuration@EnableConfigurationPr

2021-11-12 17:42:17 2817

原创 HashedWheelTimer时间轮定时任务原理分析

一、示例代码HashedWheelTimer时间轮是一个高性能,低消耗的数据结构,它适合用非准实时,延迟的短平快任务,例如心跳检测。时间轮是一种非常惊艳的数据结构。其在Linux内核中使用广泛,是Linux内核定时器的实现方法和基础之一。Netty内部基于时间轮实现了一个HashedWheelTimer来优化I/O超时的检测,由于Netty动辄管理100w+的连接,每一个连接都会有很多超时任务。比如发送超时、心跳检测间隔等,如果每一个定时任务都启动一个Timer,不仅低效,而且会消耗大量的资源。

2021-10-09 16:31:23 1500

原创 ScheduledThreadPoolExecutor定时任务线程池执行原理分析

<div id="article_content" class="article_content clearfix"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-1a85854398.css"> <div id="content_views" class.

2021-10-09 10:07:13 1508

原创 Netty ObjectPool对象池技术原理分析

一、ObjectPool使用示例1.对需要使用对象池的对象,定义一个ObjectPool的静态全局变量RECYCLE,用于对象的分配和回收。并在对象内定义一个ObjectPool.Handle成员变量,并且将此变量作为构造函数参数传入,并将构造函数作为私有。然后添加一个回收的方法Recycle,在不需要此对象时调用handle.recycle()获取对象则调用ObjectPool.get@Slf4jpublic class ObjectRecycleTest { private s

2021-09-30 17:17:11 628

原创 ThreadLocal的原理和FastThreadLocal的优势

一、ThreadLocal的编写测试1.只需定义一个静态全局的ThreadLocal变量,然后在线程的执行方法里面,对这个对象的某个方法,set后,同一个线程get,能正常取出数据。2.线程池使用ThreadLocal变量,要注意,任务执行完要删除ThreadLocal数据,防止脏数据传播到同一个线程的下一个任务中。@Slf4jpublic class ThreadLocalTest { private static ThreadLocal<String> nameTh

2021-09-29 17:56:44 288

原创 Netty:option和childOption参数设置说明

Channel配置参数(1).通用参数CONNECT_TIMEOUT_MILLIS :  Netty参数,连接超时毫秒数,默认值30000毫秒即30秒。MAX_MESSAGES_PER_READ  Netty参数,一次Loop读取的最大消息数,对于ServerChannel或者NioByteChannel,默认值为16,其他Channel默认值为1。默认值这样设置,是因为:ServerChannel需要接受足够多的连接,保证大吞吐量,NioByteChannel可以减少不必要的系统调用sel

2021-09-28 16:12:20 280

原创 NioEventLoop加载流程分析

一、我们首先看NioEventLoopGroup创建和初始化过程。EventLoopGroup workEventLoopGroup = new NioEventLoopGroup(new NamedThreadFactory("clientThread", false));1.看下类继承图2.MultithreadEventLoopGroup父类实现了channel的接口注册,next取下一个可用的NioEventLoop @Override public Event.

2021-09-26 16:16:34 231

原创 ServerBootstrap的启动流程

一、ServerBootstrap的启动示例代码 EventLoopGroup bossEventLoopGroup = new NioEventLoopGroup(new NamedThreadFactory("bossThread",false)); EventLoopGroup workEventLoopGroup = new NioEventLoopGroup(new NamedThreadFactory("workThread",false)); .

2021-09-18 16:20:49 1426

原创 nio的epoll和selector实现流程分析

一、NETTY底层使用的是NIO的selector和epoll进行实现的,select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说把数据从内核拷贝到用户空间是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间...

2021-09-17 17:06:38 814 3

原创 netty 管道和handler的加载和处理流程

一、pom引入包,此处版本为4.1.52.Final <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-kqueue</artifactId> <scope>provided</scope> </dependency&gt

2021-09-10 16:45:55 7665

原创 redis 主从哨兵模式搭建

一、REDIS主从模式,搭建三个节点,同一个机器,三个端口。1.主节点bind 127.0.0.1protected-mode yesport 63792.从节点1bind 127.0.0.1port 6381slaveof 127.0.0.1 63793.从节点2bind 127.0.0.1port 6382slaveof 127.0.0.1 63794.运行命令./redis-server.exe ./redis6382.conf./redi

2021-08-26 18:24:35 575

原创 springboot 加载mybatis的流程

一、mybatics的配置步骤1.POM依赖包加载 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version>

2021-08-20 18:21:43 1088

原创 springboot 加载jpa,datasource的初始化流程

一、在application.yml在配置datasource的参数,hibernate,jpa的参数。spring: datasource: url: jdbc:mysql://** username: *** password: *** driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialSize: 1

2021-08-13 18:10:25 3918

原创 springboot 读取nacos配置的流程和数据变化实时更新机制

一、NACOS配置如下1.bootStrap.yaml 配置spring: profiles: active: dev application: name: newday cloud: nacos: discovery: server-addr: www.nacos.com:8848 #server-addr: 10.100.8.104:8848 #server-addr: 172.18.173.44:

2021-07-29 17:43:50 4003

原创 springboot 读取bootStrap.properties流程

一、bootstrap.properties其实是属于spring-cloud的一个环境配置,示例如下需要添加MAVEN包,否则不会加载bootStrap.properties。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> <version&gt

2021-07-28 16:39:32 5010

原创 springboot 读取application.properties流程

一、application.properties配置如下,当然也可以配置YAML。application-dev.propertiesserver.port=8110spring.application.name=newday-servicespring.jpa.show-sql=truespring.jpa.properties.hibernate.format_sql=truelogging.level.org.hibernate.type.descriptor.sql.Ba

2021-07-27 15:05:20 1498

原创 springboot @ConfigurationProperties注入属性流程

一、编写实例,只要加上ConfigurationProperties注解,就会从当前springboot的Environment中读取配置属笥。Environment包括bootStrap,application,application_dev等。@Data@Configuration@ConfigurationProperties(prefix = "redisson")public class RedissonProperties { private int timeout = 3

2021-07-27 10:59:32 1561

局域网内类似飞秋的文件传输以及聊天工具

类似于飞秋的局域网聊天工具以及文件传输工具,不需要服务器,聊天以及用户上下线采用UDP传输,文件传输采用TCP传输,在局域网内传输速度可以达到5MB/S,非常之快。纯自己编写的代码,可供研究和参考。断点续传的文件传输功能还未加上。后续研究者可以在上面完善。

2014-01-03

UDP/TCP程序封装类

TCP,UDP的封装程序类,都采用非阻塞模式,UDP支持广播通知,TCP支持同时服务端和客户端,并且外部接口只要设置接收回调即可收到数据,类封装得十分简单,不会TCP等网络知识也能进行方便地网络编程。

2013-12-20

局域网通信数据文件传输工具

局域网内的数据文件传输工具,速度可以达5M/S,非常之快,用作文件传输非常好。极力推荐,可以学习的代码。

2013-12-03

WINCE上的H264编解码器

WINCE平台上的针对ARM进行深底的H264编解码器优化工具。大大提升了解码速度和效率。来源于FFMPEG中的版本进行优化的。

2013-04-10

大数运算程序,支持100位

支持超大数的加减乘除等基本运算,100位以上都可以,经过测试OK.

2013-02-01

WINCE上的WAVE文件播放器,支持播放双缓冲

WINCE上的WAV文件播放器,支持播放,暂停,停止,继续等功能。适合初学者查看, 已经封装成了一个类,方便使用。

2013-01-22

各种类型图片显示以及半透明实现及能保存成565格式BMP

能够支持各种颜色格式的BMP图版显示,如565,555,8位,24位, 32位,并能将当前窗口数据保存成16位565格式的图片,以及能实现前景图片和背景图片的半透明效果(通过对像素数据进行ALPHA混合,不是通过系统API)。

2013-01-08

WINCE串口文件传输工具

WINCE上的串口文件传输工具,波特率最大可支持921600,测试过12M的文件传输没有问题。

2013-01-04

空空如也

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

TA关注的人

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