
计算机常识
文章平均质量分 72
Survivor001
这个作者很懒,什么都没留下…
展开
-
【Mysql】 InnoDB引擎 - 介绍
【Mysql】 InnoDB引擎 - 介绍原创 2022-06-24 16:00:20 · 768 阅读 · 0 评论 -
Mysql 优化数据库查询效率
mysql慢sql问题定位和优化 :Mysql优化 数据库查询效率转载 2022-05-20 09:43:05 · 139 阅读 · 0 评论 -
JAVA程序性能优化研究 - 集合初始化容量一定能提高效率 ?
相信大家都知道集合存在扩容机制,所以使用时进行初始化容量从而达到减少其扩容操作,来实现提高性能的目的。但是集合初始化容量后就一定能提交效率码?答案当然是否定的,不合理的使用初始化容量反而会降低性能,因为内存的不合理申请,必然会影响GC过程,都知道尤其FULL GC一定要避而远之。研究开始:先看示例:下面是一段简单的循环体代码,在循环内使用向ArrayList集合添加数据。 public static void outsideLoop() { List<String>原创 2022-05-18 18:22:09 · 444 阅读 · 0 评论 -
JAVA程序性能优化研究 - 循环内对象性能优化内容
接着上篇文章的分析的结果,在业务需求下这种循环内创建集合对象的使用,优化空间几乎没有了,因为循环内创建map对象,申请空间是避免不了的。所以没有必要将优化目标放到这了。 public static void outsideLoop() { List<Map> list = new ArrayList<>(); int i = 0; while (++i < 10000000){ Map<String原创 2022-05-18 16:35:38 · 2485 阅读 · 0 评论 -
JAVA程序性能优化研究 - 循环内创建对象引用和初始化真的影响性能?
相信很多小伙伴在实际研发工作中大多数都是根据业务逻辑来实施研发,经常遇到循环体中集合的使用或者实体的使用场景,在大数据量下经常会遇到性能问题(效率和资源消耗),很多新人都不太注重研发时性能问题,今天就针对该场景下的优化记录下。(个人研究,有误留言)场景:很多业务都会有循环体中进行集合或者对象的使用,如下(方式一):public class ListForObject { public static void main(String[] args) { long startT原创 2022-05-05 13:55:45 · 2233 阅读 · 0 评论 -
JAVA1.8 Stream流
JAVA1.8 Stream流原创 2022-02-11 10:34:32 · 4880 阅读 · 0 评论 -
SpringSecurity 自定义JwtAuthorFilter基于JWT的Token验证
根据上篇的实现思想,现在我们正式实现下内容。需要实现的内容(基于之前的实现SpringSecurity 架子):1. 修改 JwtAuthenticationSuccessHandler ,需要将上下文信息存入redis: 因为验证环节需要实现从redis获取上下文,设置为SecurityContextHolder。2. 自定义实现JwtAuthorFilter,拦截所有请求,对token进行验证,验证内容:是否携带token,是 否有效等(根据需求实现):进行toke...原创 2021-09-15 16:50:48 · 6391 阅读 · 0 评论 -
SpringSecurity SecurityContextPersistenceFilter源码 和企业级Redis使用思想
之前几篇我们基本上讲述了SpringSecurity 登录认证和授权认证的实现和源码分析。我们大致清楚了 :SpringSecurity 登录认证原理。 如果自定义登录认证流程 授权验证的流程原理今天我们分析下整个认证过程和企业级redis使用的思想,是为了解决什么问题,以及怎么解决的?我们简单回顾下 SpringSecurity 流程。用户登录: 输入用户名 / 密码 JwtLoginFilter (自定义的UsernamePasswordAuthenticationFilter)..原创 2021-09-14 13:39:28 · 569 阅读 · 0 评论 -
SpringSecurity 源码解析 | 加JWT 实战 之 登录认证源码解析
登录认证 对于登录认证是什么东西,这个就不用详解说了吧,在企业研发中,用户登录系统不单单简单的传递一个密码过来对比下,ok了就进入系统。一般来说为了在企业研发中,都会对此流程进行加强操作,比如密码的加密处理,用户是否过期,用户是否被停用了等等。但总结来说,目的都是一样,认证用户的信息。SpringSecurity框架就是帮我们实现了这样的流程功能的框架(这里只说登录认证)。稍微接触点SpringSecurity都知道,只要加入了SpringSecurity的依赖,访问api都会先进入...原创 2021-09-13 17:37:22 · 518 阅读 · 1 评论 -
JAVA JVM底层解析
花了一段时间,把java的知识点总结整理了一下,这篇总结对于初学者,我个人觉得会有很大的收益,因为从概括到细节,都图形化表现出来了,学习起来应该会很轻松。后面也会花时间一个个知识点单独写在博客。(劳动成果,下载可得)...原创 2021-08-18 17:56:47 · 143 阅读 · 0 评论 -
网络编程--OS层级NIO的Channel和Buffer
网络编程–OS层级NIO的Channel和Buffer上篇文章讲述了BIO同步阻塞模型,大家都知道正是因为阻塞的原因,针对多连接,必须要用多线程去处理每一个连接,形成了每连接对应每线程的线程。由此,在多连接的场景下,过多的线程会线程内存浪费以及CPU的调度消耗。于是内核需要升级,将accept 和 recv 调用能设置成非阻塞的。服务器端建立连接后,内核程序会把该线程返回的文件描述符fd打上非阻塞标记NONBLOCKING。先看下抓包效果由上面我们可以看出来,操作系统内核升级之后,确实提供了,不阻原创 2021-05-31 23:30:31 · 313 阅读 · 1 评论 -
IO操作底层调用过程 | 用户态切换内核态原理 | 中断概念
IO操作底层调用过程|内核|中断|做后端的程序员都知道我们编写的程序主要分方法程序和IO操作程序。有什么不一样呢?方法程序就不多说了。IO程序有什么不同呢?IO操作指的是对硬件设备操作,比如键盘、鼠标、网卡、显卡…那又有什么区别呢?那就得说说系统调用先看下面简单的一个图,cpu主要从内存拉取数据执行,将返回结果返回给内存,是我们程序的执行过程(今天重点不是这)我们的程序分为 系统程序kernel(内核程序,操作系统自带的程序) 和 用户程序(app之类的我们自己放在系统程序)。系统程序k原创 2021-05-19 23:34:00 · 2833 阅读 · 0 评论 -
多线程透析--synchronize底层实现原理
多线程透析–synchronize底层实现原理之前就说过了遇到线程同步问题我们都常想到synchronize关键字,它确实能很好的解决线程同步问题,但是它会引起一些其他问题,比如最突出的一点就是程序效率问题。之前说过在JDK1.1~1.2 synchronize关键字就是实现了重量级锁,所以在一些小场合反而拉夸了效率。什么是重量级锁的概念,之前也提到了多线程透析–进程和线程底层分析,重量级锁是需要OS操作系统调度,想当于在内存和CPU之前加了一个中间者。不过后面随着JDK1.6对synchroniz转载 2021-04-22 22:16:04 · 264 阅读 · 0 评论 -
多线程透析--JUC的锁机制、锁原理CAS、AQS
多线程透析–JUC的锁机制、锁原理其实之前博客中就已经提到了JUC,今天详细的透析下JUC的锁机制和锁原理。在JDK1.1~1.2 的时候 只有synchronize锁,此时的锁只是一个重量级锁,所谓的重量级锁我个人理解就是线程在使用资源时需要通过OS线程队列进行调度,只有在获取锁(没有其他线程占用锁)的情况下才能进行。这类锁一般具有排他性,所以也叫悲观锁。而早期的synchronize不管你是否是多线程竞争关系,都会同样的采取重量级锁这一套。这样再简单的线程操作中,就很影响效率。在JDK 1.5原创 2021-04-21 23:20:28 · 625 阅读 · 0 评论 -
多线程透析-锁基本概念
多线程透析-锁基本概念知道多线程的基本上都知道锁这个东西,现在就来详细说下锁的概念。先不说直接说锁的概念,老样式还是举例分析下:举个例子:小明需要上厕所,如果厕所没有人,小明就直接去蹲坑了,这里就类似与小明是一个线程A,厕所是共享资源count。现在第二个人小华来了 也要上厕所,但是小明并没有结束怎么办呢?方式一:小华就等呗,来回打转,不停的去看看小明结束没,一旦结束了我立马进去。方式二:小明防止别人硬上,就在厕所上上一把锁,小华看见被锁住了,只能在一边坐着等着,等锁开了,再进去。上面两种情况原创 2021-04-20 01:27:47 · 525 阅读 · 1 评论 -
多线程透析--进程和线程底层分析,在系统中线程执行过程
多线程透析–进程和线程底层分析1.什么是进程?程序启动后分配到内存,资源分配的基本单位,比如qq.exe。2.什么是线程?程序执行的基本单位。怎么了解以上两个含义的解释呢?我们从CPU底层来理解下:一个程序被启动后,会进入到内中变成:指令+数据。就是说一个进程执行后,会被分配到内存中,变成一个或者多个指令和数据,而这样的指令+数据就是一个个线程。3.程序如何开始运行的?记住操作系统执行程序都是由CPU来操作的,而CPU只会执行处理线程。那先了解下的CPU中几个核心的部件:Regis原创 2021-04-19 23:58:46 · 367 阅读 · 0 评论 -
基于JUC线程池的使用ExecutorService
基于JUC线程池的使用ExecutorService往往采用多线程目的都是为了提高程序效率,提高系统使用性。但是频繁的创建和销毁线程本身就是一个有损效率的事。所以java的JUC就提供了线程池的使用。线程池 :提前创建好多个线程放入线程池中,使用时直接获取,使用完成放回线程池。可以避免频繁创建和销毁线程,实现重复利用。好处:提高了响应效率(减少了创建线程时间)降低资源消耗(重复利用线程池里面线程,不再是创建)便于管理。corePoolSize : 核心池大小maximumPoolSize原创 2021-03-28 21:16:07 · 176 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(信号灯法)
java线程通讯-生产者消费者模型(信号灯法)上面博客采用缓存区方式实现了生产者与消费者https://blog.youkuaiyun.com/qq_31142237/article/details/115285293这篇介绍下生产者消费者模型的信号灯法,根据不停场景使用不同方式。信号灯法:利用标识控制线程等待和唤醒,类似于信号灯,红灯性绿灯停。举例:站在司机的角度:红灯停,人走。 绿灯走,人停。对象分析: 车 、 人 、 信号灯车: 就是来车行走。人:就是来人行走。信号灯: 绿灯时车走行走,变灯原创 2021-03-28 20:38:51 · 162 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(管道法)
多线程-线程通讯-生产者消费者模型多线程的使用往往不单单是单个线程的实现,而是多个线程的相互协作实现逻辑业务。什么是线程通讯?多个线程协作完成共享资源的使用,实现线程安全,线程不死锁。线程通讯实现方式:等待(wait()) | 通知 notify() .notifyall()wait()、notify()、notifyall() 方法都是Object类下的方法。wait() : 让当前线程进入等到状态,并且释放锁资源。notify() : 唤醒一个等待线程,且随机线程。notifyall()原创 2021-03-28 19:54:34 · 392 阅读 · 0 评论 -
Java静态代理和动态代理
Java静态代理和动态代理什么是代理?代理是一种设计模式。通过代理对象间接的反问被代理对象。(是的就是这么简单)怎么理解呢?举个例子:小明*(被代理对象)*去详情了,想约女孩出来看电影(代理事务),但是不想自己去找女孩,这时候找到媒婆(代理对象)去传话,达到约会的目的。我们通过上图想一想,代理的好处和作用。为什么小明不自己去找小美说呢? ---->加入小明是个丑八怪,那直接去找小美,那不是凉凉。找媒婆的话就能直接把话带到且让自己相貌啥的不直接被小美知道。同理:通过代理对象实原创 2021-03-23 23:26:30 · 110 阅读 · 0 评论 -
ReenTrantLock之读写锁
ReenTrantLock之读写锁上几篇我们介绍了多线程同步相关锁Synchronsize锁和JDK的JUC锁Lock以及ReentrantLock锁。现在准备介绍的时JDK的读写锁(测试代码借用别人的博客,我这边只做一个总结)。先介绍下这个读写锁 ReentrantReadWriteLock这个读写锁也是JDK工具java.util.concurrent.locks包下,和ReentrantLock 不同的是ReentrantLock是继承了Lock,ReentrantReadWriteLock继承原创 2021-03-23 21:17:26 · 896 阅读 · 1 评论 -
多线程--线程同步锁Lock锁
多线程–线程同步锁–Lock锁-ReentrantLock之前说了线程同步机制Synchronize锁,其实除此之外还有一种JUC的Lock锁也能实现线程同步。而且Lock实现类ReentrantLock相比Synchronize有更大的灵活性,更加丰富,更是适合大多场景的使用。先来简单的对比下ReentrantLock和Synchronize吧。Synchronsize锁是独占锁,加锁和释放锁都是自动的,只要加上关键字synchronize或者代码块就行。使用起来很简单,但是呢灵活性较差。Ree原创 2021-03-11 00:05:40 · 1528 阅读 · 8 评论 -
多线程--线程不安全和线程死锁,同步锁Synchronize
线程不安全和线程死锁什么叫线程不安全?当多个线程共享同一个资源时,在不使用同步锁的情况下对共享资源进行读写操作是,导致的程序执行结果异常,产生不正常的结果数据。举个例子:两个人去抢票,当强到最后一张的时,在两个人眼里都看见有一张票,于是两个同时去抢,结果两个人都抢到了,而票的数量变成的-1。解决线程不安全的办法?解决线程不安全的办法就是给线程加锁,使用线程同步机制synchronize。线程同步其实就是个等待机制,多个线程访问同一个资源时,就要让这些线程进入一个等待池形成队列,等待前一个线程使用完原创 2021-03-08 23:02:55 · 353 阅读 · 0 评论 -
线程--守护线程与非守护线程
多线程–守护线程与非守护线程什么是守护线程?非守护线程好理解,就是程序中前端运行的线程,我个人理解为常用于处理主动事务的线程。守护线程:顾名思义,用来守护处理事务的线程。它主要运行在程序后端,最有代表的例子GC线程,就是守护线程。守护线程的特点守护线程运行在程序后端,随着非守护线程的结束而结束。也就是说在程序中已经没有了被守护线程后守护线程就会被终止。可以理解为,程序中没有了被守护者,守护线程也将被终止。守护线程可以通过Thread中的setDaemon方法设置,但是必须要在start方法之前原创 2021-03-08 21:47:13 · 406 阅读 · 0 评论 -
跨平台第三方平台登录和单点登录
跨平台第三方平台登录和单点登录官方介绍:单点登录:简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。个人理解: 对于单点登录和第三方平台登录功能我还是习惯以自己的理解去记忆: 单点登录: 从A平台通过链接方式到B系统,中间免去登录过程。 第三方登录: 从A平台通过B平台的登录进入A系统。中间免去A平台的直接登录,使用B平台的用户认证。 其实在功能实现流程上来说,“第三方登录”就是包含了“单点原创 2020-10-26 17:15:40 · 3998 阅读 · 2 评论 -
Mysql 数据库服务远程连接限制修改
Mysql 数据库服务远程连接限制修改一般安装Mysql当server服务限制了远程连接时,在别的服务器上连接该服务器的mysql会包错:is not allowed connect to this mysql…解决办法:修改连接权限:1.所有服务器都可以连接该服务器mysql服务GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFI...原创 2019-06-28 14:26:58 · 585 阅读 · 0 评论 -
电脑文件远程共享设置与使用
电脑文件远程共享设置与使用第一步:关闭防火墙这一步就不多说了,自行解决!第二步:打开计算机“管理” ----> 进入到共享文件夹。第三步:点击右侧更多操作,“新建共享”。第四步:选择需要共享的文件路径。第五步:填写信息(自行填,无所谓)第六步:配置权限.这样计算机文件共享就完成了。接下来在其他服务上直接连接就行了(\10.10.1.17)...原创 2019-06-10 17:34:17 · 7068 阅读 · 0 评论