纯真的Java

知乎上的帖子说起

我做java web有几年了,总是写很多业务逻辑,对底层并没有清晰的认识,每天面对的是各种繁杂的业务应用...各种框架...等等。

做web多了没有什么激情了,没有那种能学到新知识信息的感觉了,我自己开始学习关于底层的东西,比如计算机系统,Linux编程等等...

于是我有个想法,打算转到其他领域,...

...希望邀请的大牛和有过这方面经历的人指点迷津,感谢!

面试的一段对话

考官:“你知道网络的7层架构吗?”
A 君:(笑)
考官:“为何发笑?”
A 君:“没听说过还有7层架构,只听过3层架构”
考官:(惊)“哪三层?”
A 君:“MVC”
考官:(无语)。。。


考官:“你知道Java最擅长的地方是什么?”
B 君:“网络”
考官:(喜)“网络的哪些方面?”
B 君:“Web应用”
考官:(汗)。。。
因为,从一上班就弄Web

很多人已经忘记了的Java的纯真

用Java去写跨平台的基础软件,利用Java优秀的网络处理能力,去探寻异构系统跨平台Java多线程服务程序。

Java的Socket程序也许是你用得最多的一个应用方向。每天都在为Java多线程的开销而烦恼,不断的进行性能诊断和系统的调优。

有的时候为了解决Java的内存消耗太大的问题彻夜未眠。为了降低内存的消耗,减少与磁盘交换数据的可能性而烦恼。为了让Java程序跑得快,不 断的去尝试简化应用程序

互联网让纯真,再次回归

快速上线

高并发

海量数据

SaaS

以上在有些程序员眼里,好像跟Java都没有关系

再看看这些跟Java有关系吗?

5000次/秒并发的服务

1w台网络设备监控指标采集9秒完成

从每天数据增量在20GB的数据库里拿数据出图表

高并发的DNS Server

......

告诉大家,这些都是Java开发的

有个乌龙事件


其实我是先做的对比


一个笑话

曾经的一个这样的团队:

这个团队的开发主管没有从影响导出速度的“大数据量”方面下手解决问题,而是想当然的认为速度慢的影响主要来自Java语言本身,这当然最终导致程序的失败。

锋利的设计

我们要的是红缨枪

而不是青龙偃月刀

  • 总想完美,总想无瑕疵,总怕有人说自己不专业

  • 程序设计的越来越复杂,无任何必要的滥用设计模式

  • 被架构师拖死的公司比比皆是,真是哀鸿遍野......

• ps:几个小故事

• 他们把领导,客户,投资人,程序员一并拖死了。

老板们经常犯的错误

很多老板以为投入足够的人和钱就可以作出好系统

其实不然,就好比一个丑女即使浑身上下都披上金条,却仍然是丑女。

最终,唯一的结果就是:钱花光了

锋利的例子之一


锋利的例子之二


锋利的例子之三


回到本讲刚刚开始的那个帖子

引用我书中的一段话:

让我们变得不再纯真的并不是Web开发工作本身,让我们不再纯真的是 包裹在一个单纯的Java开发技术外的复杂的、八股的、晦涩的概念, 让我们变得越来越虚伪,越来越务虚。

本讲观点:Java是纯真的

我们应让Java自由、直接、透明、简单、高效,像匕首那样锋利,像战士那样勇猛,像农夫那样朴实。

反对繁琐华丽的设计,反对架床迭屋的层层抽象,反对复杂的结构和不必要的灵活性。

吃饭就是吃饭,喝酒就是喝酒,抓肉就是抓肉。

别拒绝Ta...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
纯真 IP 库是一个比较常用的 IP 归属地查询库,可以在 Java 中通过读取纯真 IP 库的二进制文件来获取 IP 地址的国家和地区信息。 以下是一个使用纯真 IP 库查询 IP 地址归属地的示例代码: ```java import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class IP2CountryExample { public static void main(String[] args) { String ip = "127.0.0.1"; try { File file = new File("C:\\Program Files (x86)\\QQBrowser\\QQBrowser.exe"); RandomAccessFile raf = new RandomAccessFile(file, "r"); // 读取索引区头信息 int indexStart = raf.readIntLE(); int indexEnd = raf.readIntLE(); int indexCount = (indexEnd - indexStart) / 7 + 1; // 二分查找 IP 地址所在的索引 long ipLong = ipToLong(ip); int low = 0, high = indexCount - 1; while (low <= high) { int mid = (low + high) / 2; long midIp = readIp(raf, indexStart + mid * 7); if (ipLong < midIp) { high = mid - 1; } else if (ipLong > midIp) { low = mid + 1; } else { // 找到了对应的索引 int countryOffset = readInt24(raf); raf.seek(countryOffset); byte countryFlag = raf.readByte(); if (countryFlag == 1) { // 表示国家信息被重定向到其他位置 int redirectOffset = readInt24(raf); raf.seek(redirectOffset); } String country = raf.readLine(); System.out.println("Country: " + country); break; } } raf.close(); } catch (IOException ex) { ex.printStackTrace(); } } // 把 IP 地址转换成 long 类型 private static long ipToLong(String ip) { String[] ips = ip.split("\\."); long result = 0; for (int i = 0; i < ips.length; i++) { result = result * 256 + Integer.parseInt(ips[i]); } return result; } // 从文件指定位置读取 3 字节无符号整数 private static int readInt24(RandomAccessFile raf) throws IOException { byte[] bytes = new byte[3]; raf.readFully(bytes); return ((bytes[2] & 0xFF) << 16) | ((bytes[1] & 0xFF) << 8) | (bytes[0] & 0xFF); } // 从文件指定位置读取 4 字节无符号整数 private static long readInt32(RandomAccessFile raf, long pos) throws IOException { raf.seek(pos); int ch1 = raf.read(); int ch2 = raf.read(); int ch3 = raf.read(); int ch4 = raf.read(); if ((ch1 | ch2 | ch3 | ch4) < 0) { throw new IOException("EOF"); } return ((long) ch1 << 24) + ((long) ch2 << 16) + ((long) ch3 << 8) + (ch4 & 0xFF); } // 从文件指定位置读取 4 字节有符号整数 private static int readInt32LE(RandomAccessFile raf, long pos) throws IOException { raf.seek(pos); int ch1 = raf.read(); int ch2 = raf.read(); int ch3 = raf.read(); int ch4 = raf.read(); if ((ch1 | ch2 | ch3 | ch4) < 0) { throw new IOException("EOF"); } return (ch4 << 24) | (ch3 << 16) | (ch2 << 8) | ch1; } // 从文件指定位置读取 4 字节无符号整数 private static long readUInt32LE(RandomAccessFile raf, long pos) throws IOException { return readInt32LE(raf, pos) & 0xFFFFFFFFL; } // 从文件指定位置读取 IP 地址 private static long readIp(RandomAccessFile raf, long pos) throws IOException { return readUInt32LE(raf, pos); } } ``` 在这个示例中,我们使用了纯真 IP 库的二进制文件,通过读取索引区头信息和 IP 地址所在的索引,然后读取对应的国家信息来获取 IP 地址的归属地信息。需要注意的是,这个示例代码仅仅是一个演示,实际使用中需要根据具体的纯真 IP 库版本进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值