技能篇:sed教程-linux命令

2021-06-23
阅读 3 分钟
1.3k
前言sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式。 sed处理文本时是一次处理一行内容关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢starsed语法sed命令处理的内容是模式空间中的内容,而非直接处理文件内容。如果加上参数 i 则可直接修改文件内容示例:sed -i 's/原字符串/新字...

数据库篇:mysql内置函数

2021-06-23
阅读 5 分钟
2.3k
前言sql 是程序开发员绕不开的一项技能,而mysql是当前最流行的数据库,熟知其内置的一些函数,可以使我们平时的开发工作更加顺畅和方便时间日期函数字符串函数数学计算相关函数条件判断函数加密和压缩函数聚合函数格式或类型转化函数加锁函数和解锁函数关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢star...

基础篇:String字符串操作-必知必备

2021-06-23
阅读 4 分钟
979
前言字符串的常用操作,记一下。如果有字符串的操作小技巧,好用的工具类,欢迎补全。大家随意点赞,随意看看String实现原理String常用方法字符串的缓存池和String.intern正则匹配和字符串StringBuffer和StringBuilderspring工具类StringUtils关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢starString实现...

网络篇:朋友面试之https认证加密过程

2021-06-23
阅读 3 分钟
2k
前言上次朋友关于TCP/IP面试的后续,主要是https的相关面试要点,请看下文关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢star面试官:HTTPS它的认证加密过程是怎样,它怎么保证内容不会被篡改朋友:1,https是基于tcp协议的,客户端先会和服务端发起链接建立朋友:2,接着服务端会把它的证书返回给客户端...

基础篇:JAVA.Stream函数,优雅的数据流操作

2021-06-23
阅读 15 分钟
1.7k
平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看。java提供了Stream的概念,它可以让我们把集合数据当做一个个元素在处理,并且提供多线程模式

基础篇:异步编程不会?我教你啊!CompletableFuture(JDK1.8)

2021-06-23
阅读 14 分钟
1.5k
以前需要异步执行一个任务时,一般是用Thread或者线程池Executor去创建。如果需要返回值,则是调用Executor.submit获取Future。但是多个线程存在依赖组合,我们又能怎么办?可使用同步组件CountDownLatch、CyclicBarrier等;其实有简单的方法,就是用CompeletableFuture

网络篇:朋友面试之TCP/IP,回去等通知吧

2021-06-23
阅读 7 分钟
2.2k
最近和一同学聊天,他想换工作,然后去面了一家大厂。当时,他在简历上写着精通TCP/IP,本着对TCP协议稍有了解,面试官也不会深问的想法,就写了精通二字。没想到,大意了

框架篇:见识一下linux高性能网络IO+Reactor模型

2021-06-23
阅读 6 分钟
3.3k
网络I/O,可以理解为网络上的数据流。通常我们会基于socket与远端建立一条TCP或者UDP通道,然后进行读写。单个socket时,使用一个线程即可高效处理;然而如果是10K个socket连接,或者更多,我们如何做到高性能处理?

基础篇:JAVA原子组件和同步组件

2021-06-23
阅读 9 分钟
1.7k
在使用多线程并发编程的时,经常会遇到对共享变量修改操作。此时我们可以选择ConcurrentHashMap,ConcurrentLinkedQueue来进行安全地存储数据。但如果单单是涉及状态的修改,线程执行顺序问题,使用Atomic开头的原子组件或者ReentrantLock、CyclicBarrier之类的同步组件,会是更好的选择,下面将一一介绍它们的原理和用法

基础篇:java.security框架之签名、加密、摘要及证书

2021-03-16
阅读 13 分钟
2.8k
和前端进行数据交互时或者和第三方商家对接时,需要对隐私数据进行加密。单向加密,对称加密,非对称加密,其对应的算法也各式各样。java提供了统一的框架来规范(java.security)安全加密这类API。下面将一一介绍

框架篇:ByteBuffer和netty.ByteBuf详解

2021-03-16
阅读 8 分钟
2.2k
数据序列化存储,或者数据通过网络传输时,会遇到不可避免将数据转成字节数组的场景。字节数组的读写不会太难,但又有点繁琐,为了避免重复造轮子,jdk推出了ByteBuffer来帮助我们操作字节数组;而netty是一款当前流行的java网络IO框架,它内部定义了一个ByteBuf来管理字节数组,和ByteBuffer大同小异

基础篇:JAVA引用类型和ThreadLocal

2021-03-16
阅读 5 分钟
2.4k
平时并发编程,除了维护修改共享变量的场景,有时我们也需要为每一个线程设置一个私有的变量,进行线程隔离,java提供的ThreadLocal可以帮助我们实现,而讲到ThreadLocal则不得不讲讲java的四种引用,不同的引用类型在GC时表现是不一样的,引用类型Reference有助于我们了解如何快速回收某些对象的内存或对实例的GC控制

基础篇:深入解析JAVA泛型

2020-10-26
阅读 9 分钟
4.9k
先了解下java的Type类型体系(类的类=>类型),Type是所有类型(原生类型-Class、参数化类型-Parameterizedtype、数组类型-GenericArrayType、类型变量-TypeVariable、基本类型-Class)的共同接口;前两篇反射和注解讲到的Class<T>就是Type的一实现类

基础篇:深入解析JAVA注解机制

2020-10-04
阅读 13 分钟
7.3k
java注解是JDK1.5引入的一种注释机制,java语言的类、方法、变量、参数和包都可以被注解标注。和Javadoc不同,java注解可以通过反射获取标注内容

基础篇:深入解析JAVA反射机制

2020-09-28
阅读 6 分钟
2.1k
通俗解析:java文件需要编译成.class文件才能被jvm加载使用,对象的.class数据在jvm里就是Class<T>;我们如果能拿到这个Class<T>对象,就能获取该Class<T>对应的对象类型,及在该类型声明的方法和属性值;还可以根据Class<T>创建相应的类型对象,通过Field,Method反过来操作对象

基础篇:深入解析JAVA异常

2020-09-06
阅读 5 分钟
4k
方法中发生异常,会创建一个异常对象交给JVM处理,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并交给JVM的过程称为抛出异常。这会有一系列的方法调用,这系列方法调用的有序列表叫做调用栈

基础篇:JAVA内部类的使用介绍

2020-08-31
阅读 4 分钟
5.5k
1 四种内部类成员内部类静态内部类局部内部类匿名内部类2 内部类的使用场景和优点内部类的优点:每个内部类都能独立地继承一个类(实现多个接口),无论外部类是否已经继承或者实现,对于内部类都没有影响。内部类的存在使得Java的多继承机制变得更加完善在开发设计中会存在一些使用接口很难解决的问题,而类却只能继承一...

基础篇:详解JAVA对象实例化过程

2020-08-17
阅读 3 分钟
6.8k
1 对象的实例化过程对象的实例化过程是分成两部分:类的加载初始化,对象的初始化要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化类初始化就是执行<clinit>方法,对象实例化是执行<init>方法一个子类要初始化需要先初始化父类2 类的加载过程类的加载机制:如果没有相应类的cl...

基础篇:JVM运行时内存布局

2020-08-16
阅读 3 分钟
4.3k
1 JVM的内存区域布局java代码的执行步骤有三点java源码文件->编译器->字节码文件字节码文件->JVM->机器码机器码->系统CPU执行JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行其中Java虚...

基础篇:JAVA资源之IO、字符编码、URL和Spring.Resource

2020-08-02
阅读 12 分钟
3.4k
LineNumberInputStream和StringBufferInputStream官方建议不再使用,推荐使用LineNumberReader和StringReader代替

基础篇:高并发一瞥,线程和线程池的总结

2020-07-26
阅读 10 分钟
3k
进程是执行程序的实体,系统的调度执行单元,拥有独属的进程空间(内存、磁盘等)。而线程是进程的一个执行流程,一个进程可包含多个线程,共享该进程的所有资源:代码段,数据段(全局变量和静态变量),堆存储;但每个线程拥有自己的执行栈和局部变量

基础篇:详解锁原理,synchronized、volatile+cas底层实现

2020-07-21
阅读 16 分钟
8.5k
例如:一个线程想在控制台输出"I am fine",刚写到"I am",就被另一线程抢占控制台输出"naughty",导致结果是"I am naughty";对于资源的被抢占使用,我们能怎么办呢?当然不是凉拌,可使用锁进行同步管理,使得资源在加锁期间,其他线程不可抢占使用

基础篇:java基本数据类型

2020-07-16
阅读 4 分钟
7.3k
1byte: 计算机处理数据的最小单位是1byte,用一字节的最低位存储,其他的用0填补。如果值是true则储存二进制为0000 0001,false则是0000 0000

基础篇:深入JMM内存模型解析volatile、synchronized的内存语义

2020-07-15
阅读 7 分钟
3.9k
先介绍下多进程多线程在linux几种通信方式管道:管道的实质是一个内核缓冲区,需要通信的两个进程各在管道的两端,进程利用管道传递信息信号:信号是软件层次上对中断机制的一种模拟,进程不必阻塞等待信号的到达,信号可以在用户空间进程和内核之间直接交互消息队列:消息队列是消息的链表,存放在内存中并由消息队列标...

基础篇:JAVA.Object对象

2020-07-11
阅读 8 分钟
1.7k
对象头布局如下:主要和锁,hashcode,垃圾回收有关;由于锁机制的内容篇幅过长,这里就不多解释了;和锁相关的markWord(markOop)内存布局如下