五年.net程序员Java学习之路

C++游戏逆向实战:从内存操作到Hook技术的完整路径 游戏逆向工程是深入理解软件运行机制的重要领域,其核心在于分析已编译程序的内存结构、数据流和逻辑流程。从原理上看,程序在内存中的布局直接反映了源代码的数据结构设计,尤其是C++这类系统级语言编写的应用。掌握内存操作、指针运算和数据结构对齐等底层知识,能够帮助开发者准确解读程序运行时的状态。这项技术的工程价值在于,它不仅是安全研究和漏洞分析的基础,也是性能优化、兼容性调试和遗留系统维护的关键手段。在实际应用场景中,游戏逆向常被用于单机游戏模组开发、反作弊机制研究、以及软件行为分析等。本文聚焦于C++在游戏逆向中 阅读详情

大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#。恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中。

C#.net非常容易上手,之前在大学里,做过winform和webform开发,也曾经在老师那里承接过小项目,赚点外快。于是在工作岗位上驾轻就熟,很容易就上手了企业开发框架,仅一年多,笔者就成为公司的开(jia)发(ban)骨(feng)干(xian)。

C#.net的网评比Java要差,笔者曾经在知乎上看到一个国外华裔程序员的文章,内容主要是国外的悠闲不加班的生活,文末一句:“忘了说 我是做.net的”引发了讨论的高潮。知乎程序员中,写Java、python、go、JavaScript几乎成了政治正确,作为.net程序员的笔者很少在相关讨论中活跃,但对java的印象已经有了改变。那时笔者所在的外企仍在大规模使用C#.net,笔者也就拒绝去接受网上的喧闹的声音,专心写好代码,学习设计模式和前端技术等等。

恰逢互联网行业发展势头正劲,笔者自然顺势而为,加入了一家规模稍大的互联网公司,当然还是写C#。由于之前在外企任劳任怨,什么活都愿意揽过来干,积累到不少很有用的研发知识和经验,于是在跳槽过程中顺风顺水,基本人家问什么,我都能答出来,于是相对轻松地加入了新公司,开启了互联网研发之路。正是亲眼鉴证了互联网研发模式,才让笔者确定了转型Java的决定。

新公司的框架很老旧,那时还在用.net framework2.0,业务代码非常复杂庞大,某个十年业务的项目里的一个方法,居然有一千多行,单是阅读代码,就让笔者心累,更心累的是,这一千行代码的方法名,居然被叫作“外观模式”(facade)……很难想象公司最核心的业务,跑在这么臃肿烦复的代码里。性能和效率都被看重的互联网研发模式,终于开始和C#.net产生了矛盾:.net framework和iis不开源。系统在运行过程中遇到了如下几个问题:

1、接口服务项目的访问效率遇到瓶颈,基本只能上负载均衡加机器。

2、某些大项目要数十台机器去承载日常访问,运维难度加大(后续上了持续集成和平滑发布,运维方便了很多)。

3、较少数情况,系统会出现一些疑难杂症,当产生问题的代码在闭源工具包里,调试人员几乎束手无策。(反编译的代码真难看囧……)

4、不断增加机器,成本增加,这可不只是机器成本,人家不开源,收费也不便宜……

5、可定制化较差。某些极端场景下,我们希望程序能够更大程度的消耗服务器硬件资源,而服务器程序都是别人的,人家为了安全都设定好“最佳阈值”了,很难更进一步压榨服务器资源。

6、缺乏开源社区支撑、大数据相关研发乏力……

7、国内部分互联网公司提供的开放平台工具,居然不提供C#的SDK……(根据http请求自己写SDK)

诸如此类,不胜枚举。

转Java吧。

技术转型的阵痛在所难免。公司内的接口研发和后台管理系统研发是分开由不同人员负责,能够同时开发接口和后台系统的人并不多。笔者技术体系相对完善,在团队中获得不少尊重。也曾亲自带团队做研发,写完接口又带兄弟研究ckeditor源码并做定制化修改,忙的不亦乐乎。然而转Java成了笔者当时的心病:本职工作做得很好,团队不会允许贸然改用Java技术栈这种冒险行为。笔者已经私下学习了许久,却不能直接上项目实际操练,非常可惜。

精诚所至金石为开,笔者终于等来了一个机会:成为公司新项目的主程序员,负责整个项目的后端架构、设计和研发。新项目人员不多,但都是各类技术中的优秀人才,包含ios、Android和H5研发人员,笔者为他们提供接口,并开发后台管理系统提供给产品和运营同事。

独立负责设计和研发,工作量虽大,自由度却大了不少,于是笔者决定用Java来完成整个开发任务。项目leader对笔者的技术功底很是信任,不过仍希望团队用C#.net追求稳健,但看在笔者执着坚持,也就同意了。为了降低技术转型对新项目带来的风险和进度影响,笔者还是做了一定妥协:用Java研发接口服务,后台管理系统仍用C#.net。

接口研发期间笔者着实吃了不少苦头,项目框架搭建问题层出不穷,spring的运用不纯熟,导致经常在框架层面报错。新项目的座位与公司Java开发团队座位不在同一楼层,笔者几乎每天都要爬几次楼梯去Java研发团队取经。好几次遇到问题解决不了,都想放弃然后用回C#.net。项目leader多次看到此情景曾多次施压,笔者跟项目经理坦(zhuang)言(bi):“如果Java搞不定,我会在两天内用C#.net把活干完,不拖项目进度。”靠着这份坚持和韧劲,还有多次对Java研发团队的叨扰,项目框架终于搭建完成,笔者也借着多次的取经,弄清楚框架的原理,完成了对spring的实践。拥有依赖倒置、控制反转的编程思想和设计模式的运用经验,理解Java框架的设计思路是很简单的,在框架搭建结束后,业务代码的输出几乎是行云流水,在项目完成之际,笔者都忘记自己曾是个.net程序员。项目最终顺利上线,并且仅用两台机器就抗住了较高的并发,笔者对Java有了更多的信任和喜爱。

有.net的编程基础,学习Java会相对容易,但必须逃离几个陷进:

1、对基础知识务必要重视:C#是一门非常出色的语言,它提供的语法糖让复杂的业务表达起来也十分优雅,搭配伶俐的lambda表达式和linq,数据结构的基本原理在大部分场景下都被弱化,而数据结构和算法正是编程的精髓。

2、对原理的渴望和求知欲:用C#编程,无法查看大部分程序集内的方法,只能自己上论坛找或反编译,求知欲可能会逐渐弱化。而写Java后,经常会自己ctrl+鼠标进入方法查看源码。这一点Java真是非常性感。

3、懒人思维不可取:C#.net对于链表数组等数据结构的排序和查询都做了高度封装,几个表达式就能得到想要的结果,而Java的表达式则没这么伶俐。在Java世界里,自己弄明白原理,自己写是更高效、更对得起自己的方案。

使用Java完成商用项目的开发,只是技术转型的开始,只能算踏进门,算不得转型成功。笔者仍花了很多时间学习Java的数据结构;学习Apache的公共工具包,偶尔点进去看看实现源码;继续学习设计模式及其应用。在一些评估用C#研发更容易的项目,笔者仍然坚持用Java去完成。为了能有更多Java项目练手,笔者申请进入了搜索引擎研发部门,通过了Java团队架构师的技术面试,加入了渴望已久的团队,最终能专职写Java做搜索引擎服务。当然,离开了当初的部门,也就抛弃了在老团队中的地位和荣誉,但笔者觉得很值。

在多年开发经历中,笔者确实感悟 语言是互通的,万变不离其宗。学习新语言只要下决心并付出努力,基本都能办到。然而后续的挑战则是更大规模的项目的设计思路,设计模式的运用,架构设计策略,代码堆叠方案,甚至是不同功能模块的技术选型。这些都需要仰仗厚重的经验、扎实的功底和日积月累的技术实力。

未来大数据和机器学习的热潮已经如火如荼的展开,手握Java这一门利器,运用storm、elasticsearch、Hadoop、lucene等绝技的Java程序员,必然能更好的适应潮流。

这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“

加QQ群:585550789(名额有限哦!)

华为AR3260路由器NAT回流配置实战:从WEB界面到命令行的完整避坑指南 本文详细解析了华为AR3260路由器NAT回流(Hairpin NAT)的配置原理与实战方法。针对内网用户无法通过公网地址访问内部服务器的常见问题,文章不仅剖析了WEB界面配置的常见报错原因,更提供了清晰、可靠且一劳永逸的命令行(CLI)配置方案与排错指南,帮助企业网络工程师彻底解决内外网访问不一致的难题。 阅读详情

相关推荐

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

微信小程序开发之布局奇盈绝技

1.微信小程序对flex流式布局支持的相当不错,甚至有些地方可以使用flex进行更改,如在设置image这个标签的时候,内设有个10rpx的底部空间,假如这个空间背景为黑色,那么10rpx这个底部空间就会变成黑色,假如是白色,那就是白色,所以不处理这个底部空间,有可能会影响整体美观,做法很简单 display:flex 在图片样式上面加上这个流式显示,这个底部空间就消失了,是不是很神奇? 2.既...

xiaoko81 408

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100% (1)

公众号推出《QMT量化实战》系列,通过多维度、多策略、多场景讲解QMT量化平台应用,每期附代码解读。本期复现《支持自定义筛选与排序的多因子策略》,策略包含三大核心模块:1. 通过Tushare获取30+财务因子数据;2. 提供灵活筛选机制(支持排除ST股、次新股及特定板块);3. 创新性多因子加权排序系统(支持自定义因子权重组合)。交易逻辑包含动态调仓机制,当持仓标的排名低于阈值时触发卖出。该策略具有高度可配置性,适合不同风险偏好的投资者。(149字)

qq_46262068的博客 1734

oracle中merge into用法解析

merge into的形式: MERGEINTO [target-table] AUSING [source-tablesql] BON([conditional expression]and [...]...) WHENMATCHEDTHEN [UPDATEsql] WHENNOTMATCHEDTHEN [INSERTsql] 作用:判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,...

随风而逝的博客 1425

卡尔曼滤波、互补滤波与Tsinghua滤波:平衡车姿态感知的三大算法对比

本文对比了平衡车姿态感知中的卡尔曼滤波、互补滤波与Tsinghua滤波三大核心算法。互补滤波计算简单,适合入门;卡尔曼滤波理论最优但实现复杂;Tsinghua滤波则是一种面向嵌入式优化的轻量级方案,通过动态权重调整和零偏估计,在资源受限的MCU上实现了性能与效率的平衡,是智能车竞赛等场景的实用选择。

weixin_29232121的博客 349

【MicroPython编程-ESP32篇:设备驱动】-SHT31温度湿度传感器驱动

SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。

视觉与物联智能 234

python绝技

python学习路径: http://www.open-open.com/lib/view/open1455610675323.html

不知火猪 461

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5834

eas 接口 .net二维数组_一个五年.net程序员转Java学习之路

大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#。恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中。C#.net非常容易上手,之前在大学里,做过winform和webform开发,也曾经在老师那里承接过小项目,赚点外快。于是在工作岗位上驾轻就熟,很容易就上手了企业开发框架,仅一年多,笔者就成为公司的开...

weixin_36073895的博客 135

第一节:Vben Admin介绍和初次运行

本文是【实战Vben Admin + Python】的第一节,本文内容主要是介绍Vben Admin框架和我们后端使用的技术,开发环境和工具的准备本节文章的目的是Vben Admin的简单介绍,通过配置可以让项目前端运行起来,由于项目默认开启了mock,展示的都是静态模拟数据,我们在此基础上,下一节将研究分析下Vben Admin的目录。为我们后端搭建准备。

cuiwin的专栏 7420

【ComfyUI专栏】安装Triton组件

Triton是一款支持大模型推理的深度学习加速组件,最初仅支持Linux平台,现已通过开源社区适配Windows系统。针对SageAttention的安装,建议使用3.2.0Post10版本(该版本提供封装好的安装包,更高版本仅有源码)。用户可通过GitHub获取安装资源,或直接使用pip命令"pip install triton-windows"进行安装。安装时需注意:1)在虚拟环境中操作;2)使用管理员权限。相关资源链接已在文中提供。

技术与管理的平衡木- 1871

关于程序员的那些事——一个五年程序员的总结

一晃,做了五年多的程序员了,感觉自己应该是程序员大军中比较典型的一个,班科生毕业,直接加入了软件开发的行列,先是小公司,然后大公司,走了一条典型的程序员的路线。 虽然我不是大牛,但是感觉在我这样普通程序员身上所能得出的一些结论可能更加适合广大的程序员兄弟们,让我们在程序开发的路上,共勉。 话说,五年前,我是一只小小鸟,一头扎进了dot Net开发的丛林,没能变成猎手,却险些变成了猎枪下的亡魂… 回首往事,曾经有过太多的经验和教训,现总结如下: 一、要想飞的更高,我需要一双有力的翅膀… 一双有力的翅膀,是飞行

梦子微信 654

基于 STM32 单片机的实验室多参数安全监测系统设计与实现

本系统以 STM32F103C8T6 单片机为核心,集成温湿度监测、烟雾检测、气体泄漏报警、人体移动监测等功能模块,通过 OLED 显示屏实时显示数据,并支持 Wi-Fi 远程传输。系统可对实验室异常环境参数(如高温、烟雾、燃气泄漏)及非法入侵实时报警,保障实验室安全。本文从硬件选型、电路设计到软件实现提供了完整的实验室安全监测系统方案,可根据实际需求调整传感器类型和通信方式,适用于科研、教学等场景的环境安全防护。:可增加继电器模块控制通风设备或切断电源,集成 ZigBee 组网实现多实验室联动监测。

weixin_42300449的博客 1285

三到五年Java工作经验的程序员未来该如何发展

在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 写在前面: 大家本时工作忙,应该没有太多的时间整理体系的学习资料,小编趁着在准备面试的一段时间,收集整理一套最新的BAT面试真题,以及Java核心知识点笔记,Java架构进阶视频,需...

weixin_45127309的博客 2531

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

未来五年程序员应当具备的十项技能

  未来五年程序员应当具备的十项技能作为一名程序员,如果你想在这个领域内继续向前进步或者在当前的经济形势下保持不被炒鱿鱼,那么你就决不应当自满自足,你需要继续学习。近日,著名IT评论员Justin James在他的博客中列出了未来五年程序员应当具备的十项技能,如果照此实践,你未来的工作前景一定一片光明。当前的经济形势下,很多程序员将目光聚焦在短期内的工作形式上,但是你仍然要抽出

程序人生 1068

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java程序员转.NET_一个.net的程序员如何转到java的?

先说明,大佬请忽略我这篇文章, 我是一个做了5年的纯种C#开发人, 我在此仅记录一下我转java的过程.都知道, java是开源的,所以它的开发工具贼多,不像.net, 直接地表最强的IDE.像现在最流行的是intellij idea,前几年常用的是Eclipse 和MyEclipse, 但我遵从大众的初衷, 是从Eclipse. 我没有刻意去了解它这个工具是怎样,首先我先了解它是如何创建项目...

weixin_39804629的博客 586

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

程序员的成长故事之 五年技术之路

                                                                            五年技术之路                                                                                          章立民 / 文本月,《程序员》邀我写篇文章,回顾5年来的

《程序员》官方BLOG 1万+

独家:未来五年程序员应当具备的十项技能

<br />作为一名程序员,如果你想在这个领域内继续向前进步或者在当前的经济形势下保持不被炒鱿鱼,那么你就决不应当自满自足,你需要继续学习。近日,著名IT评论员Justin James在他的博客中列出了未来五年程序员应当具备的十项技能,如果照此实践,你未来的工作前景一定一片光明。<br /><br />当前的经济形势下,很多程序员将目光聚焦在短期内的工作形式上,但是你仍然要抽出时间和精力学习新的技能。以下是作为程序员应当即刻学习的十项技能,以确保在未来五年内你的简历上有真材实料。当然这个名单很难做到详尽而没

sjxbf的专栏 538

【转】未来五年程序员需要掌握的10项技能

未来五年程序员需要掌握的10项技能 转自: http://cocre.com/?p=511由于最近经济形势的变化,很多开发人员只关注他们短期的工作前景。与此同时,把时间和精力花在学习最能带来回报的新技术上是件非常重要的事情。这里是我们列举的10种你需要马上开始学习的技术,让你的简历在未来5年不会落伍。这个列表并不完全,有很多业界的领域(比如大型机开发人员)没有涉及。尽管如此,对通常的主流开发...

weixin_30911809的博客 144

zz未来五年程序员应当具备的十项技能

王靖雄(C/C++学生) 426

Java程序员职业规划如何做?

在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。

jcc4261的博客 2020
上一篇: Java程序员新手老手都离不开八大开发工具
下一篇: 做了5年Java开发,你必须重视这一点
java1856905
博客等级 码龄8年 100粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值