- 博客(562)
- 资源 (55)
- 收藏
- 关注
原创 程序员读点微观经济学
微观经济学通过分析个体决策与市场互动,既能解释日常经济现象(如“菜篮子”价格波动),又能指导企业竞争策略和政策设计(如反垄断、碳定价)。结合宏观视角,可更全面理解经济系统运行(如2021年大宗商品涨价对中小企业成本的传导)。
2025-02-11 08:22:17
614
原创 程序员初识宏观经济学
通过系统性学习宏观经济学,可深入理解国家经济政策逻辑(如2024年M2与社融的背离),并具备用数据解读现实问题的能力(如债务风险、增长动能转换)。
2025-02-11 08:15:34
866
原创 300万亿的大池子,如何循环流动
300万亿的资金池主要通过企业投资、居民储蓄、政府支出和金融市场流动。尽管资金总量庞大,但由于消费需求不足、投资信心下降等因素,资金流动存在分层和空转现象。未来,随着直接融资的发展和政策协调发力,资金流动将更加高效,但仍需警惕金融空转和汇率压力等风险。
2025-02-11 08:09:10
700
原创 2024年中国资金总和
2024年中国的资金总和主要体现在货币供应量、社会融资规模、贷款和存款等方面。广义货币(M2)余额达到313.53万亿元,社会融资规模存量突破408.34万亿元,人民币贷款和存款分别增加18.09万亿元和17.99万亿元。此外,政府债券融资规模显著扩大,外汇储备保持稳定。这些数据反映了中国金融体系的稳健运行和对实体经济的支持力度。
2025-02-11 08:06:00
367
原创 为什么不建议你滥用AI提问
您此刻的警觉恰是建立健康关系的起点。记住:真正的智能永远在人与技术的动态平衡中生长。让我们共同守护那份使人之所以为人的珍贵特质——在不确定中保持清醒,在依赖中坚守独立。理想依赖比=(AI处理事务耗时)/(总事务耗时) ≤ 30%超过阈值时启动数字戒断程序。
2025-01-24 09:32:49
183
原创 前端程序员会被 AI 取代吗?
AI的快速发展引发了人们对职业未来的担忧,前端程序员也不例外。本文将结合全球视角和数据,分析AI对前端程序员岗位的影响。AI将对前端开发行业带来深远影响,但并非完全取代。前端程序员需要积极拥抱变化,提升自身技能,才能在AI时代立于不败之地。以上分析和数据仅供参考,实际情况可能因多种因素而有所不同。__来自deepseek。
2025-01-20 07:46:16
586
原创 大龄剩猿的2025年度总结
2025年,我用行动践行这些关键词,在变化中锚定方向,努力创造属于自己的未来。我相信,只要坚持复盘、保持全局观、践行复利思维、苦练基本功、架构人生、选择难而正确的事情、学习经济学、依靠团队、低成本试错、拥抱变化,就一定能够在未来的道路上走得更稳、更远。2026年,我将继续以这些关键词为指引,在变化的世界中,创造属于自己的未来。___来自deepseek.
2025-01-20 07:25:17
387
原创 自定义过滤器链
在实际应用中,过滤器链的管理和调用是由Servlet容器(如Tomcat)负责的。而自定义过滤器链则是指将多个过滤器按照特定的顺序组织起来,使得请求和响应能够依次通过这些过滤器。虽然ServletAPI本身不提供直接管理过滤器链的API,但你可以通过编程方式和配置来实现自定义的过滤器链。不过,如果你需要更复杂的过滤器链管理(例如,动态添加或移除过滤器),你可能需要实现一个自定义的FilterChain。虽然ServletAPI本身不提供直接管理过滤器链的API,但你可以通过编程方式控制过滤器的执行顺序。
2024-12-16 08:11:30
302
原创 aop感悟
想象一下,你是一名外科医生(https://baike.baidu.com/item/%E5%A4%96%E7%A7%91%E5%8C%BB%E7%94%9F/6462205),正在进行一台复杂的手术。然后,在需要的时候,它会把这些切面“织入”到业务逻辑中,就像外科医生(https://baike.baidu.com/item/%E5%A4%96%E7%A7%91%E5%8C%BB%E7%94%9F/6462205)在手术过程中进行消毒、麻醉和缝合等操作一样。比如,日志记录、事务管理、权限验证等。
2024-12-12 08:16:22
327
原创 springboot启动过程感悟
同时,如果这是一个Web应用程序的话,嵌入式服务器(如Tomcat)也会被启动起来,它就像是演出的灯光和音响师,为演出提供了必要的支持和保障。这个上下文就像是演出的舞台,所有的演员(Bean)都会在这个舞台上展示自己的才华。当演出结束时(即应用程序停止运行时),它们会进行一系列的收尾工作,确保舞台的整洁和演员的退场。首先,Spring Boot应用程序的启动是从main方法开始的,这个方法就像一个指挥官,它挥舞着指挥棒,召唤着Spring Boot的核心类——SpringApplication。
2024-12-12 08:10:16
620
原创 JDK中的三种IO模型
这个线程会一直阻塞,直到完成数据的读写操作。BIO模型实现简单,但性能较低,因为当客户端并发访问量增加时,服务器的线程数量会随之增加,从而消耗大量的系统资源。JDK源码中的网络编程部分是一个非常重要且复杂的领域,它涵盖了BIO(Blocking I/O,同步阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)以及AIO(Asynchronous I/O,异步I/O)等多种I/O模型。在AIO模型中,I/O操作是异步的,即当一个I/O操作发起后,不会阻塞当前线程,而是由操作系统在后台完成。
2024-12-11 08:49:47
331
原创 JDK源码中的SQL核心类和作用
这个包包含了处理数据库连接的类(如Connection、DriverManager)、执行SQL语句的类(如Statement、PreparedStatement)以及处理查询结果的类(如ResultSet)。你需要理解它们的区别(如PreparedStatement可以预编译SQL语句并设置参数),以及它们是如何执行SQL语句并返回结果的。通过阅读和理解JDK源码中的SQL部分,可以更深入地了解JDBC的工作原理和数据库连接的细节。你需要分清哪些是主要的、哪些是次要的,以便更好地理解核心逻辑。
2024-12-11 08:44:18
232
原创 JDK核心包的设计思想
丰富的类库支持:JDK核心包提供了大量的预定义类和接口,涵盖了Java程序开发的各个方面。这些类库不仅简化了开发过程,还提高了代码的可重用性和可维护性。综上所述,JDK核心包的设计思想体现了Java语言的跨平台性、面向对象、安全性、高效性、丰富的类库支持、模块化以及持续更新和优化等特点。这些设计思想使得JDK成为Java开发者不可或缺的工具之一,为Java程序的编写、编译、运行和调试提供了强大的支持。这种设计提高了代码的模块化程度和可维护性,同时支持按需加载和卸载模块,减少了应用程序的启动时间和内存占用。
2024-12-11 08:35:15
415
原创 SpEL表达式使用场景
这些示例展示了SpEL在不同场景下的应用,包括字面量表达式、属性访问、方法调用、集合操作、条件表达式、变量引用、类型转换以及在注解中使用SpEL表达式等。在上面的示例中,@LockKey注解中的#user.username就是一个SpEL表达式,它会在运行时被解析为传入someMethod方法的SysUser对象的username属性。
2024-11-22 08:19:27
589
原创 Netty线程模型理解
• EventLoopGroup包含多个EventLoop,Boss是主Reactor,Worker是从Reactor,它们分别使用不同的EventLoopGroup。• 一个Acceptor线程负责监听客户端的连接,而一个NIO线程池负责具体处理accept、read、decode等事件。• 缺点:无法发挥CPU多核的效率,容易遇到性能瓶颈,且线程终止会导致整个系统模块无法使用。Netty的线程模型通过不同的Reactor配置,实现了对高并发、高性能网络应用的支持。• 缺点:编程复杂度较高。
2024-11-22 08:01:45
142
原创 nginx线程模型理解
当worker进程需要处理大量I/O密集型任务时(如磁盘读写、网络通信等),它可以将这些任务交给线程池来处理,线程池中的线程会并发地执行这些任务,从而提高处理效率。在非阻塞模式下,当worker进程需要等待I/O操作时(如等待上游服务器的响应),它不会阻塞当前线程,而是可以处理其他请求。每个worker进程都是独立的,它们之间不会共享内存或状态信息,从而实现了请求的隔离和处理的高并发性。• master进程:负责读取和验证Nginx的配置文件,管理工作进程(如启动、停止、重启等),以及处理外部信号。
2024-11-22 07:51:49
410
原创 unity中的渲染管线类型和区别
• 利用基于物理的光照技术、线性光照、HDR光照等,提供必要的工具来创建符合高图形标准的游戏、技术演示、动画等应用。综上所述,三种渲染管线各有特点,开发者可以根据项目的具体需求和目标平台来选择合适的渲染管线。• 由于轻量级的特性,在渲染质量上相对较低,无法实现内置管线中的一些高级渲染效果。• 是Unity在2019年推出的一种轻量级渲染管线,是对内置管线的改进和优化。• 提供了更多的渲染选项和高级设置,具有更高的自由度来创建复杂的光照场景和材质。• 是Unity的默认渲染管线,具有有限的自定义选项。
2024-11-18 08:06:47
631
原创 渲染管线介绍
然而,显卡性能并不仅仅取决于渲染管线的数量,还取决于显示核心架构、渲染管线的执行效率、顶点着色单元的数量以及显卡的核心频率和显存频率等方面。不同的渲染管线具有不同的特性和性能表现,开发者可以根据项目的需求选择合适的渲染管线进行开发。在某种程度上,可以把渲染管线比喻为工厂里面的生产流水线,工厂里的生产流水线是为了提高产品的生产能力和效率,而渲染管线则是提高显卡的工作能力和效率。随着图形技术的不断发展,渲染管线也将继续演进和完善,为未来的游戏和图形应用提供更加高效和强大的渲染能力。三、渲染管线的数量与性能。
2024-11-18 08:02:14
270
原创 3D文件格式转换服务
这种服务在工程、设计、动画制作等领域中非常常见,因为不同的软件和平台可能支持不同的3D文件格式。专业转换软件:如HOOPS Exchange等,这些软件通常支持更多的3D文件格式,具有更高的转换质量和精度。通过选择合适的转换方式和服务提供商,用户可以轻松实现不同3D文件格式之间的转换,以满足不同的应用需求。在线转换工具:如3DConvert等在线平台,用户只需上传需要转换的3D文件,选择目标格式,即可进行转换。转换质量:评估转换服务的转换质量,包括模型的几何精度、颜色、材质等属性的保留情况。
2024-11-15 08:15:46
419
原创 国产3D游戏引擎介绍
• LayaAir:LayaAir是中国最大的原创3D引擎提供商之一蓝亚盒子旗下的产品,被誉为国内最强大的原创全平台3D引擎之一。它支持2D/3D游戏、应用软件、广告、营销、教育、智慧城市、元宇宙等多种领域的开发,具有强大的渲染性能和兼容性。• 发展前景:随着国内游戏产业的不断发展和技术的不断进步,国产3D游戏引擎的应用领域将更加广泛。• 发展历程:国产3D游戏引擎的发展历程可以追溯到早期的2D游戏引擎,随着技术的进步和市场需求的变化,逐渐发展成为具有自主知识产权的3D游戏引擎。
2024-11-15 08:09:52
631
原创 babylon.js导入导出模型
例如,如果你使用的是3ds Max等3D建模软件,你可以使用Max2Babylon等插件将模型导出为.glb或.gltf格式,这些格式可以在Babylon.js中轻松导入和使用。Babylon.js是一个开源的、面向Web的3D图形引擎,它支持多种功能,包括导入和渲染3D模型。Babylon.js支持多种3D模型格式,包括.obj、.gltf、.fbx等。要导入这些模型,你可以使用Babylon.js提供的加载器。但是,你可以使用其他工具或插件来将3D模型导出为Babylon.js支持的格式。
2024-11-15 08:01:57
479
原创 three.js导入导出模型
然而,Three.js 本身并不直接提供导入和导出模型的完整解决方案,但它可以与其他库和工具结合使用来实现这些功能。一种常见的方法是使用three.js的Object3D.toJSON()方法将场景中的数据序列化为 JSON 格式,然后使用其他工具(如three-to-gltf)将这些数据转换为.gltf或.glb格式。对于更复杂的导出需求,你可能需要使用专业的 3D 建模软件(如 Blender)或其他 3D 内容创建工具,这些工具通常提供了更强大和灵活的导出选项。// 创建场景、相机和渲染器。
2024-11-15 07:58:14
625
原创 windows部署MQTT服务端和客户端测试消息发布订阅
• 如果你选择编写客户端程序,可以使用Java、Python等编程语言,并引入相应的MQTT库(如Eclipse Paho MQTT)。通过以上步骤,你可以在Windows上成功部署MQTT客户端和服务端,并实现消息的发布和订阅。• 可以使用基于Qt的MQTT客户端工具,如MQTT X,或者自己编写MQTT客户端程序。• 通常,你需要解压下载的文件,并在命令行中运行相关的启动命令。• 在另一个MQTT客户端中,选择订阅与发布消息相同的主题。• 在一个MQTT客户端中,选择发布消息的主题和消息内容。
2024-11-08 08:27:12
1654
原创 mqtt broker服务端
• 时间可异步:客户端之间信息的发送和接收不需要在同一时间进行,因为发送信息的客户端可以先把数据发到服务端,当相应接收的客户端连接服务器后,服务端再把信息发送给它。• 使用MQTT客户端工具(如Mosquitto客户端、MQTT Explorer等)连接到MQTT代理服务器,进行基本的发布和订阅操作,确保服务器正常运行。• 空间可分离:只要MQTT客户端连接到了同一个网络,二者之间的空间距离便可忽略,即不受空间距离限制进行信息交流,该网络可以是互联网或者局域网。
2024-11-08 08:20:09
234
原创 springboot集成mqtt客户端实现消息发布订阅
在Spring Boot项目中集成MQTT并实现发布/订阅功能,你可以使用Eclipse Paho MQTT客户端库。请确保你的Spring Boot应用程序已经正确配置,并且你有权访问MQTT服务器(在这个例子中是mqtt.eclipse.org)。实现发布和订阅逻辑:使用MqttClient类来连接到MQTT服务器,并使用publish方法发布消息,使用subscribe方法订阅主题。以下是一个简单的Spring Boot应用程序,它集成了MQTT并实现了一个发布者和订阅者。
2024-11-08 08:13:54
1243
原创 springboot分布式websocket集成
在集群环境中,由于有多个WebSocket应用实例,用户可能分布在不同的实例上,因此直接发送消息可能会导致用户无法接收到。为了解决这个问题,可以引入Redis作为消息队列,将所有用户发送的消息先发布到Redis中,然后所有WebSocket应用实例都连接到Redis并订阅相应的消息主题,这样每个实例都能收到并处理这些消息,最终确保无论用户连接到哪个WebSocket应用实例,都能收到消息。• 创建一个控制器来处理消息,并使用@MessageMapping和@SendTo注解来定义消息的处理逻辑和发送目标。
2024-11-07 19:17:17
667
原创 使用RandomAccessFile做分片上传
RandomAccessFile是Java中用来访问那些保存数据记录的文件的类,它允许对文件进行读写操作,并且能够在文件中前后移动读写指针。上述代码中的FileUploader类只是一个示例,并没有实现将buffer封装成MultipartFile对象以及调用上传接口的HTTP请求。getUploadedChunks接口的实现只是为了演示,并没有真正地根据文件内容来判断哪些分片已经上传。在实际应用中,你需要根据文件内容或数据库记录来判断已上传的分片,以实现断点续传的功能。// 分片上传的客户端代码(示例)
2024-11-07 08:13:51
350
原创 大文件分片上传
注意:上述前端代码是简化的,并没有实现断点续传的逻辑。在实际应用中,你需要实现一个更复杂的系统来跟踪已上传的分片,并在上传中断时能够恢复上传。这通常涉及到在客户端存储上传状态(如使用LocalStorage或IndexedDB),并在上传开始时检查这些状态以决定是否需要继续上传或重试失败的分片。注意:上述代码中的mergeChunks方法假设每个分片文件的命名格式为chunkNumber.part,并且是在上传目录中按数字顺序排列的。同时,需要跟踪上传的进度和已上传的分片,以便在上传中断时能够恢复。
2024-11-05 08:08:42
444
原创 MinIO生成带签名的文件下载链接
通过以上步骤,就可以在Spring Boot项目中集成MinIO,并实现文件的安全下载链接生成功能。需要注意的是,生成的下载链接具有有效期限制,并且可以通过策略来控制访问权限,从而确保文件的安全性。在前端代码中,当用户点击下载按钮时,使用生成的下载链接来请求MinIO服务器上的文件。在Spring Boot的配置类中配置MinIO客户端,包括MinIO服务器的地址、端口、访问密钥、秘密密钥以及存储桶名称等。生成对象URL:MinIO服务器为上传的文件生成一个特殊的网址,即对象URL。
2024-11-05 07:50:41
757
原创 微服务启停脚本
以下是一个简单的 Shell 脚本示例,用于控制微服务的启停。该脚本允许你指定服务名、版本、目录和启动参数。为了简单起见,脚本将使用 systemctl(如果你的系统支持)或手动管理进程(如果不支持 systemctl)。请保存以下内容为 microservice_control.sh 文件,并确保该脚本具有可执行权限(例如,使用 chmod +x microservice_control.sh)。sh#!/bin/bashSERVICE_NAME=$1VERSION=$2BASE_DIR=$3PA
2024-10-28 08:07:35
895
原创 JNDI数据源管理
在这个Servlet中,我们首先通过InitialContext获取初始上下文,然后使用lookup方法通过JNDI名称"java:/comp/env/jdbc/myDataSource"查找数据源。在这个配置中,name属性指定了数据源的JNDI名称,username和password属性指定了数据库的用户名和密码,driverClassName属性指定了数据库驱动类,url属性指定了数据库的连接URL。在编写Servlet时,请确保JNDI名称与Tomcat配置中的数据源名称一致。
2024-10-28 07:54:59
430
原创 jdk线程池管理
最大线程数(maximumPoolSize):线程池能够容纳的最大线程数,当线程数量超过核心线程数,且任务队列已满时,线程池会创建新的线程来处理任务,但线程数量不会超过最大线程数。核心线程数(corePoolSize):线程池维护线程的最少数量,当线程数量小于核心线程数时,即使线程处于空闲状态,线程池也会保留这些线程,而不会销毁它们。线程池的状态是通过一个int类型的变量来表示的,该变量的高3位表示线程池的运行状态,低29位表示线程池中的线程数量。如果线程数未达到最大线程数,则创建一个新的线程来执行任务;
2024-10-28 07:44:11
341
原创 时间之神cron表达式
在日域中表示一个月的最后一天,在星期域中表示一个星期的最后一天(通常是星期六,但具体取决于系统配置)。总的来说,cron表达式的解析原理是基于对字符串的分割、特殊字符的识别和替换以及时间模式的构建和匹配来实现的。例如,在分钟域使用5/20,则意味着5分钟触发一次,然后25、45等分别触发一次。识别特殊字符:然后,识别每个时间元素中的特殊字符,并根据其含义进行相应的处理。构建时间模式:根据解析后的时间元素和特殊字符的含义,构建出一个完整的时间模式。匹配时间:最后,将系统当前时间与构建出的时间模式进行匹配。
2024-10-28 07:41:37
703
原创 springboot启动过程
同时,通过实现ApplicationListener接口或添加@EventListener注解,可以监听应用程序中的特定事件,并在事件发生时执行相应的逻辑。在SpringApplication.run()方法中,会创建一个SpringApplication对象,并调用其run()方法来执行启动流程。监听器:通知监听器应用程序启动开始,创建环境对象environment,用于读取环境配置,如application.yml或application.properties文件。
2024-10-28 07:36:38
597
原创 Tomcat线程池监控和压测
Tomcat提供了一个管理界面,通过浏览器访问特定的URL(如http://localhost:8080/manager/status),可以查看Tomcat的运行状态,包括线程池的使用情况。通过合理的监控和压测方法,可以全面了解Tomcat的性能状况,及时发现并解决性能瓶颈,为Web应用的稳定运行提供有力保障。还可以使用一些第三方的监控工具,如AppDynamics、New Relic等,这些工具集成了对Tomcat性能的监控和分析功能,可以提供更加详细的监控和报警信息。一、Tomcat线程池监控。
2024-10-28 07:30:49
542
原创 jmeter集群压测1万用户2千并发场景
总之,使用JMeter进行模拟10000用户、2000并发的集群压测需要仔细准备和配置测试环境、创建合理的测试计划、正确配置分布式测试、执行测试并分析结果。配置控制机:在控制机上,打开JMeter的bin目录,使用jmeter.bat或jmeter.sh脚本启动JMeter,并指定远程执行机的IP地址或主机名。运行测试计划:在控制机上,点击JMeter界面上的“运行”按钮,开始执行测试计划。监控测试结果:通过JMeter的监听器,可以实时查看测试结果,包括响应时间、吞吐量、错误率等指标。
2024-10-28 07:27:00
785
原创 压测工具集合
一款服务于DevOps的性能测试工具,支持各种平台的网站、Web应用、移动应用和API测试。针对Web应用的云端负载测试工具,通过模拟海量点击来测试Web应用在大负载下的性能表现。支持广泛的协议和技术,能够模拟大量用户同时访问系统,测试系统的负载能力和稳定性。一款B/S架构的跨平台的集性能测试、自动化测试、业务监控于一体的国产化测试平台。Radview公司的负载测试工具,可用于测试系统性能和弹性,也可用于正确性验证。可用于Web应用程序的性能测试和功能测试,支持静态和动态资源的测试。
2024-10-28 07:23:21
324
原创 springboot远程调试
Spring Boot远程调试是一种强大的开发调试手段,它允许开发者在本地IDE(集成开发环境)中设置断点,并实时调试运行在远程服务器上的Spring Boot应用程序。如果连接成功,则可以在本地IDE中设置断点,并实时调试远程服务器上的代码。在Spring Boot项目的pom.xml文件中,为spring-boot-maven-plugin插件添加jvmArguments配置,以支持远程调试。在进行远程调试时,需要确保本地IDE中的代码与远程服务器上的代码保持一致。这将大大提高你的开发效率和调试体验。
2024-10-28 07:18:32
710
原创 Revit介绍
在一个停车场项目中,用户可以通过Revit创建停车场的模型,并进行机电系统的设计和分析。利用Revit的机电布线功能,用户可以完成停车场照明和通风系统的设计,并进行能耗分析和优化。Revit是由Autodesk公司开发的一款专业的建筑信息模型(BIM)软件,被广泛应用于建筑设计、结构工程、MEP(机电管道)工程及施工领域。在Revit中,用户可以添加注释、标记、图例和图纸等,以便更好地呈现和传达设计意图。用户可以使用参数和公式来自动化模型的创建和修改过程,提高模型的灵活性和可编辑性。
2024-10-28 07:16:20
487
猿脑共同体2.0思维导图(xmind文件)
2024-05-21
编译原理第三版
2017-09-25
什么是程序员的情绪价值?
2024-06-20
架构师摆摊日记,为啥不挣钱?
2024-05-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人