- 博客(146)
- 资源 (3)
- 问答 (3)
- 收藏
- 关注

原创 「编程羽录」上线,程序员必备的这些技能你能get到嘛?
大家好,我是小羽。好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章。会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识...
2021-04-30 12:00:05
947
22

原创 算法很美,听我讲完这些Java经典算法包你爱上她
大家好,我是小羽。对于编程来说的话,只有掌握了算法才是了解了编程的灵魂,算法对于新手来说的话,属实有点难度,但是以后想有更好的发展,得到更好的进阶的话,对算法进行系统的学习是重中之重的。对...
2021-04-14 12:02:23
623

转载 藏在成都这个阴雨小城里的互联网公司
大家好,我是小羽不知不觉,已经是来成都的第三个年头了,这个南方的阴雨小城,承载了我太多的记忆。其实知道成都还是因为赵雷的一首《成都》而了解这个城市,觉得是一个巴适安逸的小城,以后有机会一定...
2021-04-06 12:22:54
2599
2

原创 【硬核】23种设计模式娓娓道来,助你优雅的编写出漂亮代码!
大家好,我是小羽。我们平时使用的每一个技术栈的原理或者源码都或多或少与设计模式的理念有关联,也可以这么说,只有更好的掌握了设计模式,我们的代码编写才能更规范、简洁,效率更高。其次,设计模式...
2021-04-02 12:53:58
565

原创 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?
大家好,我是小羽。Dubbo 起源于阿里巴巴,对于我们做电商开发的人来说,基本是首选的技术,那么为何一个区区 soa 服务治理框架,会受到这么多人的青睐呢?今天就跟着小羽一起看看这个微服务...
2021-03-25 08:29:43
622
2

原创 全方位测评|M1 这款小小芯片真的全面领跑顶配 i9 Mac 嘛?你想知道的我都告诉你...
大家好,我是小羽。我一直觉得一个东西好不好用,并不是由自己说了算的,也不是别人说了算的,而应该是大多数人用了之后,觉得很不错,那它就是一件好东西。今天小羽除了介绍 M1 芯片的 Mac 的...
2021-02-05 08:30:00
6495
19
原创 「致童真」Tomcat这只猫你还没掌握正确的撸猫姿势,是因为你用错了方式!
另外,为了能加快网络传输速度,开启gzip 压缩也是必不可少的。这里以 tomcat7 的参数配置为例,需要修改 conf/server.xml 文件,主要是优化连。Tomcat 作为 Web 服务器,它的处理性能直接关系到用户体验,下面是几种常见的。用了 Nginx 作为缓存服务器,将图片、css、js 文件都进行了缓存,有效的。gzip 压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平。单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建。最好的办法还是利用下面提到的缓存。
2023-06-01 22:18:37
374
原创 【五一创作】mongoDB的应用场景以及Spring和mongodb的整合
mongodb是非关系型数据库,他的存储数据可以超过上亿条(老版本的mongodb有丢数据的情况,新版本不会有,网上说的),mongodb适合存储 一些量大表关系较简单的数据,例如用户信息,用户注册信息,公司注册信息,留言,评论,操作日志,mongodb还能用分布式文件存储信息,我们主要用mongodb来存储我们项目里面的操作日志(银行的付款转账记录,角色权限的变动日志),我们主要是结合aop来使用的,首先我们来配置一个aop的切面类,再给aop的使用规则,哪个类里面的哪个方法使用当前切面类,利用后置通知类
2023-05-01 02:22:47
1467
2
原创 【五一创作】商城项目中购物车是如何实现的
如果商品不存在,那么调用服务,根据传来的商品id查询商品数量,设置商品的数量为页面传来的数量,取商品的第一张图片(购物车列表只展示一张图片)
2023-05-01 02:07:18
874
原创 【博球一看,记录疯狂】卡塔尔世界杯四强诞生,谁是你心中的冠军得主?
在中,阿根廷6-5点球淘汰荷兰,可谓是站在悬崖边上,绝处逢生了,同时这也是那个男人梅西的最后一次世界杯之旅,作为我最喜欢的球员之一,我还是希望梅西在这次世界杯之路上能走的更远,当然如果能实现哪个最终的目标-冠军,那可以说是给热爱足球以及热爱梅西的粉丝们最好的礼物,也是梅西最后一舞的完美谢幕。而他们的对手正是上一届的冠军法国,法国从一开始一直都是夺冠的热门队伍,而且其对内明星选手拥有皇马大腿本泽马,姆巴佩,逢线,他们的配合十分娴熟,如果可以在球场上打出平时该有的实力,那么他们还是有很大机会去实现卫冕的。
2022-12-12 00:24:10
387
1
原创 【1024程序员节】MySQL数据库的引擎、优化及去重原理
尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独占性,有时会影响数据库的性能,尤其是在很大的应用系统中。索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。MySQL从4.1开始支持SQL的子查询。
2022-10-24 15:25:31
1238
25
原创 【1024程序员节】Spring中用到的设计模式
其特点是,spring 在使用 getBean() 调用获得该 bean 时,会自动调用该 bean 的 getObject() 方法,所以返回的不是 factory 这个 bean,而是这个 bean.getOjbect()方法的返回值。可以这么认为,实现了 Iterable 接口,则表示某个对象是可被迭代的。Spring 中的 org.springframework.jdbc.core.JdbcTemplate 就是非常经典的模板模式的应用,里面的 execute 方法,把整个算法步骤都定义好了。
2022-10-24 15:24:20
632
2
原创 Autowired和Resource的区别
Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
2022-10-23 23:09:45
2188
原创 多线程的作用
随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。从程序运行效率的角度来看,单核CPU不但不会发挥出多线程的优势,反而会因为在单核CPU上运行多线程导致线程上下文的切换,而降低程序整体的效率。多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分利用CPU的目的。这是另外一个没有这么明显的优点了。
2022-10-23 17:43:34
815
原创 Zookeeper必知必会知识点(二)
在恢复模式下,如果是刚从崩溃状态恢复的或者刚启动的 server 还会从磁盘快照中恢复数据和会话信息,zk 会记录事务日志并定期进行快照,方便在恢复时进行状态恢复。议以后,解决 epoch 和 zxid 的冲突,并接受对方的提议,然后向对方发送接受提议完成的消息,重复这个流程,最后一定能选举出 Leader。+ 1 的 Server 票数,设置当前推荐的 leader 为获胜的 Server,将根据获胜的 Server 相关信息设置自己的状。leader,让所有的 Server 都恢复到一个正确的状态。
2022-10-22 01:30:14
480
原创 【1024程序员节】ZooKeeper 必知必会的知识点(一)
注的节点删除,则客户端的 Watcher 会收到相应通知,此时再次判断自己创建的节点是否是 locker 子节点中。端获取到所有的子节点 path 之后,如果发现自己创建的节点在所有创建的子节点序号最小,那么就认为该客户。与文件系统不同的是,这些节点。在获取分布式锁的时候在 locker 节点下创建临时顺序节点,释放锁的时候删除该临时节点。个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。器挂掉,该机器与 zookeeper 的连接断开,其所创建的临时目录节点被删除,
2022-10-22 01:26:37
1052
原创 【国庆活动】Tomcat 的优化方式
内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用 -Xmx -Xms -XX:MaxPermSize 等参数对内存不同功能块进行划分。这里以 tomcat7 的参数配置为例,需要修改 conf/server.xml 文件,主要是优化连接配置,关闭客户端 dns 查询。这里我们采用了 Nginx 作为缓存服务器,将图片、css、js 文件都进行了缓存,有效的减少了后端 tomcat 的访问。单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建 tomcat 集群是有效提升性能的手段。
2022-10-07 00:20:48
1171
36
原创 【国庆活动】SpringMVC必备面试知识点
系统启动的时候根据配置文件创建 spring 的容器, 首先是发送 http 请求到核心控制器 disPatherServlet,spring 容器通过映射器去寻找业务控制器,使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView 进行视图转发,数据放在 model 中,用 map 传递数据进行页面显示。是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。
2022-10-06 00:09:58
475
9
原创 【国庆活动】Spring框架主要模块IOC详解
ApplicationContex 接口对 BeanFactory(是一个子接口)进行了扩展,在 BeanFactory 的基础上添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对 Web 应用的WebApplicationContext。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配 器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。
2022-10-05 01:07:33
795
10
原创 【国庆活动】NoSQL 数据库MongoDB详解
MySQL 和 MongoDB 有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema 的设计和定义,标准化(normalization),速度和性能。更新操作会立即发生在旧的分片(shard)上,然后更改才会在所有权转移(ownership transfers)前复制到新的分片上。从非集群分片升级到集群分片(sharding)是无缝的,所以在你的数据集还不是很大的时候没必要考虑集群分片(sharding)。每一个分片(shard)是一个分区数据的逻辑集合。
2022-10-05 00:53:57
683
2
原创 【国庆活动】关于Spring Beans 的理解
一 个 Spring Bean 的 定 义 包 含 容 器 必 知 的 所 有 配 置 元 数据 , 包 括 如 何 创 建 一 个 bean, 它 的 生 命 周 期 详 情 及 它 的依 赖。当 定 义 一 个 在 Spring 里 , 我 们 还 能 给 这 个bean 声 明 一 个 作 用 域。有 两 个 重 要 的 bean 生 命 周 期 方 法 , 第 一 个 是 setup ,它 是 在 容 器 加 载 bean 的 时 候 被 调 用。
2022-10-04 04:25:44
1015
12
原创 【国庆活动】关于消息中间件Kafka的理解
Kafa consumer 消费消息时,向 broker 发出"fetch"请求去消费特定分区的消息,consumer 指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer 拥有 了 offset 的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的。消息系统都致力于让 consumer 以最大的速率最快速的消费消息,但不幸的是,push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,consumer 恐怕就要崩溃了。
2022-10-04 04:15:56
664
原创 【国庆活动】多线程常考察的方面
这个 java 面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么 String 是不可变的。如果线程因为调用 wait()、sleep()、或者 join()方法而导致的阻塞,你可以中断线程,并且通过抛出 InterruptedException 来唤醒它。你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?这是一道出现在多线程面试的高级阶段的问题。当你调用 start()方法时你将创建新的线程,并且执行在 run()方法里的代码。
2022-10-03 00:57:44
263
2
原创 【国庆活动】掌握这些 Java 常用设计模式,金九银十秋招offer机会都在你手里
因此当你使用抽象类来表示行为时,你的类就不能同时是 Runnable 和 Clonable(注:这里的意思是指如果把 Runnable 等实现为抽象类的情况),如果你看到一个类的不同实现有着不同的方式来做同一件事,那么就应该用重写(overriding),而重载(overloading)是用不同的输入做同一件事。尽管你不能想到具体的设计,但如果你可以指出非功能性需求,提出一些问题,想到关于边界条件,这些都会是很好的。因为在 Java 中你不能继承两个类,但当你使接口时,你的类就可以同时拥有多个不同的行为。
2022-10-03 00:27:04
269
2
原创 【国庆活动】Spring Boot 必知必会的核心理念(二)
Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger 消除了调用服务时的猜测。Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。
2022-10-02 01:32:04
690
8
原创 【国庆活动】Spring Boot 必知必会的核心理念(一)
多年来,随着新功能的增加,spring 变得越来越复杂。只需访问 https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。Spring Boot 是解决这个问题的方法。
2022-10-02 00:54:57
571
8
原创 【国庆活动】消息中间件ActiveMQ常见问题解析
这些预获取的消息,在还没确认消费之前,在管理控制台还是可以看见这些消息的,但是不会再分配给其他消费者,此时这些消息的状态应该算作“已分配未消费”,如果消息最后被消费,则会在服务器端被删除,如果消费者崩溃,则这些消息会被重新分配给新的消费者。难道就这么退回–获取–报错死循环了吗?那么问题来了,如果一条消息不能被处理,会被退回服务器重新分配,如果只有一个消费者,该消息又会重新被获取,重新抛异常。默认的情况下,非持久化的消息是异步发送的,持久化的消息是同步发送的,遇到慢一点的硬盘,发送消息的速度是无法忍受的。
2022-10-01 23:55:19
231
原创 【国庆活动】掌握这些SQL核心理念,一起轻松玩转国庆假期
如果你的 MYSQL 表类型是使用 InnoDB Tables 或 BDB tables 的话,你的 MYSQL 就可以使用事务处理,使用 SET AUTOCOMMIT=0 就可以使 MYSQL 允许在非 autocommit 模式,在非 autocommit 模式下,你必须使用 COMMIT 来提交你的更改,或者用 ROLLBACK 来回滚你的更改。在 SELECT 语句的列比较中使用=,,,,,AND,OR 或 LIKE 运算符。
2022-10-01 01:06:00
625
10
原创 【创作纪念日】我的两周年创作心路历程
今天一打开私信,就看到了这条信息,内心很是欣慰,转眼之间,在csdn上创作已经有两年的时间了,这两年里,从一开始的无从下笔,到现在的写作已成为习惯,离不开社区以及各位小伙伴的支持,简单回一下这两年的心路历程吧~
2022-09-29 10:45:10
441
4
原创 「笔耕不辍」常见远程调用协议
序列化:Hessian 二进制序列化适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较。Hessian 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用。RMI 协议采用 JDK 标准的 java.rmi.*实现,采用阻塞式短连接和 JDK 标准序列。协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信。适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传。化方式,Java 标准的远程调用协议。
2022-09-19 00:17:57
583
24
原创 「创作之秋」关于线程池,你需要了解这些
2、 在线程池中,同一个线程可以从阻塞队列中不断获取新任务来执行,其核心原理在于线程池对Thread 进行了封装,并不是每次执行任务都会调用 Thread.start() 来创建新线程,而是让每个线程去执行一个“循环任务”,在这个“循环任务”中不停检查是否有任务需要被执行,如果有则直接执行,也就是调用任务中的 run 方法,将 run 方法当成一个普通的方法执行,通过这种方式只使用固定的线程就将所有任务的 run 方法串联起来。任务来了,直接有线程可用可执行,而不是先创建线程,再执行。1、 降低资源消耗;
2022-09-18 00:19:39
324
10
原创 【学习笔记】线程的生命周期和状态
运行的线程执行wait方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。join()执行后线程进入阻塞状态,例如在线程B中调用线程A的join(),那线程B会进入到阻塞队列,直到线程A结束或中断线程。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。
2022-09-17 02:32:30
391
4
原创 【学习笔记】事务传播行为与隔离级别介绍
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)容器不为这个方法开启事务不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务必须在一个已有的事务中执行,否则抛出异常必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.事物超时设置:@Transactional(timeout=30) //默认是30秒。
2022-09-16 00:44:40
191
4
原创 Spring 使用注解方式进行事务管理
大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。步骤二、具有@Transactional 注解的bean自动配置为声明式事务支持。事物注解方式: @Transactional。步骤一、在spring配置文件中引入。
2022-09-15 01:23:09
333
4
原创 工作中常用到的Linux命令操作
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。grep -o ‘objStr1|objStr2’ filename|wc -l #直接用| 链接起来即可。-a 显示一个所有的有效连接信息列表(包括已建立的连接,也包括监听连接请求的那些连接)服务:网页浏览端口 能提供加密和通过安全端口传输的另一种HTTP。-p 显示正在使用socket的程序识别码和程序名称。服务:FTP服务器所开放的端口,用于上传、下载。-l 查询正在监听的程序。
2022-09-14 01:18:49
240
8
原创 「笔耕不辍」zookeeper的节点加密方式及分布式锁实现过程
2 .每当进程需要访问共享资源时,会调用分布式锁的lock()或tryLock()方法获得锁,这个时候会在第一步创建的lock节点下建立相应的顺序子节点,节点类型为临时顺序节点(EPHEMERAL_SEQUENTIAL),通过组成特定的名字name+lock+顺序号。3 .在建立子节点后,对lock下面的所有以name开头的子节点进行排序,判断刚刚建立的子节点顺序号是否是最小的节点,假如是最小节点,则获得该锁对资源进行访问。4 .假如不是该节点,就获得该节点的上一顺序节点,并给该节点是否存在注册监听事件。
2022-09-13 00:20:16
531
4
原创 「笔耕不辍」zookeeper集群之间如何通讯
但Zookeeper的通信中最大特点是异步的,如果请求是连续不断的,Zookeeper的处理是集中处理逻辑,然后批量发送,批量的大小也是有控制的。而leader主要承担事务的协调,当然leader也可以承担接收客户请求的功能,为了方便描述,后面的描述都是client与Follower之间的通信,如果Zookeeper的配置支持leader接收client的请求,client与leader的通信跟client与Follower的通信模式完全一样。连接客户端的Follower返回创建成功的session响应。
2022-09-12 00:33:40
524
6
原创 「笔耕不辍」zookeeper的选主过程
判断是否需要更新当前自己的选举情况.在这里是根据选举leader id,保存的最大数据id来进行判断的,这两种数据之间对这个选举结果的影响的权重关系是:首先看数据id,数据id大者胜出;如果没有接收到所有服务器的投票,那判读这个leadId是否得到了一半以后的服务器的投票代码参考,如果是则返回。3 .收到票后,会判断发送过来的逻辑时钟是否大于目前的逻辑时钟,如果是说明集群已经进入了新一轮的投票了。1 . 接收投票消息。5 . 如果等于目前的逻辑时钟,说明是当前的,则更新最大的leader id和提案id。
2022-09-11 00:57:42
533
4
原创 猿创征文|前路有光,初心莫忘,从编程小白,到如今小有所成,我这一路是如何走来的?
无论是谁,对于编程来说,一开始看都很难看懂的,这也是为什么这个行业,属于互联网高薪行业代表的原因之一。我是属于自学编程的非科班码农,在我看来,自学编程应该重点思考下自己的学习方式以及是否对 Java 感兴趣。拿我自己来说吧,第一次接触编程,根本不知如何下手,看书看不懂,觉得自己不适合,但是时刻提醒自己既然选择了这条路,就一定要坚持下去。一路自学过来,没有啥天赋,唯一觉得自己做的还不错的,就是选择了这条路,在开始那段时间,每天都很自律。
2022-09-10 03:09:49
965
原创 zookeeper实际应用场景分析
zookeeper的设计采用的是观察者的设计模式,zookeeper主要是负责存储和管理大家关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。在分布式系统里,我们会把一个服务应用分别部署到n台服务器上,这些服务器的配置文件是相同的(例如:我设计的分布式网站框架里,服务端就有4台服务器,4台服务器上的程序都是一样,配置文件都是一样),
2022-09-10 01:10:40
795
极速使用Docker
2020-11-04
彻底了解|利用Apache CXF框架开发WebService
2020-11-04
关于Redis的操作
2020-10-30
idea如何快速显示包含SpringBoot面板的信息
2022-07-18
java.lang.StackOverflowError null(栈溢出异常)
2022-07-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人