- 博客(123)
- 资源 (5)
- 收藏
- 关注
转载 websocket详细介绍
HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理,HTTP 协议无法实现服务器主动向客户端发起消息。
2022-07-06 10:22:57
347
原创 SpringBoot 起步依赖+SpringBoot配置
一、SpringBoot 起步依赖1)版本锁定如spring-boot-starter-parent中,指定了版本,子module中不需要再次指定版本<dependencyManagement></dependencyManagement>2)依赖传递如spring-boot-starter-web中二、SpringBoot配置(一)配置文件分类SpringBoot 是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认的话,就可以使用applica
2021-09-04 14:29:07
728
原创 java的Stream流、方法引用
传统集合的多步遍历代码几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元 素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如:import java.util.ArrayList;import java.util.List; public class Demo01ForEach { public static void main(String[] args) { List<St
2021-08-14 14:50:08
257
翻译 2021-02-22
抄一个工具类MD5的https://blog.youkuaiyun.com/qq_38270106/article/details/83110435import java.security.MessageDigest; public class MD5Utils { /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr){ MessageDigest md5
2021-02-22 18:54:44
191
原创 链表的节点移动问题2_java中的引用==C++中的指针?
前言关于指针的概念,还是在C和C++中有了解,但没想到,在java中也遇到,一时半会拐不过弯来。先看题目:删除链表中重复的节点,看示例的要求是重复的节点一个都不保留,(要是可以保留一个的话,那太简单了,单指针就能做)。再看一下解题源码:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public
2020-07-03 15:18:25
455
原创 剪绳子_贪心算法_剑指offer
思路一:归纳推理法:多分析几个例子,就会发现,平均分成3,取得的乘积是最大的,为什么的,首先我考虑的是先将 该数均分,然后平方,或者将它3次分会得到3次方,那5呢。。。当然,这思路并不能取得最优解,还是老老实实归纳一下,得出结论吧。 /** * 题目分析: * 先举几个例子,可以看出规律来。 * 2 : 1*1 * 3 : 1*2 * 4 : 2*2 * 5 : 2*3 * 6 : 3*3 * 7 : 2*2*3 或者4*3 * 8 : 2*3*..
2020-06-29 09:57:44
197
原创 偏向锁_升级_降级
偏向锁是为了在资源没有被其他线程竞争的情况下尽量减少锁带来的性能开销。在锁对象的对象头中有一个ThreadId字段,当第一个线程访问锁时,如果该锁没有被其他线程访问,即ThreadId字段为空,那么JVM让其持有偏向锁,并将ThreadId字段的值设置为该线程的ID。当下次获取锁时,会判断当前线程的ID是否与锁对象的ThreadID的值一致。如果一致,那么线程就不会再重复获取锁,从而提高了程序的运行效率。如果出现锁的竞争情况,那么偏向锁会被撤销并升级为轻量级锁。如果资源竞争非常激烈,会升
2020-06-29 09:20:07
440
原创 88. 合并两个有序数组_力扣_指针控制
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int count =0; for(int i=0;i<m+n;i++){ for(int j=0;j<n;j++){ if(j<count){ contin.
2020-06-28 16:15:50
161
原创 53. 最大子序和_力扣_看下一个数和当前数移动
class Solution { public int maxSubArray(int[] nums) { if(nums.length<1){ return 0; } int m = nums[0]; int sum = m; int max = sum; for(int i=1;i<nums.length;i++){ if((nums[i].
2020-06-23 13:42:01
113
原创 27. 移除元素_力扣_数组操作
class Solution { public int removeElement(int[] nums, int val) { int n = 0; for(int i=0;i<nums.length;i++){ if(nums[i] != val){ nums[n]=nums[i];//在长度增加之前,将该值赋值到该元素本该站的位置 .
2020-06-16 17:02:37
169
原创 21. 合并两个有序链表_力扣_链表节点的移动
这道题说的是简单,哎,我操作链表只会用递归,这次不会递归了,半天想不出来怎么移动指针。原来链表节点的移动就是让自己的next节点赋值给自己,就移动到了下一节点。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; }..
2020-06-16 14:24:35
130
原创 26. 删除排序数组中的重复项_力扣_算法
思路一:只要用一个指针指着有序不同的数,然后移动另一个指针去遍历与前面的对比,相同跳过,不同则赋值,就可以啦。class Solution { public int removeDuplicates(int[] nums) { int n=0; for(int i=0;i<nums.length;i++){ if(nums[n] == nums[i]){ continue; ..
2020-06-16 11:51:34
156
原创 OpenWrt之lua网络编程_luci下的luasocket安装
写在前openwrt的软路由上,提供了nixio,可以依赖它的socket进行编程,但是语法语义比较原始,不太容易使用,使用的样例可以参照:自定义openwrt的配置界面:luci进阶之路里面定义了如何使用luci的http方法,和自定义的resttemplate.lua工具文件(里面封装了如何使用nixio进行socket编程)本篇文章,将使用大家都在用的luasocket库,因为lua语言官方并不提供网络编程模块,luasocket库是外部库,使用c语言和lua语言编写而成的现成的库,可以用来
2020-06-15 11:09:54
3469
原创 ConcurrentHashMap_没想到我还是躲不过你
写在前HashMap、ConcurrentHashMap,我在还没学java的时候就有耳闻。记得大三那会,去西二旗那面试,被问到HashMap,我也不会啊,只学了基本的面向对象、继承、基本类型啊,一问三不知…当然,面试不到10分钟,被叫回去等通知了…时隔一年,哦不,是2年,我又回来了,这次谁再问我HashMap, 直接360度无死角的怼死他…在这里, 我查阅不下20篇博客, 看了好几个老师讲源码, 自己也看了源码, 也来聊聊我脑子里存的干货。不过,码字这玩意太费神了,我就拿一些大佬们的过来记一笔,省的
2020-06-12 21:33:30
254
原创 transient关键字_序列化理解
transient 关键字1)transient修饰的变量不能被序列化;2)transient只作用于实现 Serializable 接口;3)transient只能用来修饰普通成员变量字段;4)不管有没有 transient 修饰,静态变量都不能被序列化;...
2020-06-11 23:05:33
351
原创 24.两两交换链表中的节点_力扣_算法
思路一单向链表,而且不确定长度的交换,那必须使用递归了.递归的话,一个是递归的入口,另一个是递归的出口.先慢慢的往下交换几个, 试试入口在哪. 经调试,发现入口在链表长度为4以上的地方,这时会出现一个拐点情况: 2->1->4, 而且3->4 .出现了两条岔路,明显前面那条岔路是正确的, 只需要将后面那条岔路放进去递归调整就可以了.而且会发现3->4 像极了初始时1->2的场景.这就是递归的入口.出口就是没有子节点后,自动出来了,当然,要注意的是,当只有2个节点的...
2020-06-10 14:45:59
165
原创 20.有效的括号_力扣_算法
又是字符串处理,刚看这道题,不知道怎么下手,不知道是用正则还是什么,找到规则进行处理。后来想想,好像和栈的道理一样,只要成对的弹出去抵消了就不影响输出的结果了,于是用栈做出来了。
2020-06-10 11:13:38
150
原创 14.最长公共前缀_力扣_算法
思路一最长公共前缀,发现只需要用第一个字符串分别与其他字符串进行对比就能得到了,而每次将对比的结果存储在返回的字符串中,再继续和其他字符串前缀进行比较。直到获得最后的公共字符串为止。class Solution { public String longestCommonPrefix(String[] strs) { String s1 =""; if(strs.length>0){ s1 = strs[0];..
2020-06-10 10:28:56
149
原创 volatile关键字理解_Sync_AQS
良心推荐彻底理解volatile关键字https://blog.youkuaiyun.com/fumitzuki/article/details/81630048【Java线程】volatile的适用场景https://blog.youkuaiyun.com/vking_wang/article/details/9982709自己的理解volatile关键字是由JVM提供的最轻量级同步机制。被volatile修饰的变量保证对所有线程可见(可见性)。禁止指令重排序优化(有序性)。不满足原子性。对被volatile修饰的
2020-06-09 18:15:43
185
原创 整数反转_力扣_取模取整_算法
第一次解的时候是这样的,但是不行,溢出时会报转换异常。 String str = x+""; int len = str.length(); if(x>0){ StringBuilder sb = new StringBuilder(); for(int i=len-1;i>=0;i--){ sb.append(str.charAt(i)); .
2020-06-09 16:20:30
390
Socket编程-tcp&udp-测试用例.docx
2020-06-28
并发编程的魅力fager20200614.docx
2020-06-14
JVM内存模型fager20200614.docx
2020-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人