位运算
摘要:1、统计比特数 1 class Solution { 2 public int[] countBits(int n) { 3 int[] ans=new int[n+1]; 4 for(int i=0;i<=n;i++){ 5 int num=i; 6 int count=0; 7 while(nu
阅读全文
SQL聚合/多表/连接查询
摘要:一、聚合查询 使用SQL自带的聚合函数进行查询,有count()、AVG()、min()、max()、sum() 二、分组聚合查询 select 后面的字段 只能是group by后的字段 SELECT City,Gender, COUNT(*)FROM Students GROUP BY City
阅读全文
@Autowired 和 @Resource
摘要:相同点: @Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。 不同点: 1、依赖查找顺序不同: 1)@Autowired 先根据类型(byType)查找,如果存在多个(Bean)再根据名称(byName)进行查找; 2)@Res
阅读全文
IO模型
摘要:一、IO基本概念 在平常开发过程中接触最多的就是 磁盘 IO(读写文件) 和 网络 IO(网络请求和响应)。 用户进程想要执行 IO 操作的话,必须通过 系统调用 来间接访问内核空间。 当应用程序发起IO调用后,会经历两个步骤: 1、内核等待IO设备准备好数据 2、内核将数据从内核空间拷贝到用户空间
阅读全文
JVM
摘要:一、JVM介绍 什么是JVM?Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。屏蔽了底层操作系统的差距,使得java程序能够“一次编译,随处可以运行”。 JVM的组成部分有哪些?JVM由类加载器、运行时数据区、执行引擎等组成。 类加载器有哪些?类加载器分为启动类加载器、扩展类加载器和应用
阅读全文
Java代理模式
摘要:一、基本概念 1、代理模式:使用代理对象来代替目标对象的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 2、有静态代理和动态代理两种实现方式 二、静态代理 1、静态代理需要实现目标类的接口,一旦接口新增加方法,目标对象和代理对象都要进行修改 2、静态代理在编译时
阅读全文
Java序列化
摘要:一、序列化和反序列化 序列化:将数据结构或对象转换成二进制字节流的过程 反序列化:将在序列化过程中产生的二进制字节流转换成数据结构或对象的过程 常见场景: 1、网络传输时,对象需要先被序列化,接收到后再进行反序列化 2、将对象持久化到磁盘、文件时需要先进行序列化,从磁盘或者文件读取对象时需要进行反序
阅读全文
Java值传递
摘要:一、形参&实参 实参:实际传递给方法的参数 形参:用于定义方法,接收实参,不需要有确定的值 二、值传递&引用传递 值传递:方法接受的是实参值的拷贝,会创建副本 引用传递:方法接收的是实参所引用对象在堆中的地址,不会创建副本,对形参的修改将影响到形参 Java只有值传递 public static v
阅读全文
JAVA集合
摘要:一、集合框架概览 Java集合也叫做容器,由两大接口派生而来,一个是collection接口,主要用于存放单一元素,另一个是map接口,用于存放键值对。collection有三个子接口:list、set、queue。 相较于数组,Java 集合的优势在于它们的大小可变、支持泛型、具有内建算法,比如a
阅读全文
算法——树(二)
摘要:1、路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 1 class Solution { 2 bool
阅读全文
算法——树(一)
摘要:1、中序遍历 递归 class Solution { List<Integer> ans=new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { inorder(root); return ans; } pu
阅读全文
线程池
摘要:一、ThreadLocal 1、使得每个线程可以有自己的专属变量 2、可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。 import java.text.SimpleDateFormat; import java.util.Random; public c
阅读全文
JMM(java内存模型)
摘要:一、概念 JMM与java并发编程相关: 1、抽象了线程与主内存的关系,例如线程的共享变量需要放到内存中进行读取 2、规定了java源代码到CPU可执行指令这个转换过程中需要遵守的规范,例如防止指令重排序造成的并发问题 二、并发编程的三个特性 1、原子性 一次操作或者多次操作,要么所有的操作全部都得
阅读全文
线程与进程
摘要:一、线程与进程的区别 1、进程是程序的一次执行过程,是程序运行的基本单位 2、进程是比线程更小的执行单位,一个进程可以产生多个线程,多个线程共享进程的堆和方法区,每个线程都有自己独立的栈和程序计数器,因此线程之间切换的开销比进程切换小 二、并发与并行 并发:同一时间段内,多个线程交替执行 并行:同一
阅读全文
MyBatis-plus学习笔记
摘要:1、MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、特性: 无侵入:在mybatis基础上只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 强大的 CRUD 操作:内置通用 Mapper
阅读全文
MyBatis学习笔记
摘要:1、什么是MyBatis? 一款优秀的持久化层的ORM框架,它支持动态SQL以及对结果集进行映射。MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC的核心对象(
阅读全文
JDBC学习笔记
摘要:1、什么是JDBC? JDBC是一类接口,制定了统一访问各类关系型数据库的api,屏蔽了底层数据库的差异,可以通过JDBC API 方便地实现对各种主流数据库的操作。 2、开发步骤? 访问数据库时,首先要注册和加载数据库驱动,只需加载一次,然后在每次访问数据库时创建一个Connection实例,获取
阅读全文
反射
摘要:1、什么是反射? 程序运行过程中动态获取类信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。 2、哪里用到了反射? JDBC中,利用反射动态加载了数据库驱动程序。 Web服务器中利用反射调用了Sevlet的服务方法。 Eclispe等开发工具利用反射动态刨析对象的类型与结构,动态提示对
阅读全文
Dubbo微服务分布式架构
摘要:1、什么是微服务? 微服务架构则是将单个的整体应用程序分割成更小的项目关联的独立的服务。一个服务通常实现一组独立的特性或功能,包含自己的业务逻辑和适配器。各个微服务之间的关联通过暴露api来实现。这些独立的微服务不需要部署在同一个虚拟机,同一个系统和同一个应用服务器中。可以实现分布式部署,方便开发团
阅读全文
如何防范CSRF(跨域请求伪造)?
摘要:1、什么是CSRF? 跨域请求伪造指的是第三方诱导用户点击含攻击信息的网站,利用用户在目标网站的凭证冒充用户进行操作。 2、如何解决? 方法一:同源检测 HTTP 请求头 Referrer 字段是浏览器默认带上,含义是发送请求的页面地址,比如同样是删除相册的操作http://www.photo.co
阅读全文
算法——链表(一)
摘要:1、两数相加 1 class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 ListNode pre = new ListNode(); 4 ListNode cur = pre; 5 int car
阅读全文
算法——动态规划(一)
摘要:1、最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 1 public class Solution { 2 public String longestPalindrome(String s) { 3 int len=s.length(); 4 boolean dp[][]=new b
阅读全文
算法——字符串(一)
摘要:1、给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 1 class Solution { 2 public int lengthOfLongestSubstring(String s) { 3 int len=s.length(); 4 int max=0; 5 int ri
阅读全文
算法题——数组(一)
摘要:1、两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 /*建一个hash表,key存放值,value存放下标 遍历数组,如果表里存在target - nums[i],则返回下标 不存在则把当前
阅读全文