- 博客(70)
- 收藏
- 关注
原创 微服务下怎么做权限管理
(2)鉴权单体应用一般会通过拦截器(Spring Security、Apache Shrio本质上都是拦截器),拦截用户请求,这里同样会根据鉴权方案是JWT还是HTTP会话分别处理,如果是JWT的话,则会通过解密来获得用户信息,如果是采用的会话的方式,则会根据会话ID,从存储中(这里一般是Redis)来获得用户信息,不论是哪种方案,最终都是根据用户信息来对相应的请求进行权限校验。诸如此类的鉴权方式,我个人是不太推荐的,当然采用此类鉴权方式的团队可能也有他们的考虑,更多的可能是出于性能的考虑。
2023-09-16 09:22:54
1044
原创 排坑-junit单元测试和Main方法之多线程
遇到的问题:这两天写项目需求遇见一个大坑,代码两下写完了,测试卡了我整整一天,多线程获取zk分布式锁,没等多线程跑起来,程序就结束了。后来发现是单元测试时执行了异步任务的问题!把异步任务取消后,用main 启动程序立马跑通了,搞了我一整天的问题终于落在帷幕,避免以后再次卡住,在此记录junit单元测试在执行多线程情况下的问题和结论,并对比junit单元测试和主程序Main方法之多线程执行。一. 先放结论切记:junit不支持多线程!!!在junit单元测试中,当创建了新线程后,单元测试并不会等待主线程
2022-05-15 11:21:24
1253
原创 开放的redis、zk、kafka数据中心,json在线格式化
说明:我们在做开发是苦于没有redis、zk、kafka数据中心,没有json格式化工具,现在他来了开放的redis、zk、kafka数据中心,json在线格式化如果你觉得有用请作者喝杯水吧。
2022-04-26 23:23:47
1487
原创 本地模式安装部署
本地模式安装部署安装前准备安装jdk,拷贝zookeeper安装包到linux系统下,解压到指定的目录tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/配置修改将/opt/module/zookeeper-3.5.7/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;打开zoo.cfg文件,修改dataDir路径:dataDir=/opt/module/zookeeper-3.5.7/zkData在/opt/module/zoo
2022-04-23 12:42:25
152
原创 Linux上安装Redis教程
Linux上安装Redis教程本篇文章是基于CentOS7,安装Redis版本为redis-6.2.6。一、下载并解压Redis1、执行下面的命令下载redis:wget https://download.redis.io/releases/redis-6.2.6.tar.gz2、解压redis:tar xzf redis-6.2.6.tar.gz3、移动redis目录,一般都会将redis目录放置到 /usr/local/redis目录:mv redis-6.2.6 /usr/local/
2022-04-23 11:56:00
529
原创 windows 下运行多个版本nodejs的解决方案
背景:在Windows上开发NodeJS项目,有时候会遇到不同的项目依赖不同的NodeJS版本的问题。今天在GitHub上发现了一个工具nvm-windows可以很好的解决Windows上同时有多个NodeJS版本共存的问题,记录一下试用方法安装nvm-windows之前首先需要卸载当前机器上已经安装过的所有nodejs版本删除下面2个文件夹:C:\Program Files\nodejs和 C:\Users\AppData\Roaming\npm从GitHub (https://github.co
2022-03-26 17:11:35
2267
原创 实用 shell 脚本
1、服务器系统配置初始化#/bin/bash# 安装系统性能分析工具及其他yum install gcc make autoconf vim sysstat net-tools iostat iftop iotp wget lrzsz lsof unzip openssh-clients net-tool vim ntpdate -y# 设置时区并同步时间ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeif ! crontab -l |
2022-02-08 14:28:46
237
原创 线程上下文类加载器----Jvm
1.为什么会有上下文类加载器?在双亲委托模型下,类的加载是由上而下的,即下层的类加载器会委托上层去加载,但是对于SPI(Service Provider Interface)来说,有些接口是java核心库所提供的;而Java核心库是由启动类加载器加载的,但是这些接口的实现来自于不同的jar包(厂商提供),java启动类 加载器不会加载其他来源的jar包(这些jar包由上下文类加载器加载),这样传统的双亲委托模型就无法满足SPI的要求,而通过当前线程设置上下文类加载器,就可以由设置的上下文类加载器来实现对于
2022-01-29 17:35:49
290
原创 十几款国内外嵌入式(物联网、工业)操作系统介绍
由于本人工作主要在物联网和工业领域,所以收集的操作系统主要集中在物联网和工业领域。故桌面操作系统厂商深度、新起点、麒麟、微软、安卓等没有介绍。而主要收集的是嵌入式操作系统厂商。1.国内操作系统介绍1.1秦简-DJYOS介绍都江堰操作系统是由深圳市秦简计算机系统有限公司主持的、国内原创的开源嵌入式操作系统,从2004年开始,已经发展15年。主要用于物联网、工业自动化、电力系统、新能源、工业可控制网络、机器人、无人机、智慧城市相关领域。在“计算机为人服务”的哲学指导下,djyos首次提出事件调度系统,符
2022-01-27 15:46:37
12110
1
原创 嵌入式操作系统
1 概述嵌入式操作系统是ARM CPU的软件基础,从8位/16位单片机发展到以ARM CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用,使应用程序员面向操作系统级开发应用软件,并易于在不同的ARM核的嵌入式处理器上移植。嵌入式操作系统都具有一定的实时性,易于裁剪和伸缩,可以适合于从ARM7到Xscale各种ARM CPU和各种档次的应用,嵌入式操作系统可以使用广泛流行的ARM开发工具,
2022-01-27 15:39:17
851
原创 设计模式之----观察者模式
1.设计模式之----观察者模式import java.util.ArrayList;import java.util.List;public interface Observer { void undateMeSelf(int count);}class StaticDisplay implements Observer { private int count = 0; @Override public void undateMeSelf(int count)
2022-01-27 11:46:37
501
原创 Hadoop之MapReduce开发总结
Hadoop之MapReduce开发总结1.输入数据接口:InputFormat(1)默认使用的实现类是:TextInputFormat(2)TextInputFormat的功能逻辑是:一次读一行文本,然后将该行的起始偏移量作为key,行内容作为value返回。(3)KeyValueTextInputFormat每一行均为一条记录,被分隔符分割为key,value。默认分隔符是tab(\t)。(4)NlinelnputFormat按照指定的行数N来划分切片。(5)CombineTextlnput
2022-01-26 16:48:47
217
原创 MapReduce之自定义InputFormat
MapReduce之自定义InputFormat背景: 在企业开发中,Hadoop框架自带的InputFormat类型不能满足所有应用场景,需要自定义InputFormat来解决实际问题。自定义InputFormat步骤如下:自定义一个类继承FilelnputFormat。自定义一个类继承RecordReader,实现一次读取一个完整文件,将文件名为key,文件内容为value。在输出时使用SequenceFileOutPutFormat输出合并文件。无论HDFS还是MapReduce,在处
2022-01-26 16:30:54
273
原创 设计模式----桥接模式
1.桥接模式public interface DrawApi {void drawCycle();}class DrawRedCycle implements DrawApi{@Overridepublic void drawCycle() { System.out.println("----drawRedCycle----");}}class DrawGreenCycle implements DrawApi{@Overridepublic void drawCycle()
2022-01-24 16:57:00
288
原创 设计模式----适配器模式
1.适配器模式public interface MediaPlayer {void player(String mediaType);}interface AdviceMediaPlayer {void playerMp4();void playerMp3();}class Mp4MediaPlayer implements AdviceMediaPlayer{@Overridepublic void playerMp4() { System.out.println("--pla
2022-01-24 16:25:37
164
原创 设计模式----原型模式
1.原型模式代码import java.util.HashMap;import java.util.Map;public abstract class CustFile implements Cloneable {protected String name;public Object clone(){ Object clone = null; try { clone = super.clone(); } catch (CloneNotSupportedExc
2022-01-24 11:54:53
93
原创 设计模式之----工厂模式
1.工厂模式示例代码public abstract class Coffee { protected String name; public abstract void setCoffeeName();}class MoCaCoffee extends Coffee{ public void setCoffeeName(){ this.name = "MoCaCoffee"; };}class MilkCoffee extends Coffee
2022-01-24 11:08:09
219
原创 设计模式之---单例模式
1.示例代码public class SingleInstance { private static SingleInstance instance = new SingleInstance(); private SingleInstance(){ } public static SingleInstance getInstance(){ return instance; }}2.关键点单例模式最主演的就是将构造方法写为私有的(privat
2022-01-24 10:56:18
206
原创 设计模式----命令者模式
1)命令者模式public class Light { private String lightName; Light(String lightName){ this.lightName = lightName; } public void on(){ System.out.println("----"+lightName+"--on--"); } public void of(){ System.out
2022-01-20 18:34:41
323
原创 设计模式----装饰者模式与代理模式
1.代理模式为主要的功能增加旁支末节的功能public interface OperDb { void insert(); void query(); void delete(); void update();}class OperDbImpl implements OperDb{ @Override public void insert() { System.out.println("-----insert-------")
2022-01-20 17:54:18
376
原创 hadoop重要配置文件
1) hadoop的默认配置文件(jar包内部)core-default.xml: 默认的核心hadoop属性文件。该配置文件位于下面JAR文件中:Hadoop-common-2.2.0.jarhdfs-default.xml : 默认的HDFS属性配置文件,文件位于下面的JAR文件中:hadoop-hdfs-2.2.0.jarmapred-default.xml : 默认mapreduce属性配置文件,位于mapreduce-client-core-2.2.0.jaryarn
2022-01-20 11:29:37
7067
原创 hadoop之hdfs命令详解
目录一、hadoop命令1、archive2、checknative3、classpath4、credential5、distcp(比较常用)6、fs7、jar8、key9、trace二、hdfs命令1、classpath2、dfs3、fetchdt4、fsck(重要)5、getconf(重要)6、groups7、lsSnapshottableDir8、jmxget9、oev10、oiv11、snapshotDiff12、balancer(重要)13、cacheadmin14、datanode15、dfsa
2022-01-17 12:04:11
2296
原创 hadoop之yarn详解-命令篇
目录一、yarn命令概述二、命令详解2.1、application2.2、applicationattempt2.3、classpath2.4、container2.5、jar2.6、logs2.7、node2.8、queue2.9、daemonlog2.10、nodemanager2.11、proxyserver2.12、resourcemanager2.13、rmadmin2.14、scmadmin2.15、 sharedcachemanager2.16、timelineserver本篇主要对yarn
2022-01-17 10:57:36
2754
原创 MapReduce客户端各种提交方式参数的配置(windows->local,windows->yarn,Linux->locall,Linux->yarn)
MR程序的两种运行模式 分布式运行模式:必须在yarn平台上核心特点:整个运行流程由MRAppMaster控制;每一个task(maptask,reducetask)以及MRAppMaster,都是以独立的进程在nodemanager所提供的容器中执行;本地运行模式:在本地以单进程多线程方式运行;核心特点:整个运行流程由LocalJobRunner控制,每一个task(maptask、reducetask)都以线程方式执行决定mr程序是以分布式还是以本地模型运行的关键点:jobclient端的参
2022-01-14 19:34:05
477
原创 windows下根据任务名称,端口杀死进程
1.根据网络端口查看进程ID(PID)netstat -ano |findstr "8088"2.根据任务名称查看进程ID(PID)tasklist |findstr "nginx"3.根据进程ID(PID)杀死任务taskkill -pid 88888 -f
2022-01-11 15:22:51
1424
原创 Spark任务提交至YARN运行的3种方式与Mapreduce提交任务的几种形式
Spark作为新一代计算平台的闪亮明星,在我们的大数据平台中具有非常重要的作用,SQL查询、流计算和机器学习等场景都能见到它的身影,可以说平台应用的数据处理、计算和挖掘等场景都可以使用Spark进行开发。在默认的情况下,如果想向Spark提交计算任务,通常会使用Spark提供的Spark-Submit脚本来提交含有业务逻辑的jar文件程序。这种方式虽然简单,但有悖于服务化的设计理念,所以需要为Spark提供一套任务管理的RESTful服务。在大数据平台中,Spark是以Spark on YARN的方式运行
2022-01-06 19:02:47
2501
1
原创 Hadoop默认端口表及用途
Hadoop默认端口表及用途端口用途9000fs.defaultFS,如:hdfs://172.25.40.171:90009001dfs.namenode.rpc-address,DataNode会连接这个端口50070dfs.namenode.http-address50470dfs.namenode.https-address50100dfs.namenode.backup.address50105dfs.namenode.backup.
2022-01-04 17:23:38
2664
原创 向Yarn应用提交程序原理
1) 应用程序客户端不管是Mapreduce还是spark都会定制自己的YarnClient,用来提交自己的相关任务。2) ResourceManager、ApplicationMaster、NodeManage一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster(用户每次提交的任务都会产生),还有在每台机器上做资源管理的NodeManage.其中ResourceManager负责整个系统资源的管理和分配,而ApplicationMaster则负
2022-01-04 16:47:45
548
原创 将Java文件编译成Jar包
1.将指定目录下的java文件编译为class文件import org.apache.commons.lang3.StringUtils;import javax.tools.*;import java.io.File;import java.util.Arrays;import java.util.List;// 将java文件编译为class文件public class CompilerUtil { private static JavaCompiler javaCompiler
2021-12-31 16:00:14
3370
1
原创 scala匿名类-第十二章
1)代码class Teacher { println("我是主类") def show(): Unit ={ println("------show----------") }}abstract class Teacher1 { println("我是抽象主类") def show()}object Teacher{ def main(args: Array[String]): Unit = { var teac
2021-12-22 18:39:18
245
原创 scala中的主构造器、辅助构造器-第十一章
1.代码说明package org.example.applicationclass TestFathorConst { println("这个是TestFathorConst主要构造器") var name: String =_ var age: Int =_ def this(name1:String, age1: Int){ this() this.age = age1 this.name = name1
2021-12-22 17:05:08
226
原创 scala抽象类的重写-第十章
1.抽象类规则代码如下abstract class Bike { val a = 100 var b = 200 def interest():String def display(): Unit ={ println("this is a bike") } def speed() // 抽象方法}class AiBike extends Bike { override v
2021-12-22 14:15:58
139
原创 scala杂项
这样写的package实际上与org.example.application 是一样的但是写法太差package org{ package example{ package application{ class Test { } } }}
2021-12-22 13:35:20
94
原创 scala中命名参数函数-第九章
1) scala中调用一个函数时传递的参数可以带上变量名代码如下object WithNameArgument { def main(args: Array[String]): Unit = { custFunction(b=6,a=5) //可以带上变量名 custFunction1(b="11",a="5")//可以带上变量名 } def custFunction(a:Int,b:Int): Unit = println("---a appen
2021-12-21 18:23:59
106
原创 Scala-本地函数、偏函数、部分函数-第八章
1)本地函数 在一个函数内部在定义一个函数,则称为该函数为本地函数 object LocalFunction { def main(args: Array[String]): Unit = { processData("\\src\\test.txt",10); // 本地函数 可以访问外层的变量 def processData(fileName:String,width: Int): Unit ={
2021-12-21 15:55:05
227
原创 Scala尾递归-第七章
1)代码示例object TestRecursion { def main(args: Array[String]): Unit = { var data = 1 to 10 println(sum1(data)) println(sum2(data,0)) } // 普通递归 def sum1(args:Seq[Int]):Int ={ if (args.isEmpty) 0
2021-12-20 18:20:17
71
原创 Scala中的Any、AnyRef、AnyVal、Nothing、Null-第六章
1.关系图说明: 1)Any类是所有类的超类。Any有两个子类:AnyVal和AnyRef。 2)Any 是一个 abstract 类, scala 中的顶级父类 3)AnyVal 是一个 abstract 类,继承 Any,目的是取代 primary 类型 4)AnyRef 是一个 trait,继承 Any,重写了 Any 中部分方法 5)Nothing是所有类的子类,是一个类---报错的时候返回这个对象 6)Null是所有AnyRef的子类---引用类
2021-12-20 16:55:12
629
原创 idea中创建scala的worksheet第五章
1.scala worksheet 指的是在idea中创建的直接代码片段进行调试,不用写main方法。2. 创建方式如下:3) 使用截图
2021-12-20 14:58:01
246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人