avatar
文章
71
标签
58
分类
21

主页
标签
分类
链接
关于笔者
玲辰书斋
搜索
主页
标签
分类
链接
关于笔者

玲辰书斋

Web Server & Application Server解惑
发表于2024-04-16|Ruby
Web Server & Application Server解惑 参考文章与书籍 ruby网络编程 构建你自己的Web服务器 为什么我们需要Ruby中的应用服务器(比如Puma)? rack探索 Puma 源代码分析 码农翻身2 如果你使用Java或Ruby开发过Web项目,你一定了解过Tomcat和Puma,他们本质上都是一种容器,具有监听端口,返回文件或动态内容的服务。但这样的表述有点儿抽象,SpringBoot 和 Rails 为什么不自己去做所有的事儿?而是需要在内部嵌入这么个玩意儿。我们从历史进程中一点点看。 Web服务器的历史版本1最初Web服务(Web Server)是一个很简单的玩意儿,在端口上监听,解析HTTP请求,把请求对应的文件返回。 实际上只要了解socket编程与HTTP网络协议,就能很简单的制作出一个玩具Web服务器。参考这篇文章:构建你自己的Web服务器。 版本2很常见的一个需求,鉴权操作。我需要通过解析请求,知道对方是谁,并从数据库中查询一下对方是否有权限,我们称为应用服务(Application Server)。 但是版本1中的服务不 ...
求上得中,换工作的小故事
发表于2024-03-20|个人经历
求上得中,换工作的小故事转眼间在程序员这个行业已经工作一年多了,一年前我兴奋的写下:勇闯SAP失败,勇敢转行成功,现在结合这一年来发生的故事,想再写点儿有意思的事儿。 去年入职后,我在一家创业团队里负责java后端开发,工作中遇到的问题都感到新奇。每一天都过的充实开心,在业余时间也会经常看看书,比如: 《码农翻身》,《程序员的职业素养》之类的,我发现作者们都提到了一种优雅的编程语言:ruby,相信大部分人可能都不知道这个名字,而市面上主流的培训机构也没有这门语言的身影,从就业情况来看,在Boss直聘上西安使用它的公司仅有三四个。而使用java的公司已是成百上千。好吧,那看来学习它完全是在浪费时间。但能被这么多优秀的作者说起的语言,肯定不是一个无名之辈吧,我尝试着去了解它。 随着了解的越深,我越发现它的有趣性,但由于国内的资料少,便找来国外的资料教程学习,并翻译出来。发布在了RubyChina上(这是我们目前看到的国内最好的语言社区)。而随着这一路的探索,我也发现了很多意料之外的领域和知识。随着我在社区的活跃,也让很多人看到了我的文章。其中一位就是西安一家公司的大佬,邀请我去他们公司看看 ...
加密算法的演化过程
发表于2024-02-16|演化过程系列
加密算法的演化过程阶段1(明文):A 和 B在网上聊天,但是双方完全使用明文的方式传输信息,那如果有一天,A问B要游戏账号和密码,B发送了过来,这时候信息一旦被第三个看到,信息直接泄露。 阶段2(对称加密):A 和 B商量一下,以后咱们说话,先通过一个工具加密一下,比如每个字母往后3位,等你收到了信息,再利用工具,把每个字母往前3位,这样就保证信息即便被人看到了,也不知道说什么这个也叫对称加密,即加密和解密来自于一个秘钥。但这里仍有个问题,这个加密解密方法(秘钥)怎么安全让对方知道,别人都知道咱们是怎么加密解密的了,那即使发送的加密信息也没用啊,除非A跑到B他们家,给出秘钥。但全球范围内的通讯,不能这么搞吧。 阶段3(非对称加密):A 和 B又发现了新方法,咱俩一人创建一个公钥和私钥,然后交换对方的公钥,这个公钥即使被人看到了也无所谓,当你要给我发消息时,你用我的公钥进行加密,然后发给我,我在我这里用自己的私钥再解密即可,这样私钥只在我一个人手上,就不担心信息泄露了。这也叫做非对称加密但是用了一段时间后,A和B都感觉和对称加密比起来,非对称加密太慢了,已经严重影响沟通了啊。 阶段4(加 ...
TDD In SpringBoot
发表于2024-01-27|测试
参考资料: 文章讲解TDD 视频讲解TDD 测试驱动开发在项目中的实践 TDD的概述代码示例说明这里我根据github的代码,进行简要的说明和讲解,最后我们会自己来写一遍测试。从接口层开始编写测试,从上至下,从接口到数据访问的顺序编写测试Controller层测试@WebMvcTest(controllers = PokemonController.class) @AutoConfigureMockMvc(addFilters = false) @ExtendWith(MockitoExtension.class) public class PokemonControllerTests { @Autowired private MockMvc mockMvc; @MockBean private PokemonService pokemonService; @Autowired private ObjectMapper objectMapper; } mockMvc:用来模拟HTTP请求 objectMa ...
2023年度总结
发表于2023-12-31
2023年度总结成长二月份入职后,整个生活节奏快了很多,最初是先熟悉公司的系统框架,然后是梳理公司的业务流程,封装一些第三方的接口,后来领导看我熟练后,开始将一些简单的新业务让我来设计去做,我觉得这也算是小型公司锻炼人的一点,因为什么都要做,人员就那么几个,只要自己能力够,很快就能接触核心业务,而业务范围并不会太广。 这期间当然也犯了很多错误,不论是写新的业务还是维护老的代码,感谢领导和老板对我的包容,也因此让我对代码产生敬畏心,有一个好的代码规范十分重要,这体现在各个角落中:命名约定,条件判断,异常处理,代码组织方式上。这是我们在学习时最基本的课程,却也是工作中最重要的一部分,当维护一个有八百行的函数时,改哪里都是心惊肉跳的,每次上线都在心中默默祈祷千万别出问题。 今年没有花太多时间去学那些高大上的技术,因为完全用不到,也越发感受到不要过早将事情复杂化。主要精力还是集中在编写好的代码上,直到现在我才渐渐有意识的使用面向对象思想,其中两点让我印象深刻:异常处理,职责划分。 比如在看代码时,我们都不希望行数过多,因为这代表代码的职责也就越多,往往希望一个函数只做一件事。当函数在做处理并需 ...
Effective Ruby
发表于2023-12-23|Ruby
熟悉Ruby第一条:ruby中的True与False 在Ruby中,除了false和nil,其他值都为true,包括数字0 true和false并不是关键字,而是一个全局常量但不遵守命名规范和赋值规范 不遵守命名规范是因为,它没有以$开头 不遵守赋值规范是因为,无法写ture = something true.class => TrueClass false.class => FalseClass 既然不是关键字,true和false就有着对象方法 如false和nil都代表 false,那我们怎么进行区分? 这一点在表示配置信息对象中会贯穿始终,因为false一般代表禁用,nil代表未赋值,使用默认值等。 最简单的方式是 obj.nil? 判断是否为nil 还可以使用 false == obj 来进行判断,在一般常规语言中,我们倾向于把不变量放到左边,但这里我们有着功能性上的考虑,因为false是一个对象,而FalseClass定义了==方法,也就是说这里实际执行为 false.==(obj)。这也太牛逼了。比如一个类也定义了==方法,则可能就会出现混乱的样子,比如 ...
面向对象的演化过程和解决问题
发表于2023-12-23|演化过程系列
面向对象的演化过程和解决问题 前言: 相信大家对面向对象这个概念已经很熟悉了,如果你是使用Java入门编程的,一定会被大量灌输:类,继承,多态的概念,但我们真的理解它们吗?一切就好像自然而然,写代码不就应该是这样吗?但事实上这些概念,只是我们脑海中的一个毫无意义的符号,当我们写一个类时,我们只是按照被教导的方式编写。好比现在最多的Web开发,业务是用户的增删改查,我们想到用户会有:name,age,gender属性。于是我们创建一个实体: class User { String name; Integer age; Integer gender; } 然后按部就班的写出Mapper(或Dao)层,Service层,Controller层,这就是MVC结构,它是如此的好用,让我们编写简单业务时十分顺手。但是当业务逐渐复杂时,我们在Service,Controller层中添加了大量的外部依赖,各种依赖注入,大量重复的代码堆砌在各个角落,一个变量被各个函数引用修改,当出现问题时,我们不得不到各个函数中查看,到底哪里出了问题,面向对象中的概念已抛到脑后。而且 ...
前端问题解惑
发表于2023-11-22|演化过程系列
前端问题解惑​ 如今前端发展的太快了,让我们这些只会基础HTML + CSS + JS的人无所适从,大量的组件,大量的工具,让人不知道到底干嘛的,所以这里写下最近的学习所得,强烈推荐资源:theodinproject 和 modern-javascript-explained-for-dinosaurs。 前后端渲染后端渲染​ 如果你用过Java编写过Web项目,应该听说过Servlet 和 JSP这玩意儿,Servlet可以处理HTTP请求并生成响应,JSP是简化版的Servlet,用户通过访问Servlet,获取服务端的HTML页面,通过JSP可以在HTML中嵌入Java的代码,比如条件判断,循环,数据访问等等,增强页面展示和动态性。你可能会疑惑,为什么那时候不用Js啊,因为那时候的Js只能做一些简单的动态效果,表单验证之类的功能。 ​ 一切看起来不错,但有一些问题存在: 占用服务器资源多,所有计算在服务器完成。 每请求一次,都要从服务器上获取完整的HTML,比如我就想更新页面上一小部分,却需要下载整个页面(这里就引出了后面的ajax)。 ...
如何测试驱动开发
发表于2023-09-10|Ruby
前言 ​ 最近在读《匠艺整洁之道-程序员的职业修养》这本书,作者鲍勃大叔开篇就用了大量的示例来讨论与演示为什么需要和如何操作测试驱动开发。我是之前写过测试,但从不知道测试如何驱动开发,大部分情况下也只是先写生产代码,写好后再测试,看看是否能调通,再修改代码中隐藏的问题。​ 而测试驱动开发会扭转这种思维方式,是先写测试,再写对应的生产代码。这一开始让人会觉得很奇怪,感觉并且很麻烦,但当你尝试一下,就会发现这事儿挺有趣,且神奇。​ 温馨提示:Clean Craftsmanship: Disciplines, Standards, and Ethics (Companion Videos),这个是该书示例操作的视频说明,非常非常非常有用!!! 第一篇是讲述如何通过测试驱动开发来写一个栈结构。我严重怀疑大叔是不是一边写代码一边喝啤酒。整个过程伴随大叔魔性的笑声和宛如魔法般的操作,就好像他在不停调戏编译器。你会通过这个视频感受到如何从零开始,进行测试驱动开发。​ 下面将讲讲一些基础知识。 为什么需要测试驱动开发? ​ 就我目前的现状,我能感受到重构代码时的痛 ...
发布自己的GEM
发表于2023-08-28|Ruby
生成基础文件结构bundler gem your_gem创建一个基础文件结构第一次使用时,需要配置一些默认值: 测试Creating gem 'demo_gem'... Do you want to generate tests with your gem? Future `bundle gem` calls will use your choice. This setting can be changed anytime with `bundle config gem.test`. Enter a test framework. rspec/minitest/test-unit/(none) CIDo you want to set up continuous integration for your gem? Supported services: * CircleCI: https://circleci.com/ * GitHub Actions: https://github.com/features/actions * GitLab CI: https: ...
123…8
avatar
庚辰
要么读书,要么旅行,身体和心灵总有一个要在路上.
文章
71
标签
58
分类
21
Follow Me
最新文章
警惕AI
警惕AI2025-04-06
Ruby元编程实战
Ruby元编程实战2025-02-09
RSpec 测试示例与技巧说明2025-01-12
位运算 & (与)实际应用2024-12-08
Zed动态查询2024-12-03
分类
  • JVM5
  • Java4
  • LSP1
  • Linux2
  • Redis2
  • Ruby9
  • Spring4
  • Turbo-Rails11
标签
AI AQS锁 Filter IOC IO流 Interceptor JavaScript LSP Mysql OOP Promis RMI RPC Rails Ruby SDK SQL Servlet Shell SpringMVC SublimeText Zed electron jdbc mysql opencv orm ruby rubyGem turbo 事务 二叉树 位运算 元编程 内存分配 内存溢出 加密,https 博客搭建 反射 垃圾回收
归档
  • 四月 20251
  • 二月 20251
  • 一月 20251
  • 十二月 20242
  • 十月 20241
  • 八月 20241
  • 七月 20241
  • 六月 20241
网站资讯
文章数目 :
71
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By 庚辰
框架 Hexo|主题 Butterfly
陕ICP备2022014054号
搜索
数据库加载中