
技术总结
文章平均质量分 90
你呀不牛
你不牛,认识再多牛人也与你无关--公众号你呀不牛
展开
-
docker命令图文详解
docker命令图文详解原创 2022-09-18 23:18:56 · 999 阅读 · 1 评论 -
【算法提升计划】算法开篇
一直想着开始刷刷题,即便是不出去面试,也能锻炼下思维逻辑,但是总是半途而废由此便想到了作为学渣的我,高中英文被单词时经常连第一个abandon都记不住,这就跟现在的力扣算法第一题一样,记得多年前其实是看过思路的,现在发现做的还是磕磕绊绊那就趁着掘金活动,把一些题结合这自己的理解,保证每天一道题的速度到春节吧,以此为证单词表中的abandon万事开头难,现在就从单词第一个入手,这道本身也不难,所以就从他开始了two sum今日题目给定一个整数数组 nums 和一个整数目标值 target,请你在原创 2021-11-17 16:57:42 · 161 阅读 · 0 评论 -
工作后再来聊聊IO
常见IO模型对比IO是Input/Output的缩写。Linix网络编程中有五种IO模型:blocking IO(阻塞IO)nonblocking IO(非阻塞IO)IO multiplexing(多路复用IO)signal driven IO(信号驱动IO)asynchronous IO(异步IO)简介Java.io包基于流模型实现,提供File抽象、输入输出流等IO的功能。交互方式是同步、阻塞的方式,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞。java.io原创 2021-08-26 22:49:17 · 161 阅读 · 0 评论 -
五年了,你还在用junit4吗?
junit5JUnit5在2017年就发布了,你还在用junit4吗?什么是junit5与以前的JUnit版本不同,JUnit 5由三个不同子项目的多个不同模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform为在JVM上启动测试框架提供基础。它还定义了TestEngine API, 用来开发在平台上运行的测试框架。此外,平台提供了一个控制台启动器],用于从命令行启动平台,并为Gradle和Maven提原创 2021-04-17 12:06:02 · 256 阅读 · 0 评论 -
小心,别被eureka坑了
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。具体怎么部署这里就不说了,直接说问题Eureka 客户端注册时需要配置服务端地址,类似如下配置eureka: instance.原创 2021-04-14 22:13:10 · 1512 阅读 · 0 评论 -
你才不是只会理论的女同学-seata实践篇
本文主要内容为seata的实践篇,理论知识不懂的请参考前文:我还不懂什么是分布式事务主要介绍两种最常用的TCC和AT模式。环境信息:mysql:5.7.32seata-server:1.4.1SpringCloud:Hoxton.SR10SpringBoot:2.3.8.RELEASE注册中心:Eureka涉及服务:Seata-server1、在file.conf中修改mode = “db”然后配置DB信息: ## database store property db .原创 2021-04-06 12:51:01 · 166 阅读 · 0 评论 -
我还不懂什么是分布式事务
老大:来,你搞一搞分布式事务吧我:…,啥是事务?我:先从理论学起吧我不懂什么是事务如果事务都不懂,就更不用说分布式事务了,于是我马上开始学习了。事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。事务应该具有 4 个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID 特性。换成比较容易理解的话就是,就是一组操作比如增删改查四个操作要么都成功,要么都失败,不存结果不一致的状态。我不懂什么是分布式事务终于弄明白什么是事务了,又.原创 2021-03-30 09:39:23 · 159 阅读 · 0 评论 -
Java杂谈之缓存
0、缓存最近开发涉及很多缓存的编写,所以聊聊缓存可能会出现的问题1、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。2、缓存穿透请求缓存中不存在的数据,从而去数据库中查,数据库中也没有,所以无法加到缓存,下次还是直接怼到数据库,所以高并发的时候就导致数据库崩了。如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:原创 2020-10-09 22:04:58 · 188 阅读 · 0 评论 -
震惊guava竟然有“坑“
由Guava API的一个“坑”说开去最近,团队里边一个兄弟突然叫我:快来看,有个奇怪的事情,无法解释…笔者跑过去一看,是这么一段代码: private static class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = n原创 2020-09-26 21:13:24 · 588 阅读 · 0 评论 -
Java杂谈之synchronized锁升级
不在犹豫什么是用户态与内核态所有的JVM底层原理逃不开操作系统,从操作系统层面看程序分为内核态和用户态内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。为什么要有用户态和内核态呢?由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, 划分出两个权限等级 – 用户态原创 2020-08-17 23:33:04 · 743 阅读 · 0 评论 -
java杂谈之线程池
1、为什么要使用线程池受限于硬件、内存和性能,我们不可能无限制的创建任意数量的线程,因为每一台机器允许的最大线程是一个有界值。线程池就是用这些有限个数的线程,去执行提交的任务。然而对于多用户、高并发的应用来说,提交的任务数量非常巨大,一定会比允许的最大线程数多很多。为了解决这个问题,必须要引入排队机制,或者是在内存中,或者是在硬盘等容量很大的存储介质中。Java提供的ThreadPoolExe...原创 2020-03-22 23:34:26 · 206 阅读 · 0 评论 -
java8内存模型
大多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常有用的,在这里面了解JVM的GC原理,是非常重要的一块知识。 我们都知道对于一系统,如果JVM频繁发生FULL GC,那么将会是致命的危险,不仅仅会造成响应迟钝,更严重的时候会导致系统崩溃,这对用户体验来讲,都是我们不愿意看到的。在JVM里的内存空间,从大的层面划分,主要有新生代空间(Young)和老年代空间(...原创 2020-02-28 22:15:07 · 197 阅读 · 0 评论 -
强悍的Spring之AOP CGLIB实现
1、什么是CGLIBCGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联。2、为什么使用CGLIBCGLIB代理主要通过对字节码的操作,为对象引入间接级别,以控制对象的访问...原创 2019-11-27 14:32:43 · 263 阅读 · 0 评论 -
强悍的Spring之AOP动态代理实现
1、初识代理Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的过度耦合问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能...原创 2019-11-26 20:19:01 · 209 阅读 · 0 评论 -
dropwizard常用属性注解
dropwizard框架默认使用的fastxml的jackson注解一、两种情况下都有效的注解1. @JsonIgnore@JsonIgnore 用来告诉 Jackson 在处理时忽略该注解标注的 java pojo 属性,不管是将 java 对象转换成 json 字符串,还是将 json 字符串转换成 java 对象。下面是一个具体的例子首先定义一个java pojo类1234567891011...原创 2018-04-23 19:54:10 · 1034 阅读 · 0 评论 -
强悍的Spring之spring validation
spring validation实现对Restful请求的数据进行校验1、前言数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,如果数据库中出现一个非法的邮箱格式,也会让运维人...原创 2019-02-16 15:33:31 · 30632 阅读 · 3 评论 -
强悍的Spring之Spring Retry
强悍的Spring之Spring Retry在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活。Spring异常重试框架Spring RetryS...原创 2019-03-09 21:09:05 · 364 阅读 · 0 评论 -
Java中的Arrays.asList()最理想假设
Java编程思想一书中有类似的一段描述:观察main函数中list几会编译不通过class Father{}class Son1 extends Father{}class Son2 extends Father{}class GrandSon1 extends Son1{}class GrandSon2 extends Son1{}class Grand...原创 2019-04-01 19:14:59 · 131 阅读 · 0 评论 -
java杂谈之浅谈行为参数化
前言在软件工程中,一个众所周知的问题就是,不管你做什么,用户的需求肯定会变。比方说,有个应用程序是帮助农民了解自己的库存的。这位农民可能想有一个查找库存中所有绿色苹果的功能。但到了第二天,他可能会告诉你:“其实我还想找出所有重量超过150克的苹果。”又过了两天,农民又跑回来补充道:“要是我可以找出所有既是绿色,重量也超过150克的苹果,那就太棒了。”你要如何应对这样不断变化的需求?理想的...原创 2019-05-13 21:49:13 · 252 阅读 · 0 评论 -
Java杂谈之Java8重构指南
新的语言特性常常让现存的编程模式或设计黯然失色。比如Java 5中引入了for-each循环,由于它的稳健性和简洁性,已经替代了很多显式使用迭代器的情形。Java7中推出的菱形操作符(<>)在创建实例时无需显式使用泛型,一定程度上推动了Java程序员们采用类型接口(type interface)进行程序设计。对设计经验的归纳总结被称为设计模式。设计软件时,如果愿意,可以复用这些方式方...原创 2019-05-30 21:42:45 · 343 阅读 · 0 评论 -
Java杂谈之BOM谜题
0、前言开发中做了一个导出CSV功能,本地通过wps测试都没有问题,但是测试人员测试的时候发现用excel打开中文表头会出现乱码现象,很奇怪的现象,用nodePad工具打开看也是正常的,但是用excel打开就是中文乱码,通过查找资料了解到是因为csv文件是utf-8编码的,但是没有增加bom头,这样就会导致在window环境下一些软件会用默认编码打开文件从而导致乱码问题,本文详细介绍从前端下载...原创 2019-07-27 16:19:23 · 628 阅读 · 2 评论 -
强悍的Spring之AOP概念
一、对AOP的初印象AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高...原创 2019-10-02 15:16:59 · 149 阅读 · 0 评论 -
人生苦短,我用Gson
Life is short, you need Gson一、JSON简介JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编原创 2018-01-27 14:32:14 · 257 阅读 · 0 评论