编程开发
未读
八股文系列——Java虚拟机JVM
JVM架构图 运行时数据区 程序计数器 本地方法栈 虚拟机栈 堆 方法区 运行时常量池 字符串常量池 直接内存 类加载时机 创建类的实例 访问类的静态变量 访问类的静态方法 反射,Class.forName 初始化子类(会首先初始化一个子类的父类) 定义了main方法的那个类 类加载流程 加载 ->
编程开发
未读
八股文系列——Java并发
线程和进程的区别 本质区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切
编程开发
未读
八股文系列——消息队列
消息队列有什么用? 通常来说,消息队列有三个作用: 异步 削峰 解耦 除此之外,消息队列还有一个频繁使用的场景是延时队列。 异步 通过将次要操作异步处理,可以减少接口的响应时间,提高系统性能。 比如在购买火车票的场景中,用户在下订单时不需要立马发送短信通知,可以将发送短信通知放入消息队列中,由消费者
编程开发
未读
SpringBoot多版本接口实现
一般来说,Restful API接口是提供给其它模块,系统或是其他公司使用,不能随意频繁的变更。然而,需求和业务不断变化,接口和参数也会发生相应的变化。如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行。这就必须对api 接口进行有效的版本控制。
编程开发
未读
到底为什么不建议使用SELECT *?
“不要使用 SELECT *”几乎已经成为了使用MySQL的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用 *作为查询的字段列表,更是让这条规则拥有了权威的加持。 不过我在开发过程中直接使用 SELECT *还是比较多的,原因有两个: 因为简单,开发效率非常高,而且如果后期频繁添加或修
编程开发
未读
使用Java原生库封装一个简单好用的Http请求工具类
需求 最近在写一个Spring boot的Java后端小项目,而在项目的需求中需要向网络发送http请求收集(爬取)网络上的信息。具体的需求如下: 能发送get、post请求; 通过方法添加查询参数而不是用拼接url的方式; 发送post请求能携带表单数据和json格式的数据; 能添加自定义头信息;
编程开发
未读
使用Spring框架的优点
使用Spring框架的优点:简化Java开发 Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合等方面从Spring中获益。 Spr
编程开发
未读
使用注解装配Bean
一、使用@Component(或@Named)注解 先来观察一下@Component这个注解的声明: @Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interf
编程开发
未读
初学Spring不太容易理解的问题
Q: 控制反转(IoC)是什么?到底是谁的控制被反转了? A: Ioc是一个容器,在Spring中,它会认为一切Java资源都是Java Bean,容器的目标就是管理这些Bean和它们之间的关系。所以在Spring IoC里面装载的各种Bean,也可以理角为Java的各种资源,包括Java Bean
编程开发
未读
四种求最大子序列的算法与分析(python描述)
算法1——穷举法 def method_of_exhaustion(lst):
length = len(lst)
this_sum = max_sum = 0
for i in range(length):
for j in range(i, length):
this_sum =