自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 ThreadLocal源码解析(执行流程图)

ThreadLocal 源码解析与说明​ 这里先用图表示一下ThreadLocal在thread中的主要数据结构Public T get() 方法执行流程public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEnt

2020-12-18 00:33:13 364

原创 高性能MySQL-笔记总结(3)-查询性能优化

第六章 查询性能优化6.2 慢查询基础:优化数据访问确认应用程序是否在检索大量超过需要得数据。可能访问了过多得列或者行确认MySQL服务器层是否在分析大量超过需要得数据行6.2.1 是否向数据库请求了不需要的数据注意:总是取出全部的列​ 审视每一个select * ,是否真的需要每一列,当然有时候浪费一些系统资源可以简化开发。重复查询相同的数据​ 类似用户头像的url,这样的数据可以存放在缓存种,避免在MySQL种重复查询。6.2.2 MySQL是否在扫描额外的记录衡量查询的开销:

2020-11-29 16:30:44 276

原创 应用集成——数据库集成与简单实现IoC容器

应用集成——数据库集成与简单实现IoC容器项目地址:郝凯VioletEverGarden/ioc应用集成问题描述:​ 设分别存在两个数据库,每个数据库都有一个学生表,表名与其中的属性名都不相同。我们需要编写一个系统,在不使用市面上框架的情况下,对两个数据库进行集成,取两个数据库中的数据集合起来呈现给用户。目前项目实现功能:不限制数据库数量,只要添加一些数据源信息即可对数据库进行整合。实现可拓展。可以手动编写属性的xml映射,也可以调用test方法自动获取数据创建xml映射。便于用户使用单例容

2020-11-21 12:28:54 393

原创 深入浅出Java多线程 笔记分享(1)

进程与线程:​ 进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间互不干扰。同时进程保存着程序每一个时刻运行的状态。进程是操作系统进行资源分配的基本单位,而线程是操作系统进行调度的基本单位。​1. 线程的创建与启动:继承Thread类,并重写 run 方法:public class Demo { public static class MyThread extends Thread { @Override public void run() { System.ou

2020-11-02 09:12:02 139

原创 高性能MySQL-笔记总结(2)-创建高性能索引

第五章 创建高性能索引5.1 索引基础5.1.1 索引的类型在MySQL中索引是在存储引擎层而不是在服务层实现的。不同存储引擎的索引工作方式也不一样。B-Tree 索引​ InnoDB使用的B+Tree。B~Tree数据结构:​ B-tree又叫平衡多路查找树。一棵m阶的B-tree (m叉树)的特性如下:树中每个结点至多有m个孩子;除根结点和叶子结点外,其它每个结点至少有有ceil(m / 2)个孩子;若根结点不是叶子结点,则至少有2个孩子所有叶子结点都出现在同一层,叶子结点不

2020-10-27 11:35:59 75

原创 高性能MySQL-笔记总结(1)-Schema与数据型优化

第四章 Schema与数据型优化4.1选择优化的数据类型更小的通常更好更小的数据类型通常更快,占用更少的资源。简单就好简单数据类型和的操作通常需要更少的CPU周期。推荐使用后MYSQL内建的类型来存储时间和日期而不是字符串尽量避免null通常情况下最好指定列为NOT NULL。 如果查询中包含可为null的列对MySQL来说更难优化,会使索引、索引统计和值比较都更复杂。同时将可为null的列修改为not null 带来的性能提升比较小,该问题没有必要首先解决。4.1.1 整数类型整数计

2020-10-27 10:24:58 134

原创 216. 组合总和 III

class Solution { public List<List<Integer>> combinationSum3(int k, int n) { List<List<Integer>> lists = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); if(k<=0 || n&

2020-09-11 16:24:03 56

原创 54. 螺旋矩阵

旋转矩阵系列按行列计算class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> order = new ArrayList<Integer>(); if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return or

2020-08-05 16:43:13 85

原创 59. 螺旋矩阵 II

考虑螺旋圈数与n的关系即可class Solution { public int[][] generateMatrix(int n) { int[][] result = new int[n][n]; //一共有n-1圈 //第i圈右 N+2-2i 下 N+1-2i 左N+1-2i 上N-2i; if(n==1 ){ result[0][0]=1; return result;

2020-08-05 16:27:36 86

原创 337. 打家劫舍 III

第一种方法,暴力动态规划,内存消耗大,重复子问题多 class Solution { public int rob(TreeNode root) { int a = selected(root); int b = notSelected(root); return a>b?a:b; } public int selected(TreeNode root){ if(root == null)

2020-08-05 15:44:19 70

原创 16. 最接近的三数之和

思路和15题一样的class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int n = nums.length; int best = 10000000; for(int i = 0 ; i < n ; i++){ if(i>0 && nums[i]==num

2020-08-02 12:29:27 77

原创 15. 三数之和

双指针思想:三层循环,假设第一个数已知,再根据a+b+c=0的规则,得出b与c的关系,确定双指针之间的关系,将三重循环降为二重循环.public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List<List<Integer>> ans = new ArrayList<List<

2020-08-02 12:01:04 74

原创 114. 二叉树展开为链表

非前序遍历的方法class Solution { public void flatten(TreeNode root) { connect(root); } public TreeNode connect(TreeNode root){ if(root.left==null){ if(root.right==null) return root; else ret

2020-08-02 09:34:08 72

原创 8. 字符串转换整数 (atoi)

给出了两种方法,一种是正常遍历,还有一种为正则表达式匹配。import java.util.regex.Matcher;import java.util.regex.Pattern;import java.math.BigInteger;class Solution {public int myAtoi(String str) {String pattern = “^\s*([±]?\d+)”;Pattern r = Pattern.compile(pattern); Matcher

2020-07-24 11:11:05 65

原创 LeetCode 78. 子集

整体思路就是穷举法,假设初始nums中有n个元素,n位二进制数每位可以赋值1或者0 ,全部结果为2^n。为了保证2进制数的位数一致,从2n 到 2n+1 算,再截取到第一位。public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList(); int n = nums.length; for

2020-07-24 10:09:37 56

原创 LeetCode 62. 不同路径

两种解法:有动态规划和排列组合排列组合速度快,消耗内存多以下为排列组合解法class Solution { public int uniquePaths(int m, int n) { int a = (m>n?n:m)-1; int b = m+n-2; long c = 1; long d = 1; while( a > 0 ) { c = c * a;

2020-07-23 23:11:40 67

原创 64. 最小路径和

动态规划class Solution { public int minPathSum(int[][] grid) { int i = 0; int j = 0; int a[][] = new int[grid.length][grid[0].length]; a[0][0] = grid[0][0]; for( i = 1 ; i < grid[0].length ; i++ ){ a[

2020-07-23 22:42:19 61

原创 20. 有效的括号

import java.util.Stack;class Solution { public boolean isValid(String s) { int i = 0; int length = s.length(); if(length==1){ return false; } if(length==0){ return true; }

2020-07-23 22:40:50 79

原创 29两数相除

class Solution { public int divide(int dividend, int divisor) { if (dividend == 0) { return 0; } if (dividend == Integer.MIN_VALUE && divisor ...

2020-02-15 11:32:36 169

原创 823 带因子的二叉树

class Solution { private final int mod=1000000007; public int numFactoredBinaryTrees(int[] A) { long res=0; Map<Integer,Long> map=new HashMap(); Arrays.sort(A); ...

2020-02-15 11:27:35 99

原创 129根节点到叶子节点数字之和

简单的递归可实现class Solution { static int sum; public int sumNumbers(TreeNode root) { sum = 0; childSum(0, root); return sum; } publ...

2020-02-14 10:15:24 95

原创 881救生艇

实际上是一个排序问题,采用官方的方法改编的桶排序class Solution { public int numRescueBoats(int[] people, int limit) { int max = -1; for (int p: people) max = Math.max(max,...

2020-02-12 23:03:56 80

原创 386字典序排数

这里有个细节,题目要求的是每一位数都要按字典排序,否则会出现错误结果[1,10,11,12,13,14,15,16,17,18,19,100,2,20,21,22,23,24,25,26,27,28,29,3,30,31,32,33,34,35,36,37,38,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6...

2020-02-12 22:57:43 94

原创 287寻找重复数

要求O(1)空间 小于O(n^2)时间class Solution { public int findDuplicate(int[] nums) { int fast = 0, slow = 0; while(true) { fast = nums[nums[fast]]; ...

2020-02-11 23:02:54 51

原创 529 扫雷游戏

该题可以采用深度优先搜索或者广度优先搜索,深度优先搜索更适合。·class Solution { int[] dx = {-1, -1, 0, 1, 1, 1, 0, -1}; // 相邻位置int[] dy = {0, 1, 1, 1, 0, -1, -1, -1}; public char[][] updateBoard(char[][] board, int[] clic...

2020-02-11 22:37:45 108

原创 1314矩阵区域和

采取前缀矩阵和的算法,当前位置(i,j)的矩阵和等于位置(i-1,j)与(i,j-1)的矩阵和减去位置(i-1,j-1)的矩阵和最后再加上位置为(i+1,j+1)的元素的值class Solution { /** * 前缀和矩阵 */ private int[][] preSum; public int[][] matrixBlockSum(in...

2020-02-11 21:35:26 177

原创 1302层数最深叶子节点的和

这个算法并不优秀,仅仅是一个思路class Solution { public int deepestLeavesSum(TreeNode root) { if (root == null) return 0; int num = 0; Queue<TreeNode> queue = new Lin...

2020-02-10 21:15:52 120

原创 526 优美的排列

思路就是回溯法,与全排列等同//DFS搜索,每前进一步,必须满足两个条件之一,分情况往下走(全排列问题)class Solution { int count=0;public int countArrangement(int N) { int[] visited=new int[N+1]; countArrangement(1,N,visited); ...

2020-02-10 20:59:09 113

原创 1008先序遍历构建二叉树

本体意在对二叉树的构建的巩固,了解先序遍历,和二叉搜索树的概念即可解题/** * Definition for a binary tree node. * public class TreeNode { * * int val;* * TreeNode left; * * TreeNode right; * * TreeNode(int x) { va...

2020-02-10 20:48:50 102

原创 535 TinyURL的加密与解密

对URL的加密与解密,主要在加密与解密结果的一致性,我们可以想到异或运算符进行加密,特别的,根据key的值,对异或加密的解惑进行更改。public class Codec { private static int key=35; // Encodes a URL to a shortened URL. public String encode(String long...

2020-02-10 19:50:26 136

原创 数据库概论复习第二章

2.1 关系数据结构及形式化定义关系在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型,即关系来表示。域笛卡儿积关系(P40)关系模式关系的描述称为关系模式 ,形式化表现为R(U,D,DOM,F)R 关系名,U 属性来自的域,DOM 属性向域的映像集合,F 属性间数据依赖关系集合。2.2关系操作基本的关系操作增删改查查询又分为 选择、投影、连接、除、并、...

2020-01-02 21:21:18 184 1

原创 数据库概论复习第一章

1.1数据库四个基本概念描述事物的符号称为数据数据的含义称为数据的语义,数据与其语义是不可分的记录是计算机中表示和储存数据的一种格式或一种方法数据库 DataBase数据库是长期储存在计算机内,有组织的、可共享的大量数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统 DBMS数据库...

2020-01-02 21:20:54 270

原创 java第八章 常用类库与工具(习题)

Java常用类库有哪些?其基本功能有哪些?1、语言包java.lang 提供Java语言最基础的类2、实用包,包括日期类、集合类。3、抽象窗口工具包 java.awt4、Applet包 5、文本包Format6、输入/输出流包7、网络功能包Java中有哪些Date类,他们的区别是什么?DateDateFormatDateFormat.FieldDateFormatProv...

2019-12-26 19:28:14 247

原创 1161 最大层内元素之和

其中 最小 的那个。示例:输入:[1,7,0,7,-8,null,null]输出:2解释:第 1 层各元素之和为 1,第 2 层各元素之和为 7 + 0 = 7,第 3 层各元素之和为 7 + -8 = -1,所以我们返回第 2 层的层号,它的层内元素之和最大。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/...

2019-12-09 12:55:17 172

原创 数据库结业项目作业(LOL数据库系统)

项目所用到的有Spring Boot , mysql,jdbc,myBatis,workbench,swagger-ui,druid因为刚开始学习spring boot不久,对springmvc的机制还不太了解,借用swagger-ui的界面,本身只实现后端的数据处理。关于自学myBatis,建议看狂神的教学视频https://blog.kuangstudy.com/#讲解内容通俗易懂首...

2019-12-08 16:34:07 774

原创 简单的聊天室系统

聊天室系统需求1、多客户模式下,客户与客户的单独通信,且信息通过服务器。2、端到端的通信,实现并行通讯,一端的发送不受另一端的影响。3、端到端的文件传输4、图形界面知识点需求1、Java网络通信2、多线程3、IO文件操作4、JFrame...

2019-12-06 10:33:59 876 1

原创 Spring的constructor-arg 与property注入

简单来说,constructor-arg 是用在bean装配(wiring)的,通过构造函数来装配bean#直接注入demo对象<constructor-arg ref="person"/>#直接注入值<constructor-arg name="name" value="John"/><constructor-arg name="school" valu...

2019-11-25 21:28:51 269

原创 java实现简单功能与c++的区别(银行个人管理系统)

1描述类在写类时,c++习惯只在class内定义函数名,将方法的内容在class外以class::的方式标注写出,而Java只能将所有的内容写在class内;c++内将所有的成员按private public protect 分块写,而Java中每一个成员前缀都有权限限制词,对于其成员的描写顺序没有要求;关于main函数,c++的main函数单独的写在类的外面,而Java所有的代码都需要写在...

2019-10-16 21:23:27 133

原创 学习使用jdk官方api文档

首先是api文档的地址,通常用浏览器打开这个网址进行api查询https://docs.oracle.com/javase/8/docs/api/下面简述一些常用类的常用方法System System是在lang包里的一个类,该类提供了标准的输入输出,以及error的输出,用于声明正确的环境变量,还可以复制列表的部分。该类的Field有三个:Fields Modifier and ...

2019-09-07 10:12:02 900

原创 自入计科以来学习编成语言的体会

学习变成语言已经一年多了,从最开始的一问三不知,到现在疯狂买书学习的状态,我发现我真的喜欢这个专业,我也认为必须要有足够的热情才能把编成学好。最开始其他基础相关课程还没学完,就同时开始学习C、C++,感觉学习的压力非常的大,老师上课的速度非常快。很多时候都要提前预习,要课后复习,查阅资料。学习JAVA以前,我认为编程难在指针和算法上。零基础开头非常的艰难,一个全新的世界放在面前,但里面的一切都不清...

2019-09-07 09:22:36 125

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除