技术生涯
文章平均质量分 65
终有链响
区块链电商领域7年开发者、企业技术负责人、精通JAVA、智能合约等开发语言;
在国家级期刊《中国科技期刊数据库·工业A》上发表过《区块链技术在智能合约开发中的应用研究》论文。
展开
-
TOP命令参数
top命令是Linux和类Unix系统中一个非常强大的系统监控工具,用于实时查看系统中各个进程的资源使用情况。它可以显示CPU使用率、内存使用情况、进程PID、进程运行时间等重要信息。toptop。原创 2024-06-22 09:51:10 · 262 阅读 · 0 评论 -
深度分析:React Native、Flutter、UniApp、Taro、Vue的差异
选择框架时,应根据项目需求、团队技能、性能要求和维护成本综合考虑。React Native和Flutter在跨平台开发中表现出色,适用于大多数移动应用场景。UniApp和Taro在多平台统一开发方面有独特优势,适合小程序和多平台发布需求。Vue.js作为Web开发的主力,可通过额外工具转化为原生应用。原创 2024-06-17 10:39:58 · 11106 阅读 · 62 评论 -
探讨微服务架构如何降低系统复杂度
然而,实施微服务并非没有挑战,如服务间通信的成本、数据一致性的保证、服务治理的复杂性等,都需要在实践中不断探索和完善。每个微服务都围绕一个特定的业务功能构建,减少了跨服务的代码依赖,使得系统结构更加清晰,降低了理解和维护的难度。微服务架构鼓励每个服务根据自身需求选择最合适的开发语言、框架和数据库,打破了传统单体应用的技术束缚,降低了技术复杂度,促进了技术栈的多样化和创新。未来,随着容器化、云原生技术和DevOps文化的普及,微服务架构将进一步成熟,为构建高效、弹性、可扩展的现代IT系统提供强有力的支持。原创 2024-06-04 14:59:40 · 2487 阅读 · 8 评论 -
java对接阿里云OSS上传
【代码】阿里云OSS上传。原创 2024-05-30 09:18:07 · 275 阅读 · 3 评论 -
java对接七牛云OSS上传
【代码】七牛云OSS上传。原创 2024-05-30 09:14:03 · 254 阅读 · 0 评论 -
如何合理设置Java线程池大小
Java线程池的合理配置直接关系到系统性能和资源利用率。根据任务性质的不同,合理的线程池大小设置策略也有所区别,主要包括CPU密集型、IO密集型及混合型任务。总之,合理设置线程池大小的核心在于理解任务特性,通过科学的计算和经验调整,使系统达到资源利用与性能的最佳平衡。原创 2024-05-25 12:02:30 · 496 阅读 · 1 评论 -
并发控制利器Semaphore
Semaphore 是Java并发编程中的一个重要工具,用于管理对共享资源的访问权限,确保系统资源不会因过度访问而耗尽。形象地说,Semaphore 可以比喻为交通信号灯,它控制着能够同时进入特定区域(如马路)的车辆数(线程数)。当一定数量的车辆(线程)进入后,其余车辆必须等待,直到有车辆离开,空出“车位”(许可证)为止。在编程中,Semaphore 通过协调线程访问,保证公共资源的合理分配。原创 2024-05-24 11:23:07 · 1988 阅读 · 0 评论 -
五步定位性能瓶颈
优先级明确:面对性能瓶颈,应将数据库监控放在优先位置,特别是对于Web应用而言。工具选型:根据团队实际情况,合理选用原生或第三方监控工具,平衡专业深度与操作便捷性。深入事件分析:掌握Oracle等待事件的分析技巧,能快速锁定问题,特别是在面对突发性能衰退时,能迅速指引排查方向。通过以上策略,可以更高效地识别并解决数据库层面的性能瓶颈,提升整个Web系统的响应速度和稳定性。原创 2024-05-23 21:29:35 · 5686 阅读 · 32 评论 -
Redis 缓存失效策略及其应用场景
Redis,作为一款高性能的键值存储系统,广泛应用于缓存、消息队列、计数器等多种场景中。其高效的数据管理和过期策略是保证系统稳定运行的关键因素之一。本文将深入探讨Redis中缓存失效的几种策略——定时删除、惰性删除、定期删除,以及如何结合LRU和LFU策略进行内存管理,并分析它们各自的应用场景,帮助开发者更好地根据实际需求选择合适的策略。原创 2024-05-18 21:11:10 · 4539 阅读 · 0 评论 -
Solidity中如何优化智能合约的Gas消耗
在以太坊平台上,每一笔交易和智能合约执行都需消耗Gas,其费用直接关联到交易的复杂度和资源占用。随着区块链应用的拓展,高昂的Gas费用经常成为用户和开发者共同面临的挑战。因此,优化合约设计,减少不必要的Gas消耗,成为提升应用竞争力的关键。原创 2024-05-17 08:18:05 · 6988 阅读 · 0 评论 -
long类型在32位操作系统上的安全问题
在深入探讨这一话题之前,我们首先需要理解long类型在不同操作系统中的基本特性。long作为一种基本数据类型,在32位操作系统中通常占据4字节(32位),而在多数64位操作系统(遵循LP64模型)中则扩展至8字节(64位)。这一差异看似微不足道,但在多线程编程环境中,特别是在涉及数据同步和原子操作的场景下,它可能成为潜在的安全隐患来源。原创 2024-05-16 20:30:56 · 6271 阅读 · 0 评论 -
外包公司中能学到技术的都是那些人?
这类人有强烈的学习欲望和提升自我的动机,不依赖公司安排的培训,而是主动寻找学习资源,如在线课程、技术书籍、开源项目等,持续扩展知识边界。:他们清楚自己的职业规划和技术发展方向,会选择能够帮助其实现这些目标的项目或任务,即使在项目分配上也会尽量争取更有技术挑战性的部分。:每次项目结束后,他们会进行反思,总结经验教训,提炼出可复用的知识和方法,不断优化自己的工作流程和技术实践。:面对项目中的技术难题,他们不是回避而是迎难而上,通过解决问题的过程深化对技术的理解和应用能力。原创 2024-05-15 10:56:14 · 357 阅读 · 0 评论 -
秒杀系统之高可用
高可用其实是在说 “稳定性”,稳定性是一个平时不重要,但出了问题就要命的事情,然而它的落地又是一个问题——平时业务发展良好,稳定性建设就会降级给业务让路。解决这个问题必须在组织上有所保障,比如让业务负责人背上稳定性绩效指标,同时在部门中建立稳定性建设小组,小组成员由每条线的核心力量兼任,绩效由稳定性负责人来打分,这样就可以把体系化的建设任务落实到具体的业务系统中一个秒杀系统的设计,可以根据不同级别的流量,由简单到复杂打造出不同的架构,本质是各方面的取舍和权衡。原创 2024-05-18 07:30:00 · 7397 阅读 · 0 评论 -
秒杀系统之系统优化
性能优化需要一个基准值,所以系统还需要做好应用基线,比如性能基线(何时性能突然下降)、成本基线(去年大促用了多少机器)、链路基线(核心流程发生了哪些变化),通过基线持续关注系统性能,促使系统在代码层面持续提升编码质量、业务层面及时下掉不合理调用、架构层面不断优化改进。原创 2024-05-16 06:45:00 · 6264 阅读 · 0 评论 -
Nginx详解
Nginx 是一款高性能的 Web 服务器和反向代理服务器,以其轻量级、高效、稳定的特点,在现代互联网架构中被广泛使用。原创 2024-05-13 06:45:00 · 506 阅读 · 0 评论 -
实用的chrome命令
这些命令可以帮助用户更高效地管理浏览器设置、调试网页问题、优化性能或了解Chrome的内部工作原理。只需在地址栏输入这些命令并回车即可访问相应的页面。开头,可以快速访问浏览器的各种内部页面和功能。Chrome浏览器内置了许多实用的命令,这些命令以。原创 2024-05-10 21:25:50 · 590 阅读 · 3 评论 -
区块链领域,被问得最多的问题
在区块链领域,被问得最多的问题通常围绕几个核心主题,包括基本概念、技术挑战、应用前景以及它对社会经济的影响。随着技术的进步和应用场景的多样化,新的问题也会不断涌现。人们常常好奇区块链的基本定义,以及它是如何作为一种去中心化的、分布式的账本技术来记录交易的。法律、政策和监管框架如何调整以适应区块链和加密货币的发展,是业界和政府都非常关注的话题。智能合约作为自动执行合约条款的代码,其概念、功能及在区块链上的作用也是热点问题。随着交易量的增长,区块链网络如何处理更多的交易而不降低效率,是一个常见的疑问。原创 2024-05-08 20:58:28 · 6362 阅读 · 2 评论 -
一文读懂:Nginx 和Gateway
它提供了动态路由、过滤器机制以及集成Spring Cloud DiscoveryClient的服务发现能力,便于实现复杂的API管理需求。Nginx 是一个高性能的 Web 服务器和反向代理服务器,常被用作静态内容的服务器和负载均衡器。它支持HTTP、HTTPS、SMTP、POP3和IMAP协议,适合处理静态资源、SSL终止、HTTP压缩等任务。在技术选型时,选择 Nginx 和 Spring Cloud Gateway(或简称为 Gateway)主要取决于具体应用场景和技术需求。原创 2024-05-08 12:24:52 · 666 阅读 · 0 评论 -
Redis数据结构精讲:选择与应用实战指南
在Redis中选择合适的数据结构时,需要根据具体的应用场景和需求来决定。总之,选择合适的数据结构是为了提高效率、节省资源并确保数据的正确性,应基于具体业务需求和性能考量来决定。原创 2024-05-07 22:16:39 · 1523 阅读 · 2 评论 -
AI时代的就业转型与个人发展
AI的定义与分类弱人工智能与强人工智能未来AI的发展趋势AI的普及确实引发了就业市场的深刻变革,但与其恐慌,不如将其视为一次重塑自我、提升社会生产力的机遇。原创 2024-05-08 06:45:00 · 8354 阅读 · 0 评论 -
软件公司为什么很少接二开项目?
很多二次开发项目,都是费力不讨好的,二次开发的项目,通常是其他公司或者个人在之前开发的项目,由于代码质量、技术水平等原因搁置了,代码可能存在很多问题和难以处理的异常情况,这会增加开发的难度和需要投入更多的时间和资源,二次开发项目,就必须对原生系统的框架,逻辑和流程搞清楚,而原生系统如果采用传统写代码的开发模式,学习成本太高,开发及后期维护成本都很高,所以软件开发公司,不愿意接二次开发项目。原创 2024-05-06 22:33:32 · 3261 阅读 · 4 评论 -
如何保证线程安全?synchronized,ReentrantLock,Atomic使用场景
线程安全解决方案synchronized,ReentrantLock,Atomic 使用场景描述在实际开发过程中如果服务量,请求频繁,就会经常碰见并发,这时候不做处理就会出现很多非法数据。这时候就需要解决线程安全的问题,这时候就可以使用java当中的锁机制。常用有java关键synchronized、可重入锁ReentrantLock,还有并发包下的Atomic或者Concurrent的安全类型。synchronized使用场景:在资源竞争不是很激烈的情况下,偶尔出现并发,需要同步的情形下,原创 2020-10-05 07:55:47 · 25017 阅读 · 1 评论 -
源代码如何注入钩子
相信大家都不想自己的代码被人拿出去做一些商业化的行为,但是一时半会又没有一个有效的方法,这里我提供一点思路。原创 2024-04-08 17:06:35 · 3345 阅读 · 2 评论 -
mongodb设置用户账号密码登录
关于mongodb设置用户账号密码登录原创 2022-04-25 23:00:00 · 16406 阅读 · 1 评论 -
论系统的木桶理论与性能瓶颈
在我们实际开发环境中,根据木桶理论,系统的最终性能取决于系统中性能表现最差的组件,因此为了提高整体系统性能,必须对系统中表现最差的组件进行优化,而不是对表现良好的组件进行优....原创 2022-03-27 21:47:55 · 14635 阅读 · 0 评论 -
Linux中top命令参数说明
Linux中top命令参数说明top命令被我经常用来监控linux的当前服务器资源使用情况,是常用的性能分析工具,能够实时看到系统中各个进程的资源占用情况。top -d 3 (每三秒刷新一次)top -xtop -ttop -b如下图输出主要参数1,top - 16:09:44 up 134 days, 4:04, 2 users, load average: 0.23, 0.29, 0.382,Tasks: 202 total, 1 running, 200 sleep原创 2021-12-12 16:43:44 · 956 阅读 · 0 评论 -
Java诊断工具Arthas使用指南
一、简介Arthas 是Alibaba开源的Java诊断工具。安装在系统所在服务器。可以帮助开发人员或者运维人员查找问题,分析性能,bug追踪。二、解决什么问题 & 适用场景解决问题:1、以全局视角来查看系统的运行状况、健康状况。2、反编译源码,查看jvm加载的是否为预期的文件内容。3、查看某个方法的返回值,参数等等。4、方法内调用路径及各方法调用耗时。5、查看jvm运行状况。6、外部.class文件重新加载到jvm里。等等…场景:1)调用接口时,接口返回异常信息,如果该异常原创 2020-10-20 07:23:16 · 13285 阅读 · 1 评论 -
Feign请求中Request header is too large 解决方案
异常首先咱们上一下控制台打印异常:16:06:58.970 [http-nio-9220-exec-1] INFO o.a.c.h.Http11Processor -[log,182] - Error parsing HTTP request header Note: furtheroccurrences of HTTP header parsing errors will be logged at DEBUGlevel. java.lang.IllegalArgumentException原创 2020-10-09 20:23:33 · 3970 阅读 · 3 评论 -
为什么是删除缓存,而不是更新缓存?
原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值。比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的。另外更新缓存的代价有时候是很高的。是不是说,每次修改数据库的时候,都一定要将其对应的缓存更新一份?也许有的场景是这样,但是对于比较复杂的缓存数据计算的场景,就不是这样了。如果你频繁修改一个缓存涉及的多个表,缓存也频繁更新。但是问题在于,这个缓存到底会不会被频繁访问到?举个栗子,一个缓存涉及的表的字段,在 1 分原创 2020-09-25 20:27:29 · 4359 阅读 · 7 评论 -
Eureka的注册表拉取及多级缓存机制简析
Eureka作为注册中心想必大家都不陌生了,注册中心简单来说,其实就是各个服务将自己的IP和端口号这些信息存放到注册中心里,形成一个注册表,当服务间调用的时候,调用方就能从注册中心的注册表里面获取到要调用服务的具体IP和端口号,就可以请求那个服务了Eureka的注册表拉取机制分为了两种,第一种是第一次拉取服务注册表的时候,此时需要全量拉取注册表,将所有服务的注册表信息全部存放起来,第二种是每隔30秒,增量拉取服务注册表在eureka client拉取注册表的时候,就会用到所谓的多级缓存机制,多级缓存机制转载 2020-09-20 22:44:40 · 872 阅读 · 1 评论 -
JVM的参数含义及设置
JVM: JVM的参数含义及设置原创 2020-07-26 22:45:44 · 16617 阅读 · 2 评论 -
java调用以太坊私链上的合约方法
使用 java调用以太坊私链上的合约方法引入java依赖 pom <!--web3j--> <dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>3.4.0</version> <原创 2020-07-10 22:46:01 · 11029 阅读 · 1 评论 -
JVM垃圾回收算法
②当发生Minor GC的时候可能触发Full GC,由于老年代要对年轻代进行担保,由于进行一次垃圾回收之前是无法确定有多少对象存活,因此老年代并不能清除自己要担保多少空间,因此采取采用动态估算的方法:也就是上一次回收发送时晋升到老年代的对象容量的平均值作为经验值,这样就会有一个问题,当发生一次Minor GC以后,存活的对象剧增(假设小对象),此时老年代并没有满,但是此时平均值增加了,会造成发生Full GC。: 新生代垃圾回收器一般采用的是复制算法,复制算法的优点是效率高,缺点是内存利用率 低;原创 2020-05-28 23:43:53 · 9160 阅读 · 1 评论 -
如何设计一个秒杀系统
前言秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题。整体思考1 秒杀存在的问题对于一个日常平稳的业务系统,如果直接开通秒杀功...原创 2020-04-17 09:00:49 · 2238 阅读 · 2 评论 -
IDEA实现java远程调试
java远程调试. idea配置. 启动所要连接的服务对应监测端口开放. idea开启远程连接. 必须准备的条件为啥要用呢?唉,其实有些线上问题,其实你怎么log也不如远程调试一下呀。. idea配置. 启动所要连接的服务java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 ...原创 2020-04-13 12:04:51 · 76855 阅读 · 2 评论 -
文件上传时提示NET:ERR_CONNECTION_RESET
背景:最近闲暇之余写了一个半自动化的项目部署的项目,因为发现之前使用的jenkins太消耗服务器资源了,由于现在又不想升级服务器,就自己写一个半自动化的。其实就是一些java执行我在服务器上面写好的.sh的脚本即可,或者执行一些linux命令案发现场*NET:ERR_CONNECTION_RESET**从单词的字面意思是,错误连接重置,百度了下,说什么文件上传大小控制的文件。解决思路...原创 2019-06-20 23:01:42 · 39352 阅读 · 4 评论 -
java时间与系统时间不一致
场景: 最近boot项目部署到新的一台linux服务器上发现日志打印时间,和new date()时间差了13个小时,如下图 在这里插入图片描述解决思路:1.起初怀疑是linux的时区问题2.后来在到jvm的时区问题3.最后定位到mysql的时区问题,终于解决解决方案:在自己项目mysql配置连接上加上&useLegacyDatetimeC...原创 2019-04-24 17:01:30 · 9085 阅读 · 0 评论 -
写入图片抛出java.io.IOException: Broken pipe异常
场景: 无意中开源web文件管理器插件 elfinder,功能还比较不错,想改装一下用在自己的项目里 在本地测试ok但是部署到linux上时,浏览在线大型图片的时候报如下异常; 》java.io.IOException: Broken pipeat sun.nio.ch.FileDispatcherImpl.writev0(Native Method)at sun.nio.c...原创 2019-04-27 21:54:08 · 11573 阅读 · 1 评论 -
SVN检出项目时 Authorization failed
已采纳修改svnserve.conf:[general]anon-access = none #不允许匿名访问auth-access = write #允许写入password-db = passwd #访问时需要输入密码authz-db = authz #访问权限设置...原创 2019-04-29 21:23:16 · 4545 阅读 · 1 评论 -
打开git或者vue官网太慢
场景最近弄git和vue发现进他们的官网实在是太慢了,想自己能不能改善一下,后来自己指定了一下ip跳过了dns解析,现在把解决过程写一下。解决方案先进入C:\Windows\System32\drivers\etc修改HOSTS 修改之前先备份下HOSTSgit下过慢在HOSTS中加入如下参数185.31.17.184 github.global.ssl.fastly.net...原创 2019-04-29 23:23:19 · 3375 阅读 · 8 评论