- 博客(91)
- 资源 (6)
- 收藏
- 关注
原创 工科毕业生 真实的忠告(0转)
从古到今,美国日本,一律如此!及早为自己配置一个工作环境,装备电脑,示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!
2023-03-12 22:04:18 128
原创 DDD:BC Map映射关系
在计划会议中,下游团队相当于上游团队的客户。当两个开发团队具有上/下游关系时,如果上游团队没有动力来满足下游团队的需求,那么下游团队将无能为力。当不同团队开发一些紧密相关的应用程序时,如果团队之间不进行协调,即使短时间内能够获得快速进展,但他们开发出的产品可能无法结合到一起。如果下游团队对变更具有否决权,或请求变更的程序太复杂,那么上游团队的开发自由度就会受到限制。SHARED KERNEL是两个高度协调的团队之间的合作模式,而CONFORMIST模式则是应对一个对合作不感兴趣的团队进行集成。
2022-11-22 22:28:44 793
原创 领域驱动设计概念
1.聚合根设计仓储1)是不是只有聚合根才设计仓储,其他的实体不需要?限界上下文1)一个给定的业务领域会包含多个限界上下文,想与一个限界上下文沟通,则需要通过显示边界进行通信。系统通过确定的限界上下文来进行解耦,而每一个上下文内部紧密组织,职责明确,具有较高的内聚性。2)一个很形象的隐喻:细胞质所以能够存在,是因为细胞膜限定了什么在细胞内,什么在细胞外,并且确定了什么物质可以通过细胞膜。仓储,资源库领域对象需要资源存储,存储的手段可以是多样化的,常见的无非是数据库,分布式缓存,本地缓存等。
2022-03-06 17:06:54 330
原创 领域驱动设计:事件驱动模型
一、事件建模范式1. 关注点:领域行为引起的领域概念的变化;针对状态建模;分析和设计的驱动力是事件,建模的核心是事件,事件引起的领域对象状态的迁移。二、事件风暴1. 工作坊,对复杂的业务领域,探索,高效的协作方法;2. 何为事件:过去发生的事实。不同的人员对事件的理解不一样?3. 关键事件流:识别出一系列的关键事件并将其连接起来,形成一条显而易见 基于时间轴的事件路径。4. 事件的角色:时间风暴中,事件起因-》事件为果;用户,伴生系统,策略(定时器),前置事件。6.时间风暴的两个
2022-02-27 17:06:16 443
原创 Unix设计哲学
初次接触unix设计哲学的概念,简单学习下,或许有助于业务系统的架构设计。以下为网络转载:模块原则,Modularity:写简单的程序,并用好的接口连接它们 清晰原则,Clarity:清楚透明的算法比“高明”的算法更好 组装原则,Composition:写能够跟其他程序一起工作的程序 隔离原则,Separation:分离接口(使用引擎的方法)和引擎 简单原则,Simplicity:尽量简化算法,不到必要的时候不要增加复杂度 简约原则,Parsimony:只要在必要的时候才写大型...
2022-02-27 11:10:01 481
原创 领域驱动设计
一、评论1. "什么适合就选择什么。可是到了最后,似乎还是凭借着经验在跟着感觉走。没有教会领域建模的方法,只有可意会不可言传的感觉"2.在领域世界的建筑墙上,其实刻满了“状态”两个字!3....
2022-02-27 11:07:34 300
原创 线上定位
一、Disk1.iostat -d -k -x 查看磁盘IO使用情况2.iotop 查看进程的IO的使用情况3.readlink -f 传唤tid到pid4.文件 /proc/$pid/io5.进程的IO文件句柄:lsof -p $pid二、CPu1.top2.top -H -p $pid3.jstack $pid3.文件系统1.df -h2.lsblk...
2020-10-11 23:02:54 142
原创 混沌测试
一、模拟网络堵塞的情况测试1. 使用工具模拟网络延迟高,网络丢包现象2. 绿色工具clumsy可以模拟不稳定的网络环境:http://www.greenxf.com/soft/201494.html二、模拟文件系统使用100%的主机情况三、模拟IO使用率高的主机情况四、模拟cpu使用率高的主机环境...
2020-10-08 22:00:55 3901
原创 Redis监控工具
一、监控工具1.redis的监控工具很多,在这里介绍一种简单的统计工具,可在线上或者线下进行监控,来协助定位问题。二、Redis-faina2.1 背景redis-faina是由Instagram开发并开源的一个 Redis 查询分析小工具。Instagram团队曾经使用 PGFouine 来作为其PostgreSQL的查询分析工具,他们觉得Redis也需要一个类似的工具来进行query分析工作,于是开发了 redis-faina。2.2概念redis-faina 是通过Redis.
2020-09-20 10:47:17 1455
原创 架构设计之消息队列设计
一、消息队列设计引言:可以从以下几个方面进行考虑:1. 高可用:可扩展,避免单点故障。2. 持久化:消息持久化,落盘,DB。3.高性能:从写数据,读数据,读写分离,增加缓存等。4.数据丢失:增加分区,副本概念,读写分离。5.消费模式:push 还是pull模式6.API易用性:易用的API,灵活等7.易集成性:容易集成到其他框架8.可配置性:一些参数或者模式可以...
2020-03-29 17:33:29 356
原创 SpringBoot与IOC
一、什么是IOC二、IOC的设计理念 1.ApplicationContext 三个常用的Context 1)FileSystemXMLApplicationContext:加载制定目录下的配置文件。 2)ClassPathXMLApplicationContext:加载类路径下的配置文件。 3)AnnotationConfigApplicationCon...
2020-01-05 12:21:34 408
原创 SpringBoot使用踩过得坑(持续更新)
1.包扫描SpringBoot自会扫描启动类所在包和下层包中的Bean;其他路径要扫描需要@ComponentScan("xxx.xxx.xxx")。2.SpringBoot 的redis缓存1) 在同一个类中调用另一个打了缓存注解@CacheAble的方法,第二个调用的方法是不走缓存。2) CacheInteceptor CacheAspectSupport CachePro...
2020-01-05 00:03:50 274
原创 线程池ThreadPool机制
引言:本节将详细讲java解线程原理和使用,主要基于java.util.concurrent.ThreadPoolExecutor类来学习和总结。一、什么是线程池,好处和缺点二、线程池的结构 1.ThredPoolExecutor类的主要属性/阻塞队列 private final BlockingQueue<Runnable> workQueue;//可...
2020-01-04 19:04:40 244
原创 SpringBoot与AOP
一、引言 Springboot的两大核心IOC和AOP:即控制翻转和面向切面编程,今天学习探讨AOP的作用、原理和使用。二、什么是AOP 1.在不修改源码前提下,扩展功能。从而和业务代码剥离,做到解耦。 2.AOP在Spring框架中应用广泛,包括缓存,事务,定时任务,重试等这一些业务类的注解。三、AOP的通知类型 1.Before前置通知:在方法执...
2020-01-03 21:49:55 165
原创 SpringBoot与Shedule定时任务
一、问题描述1. springBoot中的@Schedule注解定时任务,在某些情况下并没有生效,定时任务不再执行,进而导致业务出现问题。二、分析定位1. 首先查看百度有没有相关的问题,查询到有一篇帖子讲到定时任务是串行执行的,而并不是并发的。但是怀疑SpringBoot应该没有这么低级,猜想应该是线程池接收任务去执行,因此翻阅源代码以及做测试,来真正定位以及修改这个问题。三...
2020-01-03 21:49:34 1101
原创 MYSQL:查看约束是否存在并创建
DROP PROCEDURE IF EXISTS TEST_UNIQUE;DELIMITER $$CREATE PROCEDURE TEST_UNIQUE ()BEGIN DECLARE cnt INT; SELECT COUNT(*) INTO cnt FROM INFORMATION_SCHEMA.KEY_COLUMN_USAG...
2019-09-24 13:31:19 1128
原创 JVM内存结构以及调优
1.参考,四篇非常好的文章,请仔细阅读:https://blog.csdn.net/u012799221/article/details/73180509https://www.cnblogs.com/csniper/p/5592593.htmlhttp://www.importnew.com/22434.htmlhttp://www.importnew.com/22438.htm...
2018-08-26 11:59:23 346
原创 Kafka
参考链接:1. https://www.cnblogs.com/jxwch/p/6602169.html2. http://blog.csdn.net/xlgen157387/article/details/772667193. http://kafka.apache.org/0102/javadoc/index.html?org/apache/kafka/client
2018-01-11 20:07:24 249
原创 SSH登录主机的几种方式
SSH登录一、ssh登录一般分为4种: 1.PAM认证 在在配置文件/etc/ssh/sshd_config中对应参数: UsePAM 2.公钥私钥认证:需要导入公私钥文件 在配置文件/etc/ssh/sshd_config中对应参数: RSAAuthentication、PubkeyAuthentication 我们在配置SSH免密码登陆的时
2017-12-29 10:49:52 15546
原创 RPC
海量互联网业务系统只能依赖分布式架构来解决,而分布式开发的基石则是RPC;本文主要针对两个开源的RPC框架(gRPC、 Apache Thrift),以及配合GoLang、C++两个开发语言进行性能对比分析。C++、Thrift都是比较成熟的技术,先简单介绍一下GoLang以及gRPC。 GoLang Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言语法灵活
2017-09-20 13:42:05 470
原创 ElasticSearch
ElasticSearch 基本: 1)接近实时NRT,从搜索文档到获取文档大概延迟1秒 2)集群:cluster,有多个节点组成的一个集群,y有集群名称表示 3)节点:node,参与数据的存储,索引,搜搜功能 4)索引:index,可以定义任一多个;几个相似文档数据的集合,索引名称必须全部小写;对文档进行搜索,索引,存储和删除,更新都要用到这个索引名称 5)类型:type,定义在索引上
2017-09-02 12:17:07 436
原创 土土
一、终止线程池主要有两个方法:shutdown() 和 shutdownNow()。 shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的和在阻塞队列中等待处理的任务。 shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程。 二、空闲工作线程如何设置消亡
2017-08-19 16:24:25 237
原创 Java中的拷贝问题
一、拷贝 1)数组拷贝:Arrays.copy(); —数组是新数组首地址空间,但是内部的元素对象依然是原有的实例引用。2)System.arraycopy public static native void arraycopy(Object src, int srcPos, Object dest, int
2017-08-10 22:02:16 256
原创 JAVA中的原子类
一、Java中提供的基本的原子类有: AtomicBoolean,AtomicInteger,AtomicDouble二、原子类的基本特征:手段: 1)保证操作的原子性 2)保证多线程下的可见性。目标: 保证线程安全三、concurrent包常用的类: AtomicInteger、AtomicLong、AtomicReference。...
2017-08-06 10:28:30 275
原创 HTTP安全认证
Http安全认证一、基本认证 基本身份验证它提供了一个方法来解决这个问题,虽然不是很安全。基本身份验证,客户端的每个请求发送Base64编码凭据,使用HTTP[授权]头。这意味着每个请求独立于其他请求和服务器可能/不维护客户端,这对可扩展性是非常好的。下面示出的是准备标头的样本代码。 String plainClientCredentials=”myusername:mypass
2017-07-24 19:21:55 1807
原创 消息中间件
1.消息的优先级2.消息排序3.消息过滤4.消息持久化5.消息重试6.事务的支持7.broker满生产者,队列,消费者消息队列的优点:1)解耦2)异步消息,系统响应在JMs中,有两种消息模型:点对点模式和发布订阅模式。1.在点对点模式中:有三种角色1)消息队列,发送者,接受者;每个消息被发送到消息队列,等待接受者消费,直到被消费或
2017-07-20 19:44:23 214
原创 Java之垃圾回收
一、垃圾回收1.什么叫垃圾回收? 1)回收目标:堆中的对象及其内存;对象或者数组的引用类型对象。 2)系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块内存就成为了垃圾,等待垃圾回收机制进行回收 2.回收的特征 1.垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接、网络连接、IO流等资源)。 2.程序无法精准控制垃圾
2017-07-04 19:17:34 285
原创 Java中的copyOnWrite容器
一、什么是copyOnWrite容器 1)含义:写时拷贝复制。 2)在并发访问的背景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改。修改完成之后,将指向原来容器的引用指向新的容器(副本容器)。二、优点 1)支持并发的读,而不需要加锁; 2)读写分离,读和写不同的容器。二、JDK支持 1)CopyOnWriteArraylList
2017-07-02 23:14:00 348
原创 Java中的ThreadLocal
一、什么是ThreadLocal 0.public class ThreadLocal extends Object {…}1.每一个线程都可以通过ThreadLocal对象的get或者set方法来获取或者设置该线程独有的,自己的变量副本。2.各个线程中的该对象都是独立的,其他线程访问不到。二、特点1.该ThreadLocal变量是局部的线程变量。 2.该线程变量是private私有和stati
2017-06-25 21:50:58 229
原创 Java中的锁
一、Lock锁 1.锁的用途:控制多线程并发访问共享资源的的一种方式。 2.什么叫隐式锁,什么叫显示锁 隐式锁:使用这把锁时,不需要显示的对锁进行获取和释放,就可以完成锁的功能。比如synchronized。 显示锁:正好相反,代码要显示的调用这把锁的各种控制方法,才可以完成相应的功能。比如Lock锁。二、Lock锁的基本用法lock.lock(); //一定要放在try外
2017-06-24 00:02:38 246
原创 Guava之消息处理机制
一、EventBus是Guava的事件处理机制,是观察者模式的优雅实现。 1.对于事件监听和发布式订阅模式,是一个非常优雅和简单的处理方案。 2.Oberver = Listener 3.EventBus是谷歌基于观察者模式,实现的一套事件处理机制。二、使用 1.使用Guava之后, 如果要订阅消息, 就不用再继承指定的接口, 只需要在指定的方法上加上@Subscribe注解即可 2.创建
2017-06-14 23:01:13 726
原创 HasMap
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。//实际存储的key-value键值对的个数 t
2017-06-14 21:05:50 475
原创 Java之NIO
一、什么是NIO? New IO;提供了与标准IO不同的工作方式;二、组成部分 1.缓存区(Buffer):主要做数据容器,每一种基本数据类型(除了boolean)都对应一个Buffer的子类; 2.通道(Channel) 3.选择器(Selector) 4.其他。。。
2017-06-01 22:42:07 195
原创 Java之类加载器
一、java的类加载器非分为3类: 1.bootstrap classloader:主要负责java核心API类的加载。2.ExtClassLoader:主要负责Java扩展API类的加载。3.AppClassLoader:主要负责classpath下面的类的加载。二、一个java程序的加载流程 JVM启动–》运行bootstrap classloader–》加载java核心API,也包括Ext
2017-04-25 22:00:22 230
原创 maven pom文件解析
一、什么是pom pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
2017-01-08 23:19:19 289
转载 Java里final修饰的类变量,实例变量和局部变量
一 final变量简介(转) 1 final修饰变量时表示该变量一旦获得初始值之后就不可能改变。 2 final既可修饰成员变量,也可修饰局部变量。二 final修饰成员变量 1 final修饰成员变量时,必须由程序员显示地指定初始值。 2 类变量:必须在静态初始化块中指定初始值或声明该变量时指定初始值,而且只能在两个地方的其中之一指定。 3 实例变量:必须在非静态初始化块中,声明该实例变
2016-12-15 22:32:26 1234
转载 Java之xml解析
《转载》原文地址:http://blog.csdn.net/smcwwh/article/details/7183869#part4目录(?)[+] 【目录】 一、【基础知识——扫盲】二、【DOM、SAX、JDOM、DOM4j简单使用介绍】三、【性能测试】四、【对比】五、【小插曲XPath】六、【补充】关键字:Java解析xml、解析xml四种方法、DOM、SAX、JDOM、DOM4j、XPat
2016-12-08 23:05:01 268
原创 Java之xml基础扫盲
一、什么才是xml文件?1.可扩展标记语言 2.用户自定义标签 3.xml自我描述 4.内容是一棵树结构二、XML的树结构 1.每一个xml文件都会有一个根元素,总会形成一颗有根的树状结构,并扩展到树的最低端。我是一棵树。 2.父元素拥有子元素;每一个元素允许拥有属性和文本内容;有属性有内容。 3.相同级别上的元素统称为同胞。有父有子。 4.在xml必须有开始标签和关闭标签,否则非法。
2016-12-07 21:20:00 348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人