自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

何大大的秘密基地

有问题欢迎私信与我交流讨论

  • 博客(117)
  • 资源 (6)
  • 收藏
  • 关注

原创 安装win10+黑苹果双系统零基础教程

一、准备工作准备8g以上的U盘安装TransMac安装Hasleo EasyUEFI安装DiskGenius 系统镜像,格式注意是.dmg,我示范的版本为mac 10.13.3二、开始动手首先进行分盘选择磁盘管理将你需要分盘的硬盘压缩新建简单卷,一路操作下去,自己命名磁盘打开DiskGenius,我分机械硬盘了300G给macOS,所有的操作都在刚才新建简单卷中进行调出前部大于3...

2018-05-07 20:29:19 483639 89

原创 Spring Boot 自定义注解之脱敏注解

文章目录前言一、脱敏后的效果二、代码1.脱敏注解2.定义脱敏类型3.敏感工具类4.脱敏序列化信息总结前言数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。需求是把返回到前端的数据进行脱敏,以免造成隐私信息的泄露。一、脱敏后的效果这样显示很不好吧,所有信息都泄露了这样就很好了吧二、代码1.脱敏注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@JacksonAnnotatio

2021-06-17 16:27:17 3054 8

原创 MyBatis-Plus 在 XML 中里面自定义 SQL 报错 Invalid bound statement (not found)

项目场景:今天同事遇到这个问题心态炸了,因为项目之前从 TkMybatis 转为 MyBatis-Plus 是我负责的,所以他跑来问我问题描述:调用在 XML 中里面自定义 SQL 报错 Invalid bound statement (not found),而调用 BaseMapper 里的方法是正常的。 原因分析:例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMess

2021-06-15 16:41:55 894

原创 Mybatis-Plus代码生成器,Freemarker模板引擎自定义模板文件

1、介绍快速生成 Entity、Mapper、Mapper XML、Service、ServiceImpl、Controller、DTO等各个模块的代码,极大的提升了开发效率。我是把模板从jar包中拿出来,再根据自己项目的需求去改模板,本文除了jar包中提供的六个模板,并自定义了dto模板,如果你有别的需要可以仿照dto生成的方式去实现。2、效果因为大家生成模板的需求不同,所以我这边demo提供的jar包中的模板。比如在我的项目中entity类统一继承BaseEntity,我把所有的公共

2021-06-01 11:33:56 2186

原创 剑指Offer-75二叉树的最近公共祖先

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { // root为空就直接返回空 p和q中有等于root的最近公共祖先即为root if(root == null || root == p || root == q) { return root; } // 递归遍历左子树 在左子树中找到了p或q 先找到谁就返回谁 TreeNode left = .

2021-04-25 11:37:13 113

原创 剑指Offer-74二叉搜索树的最近公共祖先

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { while(root != null) { // p,q 都在 root 的右子树中 if(root.val < p.val && root.val < q.val) { // 遍历至右子节点 root = root.right; .

2021-04-25 10:59:22 104

原创 剑指Offer-73把字符串转换成整数

public int strToInt(String str) { // 删除头尾空白符 char[] nums = str.trim().toCharArray(); if(nums.length == 0) { return 0; } int res = 0; // 边界值 两种越界情况 res > bndry 和 res = bndry 且 x > 7 int bndry = Integer.MAX_VALUE / .

2021-04-25 10:35:39 83

原创 剑指Offer-72构建乘积数组

/** * 思路:看做一张表格,列和行为a、b两个数组,对角线上的数组看做1,将表格分为上下两个三角 * @author Lucas * @date 2021/04/23 18:17 * @param a * @return int[] */public int[] constructArr(int[] a) { int len = a.length; //长度为0 直接返回空数组 if(len == 0){ return new int[0]; .

2021-04-23 18:30:21 65

原创 剑指Offer-71不用加减乘除做加法

public int add(int a, int b) { // 当进位为 0 时跳出 while(b != 0) { // c = 进位 int c = (a & b) << 1; // a = 非进位和 a ^= b; // b = 进位 b = c; } return a;}

2021-03-25 13:33:46 66

原创 剑指Offer-70求1+2+…+n

int res = 0;public int sumNums(int n) { // 当 n = 1 时 n > 1 不成立 ,此时短路,终止后续递归 boolean x = n > 1 && sumNums(n - 1) > 0; res += n; return res;}

2021-03-25 13:10:43 70

原创 剑指Offer-69股票的最大利润

public int maxProfit(int[] prices) { // 买不了就0 int res = 0; for (int i = 0; i < prices.length; i++){ for (int j = i + 1; j < prices.length; j++){ // 遍历找到最大利润 res = Math.max(res, prices[j] - prices[i]); .

2021-03-23 18:30:37 70

原创 剑指Offer-68圆圈中最后剩下的数字

public int lastRemaining(int n, int m) { // 把这个0 ~ n-1存起来 List<Integer> list = new ArrayList<>(); for (int i = 0; i < n; i++){ list.add(i); } int delete = 0; // 循环直到list中只剩一个 while (list.size() > 1){ .

2021-03-23 17:19:17 90

原创 剑指Offer-67扑克牌中的顺子

public boolean isStraight(int[] nums) { Set<Integer> repeat = new HashSet<>(); int max = 0, min = 14; for(int num : nums) { // 跳过大小王 不用考虑有几个大小王 因为不重复且最大-最小<5是形成顺子必然事件 if(num == 0) { continue; .

2021-03-23 16:32:43 95

原创 广东联通光猫wo-27s华为HG8321R超级密码

联通光猫有两个LAN口,一个千兆,一个百兆,没有IPTV又不想浪费一个LAN口的可以到管理员端改设置!管理地址:http://192.168.1.1/cu.html管理员账号:CUAdmin广东联通华为光猫统一超级密码(测试WO-27S可以使用):cuadmin00259e如果以上账号不能登录的就试试这个管理员账号:CUAdmin管理员密码:cuadmin + 光猫后面标签的MAC地址前6位(有大写字母就改成小写)仅限广东部分地区,具体自行测试...

2021-03-19 02:47:36 31263 4

原创 剑指Offer66-n个骰子的点数

public double[] dicesProbability(int n) { // 初始化一个筛子 double[] dp = new double[6]; // 初始化数组全是六分之一 Arrays.fill(dp, 1.0 / 6.0); for (int i = 2; i <= n; i++) { // 创建临时结果集 double[] tmp = new double[5 * i + 1]; for.

2021-03-16 17:56:52 84

原创 剑指Offer-65队列的最大值

// 存储队列Queue<Integer> queue;// 单调双向队列Deque<Integer> deque;public MaxQueue() { queue = new LinkedList<>(); deque = new LinkedList<>();}public int max_value() { // 空返回-1 非空返回队头 return deque.isEmpty() ? -1 : de.

2021-03-10 13:53:26 61

原创 剑指Offer-64滑动窗口的最大值

public int[] maxSlidingWindow(int[] nums, int k) { // 数组为空 直接返回空数组 if(nums.length == 0 || k == 0) { return new int[0]; } // 返回的结果 int res[] = new int[nums.length - k + 1]; // 左边界 int j = 0; // k为右边界 超出nums.length为出口.

2021-03-09 18:20:34 70

原创 剑指Offer-63左旋转字符串

public String reverseLeftWords(String s, int n) { // 重新拼接字符串 n - s.length() 加上 0 - n return s.substring(n) + s.substring(0, n);}

2021-03-08 14:50:55 84

原创 剑指Offer-62翻转单词顺序

public String reverseWords(String s) { // 不考虑线程安全 StringBuilder性能更好 StringBuilder stringBuilder = new StringBuilder(); // 并且空格分割成数组 String[] strings = s.split(" "); for (int i = strings.length - 1; i >= 0; i--){ // 遇到连续空格 直接.

2021-03-05 13:43:43 59

原创 剑指Offer-61和为s的连续正数序列

public int[][] findContinuousSequence(int target) { // 滑动窗口 int i = 1; int j = 2; int sum = 3; List<int[]> res = new ArrayList<>(); // i,j相遇即为出口 while(i < j) { // 小于时 j往后走 并把j加上 if(sum < target.

2021-03-04 13:48:54 98 1

原创 剑指Offer-60和为s的两个数字

public int[] twoSum(int[] nums, int target) { // 双指针 int i = 0; int j = nums.length - 1; // i,j相遇是出口 while(i < j) { int sum = nums[i] + nums[j]; // 递增序列 和小i++ if(sum < target) { i++; .

2021-03-03 22:21:16 77 2

原创 剑指Offer-59数组中数字出现的次数 II

public int singleNumber(int[] nums) { HashMap<Integer, Boolean> hashMap = new HashMap<>(); // 遍历将出现一次的数字value置为true,出现多次的value置为false for (int num : nums){ if (hashMap.get(num) == null){ hashMap.put(num, true);.

2021-03-02 15:25:32 90

原创 剑指Offer-58数组中数字出现的次数

public int[] singleNumbers(int[] nums) { int x = 0, y = 0, n = 0, m = 1; // 遍历异或 for(int num : nums) { n ^= num; } // 循环左移,计算 m while((n & m) == 0) { m <<= 1; } // 遍历 nums 分组 for(int num: nums).

2021-03-02 14:44:35 64

原创 剑指Offer-57平衡二叉树

public boolean isBalanced(TreeNode root) { return recur(root) != -1;}public int recur(TreeNode root) { // 后续遍历 if (root == null) { return 0; } int left = recur(root.left); if(left == -1) { return -1; } in.

2021-03-01 13:40:27 53

原创 剑指Offer-56二叉树的深度

public int maxDepth(TreeNode root) { // 后序遍历 if (root == null){ return 0; } // 此树的深度等于左子树的深度与右子树的深度中的最大值 +1 return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;}...

2021-03-01 11:44:39 72

原创 剑指Offer-55二叉搜索树的第k大节点

int res;int k;public int kthLargest(TreeNode root, int k) { this.k = k; dfs(root); return res;}public void dfs(TreeNode node){ // 以右 -> 根 -> 左的方式遍历树 即可得到倒序 方便查找第k大节点 if (node == null){ return; } dfs(node.righ.

2021-03-01 10:20:42 51

原创 剑指Offer-54 0~n-1中缺失的数字

public int missingNumber(int[] nums) { int i = 0; int j = nums.length - 1; while(i <= j) { // 二分查找 int m = (i + j) / 2; // 如果相等 证明前面没有缺失 则取 m + 1 ~ j if(nums[m] == m) { i = m + 1; // 否.

2021-03-01 09:53:22 69

原创 剑指Offer-53在排序数组中查找数字 I

public int search(int[] nums, int target) { // 找target的右边界 - target-1的右边界 return helper(nums, target) - helper(nums, target - 1);}int helper(int[] nums, int tar) { int i = 0; int j = nums.length - 1; // 二分法查找 while(i <= j) { .

2021-02-26 16:56:26 49

原创 剑指Offer-52两个链表的第一个公共节点

if (headA == null || headB == null) { return null;}// 双指针 消除两个链表的长度差ListNode pA = headA;ListNode pB = headB;// 直到A、B相遇while (pA != pB){ // A先自己遍历完 // 然后A就变成了B 继续遍历 if(pA == null){ pA = headB; }else{ pA = pA.next;.

2021-02-26 15:32:24 71

原创 剑指Offer-51数组中的逆序对

public int reversePairs(int[] nums) { // 用于合并阶段存放数组 int[] tmp = new int[nums.length]; return mergeSort(0, nums.length - 1, tmp, nums);}private int mergeSort(int l, int r, int[] tmp, int[] nums) { // 终止条件 if (l >= r) { ret.

2021-02-26 14:35:59 74

原创 剑指Offer-50第一个只出现一次的字符

public char firstUniqChar(String s) { // 遍历 for (int i = 0; i < s.length(); i++){ char ch = s.charAt(i); // 某个字符出现的位置就是当前i的位置 且 i之前没有出现过这个字符 if (i == s.lastIndexOf(ch) && !s.substring(0, i).contains(String.valueO.

2021-02-25 18:02:27 92

原创 剑指Offer-49丑数

/** * 动态规划 * 有规律后面的丑数都是由前面的丑数*2或*3或*5得来的 * 求得的丑数记录dp数组中 * 三个指针p2,p3,p5 * p2指向的数字下一次永远*2,p3指向的数字下一次永远*3,p5指向的数字永远*5 * 从2*p2 3*p3 5*p5取最小的数,作为第k个丑数 * 返回第n个丑数 */public int nthUglyNumber(int n) { int p2 = 0; int p3 = 0; int p5 = 0; in.

2021-02-25 17:17:30 65

原创 剑指Offer-48最长不含重复字符的子字符串

public int lengthOfLongestSubstring(String s) { Map<Character, Integer> dic = new HashMap<>(); int res = 0; int tmp = 0; for(int j = 0; j < s.length(); j++) { // 获取索引 i int i = dic.getOrDefault(s.charAt(j), -.

2021-02-25 13:32:16 97

原创 剑指Offer-47礼物的最大价值

public int maxValue(int[][] grid) { int m = grid.length; int n = grid[0].length; // 初始化矩阵第一行 for(int j = 1; j < n; j++) { grid[0][j] += grid[0][j - 1]; } // 初始化矩阵第一列 for(int i = 1; i < m; i++) { grid[i][0].

2021-02-25 11:36:04 74

原创 剑指Offer-46把数字翻译成字符串

public int translateNum(int num) { // 动态规划法 String s = String.valueOf(num); int[] dp = new int[s.length()+1]; // 初始化dp[0]代表空数字 dp[1]代表第一个数字 的组合翻译方式有一种 dp[0] = 1; dp[1] = 1; for (int i = 2; i <= s.length(); i++){ Stri.

2021-02-25 10:34:17 69

原创 剑指Offer-45把数组排成最小的数

public String minNumber(int[] nums) { // 想到排序的时候对字符串排序是根据首位ASCII码 符合题目意愿 String[] array = new String[nums.length]; // 转成String数组 for (int i = 0; i < nums.length ; i++){ array[i] = Integer.toString(nums[i]); } // Lambda表达.

2021-02-24 13:15:20 71

原创 剑指Offer-44数字序列中某一位的数字

public int findNthDigit(int n) { // 表示几位数 int digit = 1; // 几位数开始的数字 long start = 1; // 几位数一共有多少个 long count = 9; // 确定所在数字的是多少位的 while (n > count) { n -= count; digit += 1; // 总结出来的规律 sta.

2021-02-24 11:10:13 58

原创 剑指Offer-43 1~n 整数中 1 出现的次数

public int countDigitOne(int n) { int res = 0; // 标记当前位数 个位为1 十位为10 百位为100 。。。。 int digit = 1; // 初始化 // 当前位置前面的数字 int high = n / 10; // 当前位置的数字 int cur = n % 10; // 当前位置后面的数字 int low = 0; while (high != 0 || cu.

2021-02-24 10:34:26 66

原创 剑指Offer-42连续子数组的最大和

public int maxSubArray(int[] nums) { // 动态规划法 // 因为不需要输出具体是哪一段得出的最大和 直接在原数组上操作 int res = nums[0]; for(int i = 1; i < nums.length; i++) { // 以元素 nums[i] 为结尾的连续子数组最大和 // 如果它前面是个负数就不要加进来拖后腿了 加个0 最大和就是它本身 nums[i] += .

2021-02-23 13:01:35 62

原创 剑指Offer-41数据流中的中位数

PriorityQueue<Integer> A, B;public MedianFinder41() { //规定 小顶堆 保存较大的一半 长度为N/2 或 (N+1)/2 A = new PriorityQueue<>(); //规定 大顶堆 保存较小的一半 长度为N/2 或 (N-1)/2 B = new PriorityQueue<>((x, y) -> (y - x));}public void addNum(int.

2021-02-23 11:36:32 69

android即时通讯IM基于环信SDK.zip

开发环境Windows10下基于JRE1.8.0、OpenJDK Server VM的集成开发工具Android Studio 3.5和环信即时通讯云Android SDK。安装配置需要在环信创建应用,获得AppKey并在项目中导入easeui模块。即时通信简称 IM,它是一种基于互联网的即时交流消息的业务,允许两人或多人使用网络即时的进行文字的交互、音频的交互、视频的交互等。该系统高效、稳定、安全,同时很多即时通信系统还支持点对点的数据交换等功能。常见的即时通讯工具微信被人们常称V信,所以我开发的即时通讯取名H信,H代表开发者姓名首字母,信代表即时通信。

2020-07-15

考勤管理系统 数据结构 C语言

班级考勤管理系统主要的功能有:读写本地txt文件、实现角色设定,三种用户不同权限、管理员对班级成员增删改查、管理员对班级考勤管理、班委对考勤增删改查、对每周学生的出勤进行统计、班级成员根据不同条件查询考勤纪律。

2020-07-15

垃圾分类网站 web前端+java后端.zip

自主制作垃圾分类知识企业,业务涉及垃圾分类常识文字查询,语音查询,拍照识别,图文展览,垃圾分类知识小游戏等

2020-07-15

酒店管理系统(包含数据库).zip

酒店需要一个客房信息管理系统对旅客住宿情况进行管理。系统需要维护所有客房的详细信息,登记入住旅客信息,并实现各种相关的查询、统计功能。

2020-07-15

雷电游戏java.zip

雷电飞机射击游戏源码 java。本程序实现的主要功能有游戏主界面、游戏结束界面、飞机爆炸效果、子弹移动、飞机移动、生命、分数、背景地图移动、键盘监听、线程实现。

2020-07-15

bigwork.cpp班费管理系统

初学C语言 班费管理系统 可以学习一下。初学C语言 班费管理系统 可以学习一下。初学C语言 班费管理系统 可以学习一下。

2019-06-01

空空如也

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

TA关注的人

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