自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 JPA学习笔记

一、什么是JPA?JPA是Hibernate出的一款数据库操作框架,对比Mybatis有着轻巧,简单,易用的特性,但因MySQL复杂查询方式十分复杂而饱受诟病,这也成为许多人认为JPA不好用的原因。二、JPA配置方法spring: datasource: url: jdbc:mysql://${数据库URL}/${数据库名}?characterEncoding=utf-8&serverTimezone=GMT%2B8 username: …… password: …

2021-10-07 18:05:06 192

原创 单例模式

饿汉式public class HungrySingleton { private static final HungrySingleton hungrySingleton = new HungrySingleton(); public HungrySingleton() { } public static HungrySingleton getInstance() { return hungrySingleton; } public

2020-12-25 11:12:57 294 1

原创 spring bean中的scope

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.spring

2020-09-17 17:24:44 139

原创 RocketMQ学习笔记(1)-RocketMQ火速搭建一个小型集群教程

http://rocketmq.apache.org/docs/quick-start/在这个网站上我们可以了解从RocketMQ的入门,下载,安装,编译步骤。默认已经安装并且编译好了之后,我们可以看一下如下文件夹step1 cd rocketmqstep2 cd distribution/step3 cd targetstep4 cd apache-rocketmqstep5 cd bin执行这一步我们就可以看到许多脚本文件了,但是标题是火速搭建一个小型集群,这时候Rocket.

2020-09-13 17:11:17 279

原创 JVM学习笔记-画一张图阐明MinorGC实现过程

-XX:NewSize=5242880-XX:MaxNewSize=5242880-XX:InitialHeapSize=10485760-XX:MaxHeapSize=10485760-XX:SurvivorRatio=8-XX:PretenureSizeThreshold=10485760-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xloggc:gc.log新建的对

2020-08-31 14:24:37 181

原创 JVM学习笔记-垃圾回收器

这篇文章,我会介绍两个回收器 ParNew和CMSParNew回收器ParNew这个回收期主要用于MinorGC回收它回收的速度很快,是一个多线程回收器,比Serial回收器(单线程)效率要快得多。使用 -XX:+UseParNewGC 可以开启ParNew垃圾处理器使用 -XX:ParallelGCThreads 可以调节垃圾回收器的线程数量CMS回收器CMS主要用于老年代回收器,它主要的回收算法是标记清理算法。标记清理算法是将与GC关联的存活变量打上标记,其余的被回收。它的缺点

2020-08-25 15:58:31 759 1

原创 JVM学习笔记-JVM内存分配问题

分代模型分为 老年代 年轻代 永久代回收过程当开始执行一个方法的时候,创建一个栈帧将其压入栈中,如图所示,当执行完成之后弹出栈帧,此时该栈帧与堆内存无关,所以回收线程可对堆内存实例化的资源进行回收改造代码此时我们将其改造一下老年代与年轻代将这个变量变成全局变量,此时,就会引出两个概念[年轻代]和[老年代]年轻代就是创建很快就被回收的对象老年代就是很久不被回收的对象比如说案例一中不断新建不断回收-,就是一直在年轻代。但是案例二创建了静态全局变量,这个对象一开始处于年轻代,不久之

2020-08-20 16:45:59 294

原创 Java源码阅读-String,Long

String值的不变性/** The value is used for character storage. */private final char value[];String s="zxk";s="rust";这个s变量的值发生了改变吗?答案是并没有,我们可以翻出源码来看一下 /** The value is used for character storage. */ private final char value[];这个value数组的定义是一个常量

2020-08-15 22:52:06 97

原创 LeetCode 226. 翻转二叉树 及 二叉树方面一些题目的练习

翻转一棵二叉树。示例:输入:4/ 2 7/ \ / 1 3 6 9输出:4/ 7 2/ \ / 9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。这道题是经典的二叉树反转问题,Homebrew的作者当时也没做出来,被谷歌拒之门外。其实,这道题用递归去做相当简单看图.

2020-08-11 21:23:50 115

原创 LeetCode 279. 完全平方数

完全平方数这题我就用BFS去解了,因为我感觉最容易理解的就是BFS(?)至少现在这么认为。。。广度优先遍历就是利用队列,如图所示,12入队,12出队,现在我要消耗完13,那么只有i<n^2的范围内,也就是说剩下的数字就是11,8,3,接着,这三个数字入队,以此类推衍生除了10,7,2,7,4,2这些,再将其入队,又可得出子子子子节点,何时结束呢,一直找到那个消耗完的时候就结束了未被优化的算法public int numSquares(int n) { Queue<In

2020-08-10 21:34:31 102

原创 LeetCode 20.有效的括号[对栈和队列的应用]

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true栈解法对于这道题,我一开始用.

2020-08-09 18:58:32 111

原创 LeetCode 206 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?从微观角度来看,先解决第一轮链表反转,第一轮当然是1->2节点的反转,先初始化一个pre节点,这个节点为null,接着先把cur的下个节点保存起来,因为我们后期要维护这个节点,就设置成tmp吧。我们迎来了最重要的一个环节,就是红色箭头那个操作,cur的.

2020-08-08 21:14:34 112

原创 leetcode 219 存在重复元素 II

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: falseO(N^2)解法 暴力破解首先最容易想到的解法就是用O(n^2)复.

2020-08-07 14:27:07 232

原创 Java并发编程-线程究竟有多少种实现方式?

我们熟悉的继承extends和实现runnable接口实现线程,但是这就算两种吗?首先,先写出来这最基础的两种。Runnable接口实现线程方法public class ThreadBaseDemo1 implements Runnable { public static void main(String[] args) { new Thread(new ThreadBaseDemo1()).start(); } @Override public voi

2020-07-30 14:13:24 98

原创 Java并发编程-死锁

死锁就像两个人鞠躬,A说B起来我就起来,B说A起来我就起来,结果就陷入了僵局,谁也起不来。经典的哲学家问题,五个人有六只筷子,一起拿身边的一只筷子。这样的话谁也拿不到两只筷子吃饭,但是假如有顺序的进行,那就可以破坏掉死锁。package com.company.DeadLock;public class DL implements Runnable { static Object o1 = new Object(); static Object o2 = new Object()

2020-07-29 16:03:56 125

原创 Java并发编程-CAS

CAS英文全名(CompareAndSwap)比较与交换,它是具有原子性的,而且也是乐观锁的实现原理实现它的主要是有个比较值。在传入新的参数的时候,会将旧参数与系统内的旧参数进行对比后交换。public void cas(int expectedOldValue,int newVal){ if(expectedOldValue == systemOldValue){ systemOldValue=newVal; }}大致就是这么个意思,所以说,通过旧值控制更新,防止多线程错误的进行更新赋

2020-07-29 10:51:18 98

原创 Java并发编程-Java内存模型

首先,先理清Java内存模型和Java内存结构的区别Java内存结构是指JVM的内存结构,Java的运行是由Java虚拟机支撑的(Java Virtual Machine)Java内存结构堆区堆是存储类实例和数组的,通常是内存中最大的那一块,实例就是实例出来的对象,那么数组在堆区也很好理解,在Java中,数组也可以当作一个实例化的对象。虚拟机栈虚拟机栈保存局部变量和部分处理结果,并在方法调用和返回中起作用。方法区存储每个类的结构,例如运行时的常量池,字段和方法数据,构造

2020-07-27 18:04:48 123

原创 Java并发编程-线程间的协作

想象个场景,比如有10w的并发量,突如其来的流量处理肯定让线程处理不过来最终导致崩溃。在这种情况下,就有信号量这种东西了。SemaphoreSemaphore的构造函数是规定动用多少个线程进行处理先看一段不对线程用信号量处理的代码public class HttpRequestDemo implements Runnable { public static void main(String[] args) { ExecutorService executorService

2020-07-26 17:17:05 81

原创 Java并发编程-Future的使用

Future顾名思义,未来public class FutureDemo3 implements Callable<Integer> { public static void main(String[] args) { ExecutorService executorService= Executors.newFixedThreadPool(16); Future<Integer>future=executorService.submit(

2020-07-25 17:46:02 637

原创 Java并发编程-关于ThreadLocal那些事

第一版首先看一个SimpleDateFormat的例子 public static void main(String[] args) { new Thread(()->{ String date=new ThreadLocalDemo2().formatDate(1); System.out.println(date); }).start(); new Thread(()->{ String date=new Th

2020-07-24 18:28:05 55

原创 Java并发编程-AtomicInteger与synchronized实现Count的区别

首先,线程不安全的写法如下public class NotThreadCount { static int val = 0; public static void main(String[] args) throws InterruptedException { NotSafeThreadCount notSafeThreadCount=new NotSafeThreadCount(); Thread thread1=new Thread(notSafeTh

2020-07-23 11:17:30 218

原创 Java并发编程-LongAdder VS AtomicInteger

在计数的时候,有两个类LongAddr和AtomicInteger属于线程安全的并发类。但是各有千秋先看如下案例public class LongAddrMain { public static void main(String[] args) throws InterruptedException { LongAdder longAdder=new LongAdder(); ExecutorService executors=Executors.newFixe

2020-07-22 11:32:12 300

原创 zookeeper集群的搭建

zookeeper就是动物管理员,很形象,这里面有大数据的应用比如说hadoop(象,蜜蜂等等等等).首先下载zookeeper使用的环境是centoswget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz下载国内源如下,可按照自己选择进行替换https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.

2020-07-12 16:30:00 174

原创 【酷就完事儿了】Python脚本实现监听服务器的思路

开前准备Schedule使用方法。基本的Linux操作Python3环境Step1首先我得先假设你会了如何每十五分钟去运行一次检查这件事情。(后期我会补上如何去做定时任务,相信我!)代码量比较少,选择在Linux环境下直接写脚本。import os#使用os的popen执行bash命令content=os.popen("lsof -i:8080").read()输出一下content看看,就是命令行执行输出的内容,看关键词webcache,但是输出的已经是文本文件了,可以直接使用f

2020-05-27 22:29:36 330

原创 Java中反射的基本使用

开宗明义反射的优点和好处:反射可以很灵活的操作一个类,甚至这种方式在某种方面我愿称之为优雅。Step 1.准备一个类,取名为ConstructorCollectorpublic class ConstructorCollector { ConstructorCollector() { System.out.println("====初始化 No Args========"); } ConstructorCollector(int intArgs, Str

2020-05-27 17:18:53 176

原创 操作系统入门-进程与内存管理

操作系统的演进无操作系统->批处理系统->分时系统早期的操作系统一次只能处理一个任务多道程序设计使得批处理系统一次就可以处理多个任务那么什么是多道程序设计呢?多道程序设计是指在计算机内存中存放多个程序多道程序在计算机的管理下相互穿插运行简而言之,多道程序设计在计算机管理下处于关键地位,是计算机系统中的重要功能。操作系统的五大功能?文件管理,进程管理,设备管理,存储管理...

2020-04-15 20:20:54 577

原创 springboot组件懒加载的坑及加载规则

懒加载就是不在初始化的时候实例出来这个服务@RestControllerpublic class ApiController { @Autowired Skill kobSkillImpl; @RequestMapping("/getRust") public String test(){ kobSkillImpl.print(); ...

2020-04-14 18:22:34 3865 1

原创 简单工厂模式

我们在写业务的时候,比如说三国杀或者一些卡牌游戏,设定了雷杀,火杀,这些牌都有一个特征就是指定一个人掉血,掉多少血,各不相同,那么我们就设定雷杀一血,火杀二血,水杀三血。在设计的时候,我们很蠢的设计就是这样。转化为代码,就是这样 public static void main(String[] args) {// 模拟输入 String cardNa...

2020-04-13 19:03:58 116

原创 集合

集合是一个相对来讲比较好懂的数据结构,在高中课本中集合就是不重复的一组数据,那么我们如何用代码描述集合呢,我们前面讨论过二叉树这个概念,这个概念是没有重复元素的,也就是说,我们完全可以用二叉树这个数据结构为基础实现一个集合,具体代码如下package BST;public class BST<E extends Comparable<E>> { class N...

2020-04-12 20:53:30 88

原创 非递归实现二叉树的遍历

今天再讨论一下二叉树,时隔将近一个月,二叉树操作基本上又忘光了。。。- -!那么实现递归的二叉树,就是不断的去寻找子树中的元素,前序遍历就是中间节点->左子树->右子树那么用递归的方法去实现这个前面的文章已经讲过了,在此不过多赘述~非递归怎么实现呢?很多读者都知道栈这个数据结构吧,它是一种LIFO(Last In First Out)后进先出的数据结构,所以我们可以这样来想...

2020-04-11 20:06:50 209

原创 JS二维数组中数据的提取-用矩阵的思维解决复杂的业务问题

首先先看一下业务场景还是以sku为例,我们分析下这个sku,这些数据,假如说用json处理我们应该是这样的[{"title":"xxxx","spec":[{"id":"1","type":"网络类型","value":"全网通"},{"id":"2","type":"机身颜色","value":"鲸月蓝"}.{"id":"3","type":"套餐类型","...

2020-03-20 19:21:04 3061

原创 业务思维-关于变量定义的重要性

我们举个例子,就拿spu(单品)来讲,底下有若干个sku。有的读者就会问了,spu到底是啥?sku到底又是啥?在这里我们可以讲得清楚比如我们逛淘宝,买个mbp在这里我们可以看到各种选择,比如深空灰,银色之类的,但是它们都有一个共性,它们都是16英寸MBP,i9,16GB,1TB,这个规格,这个共性,我们就称之为spu,唯一需要组合的就是套餐+颜色分类+服务每个选中我们都可以拼出不同的组...

2020-03-19 16:52:13 179

原创 业务思维的转变-关于对折扣价和价格显示问题的思考

业务场景:我们打开京东或者淘宝,有的商品会有折扣价,有的没有,其实也不是所有商品都是打折的,也不是所有商品都是不打折的。那么我们该如何动态的渲染这些打折或者不打折的商品价格呢?第一次写的时候,我首先想到的是用wx:if去做//打折价格<view wx:if="{{discountPrice}}" value="{{discountPrice}}"></view&gt...

2020-03-16 21:07:33 200

原创 es2015写法方面一些有意思操作

合并数组假如我有一个新数组newArr,一个老数组oldArr我之前都是这样写(因为我对js这个语法不是很了解,我一用到箭头函数,嚯高大上newArr.foreach(el=>{oldArr.push(el)})但是呢发现居然可以这样写oldArr.concat(newArr)写法是简洁了不少数组里对象里面的值比如我们请求到一个数组,[{"id":1,"name...

2020-03-15 14:40:20 168

原创 微信小程序开发之布局奇盈绝技

1.微信小程序对flex流式布局支持的相当不错,甚至有些地方可以使用flex进行更改,如在设置image这个标签的时候,内设有个10rpx的底部空间,假如这个空间背景为黑色,那么10rpx这个底部空间就会变成黑色,假如是白色,那就是白色,所以不处理这个底部空间,有可能会影响整体美观,做法很简单display:flex在图片样式上面加上这个流式显示,这个底部空间就消失了,是不是很神奇?2.既...

2020-03-07 10:36:11 292

原创 Netty笔记(2)-实现Websocket之间通信

当我们搭建起来服务器之后,我们就开始尝试着去构建一个简单的聊天室的功能WsServer的实现服务器实现与第一节的实现基本相一致public static void main(String[] args) { //主线程组 EventLoopGroup mainGroup = new NioEventLoopGroup(); //子线程组 ...

2020-02-12 15:56:24 215

原创 Netty笔记(1)-入门

Netty是什么?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke’s Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebo...

2020-02-11 15:48:11 220

原创 Java源码阅读笔记(2)-LinkedList

首先我们来看下初始化 /** * Constructs an empty list. */ public LinkedList() { } /** * Constructs a list containing the elements of the specified * collection, in the order the...

2020-02-08 11:55:41 140

原创 Java源码阅读笔记(1)-ArrayList

ArrayList是我们经常见到的一个集合数据类型,所以我们来看看ArrayList是怎么实现的? /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list ...

2020-02-03 12:06:23 140

原创 并查集

关于并查集的实现思路呢有两种,先讨论第一种数组实现并查集首先来看个案例1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10这是两串数字但是,你们也可以当成索引,我自己连我自己,我的索引就是我自己,我对应的数也是我自己。我们可以把这10个数的当成十个开发者,一开始我全能,我全栈,一个人接私活,我就是我,时间自由但是这编号 7 的开发者他感觉一个人玩儿没劲,...

2020-01-31 17:09:37 86

空空如也

空空如也

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

TA关注的人

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