自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fager漫长路

学无止境,脑袋装不下的时候,该找个常用的地方放起来

  • 博客(123)
  • 资源 (5)
  • 收藏
  • 关注

原创 JVM内存模型_图文并茂

有了这些图,JVM就是活的!

2020-06-14 21:50:53 330

原创 并发编程的魅力_3天打基础_fager

内存模型+volatile+synchronized+AQS++...

2020-06-14 11:43:41 445

转载 websocket详细介绍

HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理,HTTP 协议无法实现服务器主动向客户端发起消息。

2022-07-06 10:22:57 271

原创 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 639

原创 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 211

翻译 2021-02-22

抄一个工具类MD5的https://blog.csdn.net/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 128

原创 软件开发模型_扫盲 (Software Development Model)

扫盲扫盲

2020-08-22 14:31:30 319 1

原创 新环境-新体验-新生活_发某人南下随笔

北漂5年(中传四年+run一年),而后南下

2020-07-17 20:42:32 172

原创 JVM调优_jdk自带的小工具

jvm调优

2020-07-07 23:25:57 324

原创 做一个有思想的程序员_fager

坎坷人生路,若不选择沉沦,那我就要逆流而上

2020-07-04 10:48:49 258

原创 链表的节点移动问题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 394

原创 昨天的面试,我感觉我挂了

拿出小本本,先记上一笔。

2020-07-03 09:35:43 240

原创 两个超大正整数相乘_求积_字符串操作

字符串玩的溜,真的出神入化

2020-07-02 11:10:27 979

原创 求double类型的立方根_二分法逼近

二分法逼近

2020-07-01 15:14:01 467

原创 求最小公倍数_华为笔试

直接 轮询的乘,到最大 就是两数相乘;记得获取到第一个就return退出 程序。

2020-07-01 14:19:48 186

原创 字符串切割拼接_华为校招

各种字符串处理。。。

2020-06-30 17:40:48 150

原创 面试官问我怎么实现多个线程顺序执行,我一连说5种方法!

join是最基本 的,JUC下的能多一个是一个

2020-06-30 10:43:12 2651

原创 求32位整数的二进制个数_原码反码补码真的烦

我10秒钟做出了正数的1的个数,却秀死在负数。。。

2020-06-29 18:05:42 1738 1

原创 剪绳子_贪心算法_剑指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 136

原创 偏向锁_升级_降级

偏向锁是为了在资源没有被其他线程竞争的情况下尽量减少锁带来的性能开销。在锁对象的对象头中有一个ThreadId字段,当第一个线程访问锁时,如果该锁没有被其他线程访问,即ThreadId字段为空,那么JVM让其持有偏向锁,并将ThreadId字段的值设置为该线程的ID。当下次获取锁时,会判断当前线程的ID是否与锁对象的ThreadID的值一致。如果一致,那么线程就不会再重复获取锁,从而提高了程序的运行效率。如果出现锁的竞争情况,那么偏向锁会被撤销并升级为轻量级锁。如果资源竞争非常激烈,会升

2020-06-29 09:20:07 372

原创 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 111

原创 70. 爬楼梯_力扣_斐波那契数列

数组/递归实现

2020-06-28 11:47:01 146

原创 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 87

原创 Socket类型_nixio创建一个socket对象

nixio实现socket编程,支持tcp、udp、http等协议

2020-06-19 14:36:43 686

原创 luasocket官网API入口

luasocket官网API

2020-06-17 17:21:50 1146

原创 38.外观数列_递归_构造器理解

递归,数学归纳法的演进,再用编程语言实现。

2020-06-17 10:52:49 182

原创 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 113

原创 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 102

原创 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 131

原创 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 3063

原创 ConcurrentHashMap_没想到我还是躲不过你

写在前HashMap、ConcurrentHashMap,我在还没学java的时候就有耳闻。记得大三那会,去西二旗那面试,被问到HashMap,我也不会啊,只学了基本的面向对象、继承、基本类型啊,一问三不知…当然,面试不到10分钟,被叫回去等通知了…时隔一年,哦不,是2年,我又回来了,这次谁再问我HashMap, 直接360度无死角的怼死他…在这里, 我查阅不下20篇博客, 看了好几个老师讲源码, 自己也看了源码, 也来聊聊我脑子里存的干货。不过,码字这玩意太费神了,我就拿一些大佬们的过来记一笔,省的

2020-06-12 21:33:30 192

原创 transient关键字_序列化理解

transient 关键字1)transient修饰的变量不能被序列化;2)transient只作用于实现 Serializable 接口;3)transient只能用来修饰普通成员变量字段;4)不管有没有 transient 修饰,静态变量都不能被序列化;...

2020-06-11 23:05:33 308

原创 24.两两交换链表中的节点_力扣_算法

思路一单向链表,而且不确定长度的交换,那必须使用递归了.递归的话,一个是递归的入口,另一个是递归的出口.先慢慢的往下交换几个, 试试入口在哪. 经调试,发现入口在链表长度为4以上的地方,这时会出现一个拐点情况: 2->1->4, 而且3->4 .出现了两条岔路,明显前面那条岔路是正确的, 只需要将后面那条岔路放进去递归调整就可以了.而且会发现3->4 像极了初始时1->2的场景.这就是递归的入口.出口就是没有子节点后,自动出来了,当然,要注意的是,当只有2个节点的...

2020-06-10 14:45:59 119

原创 20.有效的括号_力扣_算法

又是字符串处理,刚看这道题,不知道怎么下手,不知道是用正则还是什么,找到规则进行处理。后来想想,好像和栈的道理一样,只要成对的弹出去抵消了就不影响输出的结果了,于是用栈做出来了。

2020-06-10 11:13:38 117

原创 14.最长公共前缀_力扣_算法

思路一最长公共前缀,发现只需要用第一个字符串分别与其他字符串进行对比就能得到了,而每次将对比的结果存储在返回的字符串中,再继续和其他字符串前缀进行比较。直到获得最后的公共字符串为止。class Solution { public String longestCommonPrefix(String[] strs) { String s1 =""; if(strs.length>0){ s1 = strs[0];..

2020-06-10 10:28:56 111

原创 罗马数字转整数_力扣_算法

简单的了解了罗马数字的特性

2020-06-10 09:56:50 172

原创 volatile关键字理解_Sync_AQS

良心推荐彻底理解volatile关键字https://blog.csdn.net/fumitzuki/article/details/81630048【Java线程】volatile的适用场景https://blog.csdn.net/vking_wang/article/details/9982709自己的理解volatile关键字是由JVM提供的最轻量级同步机制。被volatile修饰的变量保证对所有线程可见(可见性)。禁止指令重排序优化(有序性)。不满足原子性。对被volatile修饰的

2020-06-09 18:15:43 146

原创 整数反转_力扣_取模取整_算法

第一次解的时候是这样的,但是不行,溢出时会报转换异常。 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 319

原创 无重复字符的最长子串_力扣_算法_滑窗格

试用双指针+map,利用滑动窗格的思想进行记录取值.

2020-06-09 15:23:02 85

原创 两数相加_力扣_算法

使用了粗暴的方法,进行编写,还要改进

2020-06-09 09:41:21 518

Socket编程-tcp&udp-测试用例.docx

在OpenWrt的软路由上进行luci的自定义web界面开发,可实现自定义配置,以及其可视化修改,提供简单、易操作的配置修改功能。当然,这些功能的实现一方面基于OpenWrt自身软路由的特性,且可自行进行编译选择添加组件,如luci组件、uhttpd服务、uci等,这些是OpenWrt软路由烧写好之后可安装好的软件。为了实现配置修改作用到具体的设备,还涉及到通讯方面的开发,通过局域网连接,实现tcp、udp通讯。

2020-06-28

并发编程的魅力fager20200614.docx

Happens-before原则(先行发生原则) a.程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作;(保证单线程,但不保证多线程); b.锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作,同一个锁,必须先释放,才能再lock上锁; c.Volatile变量规则:对一个变量的写操作先行发生于后面对这个变量的读操作; d.传递规则:如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C; e.线程启动规则:Thread对象的start()方法先行发生于此线程的每一个动作; f.线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生; g.线程终结规则:线程中所有的操作都先行发生于线程的终止检测,我们可以通过Thread.join()方法结束、Thread.isAlive()的返回值手段检测到线程已经终止执行; h.对象终结规则:一个对象的初始化完成先行发生于他的finalize()方法的开始。 小结:如果两个操作的执行次序不能从happens-before原则推导出来,那么久无法保证他们的执行的有序性,虚拟机就可以随意的对他们进行重排序。

2020-06-14

JVM内存模型fager20200614.docx

在 HotSpot 虚拟机中,分为 3 块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)对象头(Header):包含两部分,第一部分用于存储对象自身的运行时数据,如哈希码、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等,32 位虚拟机占 32 bit,64 位虚拟机占 64 bit。官方称为 ‘Mark Word’。第二部分是类型指针,即对象指向它的类的元数据指针,虚拟机通过这个指针确定这个对象是哪个类的实例。另外,如果是 Java 数组,对象头中还必须有一块用于记录数组长度的数据,因为普通对象可以通过 Java 对象元数据确定大小,而数组对象不可以。

2020-06-14

Nginx安装使用说明.pdf

文档描述了Nginx的概念;快速使用:环境准备和下载安装,启动与访问;静态网站部署、虚拟主机配置等功能,以及原理探究中:反向代理、负载均衡的学习。很适合入门级的学习与思考,其中详细的安装指导具有很大参考价值。

2020-05-31

Luci-Api手册 - 英文.pdf

luci官网一直无法访问,找不到相应的官方API文档,现提供自己亲自整理的一篇API文档,供大家参考使用。

2020-05-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除