- 博客(30)
- 收藏
- 关注
原创 leetcode-二分法
二分法,这里采用l <= r判断循环边界。leetcode69 x的平方根这里如果匹配结果,最后希望返回左边界值,这里最后返回r。 public int mySqrt(int x) { int l = 0, r = x; while(l <= r) { int mid = l + (r - l) / 2; long res = (long) mid * mid; if(res &
2022-05-30 11:22:34
176
原创 SQL笔记
join字段独立出现是等价于inner join的。例子:#1select * from a join b on a.id = b.id#2select * from a inner join b on a.id = b.id#3select * from a, b where a.id = b.id这三种写法是等价的。试题:设有一张学生表student,其中学生编号s_id, 学生姓名s_name, 学生出生年月s_birth, 学生性别s_sex;设有一张成绩表,设有学生编号s_
2022-05-18 19:58:10
299
原创 MyBatis学习
MyBatis学习准备环境新建工程Mybatis,之后新建Module:MyBatis_demo1。通过Maven下载Mybatis核心、junit测试、Mysql驱动,在MyBatis_demo1下的pom.xml配置文件中引入。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w
2022-05-15 20:52:11
295
原创 HTTP与HTTPS
HTTPS(HyperText Transfer Protocol over Secure Socket Layer)什么是HTTPS?HTTPS协议一般理解为HTTP + SSL/TLS,通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。加密1.对称密钥加密(Symmetric-Key Encryption):加密和解密使用同一密钥。优点:运算速度快;缺点:无法安全地将密钥传输给通信方;2.非对称加密(公开密钥加密 Public-Key Encryption):加
2022-05-11 20:45:46
112
原创 反射浅入浅出
反射反射原理编译阶段:将类的源码通过Javac编译成字节码文件。运行阶段:遇到了新建类的对象,触发了类加载器ClassLoader将类的字节码文件加载至Java堆中(反射)。Class类阶段(加载阶段):分别将成员变量Field[] fields、构造器Constructor[] cons、成员方法Method[] ms看做成对象。...
2022-05-09 22:22:02
94
原创 缓存淘汰算法LRU-K,2Q(Two queues)
1.LRU-K1.1 简介LRU-K中的K代表最近使用的次数,LRU可以当作LRU-1。LRU-K主要目的是为了解决LRU算法的缓存污染问题。什么是缓存污染?当数据访问次数非常少,甚至只会被访问一次,数据服务完访问请求后还继续留在缓存中,白白占用缓存空间,这就是缓存污染。1.2 原理相比LRU,LRU-K除了缓存队列还要维护一个访问历史队列,这个队列不缓存数据,仅记录数据的历史访问次数。当数据访问次数达到k次时,数据才放入缓存队列。历史队列、缓存队列的维护与LRU中缓存队列的维护一样,遵循LRU
2022-04-07 22:36:40
1719
原创 LeetCode_滑动窗口篇
滑动窗口滑动窗口可以理解为双指针的一种,左窗口l,右窗口r。一般,右窗口r先行,达到阶段性分界点(题目要求条件或者限制),开始移动左窗口l。我们要在移动的过程中统计题目的答案。如果求的是最大值, 外循环移动l, 内循环移动r统计最大值, 遇到分界条件后, 移动l后立即继续持续移动r统计最大值;如果求的是最小值, 外循环移动r, 内循环移动l, 遇到分解条件后, 持续移动l统计最小值;209.长度最小的子数组class Solution { public int minSubArra
2022-03-30 23:10:05
573
原创 Java多线程,JUC学习
多线程CAS(compare and swap, compare and exchange)保证在没有锁的状态下,多线程下保持一一致性实现值的改变。ABA问题:分手,找别人,复合;中间的经历无法感知。AtomicIntegerJUCJUC是java.util.concurrent工具包的简称,这是一个处理线程的工具包,从JDK1.5开始出现。进程与线程进程Process:是系统进行资源分配和调度的基本单位,是操作系统结构的技术。进程是线程的容器,程序是指令、数据及组织形式的描述,进程是程序
2021-12-19 19:43:03
544
原创 Java面试习题
JavaSE面试题自增变量给出最后 i、j、k 的值 public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.pr
2021-10-30 22:35:50
785
原创 JVM(持续更新)
JVM结构图双亲委派机制双亲委派机制的作用防止重复加载同一个.class,通过委托去向上面加载器问一下,如加载过就不用再加载一遍,保证数据安全。通过委托方式,保证核心.class不被篡改。...
2021-09-07 14:30:26
55
原创 设计模式学习笔记
学习设计模式的小随笔:)我们为什么要采取设计模式?在《Head First设计模式》中,通过鸭子的例子展示了出来;我们新建Duck类,制定Duck应该有的行为,如果把所有的行为都直接写在Duck下面:quack() 叫swim() 游泳display() 样貌fly() 飞行,问题也就出在这里问题: 各种鸭子通过继承 Duck类实现,如果我们的子类都是真正的鸭子当然没问题,如果此时我们新建一个橡皮鸭,它并不会飞,但是却继承到了fly();如果通过接口解决,将fly( )从超类中提取出
2021-07-15 20:17:01
91
原创 git学习
在安装好git之后创建Repository(版本库)repository里面的所有文件都能够被git管理起来,文件的修改、删除都能够被git跟踪,每一个版本都会有记录。创建版本库#新建learngit文件夹mkdir learngit#进入learngit文件夹cd learngit #显示当前路径pwd得到当前路径通过 git init命令初始化版本库git init初始化后git仓库文件夹下,会产生一个隐藏目录/.git,用来跟踪管理版本库(不可以乱改哦),ls
2021-07-04 21:37:41
160
原创 Collections.sort()用法小述,应用统计字符串中各字符串出现的次数并按降序排列
Collections.sort()百度测开面试较为简单的面试题:统计字符串中各字符串出现的次数并按降序排列:统计字符出现个数可以直接存储在HashMap中,但是按降序排列就需要用到Collections.sort() 方法;将HashMap中的键值对Entry存储在List中,Collections.sort() 可以实现对List中元素的排序,再通过改写里面的参数Comparator<>()对象中的compare函数来定义排序的规则;题解如下://题解public void ch
2021-06-16 20:22:07
585
原创 牛客输入输出练习
多组数据输入import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNextLine()){ String [] s=sc.nextLine().split(" "); int sum=0; .
2021-06-04 16:35:44
252
原创 Java中双端队列Deque、栈Stack
栈的实现在java中,栈有两种实现方式,一个是用Stack类,一个用LinkedList类实现。//用Stack实现栈public static Stack<String> stack1;//用LinkedList实现栈public static LinkedList<String> stack2;public static void init() { stack1 = new Stack<>(); stack1.push("1"); stack1.
2021-06-01 21:02:38
483
原创 面经准备(持续更新)
1. get和post的区别GET 在浏览器回退时是无害的,而 POST 会再次提交请求。GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。GET 请求只能进行 url 编码,而 POST 支持多种编码方式。GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。对参数的
2021-05-25 23:36:13
655
原创 python列表、元组、字典
列表列表是有序集合,定义通过[方括号],eg:bicycles = ['trek', 'cannondale', 'redline', 'specialized']元祖元祖是不能更改的列表,定义通过 (圆括号),eg: dimensions = (200, 50) ,元祖是无法改变的,但是元祖变量是可过建立新元祖重新赋值改变内容的。字典'字典是存储的是key:value的内容,...
2019-08-01 13:28:10
72
原创 线性回归:feature scaling 特征缩放
特征缩放的两种计算方法:1、(目标数值 - 平均值) / (最大值 - 最小值)2、(目标数值 - 平均 值) / 方差线性回归中梯度下降会用到特征缩放,目的:减少迭代次数,从而加速程序;正规方程不需要特征缩放;...
2019-07-04 09:42:19
990
原创 SQLite ——创建数据库与升级数据库
Android内置了SQLite数据库,提供了SQLiteOpenHelper帮助类管理数据库,SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),必须在自己的帮助类中重写这两个方法,然后分别在这两个方法中创建、升级数据库的逻辑。 SQLiteOpenHelper中两个非常重要的实例方法: getReadableDatabase() 和 ge...
2018-03-29 23:57:39
807
原创 SharedPreferences中存储读取数据
三种方法获取SharedPreferences对象:1.Context类中的getSharedPreference(文件名, MODE_PRIVATE) 只有这一种模式可用和传入0效果相同2.Activity类中的getSharedPreference(MODE_PRIVATE) 只接受一个操作模式参数,以当前类名作为SharedPreferences的文件名3.PreferenceManag...
2018-03-23 23:52:09
529
原创 数据的存储与读取
通过运用输入输出流来对数据进行本地存储,android的Context提供了openFileOuput(文件名,操作模式)与openFileInput(文件名)方法操控文件。 存储: String data = "Data to save"; FileOutputStream out = null; BufferedWriter writer = null; try{ out = ...
2018-03-20 23:55:17
414
转载 活动被回收怎么办
用户通过活动A启动了活动B,活动周期在执行onStop()时,若系统内存不足要收回活动A,若A中有数据,这就需要一个保存临时数据的机制。Activity提供了一个 onSaveInstanceState() 回调方法,确保在活动被回收之前一定会被调用。 onSaveInstanceState()携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(...
2018-03-17 23:54:16
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人