
Java
文章平均质量分 66
个人博客主页:wyn-365.club
Coding路人王
V:CaptainWang365
展开
-
基于springboot+vue的企业校园招聘面试管理系统【超级管理员、平台企业、学校、学生、HR】
(1)针对系统内的不同角色,系统能够赋予其不同的操作权限。招聘者和求职者可以通过此系统进行招聘和求职工作。招聘者可以在系统进行职位的发布和下架,同时可以查看收到的投递简历,对应聘简历进行筛选,对于符合招聘需求的求职者预约面试;平台管理员能够管理职位类别和对企业信息、职位进行审核。原创 2024-04-04 11:52:01 · 239 阅读 · 0 评论 -
基于springboot+vue的酒店预订景点旅游管理系统
原创 2024-04-04 11:47:06 · 147 阅读 · 0 评论 -
基于springboot的小区社区物业管理系统
社区管理员具有,车位管理功能、物业管理功能、投诉管理功能、维修管理功能、楼房管理功能、房屋管理功能、住户管理功能、车位管理功能、电量抄表管理功能、用户管理功能等CRUD增删改查。原创 2022-05-01 11:46:57 · 3799 阅读 · 0 评论 -
基于Java的企业新闻管理系统的设计与实现
一、基于Java的企业新闻管理系统的设计与实现企业新闻管理系统使用Java语言和Mysql数据库进行开发,并对新闻的动态显示和数据进行相关的管理。该系统有游客、会员和管理员三种身份,游客可以实现企业新闻浏览和新闻搜索等功能,会员可以实现会员登录、新闻浏览搜索、在线交流等功能,游客和会员在浏览新闻时有着不同的权限。管理员可以实现编辑个人账号、企业新闻管理、意见公告设置、新闻动态管理等功能。本系统是基于Java的企业新闻管理系,游客可以使用本系统进行新闻的查看以及在线搜索,还可以注册升级为会员等;会员可以发原创 2022-04-30 21:20:26 · 2169 阅读 · 0 评论 -
基于SSM的医药进销存管理系统
一、基于SSM的医药进销存管理系统编程语言: java框架: springboot前台: html js layui框架 jquary 开发工具:IDEA2020,JDK1.8, mysql5.7,maven 3.6.0 【后期提供你们】后台管理账号:admin,密码:1234561.【源码+数据库】:https://download.youkuaiyun.com/download/wyn_365/18798711二、展示原创 2021-04-13 10:56:27 · 1151 阅读 · 5 评论 -
基于SSM框架的志愿者管理系统
一、基于SSM的志愿者管理系统编程语言: java框架: SSM前台: html js jquary开发工具:eclipse2020,tomcat8 ,JDK1.8,maven 3.6.0数据库: mysql5.7, 【后期提供你们】后台管理账号:admin,密码:1234561.下载地址:https://download.youkuaiyun.com/download/wyn_365/85041999二、新闻中心,志愿者文化中心,原创 2022-04-30 15:42:33 · 4546 阅读 · 3 评论 -
基于Springboot、SSM前后端分离的人事办公管理系统
一、基于Springboot、SSM前后端分离的人事办公管理系统编程语言: java框架: springboot前台: html js layui框架 jquary 开发工具:IDEA2020,JDK1.8, mysql5.7,maven 3.6.0 【后期提供你们】后台管理账号:,密码:1234561.下载地址:https://download.youkuaiyun.com/download/wyn_365/85041999二、展示原创 2022-03-27 09:52:33 · 6517 阅读 · 0 评论 -
剑指offer 50 第一个只出现一次的字符
一、题目在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)1.1 思路方法一:哈希表1、将字符当成哈希表中的key,第一次出现时候为true,重复出现则置为false;2、遍历数组,拿到第一个在哈希表中的value为true的字符。1.2 代码public class FirstNotRepeatingChar { // google 4 public static int FirstNotRepeat原创 2021-12-25 16:26:08 · 312 阅读 · 0 评论 -
温习一遍IDEA中Git操作流程,团队,跨团队【Github/Gitee/Gitlab】
一、Git 2.31.1git是一个免费的,开源的分布式版本控制系统,快速高效的管理从小型到大型的企业项目。svn集中式版本控制git命令,基于开发案例,详细命令git分支,分支特性,分支创建,分支转换,分之合并,分之合并代码冲突问题如何解决?Idea如何使用git操作,如何集成。版本控制:工作机制:本地工作区【代码存放目录】git add–>暂存区【git添加到追踪文件】git commit—>本地库,基于上一个版本的代码,不能删除某一个版本的代码—》git push远程仓库原创 2021-12-25 12:29:00 · 1428 阅读 · 0 评论 -
字节跳动------剑指offer专题精选谷歌、微软等知名IT企业典型面试题
1. JZ6 从尾到头打印链表输入:{1,2,3}返回值:[3,2,1]public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //用来存储链表中节点的值。 Stack<Integer> reverse = new Stack<>(); while(listNode != null){ reverse.原创 2021-12-21 14:43:52 · 537 阅读 · 0 评论 -
双指针专项练习-----链表操作
一、双指针法快慢指针的思想。我们将第一个指针 fast 指向链表的第k+1 个节点,第二个指针 slow 指向链表的第一个节点,此时指针fast 与 slow 二者之间刚好间隔 k 个节点。此时两个指针同步向后走,当第一个指针fast 走到链表的尾部空节点时,则此时slow 指针刚好指向链表的倒数第k个节点。1.1 链表中倒数第k个节点 public ListNode getKthFromEnd(ListNode head, int k) { ListNode fast = head原创 2021-12-21 10:50:47 · 499 阅读 · 0 评论 -
Log4j高危漏洞复现及解决方案-----周瑜老师
一、Log4j二、漏洞复现2.1 log4j版本 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.0</version> </dependency>原创 2021-12-13 12:39:25 · 3264 阅读 · 0 评论 -
Spring源码复习
一、Spring源码1.1 Spring5 依赖准备 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency&原创 2021-11-12 11:06:21 · 702 阅读 · 0 评论 -
如何手写一个JDK动态代理?
一、动态代理代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。Java 动态代理机制以巧妙的方式近乎完美地实践了代理模式的设计理念。二原创 2021-11-07 11:25:58 · 182 阅读 · 0 评论 -
切记【阻塞/非阻塞】【FutureTask异步执行】
一、阻塞非阻塞1.1 同步阻塞IO在Java应用中,默认情况下所有的Socket连接的IO都是同步阻塞的例如在java发起的一个socket的read操作大致流程如下:1.Java启动io的read读操作开始,用户线程就进入阻塞状态2.系统接收到read调用,开始准备数据,如果内核数据没有准备好,则内核进行等待。3.内核一直等待完整的数据到达,就会将数据从内核缓冲区复制到用户缓冲区,返回内核结果.4.内核返会结果后,用户线程才会解除阻塞的状态,重新运行。特点:在内核执行IO两个点阶段,用户线原创 2021-10-28 16:08:40 · 1223 阅读 · 0 评论 -
【Semaphore、ReentrantLock、CountDownLatch、Cyclicbarrier、ReadWriteLock】多线程交替执行、顺序执行、同时执行、读写分离执行、生产者消费者
一、交替执行建立3个线程,完成交替执行,按照123123123…打印1.1 使用Lock的ReentrantLock实现public class ThreadPrint { public static void main(String[] args) { Print123 print123 = new Print123(); new Thread(()->{ while (true){ print12原创 2021-10-27 14:57:20 · 402 阅读 · 0 评论 -
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
1.Redis 删除过期键的策略(缓存失效策略、数据过期策略)**定时删除:**在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。对内存最友好,对 CPU 时间最不友好。**惰性删除:**放任键过期不管,但是每次获取键时,都检査键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。对 CPU 时间最优化,对内存最不友好。**定期删除:**每隔一段时间,默认100ms,程序就对数据库进行一次检査,删除里面的过期键。至 于要删除多少过期键,以及要检査原创 2021-10-24 14:57:37 · 281 阅读 · 0 评论 -
2022届大厂面试 JUC常考总结版
1.线程和进程有什么区别?线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线原创 2021-10-06 09:17:39 · 220 阅读 · 0 评论 -
【印象深刻------美团优选】美团凉后,【美团优选】捞起【查漏补缺,应用场景,底层欠缺】
一、面试概况今天是之前面美团java研发凉之后的,美团后端捞起面试,我之前一直是觉得自我感觉良好的,【感觉技术面以及四门专业课=====从来不虚】,结果今天感觉非常的知足,不是说的笔试和面试怎么杨吧,就是我在今天这场面试中,积攒到了很多经验,找到了自身的不足,应该思考的地方,面试的要点,让我很是受益,所以抓紧做一个笔记。二、面试-笔试两个算法:一个是二叉树的先序遍历【做出来了】合并两个有序数组【也做出来了】三、技术面3.1 Redis【一直在干redis连环炮】3.2 说一下redis为什么原创 2021-09-23 22:20:05 · 392 阅读 · 0 评论 -
查漏补缺:CRC冗余码+双向链表插入+实现利用栈括号匹配
一、CRC冗余码二、双向链表的插入p之后插入ss->next = p->next;s->prior = p;p->next = s;p->next->prior = s;三、栈实现括号匹配public boolean isValid(String s){ Stack<Character> stack = new Stack<Character>(); for(char c : s.toCharArray()){ if(原创 2021-09-21 11:11:39 · 119 阅读 · 0 评论 -
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
一、OSI总结二、路由器与交换机的区别2.1 外观路由器和交换机的外观长得一样一样的,他们有个超级明显的区别,交换机的各个接口上标注的序列数字是有规律的,接口颜色也是一致的。在路由器的接口上我们可以看到标注的数字是有规律的,标注为wan或者internet的接口,这些接口颜色也不一样2.2 网络连接交换机:连接局域网,没办法访问英特网路由器:连接局域网与因特网2.3 网络分配交换机:分配网络数据路由器:会在局域网自动分配IP,实现虚拟拨号2.4 分层,以及寻址交换机:在数据链原创 2021-09-19 19:29:12 · 1272 阅读 · 0 评论 -
JVM调优常用的调优参数
一、堆内存参数配置-Xms10g :JVM启动时申请的初始堆内存值-Xmx20G :JVM可申请的最大Heap值-Xmn3g : 新生代大小,一般设置为堆空间的1/3 1/4左右,新生代大则老年代小-Xss :Java每个线程的Stack大小-XX:PermSize :持久代(方法区)的初始内存大小-XX:MaxPermSize : 持久代(方法区)的最大内存大小-XX:SurvivorRatio : 设置新生代eden空间和from/to空间的比例关系,关系(eden/from=eden/t原创 2021-09-19 16:12:52 · 7484 阅读 · 0 评论 -
一个类从加载到内存到垃圾回收的全过程是什么【类加载机制+对象回收】
一、类加载机制类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。1.1 加载首先通过一个类的全限定名来获取此类的二进制字节流;其次将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;最后在java堆原创 2021-09-15 21:45:15 · 398 阅读 · 0 评论 -
哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址????
一、内存引用知识1.内存引用地址,是指栈中存放的地址,来指向堆中的某个位置。2.int 是基本类型,数据直接存放在栈中,不存在内存引用地址的说法二、常见比较2.1 int与Integer、new Integer()进行==比较时,结果永远为true1.Integer与int比较时,Integer会有拆箱的过程,我们可以看看拆箱的代码:@Overridepublic int intValue(){ return value;}直接返回的就是value,因此int与Integer以及new原创 2021-09-15 17:13:30 · 499 阅读 · 0 评论 -
父类 子类 的 静态域,main(),构造代码块,构造方法 如何执行????
一、无继承关系时 public class Test{ public static Test t1 = new Test();//静态变量 //构造块 { System.out.println("blockA"); } //静态块 static { System.out.println("blockB"); } public static void main(String[] ar.原创 2021-09-14 11:09:25 · 189 阅读 · 0 评论 -
Jvm的垃圾回收分代回收?CMS 与 G1的区别?
一、复制算法和标记清理算法复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象两个概念:新生代和年老代新生代:初始对象,生命周期短的永久代:长时间存在的对象整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。Serial New收集器是针对新生代的收集器,采用的是复制算法Parallel New(.原创 2021-09-13 22:03:07 · 374 阅读 · 0 评论 -
LeetCode题【换零钱问题汇总】
一、求换零钱的最大次数请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1 public static int change(int amount, int[] coins) { int[] dp = new int[amount+1]; dp[0] =原创 2021-09-12 20:48:21 · 537 阅读 · 0 评论 -
数组连续最大序列问题----【滑动窗口、动态规划求解】
一、求数组连续最大子序列和// 最大连续子数组的成绩 还有求和 public static int maxSubArray(int[] nums) { int res = nums[0]; int sum = 0; for (int num : nums) { if (sum > 0) sum += num; else sum = n原创 2021-09-10 15:13:30 · 698 阅读 · 0 评论 -
2021-08-22爱奇艺后端笔试【完犊子了-选择20题+编程4道】
一、选择题略二、编程题2.1 SQL查询女生最多的前三科目,以及人数# Student_infoid name gener1 kitty 12 kitt 23 kit 2# Subject_Registerstudentid subjectid1 12 23 2# Subject_infoid name1 math2 science3 chinese在这里原创 2021-08-23 11:02:19 · 276 阅读 · 0 评论 -
回溯法、另辟蹊径法 求数组的全排序
一、回溯法【路径,选择条件,结束条件】回溯法,其实也是决策树,核心代码,就是for循环里面的递归,在递归调用之前【做出选择】,递归调用之后【撤销选择】# 核心代码result = []def backtrack(路径,选择列表): if 满足条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径,选择列表) 撤销选择完整代码:public class Permute { List<List&原创 2021-08-23 10:20:32 · 141 阅读 · 0 评论 -
遍历所有子串,回文串,公共前缀,旋转字符串
一、遍历所有子串,判断回文public static String longestPalindrome(String string) { if(string.length()<=1) return string; // 用来装所有的回文子串 ArrayList<String> list = new ArrayList<>(); // 遍历字符串的所有子串 for (int i = 0; i &l原创 2021-08-22 20:26:06 · 596 阅读 · 0 评论 -
个人2021-08-21网易云java后端开发编程笔试题目
一、求两个数和比一个值小所有情况题目:给定一个数组,求所有满足两个数之和小于等于一个指定值的数目如:输入:1 2 35输出:3描述: 【1,2】【1,3】【2,3】代码:Scanner sc = new Scanner(System.in); String nums = sc.nextLine(); Integer ans = 0; Integer num = sc.nextInt(); String[] s = nums.原创 2021-08-21 20:51:20 · 316 阅读 · 0 评论 -
说一说Java中的BlockingQueue
一、BlockingQueue简介阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:1.在队列为空时,获取元素的线程会等待队列变为非空。2.当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。多线程环境中,通过队列可以很容易实现数据共享,比如经典的**“生产者”和“消费者”**模型中,通过队列可以很便利地实现两者原创 2021-08-19 21:52:05 · 477 阅读 · 0 评论 -
Comparable与Comparator有什么区别?
一、Comparable接口Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器需求:请将两个对象之间的属性字段按照大小规则排序如: * 1.如何按照年龄大小排序呢? * 2.体重降序排列呢?? * 3.按照年龄升序排列,年龄相同的体重升原创 2021-08-19 19:05:54 · 283 阅读 · 0 评论 -
LeetCode算法:求出字符串的最大回文子串 及 长度【只利用字符串反转就可】
题目描述给你一个字符串 s,找到 s 中最长的回文子串。输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。题目思路:判断是不是回文串:只需要反转后判断是不是相等然后求出所有的子串 并 判断是不是回文,返回最大的即可/** * @author Captain * @date 2021/8/19 9:53 * 给你一个字符串 s,找到 s 中最长的回文子串。 * 输入:s = "babad" * 输出:"bab" * 解释:"aba" 同样是符.原创 2021-08-19 11:49:56 · 209 阅读 · 0 评论 -
2021-08-16个人阿里笔试题目【编写一个编译器,计算代码在内存所需要的字节数】
2021-08-16 笔试情况题目:编写一个编译器,结算内存所需要的字节数 请输入一个字符串,编译出代码所需要的字节数,如:int a[10][10][10],k,m; int 类型所占4个字节long 类型所占8个字节char 类型所占1个字节输入描述:int a[10][10][10],k,m; 输出描述:输入格式为 变量类型+一个空格+变量;输出结果:4008(10 x 10 x 10 + 1 + 1) x 4 = 4008个人写的很丑很臭代码:package ka原创 2021-08-18 20:43:45 · 167 阅读 · 0 评论 -
阿里Java后端面经【2021-8月份-记录牛客】
一、项目问的很细,问数据库表的设计?如果数据量太大了怎么办?(水平拆分、垂直拆分)怎么拆?垂直拆分是指数据表列的拆分:按照业务交易数据库、用户数据库、商品数据库、店铺数据库等进行拆分拆分原则1.把不常用的字段单独放在一张表;,2.把text,blob等大字段拆分出来放在附表中3.经常组合查询的列放在一张表中优点1.拆分后业务清晰,拆分规则明确。2.系统之间整合或扩展容易。3.数据维护简单。缺点1.部分表关联无法在数据库级别完成,需要在程序中完成2. 事务处理相对更为复杂3. 切分达原创 2021-08-18 17:44:32 · 307 阅读 · 0 评论 -
2021-08-15美团后端笔试【要我真AC不了啊--债见--我去送外卖了】
第一题签到题没难度import java.util.*;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); List<String> detail = new ArrayList<>(); f.原创 2021-08-15 21:01:00 · 2169 阅读 · 1 评论 -
LeetCode146 手撕LRU算法的2种实现方法
最近最久未使用 如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已满时,将时间戳最大的数据项淘汰。2.利用一个链表来实现,每次新插入数据的时候将新数据插到链表的头部;每次缓存命中(即数据被访问),则将数据移到链表头部;那么当链表满的时候,就将链表尾.原创 2021-08-15 15:07:19 · 239 阅读 · 0 评论 -
收集牛客网腾讯面试查漏补缺【threadlocal、explain、引用】
一、ThreadLocal【解决共享变量】1.ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。2.使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。3.ThreadLocalMap是ThreadLocal的内部静态类,而它的构成主要是用Entry来保存数据 ,而且原创 2021-08-15 14:37:08 · 147 阅读 · 0 评论