自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(228)
  • 资源 (1)
  • 收藏
  • 关注

原创 epoll并发编程

在传统的 I/O 模型中,一般使用 select 或 poll 来进行多路复用,但随着连接数的增加,它们的性能开始下降。当文件描述符上发生关注的事件时,epoll_wait 将返回,同时告诉应用程序是哪些文件描述符发生了事件。这部分没有展示具体的实现代码,而是把一些业务逻辑省略掉了,只展示了epoll和线程池相关的核心代码,具体实现代码见git仓库。连接数: epoll 能够处理大规模的并发连接,而 select 和 poll 的性能随着连接数的增加而下降。线程池中的每个线程都可以处理一个独立的连接。

2023-12-30 15:42:54 1095

原创 mybatis like的两种写法

第一种: 在java程序中,把like的内容组装好。 把这个内容传入到sql语句//like第一种方式List<Student> selectLikeOne(@Param("name") String name);mapper<!--like第一种方式--><select id="selectLikeOne" resultType="com.nefu.domain.Student"> select * from student where name l

2021-12-20 13:58:07 2546 1

原创 mybatis #与$有何区别

先上结论#和 $区别总结#使用 ?在sql语句中做占位的, 使用PreparedStatement执行sql,效率高,能够避免sql注入,更安全。#{}一般作为列的值使用,在等号的右边,#{}位置的值和数据类型有关$不使用占位符,是字符串连接方式,使用Statement对象执行sql,效率低,有sql注入风险,缺乏安全性。${}数据是原样是用的,不区分数据类型,常用作表名或者列名#占位符,告诉 mybatis 使用实际的参数值代替。并使用 PrepareStatement 对

2021-12-19 22:32:58 338

原创 redis的持久化

一,快照(snapshot)1)将某一时刻数据写入硬盘,文件后缀为rdb。redis的默认持久化方式2)客户端持久化:1.save:redis服务器阻塞,直到持久化完成2.bgsave:redis服务器父进程产生子进程,子进程去持久化,服务器非 阻塞。3)服务器配置方式自动触发缺点:可能丢失部分数据,当一次快照完成后,还未到达下次,中间的操作就没了。二,AOF(append only file)1)将客户端的写命令记录到日志文件中,redis只需执行一遍日志文件即可恢复数据。2)re

2021-12-16 21:45:56 613

原创 回溯法解决子集问题与全排列问题异同辨析

总体来说是回溯法,模板,框架整起来,但是差别还是有的。//子集问题public class Test { static List<List<Integer>> res=new ArrayList<>(); public static void main(String[] args) { List<Integer> list= Arrays.asList(1,2,3); LinkedList<Intege

2021-12-08 14:08:47 307

原创 系统分析与设计实验2 项目无法启动 无法进入登录界面 图解通关

系统分析与设计实验2 项目无法启动 无法登陆 图解方案

2021-12-05 19:58:41 416

原创 死锁无处不在

不经意间就写了个问题代码,多线程还是很有意思的哈class Foo{ private int number=0; void add(){ synchronized (this){ if(number==0){ System.out.println("add 1 "+(++number)); notify(); }else{ tr

2021-12-04 15:50:15 213

原创 Office各个windows版本支持大全

本人下载了个office2019,结果没装上(我是win7)。老老实实装回了office2016。为了避免大家走弯路,耗时耗力,总结各个版本如下,希望对大家有帮助。具体如下:Office 2019版(32位):(只支持Win10系统,32位64位电脑都可以)Office 2019版(64位):(只支持Win10系统,只支持64位电脑)Office 2016版(32位):(至少要Win7、Win8、Win10系统,32位64位电脑都可以)Office 2016版(64位):(至少要Win7、Win8

2021-11-11 16:06:21 20534 1

原创 NOAUTH Authentication required.

理由很简单,redis设置了密码,你必须输入密码才能操作。输入密码又不能直接输入,得这样写: auth 123456123456为我的密码,你写你自己的就行

2021-10-31 15:49:05 139 2

原创 两个线程交替打印1 2

方法一:信号量法pv操作,有的课本也叫wait siginal操作,都是那根豆芽import java.util.concurrent.Semaphore;class Solution2 { public static void main(String[] args) { FooBar fooBar = new FooBar(10); new Thread(new Runnable() { @Override p

2021-10-25 20:35:17 269 2

原创 如何验证java 类加载机制的存在?

相信学java的小伙伴们,都看过文章或者听老师讲过,类初次使用的时候,会加载到内存,有一个类加载器的存在。但是如何验证呢?你说有就有?如何去验证?我提供一种方法哈,大家有别的方法也可以在评论区说一下哈。public class Student {}public class Main { public static void main(String[] args) { Student student = new Student(); }}上面代码是一个St

2021-10-17 23:19:00 231

原创 记一道双指针的面试题 leetcode11题

该公司是搞AI算法,面试官给我说要来一个图的算法题。然后是下面这道题。给了15分钟时间吧。然后我看题目看了几分钟,没跟图的知识联系起来。哈哈哈哈哈哈哈哈哈哈然后我就暴力解决了,最后结果是大数据过不去,时间复杂度是O(N*N)。面试官说让我下去再做一下,咋们接着继续。我学习了官方O(N)的解法,双指针。哈哈哈哈哈哈哈我的暴力解法class Solution { public int maxArea(int[] height) { int len=height.lengt

2021-10-16 12:43:53 126

原创 重温经典数组中第k大的数

这题挺老套的,就是建立大根堆。然后依次交换第0和最后一个元素k-1次,第k大的数就在数组首部了。附上代码:class Solution { public int findKthLargest(int[] nums, int k) { int n=nums.length; getHeap(nums,n); for(int i=n-1;i>=n-k+1;i--){//取出前k-1个数 swap(nums,0,i);

2021-10-14 20:17:44 71

原创 VMware 安装的CentOS7.6每次打开没网络

VMware 安装的CentOS7.6每次打开没网络我们通过Xshell 远程登录Linux时,总是显示失败。如下图最后发现Linux没连网,哈哈哈。下列配置可以保证开机自动连网。进入/etc/sysconfig/network-scripts/ifcfg-ens33这个文件夹如下打开是这样的这个地方 onboot改为等于yes。然后保存。最后一步:打开终端,运行 service network restart,重启网络,OK。希望对大家有帮助。...

2021-10-14 19:13:28 166

原创 npminstall WARN package.json not exists: C:\Users\Administrator\package.json

npminstall WARN package.json not exists: C:\Users\Administrator\package.json因为你直接运行了cnpm install,这个命令要在项目路径下运行,例如 我的项目名子叫demo,那么我就 cd democd 到项目文件夹之后,就可以运行cnpm install,然后就开始下载了...

2021-08-10 17:43:30 4604

原创 springboot快速搭建详细步骤,纯图解,一步步操作,包会

1.先new 一个 Project2.设置自己的name 我的名字是day09bootdemo01,路径,jdk版本,点击next3.这个界面是选择框架支持,放入需要的支持3.1 热部署插件3.2 web 和模板都选中3.3选择mybatis框架和自己的数据库驱动,我的是postgresql driver ,mysql就选mysql的,自己选自己的就行3.4点击完成就行4.配置maven,双击这是在加入依赖我们需要加入以下的依赖 <dependency>

2021-07-30 11:03:05 4108

原创 java IO中的装饰器模式图解

java IO中的装饰器模式图解从网上找了张图,很详细的表达了IO中的装饰器模式内容。(如果不清晰,右键 选择在新标签页打开即可)先说核心,装饰器模式是用组合代替继承,达到灵活扩展的目的。装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。这是jdk源码FilterInputStream的

2021-07-23 17:21:45 430

转载 DecimalFormat对数值格式化的舍入问题——RoundingMode

DecimalFormat对数值格式化的舍入问题——RoundingMode看这篇文章,写的很详细https://blog.csdn.net/alanzyy/article/details/8465098

2021-07-23 17:03:29 107

原创 进入jdk源码内部进行调试,详细图解

进入jdk源码内部进行调试直接上步骤1.打开idea,找到file->settings2.搜索stepping3.去掉 do not step into the classes 前面的勾4.点击OK恭喜你可以自由翱翔在jdk源码内部了。

2021-07-23 16:58:44 183

原创 Integer相等问题,源码分析,一看就懂

Integer相等问题先上代码说结论,-128到127之间的两个Integer用==比较是相等的。之外的不等。 Integer n1 = 1; Integer n2 = Integer.valueOf(1); System.out.println(n1.equals(n2));//true System.out.println(n1 == n2);//true Integer m1 = Integer.valueOf(1

2021-07-23 16:52:20 302

原创 ORA-00984错误: 列在此处不允许

ORA-00984错误: 列在此处不允许在使用sqldeveloper时,容易犯这个错误,很难排查当数据以char的形式存在时,应加单引号,则插入数据库就不会出现类似错误.

2021-06-26 10:37:30 3665

原创 最长同值路径

解题思路:对于任意一个节点,假设左右子树路径长度已算出,最长路径等于什么呢?if(this.val==this.left.val&&this.val= =this.right.val)sum等于左子树长度加右子树长度+2if(this.val!=this.left.val&&this.val!=this.right.val)sum=0;还有两种情况不列大家也懂了吧。class Solution { int res; public int lon.

2021-06-23 11:47:25 54

原创 在二叉树中分配硬币

解题思路:二叉树的题目不用说,三行经典遍历。剩下的都是细节。递归函数的意义是什么呢?我们可以这样考虑,对任意一个节点,他的左子树多x个硬币,右子树多y个硬币,(x<0代表多负数个,即差几个)那么这个节点多x+y+this.val-1个节点。设置一个全局变量(属性,java里没有全局变量的概念,因为java是完全面向对象的,这里说全局变量是c带来的习惯,意思差不多,还是那根豆芽,叫什么不重要)记录移动的次数。代码如下:class Solution { int res; p.

2021-06-23 11:30:51 87

原创 恢复二叉搜索树

题目很短,简单来说就是有两个节点位置不对,你得把它们交换回来。那么如何做呢?思路很简单,首先,得知道是哪两个节点吧。找到了需要交换的节点,节点值相互换一下不就好了。有了思路,大致框架就可以写出来了。public void recoverTree(TreeNode root) { dfs(root); int t=x.val; x.val=y.val; y.val=t; }dfs就是找节点的函数,关键是怎么找。分情况找,假..

2021-06-22 15:47:28 45

原创 . 两个链表的第一个公共节点

解题思路:你变成我,走过我走过的路。我变成你,走过你走过的路。然后我们便相遇了…public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode h1=headA,h2=headB; while(h1!=h2){ if(h1!=null) h1=h1.next; else h1=headB; if(h2.

2021-06-21 11:08:30 43

原创 高效解决二叉树与链表问题,直击递归本质。

一晃一个月没写博客了,时间总是悄悄的向前啊。二叉树与链表的结合,二叉树与链表都是递归的宠儿。二叉树与链表问题是天然的递归问题,只有直击问题本质方能立于不败之地。这次给大家带来一道二叉树的中等题,也不难,就是练习练习递归,写的玩玩,练练手吧。题目一看完,心中大致框架就有了,分两步,第一步遍历树,只要树节点值等于链表的第一个节点的值,那就得开始匹配了吧,看看能不能匹配的上。第一步:树的遍历,闭着眼睛也能写吧。void dfs(TreeNode root,ListNode head){

2021-05-31 15:23:00 114

原创 回溯算法优雅吗?

来一道leetcode中等难度的题目。这一题我一看完题目,花了大概2分钟,写了个回溯算法,如下。class Solution { int max=0; public int maxScore(int[] cardPoints, int k) { back(cardPoints,0,k,0,0,cardPoints.length-1); return max; } void back(int[] cardPoints,int sum,int.

2021-04-28 21:23:35 56

原创 递归,动态规划,回溯算法,在实战中区分它们。

这一题方法很多,比如递归,动态规划。递归又分优化去重,不优化暴力。总体来说怎么弄可以。递归就是从自顶向下,动态规划就是自下而上。大同小异。如果数据量不大,这一题还可以用回溯算法。如何回溯?回溯思路:回溯其实很简单,我们先不管计算机,先想一下人怎么解题。最直接的方式不就是从第一行开始,把所有情况列出来,最后看条路径和最小么。回溯其实就是描述的这样的过程。我们先来看下回溯的代码class Solution { int min=Integer.MAX_VALUE; public int .

2021-04-25 19:53:27 280

原创 回溯算法求集合子集,详解递归过程

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。这一题可以采用回溯算法。我附上一段测试代码,帮助大家理解回溯的过程。而不是从理论上去讲递归怎么运行,递归运行只有一个结果,对递归不熟悉的朋友们根本无法理解。只有搞清递归运行的过程才能真正解决回溯问题,不然都是耍流氓。先附上递归每一步的操作。public class Solution { public static void main(String[] args) { int[] a=

2021-04-21 23:11:03 261

原创 打家劫舍,当一个合格的小偷

现在程序员工作不好干,转行颇多。据说小偷还不错,一次挣好几万,可以考察一波。可以小偷也不好当啊,话说干一票少一票,常在河边走,哪有不湿鞋。出去一次应该考虑收益最大化吧,所以说,必要的筹谋少不了。普通街区抢劫思路:由于不能盗窃相邻的两家,我从第0到i家考虑,假设第i家我进去了,那么第i-1家我就不能进去了,不然被抓了,岂不是鸡飞蛋打。所以我只需要考虑怎么使得前面i-2家的收益最高。如果第i家没有进去,那我就可以去i-1家了,考虑如何使前i-1家收益最大。现在问题规模不知不觉就变小了,由i变成了i-2或.

2021-04-17 19:24:34 233

原创 java: 类StreamTest是公共的, 应在名为 StreamTest.java 的文件中声明

对于初学者来说,这个error较为常见吧。java公有类的名字应该与xxx.java文件名字保持一致。

2021-04-10 09:57:57 1002

原创 二叉树的题目的解法归纳,加举例

先看一个例子,这是leetcode上一道中等难度的题。思路:根据中序遍历去找下一个节点就好,设置一个pre节点记录前一个位置。提供两种方法吧。第一种是设置类成员pre和ans,这种方法较为简单直接,因为不必考虑递归的返回值问题。class Solution { TreeNode pre,res; public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { f(root,p); retur

2021-04-09 11:25:52 117

原创 N皇后为代表的的回溯算法,模板总结

方法总结:1.先聊一聊回溯算法,名字很高端,其实内容很朴实。就是穷举所有方案。再具体一点,可以理解为没有优化的动态规划。动态规划还可以消除一些重复项,优化算法,回溯直接全部举出来,没法优化。数学大佬高斯一生也没有解决8皇后问题,可想回溯算法时间复杂度有多高。2.解题模板其实也好说,如下 public void backtracking(){ if(){//括号里写满足的结束条件 res.add()//添加合适的路径 return; .

2021-04-01 21:40:38 157

原创 滑动窗口思路讲解,举例练手,包会

滑动窗口大致思路如下:1.对字符串s,初始化双指针,left=right=0;【left,right】区间称为窗口。2.不断增大right,一直到窗口中的字符串满足题目要求。3.停止增加right,增大left,直到窗口不再符合题意。4.重复2,3,一直遍历完s.5.简单来说就是先找解,再找最小的解。有了思路,我们来实操一下,先来一道leetcode的hard题目。class Solution { public String minWindow(String s, String t)

2021-03-30 20:39:51 162

原创 用左右指针解决三数之和

class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> list=new ArrayList<>(); int n=nums.length; int j,k,sum; Arrays.sort(nums); for(int i=0;i<.

2021-03-30 16:47:51 78

原创 用map求解两数之和

class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> map = new HashMap<>(); for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])) return new int[].

2021-03-29 21:23:22 236

原创 双指针原地合并排序的数组

class Solution { public void merge(int[] A, int m, int[] B, int n) { int pa=m-1,pb=n-1; int resp=m+n-1; while(pa>=0&&pb>=0){ if(A[pa]>=B[pb]){ A[resp--]=A[pa--]; }else A.

2021-03-29 20:55:31 83

原创 用双指针寻找重复数

class Solution { public int findDuplicate(int[] nums) { int fast=0,low=0; while(true){ low=nums[low]; fast=nums[nums[fast]]; if(fast==low) break; } low=0; while(fast!=low){ .

2021-03-28 21:33:06 163

原创 用双指针求出链表中倒数第k个节点

class Solution { public ListNode getKthFromEnd(ListNode head, int k) { ListNode fast,low; fast=low=head; while(k-->0){ fast=fast.next; } while(fast!=null){ fast=fast.next; .

2021-03-28 19:57:08 71

原创 用单调队列解决滑动窗口的最大值

class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length==0) return new int[0]; mydeque deque=new mydeque(); int n=nums.length; int[] res=new int[n-k+1]; for(int i=0;i<n;i++){ .

2021-03-27 20:17:53 94

课程设计贪吃蛇c语言

大学c语言课程设计,下载后粘贴到codeblocks里即可直接使用,有速度调节功能,积分功能,排行榜功能等,

2020-11-06

空空如也

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

TA关注的人

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