自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Netty in action 读书笔记(一)

Netty的核心思想异步和事件驱动Netty的核心组件Channel : 输入输出数据的抽象载体Callback :回调,用于事件处理Future::异步操作的占位符Event和ChannelHandler : 事件和对应的处理逻辑的抽象Netty客户端/服务器概览服务器实现重要步骤EchoServerHandler实现业务逻辑main()方法引导服务器启动public void start() throws Exception { final EchoServ

2021-08-26 13:36:05 17

原创 Spring 单例的实现方式

单例模式面试最常问的一种设计模式,即一个类只有一个实例Java里有五种方式实现单例:懒汉饿汉synchronized饿汉DLC静态内部类枚举类spring里也有单例的概念,但不是严格意义上的单例模式IOC容器通过HashMap存储bean,如果bean的作用域是单例,每次getBean就从HashMap里拿出bean,如果bean的作用域是prototype每次getBean就重新new一个返回。默认情况下IOC容器是饿汉式,在初始化容器时就创建bean,可以通过@Lazy注解延迟.

2021-04-09 17:15:20 664

原创 spring-security + spring-session-redis实现redis存储登录状态

用redis存session时想用Json做序列化,遇到坑来记录一下首先说下坑:Spring-Security下面有些类是没有无参构造方法的,反序列化时会抛异常Spring Securityspring security配置,不是本文重点,之后再详细记录@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserServ

2021-04-09 16:25:21 609

原创 Mysql事务

事务四大特性:ACIDA:原子性C:一致性I:隔离性D:持久性事务的并发问题:脏读不可重复读幻读事务隔离级别:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE),InnoDB默认的隔离级别是REPEATABLE READinnoDB的读分为快照读和当前读innoDB RR是不能完全避免幻读的发生的,需要应用锁来避免幻读...

2021-04-08 16:15:38 15

原创 JavaWeb程序CPU占用率高时如何排查是哪行代码出现了问题

查到java进程的PID linux环境下用top -c 命令top -Hp pid 查看所有线程 找到对应线程tidjstack -l pid > ./stack.log进程信息cat stack.log | grep tid -C 20找到对应的java代码

2021-04-07 17:01:43 48

原创 用Python+XPath爬取linux命令

爬取的目标Linux命令大全(手册)用到的工具语言:Python解析库:lxml查询语言:XpathXPath相关知识在线Xpath测试平台XPath菜鸟教程开始爬取数据最后需要的得到JSON格式{ "name":, "usage":, "params":[ {"param":,"content":} ]}目标网站首页给出了一个命令的列表,我们需要得到每一个命令子页面的url将源代码复制到xpather上,可以方便测试写出的XPath是否正确得到解析出子页面

2020-09-30 02:49:49 88

原创 Cookies和Session的原理和实现

Cookies和Session的关系做一个比喻:人去银行取钱的场景浏览器是人,服务器是银行,Cookies是银行卡,Session是银行账号。浏览器携带Cookies访问服务器,服务器根据Cookies找到相应的Session。Session可以存于服务器的内存、缓存、外存中SpringBoot的简单实现在controller的方法的形参中加上HttpServletRequest request通过request.getSession().setAttribute()设置Session@

2020-09-28 00:16:40 54

原创 GithubOAuth授权登录的步骤

GitHub OAuth官方Doc1. 在github上注册APP2. 请求githubAPI,跳转至用户授权页面3.用户授权后,github会携带code,请求callbackurl4.服务器接收请求后获得code,再携带code,client_id,client_secret,redirect_uri,state等数据POST请求API。5.从github的响应得到token6.最后携带token请求API,获得用户信息晚上有点晚了,等之后有时间补上在springboot实现的详细过程

2020-09-27 01:56:21 295

原创 Java内存区域与内存溢出异常之运行时数据区域

Java与C++之间又一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的想进去,墙里面的人却想出来。对于C、C++来说,开发人员在内存管理领域是拥有最高权力,但同时也承担了对所有对象的维护责任;而对于Java程序员来说,在虚拟机自动内存管理制度的帮助下,不容易出现内存泄漏和内存溢出的问题,但是一旦出现了问题后要进行排查错误和修正问题会成为一项艰难的工作。相对来说Java适合来对进行迭代快的产品的开发如网站、APP的后台。运行时数据区域程序计数器较小的内存空间,可以看作是当前线程所执行字节码.

2020-09-23 19:22:57 30

原创 leetcode932 漂亮数组

闲话今天想找几道分治的题目做做,有些题不用分治的思想做,想光找到直接规律真的有点难,但是分治思想也需要清晰的逻辑才能考虑清楚,还需要多加练习。题意对于某些固定的 N,如果数组 A 是整数 1, 2, …, N 组成的排列,使得:对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。那么数组 A 是漂亮数组。给定 N,返回任意漂亮数组 A(保证存在一个)。思路分析分析满足条件的数的规则要不存在A[k] * 2 =

2020-09-23 15:58:29 31

原创 leetcode968 监控二叉树

题意给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。思路分析根据节点的左右子节点的状态来判断自身的状态每个节点可能有三种状态不可见可见但没放置监视器放置监视器后序遍历,当节点的状态为3时监视器数量+11.)若左右子节点中有一个为状态1(不可见),则当前节点状态为3(放置监视器)2.) 若左右子节点有一个为状态3(放置监视器),则当前节点状态为2(可见但没放置监视器)3.)若左右子

2020-09-22 01:52:21 28

原创 Android组件之Menu

OptionMenu出现在窗口右上角得OptionMenuContextMenu长按view不放,就会在屏幕中间弹出ContextMenu

2020-09-22 01:12:16 45

原创 LeetCode 685 冗余连接II 并查集的应用

首先理解题意树为N个节点N-1条边且只有一个入度为0的节点的有向图结构,题目输入为在一颗树上加了一条边的有向图,输出为一条边是

2020-09-20 19:32:16 26

原创 Android四大组件之Activity

Activity组成layout+data = Activity对应有Java Class和xml文件每个在AndroidManifest.xml里声明指定一个Activity为程序入口需要在intent-filter里加上内容<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.

2020-09-16 20:48:49 32

原创 解数独(深搜+回溯)

leetcode.37 解数独本题hard难度但是解体思路就是很普通的深搜+回溯需要考虑的点是递归的深搜进行的条件和状态的记录用boolean数组来记录每个行、列、九宫格里1-9的存在情况先遍历一次原数组,记录空格的位置并对boolean数组进行初始化然后对空格位置进行dfs。class Solution { private boolean[][] line = new boolean[9][9]; private boolean[][] column = new boolean

2020-09-16 14:03:50 80

原创 二叉树遍历的迭代实现

二叉树前、中、后序遍历的迭代实现前序前序顺序为父左右利用栈保证遍历的顺序,先将根节点入栈while循环将栈顶节点出栈输出,再依次把该节点的右节点和左节点(存在的话)入栈public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root==null) return res; S

2020-09-14 19:40:50 38

空空如也

空空如也

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

TA关注的人

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