自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 java二进制位运算

一、与、或、异或、取反Java位运算符是对操作数的二进制位进行运算,操作数和计算结果都是整型,位运算符如下:&与:两个二进制位只要有一个为0那么结果就为0,否则结果为1。|或:两个二进制位只要有一个为1那么结果就为1,否则结果为0。^异或:任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1。~取反:0变1,1变0记的时候可以把1当作true,0当作flase/** * @Auther: allone_SilenceTXB * @Date: 20

2022-01-17 00:40:59 2409

转载 java设计模式-回调、事件监听器、观察者模式

设计模式参考代码

2022-01-06 15:13:43 168

原创 java:密码学

一、编码算法不是加密和解密,为了数据在网络间更方便的传输而产生/本地存储字节数组1.1 base64由A-Z a-z 0-9 + /共64个字符组成,去掉I i o O + /即base58对照表:注意:base64以3个字节为一组,如果最后一组不够3个字节补=1.2 url编码application/x-www-from-urlencoded:为了防止中文乱码1.3 字节数组与16进制互转(见代码)二、摘要算法2.1 定义又叫Hash算法,散列函数、数字摘要、消息摘

2021-11-21 00:38:43 355

原创 java代码简洁之道:常用开发工具包

java代码简洁之道:常用开发工具包一、apache commonsapache工具类官网common-beanutilscommon-cli (命令行dubbo源码有用到)common-codec(编解码 加密)common-dbcp (连接池)common-dbutilscommon-digester (处理xml文件)common-fileuploadcommon-logging…1.1 commons-lang3StringUtilsNumberUtilsi

2021-11-13 20:32:11 454

原创 Postman: postman环境变量配置及占位符

一、概要之前一直在用postman做接口自测,以为它只能简单的做一些http配置,有的时候几个接口共用一些相同的配置,但是每次都要copy过去,难免有些麻烦。后来无意中发现postman提供一些类似js的脚本,以及环境变量的配置,还有占位符等,这些可以让postman执行的时候更加灵活,比如api接口里面的携带token,token都是一样的,所以统一设置一个环境变量,这样token过期更换时就不用每个接口都去修改一遍二、新增环境变量2.12.2 打开新的页签编辑并保存2.3三、脚本

2021-08-26 19:00:50 1944

原创 java 回调函数 Callback的使用

一、回调函数简要回调函数其实是一种编程思想,尤其是在服务端或者B端开发会大量使用到。之前写了不少项目代码,但是大多都是C端,最近接触了一个服务端项目,里面设计到大量的这种思想。现在记录一下,通过代码应该很好理解这种模式.二、代码/** * 顶层接口 */public interface Callback {}//===============================/** * 具体消息回调接口 */public interface MessageCallback&lt

2021-08-23 10:53:43 1153

转载 java NIO基础超详细

Java NIO一、简介Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。二、IO与NIO的区别IONIO面向流(Stream Oriented)面向缓冲区(Buffer Oriented)阻塞IO(Blocking IO)非阻...

2021-08-20 15:11:26 99

原创 java设计模式实战:工厂模式+策略模式(注解+反射)

1.核心工厂类/*** 工厂类:初始化加载* 作用:这个类初始化的时候会去加载指定包下的资源,通过类加载器将Class类对象加载进来,并存储在集合里面。* 通过Class对象获取类上的注解,通过注解范围匹配到对应的策略上。该工厂通过静态内部类对外提供单例,不失为一种优雅的实现方式。*/public class CalPriceFactory { private static final String CAL_PRICE_PACKAGE = "org.landy.strategy.dem

2021-07-17 15:33:31 1290

原创 java原子类:利用CAS自定义显示锁

/** * @Auther: Shen_hs * @Date: 2021/5/1 * @Description: 获取锁失败时的异常 */public class GetThreadException extends Exception { public GetThreadException() { super(); } public GetThreadException(String message) { super(message)

2021-05-02 12:17:13 102

原创 java:原子类 CAS算法 ABA问题的解决方式

java原子类,CAS算法可能导致ABA问题,而AtomicStampedReference类很好的解决了这一问题,解决思想类似于数据库的**乐观锁,**加一个version版本号,每次更新数据的同时会修改版本号,另外的线程在修改时会拿着之前的版本号和现在的版本号对比,不一致就无法修改。/** * @Auther: Shen_hs * @Date: 2021/5/1 * @Description: AtomicStampReference 解决CAS的 ABA问题(类似于 数据库的乐观锁 加一个.

2021-05-02 11:33:57 274

原创 java:ClassLoader学习

ClassLoader的基础知识,类加载相关的知识问度娘,这里仅展示如何自定义ClassLoader实现类加载public class MyClassLoader extends ClassLoader { //文件加载目录 private final static String DEFAULT_DIR = "G:\\classloader1"; private String dir = DEFAULT_DIR; private String classLoaderNa.

2021-04-30 13:29:38 86

原创 java多线程:Thread-Per-Message设计模式

Thread-Per-Message设计模式:为每个请求过来的message安排一个线程去处理,建议用线程池,代码如下:public class Message { private final String value; public Message(String value) { this.value = value; } public String getValue() { return value; }}//====.

2021-04-21 13:11:04 70

原创 java多线程:countDownLatch

多线程模式下,要控制线程执行顺序之前可以用join()方式,现在也可以用countDownLatch(闭锁),A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.(一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。)public class JDKCountDown .

2021-04-21 11:49:38 83

原创 java:Optional类的应用及策略模式的实际应用

使用Optional容器类可以有效的防止npe,同时也可以用链式调用代替多重if/else判断,推荐使用,下面结合两个小例子说明它的具体应用场景:/** * @Auther: Shen_hs * @Date: 2021/4/20 * @Description:当给前端返回Result结果集时,通过User是否为空返回两种不同的结果 */public class Demo1 { public static void main(String[] args) { User .

2021-04-20 23:18:38 239

原创 java递归学习

概要:递归是一种编程的思想和技巧,类似于"套娃"的思想。递归的实现要有两点:一个递归的选项和一个非递归的选项,后者成为基础情形(base case)。递归的要点在于处理好基础情形,即终结条件,否则可能导致jvm栈溢出。下面结合两个实例:斐波那契数列和汉诺牌public class TestFebonacci { public static void main(String[] args) { //斐波那契数列:1 1 2 3 5 8 13 int i = febonacci(7); S.

2021-04-19 11:17:26 71

原创 java多线程:生产者消费者设计模式

public class Message { private String data; public Message(String data) { this.data = data; } public String getData() { return data; }}//====================================public class MessageQueue { //任务队列 pr

2021-04-16 18:34:15 78

原创 java多线程:balking设计模式

一个线程要去执行某个操作。但是,在发现这个操作已经被别的线程做了,于是,就没有必要再去做这样的一个操作了。面对这种问题的设计方案是多线程设计模式中的Balking模式。/*************************************** Data类 ***************************************/public class BalkingData { private final String fileName; private St.

2021-04-16 17:50:51 93

原创 java多线程:上下文切换设计模式

/** * 线程运行上下文设计模式 * 上下文 */@Datapublic class Context { private String name; private String cardId;}/** * 线程运行上下文设计模式 * 从数据库查询数据 */public class QueryFromDbAction { public void execute(Context context) { try { Threa

2021-04-16 13:41:41 261

原创 java多线程:Guarded Suspension设计模式

Guarded Suspension设计模式:Guarded是被保护的,Suspension 暂停的,当一个线程正在做某件事,这件事的优先级比较高不想被打断,可以考虑该设计模式。/** * Guarded Suspension设计模式 * 请求 * */@Getterpublic class Request { private final String value; public Request(String value) { this.value = .

2021-04-15 12:40:24 90

原创 java多线程:模拟ThreadLocal

ThreadLocal存储的变量,同一线程下可见,不同线程不可见package com.tuyrk.chapter10;import java.util.HashMap;import java.util.Map;/** * 模拟ThreadLocal * */public class ThreadLocalSimulator<T> { private final Map<Thread, T> storage = new HashMap<>(.

2021-04-15 12:26:14 167

原创 java多线程Future设计模式

/** * Future设计模式 * 调用者线程A调用任务执行线程B的时候,首先线程B返回一个Future类,然后线程A通过get()方法获取执行结果 */@FunctionalInterfacepublic interface Future<T> { /** * 返回任务执行线程的执行结果 * * @return 任务执行线程的执行结果 * @throws InterruptedException 方法异常 */ T

2021-04-13 22:39:06 96

原创 java自定义读写锁

自定义读写锁,读操作允许并行化,但是一旦有写操作就串行化/** * 读写锁分离,共享数据 */public class SharedData { private final char[] buffer; private final ReadWriteLock lock = new ReadWriteLock(); public SharedData(int size) { this.buffer = new char[size]; Arr.

2021-04-13 00:34:41 189

原创 java:多线程观察者模式

一、普通观察者模式观察者模式:一般分为Subject(主题即目标对象,一旦发生改变要发出通知),observer(观察者一旦目标发生改变,自动触发回调方法)/** * 观察者模式:目标对象 * */@Getterpublic class Subject { //定义观测者集合,存需要通知对象 private List<Observer> observers = new ArrayList<>(); private int state; /

2021-04-11 23:01:22 435

原创 java单例模式的几种实现方式

方式一双检锁:多线程模式下常见的单例模式,volotile关键字避免jvm指令重排导致的空指针异常,但是可能会有效率问题public class SingletonObject5 { /** * 单例对象 * 使用volatile关键字解决double-checked加锁情况下引起的空指针异常 */ private static volatile SingletonObject5 INSTANCE; private SingletonObjec

2021-04-10 23:11:27 65

原创 java自定义线程池

/**<p> 自定义简单线程池 任务队列、拒绝策略 </p> * * @author Shen_hs * @since 2020-04-10 */public class SimpleThreadPool extends Thread { /** * 最小线程数量 */ private int min; /** * 活跃线程数量 */ private int active; /** * 最大线程数量 */ private

2021-04-10 18:56:00 78

原创 java多线程:自定义Lock锁

自定义Lock显示锁public interface Lock { class TimeOutException extends Exception { public TimeOutException(String message) { super(message); } } /** * 加锁 * * @throws InterruptedException 打断异常 */ void lock() throws InterruptedException; /.

2021-04-08 21:24:26 218 1

原创 java并发编程学习思维导图

源码地址

2021-04-02 23:35:35 105

原创 java自定义数组、栈、队列

一、自定义数组数组的增删改查,以及线性查找和二分法查找package demo1.util;import java.util.Arrays;public class MyArray { // 用于存储数据的数组 private int[] elements; public MyArray() { elements = new int[0]; } // 获取数组长度的方法 public int size() { return elements.length; }

2021-03-31 18:04:23 96

java知识点思维导图

并发编程反射数据结构NIO

2021-03-30 23:46:22 134

原创 java全排列算法

java全排列算法判断素数素数就是不能再进行等分的数。比如:2 3 5 7 11 等。9 = 3 * 3 说明它可以3等分,因而不是素数。我们国家在1949年建国。如果只给你 1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?比如:1949,4919 都符合要求。请你提交:能组成的4位素数的个数,不要罗列这些素数!!public class SuShu { public static void

2021-03-28 11:20:02 354

转载 JVM超详细介绍(推荐)

很详细的JVM介绍及总结原文

2021-03-27 00:02:50 58

原创 java操作excel:基于easypoi的动态列导出

基于easypoi的动态列导出最近有一个需求,需要导出excel列表,但是列表的列名是不确定的只能先用value1、value2、value3…这样来表示,具体的列名存在另外一张竖表里面,每一种物品的字段名都不一样,这里通过反射+注解实现动态列的导出,代码如下实体类package com.ecity.hbp.service.entity.pojo;import cn.afterturn.easypoi.excel.annotation.Excel;import com.baomidou.

2021-03-22 15:44:26 3581 4

原创 基于Oracle的mybatis-plus及mybatis代码生成

基于Oracle的mybatis-plus及mybatis代码生成在做一般项目的时候可以利用代码生成插件,快速搭建基于mvc模式的代码,提高开发效率,下面是我常用的两种插件一、mybatis-plus代码生成引入依赖 <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId&gt

2021-03-22 15:07:19 805

转载 Element UI学习记录

Element UI 安装ElementUI 1. 通过vue脚手架创建项目 vue init webpack 项目名1 2. 在vue脚手架中安装项目 # 下载elementui的依赖npm i element-ui -S# 指定当前项目中使用elementui 参考官网快速上手import Eleme...

2021-02-23 00:46:59 96

转载 Shiro学习笔记_01:权限管理+shiro基本概念+shiro核心架构

Shiro 学习笔记 本文基于B站UP主【编程不良人】视频教程【2020最新版Shiro教程,整合SpringBoot项目实战教程】进行整理记录,仅用于个人学习交流使用。 视频链接:https://www.bilibili.com/video/BV1uz4y197Zm ...

2021-02-19 11:07:43 253

wangwenjun-thread.rar

汪文君多线程代码资料

2021-04-03

空空如也

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

TA关注的人

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