- 博客(67)
- 收藏
- 关注
原创 Linux中给添加用户并创建该用户权限的文件夹
在公司开发过程中经常会遇到在同一台编译机上给不同的用户创建权限等需求,在这里贴上相应的代码添加用户useradd -m username -p password -d /data/home/gengkaiyuusername、password处分别填上用户名、密码-m 表示添加用户的时候顺便建立该用户权限的文件夹-d 表示该文件夹的目录删除用户及其文件夹userdel -r yyl修改用户密码passwd username若是当前用户为登录用户直接执行passwd即可,如果修
2021-03-09 21:22:21
1952
原创 我的学习笔记-Java服务端开发
从开始进入Java服务端的开发,到目前练习生时长已达三年,在这期间摸爬滚打也走了不少弯路,在此分享一下自己的一个学习历程,希望各位看官在Java服务端学习方面可以少走弯路。ps:不要听信什么年轻人可以多试错涨经验的鬼话,在精力和精神都是饱满状态的学习黄金时期,每一次错误在十年二十年后累积都是昂贵的成本,因此在前期选择一名服务端开发工程师真正所需要的知识进行学习,在这基础之上试错也能得到更快的进步。我将所有的Java知识按照分为如下十四个模块Java相关内容Java基础在这个模块中面试官的问题有一种
2021-01-17 21:25:47
1349
1
原创 送给即将春秋招的同学--一名服务端开发工程师的校招面经总结
前言:Gk作为一名21年大学毕业的Java服务端开发工程师,从19年10月份(大三上)开始进行日常实习面试,期间获得小米、快手、领英、Tencent等offer,因疫情爆发无法准时入职,20年3月份春招成功进入Tencent实习(20.03-20.09),Tencent转正答辩完后进行秋招(20.09-20.11),最后成功获得腾讯(大sp),阿里(大白菜),快手(大sp)等offer,综合各方面原因选择了回归老东家Tencent。整个求职期间共经历了将近50次面试,在这里将自己的个人面经综合总结一下,希望
2021-01-10 00:05:25
443
原创 在Linux中快速找到文件的几种方法
本文主要用于介绍几种Linux常用的查找文件的方法1. findfind命令是Linux在查找文件所在位置时最常使用的命令之一,一般是直接通过文件名进行查询所在位置。[root@localhost ~]# find 搜索路径 [选项] 搜索内容在进行搜查的时候,主要有以下三种选项,其中前两种是我们使用比较多的-name: 按照文件名搜索;-iname: 按照文件名搜索,不区分文件名大小;-inum: 按照 inode 号搜索;例如在当前目录下查找我所想要的application.js,,
2020-12-21 14:23:57
3307
2
原创 背包九讲-Go详解
背包问题本质上是动态规划的一种,一般也是通过状态转移方程式来解决问题,问题一般是以一个有固定容量或者承重的背包和一些固定体积,重量和价值的物品,填充背包从而使背包中物品的价值最大化01背包01背包中每个物品只有选或不选两种状态主要关键点:01背包的主要难点就是在于状态转移方程式的确定,这一点其实也是所有动态规划的难点所在,另一个就是为何物体的体积是逆序遍历的?代码如下:func main() { //背包容积 var v int //物体数量 var n int fmt.Scanf("
2020-12-13 20:50:56
240
原创 Mac 运行goland出现can‘t load package: package xxxx is not in GOROOT问题排查
在通过goland初次进行代码编译后出现如下问题:在这里进行下问题排查1 首先执行 go env 查看项目所在位置是否为GOPATH下/src(项目默认地址)2,确认无误后判断项目go mod是否开启3,如开启直接通过goland的Terminal执行go mod init即可解决问题4,执行成功...
2020-12-04 15:38:17
3592
原创 二十三种设计模式详解
1 动态代理代理是什么?代理其实就是代为处理的意思,个人理解就是产生一个处理类对需要代理的对象进行处理,并且返回该代理对象静态代理首先实现一个Moveable接口,表示代理与被代理的对象都属于同一个类别public interface Moveable { void move(); void stop();}接下来实现一个被代理对象坦克类,有着坦克开始与结束的方法...
2019-09-04 15:36:35
323
1
原创 聚合,组合,继承的区别
继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力比如 a 继承 b,即 a is b。在这里继承了的下面三种类型的都是car聚合聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算...
2019-09-01 14:56:05
2642
原创 关于秒杀系统的实现
背景这个项目是从github上拉下来的一个项目,借鉴项目上的代码来实现的秒杀系统,主要有基于Mysql悲观锁,乐观锁实现,利用redis的watch监控,以及利用AtomicInteger的CAS机制特性等四种方法来实现高并发高负载的场景,也算是补充一下这块知识的空白。使用到的注解1 ) @ControllerAdvice全局捕获异常类,主要用于配合@ExceptionHandler,只...
2019-07-31 18:58:40
244
原创 在SpringBoot中使用Aop功能实现日志功能
实现背景主要是为了熟悉Aop的主要注解及功能,给项目的Controller层加上日志首先在pom文件里面加入aop依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</a...
2019-07-27 17:36:15
325
原创 Java集合系列---ConcurrentHashMap源码解析
ConcurrentHashMap是Java并发容器的一员,jdk1.8以后的基本的数据结构和HashMap相似,也是选用了数组+链表/红黑树的结构,在jdk1,.7以前则是采用了分段锁的技术。ConcurrentHashMap所有操作都是线程安全的,但获取操作不必锁定,并且不支持以某种防止所有访问的方式锁定整个表。1 继承关系public class ConcurrentHashMap<...
2019-07-23 20:44:01
174
原创 Java集合系列---LinkedHashMap源码解析
1 首先来看一下LinkedHashMap的继承关系public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>可以看出LinkedHashMap是继承了HashMap,它主要在链表的基础上增加了一个双向链表,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相同...
2019-07-23 10:41:00
144
原创 Java集合系列---TreeMap源码解析(巨好懂!!!)
TreeMap底层是基于红黑树实现,能实现根据key值对节点进行排序,排序可分为自然排序和定制排序。自然排序:TreeMap的所有key必须实现Comparable接口,定制排序:创建TreeMap的时候,传入一个Comparator对象,该对象负责对TreeMap的所有key进行排序,不需要key实现Comparable接口。1 基本属性和构造器//基本属性 //比较器 privat...
2019-07-21 14:33:18
213
原创 Java集合系列---红黑树(基于HashMap 超详细!!!)
1 平衡因子:左右子树 高度之差LL型 右旋LR型 -->LL 右旋RR -->左旋RL -->RR 左旋左旋:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。右旋:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子2 红黑树的性质:1)节点是黑色或者红色2)根节点是黑色的3)每个叶结点是黑色的...
2019-07-20 17:29:04
786
原创 Java集合系列---HashMap源码解析(超详细)
1 HashMap1)特性:运行null键和null值,,非线程安全,不保证有序,插入和读取顺序不保证一致,不保证有序,在扩容时,元素的顺序会被重新打乱2)基本属性://默认初始化大小static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16static final int MAXIMUM_CAPACITY =...
2019-07-17 19:21:18
167
原创 Java集合系列---List源码解析(ArrayList和LinkedList的区别)
List源码主要讲ArrayList,LinkedList,Vector三个类1 ArrayListArrayList是一个底层基于数组的集合,首先来看一下它的继承关系,public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, C...
2019-07-16 20:42:53
120
原创 Java集合系列---Collection源码解析及整体框架结构
集合的整体框架结构及依赖关系1.Collectionpublic interface Collection<E> extends Iterable<E> {}Collection是一个高度抽象出来的集合,包含了集合添加,删除等基本操作,主要分支为List,Set,Queue.// Collection的APIabstract boolean a...
2019-07-16 12:18:34
137
原创 AQS功能及源码详解
1.简介AQS(AbstractQueuedSynchronizer)本身是一个抽象类,主要的使用方法是继承它作为一个内部类,JDK中许多并发工具类的内部实现都依赖于AQS,如ReentrantLock, Semaphore, CountDownLatch等等。public abstract class AbstractQueuedSynchronizer extends AbstractOw...
2019-07-07 16:22:28
961
原创 JAVA六大线程池详解
1)Executor执行器详解线程池的最顶层接口,内部就一个execute方法yong书写线程的具体执行方式public class testExecutor implements Executor { public static void main(String[] args) { new testExecutor().execute(()-> System...
2019-06-27 22:27:14
280
原创 实现线程安全的单例模式的四种方式
使用使用静态内部类,不用加锁,也能实现懒加载public class Singleton { private Singleton(){ System.out.println("single"); } private static class Inner{ private static Singleton s=new Singleton()...
2019-06-20 16:51:15
223
原创 ThreadLocal工作原理和内存泄漏的预防
ThreadLocal是什么?ThreadLocal是一个用于提供线程局部变量的一个工具类,用于保证线程安全,在他里面包含了一个ThreadLocalMap,真正的引用确是在Thread中,一般用private static加以修饰,ThreadLocal的作用threadlocal用于存取线程独享数据,提高访问效率。ThreadLocal的底层源码当我们要将一个Object放入对应的线...
2019-06-20 14:02:14
298
原创 高并发锁Lock的详细使用
Lock的基本属性* 1)Lock是手动锁,加锁和释放必须得手动进行* 2)使用ReentrantLoock,尝试锁定,“tryLock”,这样无法锁定,或者在指定时间内无法锁定,* 线程可以决定是否等待* 3)使用ReenTrantLock还可以调用lockInterruptibly方法,可以对线程的interrupt做成响应* 在一个线程等待的过程中,可以被打断...
2019-06-19 21:42:07
1121
原创 countdownlatch的使用详解(好懂!!)
countdownlatch 是一个同步类工具,不涉及锁定,当count的值为零时当前线程继续运行,不涉及同步,只涉及线程通信的时候,使用它较为合适public class testLatch { public static void main(String[] args) { CountDownLatch begin = new CountDownLatch(1);...
2019-06-19 16:15:10
41370
4
原创 volatile关键字的用法
volatile是确保内存之间元素可见的关键字,效率比synchornized高,但是并不保证线程的原子性这里一共有main线程和new出来的两个线程,两个线程中各自有自己的缓存,如果没有volatile的话,每次都一般只会从自己的线程的缓冲区里面拿值,所有main改变了也没什么用,而加了volatile的值一旦发生改变,存有running值的线程会自动被提示该值已过期,就会再从主线程里面重...
2019-06-18 14:01:50
166
原创 Synchronized的使用详解与区别(干货满满!!!)
Synchronizedsynchronized是一个重量级锁,不过在经过Java8的优化之后性能也提升了好多首先我们要明白,锁是锁在哪里?
2019-06-17 11:01:49
306
原创 TTMS影院管理系统后台框架Springboot+mybatis
A 使用框架 Springboot+mybatis 前端主要是IOS端B 数据库 Mysql+RedisC 主要功能a 基本的都实现了,不过主要的影院和电影的数据是从猫眼上爬取的所以没有跟前端对过接口。主要说一下关于设计的思想和代码中遇到的问题b 给前端返回数据的时候为了便于前端解析一般会在json对象前面加上属性名{"data": {"movie":[ {"movieId":34...
2019-06-15 18:09:36
1387
2
原创 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程100次,如此循环50次
//先运行TraditionalThreadCommunition的主线程的内容,bShouldSub为false,故线程暂停,进入子线程,运行完后启动正在等待的主线程,运行完后进入50次的循环public class TraditionalThreadCommunition { public static void main(String[]args) { final Business...
2019-06-05 10:14:00
1466
原创 创建线程的两种方式
一在子类 Thread中创建线程并覆盖Thread thread=new Thread() { @Override public void run() { while(true) { try { Thread.sleep(500); }catch(InterruptedException e) { e.printStackTrace...
2019-06-01 16:57:51
290
原创 SSM运行Tomcat报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init met...
2019-03-14 19:06:48
253
原创 IDEA创建Mybatis逆向工程创建项目超详细代码
本博客基于IDEA的Maven项目1.创建逆向工程的xml文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http:/...
2019-03-13 21:49:11
510
原创 Java实现二叉树的前中后序遍历(Leetcode)
前序遍历:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {...
2018-12-17 15:48:30
575
原创 Leetcode---Java
注:记录的都是写不出来的或者超时的1---507. 完美数对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14注意:输入的数字 n 不会超过 100,000,000. ...
2018-10-13 18:42:02
193
原创 JDBC实现学生信息管理系统(仅增删改查)
思路:将程序简单的分为了一个主要的菜单类和其他的五个功能类,实现对数据库的信息的增删改查。缺点:写了大量重复代码,实现的功能却不多,将每个类的界面和功能都写到了一个方法里,类与类之间完全分开,没有一点关联性涉及知识点:1数据库的连接2.executeUpdate与excuteQuery的区别3.Statement与PreparedStatement的区别4.swing销毁当...
2018-09-22 17:14:09
5544
原创 Java,C实现约瑟夫环,一元多项式运算器
1 约瑟夫环问题描述:(初始密码为m)约瑟夫环问题是循环链表的经典应用:具体描述如下:n 个人围成一个圆圈,首先第 1 个人从 1 开始一个人一个人顺时针报数,报到第 m 个人,令其出列。然后再从下一 个人开始从 1 顺时针报数,报到第 m 个人,再令其出列,…,如此下去,求出列顺序。使用C实现#include<stdio.h>#include<stdlib.h&...
2018-09-20 16:29:27
245
原创 Java聊天室2.0版本
仿照了网上的代码和思路对之前的1.0版本进行了修改,按别人的界面和思路来写代码巨难受设计到的一些知识点1.swing界面:BorderLayout与FlowLayout的区别BorderLayout类:BorderLayout将版面分成EAST(东),SOUTH(南),WEST(西),NORTH(北),CENTER(中),五个区域块,并语序将组件放在指定的区域块内,因为将组件放...
2018-09-18 18:33:13
194
1
原创 Java编程
注:注释的代码是自己写的1.题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public boolean Find(int target, int [][] array) { /*int len=array.length-1; ...
2018-09-16 20:34:29
225
1
原创 Java小白版聊天室1.0版本
一个Java初学者写出来的界面简陋,功能及其简单的小白版聊天室,接下来会花一点时间去完善它1.构思:构建两个main方法,一个为服务端,一个为客户端,客户端向服务端发送消息,服务端创建集合,向集合中的所有客户端发送信息。2,涉及知识点:流,swing,网络通信,多线程,异常等的入门简单使用3,代码如下客户端:import java.awt.BorderLayout;impo...
2018-09-16 20:13:47
178
原创 JDBC--使用配置文件动态创建数据库
1.首先在该项目的src文件夹下右键File创建以properties结尾的文件,在其中填写文件内容(切记千万不要出现空格,分号):driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=...
2018-09-08 16:05:27
696
2
原创 JDBC数据库连接小白教程
1.进入Mysql官网,点击download->commuity->mysql connectors->connectors/J,将select operating system 换为platform,点击下载下载jarl驱动包,解压。.2,在新建的Project中右键新建Floder->创建名为lib的包->从解压mysql的jar包中拷贝其中的.jar文件-&...
2018-09-08 13:59:56
281
原创 数据结构---树,堆排序
1.树是指任意两个结点之间有且只有一条路径的无向图,只要没有回路的联通无向图就是树。2.没有父结点的的结点称为根结点,无子结点的称为叶结点。3.二叉树。a,满二叉树:树中每个内部结点都有左右结点,即所有的叶结点都具有相同的深度。b,完全二叉树:如果树内部的结点有右子结点的话就一定有左子结点,则称为完全二叉树,左子结点的编号为2k,右子结点的编号为2k+1.4.堆:一种特殊的完全...
2018-09-02 16:11:08
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人