maven私服 私服其实就是一种远程仓库。用处速度快,稳定 节省宽带,节省中央maven仓库宽带 便于控制和审计 能部署第三方构件Nexus搭建nexus需要占用较大内存,一般大于2Gdocker方式(推荐)下载镜像docker pull docker.io/sonatype/nexus3在linux创建挂载目录 mkdir localNexusdata这里的200...
开发过程中碰到的jdk1.8用法 public class Demo { public static void main(String[] args) { a(); } /** * 获取Map<Long, List<User>> 中value里的某个属性 */ public static void a() { List<User> userList = new ArrayList<>(); .
读写锁-ReentrantReadWriteLock 在看这篇之前先看看AQS框架的实现原理,很多重复的代码我就不在这里进行介绍了。https://blog.csdn.net/zgsxhdzxl/article/details/95032337 重入锁 ReentrantLock 是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而,读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。 读写锁维护着一对...
Java8 日期及时间API 参考书籍《Java8 实战》LocalDate日期类 // 日期类 LocalDate date = LocalDate.of(2020, 10, 11); System.out.println(date.getYear() +"-"+ date.getMonthValue() +"-"+ date.getDayOfMonth()); ...
Java8 并行流 并行流个人工作中用处很少,所以仅仅了解了一下,详细的可以自己去看《Java 8 实战》parallel将序流转为并行流。并行流内部是使用了Fork/Join框架去做处理。sequential将并行流转为顺序流。先看一个小测试 long start2 = System.nanoTime(); long sum2 = LongStream.ran...
java8 stream收集数据 // 实体类public class Goods { private String name; private Integer price; public static List<Goods> getGoods() { List<Goods> goods = new ArrayList<>(); ...
SpringBoot启动类解析 写的不是很详细,只写了个大概,后续待补充启动类只有一句话@SpringBootApplication()public class ApiServiceApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(...
java8 Lambda表达式 为简洁地表示可传递的匿名函数的一种方式。它包含三个部分,参数、箭头、主体。如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值List<Dog> dogs = new ArrayList<>();(a1,a2)是参数a1.getName().compareTo(a2.getName())是主体dogs.sort((a1, a...
Springboot集成Swagger2 引入jar <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</versi...
spring Aware接口 spring aware 的目的是为了让bean获取spring容器的服务。常见的aware接口有:BeanNameAware :可以获取容器中bean的名称BeanFactoryAware:获取当前bean factory这也可以调用容器的服务ApplicationContextAware: 当前的applicationContext, 这也可以调用容器的服务MessageS...
BeanPostProcessor分析 如果我们想在Spring容器中完成bean实例化、配置以及其他初始化方法前后要添加一些自己逻辑处理。我们需要定义一个或多个BeanPostProcessor接口实现类,然后注册到Spring IoC容器中。@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor{ @Override public O...
MyBatis关联查询 association 一对一关系一对一嵌套结果property :对应实体类中的属性名,必填项。javaType : 属性对应的 Java 类型 。resultMap : 可以直接使用现有的 resultMap ,而不需要在这里配置映射关系。columnPrefix :查询列的前缀,配置前缀后,在子标签配置 result 的 column 时可以省略前缀 <...
MyBatis批量操作 通过foreach动态拼装sql <insert id="insert" parameterType="com.zxl.entity.ZxlUser"> insert into ZXL_USER (id, user_name) values <foreach collection="list" item="item" separator=","&g...
Mybatis动态sql if跟java中的if类似,但是没有else <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> select id, user_name from ZXL_USER where 1 = 1 <if test=...
Mybatis基本元素 select映射查询语句元素 说明 备注 id 它和Mapper的命名空间组合起来是唯一的,提供给MyBatis调用 如果命名空间和id组合起来不唯一,会抛出异常 parameterType 传入参数的类型;可以给出类全名,也可以给出类别名,使用别名必须是MyBatis内部定义或自定义的; ...
网络编程面试题 从输入URI到页面展示中间经历了什么解析域名。先查询本地host,有的话直接使用对应的ip,否则查询DNS服务器,将最终查询到的ip返回拓展DNS是域名系统,是域名与ip地址相互映射的分布式数据库,使用户更方便地访问互联网。DNS两种查询方式递归解析:当局部dns查询不到时候,先去根DNS服务器查询,再由跟域名服务器向下一级级查询。迭代解析:当局部d...
IO模型 同步和异步(关注的是结果消息)同步:同步的意思就是调用方需要主动等待结果的返回异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等。阻塞和非阻塞(关注的是等待结果返回调用方的状态)阻塞:是指结果返回之前,当前线程被挂起,不做任何事。 有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只...
TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。协议采用了4层的层级结构。TCP和UDP: TCP: 1,建立连接,形成传输数据的...
OSI七层模型 OSI七层模型物理层物理层并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。数据链路层数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。网络层路由选择和中继,在一条数据链路上复用多条网络连接传输层定义传输数据的协议端口号,以及流控和差错校验。传输层有一个既存事实,即世界上各种通信子网在性能上存在着很大差异。例如电话交换...
ThreadLocal https://blog.csdn.net/Y0Q2T57s/article/details/83247430https://www.jianshu.com/p/dde92ec37bd1作用、概念threadLocal是为了解决对象不能被多线程共享访问的问题,通过threadLocal.set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中,这样每个线程使用自己的...