- 博客(73)
- 收藏
- 关注
原创 go gin框架使用cas单点登录
最近在用gin框架,想路由一个路径到cas单点登录发现有个小坑,小小的记录一下。import ( "github.com/gin-gonic/gin" "gopkg.in/cas.v2")func 某方法(){ server := httpserver.New() r := server.GinEngine r.Use(某中间件) router.RouterHttp(r)}f...
2019-11-28 10:52:47
4349
5
原创 PHP Xdebug的安装和PHPstorm关联远程虚拟机项目并开启调试(Ubuntu虚拟机的docker中)
1、下载Xdebughttps://xdebug.org/download.php注意版本正确2、解压放到指定目录在安装目录运行php目录下的phpize./phpize运行./configure --with-php-config= (php-config的所在路径)编译并安装makemake test(建议测试后安装)make install不出意外的情况下xdebug...
2019-08-20 19:57:01
607
原创 PHP魔术常量
PHP魔术常量魔术常量的值随着它们在代码中的位置的改变而改变__ LINE__文件中的当前行号。__ FILE__文件的完整路径和文件名,如果用在被包含文件中,则返回被包含的文件名。__ DIR__文件所在的目录,如果用在被包含文件中,则返回被包含文件的所在目录。__ FUNCTION__返回该函数被定义时的名字。__ CLASS__返回该类被定义时的名字。__ TRAIT...
2019-08-18 12:41:51
166
转载 Nginx相关学习
Nginx 工作原理Nginx是由内核和模块组成,当他接收到一个HTTP请求时,它会查找配置文件将此次请求映射到一个location代码块,该代码块中的各个指令会启动不同的模块去完成工作。通常一个location中的指令会涉及一个handler模块和filter模块(多个location也可以复用统一模块)。handler模块:处理请求,完成响应内容的生成。filter模块:对响应内容进行...
2019-07-30 21:57:45
116
原创 [剑指offer]左旋转字符串
思路:怎么做也行,这里按照题目进行真的循环移动,通过建立一个char数组实现:public class Solution { public String LeftRotateString(String str,int n) { char[] chars = str.toCharArray(); if(chars.length < n) retu...
2018-12-19 18:01:58
169
原创 [剑指offer]和为S的两个数字
思路:题目是递增排序,可以直接用两个指针一个指向头一个指向尾,遍历数组将两个指针对应的数的和作比较,和目标数相等就添加到list中,小于目标数则将头指针后移,大于目标数则将尾指针前移,至于如果有多对数字的和都等于目标数的情况,可以不用考虑,因为头尾指针这种方法遇到的第一组数的乘积就是最小的实现:import java.util.ArrayList;public class Solutio...
2018-12-18 18:32:12
103
原创 [剑指offer]和为S的连续正数序列
思路:双指针技术:相当于有一个窗口,窗口的左右两边就是两个指针,根据指针内值的和来确定窗口的位置和宽度。具体方法是直接创建两个数,先求这两个数之间的和,如果这两个数之间的和大于目标数,就让窗口左侧的数自加(缩短窗口),相反如果和小于目标数,就让窗口右侧的数自加(扩充窗口),直到相等则把窗口中的数都加入一个list,再把list加入result,完成后还要把窗口左侧向右移动一格,为了避免重复统...
2018-12-17 11:27:57
101
原创 [剑指offer]最小的K个数
思路:使用优先级队列(最大堆)保存这K个数,每次只和堆顶比,如果比顶堆小就删除堆顶,新数入堆,在堆大小等于K时就不用加入数了,直接将堆中的数都add进list中实现:import java.util.ArrayList;import java.util.Comparator;import java.util.PriorityQueue;public class Solution {...
2018-12-16 11:10:10
88
原创 [剑指offer]二叉搜索树与双向链表
思路:先用中序遍历树,并存入栈中。如果是第一个节点就记为root,保存两个节点一前一后,将前一个节点的右节点和后一个节点的左节点交换实现:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val)...
2018-12-14 22:38:20
125
原创 [剑指offer]数字在排序数组中出现的次数
思路:直接遍历,或者用二分法,这里用二分法,因为是现成的有序序列实现:public class Solution { public int GetNumberOfK(int [] array , int k) { int length = array.length; if(length == 0){ return 0; ...
2018-12-13 15:29:40
86
原创 [剑指offer]平衡二叉树
思路:遍历每个节点,借助一个获取树深度的递归函数,根据该节点的左右子树高度差判断是否平衡,然后递归地对左右子树进行判断。实现:public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return getDept(root) != -1; } private...
2018-12-12 17:43:55
86
原创 [剑指offer]数组中只出现一次的数字
思路:把该数组中元素放进hashmap里,放的时候判断hashmap中是否有重复元素,如果有就改一下value值,再遍历一次数组查找hashmap中有哪两个数的value没有改变就是了实现://num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果import java.util.HashMap;public class Solution ...
2018-12-11 17:10:56
101
原创 [剑指offer]两个链表的第一个公共结点
思路:把一个链表结点存到hashmap里,遍历另一个链表对hashmap对象使用containskey方法判断即可实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java...
2018-12-10 15:55:54
105
原创 [剑指offer]数组中的逆序对
思路:可以看成归并排序,两两比较之后存入数组并排序,存储该逆序对的数量实现:public class Solution { public int InversePairs(int [] array) { if(array == null || array.length <= 0) return 0; int pairsNum = mergeSo...
2018-12-09 22:16:33
78
原创 [剑指offer]第一个只出现一次的字符
思路:遍历str字符串,使用hashmap进行保存字符value值为1,如果找到重复的字符就将其value变为2,完成之后遍历str字符串判断在map中的value值,结果为1则符合题意返回实现:import java.util.HashMap;public class Solution { public int FirstNotRepeatingChar(String str)...
2018-12-08 18:53:55
91
原创 [剑指offer]丑数
思路:一个丑数只有因子2,3,5,那么一个丑数一定由另一个丑数乘以2,3,5得到。那么从1开始乘以2,3,5,就得到2,3,5,从2,3,5开始乘以2,3,5,分别得到4,6,10,6,9,10,10,15,25九个丑数。但是此序列是无序且有重复的。这里判断乘以2,3,5一次之后最小的数,将此最小的数加入list容器中,如果此最小的数等于乘以2,3,5之后的任一数,就将此数对应的2或3或5的变...
2018-12-07 22:47:11
72
原创 [剑指offer]连续子数组的最大和
思路:寻找连续子序列和最大的子序列。设置两个参数,一个保存当前序列值,另一个保存最大序列值,当前序列值小于0时,让序列值重新计数。为正数时继续累积,如果比最大序列值还大就记录当前值为最大序列值。实现:public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array...
2018-12-06 18:36:37
118
原创 [剑指offer]整数中1出现的次数
思路:把每个数转成String,判断有几个1就行实现:public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int sum = 0; for(int i = 1 ; i &lt;= n ; i++){ String str = St...
2018-12-05 22:04:31
107
原创 [剑指offer]把数组排成最小的数
思路:用两种组合两两比较两个数,例如32 23,排序为2332小于3223,就把这两个数原本的位置交换,最后将小的放在前面实现:import java.util.ArrayList;public class Solution { public String PrintMinNumber(int [] numbers) { String str = ""; ...
2018-12-04 23:52:26
161
原创 [剑指offer]字符串的排列
思路:使用递归逐个交换,注意交换完后开始新的交换时需要恢复交换之前的状态,即回溯A和A交换,A和B交换,A和C交换,之后再分别进行各自的不同交换,在交换记录之后回到上一次交换时的状态。实现:import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Solut...
2018-12-03 23:57:28
89
原创 [剑指offer]数组中出现一半的数字
思路:方法一:用hashmap保存数字以及出现的次数,遍历数组,找到该数字时就将value+1,在遍历前判断value值是否大于数组长度的一半方法二:先对数组排序,在数组中间的数即为所求的数实现:方法一:import java.util.HashMap;public class Solution { private HashMap<Integer,Integer&g...
2018-12-02 23:25:23
88
原创 [剑指offer]二叉树中和为某一值的路径
思路:1、在计算时注意前面的路径已经计算过,不用再次计算,可以创建一个全局变量来保存。2、计算时先将结点的值val保存在list中,再用给定的target减去val再存到target中。在左子树和右子树中重复这个步骤,在遍历完要注意要回退一下,因为递归到叶子节点如果还没有找到路径的话,就要回退到前一个节点(父节点)继续寻找。3、递归出口要注意以当前的list的数据重新创建一个新的list,...
2018-12-01 22:05:13
118
原创 [剑指offer]二叉搜索树的后序遍历序列
思路:后序序列最后一个元素是根节点,遍历序列找到第一个大于根节点的位置,将数组分成左右两个部分,左侧部分都小,右侧部分都大。如果右侧部分有比根节点小的元素,那就不是后序遍历。将上述步骤递归实现实现:public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(seque...
2018-11-30 00:31:34
78
原创 部分面试题总结-java后台
1、Nginx负载均衡轮询: 默认的,每一个请求按顺序逐一分配到不同的后端服务器,如果后端服务器挂了则能自动剔除ip_hash: 请求按照IP的hash结果分配,这样来自一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题weight: weight是设置权重,用于后端服务器性能不均的情况,访问比例约等于权重之比fair: 比上面两个更智能的算法,可以根据页...
2018-11-22 22:20:23
355
原创 部分面试题总结5
一、Hadoop生态圈HDFS:分布式文件存储系统对于一个大文件会将其分成很多block块,在每一行最后一个块处理完之后,再取第二行的第一个块,之后每个块舍弃掉第一块。架构模型:主:NameNode,保存文件元数据信息,接受客户端的读写服务从:DataNode,保存文件Block信息(真正信息)HDFS和NameNode交互元数据信息,和DataNode交互Block信息DataNo...
2018-11-19 22:08:56
143
原创 [剑指offer]二叉树的深度
思路:使用递归方法,先定义出口。在遍历到null时表示到底返回0,在root节点的左右子树都为空时是最低一层返回1,对左子树和右子树分别使用递归进行上述遍历,以左右子树节点代替原来的root节点,最后判断左子树还是右子树深度深,返回最深的。实现:/**public class TreeNode { int val = 0; TreeNode left = null; ...
2018-11-19 22:07:19
92
原创 [剑指offer]从上往下从左往右打印二叉树
思路:用一个ArrayList模拟queue,先插入root节点,在queue中删除root节点并返回root节点,判断root节点是否有左孩子和右孩子,对这个操作进行循环就把一个节点分解成左孩子和右孩子实现:import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left ...
2018-11-19 16:53:55
174
原创 [剑指offer]栈的压入、弹出序列
思路:借用一个辅助栈,模拟入栈的顺序push进辅助栈中,边入栈边判断出栈序列是否能对上,如果对上一个元素就将其pop,继续入栈。如果辅助栈中数据能被pop光则说明该序列可以试弹出序列。实现:举例:import java.util.ArrayList;import java.util.Stack;public class Solution {//入栈 1,2,3,4,5//出栈 ...
2018-11-19 16:39:12
85
原创 二叉树的各种遍历方式
class TreeNode{ TreeNode root; TreeNode left; TreeNode right; int val;}public class TreeNodeGo{ //先序遍历(递归) public void PrePrintTreeNode(TreeNode root){ if(root!=null){ System.out.Println(...
2018-11-19 15:45:36
148
原创 部分面试题总结4
一、Java GC介绍一下为了高效的垃圾回收,Java虚拟机把堆内存分为新生代(Young),老年代(Old),和永久代(Permenent)新生代新生代由Eden和Survivor(S0,S1)构成,大小通过-Xmn参数指定,Eden和Survivor内存大小为8:1Eden: 大多数情况下,对象在Eden中分配,当Eden没有足够空间时,会触发一次Minor GC。Survivor:...
2018-11-18 20:31:08
139
原创 部分面试题总结3
一、ConcurrentHashMap 介绍一下组成单位是Segment桶,一个桶中包含有Entry数组,类似于HashMap,一个ConcurrnetHashMap就是一个Segments数组,包含2^n个桶。1、在同一Segment桶中两个线程进行写操作,其中一个会阻塞等待另一个进程完成操作。2、在同一Segment桶中两个线程进行一写一读操作,是可以并发执行的。3、在不同Segmen...
2018-11-17 21:28:09
92
转载 Java虚拟机
Java堆Java堆是被所有线程共享的内存区域,主要用于存放对象实例。为对象分配内存就是把一块确定大小的内存从堆内存中划分出来,通常有两种方法实现:1、指针碰撞法:已分配的内存和空闲内存分别在一个指针的两侧,需要分配内存时,把指针往空闲的一端移动与对象大小相等的距离。2、空闲列表法:上个方法的环境几乎不存在,JVM一般都是维护一个列表,列表中记录可用的内存块信息,当分配操作发生时,从列表上...
2018-11-17 21:11:34
501
原创 [剑指offer]包含min函数的栈
思路:使用两个栈,一个主栈存放数据,另一个辅助栈存放最小值,每次push数据时先与辅助栈栈顶元素进行比较,如果小于或等于辅助栈栈顶元素则在push进主栈同时push进辅助栈。要注意在pop删除主栈元素时要同时判断辅助栈栈顶元素是否和主栈栈顶元素相等,相等则同时pop删除,否则原有的最小值不会被删除。实现:import java.util.Stack;public class Solut...
2018-11-17 19:44:59
95
原创 [剑指offer]顺时针打印矩阵
思路:先规定好四个角的位置,再按照题目的顺序遍历添加元素,每遍历完一圈,四个角也同时做相应的操作实现缩小一圈,在四个角上下左右都到一个点时遍历完毕。实现:import java.util.ArrayList;public class Solution { public ArrayList&lt;Integer&gt; printMatrix(int [][] matrix) {...
2018-11-17 18:55:14
95
1
原创 B树和B+树
B树类似于这种一个m阶的B树有以下特征:根节点至少有两个孩子。每个中间节点都包含k-1个元素和k个孩子,其中m/2<=k<=m每一个叶子节点都包含k-1个元素,其中m/2<=k<=m所有的叶子节点都位于同一层每个节点元素从小到大排列,节点当中的元素正好是孩子包含的元素值域分划(比如2 6 节点的孩子3 5节点正好在2和6之间,2 6又在1 8 之间)特...
2018-11-17 16:48:50
122
原创 [剑指offer]树的子结构
思路:按着根节点向下逐个比较,如果A树走到头还没有和B相等的子结构就返回false,没有就继续进行A的左子树遍历,A的左子树要进行和之前差不多的操作,不过要和B的左子树进行比较,右子树同理,只要有一个不相同就返回之前的左子树节点向下继续遍历查找。如果B子树能查找直到null,说明B是A的子结构。实现:/**public class TreeNode { int val = 0;...
2018-11-17 10:35:40
64
原创 部分面试题总结2
https://www.nowcoder.com/discuss/108888?type=2&amp;amp;amp;order=0&amp;amp;amp;pos=45&amp;amp;amp;page=1一、Spring IOC和AOP MVC流程IOC:控制反转控制:创建对象的控制权反转:交给spring去创建管理DI:依赖注入将创建好的对象通过注入维护关系借助于第三方实现具有依赖关系的对象之间的解耦,比如四个齿轮是四个类互...
2018-11-16 21:54:45
116
原创 部分面试题总结1
https://www.nowcoder.com/discuss/132259?type=2&order=0&pos=16&page=1一、线程池的底层怎么实现的?线程池作用:1、降低资源消耗2、提高相应速度3、提高稳定性实现类ThreadPoolExecutor类有几个重要的参数:corePoolSize:核心线程池大小。默认情况下线程池中没有线程,当需要...
2018-11-16 21:51:58
114
原创 [剑指offer]链表中倒数第k个节点
思路:用两个指针遍历,先让快指针出发,当快指针走过k+1个元素时,慢指针开始移动,直到快指针指向null,慢指针指向的节点即为倒数第k个节点。实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}...
2018-11-16 21:12:32
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人