- 博客(23)
- 收藏
- 关注
原创 NIO入门
主要思想是把Channel通道注册到Selector中,通过Selector去监听Channel中的事件状态,这样就不需要阻塞等待客户端的连接,从主动等待客户端的连接,变成了通过事件驱动。通过上面的例子可以知道,通过ServerSocketChannel.open()方法可以获取服务器的通道,然后绑定一个地址端口号,接着accept()方法可获得一个SocketChannel通道,也就是客户端的连接通道。可以看到循环了两次。选择器可以说是NIO的核心组件,它可以监听通道的状态,来实现异步非阻塞的IO。
2024-05-07 15:07:50 458
原创 超详细Netty入门,看这篇就够了!
在前面介绍Channel时,我们知道可以在channel中装配ChannelHandler流水线处理器,那一个channel不可能只有一个channelHandler处理器,肯定是有很多的,既然是很多channelHandler在一个流水线工作,肯定是有顺序的。稍微在本地调试过,用起来和Nio有一些不同,是阻塞的,所以API调用也不一样。Netty中的Selector也和NIO的Selector是一样的,就是用于监听事件,管理注册到Selector中的channel,实现多路复用器。
2024-05-07 14:15:58 1768
原创 The version of ZooKeeper being used doesn‘t support Container nodes. CreateMode.PERSISTENT will be
主要原因是zk中的curator-framework版本高于elastic版本, ElasticJob jar冲突。
2024-03-19 16:19:59 1255
原创 JVM原理实践三
3、 使用 new,对象会创建在堆中,同时赋值的话,会在常量池中创建一个字符串对象,复制到堆中。具体的复制过程是先将常量池中的字符串压入栈中,在使用 String 的构造方法是,会拿到栈中的字符串作为构方法的参数。其次,在调用 new 时,JVM 命令将会调用 String的构造函数,同时引用常量池中的"abc” 字符串,在堆内存中创建一个 String 对象;当代码中使用这种方式创建字符串对象时,JVM 首先会检查该对象是否在字符串常量池中,如果在,就返回该对象引用,否则新的字符串将在常量池中被创建。
2023-03-26 19:44:33 143
原创 JVM原理实践一
它存储了每一个类的结构信息,例如运行时常量池(Runtime Constant Pool) 字段和方法数据、构造函数和普通方法的字节码内容、还包括一些在类、实例、接口初始化时用到的特殊方法。虚拟机栈是基于线程的: 哪怕只有一个main()方法运行,也是医线程的方式运行的。在线程的声明周期中,参与计算的数据会频繁的入栈和出栈,栈的声明周期和线程是一样的。堆是 JVM 上最大的内存区域,我们申请的几乎所有的对象,都是在这里存储的。运行时数据区的定义:JVM在运行java程序时会把它的内存划分为不同的数据区域。
2023-03-26 13:29:31 108
原创 操作系统的基本概念
考虑到竞争的公平性,程序的执行是短续的。shell是命令解析器,它也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。操作系统是用来管理管理资源的程序,用户程序也是在操作系统的管理下完成的。未使用系统调用的库函数,其执行效率通常要比系统调用的高。系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。操作系统管理计算机软硬件资源,扩充裸机以提供功能更强大的扩充机器,并充当用户与硬件交互的中介。
2023-03-26 12:16:27 195 2
原创 使用 ibatis-Interceptor+jsqlparser 实现数据权限过滤(适用于任何大型分布式业务系统)
使用 ibatis-Interceptor+jsqlparser 实现数据权限过滤(适用于任何大型分布式业务系统)
2023-03-08 13:35:00 778 1
原创 小程序开发
基础点1 > 小程序主体app . jsapp . json : 公共配置类 , 可配置全局消息app . wxss : 公共样式表2 > 单个页面主体js : 页面逻辑wxml : 类似于HTML , 页面DOMjson : 页面配置文件wxss : 页面样式表3 > app . json 简述https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#全局配置该 文件用于
2021-12-13 20:36:52 294
原创 为什么String要设计成不可变的?
这是一个老生常谈的话题(This is an old yet still popular question). 在Java中将String设计成不可变的是综合考虑到各种因素的结果,想要理解这个问题,需要综合内存,同步,数据结构以及安全等方面的考虑. 在下文中,我将为各种原因做一个小结。1. 字符串常量池的需要字符串常量池(String pool, String intern pool, String保留池) 是Java堆内存中一个特殊的存储区域, 当创建一个String对象时,假如此字符串值已经存在于常
2021-11-03 13:55:36 2021 3
原创 详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章就不写了,都是一些常用的命令。下面针对这两种方式来介绍一下。由浅入深。一、持久化流程既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客
2021-10-30 21:47:06 179
原创 java高级进阶面试题
JVM 面试题目1.请简单描述下 JVM 运行时数据区包括哪些部分?JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的区域,这些组成部分有些是线程私有的,有些则是线程共享的线程私有的:程序计数器,虚拟机栈,本地方法栈线程共享的:方法区,堆2.JVM 中是怎么判断对象可回收的?可达性分析算法这个算法的基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的
2021-10-28 21:06:52 2996
原创 深入理解 JVM 的内存区域
深入理解 JVM 的内存区域-深入理解运行时数据区代码示例:package ex2;/** * VM参数 * -Xms30m (堆空间初始大小) -Xmx30m(堆空间最大大小) -XX:MaxMetaspaceSize=30m (元空间最大大小) (指定垃圾回收器:-XX:+UseConcMarkSweepGC -XX:-UseCompressedOops) * * */public class JVMObject { public final static Strin
2020-10-25 12:31:45 158
原创 运行时数据区及 JVM 的整体内存结构
运行时数据区及 JVM 的整体内存结构 (理论篇)本章知识点:本地方法栈 方法区 元空间 运行时常量池 堆 直接内存(堆外内存)-本地方法栈本地方法栈跟 Java 虚拟机栈的功能类似,Java 虚拟机栈用于管理 Java 函数的调用,而本地方法栈则用于管理本地方法的调用。但本地方法并不是 用 Java 实现的,而是由 C 语言实现的(比如 Object.hashcode 方法)。本地方法栈是和虚拟机栈非常相似的一个区域,它服务的对象是 native 方法。你甚至可以认为虚拟机栈和本地方法
2020-10-25 11:59:58 253
原创 虚拟机的前世今生和JVM内存区域
虚拟机的前世今生首先来看下这张图:HelloWorld.class为java程序编译后的字节码,JVM为一个小型的操作系统(相当与windows或者你可以理解为linux),接受该字节码,翻译成一个硬件(操作系统)可以识别的机器码常见的JVM实现有以下几种:JVM的跨平台与语音无关性:多种语言均可使用JVM整体知识模块以上为JVM简介JVM内存区域JVM—操作系统 java虚拟机,class指令。虚拟内存java方法的运行与虚拟机栈java每
2020-10-24 23:13:15 308 1
原创 mybatis 自动建表
1. pom 依赖 <!--mybatis 自动建表--> <dependency> <groupId>com.gitee.sunchenbin.mybatis.actable</groupId> <artifactId>mybatis-enhance-actable<...
2019-11-07 12:15:22 1837
原创 java+mysql简单实现点赞评论转发帖子
mysql表设计:java代码接口 /** * 更新帖子点赞数 收藏数 同时更新中间表 * @param topic * @param userId * @param type */ void updateByTopic(Topic topic, Long userId, String type);实现类: @Overrid...
2019-07-24 09:44:40 3776 2
转载 ## @Scheduled cron表达式
一、Cron详解:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:1.Seconds Minutes Hours DayofMonth Month DayofWeek Year2.Seconds Minutes Hours DayofMonth Month DayofWeek每一个域可出现的字符如下:Seconds:...
2019-03-22 14:40:12 130
转载 利用nginx搭建静态资源服务器
以windows为例,linux其实一样;1.搭建静态资源服务器我电脑上的work文件夹下面有很多图片,我想通过nginx搭建静态资源服务器,通过在地址栏输入ip+port的方式完成目录的映射找到nginx安装目录,打开/conf/nginx.conf配置文件,添加一个虚拟主机添加监听端口、访问域名重点是添加location,映射-URL:/work/;注意:如果当前server模...
2019-03-14 16:28:26 143
转载 云服务器 ECS Linux SSH 无法远程登录问题排查指引
注意:本文相关配置及说明在 CentOS 6.5 64 bit 操作系统中进行测试,其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档。注意: SSH 客户端是云服务器 ECS Linux主要的运维途径。管理终端可以用于临时运维,或者在客户端登录出现异常时,用于问题排查分析。常见的问题现象:客户端问题中间网络问题PAM 安全框架相关问题Linux 系统环境配置问...
2019-02-26 11:59:58 1237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人