![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后端相关
文章平均质量分 52
学习GO/Java
Ambrosedream
这个作者很懒,什么都没留下…
展开
-
Date数据的Int类型与Date类型转换
文章目录问题出现js端转换方法result获取年月日Date方法表问题出现在Springboot中,使用【com.alibaba.fastjson.JSON】的【JSON.toJSONString(Obj)】时,Obj对象中的【Date(java.util.Date)】对象的数据转换为整型数字(秒数)。js端转换方法首先将数字封装在Date对象中:var date = new Date(1617033600000);result获取年月日//年份var year = date.ge原创 2021-04-20 22:31:06 · 1910 阅读 · 0 评论 -
from origin ‘null‘ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is prese
跨域问题文章目录跨域问题Spring 项目Other项目Spring 项目@CrossOrigin在对应方法上加入这个注解即可。注解详解:未完待续Other项目增加如下代码可以解决。(HttpServletResponse)resp.setContentType("text/json; charset=utf-8");(HttpServletResponse)resp.setHeader("Access-Control-Allow-Origin", "*");注意括号内原创 2021-04-20 17:11:51 · 3714 阅读 · 2 评论 -
数组不重复子集求法
数组不重复子集文章目录数组不重复子集子集思路代码实现运行结果子集数组子集,即包含有限个数组元素的集合。eg. [1,2,3]的子集,[[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]思路我们之前采用【回溯算法】计算指定长度的数组子集组合。eg. 在数组[1,2,3,4,5][1,2,3,4,5][1,2,3,4,5]找长度为【3】的数组子集,我们首先确定前两个数,【1,2】然后增加【3】则满足数组长度为3,将这个结果增加到答案中,同时return, 递归弹栈并原创 2021-04-14 19:34:24 · 837 阅读 · 0 评论 -
设计模式之代理模式
代理模式代理模式是一种能有效为大型系统提升效率的设计模式。如图所示,【Printer】是一个打印机类,此类的主要工作是打印名字。但是print方法是一项耗时很长的工作【重活】,而【set】和【get】方法是相对轻松的工作而且这两种方法比较频繁,对象【Printer】的构造方法中需要执行重活,所以我们设计了代理类,当且仅当使用【print】方法时我们才会创建【Printer】对象,否则【get】/【set】这种轻松的工作由代理者【PrinterProxy】完成。设计模式源码温故知新 未央书斋原创 2021-04-07 16:08:32 · 95 阅读 · 0 评论 -
简单死锁实现
public class Main{ public void func(){ Object o1 = new Object(); Object o2 = new Object(); new Thread(()->{ while(true){ synchorized(o1){ synchorized(o2){ .原创 2021-04-01 15:35:01 · 105 阅读 · 0 评论 -
关于java GC大纲
GC是java的垃圾回收机制。GC的区域是堆和方法区,堆又分为新生代和老年代,新生代按8:1:1分为Eden/to servior/from servior。GC对象:1. 引用计数:无法解决循环引用问题2. 可达性分析什么时候触发GC:1. System.gc();2. Minor GC: Eden满3. Full GC: 调用System.gc/老年代空间不足/方法区空间不足常用算法:1. 标记清除算法2. 标记压缩算法3. 复制算法4. 分代收集算法(主流)新生代一般采用.原创 2021-03-31 23:40:28 · 72 阅读 · 0 评论 -
HashMap深入学习
Class HashMap<K,V>继承关系KaTeX parse error: No such environment: split at position 8: \begin{̲s̲p̲l̲i̲t̲}̲java.lang.Obje…原创 2021-03-29 15:59:38 · 89 阅读 · 0 评论 -
Java 锁(一)
乐观锁悲观锁自旋锁在短时间内,持有锁的线程能够释放资源,等待的线程不必做内核态与用户态之间的切换,只需要做一个自旋的操作等待持有锁的线程释放锁就可以立即获得锁。Synchronized同步锁独占式悲观锁可重入锁非空对象可以加锁作用范围作用于方法时:锁住对象实例作用于静态方法时,锁住Class实例,相当于类的全局锁,所有调用该方法的线程都会被锁。作用于一个对象实例时,锁住的是所有以该对象为锁的代码块。核心组件wait Set:Contention ListEntry原创 2021-03-27 14:45:20 · 236 阅读 · 0 评论 -
java并发总结
创建方式继承Thread实现Runnable、Callable线程池newCachedThreadPool:适用于短期异步,线程可重用。newFixedThreadPool: 固定线程数,以共享队列的方式运行。newScheduledPool: 可以延迟运行或者定期执行。newSingleThreadExecutor 只有一个线程,当这个线程死了会重启一个新的线程代替它。线程池参数四种线程池都是new这个对象public ThreadPoolExecutor(int c原创 2021-03-26 20:27:18 · 86 阅读 · 0 评论 -
Java 的hashCode
文字待填充~下面是String的hashCode然后看一下Integer的hashCode原创 2021-03-26 17:57:03 · 62 阅读 · 0 评论 -
后端面试复习(二)
进程和线程的区别进程是资源分配的基本单位;线程是系统调用的基本单位。进程有自己独立的地址空间,启动进程的消耗比较大;线程共享进程中的数据,使用相同的地址空间。线程通信更加方便,同一个进程下的线程共享全局变量,静态变量等数据,进程之间的通信需要通过复杂方式。(处理好同步和互斥是编写多线程程序的难点)。多进程程序更加健壮,多线程程序只要有一个线程死掉,整个进程就死了如何保证线程安全线程安全程度:不可变 :可靠性最高绝对线程安全:高标准安全相对线程安全:我们保证的安全线程兼容:一般不安全原创 2021-03-26 17:23:18 · 139 阅读 · 0 评论 -
算法题学习记录(一)
题目双指针、哈希、字符串import java.util.*;import java.util.*;public class Solution { /** * * @param S string字符串 * @param T string字符串 * @return string字符串 */ public String minWindow (String S, String T) { // write code原创 2021-03-23 11:59:21 · 134 阅读 · 0 评论 -
后端面经总结(一)
算法快排public class Main{ public int part(int[] nums,int l,int r){ int tmp = nums[l]; while(l<r){ while(l<r &&nums[r] >= tmp)r--; nums[l] = nums[r]; while(l<r && nums[l] <= tmp)l++; nums[r] = nums[l]; }原创 2021-03-22 13:57:03 · 323 阅读 · 1 评论 -
杂乱小问题
堆排序比快排性能好的原因堆排序在排序过程中,数据交换次数大于快排。死锁的四个条件持有并等待互斥不可抢占循环等待BCNF与三范式的区别三范式:任何非主属性不依赖于其他主属性。BCNF:满足三范式,排除了任何属性(主、非主属性)对候选码的部分依赖和传递依赖,主属性之间的传递依赖。java对象的生命周期创建阶段应用阶段不可视阶段不可到达阶段可收集阶段终结阶段释放阶段线程安全的单例模式public class Singleton{ private vo原创 2021-03-21 13:45:01 · 221 阅读 · 0 评论 -
BFS与DFS
BFS 与DFS回顾package graph;import java.util.LinkedList;import java.util.Queue;public class Main { public void bfs(int[][] graph, int st) { boolean[] visit = new boolean[graph.length]; Queue<Integer> que = new LinkedList<>原创 2021-03-20 23:13:03 · 89 阅读 · 0 评论 -
动态规划之照明路灯
题目一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为ai ,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要使这个d最小,请找到这个最小的d。来源:牛客网测试用例输入:每组数据第一行两个整数n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n个整数(均大于等于0小于等于l),为每盏灯的坐标,多个路灯可以在同一点。7 1515 5 3 7 9 14 0输出:输出答案,保留两位小原创 2021-03-17 12:45:37 · 2598 阅读 · 1 评论 -
关于Collections.sort 自定义比较器的说明
自定义比较器排序算法的应用极其广泛,java的集合类中也提供了排序接口,我们可以直接调用Sort()Sort()Sort()函数对数组进行排序。但是,Sort函数只能处理基本数据类型的排序,而我们在使用Java的时候,大多数情况都是对象数组。遇到对象数组,我们常常会使用自定义的比较器。Collections.sort(array,new Comparator<T>(){ @Override public int compare(T o1,To2){ return 0; }})原创 2021-03-16 22:03:44 · 471 阅读 · 0 评论 -
动态规划再学习之跳石板
题目小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6->8->12->18->24于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板思考原创 2021-03-15 10:56:36 · 397 阅读 · 1 评论 -
Java锁总结(一)
乐观锁乐观锁的思想认为读多写少,每次拿数据的时候会认为别人不会修改,所以不会上锁。在更新的时候会判断一下在此期间别人有没有更新这个数据,采取的是写时限读出当前的版本号之后加锁的操作。通过CAS操作实现,CAS是一种更新的原子操作,比较当前值和传入值是否一样,一样则更新,否则失败。悲观锁悲观锁认为写多于读,并且遇到并发的可能性比较高,每次读写数据都会上锁,这样别人想读写数据就会block。java的悲观锁就是Synchronized, AQS 框架下的锁则是先尝试CAS 乐观锁取获取锁,获取不到才原创 2021-03-09 21:40:51 · 283 阅读 · 0 评论 -
无规则字符串转化为整数
字符串转化为整数题目来源:牛客网实现函数 atoi 。函数的功能为将字符串转化为整数提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。思路题意中表明,字符串中可能包含非数字,比如 “+”、“-”、“a”、等其他符号。所以我们在转化数字的时候需要注意一下几点:开始部位的符号中间的符号(取前部分数字,后部分截断)判断是否会溢出空格处理开始部位的符号我们只需要设一个变量 sign 存储一下就可以了;中间部位的符号,只需要判断某一点字符是否在区间原创 2021-03-08 13:29:34 · 146 阅读 · 0 评论 -
Hello.java:6: error: incompatible types: inference variable T has incompatible bounds
int[] 转换ArrayList时遇到的Bug控制台报错如图:其实,报错中说的很明白了,是 int[] 数组类型这里出了问题,我们只需要将 int[] 改为 Integer[] ,再使用Arrays.asList(aim); 就不会出现问题了。import java.util.*;public class Hello{ public static void main(String[] args){ System.out.println("Hello原创 2021-03-08 10:23:36 · 3078 阅读 · 2 评论 -
归并排序再复习
排序链表leetcode 148题:本题目要求将链表进行排序。时间复杂度为O(nlogn)的排序算法有:归并排序、堆排序、快排。其中由于链表不能随机读取,归并排序最适合链表的排序。归并排序归并排序是一个分治的过程。找到链表的中点,以中点为界,将链表拆分为两个子链表。对两个链表分别归并排序。(递归过程,递归终止条件是不可再分,一个点)。合并链表。(merge函数将两个有序链表合并)最终合并为一个链表。class Solution{ public ListNode sortList(L原创 2021-02-25 20:30:01 · 98 阅读 · 0 评论 -
整数反转与回文数问题
整数反转与回文数问题将整数最高位变为最低位,对称反转。反转后的数字与原数字相等即为回文数。整数反转初始思路将数字转换为字符串数组,数组反转 。利用 StringBuilder 的reverse函数。这种方法效率并不高,但容易理解与思考优化题解考虑到每一位数字之间是10进制的关系,可以将数字看做一个栈,利用取余(%10)得到顶部数据。第一个数字是个位数字,第二个数字是个位数字乘以10加上十位数字,依次迭代可以得到反转数字。注意反转的时候可能会产生溢出的数字,即 当数字乘以10大于最大值,原创 2021-02-24 15:57:31 · 498 阅读 · 0 评论 -
反转单链表
反转链表反转一个单链表:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL迭代法使用两个指针从头结点开始逐个改变方向,一次循环。/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* List原创 2021-02-23 12:17:24 · 85 阅读 · 0 评论 -
Java字符串与整数转化
Java字符串与整数leetcode 题目 整数反转:给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。将整数转换为字符串int x = 100;String str = String.valueOf(x);//way twoString str1 = Integer.toString(x);//way threeString str3 = x+"";字符串反转// use stringbuilder String tmp = "1234";Stri原创 2021-02-22 21:50:14 · 280 阅读 · 0 评论 -
并查集学习
并查集并查集是一种森林或树数据结构,常用来处理不相交集合的合并、查询问题。并查集和深度优先搜索、广度优先搜索是图的环的三个查询方法。如上图所示,我们通常将并查集初始化为nnn个 单节点集合,然后根据题目中提供数据对并查集进行合并,最后可能构成一棵树(连通图)或者一个森林(非连通图)。采用并查集处理的问题一般都有如下特点:数据量极大,用其他数据结构往往空间复杂度难以接受。使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果。原创 2021-01-27 15:05:37 · 109 阅读 · 0 评论 -
二维数组排序Java
java的集合类提供一个排序方法,可以根据自定义的方法对集合进行排序。public static void main(String[] args) { int[][] res = {{1,2},{3,4},{2,1},{5,6}}; Arrays.sort(res, new Comparator<int[]>(){ @Override public int compare(int[] o1, int[] o2)原创 2021-01-26 13:31:27 · 237 阅读 · 1 评论 -
Semaphore详解——参考jdk文档
Semaphore学习所在包:java.util.current.Semphore. implemented interfaces: Serializablesemaphore是一个计数信号量,在概念上,信号量维持一组许可证。每个acquire()都会阻塞,当许可证可用时,才可以使用它。每个release()是添加许可证,通过释放阻塞获取方而没有使用实际的许可证对象。信号量常用于限制线程数:class Pool { private static final int MAX_AVAILABL原创 2021-01-24 13:08:48 · 159 阅读 · 0 评论 -
ArrayList效率提高
Java的ArrayList是十分常用的一个容器。今天在做Leetcode的时候发现使用add的效率问题。 如上图所示,java提供了两种add,分别是类似python 的append,和类似insert可以在任意位置插入的add.leetcode题目989,这是一道简单题:对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组...原创 2021-01-22 15:12:51 · 289 阅读 · 0 评论 -
WildFly数据源配置+测试
附成功截图一张,过程详情请移驾:Ambrose blog原创 2019-10-17 18:00:17 · 212 阅读 · 0 评论 -
JBoss eclipes之HelloWorld : EJB
Ambrose的博客园详细描述了基础HelloWorld的写法。原创 2019-10-15 21:29:15 · 126 阅读 · 0 评论