jonesun / mybloggitalk Goto Github PK
View Code? Open in Web Editor NEW评论存储
评论存储
https://jonesun.github.io/20200728/java/%E5%A4%9A%E7%BA%BF%E7%A8%8B/a490755/
概念JDK1.7引入了一种新的并行编程模式”fork-join”,它是实现了”分而治之”**的Java并发编程框架。它对问题的解决思路是分而治之,先将一个问题fork(分为)几个子问题,然后子问题又分为孙子问题,直至细分为一个容易计算的问题,然后再将结果依次join(结合)为最终的答案。对程序员来说,叫递归**更加合适。只不过普通的递归是在单线程中完成的,而这里的递归则把递归任务通过invokeA
https://jonesun.github.io/20210706/jenkins/9b38587/
概念话说不会偷懒的程序员不是好的程序员,笔者就时常如果有一个软件能够帮我把日常的体力工作都给干了,这样就可以有时间做更多的脑力工作了。逛博客的时候,经常看到DevOps和CI/CD的相关文章,抱着试试看的想法研究下如何实现。当然跟很多初次看到这几个单词都一脸懵的朋友一样,肯定搜索下都是什么意思: DevOps: DevOps是Development和Operations的组合,是一种重视软件开发
https://jonesun.github.io/2020/11/20/SpringBoot-%E7%9B%91%E6%8E%A7/
Spring Boot Actuator+Micrometer+Prometheus+Grafana
https://jonesun.github.io/20201209/java/springboot/933cf8db/
前言在日常项目开发中,代码可以使用GIT/SVN 来进行版本控制,而数据库的更新却需要人工进行干预。 之前我在项目开发时会根据项目版本手工创建好每次版本迭代会更新的sql文件,发布版本时先在线上执行下对应sql,然后再更新应用版本。在研究自动构建时就想有没有一种技术/框架可以将这种手工行为变为自动。 偶然的机会在网上搜索到flyway-一个能对数据库变更做版本控制的工具,通过在项目中集成就可以在每
https://jonesun.github.io/2020/08/11/java%E5%A4%9A%E7%BA%BF%E7%A8%8B6-ConcurrentHashMap/
concurrentHashMap存在是为了解决并发问题 1、get方法不加锁;2、put、remove方法要使用锁jdk7使用锁分离机制(Segment分段加锁)jdk8使用cas + synchronized 实现锁操作3、Iterator对象的使用,运行一边更新,一遍遍历(可以根据原理自己拓展)4、复合操作,无法保证线程安全,需要额外加锁保证5、并发环境下,ConcurrentHashMap
https://jonesun.github.io/20200714/java/%E5%A4%9A%E7%BA%BF%E7%A8%8B/36c04c8a/
引言Java项目编程中,为了充分利用计算机CPU资源,一般开启多个线程来执行异步任务。多线有很多好处,其中最重要的是: 可以发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的”多线程”那是假的多线程,同一时间处理器
https://jonesun.github.io/2020/12/26/SpringBoot-Starters/
前言使用Spring Boot Starters可以快速集成相关组件,无需编写复杂的配置,在引入某项技术框架时,一个比较好的习惯就是看有没有xxx-starter
https://jonesun.github.io/tags/
心随精英,口随大众。生活不仅仅只有电脑、手机和电视。。。
https://jonesun.github.io/2020/10/22/java-io/#more
InputStream代表输入字节流,OuputStream代表输出字节流 如果读写的是文本文件则可使用 Reader和Writer表示字符流,字符流传输的最小数据单位是char 字符类型char表示一个字符。Java的char类型除了可表示标准的ASCII外,还可以表示一个Unicode字符
https://jonesun.github.io/20201009/java/springboot/7b2ee301/
目录 SpringBoot版本为2.x, 2.4.0开始版本号没有.RELEASE后缀 SpringBoot-Starters 第三方组件SpringBoot-集成Log日志 SpringBoot-Test用法 SpringBoot-集成Mybatis SpringBoot-集成Swagger3 SpringBoot-集成Redis SpringBoot-SpringSecurity5整合 Sp
引言Java项目编程中,为了充分利用计算机CPU资源,一般开启多个线程来执行异步任务。多线有很多好处,其中最重要的是: 可以发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的”多线程”那是假的多线程,同一时间处理器
https://jonesun.github.io/20210706/jenkins/5b02ceab/
创建任务在安装并配置好Jenkins后,我们来构建并部署springboot项目 创建任务首先准备一个SpringBoot项目上传到上面凭据所在的git托管网站中,以便Jenkins可以正常拉取源码 新建Item-选择【构建一个Maven项目】(如果这里没有这个选项,回到上篇安装插件Maven Integration并重启Jenkins) JDK选择该项目构建时的Java版本(如果这里没有所需的
https://jonesun.github.io/20200811/java/b8b0eacd/#more
基础java-引用 java-集合 java-时间 java-io java-随机数 高级java多线程 java设计模式 SpringBoot集成使用 SpringCloud集成使用 资料整理Java新特性 Java9之后到Java14 Java8特性介绍 RxJava学习
https://jonesun.github.io/20200801/java/%E5%A4%9A%E7%BA%BF%E7%A8%8B/11bde6ec/
目录 任何并发能做的事情,单进程也能够实现,只不过这种方式效率很低,它是一种顺序性的 java多线程1-从Thread到Future再到CompletableFuture java多线程2-线程池 java多线程3-fork-join框架 java多线程4-volatile&synchronized java多线程5-并发同步器CountDownLatch&CyclicBarri
在JDK1.5之后,JDK的(concurrent包)并发包里提供了一些类来支持原子操作,如AtomicBoolean,AtomicInteger,AtomicLong都是用原子的方式来更新指定类型的值 结构基本类型AtomicInteger、AtomicLong、AtomicBoolean 主要利用 CAS (compare and swap) + volatile 和 native 方法来保证
https://jonesun.github.io/20201130/java/aee68e6b/
数据类型Java里将数据类型分为了基本数据类型和引用数据类型,基本数据类型包含: byte、char、short、int、float、double、long、boolean,剩下的都是引用类型。最常用的就是String字符串: 基本数据类型的值都是直接保存在变量中的(一个变量一个值,可以体会到类似Integer.valueof缓存值的用意) 而引用类型的变量类似于C语言的指针,它内部存储一个“地
CountDownLatch一个或多个线程等待其他线程完成操作 概念CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。 CountDo
https://jonesun.github.io/2020/10/14/java-%E9%9B%86%E5%90%88/
简介Java的java.util包主要提供了以下四种类型的集合: List:一种有序列表的集合 Set:一种保证没有重复元素的集合 Map:一种通过键值(key-value)查找的映射表集合 Queue: 先进先出(FIFO:First In First Out)的有序表
https://jonesun.github.io/2020/09/29/SpringBoot-%E9%9B%86%E6%88%90Mybatis/
简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
https://jonesun.github.io/2020/08/11/java%E5%9F%BA%E7%A1%80/#more
目录java-引用 java-集合 java-时间 java-io
https://jonesun.github.io/2020/08/01/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/
目录 任何并发能做的事情,单进程也能够实现,只不过这种方式效率很低,它是一种顺序性的 java多线程1-从Thread到Future再到CompletableFuture java多线程2-线程池 java多线程3-fork-join框架 java多线程4-volatile&synchronized java多线程5-并发同步器CountDownLatch&CyclicBarri
概念 阻塞队列BlockingQueue就是为线程之间共享数据而设计的 queue&dequequeue: 先进先出队列 deque: 双端队列,继承自queue,可以在首尾插入或删除元素 BlockingQueue&BlockingDequeBlockingQueue: 阻塞队列 BlockingDeque: 阻塞双端队列,在不能够插入元素时,它将阻塞住试图插入元素的线程;在
https://jonesun.github.io/20201027/java/designPatterns/5ee502d3/
前言抽象工厂模式(Abstract Factory)是为了让创建工厂和一组产品与使用相分离,并可以随时切换到另一个工厂以及另一组产品; 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个”产品族”,由同一个工厂来统一生产,这就是
https://jonesun.github.io/20200826/java/springboot/b11f77d1/
Redis介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. C语言开发的、开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件 一种 NoSQL(not-only sql,泛指非关系型
前言 桥接模式通过分离一个抽象接口和它的实现部分,使得设计可以按两个维度独立扩展 桥接模式(Bridge): 将抽象化与实现化解耦,使得二者可以独立变化。是为了避免直接继承带来的子类爆炸 像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一
日常开发中经常会需要计算一个方法执行了多久: 12345678long startTime = System.currentTimeMillis();//模拟方法执行,花费2sTimeUnit.SECONDS.sleep(2);long endTime = System.currentTimeMillis();System.out.println("
https://jonesun.github.io/20201022/java/1956c086/
前言日常开发中必不可少要与时间打交道,而关于时间的处理网上有很多文章,下面基于大神的文章和我自己的理解对时间做一个整理 开始之前我们得先明确下一些概念,有助于后面程序代码得理解 时间:类似于08:00和2020年10月1日12:00,这个叫做时间,时间是一个相对得概念。在国内我们说得时间和国外得时间表示得就不一样,比如现在是2020年10月1日10:00,在美国芝加哥得话现在就是2020年09月
https://jonesun.github.io/2020/10/10/SpringBoot-%E9%9B%86%E6%88%90swagger/#more
简介Swagger 是一个规范和完整的文档框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务文档 集成swagger3.0.0简化了配置,故推荐直接使用最新版, 如果有还在用2.x版本的请参考时注意区分 pom.xml 12345 io.springfox
https://jonesun.github.io/2020/08/17/java%E5%A4%9A%E7%BA%BF%E7%A8%8B8-locks%E9%94%81/
前言 任何一个新引入的知识都是为了解决以往系统中出现的问题,否则新引入的将变得毫无价值 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁。 但当有多个线程读写文件时,读操作和写操作会发生冲突现象,写操作和写操作会发生冲突现象,但是读操作和读操作不会发生冲突现象,通过Lock就可以实现。 Lock接口, 提供
https://jonesun.github.io/20200723/java/%E5%A4%9A%E7%BA%BF%E7%A8%8B/87bed628/
一、使用线程池的好处 降低系统资源消耗, 通过重用已存在的线程, 降低线程创建和销毁造成的消耗 提高系统响应速度, 当有任务到达时, 通过复用已存在的线程, 无需等待新线程的创建便能立即执行 方便线程并发数的管控。因为线程若是无限制的创建, 可能会导致内存占用过多而产生OOM, 并且会造成cpu过度切换(cpu切换线程是有时间成本的-需要保持当前执行线程的现场, 并恢复要执行线程的现场)。 提供更
https://jonesun.github.io/2020/11/19/javaFx-%E5%B1%9E%E6%80%A7%E7%BB%91%E5%AE%9A/#more
前言javafx.beans.property包提供了丰富的Property类用于对java对象中的属性和javaFX UI控件进行绑定,可达到: 在任意位置修改java对象的值时可实时更新绑定的UI控件的显示,无需手动编写更新方法 javaFX UI控件进行变化时(如用户输入内容),实时写入对应的java对象中,无需手动设置 java属性 javaFx对应Property 绑定构建类
解决android中的SharedPreferences不能跨进程读写的问题.
https://jonesun.github.io/20210706/jenkins/a15eda66/
安装前准备下载配置jdk从Jenkins的官网可以看到 较新的Jenkins需要运行在Java 8 或者 Java 11上,我们安装java8版本,由于Oracle下载jdk需要注册账户,我们下载openjdk,这里推荐 Liberica OpenJDK 直接下载zip版本,并在环境变量中配置JAVA_HOME,使用cmd执行java -version查看是否配置成功 如果电脑里已经安装了Ja
https://jonesun.github.io/2020/07/22/SpringBoot-SpringSecurity%E6%95%B4%E5%90%88/
SpringSecurity以下代码基于SpringBoot 2.4.1(SpringSecurity 5.4.2) 简易版使用SpringBoot可以很轻松的完成SpringSecurity的集成,因为SpringBoot默认帮我们做了很多事 默认创建一个UserDetailsService具有用户名user和随机生成的密码的Bean,并将其记录到控制台 未整理完成……
https://jonesun.github.io/20200826/java/springboot/b11f77d1/
Redis介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. C语言开发的、开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件 一种 NoSQL(not-only sql,泛指非关系型
CountDownLatch倒计时锁: 一个或多个线程等待其他线程完成操作 概念CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。
https://jonesun.github.io/2020/07/24/SpringBoot-%E9%9B%86%E6%88%90log%E6%97%A5%E5%BF%97/
前言日志是开发过程中必不可少的模块,出现异常后可以通过查看日志看排查原因 使用常用日志框架 JDK Logging JDK提供的日志框架,由于自身有些局限性,故不太流行 Commons Logging Commons Logging是一个第三方日志库,它是由Apache创建的日志模块。Commons Logging的特色是,它可以挂接不同的日志系统,并通过配置文件指定挂接的日志系统。默认情况
https://jonesun.github.io/2020/07/30/java%E5%A4%9A%E7%BA%BF%E7%A8%8B4-volatile&synchronized/
并发编程三要素1. 原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行 只有简单的读取、赋值(而且必须是将数字赋值给某个变量,变量之间的相互赋值不是原子操作)才是原子操作 可以通过 synchronized 和 Lock 来实现。由于 synchronized 和 Lock 能够保证任一时刻只有一个线程执行该代码块,那么自然就不存在原子性问题了,从而保证了原
https://jonesun.github.io/2020/11/30/java-%E5%BC%95%E7%94%A8/#more
数据类型Java里将数据类型分为了基本数据类型和引用数据类型,基本数据类型包含: byte、char、short、int、float、double、long、boolean,剩下的都是引用类型。最常用的就是String字符串: 基本数据类型的值都是直接保存在变量中的(一个变量一个值,可以体会到类似Integer.valueof缓存值的用意) 而引用类型的变量类似于C语言的指针,它内部存储一个“地
https://jonesun.github.io/20200723/java/%E5%A4%9A%E7%BA%BF%E7%A8%8B/87bed628/
一、使用线程池的好处 降低系统资源消耗, 通过重用已存在的线程, 降低线程创建和销毁造成的消耗 提高系统响应速度, 当有任务到达时, 通过复用已存在的线程, 无需等待新线程的创建便能立即执行 方便线程并发数的管控。因为线程若是无限制的创建, 可能会导致内存占用过多而产生OOM, 并且会造成cpu过度切换(cpu切换线程是有时间成本的-需要保持当前执行线程的现场, 并恢复要执行线程的现场)。 提供更
https://jonesun.github.io/2020/05/20/javaFx%E5%8F%91%E5%B1%95/
javaFx发展从 JDK 11 开始,Oracle 将从 JDK 中删除 JavaFX,但在 2022 年之前,Oracle 还会继续为 JDK 8 中的 JavaFX 提供商业支持。2011 年,JavaFX 成为 Open JDK 的一部分开源,这项技术的发展现在由 OpenFX ( 国内网站 )社区负责
https://jonesun.github.io/categories/
心随精英,口随大众。生活不仅仅只有电脑、手机和电视。。。
https://jonesun.github.io/2020/10/22/java-%E6%97%B6%E9%97%B4/
前言日常开发中必不可少要与时间打交道,而关于时间的处理网上有很多文章,下面基于大神的文章和我自己的理解对时间做一个整理 开始之前我们得先明确下一些概念,有助于后面程序代码得理解 时间:类似于08:00和2020年10月1日12:00,这个叫做时间,时间是一个相对得概念。在国内我们说得时间和国外得时间表示得就不一样,比如现在是2020年10月1日10:00,在美国芝加哥得话现在就是2020年09月
https://jonesun.github.io/20210319/java/springcloud/55535/
前言顾名思义是跟云相关的,云程序实际上就是指分布式应用程序,所以Spring Cloud就是为了让分布式应用程序编写更方便,更容易而提供的一组基础设施,它的核心是Spring框架,利用Spring Boot的自动配置,力图实现最简化的分布式应用程序开发。 截至目前(2021-06-22)官网 最新版本为2020.0.3版 Spring Cloud包含了一大堆技术组件,既有开源社区开发的组件,也有商
在JDK1.5之后,JDK的(concurrent包)并发包里提供了一些类来支持原子操作,如AtomicBoolean,AtomicInteger,AtomicLong都是用原子的方式来更新指定类型的值 结构基本类型AtomicInteger、AtomicLong、AtomicBoolean 主要利用 CAS (compare and swap) + volatile 和 native 方法来保证
https://jonesun.github.io/20160808/hexo/b55300/
环境准备安装nodejs安装git
https://jonesun.github.io/2020/10/09/SpringBoot%E9%9B%86%E6%88%90%E4%BD%BF%E7%94%A8/#more
目录 SpringBoot版本为2.x 第三方组件SpringBoot-集成log日志 SpringBoot-集成Mybatis SpringBoot-集成swagger3 SpringBoot-集成Redis SpringBoot-SpringSecurity整合 SpringBoot-集成websocket SpringBoot应用整合ELK实现日志收集 SpringBoot-监控 开发小技
https://jonesun.github.io/20201105/java/designPatterns/49fe4565/
前言单例模式Singleton: 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 单例模式的要点有三个: 一是某个类只能有一个实例 二是它必须自行创建这个实例 三是它必须自行向整个系统提供这个实例
https://jonesun.github.io/2020/08/24/java%E5%A4%9A%E7%BA%BF%E7%A8%8B10-ThreadLocal/
概念ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。 原理ThreadLocalMap是ThreadLocal类的一个静态内部类,它实现了键值对的设置和获取,每个线程中都有一个独立的ThreadLocalMap副本,它所存储的值,只能被当前线程读取和修改。ThreadLocal类通过操作
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.